ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5MWIxMgotLS0gL2Rldi9udWxsCisrKyBiLy5kaXItbG9jYWxzLmVsCkBAIC0wLDAgKzEsMTAgQEAKKzs7OyBEaXJlY3RvcnkgTG9jYWwgVmFyaWFibGVzCis7OzsgU2VlIEluZm8gbm9kZSBgKGVtYWNzKSBEaXJlY3RvcnkgVmFyaWFibGVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKChuaWwgLiAoKGluZGVudC10YWJzLW1vZGUgLiBuaWwpCisgICAgICAgICAoc2hvdy10cmFpbGluZy13aGl0ZXNwYWNlIC4gdCkpKQorIChjLW1vZGUgLiAoKGMtYmFzaWMtb2Zmc2V0IC4gMikKKyAgICAgICAgICAgICkpCisgKGMrKy1tb2RlIC4gKChjLWJhc2ljLW9mZnNldCAuIDIpCisgICAgICAgICAgICAgICkpCisgKQpkaWZmIC0tZ2l0IGEvLmdpdGh1Yi9DT05UUklCVVRJTkcubWQgYi8uZ2l0aHViL0NPTlRSSUJVVElORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY1ODBiCi0tLSAvZGV2L251bGwKKysrIGIvLmdpdGh1Yi9DT05UUklCVVRJTkcubWQKQEAgLTAsMCArMSwyMyBAQAorSG93IHRvIGNvbnRyaWJ1dGUgdG8gY3VybAorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitKb2luIHRoZSBjb21tdW5pdHkKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgMS4gQ2xpY2sgJ3dhdGNoJyBvbiB0aGUgZ2l0aHViIHJlcG8KKworIDIuIFN1YnNjcmliZSB0byB0aGUgc3VpdGFibGUgW21haWxpbmcgbGlzdHNdKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvKQorCitSZWFkIFtDT05UUklCVVRFXSguLi9kb2NzL0NPTlRSSUJVVEUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VuZCB5b3VyIHN1Z2dlc3Rpb25zIHVzaW5nIG9uZSBvZiB0aGVzZSBtZXRob2RzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgMS4gaW4gYSBtYWlsIHRvIHRoZSBtYWlsaW5nIGxpc3QKKworIDIuIGFzIGEgW3B1bGwgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9wdWxscykKKworIDMuIGFzIGFuIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMpCisKKy8gVGhlIGNVUkwgdGVhbSEKZGlmZiAtLWdpdCBhLy5naXRodWIvSVNTVUVfVEVNUExBVEUgYi8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZWY5MTAKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFCkBAIC0wLDAgKzEsOSBAQAorIyMjIEkgZGlkIHRoaXMKKworIyMjIEkgZXhwZWN0ZWQgdGhlIGZvbGxvd2luZworCisjIyMgY3VybC9saWJjdXJsIHZlcnNpb24KKworW2N1cmwgLVYgb3V0cHV0IHBlcmhhcHM/XQorCisjIyMgb3BlcmF0aW5nIHN5c3RlbQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODNlNzUwOC4uMTgzMTM2YSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDUxICsxLDUyIEBACi0uZGVwcwotLmxpYnMKLSoubGliCi0qLnBkYgorKi5hc2MKICouZGxsCiAqLmV4ZQotKi5vYmoKLSouYXNjCi0uKi5zd3AKLURlYnVnCi1SZWxlYXNlCiAqLmV4cAorKi5sYQorKi5saWIKKyoubG8KKyoubworKi5vYmoKKyoucGRiCisqfgorLiouc3dwCisuY3Byb2plY3QKKy5kZXBzCisuZGlyc3RhbXAKKy5saWJzCisucHJvamVjdAorLnNldHRpbmdzCisvYnVpbGQvCisvYnVpbGRzLworQ0hBTkdFUy5kaXN0CitEZWJ1ZworSU5TVEFMTAogTWFrZWZpbGUKIE1ha2VmaWxlLmluCitSZWxlYXNlCitUQUdTCiBhY2xvY2FsLm00CithY2xvY2FsLm00LmJhawogYXV0b200dGUuY2FjaGUKK2NvbXBpbGUKIGNvbmZpZy5jYWNoZQogY29uZmlnLmd1ZXNzCiBjb25maWcubG9nCiBjb25maWcuc3RhdHVzCiBjb25maWcuc3ViCiBjb25maWd1cmUKLWRlcGNvbXAKLWxpYnRvb2wKLWx0bWFpbi5zaAotY29tcGlsZQotY3VybC1jb25maWcKLWxpYmN1cmwucGMKLW1pc3NpbmcKLWN1cmwtKi50YXIuZ3oKIGN1cmwtKi50YXIuYnoyCitjdXJsLSoudGFyLmd6CiBjdXJsLSoudGFyLmx6bWEKIGN1cmwtKi56aXAKLUlOU1RBTEwKK2N1cmwtY29uZmlnCitkZXBjb21wCiBpbnN0YWxsLXNoCi0qLm8KLSoubG8KLSoubGEKK2xpYmN1cmwucGMKK2xpYnRvb2wKK2x0bWFpbi5zaAorbWlzc2luZwogbWtpbnN0YWxsZGlycwogdGFncwotVEFHUwotKn4KLWFjbG9jYWwubTQuYmFrCi1DSEFOR0VTLmRpc3QKLS5wcm9qZWN0Ci0uY3Byb2plY3QKLS5zZXR0aW5ncwotLmRpcnN0YW1wCiB0ZXN0LWRyaXZlcgotL2J1aWxkLwotL2J1aWxkcy8KK3NjcmlwdHMvX2N1cmwKZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKaW5kZXggYjk3NjU1Zi4uYzc2ZDEwYyAxMDA2NDQKLS0tIGEvLnRyYXZpcy55bWwKKysrIGIvLnRyYXZpcy55bWwKQEAgLTEsNSArMSwxNSBAQAorb3M6CisgIC0gbGludXgKKyAgLSBvc3gKKworc3VkbzogZmFsc2UKKwogbGFuZ3VhZ2U6IGMKIAoraW5zdGFsbDoKKyAgLSBpZiBbICIkVFJBVklTX09TX05BTUUiID09ICJvc3giIF07IHRoZW4gYnJldyB1cGRhdGUgPiAvZGV2L251bGw7IGZpCisgIC0gaWYgWyAiJFRSQVZJU19PU19OQU1FIiA9PSAib3N4IiBdOyB0aGVuIGJyZXcgaW5zdGFsbCBvcGVuc3NsIGxpYmlkbiBydG1wZHVtcCBsaWJzc2gyIGMtYXJlcyBsaWJtZXRhbGluayBsaWJyZXNzbCBuZ2h0dHAyOyBmaQorCiBiZWZvcmVfc2NyaXB0OgogICAtIC4vYnVpbGRjb25mCiAKZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCmluZGV4IGZlMGZiOGMuLmI3Mzk4NmIgMTAwNjQ0Ci0tLSBhL0NIQU5HRVMKKysrIGIvQ0hBTkdFUwpAQCAtMSwxNSArMSw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2NoYW5nZXMuaHRtbCBmb3IgdGhlIGVkaXRlZCBhbmQgaHVtYW4gcmVhZGFibGUgb25saW5lCit2ZXJzaW9uIG9mIHdoYXQgaGFzIGNoYW5nZWQgb3ZlciB0aGUgeWVhcnMgaW4gZGlmZmVyZW50IGN1cmwgcmVsZWFzZXMuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2Vsb2cKLQotVGhpcyBmaWxlIG5vIGxvbmdlciBob2xkcyB0aGUgY2hhbmdlbG9nLiBOb3cgeW91IGNhbiBnZW5lcmF0ZSBpdCB5b3Vyc2VsZgotbGlrZSB0aGlzOgorR2VuZXJhdGUgYSBDSEFOR0VTIGZpbGUgbGlrZSB0aGUgb25lIHByZXNlbnQgaW4gZXZleSByZWxlYXNlIGxpa2UgdGhpczoKIAogJCBnaXQgbG9nIC0tcHJldHR5PWZ1bGxlciAtLW5vLWNvbG9yIC0tZGF0ZT1zaG9ydCAtLWRlY29yYXRlPWZ1bGwgfCBcCiAgIC4vbG9nMmNoYW5nZXMucGwKLQotVGhlIG9sZGVyLCBtYW51YWxseSBlZGl0ZWQsIGNoYW5nZWxvZyBpcyBmb3VuZCBpbiBnaXQgbmFtZWQgQ0hBTkdFUy4wCmRpZmYgLS1naXQgYS9DSEFOR0VTLjAgYi9DSEFOR0VTLjAKaW5kZXggZWFiMjZkYS4uZjAzMjk4MSAxMDA2NDQKLS0tIGEvQ0hBTkdFUy4wCisrKyBiL0NIQU5HRVMuMApAQCAtNDAsNyArNDAsNyBAQAogICB0aGluayBhZGRyZXNzZWQgdGhlIGlzc3VlIGJldHRlciBhbmQgYWxzbyB1c2VzIHRoZSBjb25uZWN0IHRpbWVvdXQgZm9yIHRoZQogICBpbml0aWFsIHBhcnQgb2YgdGhlIFNTSC9TRlRQIGRvbmUgZHVyaW5nIHRoZSAicHJvdG9jb2wgY29ubmVjdCIgcGhhc2UuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDY3ODYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwNjc4NikKIAogWWFuZyBUc2UgKDIgSnVuZSAyMDEwKQogLSBBZGRlZCBtaXNzaW5nIG5ldyBsaWJjdXJsIGZpbGVzIHRvIG5vbi1jb25maWd1cmUgdGFyZ2V0cy4gQWRqdXN0ZWQKQEAgLTk2LDEzICs5NiwxMyBAQAogICBmaXggdGhlIHByb2JsZW0pIGFzIGl0IG5vdyBhY3R1YWxseSBhbGxvd3MgZm9yIGVhc2llciAoZnV0dXJlKSBjdXN0b21pemF0aW9uCiAgIG9mIHRoZSB0aW1lb3V0LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDAzNzA1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDM3MDUpCiAKIC0gRG91Z2xhcyBLaWxwYXRyaWNrIGZpbGVkIGJ1ZyByZXBvcnQgIzMwMDQ3ODcgYW5kIHBvaW50ZWQgb3V0IHRoYXQgdGhlIFRGVFAKICAgY29kZSBkaWRuJ3QgaGFuZGxlIGJsb2NrIGlkIHdyYXBzIGNvcnJlY3RseS4gSGlzIHN1Z2dlc3RlZCBmaXggaW5zcGlyZWQgdGhlCiAgIGZpeCBJIGNvbW1pdHRlZC4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwNDc4NykKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDA0Nzg3KQogCiBEYW5pZWwgU3RlbmJlcmcgKDIwIE1heSAyMDEwKQogLSBUYW5ndXkgRmF1dHJlIGJyb3VnaHQgYSBmaXggdG8gYWxsb3cgY3VybCB0byBidWlsZCB3aXRoIE1pY3Jvc29mdCBWQzEwLgpAQCAtMTEyLDcgKzExMiw3IEBACiAgIGNvZGUgd2FzIG5vdCBzZW5kaW5nIHRoZSB0aW1lb3V0IG9wdGlvbiBwcm9wZXJseSB0byB0aGUgc2VydmVyLCBhbmQKICAgc3VnZ2VzdGVkIGEgZml4LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDAzMDA1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDMwMDUpCiAKIEthbWlsIER1ZGthICgxNiBNYXkgMjAxMCkKIC0gUGF2ZWwgUmFpc2t1cCBpbnRyb2R1Y2VkIGEgbmV3IG9wdGlvbiBDVVJMT1BUX0ZOTUFUQ0hfREFUQSBpbiBvcmRlciB0byBwYXNzCkBAIC0xMzgsMTQgKzEzOCwxNCBAQAogICBuZXZlciBvYnRhaW4gYSB2YWxpZCBmZHNldCwgYW5kIHRodXMgbm90IGRyaXZlIHRoZSBtdWx0aSBoYW5kbGUsIHJlc3VsdGluZwogICBpbiBhIGhhbmcuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDAwNTIpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwMDA1MikKIAogLSBTZWJhc3RpYW4gViByZXBvcnRlZCBidWcgIzMwMDAwNTYgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHdpdGggcmVkaXJlY3QKICAgZm9sbG93aW5nLiBJdCBzaG93ZWQgdGhhdCB3aGVuIGN1cmwgZm9sbG93ZWQgcmVkaXJlY3RzIGl0IGRpZG4ndCBwcm9wZXJseQogICBpZ25vcmUgdGhlIHJlc3BvbnNlIGJvZHkgb2YgdGhlIDMwWCByZXNwb25zZSBpZiB0aGF0IHJlc3BvbnNlIHdhcyB1c2luZwogICBjb21wcmVzc2VkIENvbnRlbnQtRW5jb2RpbmchCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDAwNTYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwMDA1NikKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBNYXkgMjAxMCkKIC0gSG93YXJkIENodSBicm91Z2h0IHN1cHBvcnQgZm9yIFJUTVAuIFRoaXMgaXMgcG93ZXJlZCBieSB0aGUgdW5kZXJseWluZwpAQCAtMjY5LDcgKzI2OSw3IEBACiAgIHVubmVjZXNhcnkgcmV2ZXJzZSBuYW1lIGxvb2t1cHMgaW4gbWFueSBjYXNlcyB3aGVuIGJ1aWx0IHRvIHVzZSBJUHY0IGFuZAogICBnZXRhZGRyaW5mbygpLiBUaGUgbG9naWMgZm9yIElQdjYgaXMgbm93IHVzZWQgZm9yIElQdjQgdG9vLgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTYzNjc5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjM2NzkpCiAKIFZlcnNpb24gNy4yMC4xICgxNCBBcHJpbCAyMDEwKQogCkBAIC0zNDAsMTAgKzM0MCwxMCBAQAogICBQUk9YWVRVTk5FTC4gSGUgZm91bmQgYSBjYXNlIHdoZXJlIGl0IHdvdWxkIGNvbm5lY3QgZmluZSBidXQgYml0cy50Y3Bjb25uZWN0CiAgIHdhcyBub3Qgc2V0IGNvcnJlY3Qgc28gbGliY3VybCBkaWRuJ3Qgd29yayBwcm9wZXJseS4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk2MzY3OSkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTYzNjc5KQogCiAtIEFrb3MgUGFzenRvcnkgZmlsZWQgZGViaWFuIGJ1ZyByZXBvcnQgIzU3MjI3NgotICBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NTcyMjc2IG1lbnRpb25pbmcgYSBwcm9ibGVtCisgIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NTcyMjc2IG1lbnRpb25pbmcgYSBwcm9ibGVtCiAgIHdpdGggYSByZXNvdXJjZSB0aGF0IHJldHVybnMgY2h1bmtlZC1lbmNvZGVkIF9hbmRfIHdpdGggYSBDb250ZW50LUxlbmd0aAogICBhbmQgbGliY3VybCBmYWlsZWQgdG8gcHJvcGVybHkgaWdub3JlIHRoZSBsYXR0ZXIgaW5mb3JtYXRpb24uCiAKQEAgLTM4Miw3ICszODIsNyBAQAogLSBCZW4gR3JlZWFyIGltcHJvdmVkIFRGVFA6IHRoZSBlcnJvciBjb2RlIHJldHVybmluZyBhbmQgdGhlIHRyZWF0bWVudAogICBvZiBUU0laRSA9PSAwIHdoZW4gdXBsb2FkaW5nLgogCi0tIFdlJ3ZlIHN3aXRjaGVkIGZyb20gQ1ZTIHRvIGdpdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2Uvc291cmNlLmh0bWwKKy0gV2UndmUgc3dpdGNoZWQgZnJvbSBDVlMgdG8gZ2l0LiBTZWUgaHR0cHM6Ly9jdXJsLmhheHguc2Uvc291cmNlLmh0bWwKIAogS2FtaWwgRHVka2EgKDE5IE1hciAyMDEwKQogLSBJbXByb3ZlZCBDdXJsX3JlYWQoKSB0byBub3QgaWdub3JlIHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIEN1cmxfc3NsX3JlY3YoKS4KQEAgLTM5MSw3ICszOTEsNyBAQAogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBicm91Z2h0IGEgcGF0Y2g6CiAKICAgVGhlIHByb2JsZW0gbWVudGlvbmVkIG9uIERlYyAxMCAyMDA5Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTA1MjIwKSB3YXMgb25seSBwYXJ0aWFsbHkgZml4ZWQuCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkwNTIyMCkgd2FzIG9ubHkgcGFydGlhbGx5IGZpeGVkLgogICBQYXJ0aWFsbHkgYmVjYXVzZSBhbiBlYXN5IGhhbmRsZSBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIG1hbnkgY29ubmVjdGlvbnMgaW4KICAgdGhlIGNhY2hlIChlLmcuIGlmIHRoZXJlIGlzIGEgcmVkaXJlY3QgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUgZWFzeQogICBoYW5kbGUpLiAgVGhlIHByZXZpb3VzIHBhdGNoIG9ubHkgY2xlYW5lZCB1cCB0aGUgZmlyc3Qgb25lLiBUaGUgbmV3IGZpeCBub3cKQEAgLTQzMywxMyArNDMzLDEzIEBACiAgIENVUkxPUFRfQ0VSVElORk8gZmVhdHVyZSBsZWFrZWQgbWVtb3J5IGR1ZSB0byBhIG1pc3NpbmcgT3BlblNTTCBmdW5jdGlvbgogICBjYWxsLiBIZSBwcm92aWRlZCB0aGUgcGF0Y2ggdG8gZml4IGl0IHRvby4KIAotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU2Njk4CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU2Njk4CiAKIC0gTWFya3VzIER1ZnQgcG9pbnRlZCBvdXQgaW4gYnVnICMyOTYxNzk2IHRoYXQgZXZlbiB0aG91Z2ggSW50ZXJpeCBoYXMgYQogICBwb2xsKCkgZnVuY3Rpb24gaXQgZG9lc24ndCBxdWl0ZSB3b3JrIHRoZSB3YXkgd2Ugd2FudCBpdCBzbyB3ZSBtdXN0IGRpc2FibGUKICAgaXQsIGFuZCBoZSBhbHNvIHByb3ZpZGVkIGEgcGF0Y2ggZm9yIGl0LgogCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjE3OTYKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjE3OTYKIAogLSBNYWRlIHRoZSBwaW5ncG9uZyB0aW1lb3V0IGNvZGUgcHJvcGVybHkgZGVhbCB3aXRoIHRoZSByZXNwb25zZSB0aW1lb3V0IEFORAogICB0aGUgZ2xvYmFsIHRpbWVvdXQgaWYgc2V0LiBBbHNvLCBhcyB3YXMgcmVwb3J0ZWQgaW4gdGhlIGJ1ZyByZXBvcnQgIzI5NTY0MzcKQEAgLTQ0OCw3ICs0NDgsNyBAQAogICB0aGF0IGp1c3Qgbm93LiBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY29tcGFyZWQgdG8gNy4xOS43IGR1ZSB0byB0aGUKICAgY29udmVyc2lvbiBvZiBGVFAgY29kZSBvdmVyIHRvIHRoZSBnZW5lcmljIHBpbmdwb25nIGNvbmNlcHRzLgogCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTY0MzcKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTY0MzcKIAogRGFuaWVsIFN0ZW5iZXJnICgxIE1hciAyMDEwKQogLSBCZW4gR3JlZWFyIHByb3ZpZGVkIGFuIHVwZGF0ZSBmb3IgVEZUUCB0aGF0IGZpeGVzIHVwbG9hZC4KQEAgLTQ1NywyMCArNDU3LDIwIEBACiAgIE9wZW5TU0wgYmFzZWQgU1NMIGhhbmRzaGFraW5nIGV2ZW4gdGhvdWdoIHRoZSBtdWx0aSBpbnRlcmZhY2Ugd2FzIHVzZWQgYW5kCiAgIHRoZXJlIHdhcyBubyBnb29kIHJlYXNvbiBmb3IgaXQuCiAKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODE3OQorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODE3OQogCiBEYW5pZWwgU3RlbmJlcmcgKDI2IEZlYiAyMDEwKQogLSBQYXQgUmF5IGluIGJ1ZyAjMjk1ODQ3NCBwb2ludGVkIG91dCBhbiBvZmYtYnktb25lIGNhc2Ugd2hlbiByZWNlaXZpbmcgYQogICBjaHVua2VkLWVuY29kaW5nIHRyYWlsZXIuCiAKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODQ3NAorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODQ3NAogCiBEYW5pZWwgRmFuZHJpY2ggKDI1IEZlYiAyMDEwKQogLSBGaXhlZCBhIGNvdXBsZSBvZiBvdXQgb2YgbWVtb3J5IGxlYWtzIGFuZCBhIHNlZ2ZhdWx0IGluIHRoZSBTTVRQICYgSU1BUCBjb2RlLgogCiBZYW5nIFRzZSAoMjUgRmViIDIwMTApCiAtIEkgZml4ZWQgYnVnIHJlcG9ydCAjMjk1ODA3NCBpbmRpY2F0aW5nCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU4MDc0KSB0aGF0IGN1cmwgb24gV2luZG93cyB3aXRoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODA3NCkgdGhhdCBjdXJsIG9uIFdpbmRvd3Mgd2l0aAogICBvcHRpb24gLS10cmFjZS10aW1lIGRpZCBub3QgdXNlIGxvY2FsIHRpbWUgd2hlbiB0aW1lc3RhbXBpbmcgdHJhY2UgbGluZXMuCiAgIFRoaXMgY291bGQgYWxzbyBoYXBwZW4gb24gb3RoZXIgc3lzdGVtcyBkZXBlbmRpbmcgb24gdGltZSBzb3V1cmNlLgogCkBAIC01MDEsMTEgKzUwMSwxMSBAQAogRGFuaWVsIFN0ZW5iZXJnICgxMyBGZWIgMjAxMCkKIC0gTWFydGluIEhhZ2VyIHJlcG9ydGVkIGFuZCBmaXhlZCBhIHByb2JsZW0gd2l0aCBhIG1pc3NpbmcgcXVvdGUgaW4gbGliY3VybC5tNAogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTUxMzE5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTEzMTkpCiAKIC0gVG9tIERvbm92YW4gZml4ZWQgdGhlIENVUkxfRk9STUFUXyogZGVmaW5lcyB3aGVuIGJ1aWxkaW5nIHdpdGggY21ha2UuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTEyNjkpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1MTI2OSkKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBGZWIgMjAxMCkKIC0gSmFjayBaaGFuZyByZXBvcnRlZCBhIHByb2JsZW0gd2l0aCBTTVRQOiB3ZSB3cm9uZ2x5IHVzZWQgbXVsdGlwbGUgYWRkcmVzc2VzCkBAIC01MzIsNyArNTMyLDcgQEAKICAgVGhpcyBpcyBmdXJ0aGVyIGRldGFpbGVkIGFuZCBleHBsYWluZWQgaW4gdGhlIGxpYmN1cmwgc2VjdXJpdHkgYWR2aXNvcnkKICAgMjAxMDAyMDkgYXQKIAotICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxMDAyMDkuaHRtbAorICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTAwMjA5Lmh0bWwKIAogRGFuaWVsIEZhbmRyaWNoICgzIEZlYiAyMDEwKQogLSBDaGFuZ2VkIHRoZSBXYXRjb20gbWFrZWZpbGVzIHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8ga2VlcCBpbiBzeW5jIHdpdGgKQEAgLTY4NSw3ICs2ODUsNyBAQAogICBTU0xfU0VTU0lPTl9mcmVlKCkgYWZ0ZXIgZWFjaCBjb25zZWN1dGl2ZSBTU0xfZ2V0MV9zZXNzaW9uKCkgdG8gYXZvaWQKICAgaW50cm9kdWNpbmcgYSBtZW1vcnkgbGVhay4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkyNjI4NCkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTI2Mjg0KQogCiBEYW5pZWwgU3RlbmJlcmcgKDcgSmFuIDIwMTApCiAtIE1ha2Ugc3VyZSB0aGUgcHJvZ3Jlc3MgY2FsbGJhY2sgaXMgY2FsbGVkIHJlcGVhdGVkbHkgZXZlbiBkdXJpbmcgdmVyeSBzbG93CkBAIC03MjcsNyArNzI3LDcgQEAKIC0gUmVuYXRvIEJvdGVsaG8gYW5kIFBldGVyIFBlbnRjaGV2IGJyb3VnaHQgYSBwYXRjaCB0aGF0IG1ha2VzIHRoZSBsaWJjdXJsCiAgIGhlYWRlcnMgd29yayBjb3JyZWN0bHkgZXZlbiBvbiBGcmVlQlNEIHN5c3RlbXMgYmVmb3JlIHY4LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTE2OTE1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTY5MTUpCiAKIERhbmllbCBTdGVuYmVyZyAoMTcgRGVjIDIwMDkpCiAtIERhdmlkIEJ5cm9uIGZpeGVkIEN1cmxfb3NzbF9jbGVhbnVwIHRvIGFjdHVhbGx5IGNhbGwgRU5HSU5FX2NsZWFudXAgd2hlbgpAQCAtNzU1LDcgKzc1NSw3IEBACiAgIGZyb20gJ1twcm90b2NvbF1fcHJveHknLiBPYnZpb3VzbHkgdGhpcyBicm9rZSBhZnRlciA3LjE5LjQuIEkgbm93IGFsc28gYWRkZWQKICAgdGVzdCBjYXNlIDExMDYgdGhhdCB2ZXJpZmllcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTM4ODYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkxMzg4NikKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBEZWMgMjAwOSkKIC0gSU1BUCwgUE9QMyBhbmQgU01UUCBzdXBwb3J0IGFuZCB0aGVpciBUTFMgdmVyc2lvbnMgKGluY2x1ZGluZyBJTUFQUywgUE9QM1MKQEAgLTc3NCwxNCArNzc0LDE0IEBACiAgIE5vdyB0aGUgcmV0cnkgY29kZSByZXRyaWVzIG9uIGFsbCBGVFAgdHJhbnNmZXIgZmFpbHVyZXMgdGhhdCBlbmRlZCB3aXRoIGEKICAgNHh4IHJlc3BvbnNlLgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTExMjc5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTEyNzkpCiAKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZmlndXJlZCBvdXQgYSBjYXNlIHdoaWNoIHdvdWxkIGxlYWQgdG8gbGliY3VybAogICBhY2Nlc3NpbmcgYWxyZWR5IGZyZWVkIG1lbW9yeSBhbmQgdGh1cyBjcmFzaCB3aGVuIHVzaW5nIEhUVFBTICh3aXRoCiAgIE9wZW5TU0wpLCBtdWx0aSBpbnRlcmZhY2UgYW5kIHRoZSBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gYW5kIGEgY2VydGFpbiBvcmRlcgogICBvZiBjbGVhbmluZyB0aGluZ3MgdXAuIEkgZml4ZWQgaXQuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MDUyMjApCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkwNTIyMCkKIAogRGFuaWVsIFN0ZW5iZXJnICg3IERlYyAyMDA5KQogLSBNYXJ0aW4gU3RvcnNqbyBtYWRlIGxpYmN1cmwgdXNlIHRoZSBFeHBlY3Q6IDEwMC1jb250aW51ZSBoZWFkZXIgZm9yIHBvc3RzCkBAIC04NTYsMTIgKzg1NiwxMiBAQAogICBBZnRlciB0aGUgY3VybF9lYXN5X2NsZWFudXAgY2FsbCwgdGhlcmUgd2lsbCBiZSBjdXJsIGRucyBlbnRyaWVzIGhhbmdpbmcKICAgYXJvdW5kIHdpdGggaW5fdXNlICE9IDAuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4OTE1OTEpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg5MTU5MSkKIAogLSBNYXJjIEtsZWluZS1CdWRkZSBmaXhlZDogY3VybCBzYXZlZCB0aGUgTERGTEFHUyBzZXQgZHVyaW5nIGNvbmZpZ3VyZSBpbnRvCiAgIGl0cyBwa2ctY29uZmlnIGZpbGUuICBTbyAtV2wgc3R1ZmYgZW5kZWQgdXAgaW4gdGhlIC5wYyBmaWxlLCB3aGljaCBpcyByZWFsbHkKICAgYmFkLCBhbmQgYnJlYWtzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSAtV2wgaW4gb3VyIExERkxBR1MgKHdoaWNoIGFyZSBpbgotICBQVFhkaXN0KS4gYnVnICMyODkzNTkyIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODkzNTkyKQorICBQVFhkaXN0KS4gYnVnICMyODkzNTkyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg5MzU5MikKIAogS2FtaWwgRHVka2EgKDE1IE5vdiAyMDA5KQogLSBEYXZpZCBCeXJvbiBpbXByb3ZlZCB0aGUgY29uZmlndXJlIHNjcmlwdCB0byB1c2UgcGtnLWNvbmZpZyB0byBmaW5kIE9wZW5TU0wKQEAgLTkxOSw3ICs5MTksNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDExIE5vdiAyMDA5KQogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBwb3N0ZWQgYnVnICMyODkxNTk1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODkxNTk1KSB3aGljaCBpZGVudGlmaWVkIGhvdyBhbiBlbnRyeQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4OTE1OTUpIHdoaWNoIGlkZW50aWZpZWQgaG93IGFuIGVudHJ5CiAgIGluIHRoZSBETlMgY2FjaGUgd291bGQgbGluZ2VyIHRvbyBsb25nIGlmIHRoZSByZXF1ZXN0IHRoYXQgYWRkZWQgaXQgd2FzIGluCiAgIHVzZSB0aGF0IGxvbmcuIEhlIGFsc28gcHJvdmlkZWQgdGhlIHBhdGNoIHRoYXQgbm93IG1ha2VzIGxpYmN1cmwgY2FwYWJsZSBvZgogICBzdGlsbCBkb2luZyBhIHJlcXVlc3Qgd2hpbGUgdGhlIEROUyBoYXNoIGVudHJ5IG1heSBnZXQgdGltZWQgb3V0LgpAQCAtOTgwLDcgKzk4MCw3IEBACiAtIEF0dGVtcHQgdG8gdXNlIHBrZy1jb25maWcgZm9yIGZpbmRpbmcgb3V0IGxpYnNzaDIgaW5zdGFsbGF0aW9uIGRldGFpbHMKICAgZHVyaW5nIGNvbmZpZ3VyZS4KIAotLSBBIHBhdGNoIGluIGJ1ZyByZXBvcnQgIzI4ODMxNzcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4ODMxNzcpCistIEEgcGF0Y2ggaW4gYnVnIHJlcG9ydCAjMjg4MzE3NyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4ODMxNzcpCiAgIGJ5IEpvaGFuIHZhbiBTZWxzdCBpbnRyb2R1Y2VkIHRoZSAtLWNybGZpbGUgb3B0aW9uIHRvIGN1cmwsIHdoaWNoIG1ha2VzIGN1cmwKICAgdGVsbCBsaWJjdXJsIGFib3V0IGEgZmlsZSB3aXRoIENSTCAoY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0KSBkYXRhIHRvCiAgIHJlYWQuCkBAIC05OTUsNyArOTk1LDcgQEAKICAgZGF0YSEKIAogLSBKb2huIERlbm5pcyBmaWxlZCBidWcgcmVwb3J0ICMyODczNjY2Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODczNjY2KSB3aGljaCBpZGVudGlmaWVkIGEgcHJvYmxlbQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4NzM2NjYpIHdoaWNoIGlkZW50aWZpZWQgYSBwcm9ibGVtCiAgIHdoaWNoIG1hZGUgbGliY3VybCBsb29wIGluZmluaXRlbHkgd2hlbiBnaXZlbiBpbmNvcnJlY3QgY3JlZGVudGlhbHMgd2hlbgogICB1c2luZyBIVFRQIEdTUyBuZWdvdGlhdGUgYXV0aGVudGljYXRpb24uIEhlIGFsc28gcHJvdmlkZWQgYSBzbWFsbCBhbmQgc2ltcGxlCiAgIHBhdGNoIGZvciBpdC4KQEAgLTEwMDYsMTQgKzEwMDYsMTQgQEAKIAogWWFuZyBUc2UgKDE3IE9jdCAyMDA5KQogLSBCdWcgcmVwb3J0ICMyODY2NzI0IGluZGljYXRlZAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg2NjcyNCkgdGhhdCBjdXJsIG9uIFdpbmRvd3MgZmFpbGVkCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg2NjcyNCkgdGhhdCBjdXJsIG9uIFdpbmRvd3MgZmFpbGVkCiAgIHdoZW4gd3JpdGluZyBmaWxlcyB3aG9zZSBmaWxlIG5hbWVzIG9yaWdpbmFsbHkgY29udGFpbmVkIGNoYXJhY3RlcnMgd2hpY2gKICAgYXJlIG5vdCB2YWxpZCBmb3IgZmlsZSBuYW1lcyBvbiBXaW5kb3dzLiBEYW4gRmFuZHJpY2ggcHJvdmlkZWQgYW4gaW5pdGlhbAogICBwYXRjaCBhbmQgYW5vdGhlciByZXZpc2VkIG9uZSB0byBmaXggdGhpcyBpc3N1ZS4KIAogRGFuaWVsIFN0ZW5iZXJnICgxIE9jdCAyMDA5KQogLSBUb20gTXVlbGxlciBjb3JyZWN0bHkgcmVwb3J0ZWQgaW4gYnVnIHJlcG9ydCAjMjg3MDIyMQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg3MDIyMSkgdGhhdCBsaWJjdXJsIHJldHVybmVkIGFuCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg3MDIyMSkgdGhhdCBsaWJjdXJsIHJldHVybmVkIGFuCiAgIGluY29ycmVjdCByZXR1cm4gY29kZSBmcm9tIHRoZSBpbnRlcm5hbCB0cnluZXh0aXAoKSBmdW5jdGlvbiB3aGljaCBjYXVzZWQKICAgaGltIGdyaWVmLiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIDcuMTkuMSBhbmQgSSBmaW5kIGl0CiAgIHN0cmFuZ2UgaXQgaGFzbid0IGhpdCB1cyBoYXJkZXIsIGJ1dCBJIHdvbid0IHBlcnN1ZSBpbnRvIGZpZ3VyaW5nIG91dApAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBTZXAgMjAwOSkKIC0gQ2hyaXMgTXVtZm9yZCBmaWxlZCBidWcgcmVwb3J0ICMyODYxNTg3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODYxNTg3KSBpZGVudGlmeWluZyB0aGF0IGxpYmN1cmwgdXNlZAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4NjE1ODcpIGlkZW50aWZ5aW5nIHRoYXQgbGliY3VybCB1c2VkCiAgIHRoZSBPcGVuU1NMIGZ1bmN0aW9uIFg1MDlfbG9hZF9jcmxfZmlsZSgpIHdyb25nbHkgYW5kIGZhaWxlZCBpZiBpdCB3b3VsZAogICBsb2FkIGEgQ1JMIGZpbGUgd2l0aCBtb3JlIHRoYW4gb25lIGNlcnRpZmljYXRlIHdpdGhpbi4gVGhpcyBpcyBub3cgZml4ZWQuCiAKQEAgLTExMjgsNyArMTEyOCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjQgQXVnIDIwMDkpCiAtIE1hcmMgZGUgQnJ1aW4gcG9pbnRlZCBvdXQgdGhhdCBjb25maWd1cmUgLS13aXRoLWdudXRscz1QQVRIIGRpZG4ndCB3b3JrCi0gIHByb3Blcmx5IGFuZCBwcm92aWRlZCBhIGZpeC4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg0MzAwOAorICBwcm9wZXJseSBhbmQgcHJvdmlkZWQgYSBmaXguIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODQzMDA4CiAKIC0gRXJpYyBXb25nIGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlIG5ldyBvcHRpb24gLVQuIChkb3QpIHRoYXQgbWFrZXMgY3VybAogICByZWFkIHN0ZGluIGluIGEgbm9uLWJsb2NraW5nIGZhc2hpb24uIFRoaXMgYWxzbyBicmluZ3MgYmFjayAtVC0gKG1pbnVzKSB0bwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKICAgaW4gdGVzdCAzMTEuCiAKIC0gQmVuYnVjayBOYXNvbiBwb3N0ZWQgdGhlIGJ1ZyByZXBvcnQgIzI4MzUxOTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4MzUxOTYpLCBmaXhpbmcgYSBmZXcgY29tcGlsZXIKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODM1MTk2KSwgZml4aW5nIGEgZmV3IGNvbXBpbGVyCiAgIHdhcm5pbmdzIHdoZW4gbWl4aW5nIGludHMgYW5kIGJvb2xzLgogCiBEYW5pZWwgRmFuZHJpY2ggKDEwIEF1ZyAyMDA5KQpAQCAtMTIwMiw3ICsxMjAyLDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgxIEF1ZyAyMDA5KQogLSBTY290dCBDYW50b3IgcG9zdGVkIHRoZSBidWcgcmVwb3J0ICMyODI5OTU1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI5OTU1KSBtZW50aW9uaW5nIHRoZSByZWNlbnQgU1NMIGNlcnQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI5OTU1KSBtZW50aW9uaW5nIHRoZSByZWNlbnQgU1NMIGNlcnQKICAgdmVyaWZpY2F0aW9uIGZsYXcgZm91bmQgYW5kIGV4cGxvaXRlZCBieSBNb3hpZSBNYXJsaW5zcGlrZS4gVGhlIHByZXNlbnRhdGlvbgogICBoZSBkaWQgYXQgQmxhY2sgSGF0IGlzIGF2YWlsYWJsZSBoZXJlOgogICBodHRwczovL3d3dy5ibGFja2hhdC5jb20vaHRtbC9iaC11c2EtMDkvYmgtdXNhLTA5LWFyY2hpdmVzLmh0bWwjTWFybGluc3Bpa2UKQEAgLTEyMzcsNyArMTIzNyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjYgSnVsIDIwMDkpCiAtIEpvaGFuIHZhbiBTZWxzdCBwb3N0ZWQgYnVnIHJlcG9ydCAjMjgyNTk4OQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjgyNTk4OSkgcG9pbnRpbmcgb3V0IHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI1OTg5KSBwb2ludGluZyBvdXQgdGhhdAogICBPcGVuU1NMLXBvd2VyZWQgbGliY3VybCBkaWRuJ3Qgc3VwcG9ydCB0aGUgU0hBLTIgZGlnZXN0IGFsZ29yaXRobSwgYW5kCiAgIHByb3ZpZGVkIHRoZSBzb2x1dGlvbiB0b286IHRvIHVzZSBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpIGluIGFkZGl0aW9uCiAgIHRvIHRoZSBvbGRlciBTU0xlYXlfKiBhbHRlcm5hdGl2ZS4gT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMgd2FzIGFkZGVkIGluCkBAIC0xMjgzLDcgKzEyODMsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDggSnVsIDIwMDkpCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIHBvc3RlZCBidWcgcmVwb3J0ICMyODEzMTIzCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODEzMTIzKSBhbmQgYW4gYSBwYXRjaCB0aGF0IGZpeGVzIHRoZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4MTMxMjMpIGFuZCBhbiBhIHBhdGNoIHRoYXQgZml4ZXMgdGhlCiAgIHByb2JsZW06CiAKICAgVXJsIEEgaXMgYWNjZXNzZWQgdXNpbmcgYXV0aC4gVXJsIEEgcmVkaXJlY3RzIHRvIFVybCBCIChvbiBhIGRpZmZlcmVudApAQCAtMTM3OCw3ICsxMzc4LDcgQEAKIERhbmllbCBTdGVuYmVyZyAoOCBKdW4gMjAwOSkKIC0gQ2xhZXMgSmFrb2Jzc29uIHByb3ZpZGVkIGEgcGF0Y2ggZm9yIGxpYmN1cmwtTlNTIHRoYXQgZml4ZWQgYSBiYWQgcmVmY291bnQKICAgaXNzdWUgd2l0aCBjbGllbnQgY2VydHMgdGhhdCBjYXVzZWQgaXNzdWVzIGxpa2Ugc2VnZmF1bHRzLgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDUvMDMxNi5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDUvMDMxNi5odG1sCiAKIC0gVHJpZ2dlcmVkIGJ5IGJ1ZyByZXBvcnQgIzI3OTg4NTIgYW5kIHRoZSBwYXRjaCBpbiB0aGVyZSwgSSBmaXhlZCBjb25maWd1cmUKICAgdG8gZGV0ZWN0IGdudXRscyBidWlsZCBvcHRpb25zIHdpdGggcGtnLWNvbmZpZyBvbmx5IGFuZCBub3QgbGliZ251dGxzLWNvbmZpZwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAKICAga25vd3MgaXQgd2lsbCBqdXN0IGdldCBhIDQwMS80MDcgYmFjay4gSWYgdGhlIGFwcCB0aGVuIHJlcGxhY2VkIHRoZQogICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIGl0IGNhdXNlZCB0aGUgc2VydmVyIHRvIHdhaXQgZm9yIGlucHV0IHRoYXQgbGliY3VybAogICB3b3VsZG4ndCBzZW5kLiBBYXJvbiBPbmVhbCByZXBvcnRlZCB0aGlzIHByb2JsZW0gaW4gYnVnIHJlcG9ydCAjMjc5OTAwOAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5OTAwOCkgYW5kIGhlbHBlZCB1cyB2ZXJpZnkgdGhlIGZpeC4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzk5MDA4KSBhbmQgaGVscGVkIHVzIHZlcmlmeSB0aGUgZml4LgogCiBZYW5nIFRzZSAoNCBKdW4gMjAwOSkKIC0gSWdvciBOb3Zvc2VsdHNldiBwcm92aWRlZCBwYXRjaGVzIGFuZCBpbmZvcm1hdGlvbiwgdGhhdCBhZnRlciBzb21lCkBAIC0xNDYxLDcgKzE0NjEsNyBAQAogICBQSzExX0NyZWF0ZUdlbmVyaWNPYmplY3QoKSBmdW5jdGlvbi4KIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBNYXkgMjAwOSkKLS0gYnVnIHJlcG9ydCAjMjc5NjM1OCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5NjM1OCkgcG9pbnRlZAorLSBidWcgcmVwb3J0ICMyNzk2MzU4IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5NjM1OCkgcG9pbnRlZAogICBvdXQgdGhhdCB0aGUgY29va2llIHBhcnNlciB3b3VsZCBsZWFrIG1lbW9yeSB3aGVuIGl0IHBhcnNlcyBjb29raWVzIHRoYXQgYXJlCiAgIHJlY2VpdmVkIHdpdGggZG9tYWluLCBwYXRoIGV0YyBzZXQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWUgaGVhZGVyLiBXaGlsZQogICBzdWNoIGEgY29va2llIGlzIHF1ZXN0aW9uYWJsZSwgdGhleSBvY2N1ciBpbiB0aGUgd2lsZCBhbmQgbGliY3VybCBubyBsb25nZXIKQEAgLTE0OTIsNyArMTQ5Miw3IEBACiAtIEJhbGludCBTemlsYWtzemkgcmVwb3J0ZWQgYSBtZW1vcnkgbGVhayB3aGVuIGxpYmN1cmwgZGlkIGd6aXAgZGVjb21wcmVzc2lvbgogICBvZiBzdHJlYW1zIHRoYXQgaGFkIHNvbWUgcGFydHMgKGxlZ2l0aW1hdGVseSkgbWlzc2luZy4gV2Ugbm93IHByb3ZpZGUgYW5kIHVzZQogICBhIHByb3BlciBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgY29udGVudCBlbmNvZGluZyBzdWJtb2R1bGUuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNS8wMDkyLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNS8wMDkyLmh0bWwKIAogLSBLYW1pbCBEdWRrYSBwcm92aWRlZCBhIGZpeCBmb3IgbGliY3VybC1OU1MgcmVwb3J0ZWQgYnkgTWljaGFlbCBDcm9uZW53b3J0aAogICBhdCBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTQ1MzYxMiNjMTIKQEAgLTE1MjMsNyArMTUyMyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoOCBNYXkgMjAwOSkKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZml4ZWQgYnVnIHJlcG9ydCAjMjc4NDA1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NDA1NSkgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHRvCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NDA1NSkgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHRvCiAgIGNvbm5lY3QgdG8gU09DS1MgcHJveGllcyB3aGVuIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UuIEl0IHR1cm5lZCBvdXQgdG8KICAgYWxtb3N0IG5vdCB3b3JrIGF0IGFsbCBwcmV2aW91c2x5LiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBUQ1AgY29ubmVjdCB0bwogICBiZSBwcm9wZXJseSB2ZXJpZmllZCBiZWZvcmUgZG9pbmcgdGhlIFNPQ0tTIG1hZ2ljLgpAQCAtMTU0Myw3ICsxNTQzLDcgQEAKICAgcmVwb3J0ZWQgaW4gdGhlIERlYmlhbiBwYWNrYWdlLgogCiAtIFZpamF5IEcgZmlsZWQgYnVnIHJlcG9ydCAjMjcyMzIzNgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjcyMzIzNikgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHdpdGgKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzIzMjM2KSBpZGVudGlmeWluZyBhIHByb2JsZW0gd2l0aAogICBsaWJjdXJsJ3MgVEZUUCBjb2RlIGFuZCBpdHMgbGFjayBvZiBkZWFsaW5nIHdpdGggdGhlIE9BQ0sgcGFja2V0LgogCiBZYW5nIFRzZSAoNSBNYXkgMjAwOSkKQEAgLTE1NTcsNyArMTU1Nyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoNCBNYXkgMjAwOSkKIC0gTWljaGFlbCBTbWl0aCBwb3N0ZWQgYnVnIHJlcG9ydCAjMjc4NjI1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NjI1NSkgd2l0aCBhIHBhdGNoLCBpZGVudGlmeWluZyBob3cKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzg2MjU1KSB3aXRoIGEgcGF0Y2gsIGlkZW50aWZ5aW5nIGhvdwogICBsaWJjdXJsIGRpZCBub3QgZGVhbCB3aXRoIFNTTCBzZXNzaW9uIGlkcyBwcm9wZXJseSBpZiB0aGUgc2VydmVyIHJlamVjdGVkIGEKICAgcmUtdXNlIG9mIG9uZS4gU3RhcnRpbmcgbm93LCBpdCB3aWxsIGZvcmdldCB0aGUgcmVqZWN0ZWQgb25lIGFuZCByZW1lbWJlcgogICB0aGUgbmV3LiBUaGlzIGNoYW5nZSB3YXMgZm9yIE9wZW5TU0wgb25seSwgaXQgaXMgbGlrZWx5IHRoYXQgb3RoZXIgU1NMIGxpYgpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAKICAgdGhpcyBidWcgc28gSSBoZXJlYnkgY29uc2lkZXIgaXQgbm90IGEgYnVnIGFueW1vcmUhCiAKIERhbmllbCBTdGVuYmVyZyAoMjkgQXByIDIwMDkpCi0tIEJhc2VkIG9uIGJ1ZyByZXBvcnQgIzI3MjMyMTkgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3MjMyMTkpCistIEJhc2VkIG9uIGJ1ZyByZXBvcnQgIzI3MjMyMTkgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzIzMjE5KQogICBJJ3ZlIG5vdyBtYWRlIFRGVFAgImNvbm5lY3Rpb25zIiBub3QgYmVpbmcga2VwdCBmb3IgcmUtdXNlIHdpdGhpbiBsaWJjdXJsLgogICBURlRQIGlzIFVEUC1iYXNlZCBzbyB0aGUgYmVuZWZpdCB3YXMgcmVhbGx5IGxvdyAoaWYgZXZlbiBleGlzdGluZykgdG8gYmVnaW4KICAgd2l0aCBzbyBpbnN0ZWFkIG9mIHRyYWNraW5nIGRvd24gdG8gZml4IHRoaXMgcHJvYmxlbSB3ZSBpbnN0ZWFkIHJlbW92ZWQgdGhlCkBAIC0xNjA2LDEyICsxNjA2LDEyIEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjggQXByIDIwMDkpCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIGZpbGVkIGJ1ZyByZXBvcnQgIzI3ODMwOTAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3ODMwOTApIHBvaW50aW5nIG91dCB0aGF0IG9uIHdpbmRvd3MKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzgzMDkwKSBwb2ludGluZyBvdXQgdGhhdCBvbiB3aW5kb3dzCiAgIHdlIG5lZWQgdG8gZ3JvdyB0aGUgU09fU05EQlVGIGJ1ZmZlciBzb21ld2hhdCB0byBnZXQgcmVhbGx5IGdvb2QgdXBsb2FkCi0gIHNwZWVkcy4gaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84MjM3NjQgaGFzIHRoZSBkZXRhaWxzLiBGcmllbmRzCisgIHNwZWVkcy4gaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvODIzNzY0IGhhcyB0aGUgZGV0YWlscy4gRnJpZW5kcwogICBjb25maXJtZWQgdGhhdCBzaW1wbHkgYWRkaW5nIDMyIHRvIENVUkxfTUFYX1dSSVRFX1NJWkUgaXMgZW5vdWdoLgogCi0tIEJ1ZyByZXBvcnQgIzI3MDkwMDQgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3MDkwMDQpIGJ5IFRpbQorLSBCdWcgcmVwb3J0ICMyNzA5MDA0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjcwOTAwNCkgYnkgVGltCiAgIENoZW4gcG9pbnRlZCBvdXQgaG93IGN1cmwgY291bGRuJ3QgdXBsb2FkIHdpdGggcmVzdW1lIHdoZW4gcmVhZGluZyBmcm9tIGEKICAgcGlwZS4KIApAQCAtMTYyMywxNCArMTYyMywxNCBAQAogICBmcm9tIGEgc3RyZWFtIQogCiBEYW5pZWwgU3RlbmJlcmcgKDI2IEFwciAyMDA5KQotLSBCdWcgcmVwb3J0ICMyNzc5NzMzIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5NzMzKSBieSBTdmVuCistIEJ1ZyByZXBvcnQgIzI3Nzk3MzMgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5NzMzKSBieSBTdmVuCiAgIFdlZ2VuZXIgcG9pbnRlZCBvdXQgdGhhdCBDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUgZGlkbid0IHdvcmsgd2l0aCB0aGUgbXVsdGkKICAgaW50ZXJmYWNlIGFuZCBwcm92aWRlZCBhIHBhdGNoIHRoYXQgZml4ZWQgdGhlIHByb2JsZW0hCiAKIERhbmllbCBTdGVuYmVyZyAoMjQgQXByIDIwMDkpCiAtIEthbWlsIER1ZGthIGZpeGVkIGFub3RoZXIgTlNTLXJlbGF0ZWQgbGVhayB3aGVuIGNsaWVudCBjZXJ0cyB3ZXJlIHVzZWQuCiAKLS0gQnVnIHJlcG9ydCAjMjc3OTI0NSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc3OTI0NSkgYnkgUmFpbmVyCistIEJ1ZyByZXBvcnQgIzI3NzkyNDUgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5MjQ1KSBieSBSYWluZXIKICAgS29lbmlnIHBvaW50ZWQgb3V0IHRoYXQgdGhlIG1hbiBwYWdlIGRpZG4ndCB0ZWxsIHRoYXQgdGhlICpfcHJveHkKICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBiZSBzcGVjaWZpZWQgbG93ZXIgY2FzZSBvciBVUFBFUiBDQVNFIGFuZCB0aGUKICAgbG93ZXIgY2FzZSB0YWtlcyBwcmVjZWRlbmNlLApAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgyMCBBcHIgMjAwOSkKIC0gTGVhbmljIExlZmV2ZXIgcmVwb3J0ZWQgYSBjcmFzaCBhbmQgZGlkIHNvbWUgZGV0YWlsZWQgcmVzZWFyY2ggb24gd2h5IGFuZAotICBob3cgaXQgb2NjdXJzIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDQvMDI4OS5odG1sKS4gVGhlCisgIGhvdyBpdCBvY2N1cnMgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDQvMDI4OS5odG1sKS4gVGhlCiAgIGNvbmNsdXNpb24gd2FzIHRoYXQgaWYgYW4gZXJyb3IgaXMgZGV0ZWN0ZWQgYW5kIEN1cmxfZG9uZSgpIGlzIGNhbGxlZCBmb3IKICAgdGhlIGNvbm5lY3Rpb24sIGZ0cF9kb25lKCkgY291bGQgYXQgdGltZXMgcmV0dXJuIGFub3RoZXIgZXJyb3IgY29kZSB0aGF0CiAgIHRoZW4gd291bGQgdGFrZSBwcmVjZWRlbmNlIGFuZCB0aGF0IG5ldyBjb2RlIGNvbmZ1c2VkIGV4aXN0aW5nIGxvZ2ljIHRoYXQKQEAgLTE2NzAsNyArMTY3MCw3IEBACiAgIHN0ZGVyciBvdXRwdXQgYWZ0ZXIgYSB0ZXN0IHJ1biB0byBzZWUgdGhhdCBpdCB0cnVseSBkaWQgdGhlIHJpZ2h0IHRoaW5nLgogCiBEYW5pZWwgU3RlbmJlcmcgKDEzIEFwciAyMDA5KQotLSBidWcgcmVwb3J0ICMyNzI3OTgxIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzI3OTgxKSBieSBNYXJ0aW4KKy0gYnVnIHJlcG9ydCAjMjcyNzk4MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3Mjc5ODEpIGJ5IE1hcnRpbgogICBTdG9yc2r2IHBvaW50ZWQgb3V0IGhvdyBzZXR0aW5nIENVUkxPUFRfTk9CT0RZIHRvIDAgY291bGQgYmUgZG93bnJpZ2h0CiAgIGNvbmZ1c2luZyBhcyBpdCBzZXQgdGhlIG1ldGhvZCB0byBlaXRoZXIgR0VUIG9yIEhFQUQuIFRoZSBleGFtcGxlIGhlIHNob3dlZAogICBsb29rZWQgbGlrZToKQEAgLTE3ODYsNyArMTc4Niw3IEBACiAgIHdoZW4gdGhlIG1hbiBwYWdlcyBzdGF0ZSB0aGF0IEdOVVRMU19FX1NVQ0NFU1MgaXMgcmV0dXJuZWQgb24gc3VjY2VzcyBhbmQKICAgb3RoZXIgdmFsdWVzIGluZGljYXRlIGVycm9yIGNvbmRpdGlvbnMuCiAKLS0gQmlsbCBFZ2VydCBwb2ludGVkIG91dCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjY3MTYwMikgdGhhdAorLSBCaWxsIEVnZXJ0IHBvaW50ZWQgb3V0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjY3MTYwMikgdGhhdAogICBjdXJsIGRpZG4ndCB1c2Ugc3ByaW50ZigpIGluIGEgd2F5IHRoYXQgaXMgZG9jdW1lbnRlZCB0byB3b3JrIGluIFBPU0lYIGJ1dAogICBzaW5jZSB3ZSB1c2Ugb3VyIG93biBwcmludGYoKSBjb2RlIChmcm9tIGxpYmN1cmwpIHRoYXQgc2hvdWxkbid0IGJlIGEKICAgcHJvYmxlbS4gTm9uZXRoZWxlc3MgSSBtb2RpZmllZCB0aGUgY29kZSB0byBub3QgcmVseSBvbiBzdWNoIHBhcnRpY3VsYXIKQEAgLTE4MjAsNyArMTgyMCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMyBNYXIgMjAwOSkKIC0gRGF2aWQgS2llcnpub3dza2kgbm90aWZpZWQgdXMgYWJvdXQgYSBzZWN1cml0eSBmbGF3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMDkwMzAzLmh0bWwgYWxzbyBrbm93biBhcyBDVkUtMjAwOS0wMDM3KSBpbgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwOTAzMDMuaHRtbCBhbHNvIGtub3duIGFzIENWRS0yMDA5LTAwMzcpIGluCiAgIHdoaWNoIHByZXZpb3VzIGxpYmN1cmwgdmVyc2lvbnMgKGJ5IGRlc2lnbikgY2FuIGJlIHRyaWNrZWQgdG8gYWNjZXNzIGFuCiAgIGFyYml0cmFyeSBsb2NhbC9kaWZmZXJlbnQgZmlsZSBpbnN0ZWFkIG9mIGEgcmVtb3RlIG9uZSB3aGVuCiAgIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gaXMgZW5hYmxlZC4gVGhpcyBmbGF3IGlzIG5vdyBmaXhlZCBpbiB0aGlzIHJlbGVhc2UKQEAgLTE5MjksNyArMTkyOSw3IEBACiAgIHRoZSBjb25kaXRpb24gaW4gdGhlIHByZXZpb3VzIHJlcXVlc3Qgd2FzIHVubWV0LiBUaGlzIGlzIHR5cGljYWxseSBhIHRpbWUKICAgY29uZGl0aW9uIHNldCB3aXRoIENVUkxPUFRfVElNRUNPTkRJVElPTiBhbmQgd2FzIHByZXZpb3VzbHkgbm90IHBvc3NpYmxlIHRvCiAgIHJlbGlhYmx5IGZpZ3VyZSBvdXQuIEZyb20gYnVnIHJlcG9ydCAjMjU2NTEyOAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjU2NTEyOCkgZmlsZWQgYnkgSm9jZWx5biBKYXViZXJ0LgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NjUxMjgpIGZpbGVkIGJ5IEpvY2VseW4gSmF1YmVydC4KIAogRGFuaWVsIEZhbmRyaWNoICg0IEZlYiAyMDA5KQogLSBEb24ndCBhZGQgdGhlIHN0YW5kYXJkIC91c3IvbGliIG9yIC91c3IvaW5jbHVkZSBwYXRocyB0byBMREZMQUdTIGFuZCBDUFBGTEFHUwpAQCAtMTk2OCw3ICsxOTY4LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgzMCBKYW4gMjAwOSkKIC0gU2NvdHQgQ2FudG9yIGZpbGVkIGJ1ZyByZXBvcnQgIzI1NTAwNjEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NTAwNjEpIG1lbnRpb25pbmcgdGhhdCBJIGZhaWxlZCB0bworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NTAwNjEpIG1lbnRpb25pbmcgdGhhdCBJIGZhaWxlZCB0bwogICBwcm9wZXJseSBtYWtlIHN1cmUgdGhhdCB0aGUgVkM5IG1ha2VmaWxlcyBnb3QgaW5jbHVkZWQgaW4gdGhlIGxhdGVzdAogICByZWxlYXNlLiBJJ3ZlIG5vdyBmaXhlZCB0aGUgcmVsZWFzZSBzY3JpcHQgYW5kIHZlcmlmaWVkIGl0IHNvIG5leHQgcmVsZWFzZQogICB3aWxsIGhvcGVmdWxseSBpbmNsdWRlIHRoZW0gcHJvcGVybHkhCkBAIC0yMDEyLDcgKzIwMTIsNyBAQAogICBvbiB0aGUgcHJvcGVyIGFjdGlvbi4KIAogLSBBbGV4ZXkgQm9yem92IGZpbGVkIGJ1ZyByZXBvcnQgIzI1MzU1MDQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1MzU1MDQpIHBvaW50aW5nIG91dCB0aGF0IHJlYWxtcyB3aXRoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjUzNTUwNCkgcG9pbnRpbmcgb3V0IHRoYXQgcmVhbG1zIHdpdGgKICAgcXVvdGVkIHF1b3RhdGlvbiBtYXJrcyBpbiBIVFRQIERpZ2VzdCBoZWFkZXJzIGRpZG4ndCB3b3JrLiBJJ3ZlIG5vdyBhZGRlZAogICB0ZXN0IGNhc2UgMTA5NSB0aGF0IHZlcmlmaWVzIG15IGZpeC4KIApAQCAtMjA5NSw3ICsyMDk1LDcgQEAKICAgU3VuUHJvIGNvbXBpbGVycy4KIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBKYW4gMjAwOSkKLS0gQmFzZWQgb24gYnVnIHJlcG9ydCAjMjQ5ODY2NSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQ5ODY2NSkKKy0gQmFzZWQgb24gYnVnIHJlcG9ydCAjMjQ5ODY2NSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0OTg2NjUpCiAgIGJ5IERhbmllbCBCbGFjaywgSSd2ZSBub3cgYWRkZWQgbWFnaWMgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdGhhdCBtYWtlcyBpdAogICB1c2UgcGtnLWNvbmZpZyB0byBkZXRlY3QgZ251dGxzIGRldGFpbHMgYXMgd2VsbCBpZiB0aGUgZXhpc3RpbmcgbWV0aG9kCiAgICh1c2luZyBsaWJnbnV0bHMtY29uZmlnKSBmYWlscy4gV2hpbGUgZG9pbmcgdGhpcywgSSBjbGVhbmVkIHVwIGFuZCB1bmlmaWVkCkBAIC0yMTQ3LDEzICsyMTQ3LDEzIEBACiAtICdyZWNvbmYnIGlzIHJlbW92ZWQgc2luY2Ugd2UgcmF0aGVyIGhhdmUgdXNlcnMgdXNlICdidWlsZGNvbmYnCiAKIERhbmllbCBTdGVuYmVyZyAoMzEgRGVjIDIwMDgpCi0tIEJhcyBNZXZpc3NlbiByZXBvcnRlZCBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNDc5MDMwIHBvaW50aW5nCistIEJhcyBNZXZpc3NlbiByZXBvcnRlZCBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQ3OTAzMCBwb2ludGluZwogICBvdXQgdGhhdCAncmVjb25mJyBkaWRuJ3QgcHJvcGVybHkgcG9pbnQgb3V0IHRoZSBtNCBzdWJkaXJlY3Rvcnkgd2hlbiBydW5uaW5nCiAgIGFjbG9jYWwuCiAKIERhbmllbCBTdGVuYmVyZyAoMjkgRGVjIDIwMDgpCiAgLSBQaGlsIExpc2llY2tpIGZpbGVkIGJ1ZyByZXBvcnQgIzI0MTMwNjcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0MTMwNjcpIHRoYXQgaWRlbnRpZmllZCBhIHByb2JsZW0gdGhhdAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0MTMwNjcpIHRoYXQgaWRlbnRpZmllZCBhIHByb2JsZW0gdGhhdAogICB3b3VsZCBjYXVzZSBsaWJjdXJsIHRvIG1hcmsgYSBETlMgY2FjaGUgZW50cnkgImluIHVzZSIgZXRlcm5hbGx5IGlmIHRoZQogICBzdWJzZXF1ZW5jZSBUQ1AgY29ubmVjdCBmYWlsZWQuIEl0IHdvdWxkIHRodXMgbmV2ZXIgZ2V0IHBydW5lZCBhbmQgcmVmcmVzaGVkCiAgIGFzIGl0IHNob3VsZCd2ZSBiZWVuLgpAQCAtMjIxOCw3ICsyMjE4LDcgQEAKIC0gTW9yZSB3b3JrIHdpdGggSWdvciBOb3Zvc2VsdHNldiB0byBmaXJzdCBmaXggdGhlIHJlbWFpbmluZyBzdHVmZiBmb3IKICAgcmVtb3ZpbmcgZWFzeSBoYW5kbGVzIGZyb20gbXVsdGkgaGFuZGxlcyB3aGVuIHRoZSBlYXN5IGhhbmRsZSBpcy93YXMgd2l0aGluCiAgIGEgSFRUUCBwaXBlbGluZS4gSGlzIGJ1ZyByZXBvcnQgIzIzNTE2NTMKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzNTE2NTMpIHdhcyBhbHNvIHJlbGF0ZWQgYW5kIHdhcworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzNTE2NTMpIHdhcyBhbHNvIHJlbGF0ZWQgYW5kIHdhcwogICBldmVudHVhbGx5IGZpeGVkIGJ5IGEgcGF0Y2ggYnkgSWdvciBoaW1zZWxmLgogCiBZYW5nIFRzZSAoMTIgRGVjIDIwMDgpCkBAIC0yMjI4LDcgKzIyMjgsNyBAQAogRGFuaWVsIFN0ZW5iZXJnICgxMiBEZWMgMjAwOCkKIC0gTWFyayBLYXJwZWxlcyBmaWxlZCBidWcgcmVwb3J0ICMyNDE2MTgyIHRpdGxlZCAiY3Jhc2ggaW4gQ29ubmVjdGlvbkV4aXN0cwogICB3aGVuIHVzaW5nIGR1cGhhbmRsZStjdXJsX211dGxpIgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQxNjE4Mikgd2hpY2ggc2hvd2VkIHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNDE2MTgyKSB3aGljaCBzaG93ZWQgdGhhdAogICBjdXJsX2Vhc3lfZHVwaGFuZGxlKCkgd3JvbmdseSBhbHNvIGNvcGllZCB0aGUgcG9pbnRlciB0byB0aGUgY29ubmVjdGlvbgogICBjYWNoZSwgd2hpY2ggd2FzIHBsYWluIHdyb25nIGFuZCBjYXVzZWQgYSBzZWdmYXVsdCBpZiB0aGUgaGFuZGxlIHdvdWxkIGJlCiAgIHVzZWQgaW4gYSBkaWZmZXJlbnQgbXVsdGkgaGFuZGxlIHRoYW4gdGhlIGhhbmRsZSBpdCB3YXMgZHVwbGljYXRlZCBmcm9tLgpAQCAtMjI4MSw3ICsyMjgxLDcgQEAKICAgTk9UIHRha2UgYSA1NTAgcmVzcG9uc2UgZnJvbSBTSVpFIGFzIGEgaGludCB0aGF0IHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QuCiAKIC0gQ2hyaXN0aWFuIEtyYXVzZSBmaWxlZCBidWcgIzIyMjEyMzcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMjEyMzcpIHRoYXQgaWRlbnRpZmllZCBhbiBpbmZpbml0ZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMjEyMzcpIHRoYXQgaWRlbnRpZmllZCBhbiBpbmZpbml0ZQogICBsb29wIGR1cmluZyBHU1MgYXV0aGVudGljYXRpb24gZ2l2ZW4gc29tZSBzcGVjaWZpYyBjb25kaXRpb25zLiBXaXRoIGhpcwogICBwYXRpZW5jZSBhbmQgZ3JlYXQgZmVlZGJhY2sgSSBtYW5hZ2VkIHRvIG5hcnJvdyBkb3duIHRoZSBwcm9ibGVtIGFuZAogICBldmVudHVhbGx5IGZpeCBpdCBhbHRob3VnaCBJIGNhbid0IHRlc3QgYW55IG9mIHRoaXMgbXlzZWxmIQpAQCAtMjI5MiwxMyArMjI5MiwxMyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDMgRGVjIDIwMDgpCiAtIElnb3IgTm92b3NlbHRzZXYgZmlsZWQgYnVnICMyMzUxNjQ1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMzUxNjQ1KSB0aGF0IGlkZW50aWZpZWQgYSBwcm9ibGVtIHdpdGgKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMzUxNjQ1KSB0aGF0IGlkZW50aWZpZWQgYSBwcm9ibGVtIHdpdGgKICAgdGhlIG11bHRpIGludGVyZmFjZSB0aGF0IG9jY3VyZWQgaWYgeW91IHJlbW92ZWQgYW4gZWFzeSBoYW5kbGUgd2hpbGUgaW4KICAgcHJvZ3Jlc3MgYW5kIHRoZSBoYW5kbGUgd2FzIHVzZWQgaW4gYSBIVFRQIHBpcGVsaW5lLgogCiAtIFBhd2VsIEtpZXJza2kgcG9pbnRlZCBvdXQgYSBtaXN0YWtlIGluIHRoZSBjb29raWUgY29kZSB0aGF0IGNvdWxkIGxlYWQgdG8gYQogICBiYWQgZmNsb3NlKCkgYWZ0ZXIgYSBmYXRhbCBlcnJvciBoYWQgb2NjdXJlZC4KLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzODIyMTkpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjM4MjIxOSkKIAogRGFuaWVsIEZhbmRyaWNoICgyNSBOb3YgMjAwOCkKIC0gSWYgYSBIVFRQIHJlcXVlc3QgaXMgQmFzaWMgYW5kIG51bSBpcyBhbHJlYWR5ID49MTAwMCwgdGhlIEhUVFAgdGVzdApAQCAtMjMzMSw3ICsyMzMxLDcgQEAKICAgd2hhdGV2ZXIgeW91IHNlZSBmaXQKIAogLSBDaHJpc3RpYW4gS3JhdXNlIHJlcG9ydGVkIGFuZCBmaXhlZCBhIG1lbW9yeSBsZWFrIHRoYXQgd291bGQgb2NjdXIgd2l0aCBIVFRQCi0gIEdTUy9rZXJiZXJvcyBhdXRoZW50aWNhdGlvbiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI4NDM4NikKKyAgR1NTL2tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI4NDM4NikKIAogLSBBbmRyZWFzIFd1cmYgYW5kIE1hcmt1cyBLb2V0dGVyIGhlbHBlZCBtZSBhbmFseXplIGEgcHJvYmxlbSB0aGF0IEFuZHJlYXMgZ290CiAgIHdoZW4gdXBsb2FkaW5nIGZpbGVzIHRvIGEgc2luZ2xlIEZUUCBzZXJ2ZXIgdXNpbmcgbXVsdGlwbGUgZWFzeSBoYW5kbGUKQEAgLTIzOTIsNyArMjM5Miw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMTEgTm92IDIwMDgpCiAtIFJhaW5lciBDYW5hdmFuIGZpbGVkIGJ1ZyAjMjI1NTYyNwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI1NTYyNykgd2hpY2ggcG9pbnRlZCBvdXQgdGhhdCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI1NTYyNykgd2hpY2ggcG9pbnRlZCBvdXQgdGhhdCBhCiAgIHByb2dyYW0gdXNpbmcgbGliY3VybCdzIG11bHRpIGludGVyZmFjZSB0byBkb3dubG9hZCBhIEhUVFBTIHBhZ2Ugd2l0aCBhCiAgIGxpYmN1cmwgYnVpbHQgcG93ZXJlZCBieSBPcGVuU1NMLCB3b3VsZCBlYXNpbHkgZ2V0IHNpbGx5IGFuZCBpbnN0ZWFkIGhhbmQKICAgb3ZlciBTU0wgZGV0YWlscyBhcyBkYXRhIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBIVFRQIGhlYWRlcnMgYW5kIGJvZHkuIFRoaXMKQEAgLTI0MDYsNyArMjQwNiw3IEBACiAgIHVuZm9ydHVuYXRlbHkgaXQgZGlkbid0IHRyaWdnZXIgaXQgZXZlbiBiZWZvcmUgdGhpcyBmaXghCiAKIFlhbmcgVHNlICgxMSBOb3YgMjAwOCkKLS0gUmVsYXRlZCB3aXRoIGJ1ZyAjMjIzMDUzNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjIzMDUzNSkKKy0gUmVsYXRlZCB3aXRoIGJ1ZyAjMjIzMDUzNSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMzA1MzUpCiAgIERhbmllbCBGYW5kcmljaCBub3RpY2VkIHRoYXQgY3VybF9hZGRyaW5mbyB3YXMgYWxzbyBtaXNzaW5nIGluIHRoZSBidWlsZAogICBwcm9jZXNzIG9mIG90aGVyIGZvdXIgbm9uLWNvbmZpZ3VyZSBwbGF0Zm9ybXMuIEFkZGVkIG5vdy4KIApAQCAtMjQxOSw3ICsyNDE5LDcgQEAKIC0gTWVyZ2VkIGV4aXN0aW5nIElQdjQgYW5kIElQdjYgQ3VybF9pcDJhZGRyIGZ1bmN0aW9ucyBpbnRvIGEgc2luZ2xlIG9uZQogICB3aGljaCBub3cgYWxzbyB0YWtlcyBhIHByb3RvY29sIGFkZHJlc3MgZmFtaWx5IGFyZ3VtZW50LgogCi0tIEJ1ZyAjMjIzMDUzNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjIzMDUzNSkgcG9pbnRlZCBvdXQgYQorLSBCdWcgIzIyMzA1MzUgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMjMwNTM1KSBwb2ludGVkIG91dCBhCiAgIHByb2JsZW0gd2l0aCBNU1ZDIDYgbWFrZWZpbGUgdGhhdCBjYXVzZWQgYSBidWlsZCBmYWlsdXJlLiBJdCB3YXMgbm90ZWQgdGhhdAogICB0aGUgY3VybF9hZGRyaW5mby5vYmogcmVmZXJlbmNlIHdhcyBtaXNzaW5nLiBJIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIHNvcnQKICAgdGhlIGxpc3QgaW4gd2hpY2ggdGhpcyB3YXMgbWlzc2luZy4gSXNzdWUgc3VibWl0dGVkIGJ5IEpvaG4gV2lsa2luc29uLgpAQCAtMjQzMCw3ICsyNDMwLDcgQEAKIC0gQ1VSTElORk9fRklMRVRJTUUgbm93IHdvcmtzIGZvciBmaWxlOi8vIHRyYW5zZmVycyBhcyB3ZWxsCiAKIERhbmllbCBTdGVuYmVyZyAoMyBOb3YgMjAwOCkKLS0gQnVnICMyMjE4NDgwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMjE4NDgwKSBwb2ludGVkIG91dCBhCistIEJ1ZyAjMjIxODQ4MCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMTg0ODApIHBvaW50ZWQgb3V0IGEKICAgcHJvYmxlbSB3aXRoIG15IENVUkxJTkZPX1BSSU1BUllfSVAgZml4IGZyb20gT2N0b2JlciA3dGggdGhhdCBjYXVzZWQgYSBOVUxMCiAgIHBvaW50ZXIgcmVhZC4gSSBhbHNvIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIGNsZWFuIHVwIHRoaXMgbG9naWMgKHN0b3Jpbmcgb2YKICAgdGhlIGNvbm5lY3Rpb24ncyBJUCBhZGRyZXNzKSBzb21ld2hhdCBhcyB3ZSBoYWQgaXQgc3RvcmVkIGluIHR3byBkaWZmZXJlbnQKQEAgLTI1MDcsNyArMjUwNyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMTUgT2N0IDIwMDgpCiAtIFBhc2NhbCBUZXJqYW4gZmlsZWQgYnVnICMyMTU0NjI3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTU0NjI3KSB3aGljaCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTU0NjI3KSB3aGljaCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwKICAgdXNlcyBzdHJjYXNlY21wKCkgaW4gbXVsdGlwbGUgcGxhY2VzIHdoZXJlIGl0IGNhdXNlcyBmYWlsdXJlcyB3aGVuIHRoZQogICBUdXJraXNoIGxvY2FsZSBpcyB1c2VkLiBUaGlzIGlzIGJlY2F1c2UgJ2knIGFuZCAnSScgaXNuJ3QgdGhlIHNhbWUgbGV0dGVyIHNvCiAgIHN0cmNhc2VjbXAoKSBvbiB0aG9zZSBsZXR0ZXJzIGFyZSBkaWZmZXJlbnQgaW4gVHVya2lzaCB0aGFuIGluIEVuZ2xpc2ggKG9yCkBAIC0yNTI0LDcgKzI1MjQsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDE1IE9jdCAyMDA4KQogLSBKb2huIFdpbGtpbnNvbiBmaWxlZCBidWcgIzIxNTU0OTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxNTU0OTYpIHBvaW50aW5nIG91dCBhbiBlcnJvciBjYXNlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjE1NTQ5NikgcG9pbnRpbmcgb3V0IGFuIGVycm9yIGNhc2UKICAgd2l0aG91dCBhIHByb3BlciBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiBXaGVuIGEgcmVhZCBjYWxsYmFjayByZXR1cm5zCiAgIGEgdG9vIGxhcmdlIHZhbHVlIChsaWtlIHdoZW4gdHJ5aW5nIHRvIHJldHVybiBhIG5lZ2F0aXZlIG51bWJlcikgaXQgd291bGQKICAgdHJpZ2dlciBhbmQgdGhlIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSB0aGVuIG1ha2VzIHRoZSBwcm9wbGVtIHNsaWdodGx5CkBAIC0yNTQ1LDcgKzI1NDUsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDggT2N0IDIwMDgpCiAtIEpvaG4gV2lsa2luc29uIGZpbGVkIGJ1ZyAjMjE1MjI3MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjE1MjI3MCkgd2hpY2ggaWRlbnRpZmllZCBhbmQgZml4ZWQgYQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxNTIyNzApIHdoaWNoIGlkZW50aWZpZWQgYW5kIGZpeGVkIGEKICAgQ1VSTElORk9fUkVESVJFQ1RfVVJMIG1lbW9yeSBsZWFrIGFuZCBhbiBhZGRpdGlvbmFsIHdyb25nLWRvaW5nOgogCiAgIEFueSBzdWJzZXF1ZW50IHRyYW5zZmVyIHdpdGggYSByZWRpcmVjdCBsZWFrcyBtZW1vcnksIGV2ZW50dWFsbHkgY3Jhc2hpbmcKQEAgLTI1NTUsNyArMjU1NSw3IEBACiAgIHRoYXQgRElEIG9jY3VyIG9uIHNvbWUgcHJldmlvdXMgdHJhbnNmZXIgdG8gc3RpbGwgYmUgcmVwb3J0ZWQuCiAKIC0gSWdvciBOb3Zvc2VsdHNldiBmaWxlZCBidWcgIzIxMTE2MTMKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxMTE2MTMpIHRoYXQgZXZlbnR1YWxseSBpZGVudGlmaWVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTExNjEzKSB0aGF0IGV2ZW50dWFsbHkgaWRlbnRpZmllZCBhCiAgIGZsYXcgaW4gaG93IHRoZSBtdWx0aV9zb2NrZXQgaW50ZXJmYWNlIGluIHNvbWUgY2FzZXMgbWlzc2VkIHRvIGNhbGwgdGhlCiAgIHRpbWVvdXQgY2FsbGJhY2sgd2hlbiBlYXN5IGludGVyZmFjZXMgYXJlIHJlbW92ZWQgYW5kIGFkZGVkIHdpdGhpbiB0aGUgc2FtZQogICBtaWxsaXNlY29uZC4KQEAgLTI2MjAsMTMgKzI2MjAsMTMgQEAKICAgZG93bmxvYWRzIQogCiAtIE1heGltIEl2YW5vdiBmaWxlZCBidWcgcmVwb3J0ICMyMTA3ODAzCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTA3ODAzKSAibm8gQ1VSTElORk9fUkVESVJFQ1RfVVJMIGluCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzgwMykgIm5vIENVUkxJTkZPX1JFRElSRUNUX1VSTCBpbgogICBtdWx0aSBtb2RlIiB0b2dldGhlciB3aXRoIGEgcGF0Y2ggdGhhdCBmaXhlZCB0aGUgcHJvYmxlbS4KIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBTZXAgMjAwOCkKIC0gRW1hbnVlbGUgQm92aXNpbyBzdWJtaXR0ZWQgYnVnIHJlcG9ydCAjMjEyNjQzNS4gV2UgZml4ZWQgdGhlIEhUVFAgRGlnZXN0CiAgIGF1dGggY29kZSB0byBub3QgYmVoYXZlIGJhZGx5IHdoZW4gZ2V0dGluZyBhIGJsYW5rIHJlYWxtIHdpdGgKLSAgcmVhbG09IiIuIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxMjY0MzUKKyAgcmVhbG09IiIuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTI2NDM1CiAKIERhbmllbCBGYW5kcmljaCAoMjMgU2VwIDIwMDgpCiAtIE1ha2Ugc3VyZSBub3QgdG8gZGVyZWZlcmVuY2UgdGhlIHdyb25nIFVybFN0YXRlIHByb3RvIHVuaW9uIG1lbWJlciB3aGVuCkBAIC0yNjU5LDE0ICsyNjU5LDE0IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjIgU2VwIDIwMDgpCiAtIE1hZGUgdGhlIFNPQ0tTIGNvZGUgdXNlIHRoZSBuZXcgQ3VybF9yZWFkX3BsYWluKCkgZnVuY3Rpb24gdG8gZml4IHRoZSBidWcKLSAgTWFya3VzIE1vZWxsZXIgcmVwb3J0ZWQ6IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDgtMDkvMDAxNi5odG1sCisgIE1hcmt1cyBNb2VsbGVyIHJlcG9ydGVkOiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwOC0wOS8wMDE2Lmh0bWwKIAogLSByZWN2KCkgZXJyb3JzIG90aGVyIHRoYW4gdGhvc2UgZXF1YWwgdG8gRUFHQUlOIG5vdyBjYXVzZSBwcm9wZXIKICAgQ1VSTEVfUkVDVl9FUlJPUiB0byBnZXQgcmV0dXJuZWQuIFRoaXMgbWFkZSB0ZXN0IGNhc2UgMTYwIGZhaWwgc28gSSd2ZSBub3cKICAgZGlzYWJsZWQgaXQgdW50aWwgd2UgY2FuIGZpZ3VyZSBvdXQgYW5vdGhlciB3YXkgdG8gZXhlcmNpc2UgdGhhdCBsb2dpYy4KIAogLSBNaWNoYWVsIEdvZmZpb3VsIGZpbGVkIGJ1ZyByZXBvcnQgIzIxMDczNzcgIlByb2JsZW0gd2l0aCBtdWx0aSArIEdudVRMUyArCi0gIHByb3h5IiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzM3NykgdGhhdCBzaG93ZWQgaG93IGEgbXVsdGkKKyAgcHJveHkiIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzM3NykgdGhhdCBzaG93ZWQgaG93IGEgbXVsdGkKICAgaW50ZXJmYWNlIHVzaW5nIHByb2dyYW0gZGlkbid0IHdvcmsgd2hlbiBidWlsdCB3aXRoIEdudVRMUyBhbmQgYSBDT05ORUNUCiAgIHJlcXVlc3Qgd2FzIGRvbmUgb3ZlciBhIHByb3h5IChiYXNpY2FsbHkgdGVzdCA1MDIgb3ZlciBhIHByb3h5IHRvIGEgSFRUUFMKICAgc2l0ZSkuIEl0IHR1cm5lZCBvdXQgdGhlIHNzbCBjb25uZWN0IGZ1bmN0aW9uIHdvdWxkIGdldCBjYWxsZWQgdHdpY2Ugd2hpY2gKQEAgLTI4MTIsMTkgKzI4MTIsMTkgQEAKICAgIkNvbm5lY3Rpb246IGNsb3NlIiBhbmQgYWN0dWFsbHkgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgdGhlCiAgIHJlc3BvbnNlLWJvZHksIGxpYmN1cmwgY291bGQgc3RpbGwgaGF2ZSBvdXRzdGFuZGluZyBkYXRhIHRvIHNlbmQgYW5kIGl0CiAgIHdvdWxkIG5vdCBwcm9wZXJseSBub3RpY2UgdGhpcyBhbmQgc3RvcCBzZW5kaW5nLiBUaGlzIGNhdXNlZCB3ZWlyZG5lc3MgYW5kCi0gIHNhZCBmYWNlcy4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjA4MDIyMgorICBzYWQgZmFjZXMuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDgwMjIyCiAKICAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCByZWFzb25zIHRvIGNvbnNpZGVyIGxpYmN1cmwncyBiZWhhdmlvciB3aGVuCiAgIGdldHRpbmcgYSA+PSA0MDAgcmVzcG9uc2UgY29kZSB3aGlsZSBzZW5kaW5nIGRhdGEsIGFzIENyYWlnIFBlcnJhcycgbm90ZQogICAiaHR0cCB1cGxvYWQ6IGhvdyB0byBzdG9wIG9uIGVycm9yIiBzcGVjaWZpZXM6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDgtMDgvMDEzOC5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA4LTA4LzAxMzguaHRtbAogCiBEYW5pZWwgU3RlbmJlcmcgKDI4IEF1ZyAyMDA4KQogLSBEZW5nbWlud2VuIHJlcG9ydGVkIHRoYXQgbGliY3VybCB3b3VsZCBsb2NrIGEgKGNvb2tpZSkgc2hhcmUgdHdpY2UgKHdpdGhvdXQKICAgYW4gdW5sb2NrIGluIGJldHdlZW4pIGZvciBhIGNlcnRhaW4gY2FzZSBhbmQgdGhhdCBpbiBmYWN0IHdvcmtzIHdoZW4gdXNpbmcKICAgcmVndWxhciB3aW5kb3dzIG11dGV4ZXMgYnV0IG5vdCB3aXRoIHB0aHJlYWRzJyEgTG9ja3Mgc2hvdWxkIG9mIGNvdXJzZSBub3QKICAgZ2V0IGxvY2tlZCBhZ2FpbiBzbyB0aGlzIGlzIG5vdyBmaXhlZC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA4LzA0MjIuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA4LzA0MjIuaHRtbAogCiAtIEknbSBhYmFuZG9uaW5nIHRoZSBzeXN0ZW0gd2l0aCB0aGUgd2ViIHNpdGUgbWlycm9ycyAoYnV0IGtlZXBpbmcgZG93bmxvYWQKICAgZmlsZXMgYmluZyBtaXJyb3JlZCkgYW5kIHRodXMgSSd2ZSBjaGFuZ2VkIHRoZSBVUkwgaW4gdGhlIGNvb2tpZWphciBoZWFkZXIKQEAgLTI4NjEsNyArMjg2MSw3IEBACiAKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZml4ZWQgYSBidWcgd2hlbiBkb2luZyBwcm94eSBDT05ORUNUIHdpdGggdGhlIG11bHRpCiAgIGludGVyZmFjZSwgYW5kIHRoZSBwcm94eSB3b3VsZCBzZW5kIENvbm5lY3Rpb246IGNsb3NlIGR1cmluZyB0aGUKLSAgYXV0aGVudGljYXRpb24gcGhhc2UuICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDY5MDQ3CisgIGF1dGhlbnRpY2F0aW9uIHBoYXNlLiAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwNjkwNDcKIAogRGFuaWVsIEZhbmRyaWNoICgyMiBBdWcgMjAwOCkKIC0gRml4ZWQgYSBwcm9ibGVtIHdoZW4gLS1kdW1wLWhlYWRlciAtIHdhcyBnaXZlbiB3aXRoIG1vcmUgdGhhbiBvbmUgVVJMLApAQCAtMjk1OSwxMyArMjk1OSwxMyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDExIEF1ZyAyMDA4KQogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBmaWxlZCBidWcgcmVwb3J0ICMyMDQyNDMwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDQyNDMwKSB3aXRoIGEgcGF0Y2guICJOVExNIFdpbmRvd3MKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDQyNDMwKSB3aXRoIGEgcGF0Y2guICJOVExNIFdpbmRvd3MKICAgU1NQSSBjb2RlIGlzIG5vdCB0aHJlYWQgc2FmZSIuIFRoaXMgd2FzIGR1ZSB0byBsaWJjdXJsIHVzaW5nIHN0YXRpYwogICB2YXJpYWJsZXMgdG8gdGVsbCB3ZXRoZXIgdG8gbG9hZCB0aGUgbmVjZXNzYXJ5IFNTUEkgRExMLCBidXQgbm93IHRoZSBsb2FkaW5nCiAgIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBtb3JlIHN1aXRhYmxlIGN1cmxfZ2xvYmFsX2luaXQoKSBjYWxsLgogCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIGZpbGVkIGJ1ZyByZXBvcnQgIzIwNDI0NDAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwNDI0NDApIHdpdGggYSBwYXRjaC4gSGUgaWRlbnRpZmllZCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjA0MjQ0MCkgd2l0aCBhIHBhdGNoLiBIZSBpZGVudGlmaWVkIGEKICAgcHJvYmxlbSB3aGVuIHVzaW5nIE5UTE0gb3ZlciBhIHByb3h5IGJ1dCB0aGUgZW5kLXBvaW50IGRvZXMgQmFzaWMsIGFuZCB0aGVuCiAgIGxpYmN1cmwgd291bGQgZG8gd3Jvbmcgd2hlbiB0aGUgaG9zdCBzZW50ICJDb25uZWN0aW9uOiBjbG9zZSIgYXMgdGhlIHByb3h5J3MKICAgTlRMTSBzdGF0ZSB3YXMgZXJyb25lb3VzbHkgY2xlYXJlZC4KQEAgLTMxMTUsNyArMzExNSw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjYgSnVsIDIwMDgpCiAtIERhdmlkIEJhdSBmaWxlZCBidWcgcmVwb3J0ICMyMDI2MjQwICJDVVJMX1JFQURGVU5DX1BBVVNFIGxlYWRzIHRvIGJ1ZmZlcgotICBvdmVycnVuIiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAyNjI0MCkgaWRlbnRpZnlpbmcgdHdvCisgIG92ZXJydW4iIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAyNjI0MCkgaWRlbnRpZnlpbmcgdHdvCiAgIHByb2JsZW1zLCBhbmQgcHJvdmlkaW5nIHRoZSBmaXggZm9yIHRoZW06CiAKICAgLSBDVVJMX1JFQURGVU5DX1BBVVNFIGRpZCBpbiBmYWN0IG5vdCBwYXVzZSB0aGUgX3NlbmRpbmdfIG9mIGRhdGEgdGhhdCBpdCBpcwpAQCAtMzIwOCw3ICszMjA4LDcgQEAKIAogWWFuZyBUc2UgKDEwIEp1bCAyMDA4KQogLSBQZXRlciBMYW1iZXJnIGZpbGVkIGJ1ZyByZXBvcnQgIzIwMTUxMjY6ICJwb2xsIGdpdmVzIFdTQUVJTlZBTCB3aGVuIFBPTExQUkkKLSAgaXMgc2V0IGluIGZkc2V0LmV2ZW50cyIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwMTUxMjYpIHdoaWNoCisgIGlzIHNldCBpbiBmZHNldC5ldmVudHMiIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAxNTEyNikgd2hpY2gKICAgZXhhY3RseSBwaW5wb2ludGVkIHRoZSBwcm9ibGVtIG9ubHkgdHJpZ2dlcmVkIG9uIFdpbmRvd3MgVmlzdGEsIHByb3ZpZGVkCiAgIHJlZmVyZW5jZSB0byBkb2NzIGFuZCBhbHNvIGEgZml4LiBUaGVyZSBpcyBtdWNoIHdvcmsgYmVoaW5kIFBldGVyIExhbWJlcmcncwogICBleGNlbGxlbnQgYnVnIHJlcG9ydC4gVGhhbmsgWW91IQpAQCAtMzI3Niw3ICszMjc2LDcgQEAKIAogWWFuZyBUc2UgKDI5IEp1biAyMDA4KQogLSBKb2huIExpZ2h0c2V5IGZpbGVkIGJ1ZyByZXBvcnQgIzE5OTkxODE6ICJDTE9DS19NT05PVE9OSUMgYWx3YXlzIGZhaWxzIG9uCi0gIHNvbWUgc3lzdGVtcyIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5OTkxODEpLiBUaGUgcHJvYmxlbSB3YXMKKyAgc29tZSBzeXN0ZW1zIiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5OTkxODEpLiBUaGUgcHJvYmxlbSB3YXMKICAgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBkaWQgbm90IHVzZSB0aGUgX1BPU0lYX01PTk9UT05JQ19DTE9DSyBmZWF0dXJlIHRlc3QKICAgbWFjcm8gd2hlbiBjaGVja2luZyBtb25vdG9uaWMgY2xvY2sgYXZhaWxhYmlsaXR5LiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGhlCiAgIG1vbm90b25pYyBjbG9jayB3aWxsIG5vdCBiZSB1c2VkIHVubGVzcyB0aGUgZmVhdHVyZSB0ZXN0IG1hY3JvIGlzIGRlZmluZWQKQEAgLTMyOTAsNyArMzI5MCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjIgSnVuIDIwMDgpCiAtIEVkdWFyZCBCbG9jaCBmaWxlZCB0aGUgZGViaWFuIGJ1ZyByZXBvcnQgIzQ4NzU2NwotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ4NzU2NykgcG9pbnRpbmcgb3V0IHRoYXQKKyAgKGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NDg3NTY3KSBwb2ludGluZyBvdXQgdGhhdAogICBsaWJjdXJsIHVzZWQgQ29udGVudC1SYW5nZTogaW5zdGVhZCBvZiBSYW5nZSB3aGVuIGRvaW5nIGEgcmFuZ2UgcmVxdWVzdCB3aXRoCiAgIC0taGVhZCAoQ1VSTE9QVF9OT0JPRFkpLiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGVzdCBjYXNlIDEwMzIgd2FzIGFkZGVkIHRvCiAgIHZlcmlmeS4KQEAgLTM0MjcsMTAgKzM0MjcsMTAgQEAKIC0gSmVmZiBXZWJlciByZXBvcnRlZCBtZW1vcnkgbGVha3Mgd2l0aCBhYm9ydGVkIFNDUCBhbmQgU0ZUUCB0cmFuc2ZlcnMgYW5kCiAgIHByb3ZpZGVkIGV4Y2VsbGVudCByZXBlYXQgcmVjaXBlcy4gSSBmaXhlZCB0aGUgY2FzZXMgSSBtYW5hZ2VkIHRvIHJlcHJvZHVjZQogICBidXQgSmVmZiBzdGlsbCBnb3Qgc29tZSAoU0NQKSBwcm9ibGVtcyBldmVuIGFmdGVyIHRoZXNlIGZpeGVzOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDUvMDM0Mi5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDUvMDM0Mi5odG1sCiAKIERhbmllbCBTdGVuYmVyZyAoMjYgTWF5IDIwMDgpCi0tIEJ1ZyByZXBvcnQgIzE5NzMzNTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NzMzNTIpIGlkZW50aWZpZWQKKy0gQnVnIHJlcG9ydCAjMTk3MzM1MiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NzMzNTIpIGlkZW50aWZpZWQKICAgaG93IHRoZSBIVFRQIHJlZGlyZWN0IGZvbGxvd2luZyBjb2RlIGRpZG4ndCBwcm9wZXJseSBmb2xsb3cgdG8gYSBuZXcgVVJMIGlmCiAgIHRoZSBuZXcgdXJsIHdhcyBidXQgYSBxdWVyeSBzdHJpbmcgc3VjaCBhcyAiTG9jYXRpb246ID9tb289Zm9vIi4gVGVzdCBjYXNlCiAgIDEwMzEgd2FzIGFkZGVkIHRvIHZlcmlmeSB0aGlzIGZpeC4KQEAgLTM0ODYsNyArMzQ4Niw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoNyBNYXkgMjAwOCkKIC0gTGlhbSBIZWFseSBmaWxlZCB0aGUgZGViaWFuIGJ1ZyByZXBvcnQgIzQ4MDA0NAotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ4MDA0NCkgaWRlbnRpZnlpbmcgYQorICAoaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz00ODAwNDQpIGlkZW50aWZ5aW5nIGEKICAgc2VnZmF1bHQgd2hlbiB1c2luZyBrcmI1IGZ0cCwgYnV0IHRoZSBrcmI0IGNvZGUgaGFkIHRoZSBzYW1lIHByb2JsZW0uCiAKIFlhbmcgVHNlICg3IE1heSAyMDA4KQpAQCAtMzQ5OSw3ICszNDk5LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgzIE1heSAyMDA4KQogLSBCZW4gVmFuIEhvZiBmaWxlZCBidWcgcmVwb3J0ICMxOTQ1MjQwOiAibGliY3VybCBzb21ldGltZXMgc2VuZHMgYm9keSB0d2ljZQotICB3aGVuIHVzaW5nIENVUkxfQVVUSF9BTlkiIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTQ1MjQwKS4KKyAgd2hlbiB1c2luZyBDVVJMX0FVVEhfQU5ZIiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NDUyNDApLgogICBUaGUgcHJvYmxlbSB3YXMgdGhhdCB3aGVuIGxpYmN1cmwgcmV3b3VuZCBhIHN0cmVhbSBtZWFudCBmb3IgdXBsb2FkIHdoZW4gaXQKICAgd291bGQgcHJlcGFyZSBmb3IgYSBzZWNvbmQgcmVxdWVzdCwgaXQgY291bGQgYWNjaWRlbnRhbGx5IGNvbnRpbnVlIHRoZQogICBzZW5kaW5nIG9mIHRoZSByZXdvdW5kIGRhdGEgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW5zdGVhZCBvZiBvbiB0aGUgc2Vjb25kLgpAQCAtMzUxMCw3ICszNTEwLDcgQEAKICAgc2luY2UgbGliY3VybCB1c2VkIGdldHByb3RvYnluYW1lKCkgYW5kIHRoYXQgaXNuJ3QgdGhyZWFkLXNhZmUuIFdlIG5vdwogICBzd2l0Y2hlZCB0byB1c2UgSVBQUk9UT19UQ1AgdW5jb25kaXRpb25hbGx5LCBidXQgcGVyaGFwcyB0aGUgcHJvcGVyIGZpeCBpcwogICB0byBkZXRlY3QgdGhlIHRocmVhZC1zYWZlIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB1c2UgdGhhdC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA1LzAwMTEuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA1LzAwMTEuaHRtbAogCiBEYW5pZWwgU3RlbmJlcmcgKDEgTWF5IDIwMDgpCiAtIEJhcnQgV2hpdGVsZXkgcHJvdmlkZWQgYSBwYXRjaCB0aGF0IG1hZGUgbGliY3VybCB3b3JrIHByb3Blcmx5IHdoZW4gYW4gYXBwCkBAIC0zNTM0LDkgKzM1MzQsOSBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDI4IEFwciAyMDA4KQogLSBOb3JiZXJ0IEZyZXNlIGZpbGVkIGJ1ZyByZXBvcnQgIzE5NTE1ODg6ICJQcm9ibGVtIHdpdGggY3VybGZ0cGZzIGFuZAotICBsaWJjdXJsIiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk1MTU4OCkgd2hpY2ggc2VlbXMgdG8gYmUgYW4KKyAgbGliY3VybCIgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTUxNTg4KSB3aGljaCBzZWVtcyB0byBiZSBhbgogICBpZGVudGljYWwgcmVwb3J0IHRvIHdoYXQgRGVuaXMgR29sb3ZhbiByZXBvcnRlZCBpbgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDEwOC5odG1sIFRoZSBGVFAgY29kZSBkaWRuJ3QgcmVzZXQgdGhlCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDEwOC5odG1sIFRoZSBGVFAgY29kZSBkaWRuJ3QgcmVzZXQgdGhlCiAgIHVzZXIvcGFzc3dvcmQgcG9pbnRlcnMgcHJvcGVybHkgZXZlbiB0aG91Z2ggdGhlcmUgbWlnaHQndmUgYmVlbiBhIG5ldwogICBzdHJ1Y3QvY2Nvbm5lY3Rpb24gZ2V0dGluZyB1c2VkLgogCkBAIC0zNTQ0LDggKzM1NDQsOCBAQAogLSBSZXZlcnRlZCBiYWNrIHRvIHVzZSBhdXRvbWFrZSAxLjkuNiBpbiB0aGUgbmV4dCByZWxlYXNlIChmcm9tIGF1dG9tYWtlCiAgIDEuMTAuMSkgc2luY2UgaXQgKnN0aWxsKiBzdWZmZXJzIGZyb20gU29sYXJpcy1yZWxhdGVkIGJ1Z3MuIE91ciBwcmV2aW91cwogICBhdXRvbWFrZSAxLjEwIHByb2JsZW0gd2FzIHJlcG9ydGVkIGluIGJ1ZyAjMTcwMTM2MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwMTM2MCkgYW5kIHRoaXMgcmVjZW50IHByb2JsZW0gd2FzCi0gIGJ1ZyAjMTk0NDgyNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0NDgyNSkuIEkgaGF2ZSBub3QKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzAxMzYwKSBhbmQgdGhpcyByZWNlbnQgcHJvYmxlbSB3YXMKKyAgYnVnICMxOTQ0ODI1IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0NDgyNSkuIEkgaGF2ZSBub3QKICAgcGVyc29uYWxseSBhcHByb2FjaGVkIHRoZSBhdXRvbWFrZSB0ZWFtIGFib3V0IGVpdGhlciBvbmUgb2YgdGhlc2UgYnV0IEkKICAgZmlndXJlIHdlIG5lZWQgYSBTb2xhcmlzIDEwIGd1eSB0byBkbyBpdCEKIApAQCAtMzU2OSw3ICszNTY5LDcgQEAKIAogTWljaGFsIE1hcmVrICgxNCBBcHIgMjAwOCkKIC0gYWxsb3cgZGlzYWJsaW5nIHRoZSB0eXBlY2hlY2tlciBieSBkZWZpbmluZyBDVVJMX0RJU0FCTEVfVFlQRUNIRUNLLCBhcwotICBkaXNjdXNzZWQgaW4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA0LzAyOTEuaHRtbAorICBkaXNjdXNzZWQgaW4gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wNC8wMjkxLmh0bWwKIAogRGFuaWVsIFN0ZW5iZXJnICgxNCBBcHIgMjAwOCkKIC0gU3RlZmFuIEtyYXVzZSByZXBvcnRlZCBhIGNhc2Ugd2hlcmUgdGhlIE9wZW5TU0wgaGFuZHNoYWtlIHBoYXNlIHdhc24ndApAQCAtMzU4MCw3ICszNTgwLDcgQEAKICAgcmV0dXJuIGNvZGUgaW4gdGhlIE5lZ290aWF0ZSBjb2RlLgogCiAtIFNhbmRvciBGZWxkaSByZXBvcnRlZCBidWcgIzE5NDIwMjIKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NDIwMjIpIHBvaW50aW5nIG91dCBhIG1pc3Rha2UgaW4gdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0MjAyMikgcG9pbnRpbmcgb3V0IGEgbWlzdGFrZSBpbiB0aGUKICAgbGliL01ha2VmaWxlLnZjWzY4XSBtYWtlZmlsZXMnIHJlbGVhc2Utc3NsLWRsbCB0YXJnZXQuCiAKIC0gQnJvY2sgTm9sYW5kIHJlcG9ydGVkIHRoYXQgY3VybCBiZWhhdmVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGljaCBvcmRlcgpAQCAtMzcwOCw3ICszNzA4LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgxMSBNYXIgMjAwOCkKIC0gRG1pdHJ5IFBvcG92IGZpbGVkIGJ1ZyByZXBvcnQgIzE5MTEwNjkKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5MTEwNjkpIHRoYXQgaWRlbnRpZmllZCBhIHJhY2UKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTExMDY5KSB0aGF0IGlkZW50aWZpZWQgYSByYWNlCiAgIGNvbmRpdGlvbiBpbiB0aGUgbmFtZSByZXNvbHZlciBjb2RlIHdoZW4gdGhlIEROUyBjYWNoZSBpcyBzaGFyZWQgYmV0d2VlbgogICBtdWx0aXBsZSBlYXN5IGhhbmRsZXMsIGVhY2ggcnVubmluZyBpbiBzaW11bHRhbmVvdXMgdGhyZWFkcyB0aGF0IGNvdWxkIGNhdXNlCiAgIGNyYXNoZXMuCkBAIC0zNzIwLDggKzM3MjAsOCBAQAogCiBNaWNoYWwgTWFyZWsgKDExIE1hciAyMDA4KQogLSBBZGRlZCBhIHR5cGUgY2hlY2tpbmcgbWFjcm8gZm9yIGN1cmxfZWFzeV9zZXRvcHQoKSwgbmVlZHMgZ2NjLTQuMyBhbmQgb25seQotICB3b3JrcyBpbiBDIG1vZGUgYXRtIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDI2Ny5odG1sICwKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTAyLzAyOTIuaHRtbCApCisgIHdvcmtzIGluIEMgbW9kZSBhdG0gKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDI2Ny5odG1sICwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wMi8wMjkyLmh0bWwgKQogCiBEYW5pZWwgRmFuZHJpY2ggKDEwIE1hciAyMDA4KQogLSBBZGRlZCB0ZXN0cyA2MTgtNjIxIHRvIHRlc3QgU0ZUUC9TQ1AgdHJhbnNmZXJzIG9mIG1vcmUgdGhhbiBvbmUgZmlsZQpAQCAtMzc2OCw3ICszNzY4LDcgQEAKIAogRGFuaWVsIFMgKDIzIEZlYiAyMDA4KQogLSBTYW0gTGlzdG9wYWQgcHJvdmlkZWQgYSBwYXRjaCBpbiBmZWF0dXJlLXJlcXVlc3QgIzE5MDAwMTQKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTkwMDAxNCB0aGF0IG1ha2VzIGxpYmN1cmwgKGJ1aWx0IHRvCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xOTAwMDE0IHRoYXQgbWFrZXMgbGliY3VybCAoYnVpbHQgdG8KICAgdXNlIE9wZW5TU0wpIHN1cHBvcnQgYSBmdWxsIGNoYWluIG9mIGNlcnRpZmljYXRlcyBpbiBhIGdpdmVuIFBLQ1MxMgogICBjZXJ0aWZpY2F0ZS4KIApAQCAtMzc4MCw3ICszNzgwLDcgQEAKIC0gWm1leSBQZXRyb2ZmIGZvdW5kIGEgY3Jhc2ggd2hlbiBsaWJjdXJsIGFjY2Vzc2VkIGEgTlVMTCBwb2ludGVyLCB3aGljaAogICBoYXBwZW5lZCBpZiB5b3Ugc2V0IHRoZSBjb25uZWN0aW9uIGNhY2hlIHNpemUgdG8gMSBhbmQgZm9yIGV4YW1wbGUgZmFpbGVkIHRvCiAgIGxvZ2luIHRvIGFuIEZUUCBzaXRlLiBCdWcgcmVwb3J0ICMxODk2Njk4Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODk2Njk4KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4OTY2OTgpCiAKIERhbmllbCBTICgyMCBGZWIgMjAwOCkKIC0gRml4ZWQgdGVzdCBjYXNlIDQwNSB0byBub3QgZmFpbCB3aGVuIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBHbnVUTFMKQEAgLTM4MTEsNyArMzgxMSw3IEBACiBEYW5pZWwgUyAoMTggRmViIDIwMDgpCiAtIFdlJ3JlIG5vIGxvbmdlciBwcm92aWRpbmcgYSB2ZXJ5IG9sZCBjYS1idW5kbGUgaW4gdGhlIGN1cmwgdGFyYmFsbC4gWW91IGNhbgogICBnZXQgYSBmcmVzaCBvbmUgZG93bmxvYWRlZCBhbmQgY3JlYXRlZCB3aXRoICdtYWtlIGNhLWJ1bmRsZScgb3IgeW91IGNhbiBnZXQKLSAgb25lIGZyb20gaGVyZSA9PiBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwgaWYgeW91IHdhbnQgYSBmcmVzaAorICBvbmUgZnJvbSBoZXJlID0+IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwgaWYgeW91IHdhbnQgYSBmcmVzaAogICBuZXcgb25lIGV4dHJhY3RlZCBmcm9tIE1vemlsbGEncyByZWNlbnQgbGlzdCBvZiBjYSBjZXJ0cy4KIAogICBUaGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtY2EtYnVuZGxlIG5vdyBsZXRzIHlvdSBzcGVjaWZ5IHdoYXQgZmlsZSB0byB1c2UKQEAgLTM4NDYsNyArMzg0Niw3IEBACiAgIHByb2JsZW1zIGJ1dCBub3cgdGhleSBzaG91bGQgYmUgZml4ZWQuCiAKIFlhbmcgVHNlICgxMCBGZWIgMjAwOCkKLS0gQnVnIHJlcG9ydCAjMTg4ODkzMiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4ODkzMikgcG9pbnRzIG91dAorLSBCdWcgcmVwb3J0ICMxODg4OTMyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4ODkzMikgcG9pbnRzIG91dAogICBhbmQgcHJvdmlkZXMgdGVzdCBwcm9ncmFtIHRoYXQgZGVtb25zdHJhdGVzIHRoYXQgbGliY3VybCBtaWdodCBub3Qgc2V0IGVycm9yCiAgIGRlc2NyaXB0aW9uIG1lc3NhZ2UgZm9yIGVycm9yIENVUkxFX0NPVUxETlRfUkVTT0xWRV9IT1NUIGZvciBXaW5kb3dzIHRocmVhZGVkCiAgIG5hbWUgcmVzb2x2ZXIgYnVpbGRzLiBGaXhlZCBub3cuCkBAIC0zODU3LDcgKzM4NTcsNyBAQAogCiBEYW5pZWwgUyAoOCBGZWIgMjAwOCkKIC0gTWlrZSBIb21tZXkgZmlsZWQgYW5kIGZpeGVkIGJ1ZyByZXBvcnQgIzE4ODk4NTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4ODk4NTYpOiBXaGVuIHVzaW5nIHRoZSBnbnV0bHMgc3NsCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4OTg1Nik6IFdoZW4gdXNpbmcgdGhlIGdudXRscyBzc2wKICAgbGF5ZXIsIGNsZWFuaW5nLXVwIGFuZCByZWluaXRpYWxpemluZyBjdXJsIGVuZHMgdXAgd2l0aCBodHRwcyByZXF1ZXN0cwogICBmYWlsaW5nIHdpdGggIkFTTjEgcGFyc2VyOiBFbGVtZW50IHdhcyBub3QgZm91bmQiIGVycm9ycy4gT2J2aW91c2x5IGEKICAgcmVncmVzc2lvbiBhZGRlZCBpbiA3LjE2LjMuCkBAIC0zODk2LDcgKzM4OTYsNyBAQAogRGFuaWVsIFMgKDMxIEphbiAyMDA4KQogLSBOaWtsYXMgQW5nZWJyYW5kIG1hZGUgdGhlIGNvb2tpZSBzdXBwb3J0IGluIGxpYmN1cmwgcHJvcGVybHkgZGVhbCB3aXRoIHRoZQogICAiSHR0cE9ubHkiIGZlYXR1cmUgaW50cm9kdWNlZCBieSBNaWNyb3NvZnQgYW5kIGFwcGFyZW50bHkgYWxzbyBzdXBwb3J0ZWQgYnkKLSAgRmlyZWZveDogaHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzMzA0Ni5hc3B4IC4gSHR0cE9ubHkKKyAgRmlyZWZveDogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzMzA0Ni5hc3B4IC4gSHR0cE9ubHkKICAgaXMgbm93IHN1cHBvcnRlZCB3aGVuIHJlY2VpdmVkIGZyb20gc2VydmVycyBpbiBIVFRQIGhlYWRlcnMsIHdoZW4gd3JpdHRlbiB0bwogICBjb29raWUgamFycyBhbmQgd2hlbiByZWFkIGZyb20gZXhpc3RpbmcgY29va2llIGphcnMuCiAKQEAgLTM5MjMsNyArMzkyMyw3IEBACiAKIERhbmllbCBTICgyNiBKYW4gMjAwOCkKIC0gS2V2aW4gUmVlZCBmaWxlZCBidWcgcmVwb3J0ICMxODc5Mzc1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODc5Mzc1KSB3aGljaCBkZXNjcmliZXMgaG93IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODc5Mzc1KSB3aGljaCBkZXNjcmliZXMgaG93IGxpYmN1cmwKICAgZ290IGxvc3QgaW4gdGhpcyBzY2VuYXJpbzogcHJveHkgdHVubmVsIChvciBIVFRQUyBvdmVyIHByb3h5KSwgYXNrIHRvIGRvIGFueQogICBwcm94eSBhdXRoZW50aWNhdGlvbiBhbmQgdGhlIHByb3h5IHJlcGxpZXMgd2l0aCBhbiBhdXRoIChsaWtlIE5UTE0pIGFuZCB0aGVuCiAgIGNsb3NlcyB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGF0IGluaXRpYWwgaW5mb3JtYXRpb25hbCByZXNwb25zZS4KQEAgLTM5ODYsNyArMzk4Niw3IEBACiAKIERhbmllbCBTICgxNCBKYW4gMjAwOCkKIC0gSm9lIE1hbGlja2kgZmlsZWQgYnVnIHJlcG9ydCAjMTg3MTI2OQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg3MTI2OSkgYW5kIHdlIGNvdWxkIGZpeCBoaXMgaGFuZy0KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODcxMjY5KSBhbmQgd2UgY291bGQgZml4IGhpcyBoYW5nLQogICBwcm9ibGVtIHRoYXQgb2NjdXJyZWQgd2hlbiBkb2luZyBhIGxhcmdlIEhUVFAgUE9TVCByZXF1ZXN0IHdpdGggdGhlCiAgIHJlc3BvbnNlLWJvZHkgcmVhZCBmcm9tIGEgY2FsbGJhY2suCiAKQEAgLTQwMzAsNyArNDAzMCw3IEBACiAgIGRvaW5nIG11bHRpLXN0YWdlIEhUVFAgYXV0aCB3aXRoIFBPU1QvUFVULgogCiAtIE5pa2l0aW5za2l0IERtaXRyaXkgZmlsZWQgYnVnIHJlcG9ydCAjMTg2ODI1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg2ODI1NSkgd2l0aCBhIHBhdGNoLiBJdCBpZGVudGlmaWVzCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg2ODI1NSkgd2l0aCBhIHBhdGNoLiBJdCBpZGVudGlmaWVzCiAgIGFuZCBmaXhlcyBhIHByb2JsZW0gd2l0aCBwYXJzaW5nIFdXVy1BdXRoZW50aWNhdGU6IGhlYWRlcnMgd2l0aCBhZGRpdGlvbmFsCiAgIHNwYWNlcyBpbiB0aGUgbGluZSB0aGF0IHRoZSBwYXJzZXIgd2Fzbid0IHdyaXR0ZW4gdG8gZGVhbCB3aXRoLgogCkBAIC00MDQxLDcgKzQwNDEsNyBAQAogCiBEYW5pZWwgUyAoNiBKYW4gMjAwOCkKIC0gSmVmZiBKb2huc29uIGZpbGVkIGJ1ZyByZXBvcnQgIzE4NjMxNzEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NjMxNzEpIHdoZXJlIGhlIHBvaW50ZWQgb3V0IHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODYzMTcxKSB3aGVyZSBoZSBwb2ludGVkIG91dCB0aGF0CiAgIGxpYmN1cmwncyBkYXRlIHBhcnNlciBkaWRuJ3QgYWNjZXB0IGEgKzEzMDAgdGltZSB6b25lIHdoaWNoIGFjdHVhbGx5IGlzIHVzZWQKICAgZmFpcmx5IG9mdGVuIChsaWtlIE5ldyBaZWFsYW5kJ3MgRGFpbGlnaHQgU2F2aW5ncyBUaW1lKSwgc28gSSBtb2RpZmllZCB0aGUKICAgcGFyc2VyIHRvIG5vdyBhY2NlcHQgdXAgdG8gYW5kIGluY2x1ZGluZyAtMTQwMCB0byArMTQwMC4KQEAgLTQwOTcsMTMgKzQwOTcsMTMgQEAKIAogRGFuaWVsIFMgKDI3IERlYyAyMDA3KQogLSBEbWl0cnkgS3Vyb2Noa2luIG1lbnRpb25lZCBhIGZsYXcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0xMi8wMjUyLmh0bWwpIGluIGRldGVjdF9wcm94eSgpIHdoaWNoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTEyLzAyNTIuaHRtbCkgaW4gZGV0ZWN0X3Byb3h5KCkgd2hpY2gKICAgZmFpbGVkIHRvIHNldCB0aGUgYml0cy5wcm94eSB2YXJpYWJsZSBwcm9wZXJseSB3aGVuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlCiAgIHRvbGQgbGliY3VybCB0byB1c2UgYSBodHRwIHByb3h5LgogCiBEYW5pZWwgUyAoMjYgRGVjIDIwMDcpCiAtIEluIGFuIGF0dGVtcHQgdG8gcmVwZWF0IHRoZSBwcm9ibGVtIGluIGJ1ZyByZXBvcnQgIzE4NTA3MzAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NTA3MzApIEkgd3JvdGUgdXAgdGVzdCBjYXNlIDU1Mi4gVGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg1MDczMCkgSSB3cm90ZSB1cCB0ZXN0IGNhc2UgNTUyLiBUaGUKICAgdGVzdCBpcyBkb2luZyBhIDcwSyBQT1NUIHdpdGggYSByZWFkIGNhbGxiYWNrIGFuZCBhbiBpb2N0bCBjYWxsYmFjayBvdmVyIGEKICAgcHJveHkgcmVxdWlyaW5nIERpZ2VzdCBhdXRoLiBUaGUgdGVzdCBjYXNlIGNvZGUgaXMgbW9yZSBvciBsZXNzIGlkZW50aWNhbCB0bwogICB0aGUgdGVzdCByZWNpcGUgY29kZSBwcm92aWRlZCBieSBTcGFjZW4gSmFzc2V0ICh3aG8gc3VibWl0dGVkIHRoZSBidWcKQEAgLTQxMTEsNyArNDExMSw3IEBACiAKIERhbmllbCBTICgyNSBEZWMgMjAwNykKIC0gR2FyeSBNYXh3ZWxsIGZpbGVkIGJ1ZyByZXBvcnQgIzE4NTY2MjgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NTY2MjgpIGFuZCBwcm92aWRlZCBhIGZpeCBmb3IgdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg1NjYyOCkgYW5kIHByb3ZpZGVkIGEgZml4IGZvciB0aGUKICAgKHNtYWxsKSBtZW1vcnkgbGVhayBpbiB0aGUgU1NMIHNlc3Npb24gSUQgY2FjaGluZyBjb2RlLiBJdCBoYXBwZW5lZCB3aGVuIGEKICAgcHJldmlvdXMgZW50cnkgaW4gdGhlIGNhY2hlIHdhcyByZS11c2VkLgogCkBAIC00MTI1LDcgKzQxMjUsNyBAQAogICBpZiBubyBidWlsZCB0YXJnZXQgaGFzIGJlZW4gZGVmaW5lZCB3ZSB3aWxsIHRhcmdldCBXaW5YUCB3aGVuIGJ1aWxkaW5nCiAgIGN1cmwvbGliY3VybCB3aXRoIE1TVkMgOS4wIChWUzIwMDgpLgogCi0tIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA3LTEyLzAwMzkuaHRtbCkgcmVwb3J0ZWQgYW5kIGZpeGVkCistIChodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwNy0xMi8wMDM5Lmh0bWwpIHJlcG9ydGVkIGFuZCBmaXhlZAogICBhIGZpbGUgdHJ1bmNhdGlvbiBwcm9ibGVtIG9uIFdpbmRvd3MgYnVpbGQgdGFyZ2V0cyB0cmlnZ2VyZWQgd2hlbiByZXRyeWluZwogICBhIGRvd25sb2FkIHdpdGggY3VybC4KIApAQCAtNDEzNiw3ICs0MTM2LDcgQEAKIAogRGFuaWVsIFMgKDEzIERlYyAyMDA3KQogLSBEYXZpZCBXcmlnaHQgZmlsZWQgYnVnIHJlcG9ydCAjMTg0OTc2NAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0OTc2NCkgd2l0aCBhbiBpbmNsdWRlZCBmaXguIEhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0OTc2NCkgd2l0aCBhbiBpbmNsdWRlZCBmaXguIEhlCiAgIGlkZW50aWZpZWQgYSBwcm9ibGVtIGZvciByZS11c2VkIGNvbm5lY3Rpb25zIHRoYXQgcHJldmlvdXNseSBoYWQgc2VudAogICBFeHBlY3Q6IDEwMC1jb250aW51ZSBhbmQgaW4gc29tZSBzaXR1YXRpb25zIHRoZSBzdWJzZXF1ZW50IFBPU1QgKHRoYXQgZGlkbid0CiAgIHVzZSBFeHBlY3Q6KSBzdGlsbCBoYWQgdGhlIGludGVybmFsIGZsYWcgc2V0IGZvciBpdHMgdXNlLiBEYXZpZCdzIGZpeCAodGhhdApAQCAtNDE0OSw3ICs0MTQ5LDcgQEAKIAogRGFuaWVsIFMgKDkgRGVjIDIwMDcpCiAtIEFuZHJldyBNb2lzZSBmaWxlZCBidWcgcmVwb3J0ICMxODQ3NTAxCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODQ3NTAxKSBhbmQgcG9pbnRlZCBvdXQgYSBtZW1jcHkoKQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NDc1MDEpIGFuZCBwb2ludGVkIG91dCBhIG1lbWNweSgpCiAgIHRoYXQgc2hvdWxkIGJlIG1lbW1vdmUoKSBpbiB0aGUgY29udmVydF9saW5lZW5kcygpIGZ1bmN0aW9uLgogCiBEYW5pZWwgUyAoOCBEZWMgMjAwNykKQEAgLTQxNzgsNyArNDE3OCw3IEBACiAKIERhbmllbCBTICgzIERlYyAyMDA3KQogLSBSYXkgUGVrb3dza2kgZmlsZWQgYnVnIHJlcG9ydCAjMTg0MjAyOQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0MjAyOSkgaW4gd2hpY2ggaGUgaWRlbnRpZmllZCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0MjAyOSkgaW4gd2hpY2ggaGUgaWRlbnRpZmllZCBhCiAgIHByb2JsZW0gd2l0aCBTU0wgc2Vzc2lvbiBjYWNoaW5nIHRoYXQgcHJldmVudCBpdCBmcm9tIHdvcmtpbmcsIGFuZCBwcm92aWRlZAogICB0aGUgYXNzb2NpYXRlZCBmaXghCiAKQEAgLTQyNjMsNyArNDI2Myw3IEBACiAgIGNhbGxiYWNrIHdhcyB1c2VkLCBhcyBpdCBjb3VsZCB3cm9uZ2x5IHBhc3Mgb24gYSBiYWQgc2l6ZSBmb3IgdGhlIG91dGdvaW5nCiAgIEhUVFAgaGVhZGVyLiBUaGUgYmFkIHNpemUgd291bGQgYmUgYSB2ZXJ5IGxhcmdlIHZhbHVlIGFzIGl0IHdhcyBhIHdyYXBwZWQKICAgc2l6ZV90IGNvbnRlbnQuIFRoaXMgaGFwcGVuZWQgd2hlbiB0aGUgd2hvbGUgSFRUUCByZXF1ZXN0IGZhaWxlZCB0byBnZXQgc2VudAotICBpbiBvbmUgc2luZ2xlIHNlbmQuICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDE2NS5odG1sCisgIGluIG9uZSBzaW5nbGUgc2VuZC4gIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDE2NS5odG1sCiAKIERhbmllbCBTICgxNSBOb3YgMjAwNykKIC0gRml4ZWQgeWV0IGFub3RoZXIgcmVtYWluaW5nIHByb2JsZW0gd2l0aCBkb2luZyBTRlRQIGRpcmVjdG9yeSBsaXN0aW5ncyBvbiBhCkBAIC00MjgyLDcgKzQyODIsNyBAQAogICBwZXJzaXN0ZW50IGNvbm5lY3Rpb24uIE1lbnRpb25lZCBieSBJbW1hbnVlbCBHcmVnb2lyZSBvbiB0aGUgbWFpbGluZyBsaXN0LgogCiBEYW5pZWwgUyAoMTIgTm92IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE4MzA2MzcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MzA2MzcpLCB3aGljaCB3YXMKKy0gQnVnIHJlcG9ydCAjMTgzMDYzNyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MzA2MzcpLCB3aGljaCB3YXMKICAgZm9yd2FyZGVkIGZyb20gdGhlIEdlbnRvbyBidWcgdHJhY2tlciBieSBEYW5pZWwgQmxhY2sgYW5kIHdhcyBvcmlnaW5hbGx5CiAgIHN1Ym1pdHRlZCBieSBSb2JpbiBKb2huc29uLCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwgd291bGQgZG8gYmFkIG1lbW9yeQogICByZWZlcmVuY2VzIHdoZW4gaXQgZmFpbGVkIGFuZCBiYWlsZWQgb3V0IGJlZm9yZSB0aGUgaGFuZGxlciB0aGluZyB3YXMKQEAgLTQyOTEsMTIgKzQyOTEsMTIgQEAKICAgbWVtYmVyLgogCiBZYW5nIFRzZSAoMTAgTm92IDIwMDcpCi0tIFZpa3JhbSBTYXhlbmEgKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0xMS8wMDk2Lmh0bWwpIHBvaW50ZWQgb3V0CistIFZpa3JhbSBTYXhlbmEgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDA5Ni5odG1sKSBwb2ludGVkIG91dAogICB0aGF0IHRoZSBwb2xsZmQgc3RydWN0IHdhcyBiZWluZyBtdWx0aSBkZWZpbmVkIHdoZW4gdXNpbmcgVlMyMDA4LiBUaGlzIGlzCiAgIG5vdyBmaXhlZCBpbiAvY3VybC9saWIvc2VsZWN0LmgKIAogRGFuaWVsIFMgKDggTm92IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE4MjM0ODcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MjM0ODcpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTgyMzQ4NyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MjM0ODcpIHBvaW50ZWQKICAgb3V0IHRoYXQgU0ZUUCByZXF1ZXN0cyBkaWRuJ3QgdXNlIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMuIE5laXRoZXIgZGlkIFNDUAogICBvbmVzLiAgSSBnYXZlIHRoZSBTU0ggY29kZSBhIGdvb2QgYmVhdGluZyBhbmQgbm93IGJvdGggU0NQIGFuZCBTRlRQIHNob3VsZAogICB1c2UgcGVyc2lzdGVudCBjb25uZWN0aW9ucyBmaW5lLiBJIGFsc28gZGlkIGEgYnVuY2ggb2YgaW5kZW50IGNoYW5nZXMgYXMKQEAgLTQzMDgsNyArNDMwOCw3IEBACiAgIGlzIG5vdyBhcyBsaXR0bGUgYXMgb25lIHBlciBzZWdtZW50LgogCiBZYW5nIFRzZSAoNiBOb3YgMjAwNykKLS0gQnVnIHJlcG9ydCAjMTgyNDg5NCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTgyNDg5NCkgcG9pbnRlZAorLSBCdWcgcmVwb3J0ICMxODI0ODk0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTgyNDg5NCkgcG9pbnRlZAogICBvdXQgYSBwcm9ibGVtIGluIGN1cmwuaCB3aGVuIGJ1aWxkaW5nIEMrKyBhcHBzIHdpdGggTVNWQy4gVG8gZml4IGl0LCB0aGUKICAgaW5jbHVzaW9uIG9mIGhlYWRlciBmaWxlcyBpbiBjdXJsLmggaXMgbW92ZWQgb3V0c2lkZSBvZiB0aGUgQysrIGV4dGVybiAiQyIKICAgbGlua2FnZSBibG9jay4KQEAgLTQzODMsNyArNDM4Myw3IEBACiAgIGFjY29yZGluZ2x5LgogCiBEYW5pZWwgUyAoMjMgT2N0b2JlciAyMDA3KQotLSBCdWcgcmVwb3J0ICMxODEyMTkwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODEyMTkwKSBwb2ludHMgb3V0CistIEJ1ZyByZXBvcnQgIzE4MTIxOTAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODEyMTkwKSBwb2ludHMgb3V0CiAgIHRoYXQgbGliY3VybCB0cmllZCB0byByZS11c2UgY29ubmVjdGlvbnMgYSBiaXQgdG9vIG11Y2ggd2hlbiB1c2luZyBub24tU1NMCiAgIHByb3RvY29scyB0dW5uZWxlZCBvdmVyIGEgSFRUUCBwcm94eS4KIApAQCAtNDQwNSw3ICs0NDA1LDcgQEAKICAgQSBsb25nLXRlcm0gZ29hbCBpcyBvZiBjb3Vyc2UgdG8gc29tZWhvdyBnZXQgcmlkIG9mIGhvdyB0aGUgcmVxZGF0YSBzdHJ1Y3QKICAgaXMgdXNlZCwgYXMgaXQgaXMgdG9vIGVycm9yLXByb25lLgogCi0tIEJ1ZyByZXBvcnQgIzE4MTU1MzAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MTU1MzApIHBvaW50cyBvdXQKKy0gQnVnIHJlcG9ydCAjMTgxNTUzMCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MTU1MzApIHBvaW50cyBvdXQKICAgdGhhdCBzcGVjaWZ5aW5nIGEgcHJveHkgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIGRpZG4ndCB3b3JrICh1bmxlc3MgaXQgYWxzbwogICBjb250YWluZWQgYSBwb3J0IG51bWJlcikuCiAKQEAgLTQ1NzQsNyArNDU3NCw3IEBACiBWZXJzaW9uIDcuMTcuMCAoMTMgU2VwdGVtYmVyIDIwMDcpCiAKIERhbmllbCBTICgxMiBTZXB0ZW1iZXIgMjAwNykKLS0gQnVnIHJlcG9ydCAjMTc5MjY0OSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc5MjY0OSkgcG9pbnRlZAorLSBCdWcgcmVwb3J0ICMxNzkyNjQ5IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc5MjY0OSkgcG9pbnRlZAogICBvdXQgYSBwcm9ibGVtIHdpdGggZG9pbmcgYW4gZW1wdHkgdXBsb2FkIG92ZXIgRlRQIG9uIGEgcmUtdXNlZCBjb25uZWN0aW9uLgogICBJIGFkZGVkIHRlc3QgY2FzZSA1NDEgdG8gcmVwcm9kdWNlIGl0IGFuZCB0byB2ZXJpZnkgdGhlIGZpeC4KIApAQCAtNDU5Myw3ICs0NTkzLDcgQEAKIAogRGFuaWVsIFMgKDUgU2VwdGVtYmVyIDIwMDcpCiAtIENvbnRpbnVlZCB0aGUgd29yayBvbiBhIGZpeCBmb3IgIzE3NzkwNTQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpLiBNeSBwcmV2aW91cyBmaXggZnJvbSBBdWd1c3QKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KS4gTXkgcHJldmlvdXMgZml4IGZyb20gQXVndXN0CiAgIDI0IHdhcyBub3QgY29tcGxldGUgKGVpdGhlcikgYnV0IGNvdWxkIGFjY2lkZW50YWxseSAiZm9yZ2V0IiBwYXJ0cyBvZiBhCiAgIHNlcnZlciByZXNwb25zZSB3aGljaCBsZWQgdG8gZmF1bHR5IHNlcnZlciByZXNwb25zZSB0aW1lLW91dCBlcnJvcnMuCiAKQEAgLTQ2NjgsNyArNDY2OCw3IEBACiAtIFNvbWUgbWlub3IgaW50ZXJuYWwgdHlwZSBhbmQgY29uc3QgY2hhbmdlcyBiYXNlZCBvbiBhIHNwbGludCBzY2FuLgogCiBEYW5pZWwgUyAoMjQgQXVndXN0IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE3NzkwNTQgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTc3OTA1NCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpIHBvaW50ZWQKICAgb3V0IHRoYXQgbGliY3VybCBkaWRuJ3QgZGVhbCB3aXRoIGxhcmdlIHJlc3BvbnNlcyBmcm9tIHNlcnZlciBjb21tYW5kcywgd2hlbgogICB0aGUgc2luZ2xlIHJlc3BvbnNlIHdhcyBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIGJ1dCBvZiBhIHRvdGFsIHNpemUgb2YKICAgMTZLQiBvciBtb3JlLiBEYW4gRmFuZHJpY2ggaW1wcm92ZWQgdGhlIGZ0cCB0ZXN0IHNjcmlwdCBhbmQgcHJvdmlkZWQgdGVzdApAQCAtNDY4MCwxMiArNDY4MCwxMiBAQAogICBTZWUgcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwLgogCiBEYW5pZWwgUyAoMjMgQXVndXN0IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE3Nzk3NTEgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3Nzk3NTEpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTc3OTc1MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3Nzk3NTEpIHBvaW50ZWQKICAgb3V0IHRoYXQgZG9pbmcgZmlyc3QgYSBmaWxlOi8vIHVwbG9hZCBhbmQgdGhlbiBhbiBGVFAgdXBsb2FkIGNyYXNoZWQgbGliY3VybAogICBvciBhdCBiZXN0IGNhdXNlZCBmdXJpb3VzIHZhbGdyaW5kIGNvbXBsYWludHMuIEZpeGVkIG5vdyEKIAogRGFuaWVsIFMgKDIyIEF1Z3VzdCAyMDA3KQotLSBCdWcgcmVwb3J0ICMxNzc5MDU0IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KSBwb2ludGVkCistIEJ1ZyByZXBvcnQgIzE3NzkwNTQgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KSBwb2ludGVkCiAgIG91dCB0aGF0IGxpYmN1cmwgZGlkbid0IGRlYWwgd2l0aCB2ZXJ5IGxvbmcgKD4xNkspIEZUUCBzZXJ2ZXIgcmVzcG9uc2UgbGluZXMKICAgcHJvcGVybHkuIFN0YXJ0aW5nIG5vdywgbGliY3VybCB3aWxsIGNob3AgdGhlbSBvZmYgKHRodXMgdGhlIGNsaWVudCBhcHAgd2lsbAogICBub3QgZ2V0IHRoZSBmdWxsIGxpbmUpIGJ1dCBzdXJ2aXZlIGFuZCBkZWFsIHdpdGggdGhlbSBmaW5lIG90aGVyd2lzZS4gVGVzdApAQCAtNDY5OSwxMiArNDY5OSwxMiBAQAogCiBEYW5pZWwgUyAoMTggQXVndXN0IDIwMDcpCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gZmlsZWQgYnVnIHJlcG9ydCAjMTc3NjIzMgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzMikgYWJvdXQgbGliY3VybCBjYWxsaW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzMikgYWJvdXQgbGliY3VybCBjYWxsaW5nCiAgIEN1cmxfY2xpZW50X3dyaXRlKCksIHBhc3Npbmcgb24gYSBjb25zdCBzdHJpbmcgdGhhdCB0aGUgY2FsbGVyIG1heSBub3QKICAgbW9kaWZ5IGFuZCB5ZXQgaXQgZG9lcyAob24gc29tZSBwbGF0Zm9ybXMpLgogCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gZmlsZWQgYnVnIHJlcG9ydCAjMTc3NjIzNQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzNSkgYWJvdXQgZnRwIHJlcXVlc3RzIHdpdGggTk9CT0RZCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzNSkgYWJvdXQgZnRwIHJlcXVlc3RzIHdpdGggTk9CT0RZCiAgIG9uIGEgZGlyZWN0b3J5IHdvdWxkIGRvIGEgIlNJWkUgKG51bGwpIiByZXF1ZXN0LiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGVzdAogICBjYXNlIDEwMDAgd2FzIGFkZGVkIHRvIHZlcmlmeS4KIApAQCAtNDc0Niw3ICs0NzQ2LDcgQEAKIAogRGFuaWVsIFMgKDIgQXVndXN0IDIwMDcpCiAtIFNjb3R0IENhbnRvciBmaWxlZCBidWcgcmVwb3J0ICMxNzY2MzIwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzY2MzIwKSBwb2ludGluZyBvdXQgdGhhdCB0aGUgbGliY3VybAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NjYzMjApIHBvaW50aW5nIG91dCB0aGF0IHRoZSBsaWJjdXJsCiAgIGNvZGUgYWNjZXNzZWQgdHdvIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIChDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VUIGFuZAogICBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFKSBhcyBpbnRzIGV2ZW4gdGhvdWdoIHRoZXkncmUgZG9jdW1lbnRlZCB0byBiZQogICBwYXNzZWQgaW4gYXMgbG9uZ3MsIGFuZCB0aGF0IG1ha2VzIGEgZGlmZmVyZW5jZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlcy4KQEAgLTQ3ODIsNyArNDc4Miw3IEBACiAKIERhbmllbCBTICgyOSBKdWx5IDIwMDcpCiAtIEpheWVzaCBBIFNoYWggZmlsZWQgYnVnIHJlcG9ydCAjMTc1OTU0MgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1OTU0MikgaWRlbnRpZnlpbmcgYSByYXRoZXIgc2VyaW91cworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NTk1NDIpIGlkZW50aWZ5aW5nIGEgcmF0aGVyIHNlcmlvdXMKICAgcHJvYmxlbSB3aXRoIEZUUFM6IGxpYmN1cmwgY2xvc2VkIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IGFuZCB0aGVuIGxhdGVyCiAgIGluIHRoZSBmbG93IGl0IHdvdWxkIGNhbGwgdGhlIFNTTCBsYXllciB0byBkbyBTU0wgc2h1dGRvd24gd2hpY2ggdGhlbiB3b3VsZAogICB1c2UgYSBzb2NrZXQgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGNsb3NlZCAtIHNvIGlmIHRoZSBhcHBsaWNhdGlvbiBoYWQgb3BlbmVkCkBAIC00ODQyLDcgKzQ4NDIsNyBAQAogLSBKYW1lcyBIb3VzbGV5IGZpeGVkIHRoZSBTRlRQIFBXRCBjb21tYW5kIHRvIHdvcmsuCiAKIC0gUmFsZiBTLiBFbmdlbHNjaGFsbCBmaWxlZCBidWcgcmVwb3J0ICMxNzU3MzI4Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzU3MzI4KSBhbmQgc3VibWl0dGVkIGEgcGF0Y2guIEl0CisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1NzMyOCkgYW5kIHN1Ym1pdHRlZCBhIHBhdGNoLiBJdAogICB0dXJucyBvdXQgd2UgYnJva2UgbG9naW4gdG8gRlRQIHNlcnZlcnMgdGhhdCBkb24ndCByZXF1aXJlIChub3IgdW5kZXJzdGFuZCkKICAgUEFTUyBhZnRlciB0aGUgVVNFUiBjb21tYW5kLiBUaGUgYnJlYWthZ2Ugd2FzIGRvbmUgYXMgcGFydCBvZiB0aGUga3JiNQogICBjb21taXQgc28gYSBrcmItdXNpbmcgcGVyc29uIG5lZWRzIHRvIHZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHZlcnNpb24gbm93CkBAIC00ODY0LDcgKzQ4NjQsNyBAQAogCiBEYW5pZWwgUyAoMTMgSnVseSAyMDA3KQogLSBDb2xpbiBIb2diZW4gZmlsZWQgYnVnIHJlcG9ydCAjMTc1MDI3NAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1MDI3NCkgYW5kIHN1Ym1pdHRlZCBhIHBhdGNoIGZvciB0aGUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzUwMjc0KSBhbmQgc3VibWl0dGVkIGEgcGF0Y2ggZm9yIHRoZQogICBjYXNlIHdoZXJlIGxpYmN1cmwgZGlkIGEgY29ubmVjdCBhdHRlbXB0IHRvIGEgbm9uLWxpc3RlbmluZyBwb3J0IGFuZCBkaWRuJ3QKICAgcHJvdmlkZSBhIGh1bWFuIHJlYWRhYmxlIGVycm9yIHN0cmluZyBiYWNrLgogCkBAIC00OTE0LDcgKzQ5MTQsNyBAQAogCiBEYW5pZWwgUyAoMTAgSnVseSAyMDA3KQogLSBLZWVzIENvb2sgbm90aWZpZWQgdXMgYWJvdXQgYSBzZWN1cml0eSBmbGF3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMDcwNzEwLmh0bWwpIGluIHdoaWNoIGxpYmN1cmwgZmFpbGVkIHRvCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDA3MDcxMC5odG1sKSBpbiB3aGljaCBsaWJjdXJsIGZhaWxlZCB0bwogICBwcm9wZXJseSByZWplY3Qgc29tZSBvdXRkYXRlZCBvciBub3QgeWV0IHZhbGlkIHNlcnZlciBjZXJ0aWZpY2F0ZXMgd2hlbgogICBidWlsdCB3aXRoIEdudVRMUy4gS2VlcyBhbHNvIHByb3ZpZGVkIHRoZSBwYXRjaC4KIApAQCAtNDk2MCw4ICs0OTYwLDggQEAKIFZlcnNpb24gNy4xNi4zICgyNSBKdW5lIDIwMDcpCiAKIERhbmllbCBTICgyMyBKdW5lIDIwMDcpCi0tIEFzIHJlcG9ydGVkIGJ5ICJUcm8iIGluIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMTYxLmh0bWwgYW5kCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMjM4Lmh0bWwsIGxpYmN1cmwgZGlkbid0IHByb3Blcmx5IGRvCistIEFzIHJlcG9ydGVkIGJ5ICJUcm8iIGluIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMDYvMDE2MS5odG1sIGFuZAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTA2LzAyMzguaHRtbCwgbGliY3VybCBkaWRuJ3QgcHJvcGVybHkgZG8KICAgbm8tYm9keSByZXF1ZXN0cyBvbiBGVFAgZmlsZXMgb24gcmUtdXNlZCBjb25uZWN0aW9ucyBwcm9wZXJseSwgb3IgYXQgbGVhc3QKICAgaXQgZGlkbid0IHByb3ZpZGUgdGhlIGluZm8gYmFjayBpbiB0aGUgaGVhZGVyIGNhbGxiYWNrIHByb3Blcmx5IGluIHRoZQogICBzdWJzZXF1ZW50IHJlcXVlc3RzLgpAQCAtNDk3MywxNCArNDk3MywxNCBAQAogCiBEYW5pZWwgUyAoMjAgSnVuZSAyMDA3KQogLSBBZGFtIFBpZ2dvdHQgZmlsZWQgYnVnIHJlcG9ydCAjMTc0MDI2MwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc0MDI2MykuIEFkYW0gZGlzY292ZXJlZCB0aGF0IHdoZW4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzQwMjYzKS4gQWRhbSBkaXNjb3ZlcmVkIHRoYXQgd2hlbgogICBnZXR0aW5nIGEgbGFyZ2UgYW1vdW50IG9mIFVSTHMgd2l0aCBjdXJsLCB0aGV5IHdlcmUgZmV0Y2hlZCBzbG93ZXIgYW5kCiAgIHNsb3dlci4uLiB3aGljaCB0dXJuZWQgb3V0IHRvIGJlIGJlY2F1c2UgdGhlIC0tbGliY3VybCBkYXRhIGNvbGxlY3Rpbmcgd2hpY2gKICAgd3JvbmdseSBhbHdheXMgd2FzIGVuYWJsZWQsIGJ1dCBubyBsb25nZXIgaXMuLi4KIAogRGFuaWVsIFMgKDE4IEp1bmUgMjAwNykKIC0gUm9ic29uIEJyYWdhIEFyYXVqbyBmaWxlZCBidWcgcmVwb3J0ICMxNzM5MTAwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzM5MTAwKSB0aGF0IG1lbnRpb25lZCB0aGF0IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzM5MTAwKSB0aGF0IG1lbnRpb25lZCB0aGF0IGxpYmN1cmwKICAgY291bGQgbm90IGFjdHVhbGx5IGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhIGdpdmVuIEZUUAogICBzZXJ2ZXIgaWYgdGhlIGxvZ2luIGRpcmVjdG9yeSBpc24ndCByb290LiBJIGZpeGVkIHRoZSBwcm9ibGVtIGFuZCBhZGRlZAogICB0aHJlZSB0ZXN0IGNhc2VzIChvbmUgaXMgZGlzYWJsZWQgZm9yIG5vdyBzaW5jZSBJIGlkZW50aWZpZWQgS05PV05fQlVHUyAjNDQsCkBAIC01MDE0LDkgKzUwMTQsOSBAQAogICB2ZXJ5IGltcG9ydGFudCkKIAogLSBEYXZlIFZhc2lsZXZza3kgZmlsZWQgYnVnIHJlcG9ydCAjMTczNjg3NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTczNjg3NSkgYWxtb3N0IHNpbXVsdGFub3Vlc2x5IGFzIERhbgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MzY4NzUpIGFsbW9zdCBzaW11bHRhbm91ZXNseSBhcyBEYW4KICAgRmFuZHJpY2ggbWVudGlvbmVkIGEgcmVsYXRlZCBidWlsZCBwcm9ibGVtIG9uIHRoZSBsaWJjdXJsIG1haWxpbmcgbGlzdDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTA2LzAxMzEuaHRtbC4gQm90aCBwcm9ibGVtcyBoYWQgdGhlIHNhbWUKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMTMxLmh0bWwuIEJvdGggcHJvYmxlbXMgaGFkIHRoZSBzYW1lCiAgIHJlYXNvbjogdGhlIGRlZmluaXRpb25zIG9mIHRoZSBQT0xMKiBkZWZpbmVzIGFuZCB0aGUgcG9sbGZkIHN0cnVjdCBpbiB0aGUKICAgbGliY3VybCBjb2RlIHdhcyBkZXBlbmRpbmcgb24gSEFWRV9QT0xMIGluc3RlYWQgb2YgSEFWRV9TWVNfUE9MTF9ILgogCkBAIC01MDI2LDcgKzUwMjYsNyBAQAogICBvbmVzLgogCiAtIFJpY2ggUmF1ZW56YWhuIGZpbGVkIGJ1ZyByZXBvcnQgIzE3MzMxMTkKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MzMxMTkpIGFuZCB3ZSBjb2xsYWJvcmF0ZWQgb24gdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTczMzExOSkgYW5kIHdlIGNvbGxhYm9yYXRlZCBvbiB0aGUKICAgZml4LiAgVGhlIHByb2JsZW0gaXMgdGhhdCBmb3IgNjRiaXQgSFBVWCBidWlsZHMsIHNldmVyYWwgc29ja2V0LXJlbGF0ZWQKICAgZnVuY3Rpb25zIHdvdWxkIHN0aWxsIGFzc3VtZSBpbnQgKDMyIGJpdCkgYXJndW1lbnRzIGFuZCBub3Qgc29ja2xlbl90ICg2NAogICBiaXQpIG9uZXMuCkBAIC01MDc5LDE2ICs1MDc5LDE2IEBACiAKIERhbmllbCBTICgyNSBNYXkgMjAwNykKIC0gUm9iIENyaXR0ZW5kZW4gZml4ZWQgYnVnICMxNzA1ODAyCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzA1ODAyKSwgd2hpY2ggd2FzIGZpbGVkIGJ5IERhbmllbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDU4MDIpLCB3aGljaCB3YXMgZmlsZWQgYnkgRGFuaWVsCiAgIEJsYWNrIGlkZW50aWZ5aW5nIHNldmVyYWwgRlRQLVNTTCB0ZXN0IGNhc2VzIGZhaWwgd2hlbiB3ZSBidWlsZCBsaWJjdXJsIHdpdGgKICAgTlNTIGZvciBUTFMvU1NMLiBMaXN0ZWQgYXMgIzQyIGluIEtOT1dOX0JVR1MuCiAKIERhbmllbCBTICgyNCBNYXkgMjAwNykKIC0gU29uZyBNYSBmaWxlZCBidWcgcmVwb3J0ICMxNzI0MDE2Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzI0MDE2KSBub3RpY2luZyB0aGF0IGRvd25sb2FkaW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcyNDAxNikgbm90aWNpbmcgdGhhdCBkb3dubG9hZGluZwogICBnbG9iLXJhbmdlcyBmb3IgVEZUUCB3YXMgYnJva2VuIGluIENWUy4gRml4ZWQgbm93LgogCi0tICdteXR4JyBpbiBidWcgcmVwb3J0ICMxNzIzMTk0IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzIzMTk0KQorLSAnbXl0eCcgaW4gYnVnIHJlcG9ydCAjMTcyMzE5NCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MjMxOTQpCiAgIHBvaW50ZWQgb3V0IHRoYXQgdGhlIHdhcm5mKCkgZnVuY3Rpb24gaW4gdGhlIGN1cmwgdG9vbCBkaWRuJ3QgcHJvcGVybHkgZGVhbAogICB3aXRoIHRoZSBjYXNlcyB3aGVuIGV4Y2Vzc2l2ZWx5IGxvbmcgd29yZHMgd2VyZSB1c2VkIGluIHRoZSBzdHJpbmcgdG8gY2hvcAogICB1cC4KQEAgLTUxMDEsMTQgKzUxMDEsMTQgQEAKIAogRGFuaWVsIFMgKDE4IE1heSAyMDA3KQogLSBGZW5nIFR1IHJlcG9ydGVkIHRoYXQgY3VybCAtdyBkaWQgd3Jvbmcgb24gVEZUUCB0cmFuc2ZlcnMgaW4gYnVnIHJlcG9ydAotICAjMTcxNTM5NCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcxNTM5NCksIGFuZCB0aGUKKyAgIzE3MTUzOTQgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzE1Mzk0KSwgYW5kIHRoZQogICB0cmFuc2Zlci1yZWxhdGVkIGluZm8gInZhcmlhYmxlcyIgd2VyZSBpbmRlZWQgb3ZlcndyaXR0ZW4gd2l0aCB6ZXJvZXMKICAgd3JvbmdseSBhbmQgaGF2ZSBub3cgYmVlbiBhZGp1c3RlZC4gVGhlIHVwbG9hZCBzaXplIHN0aWxsIGlzbid0IGFjY3VyYXRlLgogCiBEYW5pZWwgUyAoMTcgTWF5IDIwMDcpCiAtIEZlbmcgVHUgcG9pbnRlZCBvdXQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIHRoZSBURlRQIGNvbm5lY3QgdGltZW91dAogICBjb2RlIGZvciB0aW1lb3V0cyBsZXNzIHRoYW4gZml2ZSBzZWNvbmRzLCBhbmQgYWxzbyBwcm92aWRlZCBhIGZpeCBmb3IgaXQuCi0gIEJ1ZyByZXBvcnQgIzE3MTUzOTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MTUzOTIpCisgIEJ1ZyByZXBvcnQgIzE3MTUzOTIgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzE1MzkyKQogCiBEYW4gRiAoMTYgTWF5IDIwMDcpCiAtIEFkZGVkIHN1cHBvcnQgZm9yIGNvbXBpbGluZyB1bmRlciBNaW5peCAzLjEuMyB1c2luZyBBQ0suCkBAIC01MjE3LDEzICs1MjE3LDEzIEBACiAgIHRoZSBtYW4gcGFnZSBub3cuCiAKIC0gRGFuaWVsIEJsYWNrIGZpbGVkIGJ1ZyAjMTcwNTE3NwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwNTE3Nykgd2hlcmUgLS13aXRob3V0LXNzbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDUxNzcpIHdoZXJlIC0td2l0aG91dC1zc2wKICAgLS13aXRoLWdudXRsIG91dHB1dHMgYSB3YXJuaW5nIGFib3V0IFNTTCBub3QgYmVpbmcgZW5hYmxlZCBldmVuIHRob3VnaCBHbnVUTFMKICAgd2FzIGZvdW5kIGFuZCB1c2VkLgogCiBEYW5pZWwgUyAoMjEgQXByaWwgMjAwNykKIC0gRGFuaWVsIEJsYWNrIGZpbGVkIGJ1ZyAjMTcwNDY3NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwNDY3NSkgaWRlbnRpZnlpbmcgYSBkb3VibGUtZnJlZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDQ2NzUpIGlkZW50aWZ5aW5nIGEgZG91YmxlLWZyZWUKICAgcHJvYmxlbSBpbiB0aGUgU1NMLWRlYWxpbmcgbGF5ZXIsIHRlbGxpbmcgR251VExTIHRvIGZyZWUgTlVMTCBjcmVkZW50aWFscyBvbgogICBjbG9zZWRvd24gYWZ0ZXIgYSBmYWlsdXJlIGFuZCBhIGJhZCAjaWZkZWYgZm9yIE5TUyB3aGVuIGNsb3NpbmcgZG93biBTU0wuCiAKQEAgLTUyNzQsNyArNTI3NCw3IEBACiAtIFNvbmcgTWEgZm91bmQgYSBtZW1vcnkgbGVhayBpbiB0aGUgaWYyaXAgY29kZSBpZiB5b3UgcGFzcyBpbiBhbiBpbnRlcmZhY2UKICAgbmFtZSBsb25nZXIgdGhhbiB0aGUgbmFtZSBmaWVsZCBvZiB0aGUgaWZyZXEgc3RydWN0ICh0eXBpY2FsbHkgNiBieXRlcyksIGFzCiAgIHRoZW4gaXQgd291bGRuJ3QgY2xvc2UgdGhlIHVzZWQgZHVtbXkgc29ja2V0LiBCdWcgIzE2OTg5NzQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2OTg5NzQpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTY5ODk3NCkKIAogVmVyc2lvbiA3LjE2LjIgKDExIEFwcmlsIDIwMDcpCiAKQEAgLTU0MjksNyArNTQyOSw3IEBACiAKIC0gSnVzdGluIEZsZXRjaGVyIGZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIGN1cmwgdG9vbCB3aGVuIHRyeWluZyB0bwogICB1cGxvYWQgYSBmaWxlIGl0IGNvdWxkbid0IG9wZW4uIEJ1ZyAjMTY3NjU4MQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTY3NjU4MSkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjc2NTgxKQogCiBEYW4gRiAoOSBNYXJjaCAyMDA3KQogLSBVcGRhdGVkIHRoZSB0ZXN0IGhhcm5lc3MgdG8gY2hlY2sgZm9yIHByb3RvY29sIHN1cHBvcnQgYmVmb3JlIHJ1bm5pbmcgZWFjaApAQCAtNTUzOCw3ICs1NTM4LDcgQEAKIAogRGFuaWVsICgxMiBGZWJydWFyeSAyMDA3KQogLSBSb2IgQ3JpdHRlbmRlbiBhZGRlZCBzdXBwb3J0IGZvciBOU1MgKE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZSkgZm9yIHRoZQotICBTU0wvVExTIGxheWVyLiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvCisgIFNTTC9UTFMgbGF5ZXIuIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MKIAogICBUaGlzIGlzIHRoZSBmb3VydGggc3VwcG9ydGVkIGxpYnJhcnkgZm9yIFRMUy9TU0wgdGhhdCBsaWJjdXJsIHN1cHBvcnRzIQogCkBAIC01Njg0LDcgKzU2ODQsNyBAQAogCiBEYW5pZWwgKDIgSmFudWFyeSAyMDA3KQogLSBWaWN0b3IgU25lemhrbyBoZWxwZWQgdXMgZml4IGJ1ZyByZXBvcnQgIzE2MDM3MTIKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2MDM3MTIpIChrbm93biBidWcgIzM2KSAtLWxpbWl0LXJhdGUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjAzNzEyKSAoa25vd24gYnVnICMzNikgLS1saW1pdC1yYXRlCiAgIChDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFIGFuZCBDVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFKSBhcmUgYnJva2VuCiAgIG9uIFdpbmRvd3MgKHNpbmNlIDcuMTYuMCwgYnV0IHRoYXQncyB3aGVuIHRoZXkgd2VyZSBpbnRyb2R1Y2VkIGFzIHByZXZpb3VzCiAgIHRvIHRoYXQgdGhlIGxpbWl0aW5nIGxvZ2ljIHdhcyBtYWRlIGluIHRoZSBhcHBsaWNhdGlvbiBvbmx5IGFuZCBub3QgaW4gdGhlCkBAIC01Njk2LDcgKzU2OTYsNyBAQAogLSBNb2RpZmllZCBsaWJjdXJsLnBjLmluIHRvIHVzZSBMaWJzLnByaXZhdGUgZm9yIHRoZSBsaWJzIGxpYmN1cmwgaXRzZWxmIG5lZWRzCiAgIHRvIGdldCBidWlsdCBzdGF0aWMuIEl0IGhhcyBiZWVuIG1lbnRpb25lZCBiZWZvcmUgYW5kIHdhcyBhZ2FpbiBicm91Z2h0IHRvCiAgIG91ciBhdHRlbnRpb24gYnkgTmF0aGFuYWVsIE5lcm9kZSB3aG8gZmlsZWQgZGViaWFuIGJ1ZyByZXBvcnQgIzQwNTIyNgotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQwNTIyNikuCisgIChodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQwNTIyNikuCiAKIERhbmllbCAoMjkgRGVjZW1iZXIgMjAwNikKIC0gTWFrZSBjdXJsX2Vhc3lfZHVwaGFuZGxlKCkgc2V0IHRoZSBtYWdpYyBudW1iZXIgaW4gdGhlIG5ldyBoYW5kbGUuCkBAIC01NzE3LDcgKzU3MTcsNyBAQAogCiBEYW5pZWwgKDIxIERlY2VtYmVyIDIwMDYpCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gcmVwb3J0ZWQgYnVnICMxNjE4MzU5Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjE4MzU5KSBhbmQgc3Vic2VxdWVudGx5IHByb3ZpZGVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjE4MzU5KSBhbmQgc3Vic2VxdWVudGx5IHByb3ZpZGVkIGEKICAgcGF0Y2ggZm9yIGl0OiB3aGVuIGRvd25sb2FkaW5nIDIgemVybyBieXRlIGZpbGVzIGluIGEgcm93LCBjdXJsIDcuMTYuMAogICBlbnRlcnMgYW4gaW5maW5pdGUgbG9vcCwgd2hpbGUgY3VybCA3LjE2LjEtMjAwNjEyMTggZG9lcyBvbmUgYWRkaXRpb25hbAogICB1bm5lY2Vzc2FyeSByZXF1ZXN0LgpAQCAtNTc0NSw3ICs1NzQ1LDcgQEAKIAogRGFuaWVsICg2IERlY2VtYmVyIDIwMDYpCiAtIFNlYmFzdGllbiBXaWxsZW1pam5zIHJlcG9ydGVkIGJ1ZyAjMTYwMzcxMgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwMzcxMikgd2hpY2ggaXMgYWJvdXQgY29ubmVjdGlvbnMKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjAzNzEyKSB3aGljaCBpcyBhYm91dCBjb25uZWN0aW9ucwogICBnZXR0aW5nIGN1dCBvZmYgcHJlbWF0dXJlbHkgd2hlbiAtLWxpbWl0LXJhdGUgaXMgdXNlZC4gV2hpbGUgSSBmb3VuZCBubyBzdWNoCiAgIHByb2JsZW1zIGluIG15IHRlc3RzIG5vciBpbiBteSByZWFkaW5nIG9mIHRoZSBjb2RlLCBJIGZvdW5kIHRoYXQgdGhlCiAgIC0tbGltaXQtcmF0ZSBjb2RlIHdhcyBzZXZlcmx5IGZsYXdlZCAoc2luY2UgaXQgd2FzIG1vdmVkIGludG8gdGhlIGxpYiwgc2luY2UKQEAgLTU3NjYsNyArNTc2Niw3IEBACiAgIHRoZSBjb2RlLgogCiAtIEphcmVkIEx1bmRlbGwgZmlsZWQgYnVnIHJlcG9ydCAjMTYwNDk1NgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwNDk1Nikgd2hpY2ggaWRlbnRpZmllZCBzZXR0aW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwNDk1Nikgd2hpY2ggaWRlbnRpZmllZCBzZXR0aW5nCiAgIENVUkxPUFRfTUFYQ09OTkVDVFMgdG8gemVybyBjYXVzZWQgbGliY3VybCB0byBTSUdTRUdWLiBTdGFydGluZyBub3csIGxpYmN1cmwKICAgd2lsbCBhbHdheXMgaW50ZXJuYWxseSB1c2Ugbm8gbGVzcyB0aGFuIDEgZW50cnkgaW4gdGhlIGNvbm5lY3Rpb24gY2FjaGUuCiAKQEAgLTU3NzQsMTIgKzU3NzQsMTIgQEAKICAgdGhlIDcuMTYuMCByZWxlYXNlLgogCiAtIE1hcnRpbiBTa2lubmVyIGJyb3VnaHQgYmFjayBidWcgcmVwb3J0ICMxMjMwMTE4IHRvIGhhdW50IHVzIG9uY2UgYWdhaW4uCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KSBjdXJsX2dldGRhdGUoKSBkaWQgbm90IHdvcmsKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KSBjdXJsX2dldGRhdGUoKSBkaWQgbm90IHdvcmsKICAgcHJvcGVybHkgZm9yIGFsbCBpbnB1dCBkYXRlcyBvbiBXaW5kb3dzLiBJdCB3YXMgbW9zdGx5IHNlZW4gb24gc29tZSBUWiB0aW1lCiAgIHpvbmVzIHVzaW5nIERTVC4gTHVja2lseSwgTWFydGluIGFsc28gcHJvdmlkZWQgYSBmaXguCiAKIC0gQWxleGV5IFNpbWFrIGZpbGVkIGJ1ZyByZXBvcnQgIzE2MDA0NDcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2MDA0NDcpIGluIHdoaWNoIGhlIG5vdGVkIHRoYXQgYWN0aXZlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwMDQ0NykgaW4gd2hpY2ggaGUgbm90ZWQgdGhhdCBhY3RpdmUKICAgRlRQIGNvbm5lY3Rpb25zIGRvbid0IHdvcmsgd2l0aCB0aGUgbXVsdGkgaW50ZXJmYWNlLiBUaGUgcHJvYmxlbSBpcyBoZXJlCiAgIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBzdGF0ZSBtYWNoaW5lIGhhcyBhIHN0YXRlIGR1cmluZyB3aGljaCBpdCBjYW4gd2FpdAogICBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0byBjb25uZWN0LCBidXQgdGhlIGFjdGl2ZSBjb25uZWN0aW9uIGlzIG5vdCBkb25lIGluCkBAIC01ODI5LDcgKzU4MjksNyBAQAogLSBKYW1lcyBIb3VzbGV5IGRpZCBsb3RzIG9mIHdvcmsgYW5kIGludHJvZHVjZWQgU0ZUUCBkb3dubG9hZHMuCiAKIERhbmllbCAoMTMgTm92ZW1iZXIgMjAwNikKLS0gUm9uIGluIGJ1ZyAjMTU5NTM0OCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU5NTM0OCkgcG9pbnRlZAorLSBSb24gaW4gYnVnICMxNTk1MzQ4IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU5NTM0OCkgcG9pbnRlZAogICBvdXQgYSBzdGFjayBvdmVyd3JpdGUgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaXgpIG9uIDY0Yml0IFdpbmRvd3Mgd2hlbgogICBkZWFsaW5nIHdpdGggSFRUUCBjaHVua2VkIGVuY29kaW5nLgogCkBAIC01OTg3LDcgKzU5ODcsNyBAQAogICB2ZXJzaW9uIGluZm8gZm9yIHRoZSBsaWIuCiAKIERhbmllbCAoMjggU2VwdGVtYmVyIDIwMDYpCi0tIFJlcG9ydGVkIGluICMxNTYxNDcwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTYxNDcwKSwgbGliY3VybAorLSBSZXBvcnRlZCBpbiAjMTU2MTQ3MCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1NjE0NzApLCBsaWJjdXJsCiAgIHdvdWxkIGNyYXNoIGlmIGEgYmFkIGZ1bmN0aW9uIHNlcXVlbmNlIHdhcyB1c2VkIHdoZW4gc2h1dHRpbmcgZG93biBhZnRlcgogICB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIChpLmUgdXNpbmcgZWFzeV9jbGVhbnVwIGFmdGVyIG11bHRpX2NsZWFudXApIHNvCiAgIHByZWNhdXRpb25zIGhhdmUgYmVlbiBhZGRlZCB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBhbnkgbW9yZSAtIHRlc3QgY2FzZSA1MjkKQEAgLTYwMTQsNyArNjAxNCw3IEBACiAKIERhbmllbCAoMjEgU2VwdGVtYmVyIDIwMDYpCiAtIEFkZGVkIHRlc3QgY2FzZSA1MzEgaW4gYW4gYXR0ZW1wdCB0byByZXBlYXQgYnVnIHJlcG9ydCAjMTU2MTQ3MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU2MTQ3MCkgdGhhdCBpcyBzYWlkIHRvIGNyYXNoIHdoZW4gYW4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTYxNDcwKSB0aGF0IGlzIHNhaWQgdG8gY3Jhc2ggd2hlbiBhbgogICBGVFAgdXBsb2FkIGZhaWxzIHdpdGggdGhlIG11bHRpIGludGVyZmFjZS4gSXQgZGlkIG5vdCwgYnV0IEkgbWFkZSBhIGZhaWxlZAogICB1cGxvYWQgc3RpbGwgYXNzdW1lIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gdG8gYmUgZmluZS4KIApAQCAtNjA4MCw3ICs2MDgwLDcgQEAKICAgVGhpcyBpcyBhIG1ham9yIGNoYW5nZS4KIAogRGFuaWVsICg0IFNlcHRlbWJlciAyMDA2KQotLSBEbWl0cnkgUmVjaGtpbiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU1MTQxMikgcHJvdmlkZWQgYQorLSBEbWl0cnkgUmVjaGtpbiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1NTE0MTIpIHByb3ZpZGVkIGEKICAgcGF0Y2ggdGhhdCB3aGlsZSBub3QgZml4aW5nIHRoaW5ncyB2ZXJ5IG5pY2VseSwgaXQgZG9lcyBtYWtlIHRoZSBTT0NLUzUKICAgcHJveHkgY29ubmVjdGlvbiBzbGlnaHRseSBiZXR0ZXIgYXMgaXQgbm93IGFja25vd2xlZGdlcyB0aGUgdGltZW91dCBmb3IKICAgY29ubmVjdGlvbiBhbmQgaXQgbm8gbG9uZ2VyIHNlZ2ZhdWx0cyBpbiB0aGUgY2FzZSB3aGVuIFNPQ0tTIHJlcXVpcmVzCkBAIC02MTQ3LDEyICs2MTQ3LDEyIEBACiBEYW5pZWwgKDIgQXVndXN0IDIwMDYpCiAtIE1hcmsgTGVudGN6bmVyIGZpeGVkIGhvdyBsaWJjdXJsIHdhcyBub3QgcHJvcGVybHkgZG9pbmcgY2h1bmtlZCBlbmNvZGluZwogICBpZiB0aGUgaGVhZGVyICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIgd2FzIHNldCBieSB0aGUgYXBwbGljYXRpb24uCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1MzE4MzgKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1MzE4MzgKIAogRGFuaWVsICgxIEF1Z3VzdCAyMDA2KQogLSBNYWNpZWogS2FycGl1ayBmaXhlZCBhIGNyYXNoIHRoYXQgd291bGQgb2NjdXIgaWYgd2UgcGFzc2VkIEN1cmxfc3RyZXJyb3IoKQogICBhbiB1bmtub3duIGVycm9yIG51bWJlciBvbiBnbGliYyBzeXN0ZW1zLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTMyMjg5CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTMyMjg5CiAKIERhbmllbCAoMzEgSnVseSAyMDA2KQogLSAqQUxFUlQqIGN1cmxfbXVsdGlfc29ja2V0KCkgYW5kIGN1cmxfbXVsdGlfc29ja2V0X2FsbCgpIGdvdCBtb2RpZmllZApAQCAtNjI4Nyw3ICs2Mjg3LDcgQEAKICAgcm91dGUgb2Ygc2tpcHBpbmcgdGhlbSBmb3IgKi0qLWN5Z3dpbiouCiAKICAgVGhlIHRoaXJkIHBhdGNoIHJlcGxhY2VzIGFsbCB1c2VzIG9mIHRoZSBhbmNpZW50IGFuZCBvYnNvbGV0ZSBfX0NZR1dJTjMyX18KLSAgd2l0aCBfX0NZR1dJTl9fLiBSZWY6IDxodHRwOi8vY3lnd2luLmNvbS9tbC9jeWd3aW4vMjAwMy0wOS9tc2cwMTUyMC5odG1sPi4KKyAgd2l0aCBfX0NZR1dJTl9fLiBSZWY6IDxodHRwczovL2N5Z3dpbi5jb20vbWwvY3lnd2luLzIwMDMtMDkvbXNnMDE1MjAuaHRtbD4uCiAKIERhbmllbCAoNyBKdW5lIDIwMDYpCiAtIE1pa2FlbCBTZW5uZXJob2xtIHByb3ZpZGVkIGEgcGF0Y2ggdGhhdCBhZGRlZCBOVExNMiBzZXNzaW9uIHJlc3BvbnNlIHN1cHBvcnQKQEAgLTYzODQsNyArNjM4NCw3IEBACiAKIERhbmllbCAoNSBNYXkgMjAwNikKIC0gUm9sYW5kIEJsb20gZmlsZWQgYnVnIHJlcG9ydCAjMTQ4MTIxNwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ4MTIxNyksIHdpdGggZm9sbG93LXVwcyBieSBNaWNoZWxlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ4MTIxNyksIHdpdGggZm9sbG93LXVwcyBieSBNaWNoZWxlCiAgIEJpbmkgYW5kIERhdmlkIEJ5cm9uLiBsaWJjdXJsIHByZXZpb3VzbHkgd3JvbmdseSB1c2VkIEdldExhc3RFcnJvcigpIG9uCiAgIHdpbmRvd3MgdG8gZ2V0IGVycm9yIGRldGFpbHMgYWZ0ZXIgc29ja2V0LXJlbGF0ZWQgZnVuY3Rpb24gY2FsbHMsIHdoZW4gaXQKICAgcmVhbGx5IHNob3VsZCB1c2UgV1NBR2V0TGFzdEVycm9yKCkgaW5zdGVhZC4KQEAgLTYzOTUsNyArNjM5NSw3IEBACiAKIERhbmllbCAoNCBNYXkgMjAwNikKIC0gTWFyayBFaWNoaW4gc3VibWl0dGVkIGJ1ZyByZXBvcnQgIzE0ODA4MjEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0ODA4MjEpIEhlIGZvdW5kIGFuZCBpZGVudGlmaWVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDgwODIxKSBIZSBmb3VuZCBhbmQgaWRlbnRpZmllZCBhCiAgIHByb2JsZW0gd2l0aCBob3cgbGliY3VybCBkZWFsdCB3aXRoIEdudVRMUyBhbmQgYSBjYXNlIHdoZXJlIGdudXRscyByZXR1cm5lZAogICBHTlVUTFNfRV9BR0FJTiBpbmRpY2F0aW5nIGl0IHdvdWxkIGJsb2NrLiBJdCB3b3VsZCB0aGVuIHJldHVybiBhbiB1bmV4cGVjdGVkCiAgIHJldHVybiBjb2RlLCBtYWtpbmcgQ3VybF9zc2xfc2VuZCgpIGNvbmZ1c2UgdGhlIHVwcGVyIGxheWVyIC0gY2F1c2luZyByYW5kb20KQEAgLTY0NDUsNyArNjQ0NSw3IEBACiAgIGF0dGVtcHQgZnJvbSBBcHJpbCAxMC4KIAogRGFuaWVsICgxMSBBcHJpbCAyMDA2KQotLSAjMTQ2ODMzMCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ2ODMzMCkgcG9pbnRlZCBvdXQgYSBiYWQKKy0gIzE0NjgzMzAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDY4MzMwKSBwb2ludGVkIG91dCBhIGJhZAogICB0eXBlY2FzdCBpbiB0aGUgY3VybCB0b29sIGxlYWRpbmcgdG8gYSBjcmFzaCB3aXRoICg2NGJpdD8pIFZTMjAwNSAoYXQgbGVhc3QpCiAgIHNpbmNlIHRoZSBzdHJ1Y3QgdGltZXZhbCBmaWVsZCB0dl9zZWMgaXMgYW4gaW50IHdoaWxlIHRpbWVfdCBpcyA2NGJpdC4KIApAQCAtNjQ1NCw3ICs2NDU0LDcgQEAKICAgQ1VSTE9QVF9USU1FT1VULCB0aGUgX2xvbmdlcl8gdGltZSB3b3VsZCB3cm9uZ2x5IGJlIHVzZWQgZm9yIHRoZSBTU0wKICAgY29ubmVjdGlvbiB0aW1lLW91dCEKIAotLSBJIG1lcmdlZCBteSBoaXBlciBwYXRjaCAoaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2hpcGVyLykgaW50byB0aGUgbWFpbgorLSBJIG1lcmdlZCBteSBoaXBlciBwYXRjaCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9oaXBlci8pIGludG8gdGhlIG1haW4KICAgc291cmNlcy4gU2VlIHRoZSBsaWIvUkVBRE1FLm11bHRpX3NvY2tldCBmb3IgaW1wbGVtZW50YXRpb24gc3Rvcnkgd2l0aAogICBkZXRhaWxzLiBEb24ndCBleHBlY3QgaXQgdG8gd29yayBmdWxseSB5ZXQuIEkgZG9uJ3QgaW50ZW5kIHRvIGJsb3cgYW55CiAgIHdoaXN0bGVzIG9yIHJpbmcgYW55IGJlbGxzIGFib3V0IGl0IHVudGlsIEknbSBtb3JlIGNvbnZpbmNlZCBpdCB3b3JrcyBhdApAQCAtNjQ3MCw3ICs2NDcwLDcgQEAKIAogRGFuaWVsICg1IEFwcmlsIDIwMDYpCiAtIE1pY2hlbGUgQmluaSBtb2RpZmllZCB0aGUgTlRMTSBjb2RlIHRvIHdvcmsgZm9yIGhpcyAid2VpcmQgSUlTIGNhc2UiCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDYtMDIvMDE1NC5odG1sKSBieSBhZGRpbmcgdGhlIE5UTE0gaGFzaAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNi0wMi8wMTU0Lmh0bWwpIGJ5IGFkZGluZyB0aGUgTlRMTSBoYXNoCiAgIGZ1bmN0aW9uIGluIGFkZGl0aW9uIHRvIHRoZSBMTSBvbmUgYW5kIG1ha2luZyBzb21lIG90aGVyIGFkanVzdG1lbnRzIGluIHRoZQogICBvcmRlciB0aGUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBkYXRhIGJsb2NrIGFyZSBzZW50IGluIHRoZSBUeXBlLTIgcmVwbHkuCiAgIEluc3BpcmF0aW9uIGZvciB0aGlzIHdvcmsgd2FzIHRha2VuIGZyb20gdGhlIEZpcmVmb3ggTlRMTSBpbXBsZW1lbnRhdGlvbi4KQEAgLTY0ODAsNyArNjQ4MCw3IEBACiAgIHRoZSB0ZXN0IGNhc2VzIG5vdyBvbmx5IGNvbXBhcmUgcGFydHMgb2YgdGhhdCBjaHVuay4KIAogRGFuaWVsICgyOCBNYXJjaCAyMDA2KQotLSAjMTQ1MTkyOSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ1MTkyOSkgZGV0YWlsZWQgYSBidWcgdGhhdAorLSAjMTQ1MTkyOSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0NTE5MjkpIGRldGFpbGVkIGEgYnVnIHRoYXQKICAgb2NjdXJyZWQgd2hlbiBhc2tpbmcgbGliY3VybCB0byBmb2xsb3cgSFRUUCByZWRpcmVjdHMgYW5kIHRoZSBvcmlnaW5hbCBVUkwKICAgaGFkIG1vcmUgdGhhbiBvbmUgcXVlc3Rpb24gbWFyayAoPykuIEFkZGVkIHRlc3QgY2FzZSAyNzYgdG8gdmVyaWZ5LgogCkBAIC02NTg5LDcgKzY1ODksNyBAQAogCiBEYW5pZWwgKDIyIEZlYnJ1YXJ5IDIwMDYpCiAtIExvdHMgb2Ygd29yayBhbmQgYW5hbHlzaXMgYnkgInhieF9fXyIgaW4gYnVnICMxNDMxNzUwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDMxNzUwKSBoZWxwZWQgbWUgaWRlbnRpZnkgYW5kIGZpeCB0d28KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDMxNzUwKSBoZWxwZWQgbWUgaWRlbnRpZnkgYW5kIGZpeCB0d28KICAgZGlmZmVyZW50IGJ1dCByZWxhdGVkIGJ1Z3M6CiAKICAgMSkgUmVtb3ZpbmcgYW4gZWFzeSBoYW5kbGUgZnJvbSBhIG11bHRpIGhhbmRsZSBiZWZvcmUgdGhlIHRyYW5zZmVyIGlzIGRvbmUKQEAgLTY2NzksNyArNjY3OSw3IEBACiAgIChidWlsdCBJUHY0LW9ubHkpIGRpZG4ndCB3b3JrLgogCiBEYW5pZWwgKDE4IEphbnVhcnkgMjAwNikKLS0gQXMgcmVwb3J0ZWQgaW4gYnVnICMxNDA4NzQyIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDA4NzQyKSwKKy0gQXMgcmVwb3J0ZWQgaW4gYnVnICMxNDA4NzQyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQwODc0MiksCiAgIHRoZSBjb25maWd1cmUgc2NyaXB0IGNvbXBsYWluZWQgYWJvdXQgYSBtaXNzaW5nICJtaXNzaW5nIiBzY3JpcHQgaWYgeW91IHJhbgogICBjb25maWd1cmUgd2l0aGluIGEgcGF0aCB3aG9zZSBuYW1lIGluY2x1ZGVkIG9uZSBvciBtb3JlIHNwYWNlcy4gVGhpcyBpcyBkdWUKICAgdG8gYSBmbGF3IGluIGF1dG9tYWtlICgxLjkuNiBhbmQgZWFybGllcikuIEkndmUgbm93IHdvcmtlZCBhcm91bmQgaXQgYnkKQEAgLTY3OTksNyArNjc5OSw3IEBACiBWZXJzaW9uIDcuMTUuMSAoNyBEZWNlbWJlciAyMDA1KQogCiBEYW5pZWwgKDYgRGVjZW1iZXIgMjAwNSkKLS0gRnVsbCB0ZXh0IGhlcmU6IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwNTEyMDcuaHRtbCBQb2ludGVkIG91dCBieQorLSBGdWxsIHRleHQgaGVyZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwNTEyMDcuaHRtbCBQb2ludGVkIG91dCBieQogICBTdGVmYW4gRXNzZXIuCiAKICAgVlVMTkVSQUJJTElUWQpAQCAtNjg1MSwxMCArNjg1MSwxMCBAQAogRGFuaWVsICgxNCBOb3ZlbWJlciAyMDA1KQogLSBRdWFnbWlyZSByZXBvcnRlZCB0aGF0IGhlIG5lZWRlZCB0byByYWlzZSBhIE5UTE0gYnVmZmVyIGZvciBTU1BJIHRvIHdvcmsKICAgcHJvcGVybHkgZm9yIGEgY2FzZSwgYW5kIHNvIHdlIGRpZC4gV2UgcmFpc2VkIGl0IGV2ZW4gZm9yIG5vbi1TU1BJIGJ1aWxkcwotICBidXQgaXQgc2hvdWxkIG5vdCBkbyBhbnkgaGFybS4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM1NjcxNQorICBidXQgaXQgc2hvdWxkIG5vdCBkbyBhbnkgaGFybS4gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzNTY3MTUKIAogLSBKYW4gS3VuZGVyJ3MgZGViaWFuIGJ1ZyByZXBvcnQKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MCBpZGVudGlmaWVkIGEgd2VpcmQKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMzg2ODAgaWRlbnRpZmllZCBhIHdlaXJkCiAgIGVycm9yIG1lc3NhZ2UgZm9yIHdoZW4geW91IHRyeSB0byB1cGxvYWQgYSBmaWxlIGFuZCB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeQogICBkb2Vzbid0IGV4aXN0IG9uIHRoZSB0YXJnZXQgc2VydmVyLgogCkBAIC02ODY0LDcgKzY4NjQsNyBAQAogRGFuaWVsICgxMyBOb3ZlbWJlciAyMDA1KQogLSBEZWJpYW4gYnVnIHJlcG9ydCAzMzg2ODEgYnkgSmFuIEt1bmRlcjogbWFrZSBjdXJsIGJldHRlciBkZXRlY3QgYW5kIHJlcG9ydAogICBiYWQgbGltaXQtcmF0ZSB1bml0czoKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MSBOb3cgY3VybCB3aWxsIHJldHVybgorICBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MSBOb3cgY3VybCB3aWxsIHJldHVybgogICBlcnJvciBpZiBhIGJhZCB1bml0IGlzIHVzZWQuCiAKIC0gVGhhbmtzIHRvIHRoaXMgbmljZSBzdW1tYXJ5IG9mIHBvbGwoKSBpbXBsZW1lbnRhdGlvbnM6CkBAIC02ODc1LDEyICs2ODc1LDEyIEBACiAKIERhbmllbCAoMTIgTm92ZW1iZXIgMjAwNSkKIC0gRXVnZW5lIEtvdGx5YXJvdiBmb3VuZCBvdXQgdGhhdCBjeWd3aW4ncyBwb2xsKCkgZnVuY3Rpb24gaXNuJ3QgZG9pbmcgdGhpbmdzCi0gIHJpZ2h0OiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA1LTExLzAwNDUuaHRtbCBzbyB3ZSBub3cgZGlzYWJsZQorICByaWdodDogaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDUtMTEvMDA0NS5odG1sIHNvIHdlIG5vdyBkaXNhYmxlCiAgIHBvbGwoKSBhbmQgdXNlIHNlbGVjdCgpIG9uIGN5Z3dpbiB0b28gKHdlIGFscmVhZHkgZG8gdGhlIHNhbWUgY2hvaWNlIG9uIE1hYwogICBPUyBYKQogCiAtIERpbWEgQmFyc2t5IHBhdGNoZWQgcHJvYmxlbSAjMTM0ODkzMDogdGhlIEdudVRMUyBjb2RlIGNvbXBsZXRlbHkgaWdub3JlZAotICBjbGllbnQgY2VydGlmaWNhdGVzISAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM0ODkzMCkuCisgIGNsaWVudCBjZXJ0aWZpY2F0ZXMhIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM0ODkzMCkuCiAKIERhbmllbCAoMTAgTm92ZW1iZXIgMjAwNSkKIC0gRGF2aWQgTGFuZyBmaXhlZCBJUHY2IHN1cHBvcnQgZm9yIFRGVFAhCkBAIC02OTMxLDE0ICs2OTMxLDE0IEBACiAKIERhbmllbCAoMjcgT2N0b2JlciAyMDA1KQogLSBOaXMgSm9yZ2Vuc2VuIGZpbGVkIGJ1ZyByZXBvcnQgIzEzMzg2NDgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzMzg2NDgpIHdoaWNoIHJlYWxseSBpcyBtb3JlIG9mIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM4NjQ4KSB3aGljaCByZWFsbHkgaXMgbW9yZSBvZiBhCiAgIGZlYXR1cmUgcmVxdWVzdCwgYnV0IGFueXdheS4gSXQgcG9pbnRlZCBvdXQgdGhhdCAtLW1heC1yZWRpcnMgZGlkIG5vdCBhbGxvdwogICBpdCB0byBiZSBzZXQgdG8gMCwgd2hpY2ggdGhlbiB3b3VsZCByZXR1cm4gYW4gZXJyb3IgY29kZSBvbiB0aGUgZmlyc3QKICAgTG9jYXRpb246IGZvdW5kLiBCYXNlZCBvbiBOaXMnIHBhdGNoLCBub3cgbGliY3VybCBzdXBwb3J0cyBDVVJMT1BUX01BWFJFRElSUwogICBzZXQgdG8gMCwgb3IgLTEgZm9yIGluZmluaXR5LiBBZGRlZCB0ZXN0IGNhc2UgMjc0IHRvIHZlcmlmeS4KIAogLSB0b21taW5rW2F0XXBvc3QucGwgcmVwb3J0ZWQgaW4gYnVnIHJlcG9ydCAjMTMzNzcyMwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzNzcyMykgdGhhdCBjdXJsIGNvdWxkIG5vdCB1cGxvYWQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM3NzIzKSB0aGF0IGN1cmwgY291bGQgbm90IHVwbG9hZAogICBiaW5hcnkgZGF0YSBmcm9tIHN0ZGluIG9uIFdpbmRvd3MgaWYgdGhlIGRhdGEgY29udGFpbmVkIGNvbnRyb2wtWiAoaGV4IDFhKQogICBzaW5jZSB0aGF0IGlzIHRyZWF0ZWQgYXMgZW5kLW9mLWZpbGUgd2hlbiByZWFkIGluIHRleHQgbW9kZS4gR2lzbGUgVmFuZW0KICAgcG9pbnRlZCBvdXQgdGhlIGZpeCwgYW5kIEkgbWFkZSBib3RoIC1UIGFuZCAtLWRhdGEtYmluYXJ5IHRha2UgYWR2YW50YWdlIG9mCkBAIC02OTUyLDcgKzY5NTIsNyBAQAogCiBEYW5pZWwgKDI1IE9jdG9iZXIgMjAwNSkKIC0gQW1vbCBQYXR0ZWthciByZXBvcnRlZCBhIGJ1ZyB3aXRoIGdyZWF0IGRldGFpbCBhbmQgYSBmaW5lIGV4YW1wbGUgaW4gYnVnCi0gICMxMzI2MzA2IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2MzA2KS4gV2hlbiB1c2luZyB0aGUgbXVsdGkKKyAgIzEzMjYzMDYgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2MzA2KS4gV2hlbiB1c2luZyB0aGUgbXVsdGkKICAgaW50ZXJmYWNlIGFuZCBjb25uZWN0aW5nIHRvIGEgaG9zdCB3aXRoIG11bHRpcGxlIElQIGFkZHJlc3NlcywgYW5kIG9uZSBvZgogICB0aGUgYWRkcmVzc2VzIGZhaWxzIHRvIGNvbm5lY3QgKHRoZSBzZXJ2ZXIgbXVzdCBleGlzdCBhbmQgcmVzcG9uZCwganVzdCBub3QKICAgYWNjZXB0IGNvbm5lY3Rpb25zKSBsaWJjdXJsIGxlYWtzIGEgc29ja2V0IGRlc2NyaXB0b3IuIFRoYW5rcyB0byB0aGUgZmluZQpAQCAtNjk2MCw3ICs2OTYwLDcgQEAKIAogRGFuaWVsICgyMiBPY3RvYmVyIDIwMDUpCiAtIERpbWEgQmFyc2t5IHJlcG9ydGVkIGEgcHJvYmxlbSB3aXRoIEdudVRMUy1lbmFibGVkIGxpYmN1cmwgaW4gYnVnIHJlcG9ydAotICAjMTMzNDMzOCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzNDMzOCkuIFdoZW4gcmVhZGluZyBhbiBTU0wKKyAgIzEzMzQzMzggKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM0MzM4KS4gV2hlbiByZWFkaW5nIGFuIFNTTAogICBzdHJlYW0gZnJvbSBhIHNlcnZlciBhbmQgdGhlIHNlcnZlciByZXF1ZXN0cyBhICJyZWhhbmRzaGFrZSIsIHRoZSBjdXJyZW50CiAgIGNvZGUgc2ltcGx5IHJldHVybnMgdGhpcyBhcyBhbiBlcnJvci4gSSBoYXZlIG5vIGdvb2Qgd2F5IHRvIHRlc3QgdGhpcywgYnV0CiAgIEkndmUgYWRkZWQgYSBjcnVkZSBhdHRlbXB0IG9mIGRlYWxpbmcgd2l0aCB0aGlzIHNpdHVhdGlvbiBzbGlnaHRseSBiZXR0ZXIgLQpAQCAtNjk3MiwxMSArNjk3MiwxMSBAQAogRGFuaWVsICgyMSBPY3RvYmVyIDIwMDUpCiAtICJPZmVyIiByZXBvcnRlZCBhIHByb2JsZW0gd2hlbiBsaWJjdXJsIHJlLXVzZWQgYSBjb25uZWN0aW9uIGFuZCBmYWlsZWQgdG8gZG8KICAgaXQsIGl0IGNvdWxkIHRoZW4gYWNjaWRlbnRhbGx5IGFjdHVhbGx5IGNyYXNoLiBQcmVzdW1hYmx5LCB0aGlzIGNvbmNlcm5zIEZUUAotICBjb25uZWN0aW9ucy4gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzMzAzMTAKKyAgY29ubmVjdGlvbnMuICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzMDMxMAogCiAtIFRlbXByaW11cyBpbXByb3ZlZCB0aGUgTVNWQyBtYWtlZmlsZSBzbyB0aGF0IHRoZSBzdGF0aWMgZGVidWcgU1NMIGxpYnMgYXJlCiAgIGxpbmtlZCB0byB0aGUgZXhlY3V0YWJsZSBhbmQgbm90IHRvIHRoZSBsaWJjdXJsZC5saWIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMyNjY3NgorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMyNjY3NgogCiAtIEJyYWRmb3JkIEJydWNlIG1hZGUgdGhlIHdpbmRvd3MgcmVzb2x2ZXIgY29kZSBwcm9wZXJseSByZXR1cm4KICAgQ1VSTEVfQ09VTEROVF9SRVNPTFZFX1BST1hZIGFuZCBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVCBvbiByZXNvbHZpbmcKQEAgLTY5OTEsNyArNjk5MSw3IEBACiAtIFRlbXByaW11cyBpbXByb3ZlZCB0aGUgTVNWQyBtYWtlZmlsZTogIm1ha2VzIGEgYnVpbGQgb3B0aW9uIGF2YWlsYWJsZSBzbyBpZgogICB5b3Ugc2V0IHJ0bGliY2ZnPXN0YXRpYyBmb3IgdGhlIG1ha2UsIHRoZW4gaXQgd291bGQgYnVpbGQgd2l0aCAvTVQuIFRoZQogICBkZWZhdWx0IGJlaGF2aW91ciBpcyAvTUQgKHRoZSBvcmlnaW5hbCkuIgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2NjY1CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2NjY1CiAKIERhbmllbCAoMTQgT2N0b2JlciAyMDA1KQogLSBSZXZlcnRlZCB0aGUgTElCQ1VSTF9WRVJTSU9OX05VTSBjaGFuZ2UgZnJvbSBPY3RvYmVyIDYuIEFzIERhdmUgRHJpYmluCkBAIC03MDEzLDcgKzcwMTMsNyBAQAogICAgICAgYXBwcm9wcmlhdGUgSFRUUCAzMHggcmVzcG9uc2UgY29kZSkgYW5kIHRoZSBuZXcgVVJMIGNvbnRhaW5zIGEgVVJMIHdpdGgKICAgICAgIGEgdXNlciBuYW1lIGFuZCBkb21haW4gbmFtZSB0aGF0IHRvZ2V0aGVyIGFyZSBsb25nZXIgdGhhbiAxOTIgYnl0ZXMKIAotICBTZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NlY3VyaXR5Lmh0bWwgZm9yIGZ1cnRoZXIgZGV0YWlscyBhbmQgdXBkYXRlcworICBTZWUgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zZWN1cml0eS5odG1sIGZvciBmdXJ0aGVyIGRldGFpbHMgYW5kIHVwZGF0ZXMKIAogRGFuaWVsICg1IE9jdG9iZXIgMjAwNSkKIC0gRGFycnlsIEhvdXNlIHJlcG9ydGVkIGEgcHJvYmxlbSB3aXRoIHVzaW5nIC16IHRvIGRvd25sb2FkIGZpbGVzIGZyb20gRlRQLgpAQCAtNzAyOSw3ICs3MDI5LDcgQEAKICAgdGhlIE1FU1QgYW5kIENFU1QgdGltZSB6b25lcy4KIAogRGFuaWVsICgyNyBTZXB0ZW1iZXIgMjAwNSkKLS0gRGF2aWQgWWFuIGZpbGVkIGJ1ZyAjMTI5OTE4MSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTI5OTE4MSkKKy0gRGF2aWQgWWFuIGZpbGVkIGJ1ZyAjMTI5OTE4MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyOTkxODEpCiAgIHRoYXQgaWRlbnRpZmllZCBhIHNpbGx5IHByb2JsZW0gd2l0aCBDb250ZW50LVJhbmdlOiBoZWFkZXJzIHdpdGggdGhlICdieXRlcycKICAga2V5d29yZCB3cml0dGVuIGluIGEgZGlmZmVyZW50IGNhc2UgdGhhbiBhbGwgbG93ZXJjYXNlISBJdCB3b3VsZCBjYXVzZSBhCiAgIHNlZ2ZhdWx0IQpAQCAtNzA0MCwxNSArNzA0MCwxNSBAQAogCiBEYW5pZWwgKDIxIFNlcHRlbWJlciAyMDA1KQogLSBGaXhlZCAiY3V0IG9mZiIgc2VudGVuY2UgaW4gdGhlIGxpYmN1cmwtdHV0b3JpYWwgbWFuIHBhZ2U6Ci0gIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMDUKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMDUKIAogLSBDbGFyaWZpZWQgaW4gdGhlIGN1cmxfZWFzeV9zZXRvcHQgbWFuIHBhZ2Ugd2hhdCB0aGUgZGVmYXVsdAogICBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gYW5kIENVUkxPUFRfV1JJVEVEQVRBIG1lYW46Ci0gIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMTEKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMTEKIAogLSBDbGFyaWZpZWQgaW4gdGhlIGN1cmxfZWFzeV9zZXRvcHQgbWFuIHBhZ2UgdGhhdCBDVVJMT1BUX0VSUk9SQlVGRkVSCiAgIHNvbWV0aW1lcyBkb2Vzbid0IGZpbGwgaW4gdGhlIGJ1ZmZlciBldmVuIHRob3VnaCBpdCBpcyBzdXBwb3NlZCB0bzoKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyOTMxMworICBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyOTMxMwogCiAtIFdoZW4gQ1VSTEVfVVJMX01BTEZPUk1BVCBpcyByZXR1cm5lZCBkdWUgdG8gYSBtaXNzaW5nIFVSTCwgaXQgbm93IGhhcyBhbgogICBlcnJvciBzdHJpbmcgc2V0LgpAQCAtNzA3NSw3ICs3MDc1LDcgQEAKIERhbmllbCAoNCBTZXB0ZW1iZXIgMjAwNSkKIC0gSSBhcHBsaWVkIE5pY29sYXMgRnJhbudvaXMnIG1hbiBwYWdlIHBhdGNoIGhlIHBvc3RlZCB0byB0aGUgRGViaWFuIGJ1ZwogICB0cmFja2VyLiBJdCBjb3JyZWN0ZWQgdHdvIGxpbmVzIHRoYXQgc3RhcnRlZCB3aXRoIGFwb3N0cm9waGVzLCB3aGljaCBpc24ndAotICBsZWdhbCBucm9mZiBmb3JtYXQuIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjY1MTEKKyAgbGVnYWwgbnJvZmYgZm9ybWF0LiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyNjUxMQogCiAtIEFkZGVkIC0tZnRwLXNraXAtcGFzdi1pcCB0byB0aGUgY29tbWFuZCBsaW5lIHRvb2wsIHRoYXQgc2V0cyB0aGUgbmV3CiAgIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUCBvcHRpb24uIEl0IG1ha2VzIGxpYmN1cmwgcmUtdXNlIHRoZSBjb250cm9sCkBAIC03MTc5LDcgKzcxNzksNyBAQAogCiBEYW5pZWwgKDggQXVndXN0IDIwMDUpCiAtIEpvbiBHcnViYnMgZmlsZWQgYnVnIHJlcG9ydCAjMTI0OTk2MgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTI0OTk2Mikgd2hpY2ggaWRlbnRpZmllZCBhIHByb2JsZW0KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjQ5OTYyKSB3aGljaCBpZGVudGlmaWVkIGEgcHJvYmxlbQogICB3aXRoIE5UTE0gb24gYSBIVFRQIHByb3h5IGlmIGFuIEZUUCBVUkwgd2FzIGdpdmVuLiBsaWJjdXJsIG5vdyBwcm9wZXJseQogICBzd2l0Y2hlcyB0byBwdXJlIEhUVFAgaW50ZXJuYWxseSB3aGVuIGFuIEhUVFAgcHJveHkgaXMgdXNlZCwgZXZlbiBmb3IgRlRQCiAgIFVSTHMuIFRoZSBwcm9ibGVtIHdvdWxkIGFsc28gb2NjdXIgd2l0aCBvdGhlciBtdWx0aS1wYXNzIGF1dGggbWV0aG9kcy4KQEAgLTcyMTIsNyArNzIxMiw3IEBACiAKIERhbmllbCAoNSBKdWx5IDIwMDUpCiAtIEdpc2xlIFZhbmVtIGNhbWUgdXAgd2l0aCBhIG5pY2UgbGl0dGxlIHdvcmstYXJvdW5kIGZvciBidWcgIzEyMzAxMTgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMzAxMTgpLiBJdCBzZWVtcyB0aGUgV2luZG93cyAoTVNWQykKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KS4gSXQgc2VlbXMgdGhlIFdpbmRvd3MgKE1TVkMpCiAgIGxpYmMgdGltZSBmdW5jdGlvbnMgbWF5IHJldHVybiBkYXRhIG9uZSBob3VyIG9mZiBpZiBUWiBpcyBub3Qgc2V0IGFuZAogICBhdXRvbWF0aWMgRFNUIGFkanVzdG1lbnQgaXMgZW5hYmxlZC4gVGhpcyBtYWRlIGN1cmxfZ2V0ZGF0ZSgpIHJldHVybiB3cm9uZwogICB2YWx1ZSwgYW5kIGl0IGFsc28gY29uY2VybmVkIGludGVybmFsIGNvb2tpZSBleHBpcmF0aW9ucyBldGMuCkBAIC03MjUyLDggKzcyNTIsOCBAQAogCiBEYW5pZWwgKDE0IEp1bmUgMjAwNSkKIC0gR2lzbGUgVmFuZW0gZml4ZWQgYSBwb3RlbnRpYWwgdGhyZWFkIGhhbmRsZSBsZWFrLiBCdWcgcmVwb3J0ICMxMjE2NTAwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjE2NTAwKS4gIENvbW1lbnQgaW4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA2LzAwNTkuaHRtbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMTY1MDApLiAgQ29tbWVudCBpbgorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA2LzAwNTkuaHRtbAogCiBEYW5pZWwgKDEzIEp1bmUgMjAwNSkKIC0gTWFkZSBidWlsZGNvbmYgcnVuIGxpYnRvb2xpemUgaW4gdGhlIGFyZXMgZGlyIHRvbyAoaW5zcGlyZWQgYnkgVHVwb25lJ3MKQEAgLTcyODEsNyArNzI4MSw3IEBACiAKIERhbmllbCAoMyBKdW5lIDIwMDUpCiAtIEFkZGVkIGRvY3MvbGliY3VybC9nZXRpbmZvLXRpbWVzLCBiYXNlZCBvbiBmZWVkYmFjayBmcm9tICdFZGknOgotICBodHRwOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTExMTc4MzI1Nzk4Mjk5JnN1cHBvcnQ9eWVzCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTExMTc4MzI1Nzk4Mjk5JnN1cHBvcnQ9eWVzCiAKIC0gQW5kcmVzIEdhcmNpYSBwcm92aWRlZCB5ZXQgYW5vdGhlciB0ZXh0IG1vZGUgcGF0Y2ggZm9yIHNldmVyYWwgdGVzdCBjYXNlcyBzbwogICB0aGF0IHRoZXkgZG8gdGV4dCBjb21wYXJpc2lvbnMgYmV0dGVyIG9uIFdpbmRvd3MgKG5ld2xpbmUtd2lzZSkuCkBAIC03Mjg5LDcgKzcyODksNyBAQAogRGFuaWVsICgxIEp1bmUgMjAwNSkKIC0gVGhlIGNvbmZpZ3VyZSBjaGVjayBmb3IgYy1hcmVzIG5vdyBhZGRzIHRoZSBjYXJlcyBsaWIgYmVmb3JlIHRoZSBvdGhlciBsaWJzLAogICB0byBtYWtlIGl0IGJ1aWxkIGZpbmUgd2l0aCBtaW5ndy4gSW5zcGlyZWQgYnkgVHVwb25lIEFsZnJlZG8ncyBidWcgcmVwb3J0Ci0gIGFuZCBwYXRjaDogaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIxMjk0MAorICBhbmQgcGF0Y2g6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjEyOTQwCiAKIERhbmllbCAoMzEgTWF5IDIwMDUpCiAtIFRvZGQgS3VsZXN6YSByZXBvcnRlZCBhIGZsYXcgaW4gdGhlIHByb3h5IG9wdGlvbiwgc2luY2UgYSBudW1lcmljYWwgSVB2NgpAQCAtNzMwMSw3ICs3MzAxLDcgQEAKIC0gRXJpYyBDb29wZXIgcmVwb3J0ZWQgYWJvdXQgYSBwcm9ibGVtIHdpdGggSFRUUCBzZXJ2ZXJzIHRoYXQgcmVzcG9uZHMgd2l0aAogICBiaW5hcnkgemVyb2VzIHdpdGhpbiB0aGUgaGVhZGVycy4gVGhleSBjb25mdXNlZCBsaWJjdXJsIHRvIGRvIHdyb25nIHNvIHRoZQogICBkb3dubG9hZGVkIGhlYWRlcnMgYmVjb21lIGluY29tcGxldGUuIFRoZSBmaXggaXMgbm93IHZlcmlmaWVkIHdpdGggdGVzdCBjYXNlCi0gIDI2Mi4gaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxMDk0OAorICAyNjIuIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9MzEwOTQ4CiAKIERhbmllbCAoMjUgTWF5IDIwMDUpCiAtIEZpeGVkIHByb2JsZW1zIHdpdGggdGhlIHRlc3Qgc3VpdGUsIGFuZCBpbiBwYXJ0aWN1bGFyIHRoZSBGVFAgdGVzdCBjYXNlcwpAQCAtNzMyNCw3ICs3MzI0LDcgQEAKIAogRGFuaWVsICgxOCBNYXkgMjAwNSkKIC0gSm9obiBNY0dvd2FuIGlkZW50aWZpZWQgYSBwcm9ibGVtIGluIGJ1ZyByZXBvcnQgIzEyMDQ0MzUKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMDQ0MzUpIHdpdGggbWFsZm9ybWVkIFVSTHMgbGlrZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMDQ0MzUpIHdpdGggbWFsZm9ybWVkIFVSTHMgbGlrZQogICAiaHR0cDovL3NvbWVob3N0P2RhdGEiIGFzIGl0IGFkZGVkIGEgc2xhc2ggdG9vIG11Y2ggaW4gdGhlIHJlcXVlc3QgKCJHRVQKICAgLz9kYXRhLyIuLi4pLiBBZGRlZCB0ZXN0IGNhc2UgMjYwIHRvIHZlcmlmeS4KIApAQCAtNzM1MCw3ICs3MzUwLDcgQEAKICAgb3ZlciBhIHByb3h5IHRoYXQgdXNlcyBOVExNIGF1dGhlbnRpY2F0aW9uLCBsaWJjdXJsIGZhaWxlZCB0byB1c2UgTlRMTSBhZ2FpbgogICBwcm9wZXJseSAodGhlIGF1dGggbWV0aG9kIHdhcyBhY2NpZGVudGFsbHkgcmVzZXQgdG8gdGhlIHNhbWUgYXMgaGFkIGJlZW4gc2V0CiAgIGZvciBob3N0IGF1dGgsIHdoaWNoIGRlZmF1bHRzIHRvIEJhc2ljKS4gQnVnIHJlcG9ydCAjMTIwMDY2MQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIwMDY2MSkgaWRlbnRpZmllZCB0aGUgdGhlIHByb2JsZW0gYW5kCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIwMDY2MSkgaWRlbnRpZmllZCB0aGUgdGhlIHByb2JsZW0gYW5kCiAgIHRoZSBmaXguCiAKIC0gSWYgLXovLS10aW1lLWNvbmQgaXMgdXNlZCB3aXRoIGFuIGludmFsaWQgZGF0ZSBzeW50YXgsIHRoaXMgaXMgbm8gbG9uZ2VyCkBAIC03Mzg5LDcgKzczODksNyBAQAogRGFuaWVsICgxMCBNYXkgMjAwNSkKIC0gSGFsZi1iYWtlZCBhdHRlbXB0IHRvIGJhaWwgb3V0IGlmIHNlbGVjdCgpIHJldHVybnMgX29ubHlfIGVycm9yZmRzIHdoZW4gdGhlCiAgIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzLiBBbiBhdHRlbXB0IHRvIGZpeCBBbGxhbidzIHByb2JsZW0uIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDUtMDUvMDA3My5odG1sIGFuZCB0aGUgcmVzdCBvZiB0aGF0IHRocmVhZAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA1LzAwNzMuaHRtbCBhbmQgdGhlIHJlc3Qgb2YgdGhhdCB0aHJlYWQKICAgZm9yIGRldGFpbHMuCiAKICAgSSdtIHN0aWxsIG5vdCBzdXJlIHRoaXMgaXMgdGhlIHJpZ2h0IGZpeCwgYnV0Li4uCkBAIC03NjU4LDcgKzc2NTgsNyBAQAogRGFuaWVsICgyMiBGZWJydWFyeSAyMDA1KQogLSBOVExNIGFuZCBmdHAta3JiNCBidWZmZXIgb3ZlcmZsb3cgZml4ZWQsIGFzIHJlcG9ydGVkIGhlcmU6CiAgIGh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYXJjaGl2ZS8xLzM5MTA0MiBhbmQgdGhlIENBTiByZXBvcnQgaGVyZToKLSAgaHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNBTi0yMDA1LTA0OTAKKyAgaHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DQU4tMjAwNS0wNDkwCiAKICAgSWYgdGhlc2Ugc2VjdXJpdHkgZ3V5cyB3ZXJlIHNlcmlvdXMsIHdlJ2QgYmVlbiBub3RpZmllZCBpbiBhZHZhbmNlIGFuZCB3ZQogICBjb3VsZCd2ZSBzYXZlZCBhIGZldyBvZiB5b3UgYSBsaXR0bGUgc3VycHJpc2UsIGJ1dCBub3cgd2Ugd2VyZW4ndC4KQEAgLTc3MTksNyArNzcxOSw3IEBACiAKIERhbmllbCAoOSBGZWJydWFyeSAyMDA1KQogLSBEYXZpZCBCeXJvbiBmaXhlZCBoaXMgU1NMIHByb2JsZW1zLCBpbml0aWFsbHkgbWVudGlvbmVkIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNS0wMS8wMjQwLmh0bWwuIEl0IHR1cm5lZCBvdXQgd2UgZGlkbid0IHVzZQorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTAxLzAyNDAuaHRtbC4gSXQgdHVybmVkIG91dCB3ZSBkaWRuJ3QgdXNlCiAgIFNTTF9wZW5kaW5nKCkgYXMgd2Ugc2hvdWxkLgogCiAtIENvbnZlcnRlZCBsb3RzIG9mIEZUUCBjb2RlIHRvIGEgc3RhdGVtYWNoaW5lLCBzbyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UKQEAgLTc5MTgsNyArNzkxOCw3IEBACiAgIGh0dHA6Ly93d3cuZ3JlZW5oaWxscy5jby51ay9tYWsvZ2VudG9vL2N1cmwtZWludHItYnVnLmMsIEkgbm93IG1hZGUgdGhlCiAgIHNlbGVjdCgpIGFuZCBwb2xsKCkgY2FsbHMgcHJvcGVybHkgbG9vcCBpZiB0aGV5IHJldHVybiAtMSBhbmQgZXJybm8gaXMKICAgRUlOVFIuIGdsaWJjIGRvY3MgZm9yIHRoaXMgaXMgZm91bmQgaGVyZToKLSAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9JbnRlcnJ1cHRlZC1QcmltaXRpdmVzLmh0bWwKKyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvSW50ZXJydXB0ZWQtUHJpbWl0aXZlcy5odG1sCiAKICAgVGhpcyBsYXN0IGxpbmsgc2F5cyBCU0QgZG9lc24ndCBoYXZlIHRoaXMgImVmZmVjdCIuIFdpbGwgdGhlcmUgYmUgYSBwcm9ibGVtCiAgIGlmIHdlIGRvIHRoaXMgdW5jb25kaXRpb25hbGx5PwpAQCAtNzkzMSw3ICs3OTMxLDcgQEAKICAgdXNpbmcgYSBjdXN0b20gSG9zdDogaGVhZGVyIGFuZCBjdXJsIGZhaWxzIHRvIHNlbmQgYSByZXF1ZXN0IG9uIGEgcmUtdXNlZAogICBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gYW5kIHRodXMgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uIGFuZCByZXNlbmRzIGl0LiBJdAogICB0aGVuIHNlbnQgdHdvIEhvc3Q6IGhlYWRlcnMuIEN5cmlsbCdzIGFuYWx5c2lzIHdhcyBwb3N0ZWQgaGVyZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwNS0wMS8wMDIyLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDUtMDEvMDAyMi5odG1sCiAKIC0gQnJ1Y2UgTWl0Y2hlbmVyIGlkZW50aWZpZWQgKGJ1ZyByZXBvcnQgIzEwOTk2NDApIHRoZSBuZXZlci1lbmRpbmcgU09DS1M1CiAgIHByb2JsZW0gd2l0aCB0aGUgdmVyc2lvbiBieXRlIGFuZCB0aGUgY2hlY2sgZm9yIGJhZCB2ZXJzaW9ucy4gQnJ1Y2UgaGFzIGxvdHMKQEAgLTg0ODcsNyArODQ4Nyw3IEBACiAgIGh0dHA6Ly9ic2RmdHBkLXNzbC5zYy5ydS8iIHdoaWNoIGFjY29yZGluZ2x5IGRvZXNuJ3QgcHJvcGVybHkgd29yayB3aXRoIGN1cmwKICAgd2hlbiAiQVVUSCBTU0wiIGlzIGlzc3VlZCAoYWx0aG91Z2ggdGhlIHNlcnZlciByZXNwb25kcyBmaW5lIGFuZCBldmVyeXRoaW5nKQogICBidXQgcmVxdWlyZXMgdGhhdCBjdXJsIGlzc3VlcyAiQVVUSCBUTFMiIGluc3RlYWQuIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTEwOTUxOTQ0OTM3NjAzJnN1cHBvcnQ9eWVzCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTEwOTUxOTQ0OTM3NjAzJnN1cHBvcnQ9eWVzCiAKICAgSW50cm9kdWNpbmcgQ1VSTE9QVF9GVFBTU0xBVVRIIHRoYXQgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBzZWxlY3Qgd2hpY2gKICAgb2YgdGhlIEFVVEggc3RyaW5ncyB0byBhdHRlbXB0IGZpcnN0LgpAQCAtOTY1Niw3ICs5NjU2LDcgQEAKICAgY3VybHhfc3RydG9sbCgpIGZ1bmN0aW9uLiBUaGlzIGlzIG1hZGUgdG8gYWxsb3cgdGhlIGFwcCB0byB1c2UgZXhpc3RpbmcgY29kZSwKICAgYnV0IHdpdGhvdXQgcG9sbHV0aW5nIHRoZSBsaWJjdXJsIEFQSS4gRnVydGhlciBleHBsYW5hdGlvbnMgcG9zdGVkIGhlcmU6CiAKLSAgICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDQtMDIvMDIxNS5odG1sCisgICAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNC0wMi8wMjE1Lmh0bWwKIAogRGFuaWVsICgxOCBGZWJydWFyeSAyMDA0KQogLSBGaXhlZCBidWlsZGNvbmYgdG8gbm90IHVzZSAid2hpY2giIGFzIEFJWCBhbmQgVHJ1NjQgaGF2ZSB3aGF0IGhhdmUgYmVlbgpAQCAtOTc1OCw3ICs5NzU4LDcgQEAKICAgbWVzc2FnZXMgd2hlbiBiYWlsaW5nIG91dCBpbiB0aGUgdGhhdCBmdW5jdGlvbi4KIAogLSBUb3IgQXJudHNlbiBub3cgcHJvdmlkZXMgQUlYIGFuZCBJUklYICh1c2luZyBnY2MsIHhsYyBhbmQgdGhlIE1JUFNQcm8KLSAgY29tcGlsZXJzKSBhdXRvbWF0ZWQgYnVpbGQgbG9ncyAoaHR0cDovL2N1cmwuaGF4eC5zZS9hdXRvLykgYW5kIHdlJ3ZlIGZpeGVkCisgIGNvbXBpbGVycykgYXV0b21hdGVkIGJ1aWxkIGxvZ3MgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2F1dG8vKSBhbmQgd2UndmUgZml4ZWQKICAgbnVtZXJvdXMgbWlub3IgcXVpcmtzIHRvIG1ha2UgbGVzcyB3YXJuaW5ncyBhcHBlYXIuCiAKIERhbmllbCAoNCBGZWJydWFyeSAyMDA0KQpAQCAtMTAxMDcsNyArMTAxMDcsNyBAQAogICBwcm9ibGVtcyByZWxhdGVkIHRvIGZ0cCBwYXJ0aWFsIGRvd25sb2FkczogaWYgYSBwYXJ0aWFsIHRyYW5zZmVyIGlzCiAgIGRldGVjdGVkLCB3ZSBtdXN0IGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHdlIGNhbm5vdCBrbm93IGluIHdoYXQgc3RhdGUgaXQgaXMKICAgYW55bW9yZS4gVGhpcyBsb29rcyBsaWtlIGEgUHJvRlRQRCBidWc6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0xMS8wMDc5Lmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0xMS8wMDc5Lmh0bWwKIAogRGFuaWVsICgxNyBOb3ZlbWJlcikKIC0gTWFjaWVqIFcuIFJvenlja2kgbWFkZSB0aGUgY29uZmlndXJlIHNjcmlwdCB1c2UgYSBjYWNoZSB2YXJpYWJsZSBmb3IgdGhlCkBAIC0xMDgwOCw3ICsxMDgwOCw3IEBACiAgIGNvbW1lbnRzIGFuZCBjbGFyaWZpZWQgdGhlIGN1cnJlbnQgY29kZSBtb3JlLiBVc2luZyB0aGUgbmV3IGtub3dsZWRnZSwgd2UKICAgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB0aGUgTlRMTSBzdHVmZiB3b3JrIGV2ZW4gYmV0dGVyLgogICBFcmljJ3Mgb3JpZ2luYWwgVVJMOiBodHRwOi8vZGF2ZW5wb3J0LnNvdXJjZWZvcmdlLm5ldC9udGxtLmh0bWwKLSAgVmVyc2lvbiBzdG9yZWQgYW5kIHByb3ZpZGVkIGF0IGN1cmwgc2l0ZTogaHR0cDovL2N1cmwuaGF4eC5zZS9yZmMvbnRsbS5odG1sCisgIFZlcnNpb24gc3RvcmVkIGFuZCBwcm92aWRlZCBhdCBjdXJsIHNpdGU6IGh0dHBzOi8vY3VybC5oYXh4LnNlL3JmYy9udGxtLmh0bWwKIAogLSBGaXhlZCB0aGUgbWlub3IgY29tcGlsZSBwcm9ibGVtcyBwcmUzIGhhZCBpZiBidWlsdCB3aXRob3V0IEdTU0FQSSBhbmQvb3IKICAgU1NMLgpAQCAtMTE0OTQsNyArMTE0OTQsNyBAQAogCiBEYW5pZWwgKDkgSmFuIDIwMDMpCiAtIFVwZGF0ZWQgbGliL3NoYXJlLmMgcXVpdGUgYSBiaXQgdG8gbWF0Y2ggdGhlIGRlc2lnbiBkb2N1bWVudCBhdAotICBodHRwOi8vY3VybC5oYXh4LnNlL2Rldi9zaGFyaW5nLnR4dCBhIGxvdCBtb3JlLgorICBodHRwczovL2N1cmwuaGF4eC5zZS9kZXYvc2hhcmluZy50eHQgYSBsb3QgbW9yZS4KIAogICBJJ2xsIHRyeSB0byB1cGRhdGUgdGhlIGRvY3VtZW50IHNvb25pc2guIHNoYXJlLmMgaXMgc3RpbGwgbm90IGFjdHVhbGx5IHVzZWQKICAgYnkgbGliY3VybCwgYnV0IHRoZSBBUEkgaXMgc2xvd2x5IGdldHRpbmcgdGhlcmUgYW5kIHdlIGNhbiBzdGFydApAQCAtMTE5MzUsNyArMTE5MzUsNyBAQAogCiBEYW5pZWwgKDMgU2VwIDIwMDIpCiAtIFVwZGF0ZWQgYWxsIHNvdXJjZSBjb2RlIGhlYWRlcnMgdG8gdXNlIE1JVC1saWNlbnNlIHJlZmVyZW5jZXMgb25seSwgYW5kCi0gIHBvaW50IHRvIHRoZSBDT1BZSU5HIGZpbGUgYW5kIHRoZSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKKyAgcG9pbnQgdG8gdGhlIENPUFlJTkcgZmlsZSBhbmQgdGhlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKICAgVVJMLiBJJ3ZlIGN1dCBvdXQgYWxsIHJlZmVyZW5jZXMgdG8gTVBMIHRoYXQgSSBjb3VsZCBmaW5kLgogCiAtIENvcmVjdGVkIHRoZSBtYWtlZmlsZXMgdG8gbm90IGFsd2F5cyB1c2UgLWx6IHdoZW4gbGlua2luZwpAQCAtMTI1MDMsNyArMTI1MDMsNyBAQAogICB3aW5kb3dzIG1ha2VmaWxlcy4KIAogLSBKb24gRGlsbG9uIHByb3ZpZGVkIHVzIHdpdGggc2V2ZXJhbCBnb29kLWxvb2tpbmcgY3VybCBpbWFnZXMgZm9yCi0gIHByb21vdGlvbi4gVmlldyB0aGVtIGhlcmUgaHR0cDovL2N1cmwuaGF4eC5zZS9pY29ucy5odG1sCisgIHByb21vdGlvbi4gVmlldyB0aGVtIGhlcmUgaHR0cHM6Ly9jdXJsLmhheHguc2UvaWNvbnMuaHRtbAogCiBEYW5pZWwgKDIwIE1hcmNoIDIwMDIpCiAtIFBldGVyIFZlcmhhcyBmb3VuZCBvdXQgdGhhdCBDUkxGIHJlcGxhY2VtZW50IGluIHVwbG9hZHMgd2FzIG5vdCB3b3JraW5nLiBJCkBAIC0xMjU0Miw3ICsxMjU0Miw3IEBACiAgIFBBU1YgZnRwIHRyYW5zZmVycy4gSXQgY291bGQgbWFrZSBsaWJjdXJsIGNyYXNoLgogCiAgIERldGFpbHMgaW4gYnVnIHJlcG9ydCAjNTMwNTYyOgotICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwOTc2JmFpZD01MzA1NjImZ3JvdXBfaWQ9OTc2CisgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvY3VybC9idWdzLzE3OC8KIAogRGFuaWVsICgxNSBNYXJjaCAyMDAyKQogLSBKdW4taWNoaXJvIGl0b2p1biBIYWdpbm8gZmlsZWQgYnVnIHJlcG9ydCAjNTMwMjA0IHRoYXQgY2xlYXJseSBwb2ludGVkIG91dApAQCAtMTI5MjIsNyArMTI5MjIsNyBAQAogCiAtIFJpY2hhcmQgQXJjaGVyIGJyb3VnaHQgYmFjayB0aGUgYWJpbGl0eSB0byBjb21waWxlIGFuZCBidWlsZCB3aXRoIE9wZW5TU0wKICAgdmVyc2lvbnMgYmVmb3JlIDAuOS41LgotICBbaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTEwMDk3NiZhaWQ9NTA0MTYzJmdyb3VwX2lkPTk3Nl0KKyAgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvY3VybC9idWdzLzE0OS9dCiAKIC0gVGhlIEROUyBjYWNoZSBjb2RlIGRpZG4ndCB0YWtlIHRoZSBwb3J0IG51bWJlciBpbnRvIGFjY291bnQsIHdoaWNoIG1hZGUgaXQKICAgd29yayByYXRoZXIgYmFkIG9uIElQdjYtZW5hYmxlZCBob3N0cyAoZXNwZWNpYWxseSB3aGVuIGRvaW5nIHBhc3NpdmUKQEAgLTEyOTcxLDcgKzEyOTcxLDcgQEAKIC0gUG9zdGVkIHRoZSBjdXJsIHF1ZXN0aW9ubmFpcmUgb24gdGhlIHdlYiBzaXRlLiBJZiB5b3UgaGF2ZW4ndCBwb3N0ZWQgeW91cgogICBvcGluaW9ucyB0aGVyZSB5ZXQsIGdvIHRoZXJlIGFuZCBkbyBpdCBub3cgd2hpbGUgaXQgaXMgc3RpbGwgdGhlcmU6CiAKLSAgICAgICAgaHR0cDovL2N1cmwuaGF4eC5zZS9xLworICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9xLwogCiAtIEdlb3JnIEhvcm4gcXVpY2tseSBmb3VuZCBvdXQgdGhhdCB0aGUgU1NMIHJlYWRpbmcgbm8gbG9uZ2VyIHdvcmtlZCBhcwogICBzdXBwb3NlZCBzaW5jZSB0aGUgc3dpdGNoIHRvIG5vbi1ibG9ja2luZyBzb2NrZXRzLiBJJ3ZlIG1hZGUgYSBxdWljayBwYXRjaApAQCAtMTMzNzksNyArMTMzNzksNyBAQAogCiAtIE1pbm9yIHVwZGF0ZXMgdG8gdGhlIEZBUSwgYWRkZWQgYSBicmFuZCBuZXcgc2VjdGlvbiB0byB0aGUgd2ViIHNpdGUgYWJvdXQKICAgdGhlIG5hbWUgaXNzdWUgKHdobyBvd25zICJjdXJsIj8gd2lsbCBzb21lb25lIHN1ZSB1cz8gZXRjIGV0Yyk6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbGVnYWwvdGhlbmFtZS5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xlZ2FsL3RoZW5hbWUuaHRtbAogCiBWZXJzaW9uIDcuOS4xLXByZTcKIApAQCAtMTYzNTksNyArMTYzNTksNyBAQAogICAgcHJvZ3Jlc3MgZGVhbCBiZXR0ZXIgd2l0aCBsYXJnZXIgZmlsZXMgYW5kIGFkZGVkIGEgIlRpbWUiIGZpZWxkIHdoaWNoIHNob3dzCiAgICB0aGUgdGltZSBzcGVudCBvbiB0aGUgZG93bmxvYWQgc28gZmFyLgogIC0gSSdtIG5vdyB1c2luZyB0aGUgQ1ZTIHJlcG9zaXRvcnkgb24gc291cmNlZm9yZ2UubmV0LCB3aGljaCBhbHNvIGFsbG93cyB3ZWIKLSAgIGJyb3dzaW5nLiBTZWUgaHR0cDovL2N1cmwuaGF4eC5udS4KKyAgIGJyb3dzaW5nLgogCiBEYW5pZWwgKDEwIEphbnVhcnkgMjAwMCk6CiAgLSBSZW51bWJlcmVkIHNvbWUgZW51bXMgaW4gY3VybC9jdXJsLmggc2luY2UgdGFnIG51bWJlciAzNSB3YXMgdXNlZCB0d2ljZSEKQEAgLTE2NzQ4LDcgKzE2NzQ4LDcgQEAKICAtIEkgY29ycmVjdGVkIGEgZmV3IG1pbm9yIHRoaW5ncyB0aGF0IG1hZGUgdGhlIGNvbXBpbGVyIGNvbXBsYWluIHdoZW4KICAgIC1XYWxsIC1wZWRhbnRpYyB3YXMgdXNlZC4KIAotIC0gSSdtIG1vdmluZyB0aGUgb2ZmaWNpYWwgY3VybCB3ZWIgcGFnZSB0byBodHRwOi8vY3VybC5oYXh4Lm51LiBJIHRoaW5rIGl0CisgLSBJJ20gbW92aW5nIHRoZSBvZmZpY2lhbCBjdXJsIHdlYiBwYWdlIHRvIGN1cmwuaGF4eC5udS4gSSB0aGluayBpdAogICAgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZW1lbWJlciBhcyBpdCBpcyBhIGxvdCBzaG9ydGVyIGFuZCBsZXNzIGNyeXB0aWMuCiAgICBUaGUgb2xkIG9uZSBzdGlsbCB3b3JrcyBhbmQgc2hvd3MgdGhlIHNhbWUgaW5mby4KIApkaWZmIC0tZ2l0IGEvQ01ha2UvQ3VybFRlc3RzLmMgYi9DTWFrZS9DdXJsVGVzdHMuYwppbmRleCAwNGQ1ZTdlLi5jZWZmMzkxIDEwMDY0NAotLS0gYS9DTWFrZS9DdXJsVGVzdHMuYworKysgYi9DTWFrZS9DdXJsVGVzdHMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMzksNyArMTM5LDcgQEAKICAgcmMgPSBnZXRob3N0YnluYW1lX3IoYWRkcmVzcywgJmgsICZoZGF0YSk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzUpIHx8IFwKICAgICAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9SRUVOVFJBTlQpCi0gIHJjID0gZ2V0aG9zdGJ5bmFtZV9yKGFkZHJlc3MsICZoLCBidWZmZXIsIDgxOTIsIDAsICZoX2Vycm5vcCk7CisgIHJjID0gZ2V0aG9zdGJ5bmFtZV9yKGFkZHJlc3MsICZoLCBidWZmZXIsIDgxOTIsICZoX2Vycm5vcCk7CiAgICh2b2lkKWhwOyAvKiBub3QgdXNlZCBmb3IgdGVzdCAqLwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82KSB8fCBcCiAgICAgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfUkVFTlRSQU5UKQpkaWZmIC0tZ2l0IGEvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZSBiL0NNYWtlL090aGVyVGVzdHMuY21ha2UKaW5kZXggNGYwN2YyMi4uZDU5OTQ5OCAxMDA2NDQKLS0tIGEvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZQorKysgYi9DTWFrZS9PdGhlclRlc3RzLmNtYWtlCkBAIC0xMCw4ICsxMCw4IEBACiAKIHNldChzaWduYXR1cmVfY2FsbF9jb252KQogaWYoSEFWRV9XSU5ET1dTX0gpCi0gIGFkZF9oZWFkZXJfaW5jbHVkZShIQVZFX1dJTkRPV1NfSCAid2luZG93cy5oIikKICAgYWRkX2hlYWRlcl9pbmNsdWRlKEhBVkVfV0lOU09DSzJfSCAid2luc29jazIuaCIpCisgIGFkZF9oZWFkZXJfaW5jbHVkZShIQVZFX1dJTkRPV1NfSCAid2luZG93cy5oIikKICAgYWRkX2hlYWRlcl9pbmNsdWRlKEhBVkVfV0lOU09DS19IICJ3aW5zb2NrLmgiKQogICBzZXQoX3NvdXJjZV9lcGlsb2d1ZQogICAgICAgIiR7X3NvdXJjZV9lcGlsb2d1ZX1cbiNpZm5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTlxuI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOXG4jZW5kaWYiKQpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCA4YWE0NGJiLi4wNmYxOGNmIDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNyBAQAogIyBTRVQoUEFDS0FHRV9OQU1FICJjdXJsIikKICMgU0VUKFBBQ0tBR0VfVkVSU0lPTiAiLSIpCiAjIFNFVChQQUNLQUdFX1NUUklORyAiY3VybC0iKQotIyBTRVQoUEFDS0FHRV9CVUdSRVBPUlQgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsLyIpCisjIFNFVChQQUNLQUdFX0JVR1JFUE9SVCAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIpCiBzZXQoT1BFUkFUSU5HX1NZU1RFTSAiJHtDTUFLRV9TWVNURU1fTkFNRX0iKQogc2V0KE9TICJcIiR7Q01BS0VfU1lTVEVNX05BTUV9XCIiKQogCkBAIC0xMjIsMTEgKzEyMiw2IEBACiBvcHRpb24oQ1VSTF9ISURERU5fU1lNQk9MUyAiU2V0IHRvIE9OIHRvIGhpZGUgbGliY3VybCBpbnRlcm5hbCBzeW1ib2xzICg9aGlkZSBhbGwgc3ltYm9scyB0aGF0IGFyZW4ndCBvZmZpY2lhbGx5IGV4dGVybmFsKS4iIE9OKQogbWFya19hc19hZHZhbmNlZChDVVJMX0hJRERFTl9TWU1CT0xTKQogCi0jIElGKFdJTjMyKQotIyBPUFRJT04oQ1VSTF9XSU5ET1dTX1NTUEkgIlVzZSB3aW5kb3dzIGxpYnJhcmllcyB0byBhbGxvdyBOVExNIGF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgb3BlbnNzbCIgT04pCi0jIE1BUktfQVNfQURWQU5DRUQoQ1VSTF9XSU5ET1dTX1NTUEkpCi0jIEVORElGKCkKLQogb3B0aW9uKEhUVFBfT05MWSAiZGlzYWJsZXMgYWxsIHByb3RvY29scyBleGNlcHQgSFRUUCAoVGhpcyBvdmVycmlkZXMgYWxsIENVUkxfRElTQUJMRV8qIG9wdGlvbnMpIiBPRkYpCiBtYXJrX2FzX2FkdmFuY2VkKEhUVFBfT05MWSkKIG9wdGlvbihDVVJMX0RJU0FCTEVfRlRQICJkaXNhYmxlcyBGVFAiIE9GRikKQEAgLTE4Niw3ICsxODEsNyBAQAogbWFya19hc19hZHZhbmNlZChESVNBQkxFRF9USFJFQURTQUZFKQogb3B0aW9uKEVOQUJMRV9JUFY2ICJEZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydCIgT04pCiBtYXJrX2FzX2FkdmFuY2VkKEVOQUJMRV9JUFY2KQotaWYoRU5BQkxFX0lQVjYpCitpZihFTkFCTEVfSVBWNiBBTkQgTk9UIFdJTjMyKQogICBpbmNsdWRlKENoZWNrU3RydWN0SGFzTWVtYmVyKQogICBjaGVja19zdHJ1Y3RfaGFzX21lbWJlcigic3RydWN0IHNvY2thZGRyX2luNiIgc2luNl9hZGRyICJuZXRpbmV0L2luLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfU09DS0FERFJfSU42X1NJTjZfQUREUikKQEAgLTI1Myw2ICsyNDgsNyBAQAogaW5jbHVkZSAoQ2hlY2tTeW1ib2xFeGlzdHMpCiBpbmNsdWRlIChDaGVja1R5cGVTaXplKQogaW5jbHVkZSAoQ2hlY2tDU291cmNlQ29tcGlsZXMpCitpbmNsdWRlIChDTWFrZURlcGVuZGVudE9wdGlvbikKIAogIyBPbiB3aW5kb3dzIHByZWxvYWQgc2V0dGluZ3MKIGlmKFdJTjMyKQpAQCAtMjkwLDE0ICsyODYsMjIgQEAKIAogY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGdldGhvc3RuYW1lIEhBVkVfR0VUSE9TVE5BTUUpCiAKK3NldChPUEVOU1NMX0RFRkFVTFQgT04pCiBpZihXSU4zMikKKyAgc2V0KE9QRU5TU0xfREVGQVVMVCBPRkYpCiAgIGNoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgid3MyXzMyIiBnZXRjaCAgICAgICAgSEFWRV9MSUJXUzJfMzIpCiAgIGNoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgid2lubW0iICBnZXRjaCAgICAgICAgSEFWRV9MSUJXSU5NTSkKIGVuZGlmKCkKIAotb3B0aW9uKENNQUtFX1VTRV9PUEVOU1NMICJVc2UgT3BlblNTTCBjb2RlLiBFeHBlcmltZW50YWwiIE9OKQorb3B0aW9uKENNQUtFX1VTRV9PUEVOU1NMICJVc2UgT3BlblNTTCBjb2RlLiBFeHBlcmltZW50YWwiICR7T1BFTlNTTF9ERUZBVUxUfSkKIG1hcmtfYXNfYWR2YW5jZWQoQ01BS0VfVVNFX09QRU5TU0wpCiAKK2lmKFdJTjMyKQorICBDTUFLRV9ERVBFTkRFTlRfT1BUSU9OKENVUkxfV0lORE9XU19TU1BJICJVc2Ugd2luZG93cyBsaWJyYXJpZXMgdG8gYWxsb3cgTlRMTSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IG9wZW5zc2wiIE9OCisgICAgIk5PVCBDTUFLRV9VU0VfT1BFTlNTTCIgT0ZGKQorICBtYXJrX2FzX2FkdmFuY2VkKENVUkxfV0lORE9XU19TU1BJKQorZW5kaWYoKQorCiBzZXQoVVNFX09QRU5TU0wgT0ZGKQogc2V0KEhBVkVfTElCQ1JZUFRPIE9GRikKIHNldChIQVZFX0xJQlNTTCBPRkYpCkBAIC0zMjAsNiArMzI0LDggQEAKICAgICBjaGVja19pbmNsdWRlX2ZpbGUoIm9wZW5zc2wvc3NsLmgiICAgIEhBVkVfT1BFTlNTTF9TU0xfSCkKICAgICBjaGVja19pbmNsdWRlX2ZpbGUoIm9wZW5zc2wveDUwOS5oIiAgIEhBVkVfT1BFTlNTTF9YNTA5X0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlKCJvcGVuc3NsL3JhbmQuaCIgICBIQVZFX09QRU5TU0xfUkFORF9IKQorICBlbHNlaWYoV0lOMzIpCisgICAgc2V0KENVUkxfV0lORE9XU19TU1BJIE9OKQogICBlbmRpZigpCiBlbmRpZigpCiAKQEAgLTM1NSw5ICszNjEsMTAgQEAKICAgICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJ3aW5iZXIuaCIgIEhBVkVfV0lOQkVSX0gpCiAgIGVuZGlmKCkKICAgCisgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFU19CQUsgJHtDTUFLRV9SRVFVSVJFRF9JTkNMVURFU30pCiAgIHNldChDTUFLRV9MREFQX0lOQ0xVREVfRElSICIiIENBQ0hFIFNUUklORyAiUGF0aCB0byBMREFQIGluY2x1ZGUgZGlyZWN0b3J5IikKICAgaWYoQ01BS0VfTERBUF9JTkNMVURFX0RJUikKLSAgICBzZXQoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtDTUFLRV9MREFQX0lOQ0xVREVfRElSfSkKKyAgICBsaXN0KEFQUEVORCBDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke0NNQUtFX0xEQVBfSU5DTFVERV9ESVJ9KQogICBlbmRpZigpCiAgIGNoZWNrX2luY2x1ZGVfZmlsZV9jb25jYXQoImxkYXAuaCIgICAgICAgICAgIEhBVkVfTERBUF9IKQogICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJsYmVyLmgiICAgICAgICAgICBIQVZFX0xCRVJfSCkKQEAgLTM2NSw5ICszNzIsMTEgQEAKICAgaWYoTk9UIEhBVkVfTERBUF9IKQogICAgIG1lc3NhZ2UoU1RBVFVTICJMREFQX0ggbm90IGZvdW5kIENVUkxfRElTQUJMRV9MREFQIHNldCBPTiIpCiAgICAgc2V0KENVUkxfRElTQUJMRV9MREFQIE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7Q01BS0VfUkVRVUlSRURfSU5DTFVERVNfQkFLfSkgI0xEQVAgaW5jbHVkZXMgd29uJ3QgYmUgdXNlZAogICBlbHNlaWYoTk9UIEhBVkVfTElCTERBUCkKICAgICBtZXNzYWdlKFNUQVRVUyAiTERBUCBsaWJyYXJ5ICcke0NNQUtFX0xEQVBfTElCfScgbm90IGZvdW5kIENVUkxfRElTQUJMRV9MREFQIHNldCBPTiIpCiAgICAgc2V0KENVUkxfRElTQUJMRV9MREFQIE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7Q01BS0VfUkVRVUlSRURfSU5DTFVERVNfQkFLfSkgI0xEQVAgaW5jbHVkZXMgd29uJ3QgYmUgdXNlZAogICBlbHNlKCkKICAgICBpZihDTUFLRV9VU0VfT1BFTkxEQVApCiAgICAgICBzZXQoVVNFX09QRU5MREFQIE9OKQpAQCAtNDQ4LDYgKzQ1Nyw3IEBACiAgICAgc2V0KEhBVkVfTElCWiBPTikKICAgICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtaTElCX0xJQlJBUklFU30pCiAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1pMSUJfSU5DTFVERV9ESVJTfSkKKyAgICBsaXN0KEFQUEVORCBDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke1pMSUJfSU5DTFVERV9ESVJTfSkKICAgZW5kaWYoKQogZW5kaWYoKQogCkBAIC00NjMsNyArNDczLDcgQEAKICAgaWYoTElCU1NIMl9GT1VORCkKICAgICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtMSUJTU0gyX0xJQlJBUll9KQogICAgIHNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtMSUJTU0gyX0xJQlJBUll9KQotICAgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAiJHtMSUJTU0gyX0lOQ0xVREVfRElSfSIpCisgICAgbGlzdChBUFBFTkQgQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgIiR7TElCU1NIMl9JTkNMVURFX0RJUn0iKQogICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7TElCU1NIMl9JTkNMVURFX0RJUn0iKQogICAgIHNldChIQVZFX0xJQlNTSDIgT04pCiAgICAgc2V0KFVTRV9MSUJTU0gyIE9OKQpAQCAtNDkxLDEyICs1MDEsMTIgQEAKIGlmKENNQUtFX1VTRV9HU1NBUEkpCiAgIGZpbmRfcGFja2FnZShHU1MpCiAKLSAgc2V0KEhBVkVfR1NTX0FQSSAke0dTU19GT1VORH0pCisgIHNldChIQVZFX0dTU0FQSSAke0dTU19GT1VORH0pCiAgIGlmKEdTU19GT1VORCkKIAogICAgIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCAke0dTU19GTEFWT1VSfSBHU1NBUEkgdmVyc2lvbjogXCIke0dTU19WRVJTSU9OfVwiIikKIAotICAgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke0dTU19JTkNMVURFX0RJUn0pCisgICAgbGlzdChBUFBFTkQgQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtHU1NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaS5oIiAgSEFWRV9HU1NBUElfR1NTQVBJX0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaV9nZW5lcmljLmgiIEhBVkVfR1NTQVBJX0dTU0FQSV9HRU5FUklDX0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaV9rcmI1LmgiIEhBVkVfR1NTQVBJX0dTU0FQSV9LUkI1X0gpCkBAIC01MzIsNyArNTQyLDcgQEAKIAogICAgIGVuZGlmKCkKIAotICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtHU1NfSU5DTFVERV9ESVJ9KQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtHU1NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAgbGlua19kaXJlY3Rvcmllcygke0dTU19MSU5LX0RJUkVDVE9SSUVTfSkKICAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0dTU19DT01QSUxFUl9GTEFHU30iKQogICAgIHNldChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICR7R1NTX0xJTktFUl9GTEFHU30iKQpAQCAtNTUyLDEyICs1NjIsMjUgQEAKICAgdW5zZXQoVVNFX1VOSVhfU09DS0VUUyBDQUNIRSkKIGVuZGlmKCkKIAorCiAjIENoZWNrIGZvciBoZWFkZXIgZmlsZXMKIGlmKE5PVCBVTklYKQogICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJ3aW5kb3dzLmgiICAgICAgSEFWRV9XSU5ET1dTX0gpCiAgIGNoZWNrX2luY2x1ZGVfZmlsZV9jb25jYXQoIndpbnNvY2suaCIgICAgICBIQVZFX1dJTlNPQ0tfSCkKICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgid3MydGNwaXAuaCIgICAgIEhBVkVfV1MyVENQSVBfSCkKICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgid2luc29jazIuaCIgICAgIEhBVkVfV0lOU09DSzJfSCkKKyAgaWYoQ1VSTF9XSU5ET1dTX1NTUEkpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TICIke0NNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TfSAtRFNFQ1VSSVRZX1dJTjMyIikKKyAgICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJzc3BpLmgiICAgICAgIEhBVkVfU1NQSV9IKQorICAgIGlmKEhBVkVfU1NQSV9IKQorICAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgic2NoYW5uZWwuaCIgSEFWRV9TQ0hBTk5FTF9IKQorICAgICAgc2V0KFVTRV9XSU5ET1dTX1NTUEkgT04pCisgICAgICBpZihIQVZFX1NDSEFOTkVMX0gpCisgICAgICAgIHNldChVU0VfU0NIQU5ORUwgT04pCisgICAgICAgIHNldChTU0xfRU5BQkxFRCBPTikKKyAgICAgIGVuZGlmKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKIGVuZGlmKE5PVCBVTklYKQogCiBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJzdGRpby5oIiAgICAgICAgICBIQVZFX1NURElPX0gpCkBAIC0xMDM4LDcgKzEwNjEsOCBAQAogCiAjIENsZWFyIGxpc3QgYW5kIHRyeSB0byBkZXRlY3QgYXZhaWxhYmxlIGZlYXR1cmVzCiBzZXQoX2l0ZW1zKQotX2FkZF9pZigiU1NMIiAgICAgICAgICAgU1NMX0VOQUJMRUQpCitfYWRkX2lmKCJXaW5TU0wiICAgICAgICBTU0xfRU5BQkxFRCBBTkQgVVNFX1dJTkRPV1NfU1NQSSkKK19hZGRfaWYoIk9wZW5TU0wiICAgICAgIFNTTF9FTkFCTEVEIEFORCBVU0VfT1BFTlNTTCkKIF9hZGRfaWYoIklQdjYiICAgICAgICAgIEVOQUJMRV9JUFY2KQogX2FkZF9pZigidW5peC1zb2NrZXRzIiAgVVNFX1VOSVhfU09DS0VUUykKIF9hZGRfaWYoImxpYnoiICAgICAgICAgIEhBVkVfTElCWikKQEAgLTEwNDYsMTIgKzEwNzAsMTIgQEAKIF9hZGRfaWYoIklETiIgICAgICAgICAgIEhBVkVfTElCSUROKQogIyBUT0RPIFNTUDEgKFdpblNTTCkgY2hlY2sgaXMgbWlzc2luZwogX2FkZF9pZigiU1NQSSIgICAgICAgICAgVVNFX1dJTkRPV1NfU1NQSSkKLV9hZGRfaWYoIkdTUy1BUEkiICAgICAgIEhBVkVfR1NTX0FQSSkKK19hZGRfaWYoIkdTUy1BUEkiICAgICAgIEhBVkVfR1NTQVBJKQogIyBUT0RPIFNTUDEgbWlzc2luZyBmb3IgU1BORUdPCiBfYWRkX2lmKCJTUE5FR08iICAgICAgICBOT1QgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIIEFORAotICAgICAgICAgICAgICAgICAgICAgICAgKEhBVkVfR1NTX0FQSSBPUiBVU0VfV0lORE9XU19TU1BJKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChIQVZFX0dTU0FQSSBPUiBVU0VfV0lORE9XU19TU1BJKSkKIF9hZGRfaWYoIktlcmJlcm9zIiAgICAgIE5PVCBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggQU5ECi0gICAgICAgICAgICAgICAgICAgICAgICAoSEFWRV9HU1NfQVBJIE9SIFVTRV9XSU5ET1dTX1NTUEkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKEhBVkVfR1NTQVBJIE9SIFVTRV9XSU5ET1dTX1NTUEkpKQogIyBOVExNIHN1cHBvcnQgcmVxdWlyZXMgY3J5cHRvIGZ1bmN0aW9uIGFkYXB0aW9ucyBmcm9tIHZhcmlvdXMgU1NMIGxpYnMKICMgVE9ETyBhbHRlcm5hdGl2ZSBTU0wgbGlicyB0ZXN0cyBmb3IgU1NQMSwgR05VVExTLCBOU1MsIERBUldJTlNTTAogaWYoTk9UIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCBBTkQgKFVTRV9PUEVOU1NMIE9SCkBAIC0xMTM2LDcgKzExNjAsNyBAQAogIyBGaW5hbGx5IGdlbmVyYXRlIGEgImN1cmwtY29uZmlnIiBtYXRjaGluZyB0aGlzIGNvbmZpZwogY29uZmlndXJlX2ZpbGUoIiR7Q1VSTF9TT1VSQ0VfRElSfS9jdXJsLWNvbmZpZy5pbiIKICAgICAgICAgICAgICAgICIke0NVUkxfQklOQVJZX0RJUn0vY3VybC1jb25maWciIEBPTkxZKQotaW5zdGFsbChGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS9jdXJsLWNvbmZpZyIKK2luc3RhbGwoRklMRVMgIiR7Q1VSTF9CSU5BUllfRElSfS9jdXJsLWNvbmZpZyIKICAgICAgICAgREVTVElOQVRJT04gYmluCiAgICAgICAgIFBFUk1JU1NJT05TCiAgICAgICAgICAgT1dORVJfUkVBRCBPV05FUl9XUklURSBPV05FUl9FWEVDVVRFCkBAIC0xMTQ2LDcgKzExNzAsNyBAQAogIyBGaW5hbGx5IGdlbmVyYXRlIGEgcGtnLWNvbmZpZyBmaWxlIG1hdGNoaW5nIHRoaXMgY29uZmlnCiBjb25maWd1cmVfZmlsZSgiJHtDVVJMX1NPVVJDRV9ESVJ9L2xpYmN1cmwucGMuaW4iCiAgICAgICAgICAgICAgICAiJHtDVVJMX0JJTkFSWV9ESVJ9L2xpYmN1cmwucGMiIEBPTkxZKQotaW5zdGFsbChGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS9saWJjdXJsLnBjIgoraW5zdGFsbChGSUxFUyAiJHtDVVJMX0JJTkFSWV9ESVJ9L2xpYmN1cmwucGMiCiAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiAKICMgVGhpcyBuZWVkcyB0byBiZSBydW4gdmVyeSBsYXN0IHNvIG90aGVyIHBhcnRzIG9mIHRoZSBzY3JpcHRzIGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGlzLgpkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGE2NzcxLi4wMDAwMDAwCi0tLSBhL0NPTlRSSUJVVElORy5tZAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUhvdyB0byBjb250cmlidXRlIHRvIGN1cmwKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotSm9pbiB0aGUgY29tbXVuaXR5Ci0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIDEuIENsaWNrICd3YXRjaCcgb24gdGhlIGdpdGh1YiByZXBvCi0KLSAyLiBTdWJzY3JpYmUgdG8gdGhlIHN1aXRhYmxlIFttYWlsaW5nIGxpc3RzXShodHRwOi8vY3VybC5oYXh4LnNlL21haWwvKQotCi1SZWFkIFtkb2NzL0NPTlRSSUJVVEVdKGRvY3MvQ09OVFJJQlVURSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TZW5kIHlvdXIgc3VnZ2VzdGlvbnMgdXNpbmcgb25lIG9mIHRoZXNlIG1ldGhvZHM6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAxLiBpbiBhIG1haWwgdG8gdGhlIG1haWxpbmcgbGlzdAotCi0gMi4gYXMgYSBwdWxsIHJlcXVlc3Qgb24gZ2l0aHViCi0KLSAzLiBhcyBhbiBpc3N1ZSBvbiBnaXRodWIKLSAgIAotCi0vIFRoZSBjVVJMIHRlYW0hCi0KZGlmZiAtLWdpdCBhL0NPUFlJTkcgYi9DT1BZSU5HCmluZGV4IDZiNWQ1OWYuLmE5ODY2M2UgMTAwNjQ0Ci0tLSBhL0NPUFlJTkcKKysrIGIvQ09QWUlORwpAQCAtMSw2ICsxLDcgQEAKIENPUFlSSUdIVCBBTkQgUEVSTUlTU0lPTiBOT1RJQ0UKIAotQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LgorQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBhbmQgbWFueQorY29udHJpYnV0b3JzLCBzZWUgdGhlIFRIQU5LUyBmaWxlLgogCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCmRpZmYgLS1naXQgYS9NYWNPU1gtRnJhbWV3b3JrIGIvTWFjT1NYLUZyYW1ld29yawppbmRleCA2MjUxYmZmLi4xOWIzMzhmIDEwMDc1NQotLS0gYS9NYWNPU1gtRnJhbWV3b3JrCisrKyBiL01hY09TWC1GcmFtZXdvcmsKQEAgLTY1LDcgKzY1LDcgQEAKICBBUkNIRVM2ND0nLWFyY2ggeDg2XzY0JwogICNXZSAia25vdyIgdGhhdCAxMC40IGFuZCBlYXJsaWVyIGRvIG5vdCBzdXBwb3J0IDY0Yml0CiAgT0xEX1NESzY0PWBscyAgJFNES19QQVRIfGVncmVwIC12ICIxMC5bMC00XSJ8aGVhZCAtMWAKLSBORVdfU0RLNjQ9YGxzIC1yICRTREtfUEFUSHxlZ3JlcCAtdiAiMTAuWzAtNF0ifGhlYWQgLTFgCisgTkVXX1NESzY0PWBscyAtciAkU0RLX1BBVEh8ZWdyZXAgLXYgIjEwLlswLTRdW14wLTldIiB8IGhlYWQgLTFgCiAgaWYgdGVzdCAkVVNFX09MRCAtZ3QgMAogICB0aGVuCiAgICBTREs2ND0kT0xEX1NESzY0CmRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IDIyODIzZDkuLjI5ODZhY2YgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw4NiArMzIsMTA1IEBACiBWQzZfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLnRtcGwKIFZDNl9MSUJEU1AgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9saWIvbGliY3VybC5kc3AuZGlzdAogVkM2X0xJQkRTUF9ERVBTID0gJChWQzZfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM2X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy50bXBsCi1WQzZfU1JDRFNQID0gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMuZHNwLmRpc3QKK1ZDNl9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmwudG1wbAorVkM2X1NSQ0RTUCA9IHByb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLmRzcC5kaXN0CiBWQzZfU1JDRFNQX0RFUFMgPSAkKFZDNl9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKIFZDN19MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwudG1wbAogVkM3X0xJQlZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnZjcHJvai5kaXN0CiBWQzdfTElCVkNQUk9KX0RFUFMgPSAkKFZDN19MSUJUTVBMKSBNYWtlZmlsZS5hbSBsaWIvTWFrZWZpbGUuaW5jCi1WQzdfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnRtcGwKLVZDN19TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybHNyYy52Y3Byb2ouZGlzdAorVkM3X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC50bXBsCitWQzdfU1JDVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwudmNwcm9qLmRpc3QKIFZDN19TUkNWQ1BST0pfREVQUyA9ICQoVkM3X1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkM3MV9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvbGliY3VybC50bXBsCiBWQzcxX0xJQlZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwudmNwcm9qLmRpc3QKIFZDNzFfTElCVkNQUk9KX0RFUFMgPSAkKFZDNzFfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM3MV9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybHNyYy50bXBsCi1WQzcxX1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMudmNwcm9qLmRpc3QKK1ZDNzFfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwudG1wbAorVkM3MV9TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnZjcHJvai5kaXN0CiBWQzcxX1NSQ1ZDUFJPSl9ERVBTID0gJChWQzcxX1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkM4X0xJQlRNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC50bXBsCiBWQzhfTElCVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzgvbGliL2xpYmN1cmwudmNwcm9qLmRpc3QKIFZDOF9MSUJWQ1BST0pfREVQUyA9ICQoVkM4X0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKLVZDOF9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmxzcmMudG1wbAotVkM4X1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnZjcHJvai5kaXN0CitWQzhfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsLnRtcGwKK1ZDOF9TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC52Y3Byb2ouZGlzdAogVkM4X1NSQ1ZDUFJPSl9ERVBTID0gJChWQzhfU1JDVE1QTCkgTWFrZWZpbGUuYW0gc3JjL01ha2VmaWxlLmluYwogCiBWQzlfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnRtcGwKIFZDOV9MSUJWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvbGliY3VybC52Y3Byb2ouZGlzdAogVkM5X0xJQlZDUFJPSl9ERVBTID0gJChWQzlfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM5X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy50bXBsCi1WQzlfU1JDVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMudmNwcm9qLmRpc3QKK1ZDOV9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwudG1wbAorVkM5X1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsLnZjcHJvai5kaXN0CiBWQzlfU1JDVkNQUk9KX0RFUFMgPSAkKFZDOV9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKIFZDMTBfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsCiBWQzEwX0xJQlZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5kaXN0CiBWQzEwX0xJQlZDWFBST0pfREVQUyA9ICQoVkMxMF9MSUJUTVBMKSBNYWtlZmlsZS5hbSBsaWIvTWFrZWZpbGUuaW5jCi1WQzEwX1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbAotVkMxMF9TUkNWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnZjeHByb2ouZGlzdAorVkMxMF9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnRtcGwKK1ZDMTBfU1JDVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmRpc3QKIFZDMTBfU1JDVkNYUFJPSl9ERVBTID0gJChWQzEwX1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkMxMV9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnRtcGwKIFZDMTFfTElCVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmRpc3QKIFZDMTFfTElCVkNYUFJPSl9ERVBTID0gJChWQzExX0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKLVZDMTFfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy50bXBsCi1WQzExX1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMudmN4cHJvai5kaXN0CitWQzExX1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudG1wbAorVkMxMV9TUkNWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnZjeHByb2ouZGlzdAogVkMxMV9TUkNWQ1hQUk9KX0RFUFMgPSAkKFZDMTFfU1JDVE1QTCkgTWFrZWZpbGUuYW0gc3JjL01ha2VmaWxlLmluYwogCiBWQzEyX0xJQlRNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbAogVkMxMl9MSUJWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZGlzdAogVkMxMl9MSUJWQ1hQUk9KX0RFUFMgPSAkKFZDMTJfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkMxMl9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnRtcGwKLVZDMTJfU1JDVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybHNyYy52Y3hwcm9qLmRpc3QKK1ZDMTJfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC50bXBsCitWQzEyX1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudmN4cHJvai5kaXN0CiBWQzEyX1NSQ1ZDWFBST0pfREVQUyA9ICQoVkMxMl9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKLVZDX0RJU1QgPSBwcm9qZWN0cy9SRUFETUUJXAotIHByb2plY3RzL2J1aWxkLW9wZW5zc2wuYmF0CVwKLSBwcm9qZWN0cy9jaGVja3NyYy5iYXQJXAotIHByb2plY3RzL1dpbmRvd3MvVkM2L2N1cmwtYWxsLmRzdwlcCi0gcHJvamVjdHMvV2luZG93cy9WQzYvbGliL2xpYmN1cmwuZHN3IFwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy5kc3cgXAotIHByb2plY3RzL1dpbmRvd3MvVkM3L2N1cmwtYWxsLnNsbglcCi0gcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwuc2xuIFwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnNsbiBcCi0gcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybHNyYy5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsc3JjLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMC9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuICBcCi0gcHJvamVjdHMvV2luZG93cy9WQzExL2N1cmwtYWxsLnNsbglcCi0gcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvY3VybC1hbGwuc2xuCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnNsbgorVkMxNF9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnRtcGwKK1ZDMTRfTElCVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC52Y3hwcm9qLmRpc3QKK1ZDMTRfTElCVkNYUFJPSl9ERVBTID0gJChWQzE0X0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKK1ZDMTRfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC50bXBsCitWQzE0X1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudmN4cHJvai5kaXN0CitWQzE0X1NSQ1ZDWFBST0pfREVQUyA9ICQoVkMxNF9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCisKK1ZDX0RJU1QgPSBwcm9qZWN0cy9SRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvYnVpbGQtb3BlbnNzbC5iYXQgICAgICAgICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL2J1aWxkLXdvbGZzc2wuYmF0ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9jaGVja3NyYy5iYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzYvY3VybC1hbGwuZHN3ICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLmRzdyAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC5kc3cgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzcvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzcuMS9jdXJsLWFsbC5zbG4gICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwuc2xuICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM4L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzkvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEwL2N1cmwtYWxsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4gICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwuc2xuICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMi9jdXJsLWFsbC5zbG4gICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycyAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzE0L2N1cmwtYWxsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC5zbG4gICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzICBcCisgcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKIAogV0lOQlVJTERfRElTVCA9IHdpbmJ1aWxkL0JVSUxELldJTkRPV1MudHh0IHdpbmJ1aWxkL2dlbl9yZXNwX2ZpbGUuYmF0CVwKICB3aW5idWlsZC9NYWtlZmlsZUJ1aWxkLnZjIHdpbmJ1aWxkL01ha2VmaWxlLnZjCQkJCVwKQEAgLTExOSwxNyArMTM4LDE5IEBACiAKIEVYVFJBX0RJU1QgPSBDSEFOR0VTIENPUFlJTkcgbWFrZXRneiBNYWtlZmlsZS5kaXN0IGN1cmwtY29uZmlnLmluCVwKICBSRUxFQVNFLU5PVEVTIGJ1aWxkY29uZiBsaWJjdXJsLnBjLmluIE1hY09TWC1GcmFtZXdvcmsgc2NyaXB0cy96c2gucGwJXAotICQoQ01BS0VfRElTVCkgJChWQ19ESVNUKSAkKFdJTkJVSUxEX0RJU1QpIGxpYi9saWJjdXJsLnZlcnMuaW4KKyAkKENNQUtFX0RJU1QpICQoVkNfRElTVCkgJChXSU5CVUlMRF9ESVNUKSBsaWIvbGliY3VybC52ZXJzLmluICAgICAgICAgIFwKKyBidWlsZGNvbmYuYmF0CiAKIENMRUFORklMRVMgPSAkKFZDNl9MSUJEU1ApICQoVkM2X1NSQ0RTUCkgJChWQzdfTElCVkNQUk9KKSAkKFZDN19TUkNWQ1BST0opCVwKICAkKFZDNzFfTElCVkNQUk9KKSAkKFZDNzFfU1JDVkNQUk9KKSAkKFZDOF9MSUJWQ1BST0opICQoVkM4X1NSQ1ZDUFJPSikJXAogICQoVkM5X0xJQlZDUFJPSikgJChWQzlfU1JDVkNQUk9KKSAkKFZDMTBfTElCVkNYUFJPSikgJChWQzEwX1NSQ1ZDWFBST0opCVwKLSAkKFZDMTFfTElCVkNYUFJPSikgJChWQzExX1NSQ1ZDWFBST0opICQoVkMxMl9MSUJWQ1hQUk9KKSAkKFZDMTJfU1JDVkNYUFJPSikKKyAkKFZDMTFfTElCVkNYUFJPSikgJChWQzExX1NSQ1ZDWFBST0opICQoVkMxMl9MSUJWQ1hQUk9KKSAkKFZDMTJfU1JDVkNYUFJPSikJXAorICQoVkMxNF9MSUJWQ1hQUk9KKSAkKFZDMTRfU1JDVkNYUFJPSikKIAogYmluX1NDUklQVFMgPSBjdXJsLWNvbmZpZwogCiBTVUJESVJTID0gbGliIHNyYyBpbmNsdWRlCi1ESVNUX1NVQkRJUlMgPSAkKFNVQkRJUlMpIHRlc3RzIHBhY2thZ2VzIGRvY3MKK0RJU1RfU1VCRElSUyA9ICQoU1VCRElSUykgdGVzdHMgcGFja2FnZXMgZG9jcyBzY3JpcHRzCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKIHBrZ2NvbmZpZ19EQVRBID0gbGliY3VybC5wYwpAQCAtMTQ4LDEwICsxNjksMTAgQEAKIAlkb25lKQogCiBodG1sOgotCWNkIGRvY3M7IG1ha2UgaHRtbAorCWNkIGRvY3MgJiYgbWFrZSBodG1sCiAKIHBkZjoKLQljZCBkb2NzOyBtYWtlIHBkZgorCWNkIGRvY3MgJiYgbWFrZSBwZGYKIAogY2hlY2s6IHRlc3QgZXhhbXBsZXMgY2hlY2stZG9jcwogCkBAIC0yNjEsNiArMjgyLDkgQEAKIGNoZWNrc3JjOgogCWNkIGxpYiAmJiAkKE1BS0UpIGNoZWNrc3JjCiAJY2Qgc3JjICYmICQoTUFLRSkgY2hlY2tzcmMKKwljZCB0ZXN0cyAmJiAkKE1BS0UpIGNoZWNrc3JjCisJY2QgaW5jbHVkZS9jdXJsICYmICQoTUFLRSkgY2hlY2tzcmMKKwljZCBkb2NzL2V4YW1wbGVzICYmICQoTUFLRSkgY2hlY2tzcmMKIAogLlBIT05ZOiB2Yy1pZGUKIApAQCAtMjY5LDEwICsyOTMsMTIgQEAKICAkKFZDOF9MSUJWQ1BST0pfREVQUykgJChWQzhfU1JDVkNQUk9KX0RFUFMpICQoVkM5X0xJQlZDUFJPSl9ERVBTKQlcCiAgJChWQzlfU1JDVkNQUk9KX0RFUFMpICQoVkMxMF9MSUJWQ1hQUk9KX0RFUFMpICQoVkMxMF9TUkNWQ1hQUk9KX0RFUFMpCVwKICAkKFZDMTFfTElCVkNYUFJPSl9ERVBTKSAkKFZDMTFfU1JDVkNYUFJPSl9ERVBTKSAkKFZDMTJfTElCVkNYUFJPSl9ERVBTKQlcCi0gJChWQzEyX1NSQ1ZDWFBST0pfREVQUykKKyAkKFZDMTJfU1JDVkNYUFJPSl9ERVBTKSAkKFZDMTRfTElCVkNYUFJPSl9ERVBTKSAkKFZDMTRfU1JDVkNYUFJPSl9ERVBTKQogCUAod2luMzJfbGliX3NyY3M9JyQoTElCX0NGSUxFUyknOyBcCiAJd2luMzJfbGliX2hkcnM9JyQoTElCX0hGSUxFUykgY29uZmlnLXdpbjMyLmgnOyBcCiAJd2luMzJfbGliX3JjPSckKExJQl9SQ0ZJTEVTKSc7IFwKKwl3aW4zMl9saWJfdmF1dGhfc3Jjcz0nJChMSUJfVkFVVEhfQ0ZJTEVTKSc7IFwKKwl3aW4zMl9saWJfdmF1dGhfaGRycz0nJChMSUJfVkFVVEhfSEZJTEVTKSc7IFwKIAl3aW4zMl9saWJfdnRsc19zcmNzPSckKExJQl9WVExTX0NGSUxFUyknOyBcCiAJd2luMzJfbGliX3Z0bHNfaGRycz0nJChMSUJfVlRMU19IRklMRVMpJzsgXAogCXdpbjMyX3NyY19zcmNzPSckKENVUkxfQ0ZJTEVTKSc7IFwKQEAgLTI4Myw2ICszMDksOCBAQAogCVwKIAlzb3J0ZWRfbGliX3NyY3M9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3NyY3M7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKIAlzb3J0ZWRfbGliX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX2hkcnM7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKKwlzb3J0ZWRfbGliX3ZhdXRoX3NyY3M9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3ZhdXRoX3NyY3M7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKKwlzb3J0ZWRfbGliX3ZhdXRoX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3ZhdXRoX2hkcnM7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKIAlzb3J0ZWRfbGliX3Z0bHNfc3Jjcz1gZm9yIGZpbGUgaW4gJCR3aW4zMl9saWJfdnRsc19zcmNzOyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IHNvcnRgOyBcCiAJc29ydGVkX2xpYl92dGxzX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3Z0bHNfaGRyczsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBzb3J0YDsgXAogCXNvcnRlZF9zcmNfc3Jjcz1gZm9yIGZpbGUgaW4gJCR3aW4zMl9zcmNfc3JjczsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBzb3J0YDsgXApAQCAtMjkzLDEwICszMjEsMTEgQEAKIAlhd2tfY29kZT0nXAogZnVuY3Rpb24gZ2VuX2VsZW1lbnQodHlwZSwgZGlyLCBmaWxlKVwKIHtcCisgIHN1YigvdmF1dGhcLy8sICIiLCBmaWxlKTtcCiAgIHN1YigvdnRsc1wvLywgIiIsIGZpbGUpO1wKIFwKICAgc3BhY2VzPSIgICAgIjtcCi0gIGlmKGRpciA9PSAibGliXFx2dGxzIilcCisgIGlmKGRpciA9PSAibGliXFx2YXV0aCIgfHwgZGlyID09ICJsaWJcXHZ0bHMiKVwKICAgICB0YWJzPSIJCQkJIjtcCiAgIGVsc2VcCiAgICAgdGFicz0iCQkJIjtcCkBAIC0zNTAsNiArMzc5LDE0IEBACiAgICAgc3BsaXQobGliX3JjLCBhcnIpO1wKICAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliIiwgYXJyW3ZhbF0pO1wKICAgfVwKKyAgZWxzZSBpZigkJDAgPT0gIkNVUkxfTElCX1ZBVVRIX0NfRklMRVMiKSB7XAorICAgIHNwbGl0KGxpYl92YXV0aF9zcmNzLCBhcnIpO1wKKyAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliXFx2YXV0aCIsIGFyclt2YWxdKTtcCisgIH1cCisgIGVsc2UgaWYoJCQwID09ICJDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTIikge1wKKyAgICBzcGxpdChsaWJfdmF1dGhfaGRycywgYXJyKTtcCisgICAgZm9yKHZhbCBpbiBhcnIpIGdlbl9lbGVtZW50KHByb2pfdHlwZSwgImxpYlxcdmF1dGgiLCBhcnJbdmFsXSk7XAorICB9XAogICBlbHNlIGlmKCQkMCA9PSAiQ1VSTF9MSUJfVlRMU19DX0ZJTEVTIikge1wKICAgICBzcGxpdChsaWJfdnRsc19zcmNzLCBhcnIpO1wKICAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliXFx2dGxzIiwgYXJyW3ZhbF0pO1wKQEAgLTM5Myw2ICs0MzAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDNl9MSUJUTVBMKSA+ICQoVkM2X0xJQkRTUCkgfHwgeyBleGl0IDE7IH07IFwKQEAgLTQxMSw2ICs0NTAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDN19MSUJUTVBMKSA+ICQoVkM3X0xJQlZDUFJPSikgfHwgeyBleGl0IDE7IH07IFwKQEAgLTQyOSw2ICs0NzAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDNzFfTElCVE1QTCkgPiAkKFZDNzFfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDQ3LDYgKzQ5MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkM4X0xJQlRNUEwpID4gJChWQzhfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDY1LDYgKzUxMCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkM5X0xJQlRNUEwpID4gJChWQzlfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDgzLDYgKzUzMCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMF9MSUJUTVBMKSA+ICQoVkMxMF9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTAxLDYgKzU1MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMV9MSUJUTVBMKSA+ICQoVkMxMV9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTE5LDYgKzU3MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMl9MSUJUTVBMKSA+ICQoVkMxMl9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTMwLDQgKzU4MywyNCBAQAogCQktdiBzcmNfcmM9IiQkd2luMzJfc3JjX3JjIiBcCiAJCS12IHNyY194X3NyY3M9IiQkc29ydGVkX3NyY194X3NyY3MiIFwKIAkJLXYgc3JjX3hfaGRycz0iJCRzb3J0ZWRfc3JjX3hfaGRycyIgXAotCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMl9TUkNUTVBMKSA+ICQoVkMxMl9TUkNWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTspCisJCSIkJGF3a19jb2RlIiAkKHNyY2RpcikvJChWQzEyX1NSQ1RNUEwpID4gJChWQzEyX1NSQ1ZDWFBST0opIHx8IHsgZXhpdCAxOyB9OyBcCisJXAorCWVjaG8gImdlbmVyYXRpbmcgJyQoVkMxNF9MSUJWQ1hQUk9KKSciOyBcCisJYXdrIC12IHByb2pfdHlwZT12Y3hwcm9qIFwKKwkJLXYgbGliX3NyY3M9IiQkc29ydGVkX2xpYl9zcmNzIiBcCisJCS12IGxpYl9oZHJzPSIkJHNvcnRlZF9saWJfaGRycyIgXAorCQktdiBsaWJfcmM9IiQkd2luMzJfbGliX3JjIiBcCisJCS12IGxpYl92YXV0aF9zcmNzPSIkJHNvcnRlZF9saWJfdmF1dGhfc3JjcyIgXAorCQktdiBsaWJfdmF1dGhfaGRycz0iJCRzb3J0ZWRfbGliX3ZhdXRoX2hkcnMiIFwKKwkJLXYgbGliX3Z0bHNfc3Jjcz0iJCRzb3J0ZWRfbGliX3Z0bHNfc3JjcyIgXAorCQktdiBsaWJfdnRsc19oZHJzPSIkJHNvcnRlZF9saWJfdnRsc19oZHJzIiBcCisJCSIkJGF3a19jb2RlIiAkKHNyY2RpcikvJChWQzE0X0xJQlRNUEwpID4gJChWQzE0X0xJQlZDWFBST0opIHx8IHsgZXhpdCAxOyB9OyBcCisJXAorCWVjaG8gImdlbmVyYXRpbmcgJyQoVkMxNF9TUkNWQ1hQUk9KKSciOyBcCisJYXdrIC12IHByb2pfdHlwZT12Y3hwcm9qIFwKKwkJLXYgc3JjX3NyY3M9IiQkc29ydGVkX3NyY19zcmNzIiBcCisJCS12IHNyY19oZHJzPSIkJHNvcnRlZF9zcmNfaGRycyIgXAorCQktdiBzcmNfcmM9IiQkd2luMzJfc3JjX3JjIiBcCisJCS12IHNyY194X3NyY3M9IiQkc29ydGVkX3NyY194X3NyY3MiIFwKKwkJLXYgc3JjX3hfaGRycz0iJCRzb3J0ZWRfc3JjX3hfaGRycyIgXAorCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxNF9TUkNUTVBMKSA+ICQoVkMxNF9TUkNWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTspCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5kaXN0IGIvTWFrZWZpbGUuZGlzdAppbmRleCBmMGY1MGQ4Li4zMjllNGYzIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5kaXN0CisrKyBiL01ha2VmaWxlLmRpc3QKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2Niw2ICs1NjYsMTcgQEAKIAlAZWNobyAiZ2VuZXJhdGUgJEAiCiAJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxMi9nIiAtZSAicy9WQzYvVkMxMi9nIiBzcmMvTWFrZWZpbGUudmM2ID4gc3JjL01ha2VmaWxlLnZjMTIKIAorIyBWQzE0IG1ha2VmaWxlcyBhcmUgZm9yIHVzZSB3aXRoIFZTMjAxNQordmMxNDogbGliL01ha2VmaWxlLnZjMTQgc3JjL01ha2VmaWxlLnZjMTQKKworbGliL01ha2VmaWxlLnZjMTQ6IGxpYi9NYWtlZmlsZS52YzYKKwlAZWNobyAiZ2VuZXJhdGUgJEAiCisJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxNC9nIiAtZSAicy9WQzYvVkMxNC9nIiBsaWIvTWFrZWZpbGUudmM2ID4gbGliL01ha2VmaWxlLnZjMTQKKworc3JjL01ha2VmaWxlLnZjMTQ6IHNyYy9NYWtlZmlsZS52YzYKKwlAZWNobyAiZ2VuZXJhdGUgJEAiCisJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxNC9nIiAtZSAicy9WQzYvVkMxNC9nIiBzcmMvTWFrZWZpbGUudmM2ID4gc3JjL01ha2VmaWxlLnZjMTQKKwogY2EtYnVuZGxlOiBsaWIvbWstY2EtYnVuZGxlLnBsCiAJQGVjaG8gImdlbmVyYXRlIGEgZnJlc2ggY2EtYnVuZGxlLmNydCIKIAlAcGVybCAkPCAtYiAtbCAtdSBsaWIvY2EtYnVuZGxlLmNydApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGQ5MmM3ZjguLmYwYjNiOTMgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTI0LDcgKzI0LDcgQEAKIENPTlRBQ1QKIAogICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgcXVlc3Rpb25zLCBpZGVhcyBvciBzdWdnZXN0aW9ucywgcGxlYXNlIGNvbnRhY3QgdXMKLSAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvCiAKICAgQWxsIGNvbnRyaWJ1dG9ycyB0byB0aGUgcHJvamVjdCBhcmUgbGlzdGVkIGluIHRoZSBUSEFOS1MgZG9jdW1lbnQuCiAKQEAgLTMyLDEzICszMiwxMyBAQAogCiAgIFZpc2l0IHRoZSBjdXJsIHdlYiBzaXRlIGZvciB0aGUgbGF0ZXN0IG5ld3MgYW5kIGRvd25sb2FkczoKIAotICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlLworICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS8KIAogR0lUCiAKICAgVG8gZG93bmxvYWQgdGhlIHZlcnkgbGF0ZXN0IHNvdXJjZSBvZmYgdGhlIEdJVCBzZXJ2ZXIgZG8gdGhpczoKIAotICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwuZ2l0CisgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwuZ2l0CiAKICAgKHlvdSdsbCBnZXQgYSBkaXJlY3RvcnkgbmFtZWQgY3VybCBjcmVhdGVkLCBmaWxsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUpCiAKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjBjYTU1Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNDUgQEAKKworQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBzcGVjaWZpZWQgd2l0aCBVUkwKK3N5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBjdXJsIGJ5IHJlYWRpbmcgW3RoZSBjdXJsLjEgbWFuCitwYWdlXShodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCkgb3IgW3RoZSBNQU5VQUwKK2RvY3VtZW50XShodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnVhbC5odG1sKS4gRmluZCBvdXQgaG93IHRvIGluc3RhbGwgQ3VybAorYnkgcmVhZGluZyBbdGhlIElOU1RBTEwgZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaW5zdGFsbC5odG1sKS4KKworbGliY3VybCBpcyB0aGUgbGlicmFyeSBjdXJsIGlzIHVzaW5nIHRvIGRvIGl0cyBqb2IuIEl0IGlzIHJlYWRpbHkgYXZhaWxhYmxlIHRvCitiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgW3RoZSBsaWJjdXJsLjMgbWFuCitwYWdlXShodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvbGliY3VybC5odG1sKSB0byBsZWFybiBob3chCisKK1lvdSBmaW5kIGFuc3dlcnMgdG8gdGhlIG1vc3QgZnJlcXVlbnQgcXVlc3Rpb25zIHdlIGdldCBpbiBbdGhlIEZBUQorZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvZmFxLmh0bWwpLgorCitTdHVkeSBbdGhlIENPUFlJTkcgZmlsZV0oaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbCkgZm9yCitkaXN0cmlidXRpb24gdGVybXMgYW5kIHNpbWlsYXIuIElmIHlvdSBkaXN0cmlidXRlIGN1cmwgYmluYXJpZXMgb3Igb3RoZXIKK2JpbmFyaWVzIHRoYXQgaW52b2x2ZSBsaWJjdXJsLCB5b3UgbWlnaHQgZW5qb3kgW3RoZSBMSUNFTlNFLU1JWElORworZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2xlZ2FsL2xpY21peC5odG1sKS4KKworIyMgQ09OVEFDVAorCitJZiB5b3UgaGF2ZSBwcm9ibGVtcywgcXVlc3Rpb25zLCBpZGVhcyBvciBzdWdnZXN0aW9ucywgcGxlYXNlIGNvbnRhY3QgdXMgYnkKK3Bvc3RpbmcgdG8gYSBzdWl0YWJsZSBbbWFpbGluZyBsaXN0XShodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLykuCisKK0FsbCBjb250cmlidXRvcnMgdG8gdGhlIHByb2plY3QgYXJlIGxpc3RlZCBpbiBbdGhlIFRIQU5LUworZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvdGhhbmtzLmh0bWwpLgorCisjIyBXRUIgU0lURQorCitWaXNpdCB0aGUgW2N1cmwgd2ViIHNpdGVdKGh0dHBzOi8vY3VybC5oYXh4LnNlLykgZm9yIHRoZSBsYXRlc3QgbmV3cyBhbmQKK2Rvd25sb2Fkcy4KKworIyMgR0lUCisKK1RvIGRvd25sb2FkIHRoZSB2ZXJ5IGxhdGVzdCBzb3VyY2Ugb2ZmIHRoZSBHSVQgc2VydmVyIGRvIHRoaXM6CisKKyAgICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC5naXQKKworKHlvdSdsbCBnZXQgYSBkaXJlY3RvcnkgbmFtZWQgY3VybCBjcmVhdGVkLCBmaWxsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUpCisKKyMjIE5PVElDRQorCitDdXJsIGNvbnRhaW5zIHBpZWNlcyBvZiBzb3VyY2UgY29kZSB0aGF0IGlzIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBLdW5nbGlnYQorVGVrbmlza2EgSMO2Z3Nrb2xhbi4gVGhpcyBub3RpY2UgaXMgaW5jbHVkZWQgaGVyZSB0byBjb21wbHkgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbiB0ZXJtcy4KZGlmZiAtLWdpdCBhL1JFTEVBU0UtTk9URVMgYi9SRUxFQVNFLU5PVEVTCmluZGV4IDgyZjAzNDguLmNhMzE0MmMgMTAwNjQ0Ci0tLSBhL1JFTEVBU0UtTk9URVMKKysrIGIvUkVMRUFTRS1OT1RFUwpAQCAtMSwxNDUgKzEsNTcgQEAKLUN1cmwgYW5kIGxpYmN1cmwgNy40My4wCitDdXJsIGFuZCBsaWJjdXJsIDcuNDkuMQogCi0gUHVibGljIGN1cmwgcmVsZWFzZXM6ICAgICAgICAgMTQ3Ci0gQ29tbWFuZCBsaW5lIG9wdGlvbnM6ICAgICAgICAgMTc2Ci0gY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnM6ICAgMjE5Ci0gUHVibGljIGZ1bmN0aW9ucyBpbiBsaWJjdXJsOiAgNTgKLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAxMjkxCi0KLVRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Ci0KLSBvIEFkZGVkIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FWzExXQotIG8gQWRkZWQgQ1VSTE9QVF9TRVJWSUNFX05BTUVbMTJdCi0gbyBOZXcgY3VybCBvcHRpb246IC0tcHJveHktc2VydmljZS1uYW1lWzEzXQotIG8gTWV3IGN1cmwgb3B0aW9uOiAtLXNlcnZpY2UtbmFtZSBbMTRdCi0gbyBOZXcgY3VybCBvcHRpb246IC0tZGF0YS1yYXcgWzVdCi0gbyBBZGRlZCBDVVJMT1BUX1BJUEVXQUlUIFsxNV0KLSBvIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxleGluZyB0cmFuc2ZlcnMgdXNpbmcgSFRUUC8yLCBlbmFibGUgdGhpcwotICAgd2l0aCB0aGUgbmV3IENVUkxQSVBFX01VTFRJUExFWCBiaXQgZm9yIENVUkxNT1BUX1BJUEVMSU5JTkcgWzE2XQotIG8gSFRUUC8yOiByZXF1aXJlcyBuZ2h0dHAyIDEuMC4wIG9yIGxhdGVyCi0gbyBzY3JpcHRzOiBhZGQgenNoLnBsIGZvciBnZW5lcmF0aW5nIHpzaCBjb21wbGV0aW9uCi0gbyBjdXJsLmg6IGFkZCBDVVJMX0hUVFBfVkVSU0lPTl8yCisgUHVibGljIGN1cmwgcmVsZWFzZXM6ICAgICAgICAgMTU1CisgQ29tbWFuZCBsaW5lIG9wdGlvbnM6ICAgICAgICAgMTg1CisgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnM6ICAgMjI0CisgUHVibGljIGZ1bmN0aW9ucyBpbiBsaWJjdXJsOiAgNjEKKyBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAxNDA0CiAKIFRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGJ1Z2ZpeGVzOgogCi0gbyBDVkUtMjAxNS0zMjM2OiBsaW5nZXJpbmcgSFRUUCBjcmVkZW50aWFscyBpbiBjb25uZWN0aW9uIHJlLXVzZSBbMzBdCi0gbyBDVkUtMjAxNS0zMjM3OiBTTUIgc2VuZCBvZmYgdW5yZWxhdGVkIG1lbW9yeSBjb250ZW50cyBbMzFdCi0gbyBuc3M6IGZpeCBjb21waWxhdGlvbiBmYWlsdXJlIHdpdGggb2xkIHZlcnNpb25zIG9mIE5TUyBbMV0KLSBvIGN1cmxfZWFzeV9nZXRpbmZvLjM6IGRvY3VtZW50ICdpbnRlcm5hbHMnIGluIENVUkxJTkZPX1RMU19TRVNTSU9OCi0gbyBzY2hhbm5lbC5jOiBGaXggcG9zc2libGUgU0VDX0VfQlVGRkVSX1RPT19TTUFMTCBlcnJvcgotIG8gQ3VybF9vc3NsX2luaXQ6IGxvYWQgYnVpbHRpbiBtb2R1bGVzIFsyXQotIG8gY29uZmlndXJlOiBmb2xsb3ctdXAgZml4IGZvciBrcmI1LWNvbmZpZyBbM10KLSBvIHNhc2xfc3NwaTogUG9wdWxhdGUgZG9tYWluIGZyb20gdGhlIHJlYWxtIGluIHRoZSBjaGFsbGVuZ2UgWzRdCi0gbyBuZXRyYzogc3VwcG9ydCAnZGVmYXVsdCcgdG9rZW4KLSBvIFJFQURNRTogY29udmVydCB0byBVVEYtOAotIG8gY3lhc3NsOiBJbXBsZW1lbnQgcHVibGljIGtleSBwaW5uaW5nCi0gbyBuc3M6IGltcGxlbWVudCBwdWJsaWMga2V5IHBpbm5pbmcgZm9yIE5TUyBiYWNrZW5kCi0gbyBtaW5ndyBidWlsZDogYWRkIGFyY2ggLW0zMi8tbTY0IHRvIExERkxBR1MKLSBvIHNjaGFubmVsOiBGaXggb3V0IG9mIGJvdW5kcyBhcnJheSBbNl0KLSBvIGNvbmZpZ3VyZTogcmVtb3ZlIGF1dG9nZW5lcmF0ZWQgZmlsZXMgYnkgYXV0b2NvbmYKLSBvIGNvbmZpZ3VyZTogcmVtb3ZlIC0tYXV0b21ha2UgZnJvbSBsaWJ0b29saXplIGNhbGwKLSBvIGFjaW5jbHVkZS5tNDogZml4IHNoZWxsIHRlc3QgZm9yIGRlZmF1bHQgQ0EgY2VydCBidW5kbGUvcGF0aAotIG8gc2NoYW5uZWw6IGZpeCByZWdyZXNzaW9uIGluIHNjaGFubmVsX3JlY3YgWzddCi0gbyBvcGVuc3NsOiBza2lwIHRyYWNlIG91dHB1dHMgZm9yIHNzbF92ZXIgPT0gMCBbOF0KLSBvIGdudXRsczogcHJvcGVybHkgcmV0cmlldmUgY2VydGlmaWNhdGUgc3RhdHVzCi0gbyBuZXRyYzogUmVhZCBpbiB0ZXh0IG1vZGUgd2hlbiBjeWd3aW4gWzldCi0gbyB3aW5idWlsZDogRG9jdW1lbnQgdGhlIG9wdGlvbiB1c2VkIHRvIHN0YXRpY2FsbHkgbGluayB0aGUgQ1JUIFsxMF0KLSBvIEZUUDogTWFrZSBFUFNWIHVzZSB0aGUgY29udHJvbCBJUCBhZGRyZXNzIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBob3N0Ci0gbyBGVFA6IGZpeCBkYW5nbGluZyBjb25uLT5pcF9hZGRyIGRlcmVmZXJlbmNlIG9uIHZlcmJvc2UgRVBTVgotIG8gY29ubmNhY2hlOiBrZWVwIGJ1bmRsZXMgb24gaG9zdCtwb3J0IGJhc2VzLCBub3Qgb25seSBob3N0IG5hbWVzCi0gbyBydW50ZXN0cy5wbDogdXNlICdoMmMnIG5vdywgbm8gLTE0IGFueW1vcmUKLSBvIGN1cmx2ZXI6IGludHJvZHVjaW5nIG5ldyB2ZXJzaW9uIG51bWJlciAoY2hlY2tpbmcpIG1hY3JvcwotIG8gb3BlbnNzbDogYm9yaW5nc3NsIGJ1aWxkIGJyZWthZ2UsIHVzZSBTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2sgWzE3XQotIG8gQ1VSTE9QVF9QT1NURklFTERTLjM6IGNvcnJlY3QgdmFyaWFibGUgbmFtZXMgWzE4XQotIG8gY3VybF9lYXN5X3VuZXNjYXBlLjM6IHVwZGF0ZSBSRkMgcmVmZXJlbmNlIFsxOV0KLSBvIGdudXRsczogZG9uJ3QgZmFpbCBvbiBub24tZmF0YWwgYWxlcnRzIGR1cmluZyBoYW5kc2hha2UKLSBvIHRlc3RjdXJsLnBsOiBhbGxvdyBzb3VyY2UgdG8gYmUgaW4gYW4gYXJiaXRyYXJ5IGRpcmVjdG9yeQotIG8gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMzogb25seSB3b3JrcyB3aXRoIGEgSFRUUCBwcm94eQotIG8gU1NQSS1lcnJvcjogQ2hhbmdlIFNFQ19FX0lMTEVHQUxfTUVTU0FHRSBkZXNjcmlwdGlvbiBbMjBdCi0gbyBwYXJzZV9wcm94eTogc3dpdGNoIG9mZiB0dW5uZWxpbmcgaWYgbm9uLUhUVFAgcHJveHkgWzIxXQotIG8gc2hhcmVfaW5pdDogZml4IE9PTSBjcmFzaAotIG8gcGVybDogcmVtb3ZlIHN1YmRpciwgbm90IHRvdWNoZWQgaW4gOSB5ZWFycwotIG8gQ1VSTE9QVF9DT09LSUVMSVNULjM6IEFkZCBleGFtcGxlCi0gbyBDVVJMT1BUX0NPT0tJRS4zOiBFeHBsYWluIHRoYXQgdGhlIGNvb2tpZXMgd29uJ3QgYmUgbW9kaWZpZWQgWzIyXQotIG8gQ1VSTE9QVF9DT09LSUVMSVNULjM6IEV4cGxhaW4gU2V0LUNvb2tpZSB3aXRob3V0IGEgZG9tYWluIFsyM10KLSBvIEZBUTogSG93IGRvIEkgcG9ydCBsaWJjdXJsIHRvIG15IE9TPwotIG8gb3BlbnNzbDogVXNlIFRMU19jbGllbnRfbWV0aG9kIGZvciBPcGVuU1NMIDEuMS4wKwotIG8gSFRUUC1OVExNOiBmYWlsIGF1dGggb24gY29ubmVjdGlvbiBjbG9zZSBpbnN0ZWFkIG9mIGxvb3BpbmcgWzI0XQotIG8gY3VybF9zZXR1cDogQWRkIG1hY3JvcyBmb3IgRk9QRU5fUkVBRFRFWFQsIEZPUEVOX1dSSVRFVEVYVCBbMjVdCi0gbyBjdXJsX2dldGRhdGUuMzogdXBkYXRlIFJGQyByZWZlcmVuY2UKLSBvIGN1cmxfbXVsdGlfaW5mb19yZWFkLjM6IGFkZGVkIGV4YW1wbGUKLSBvIGN1cmxfbXVsdGlfcGVyZm9ybS4zOiBhZGRlZCBleGFtcGxlCi0gbyBjdXJsX211bHRpX3RpbWVvdXQuMzogYWRkZWQgZXhhbXBsZQotIG8gY29va2llOiBTdG9wIGV4cG9ydGluZyBhbnktZG9tYWluIGNvb2tpZXMgWzI2XQotIG8gb3BlbnNzbDogcmVtb3ZlIGR1bW15IGNhbGxiYWNrIHVzZSBmcm9tIFNTTF9DVFhfc2V0X3ZlcmlmeSgpCi0gbyBvcGVuc3NsOiByZW1vdmUgU1NMX2dldF9zZXNzaW9uKCktdXNpbmcgY29kZQotIG8gb3BlbnNzbDogcmVtb3ZlZCBVU0VSREFUQV9JTl9QV0RfQ0FMTEJBQ0sga2x1ZGdlCi0gbyBvcGVuc3NsOiByZW1vdmVkIGVycm9yIHN0cmluZyAjaWZkZWYKLSBvIG9wZW5zc2w6IEZpeCB2ZXJpZmljYXRpb24gb2Ygc2VydmVyLXNlbnQgbGVnYWN5IGludGVybWVkaWF0ZXMgWzI3XQotIG8gZG9jczogbWFuIHBhZ2UgaW5kZW50YXRpb24gYW5kIHN5bnRheCBmaXhlcwotIG8gZG9jczogU3BlbGxpbmcgZml4ZXMKLSBvIGZvcGVuLmM6IGZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncwotIG8gQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT046IHJldHVybiBlcnJvciBhdCBvbmNlIFsyOF0KLSBvIHNjaGFubmVsOiBBZGQgc3VwcG9ydCBmb3Igb3B0aW9uYWwgY2xpZW50IGNlcnRpZmljYXRlcwotIG8gYnVpbGQ6IFByb3Blcmx5IGRldGVjdCBPcGVuU1NMIDEuMC4yIHdoZW4gdXNpbmcgY29uZmlndXJlCi0gbyB1cmxkYXRhOiBzdG9yZSBQT1NUIHNpemUgaW4gc3RhdGUuaW5maWxlc2l6ZSB0b28gWzI5XQotIG8gc2VjdXJpdHk6Y2hvb3NlX21lY2ggcmVtb3ZlIGRlYWQgY29kZQotIG8gcnRzcF9kbzogcmVtb3ZlIGRlYWQgY29kZQotIG8gZG9jczogbWFueSBIVFRQIFVSSXMgY2hhbmdlZCB0byBIVFRQUwotIG8gc2NoYW5uZWw6IHNjaGFubmVsX3JlY3Ygb3ZlcmhhdWwgWzMyXQorIG8gV2luZG93czogcHJldmVudCBETEwgaGlqYWNraW5nLCBDVkUtMjAxNi00ODAyIFsxMV0KKyBvIGRpc3Q6IGluY2x1ZGUgbWFucGFnZS1zY2FuLnBsLCBucm9mZi1zY2FuLnBsIGFuZCBDSEVDS1NSQy5tZCBbMV0KKyBvIHNjaGFubmVsOiBmaXggY29tcGlsZSBicmVhayB3aXRoIE1TVkMgWFAgdG9vbHNldCBbMl0KKyBvIGN1cmxidWlsZC5oLmRpc3Q6IGNoZWNrIF9fTFA2NF9fIGFzIHdlbGwgdG8gZml4IE1JUFMgYnVpbGQgWzNdCisgbyBkaXN0OiBpbmNsdWRlIGN1cmxfbXVsdGlfc29ja2V0X2FsbC4zIFs0XQorIG8gaHR0cDI6IHVzZSBIVFRQLzIgaW4gdGhlIEhUVFAvMS4xLWFsaWtlIHJlc3BvbnNlCisgbyBvcGVuc3NsOiBFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZSgpIGlzIGRlcHJlY2F0ZWQgaW4gbGF0ZXN0IDEuMS4wCisgbyBDVVJMT1BUX0NPTk5FQ1RfVE8uMzogdXNlciBtdXN0IG5vdCBmcmVlIHRoZSBsaXN0IHByZW1hdHVyZWx5IFs1XQorIG8gbGliY3VybC5tNDogQXZvaWQgb2Jzb2xldGUgd2FybmluZyBbNl0KKyBvIHdpbmJ1aWxkL01ha2VmaWxlLnZjOiBGaXggY2hlY2sgb24gU1NMLCBNQkVEVExTLCBXSU5TU0wgZXhjbHVzaXZpdHkgWzddCisgbyBjdXJsX211bHRpYnl0ZTogZml4IGNvbXBpbGVyIGVycm9yCisgbyBvcGVuc3NsOiBjbGVhbnVwIG11c3QgZnJlZSBjb21wcmVzc2lvbiBtZXRob2RzIChtZW1vcnkgbGVhaykgWzhdCisgbyBtYmVkdGxzOiBmaXggaW5jbHVkZXMgc28gc25wcmludGYoKSB3b3JrcyBbOV0KKyBvIGNoZWNrc3JjLnBsOiBBZGRlZCB2YXJpYW50cyBvZiBzdHJjYXQoKSAmIHN0cm5jYXQoKSB0byBiYW5uZWQgZnVuY3Rpb24gbGlzdAorIG8gY29udHJpYnV0b3JzLnNoOiBiZXR0ZXIgZ3JlcCBwYXR0ZXJuIGFuZCBzaG93IEdpdEh1YiB1c2VybmFtZSBbMTBdCisgbyBzc2g6IGZpeCBidWlsZCBmb3IgbGlic3NoMiBiZWZvcmUgMS4yLjYgWzEyXQorIG8gY3VybF9zaGFyZV9zZXRvcHQuMzogQWRkIG1pbiB2ZXIgbmVlZGVkIGZvciBzc2wgc2Vzc2lvbiBsb2NrIFsxM10KIAogVGhpcyByZWxlYXNlIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcga25vd24gYnVnczoKIAotIG8gc2VlIGRvY3MvS05PV05fQlVHUyAoaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2tub3duYnVncy5odG1sKQorIG8gc2VlIGRvY3MvS05PV05fQlVHUyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9rbm93bmJ1Z3MuaHRtbCkKIAogVGhpcyByZWxlYXNlIHdvdWxkIG5vdCBoYXZlIGxvb2tlZCBsaWtlIHRoaXMgd2l0aG91dCBoZWxwLCBjb2RlLCByZXBvcnRzIGFuZAogYWR2aWNlIGZyb20gZnJpZW5kcyBsaWtlIHRoZXNlOgogCi0gIEFsZXNzYW5kcm8gR2hlZGluaSwgQWxleGFuZGVyIER5YWdpbGV2LCBBbmRlcnMgQmFra2VuLCBBbnRob255IEF2aW5hLAotICBBc2hpc2ggU2h1a2xhLCBCZXJ0IEh1aWpiZW4sIEJyaWFuIENocmlzbWFuLCBCcmlhbiBQcm9kb2VobCwgQ2hyaXMgQXJhbWFuLAotICBEYWdvYmVydCBNaWNoZWxzZW4sIERhbiBGYW5kcmljaCwgRGFuaWVsIE1lbGFuaSwgRGFuaWVsIFN0ZW5iZXJnLAotICBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiwgRHJha2UgQXJjb25pcywgRWdvbiBFY2tlcnQsIEZyYW5rIE1laWVyLCBGcmVkIFN0bHVrYSwKLSAgR2lzbGUgVmFuZW0sIEdyYW50IFBhbm5lbGwsIElzYWFjIEJvdWtyaXMsIEplbnMgUmFudGlsLCBKb2VsIERlcG9vdGVyLAotICBLYW1pbCBEdWRrYSwgTGludXMgTmllbHNlbiBGZWx0emluZywgTGludXMgTmllbHNlbiBGZWx0emluZyBGZWx0emluZywKLSAgTGl2aXUgQ2hpcmN1LCBNYXJjIEhvZXJza2VuLCBNaWNoYWVsIE9zaXBvdiwgT3JlbiBTb3Vyb3Vqb24sIE9yZ2FkIFNoYW5laCwKLSAgUGF0cmljayBNb25uZXJhdCwgUGF0cmljayBSYXBpbiwgUGF1bCBIb3dhcnRoLCBQYXVsIE9saXZlciwgUmFmYXllbCBNa3J0Y2h5YW4sCi0gIFJheSBTYXRpcm8sIFNlYW4gQm91ZHJlYXUsIFRhdHN1aGlybyBUc3VqaWthd2EsIFRvbWFzIFRvbWVjZWssIFZpa3RvciBTemFrw6F0cywKLSAgVmlsbGUgU2t5dHTDpCwgWWVoZXprZWwgSG9yb3dpdHosCi0gICg0MyBjb250cmlidXRvcnMpCisgIEFsZXhhbmRlciBUcmF1ZCwgRGFuaWVsIFN0ZW5iZXJnLCBHaXNsZSBWYW5lbSwgSmFuIEVocmhhcmR0LAorICBqdmVhemV5IG9uIGdpdGh1YiwgTWFyY2VsIFJhYWQsIE1pY2hhZWwgS2F1Zm1hbm4sIE1pY2hhZWwgV2FsbG5lciwKKyAgTW90aSBBdnJhaGFtaSwgUGF1bCBIb3dhcnRoLCBSYXkgU2F0aXJvLCBTdGV2ZSBIb2xtZSwgVG9tYXMgSmFrb2Jzc29uLAorICAoMTMgY29udHJpYnV0b3JzKQogCiAgICAgICAgIFRoYW5rcyEgKGFuZCBzb3JyeSBpZiBJIGZvcmdvdCB0byBtZW50aW9uIHNvbWVvbmUpCiAKIFJlZmVyZW5jZXMgdG8gYnVnIHJlcG9ydHMgYW5kIGRpc2N1c3Npb25zIG9uIGlzc3VlczoKIAotIFsxXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNC8wMDk1Lmh0bWwKLSBbMl0gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvcHVsbC8yMDYKLSBbM10gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvY29tbWl0LzViNjY4NjA2NTI3NjEzMTc5ZDAzNDlmMjFiNGFiMGRmMjk3MWUzZDIjY29tbWl0Y29tbWVudC0xMDQ3MzQ0NQotIFs0XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9wdWxsLzE0MQotIFs1XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMTk4Ci0gWzZdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA0LzAxOTkuaHRtbAotIFs3XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjQ0Ci0gWzhdID0gaHR0cHM6Ly9naXRodWIuY29tL2JhZ2Rlci9jdXJsL2lzc3Vlcy8yMTkKLSBbOV0gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvcHVsbC8yNTgKLSBbMTBdID0gaHR0cHM6Ly9naXRodWIuY29tL2JhZ2Rlci9jdXJsL2lzc3Vlcy8yNTQKLSBbMTFdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuaHRtbAotIFsxMl0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9DVVJMT1BUX1NFUlZJQ0VfTkFNRS5odG1sCi0gWzEzXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9tYW5wYWdlLmh0bWwjLS1wcm94eS1zZXJ2aWNlLW5hbWUKLSBbMTRdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLXNlcnZpY2UtbmFtZQotIFsxNV0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9DVVJMT1BUX1BJUEVXQUlULmh0bWwKLSBbMTZdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE1PUFRfUElQRUxJTklORy5odG1sCi0gWzE3XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjc1Ci0gWzE4XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjgxCi0gWzE5XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjgyCi0gWzIwXSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjY3Ci0gWzIxXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNS8wMDU2Lmh0bWwKLSBbMjJdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA1LzAxMTUuaHRtbAotIFsyM10gPSBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTUtMDUvMDEzNy5odG1sCi0gWzI0XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjU2Ci0gWzI1XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9wdWxsLzI1OCNpc3N1ZWNvbW1lbnQtMTA3MDkzMDU1Ci0gWzI2XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjkyCi0gWzI3XSA9IGh0dHBzOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0zNjIxJnVzZXI9Z3Vlc3QmcGFzcz1ndWVzdAotIFsyOF0gPSBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTUtMDYvMDA0Ny5odG1sCi0gWzI5XSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNi8wMDE5Lmh0bWwKLSBbMzBdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE1MDYxN0EuaHRtbAotIFszMV0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTUwNjE3Qi5odG1sCi0gWzMyXSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjQ0CisgWzFdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNi0wNS8wMTEzLmh0bWwKKyBbMl0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODEyCisgWzNdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgxMworIFs0XSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MTYKKyBbNV0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODE5CisgWzZdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgyMQorIFs3XSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MTgKKyBbOF0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODE3CisgWzldID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNi0wNS8wMTk2Lmh0bWwKKyBbMTBdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgyNAorIFsxMV0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE2MDUyNy5odG1sCisgWzEyXSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MzEKKyBbMTNdID0gaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvODI2CmRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKaW5kZXggZjAxMzJhNS4uNjhhMzcxMCAxMDA2NDQKLS0tIGEvYWNpbmNsdWRlLm00CisrKyBiL2FjaW5jbHVkZS5tNApAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjAsNyArMjAsNiBAQAogIwogIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi0KIGRubCBDVVJMX0NIRUNLX0RFRiAoU1lNQk9MLCBbSU5DTFVERVNdLCBbU0lMRU5UXSkKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgVXNlIHRoZSBDIHByZXByb2Nlc3NvciB0byBmaW5kIG91dCBpZiB0aGUgZ2l2ZW4gb2JqZWN0LXN0eWxlIHN5bWJvbApAQCAtMzEsNiArMzAsMTAgQEAKIGRubCBhY3R1YWxseSBiZSBhIHNpbmdsZSBkb3VibGUtcXVvdGVkIHN0cmluZyBjb25jYXRlbmF0aW5nIGFsbCB0aGVtLgogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19ERUZdLCBbCisgIEFDX1JFUVVJUkUoW0NVUkxfQ1BQX1BdKWRubAorICBPTERDUFBGTEFHUz0kQ1BQRkxBR1MKKyAgIyBDUFBQRkxBR1MgY29tZXMgZnJvbSBDVVJMX0NQUF9QCisgIENQUEZMQUdTPSIkQ1BQUEZMQUdTIgogICBBU19WQVJfUFVTSERFRihbYWNfSGF2ZURlZl0sIFtjdXJsX2N2X2hhdmVfZGVmXyQxXSlkbmwKICAgQVNfVkFSX1BVU0hERUYoW2FjX0RlZl0sIFtjdXJsX2N2X2RlZl8kMV0pZG5sCiAgIGlmIHRlc3QgLXogIiRTRUQiOyB0aGVuCkBAIC02Nyw2ICs3MCw3IEBACiAgIGZpCiAgIEFTX1ZBUl9QT1BERUYoW2FjX0RlZl0pZG5sCiAgIEFTX1ZBUl9QT1BERUYoW2FjX0hhdmVEZWZdKWRubAorICBDUFBGTEFHUz0kT0xEQ1BQRkxBR1MKIF0pCiAKIApAQCAtMTcwLDcgKzE3NCw3IEBACiBkbmwgQ2hlY2sgZm9yIGNvbXBpbGFibGUgYW5kIHZhbGlkIHdpbmRvd3MuaCBoZWFkZXIKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdLCBbCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luZG93cy5oXSwgW2FjX2N2X2hlYWRlcl93aW5kb3dzX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luZG93cy5oXSwgW2N1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTE4NiwxMiArMTkwLDEyIEBACiAjZW5kaWYKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luZG93c19oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfd2luZG93c19oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5kb3dzX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl93aW5kb3dzX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfV0lORE9XU19ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbmRvd3MuaCBoZWFkZXIgZmlsZS5dKQpAQCAtMjA4LDkgKzIxMiw5IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX05BVElWRV9XSU5ET1dTXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYnVpbGQgdGFyZ2V0IGlzIGEgbmF0aXZlIFdpbmRvd3Mgb25lXSwgW2FjX2N2X25hdGl2ZV93aW5kb3dzXSwgWwotICAgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luZG93c19oIiA9ICJubyI7IHRoZW4KLSAgICAgIGFjX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYnVpbGQgdGFyZ2V0IGlzIGEgbmF0aXZlIFdpbmRvd3Mgb25lXSwgW2N1cmxfY3ZfbmF0aXZlX3dpbmRvd3NdLCBbCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAibm8iOyB0aGVuCisgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKICAgICBlbHNlCiAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtMjIzLDEzICsyMjcsMTMgQEAKICNlbmRpZgogICAgICAgICBdXSkKICAgICAgIF0sWwotICAgICAgICBhY19jdl9uYXRpdmVfd2luZG93cz0ieWVzIgorICAgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJ5ZXMiCiAgICAgICBdLFsKLSAgICAgICAgYWNfY3ZfbmF0aXZlX3dpbmRvd3M9Im5vIgorICAgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKICAgICAgIF0pCiAgICAgZmkKICAgXSkKLSAgQU1fQ09ORElUSU9OQUwoRE9JTkdfTkFUSVZFX1dJTkRPV1MsIHRlc3QgIngkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0geHllcykKKyAgQU1fQ09ORElUSU9OQUwoRE9JTkdfTkFUSVZFX1dJTkRPV1MsIHRlc3QgIngkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSB4eWVzKQogXSkKIAogCkBAIC0yMzksNyArMjQzLDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0tdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2suaF0sIFthY19jdl9oZWFkZXJfd2luc29ja19oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2suaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC0yNTYsMTIgKzI2MCwxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2tfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbnNvY2tfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd2luc29ja19oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2luc29ja19oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTlNPQ0tfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3aW5zb2NrLmggaGVhZGVyIGZpbGUuXSkKQEAgLTI3Niw3ICsyODAsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV0lOU09DSzJdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2syLmhdLCBbYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luc29jazIuaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5zb2NrMl9oXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtMjkzLDEyICsyOTcsMTIgQEAKICNlbmRpZgogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfd2luc29jazJfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luc29jazJfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luc29jazJfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2luc29jazJfaCIgaW4KICAgICB5ZXMpCiAgICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9XSU5TT0NLMl9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbnNvY2syLmggaGVhZGVyIGZpbGUuXSkKQEAgLTMxMyw3ICszMTcsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV1MyVENQSVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0syXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3czJ0Y3BpcC5oXSwgW2FjX2N2X2hlYWRlcl93czJ0Y3BpcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdzMnRjcGlwLmhdLCBbY3VybF9jdl9oZWFkZXJfd3MydGNwaXBfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTMzMSwxMiArMzM1LDEyIEBACiAjZW5kaWYKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93czJ0Y3BpcF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfV1MyVENQSVBfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3czJ0Y3BpcC5oIGhlYWRlciBmaWxlLl0pCkBAIC0zNTEsNyArMzU1LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkxEQVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbmxkYXAuaF0sIFthY19jdl9oZWFkZXJfd2lubGRhcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbmxkYXAuaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5sZGFwX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC0zNzEsMTIgKzM3NSwxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5sZGFwX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5sZGFwX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd2lubGRhcF9oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2lubGRhcF9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTkxEQVBfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3aW5sZGFwLmggaGVhZGVyIGZpbGUuXSkKQEAgLTM5MSw3ICszOTUsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV0lOQkVSXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5MREFQXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3aW5iZXIuaF0sIFthY19jdl9oZWFkZXJfd2luYmVyX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luYmVyLmhdLCBbY3VybF9jdl9oZWFkZXJfd2luYmVyX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC00MTMsMTIgKzQxNywxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5iZXJfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luYmVyX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5iZXJfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5iZXJfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5iZXJfaCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfaGVhZGVyX3dpbmJlcl9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTkJFUl9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbmJlci5oIGhlYWRlciBmaWxlLl0pCkBAIC00MzQsNyArNDM4LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX0xCRVJdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxiZXIuaF0sIFthY19jdl9oZWFkZXJfbGJlcl9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxiZXIuaF0sIFtjdXJsX2N2X2hlYWRlcl9sYmVyX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC00NTgsMTIgKzQ2MiwxMiBAQAogICAgICAgICBiZXJfZnJlZShiZXAsIDEpOwogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGJlcl9oPSJ5ZXMiCisgICAgICBjdXJsX2N2X2hlYWRlcl9sYmVyX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9sYmVyX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGJlcl9oPSJubyIKICAgICBdKQogICBdKQotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX2xiZXJfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfbGJlcl9oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTEJFUl9ILCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBsYmVyLmggaGVhZGVyIGZpbGUuXSkKICAgICAjCkBAIC01MTQsNyArNTE4LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX0xEQVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX0xCRVJdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxkYXAuaF0sIFthY19jdl9oZWFkZXJfbGRhcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxkYXAuaF0sIFtjdXJsX2N2X2hlYWRlcl9sZGFwX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC01NDAsMTIgKzU0NCwxMiBAQAogICAgICAgICBpbnQgcmVzID0gbGRhcF91bmJpbmQobGRwKTsKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX2xkYXBfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGRhcF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX2xkYXBfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl9sZGFwX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTERBUF9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGxkYXAuaCBoZWFkZXIgZmlsZS5dKQpAQCAtNTYwLDcgKzU2NCw3IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQX1NTTF0sIFsKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19IRUFERVJfTERBUF0pZG5sCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbGRhcF9zc2wuaF0sIFthY19jdl9oZWFkZXJfbGRhcF9zc2xfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwX3NzbC5oXSwgW2N1cmxfY3ZfaGVhZGVyX2xkYXBfc3NsX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC01ODgsMTIgKzU5MiwxMiBAQAogICAgICAgICBMREFQICpsZHAgPSBsZGFwc3NsX2luaXQoImR1bW15IiwgTERBUFNfUE9SVCwgMSk7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJ5ZXMiCisgICAgICBjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcF9zc2xfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJubyIKICAgICBdKQogICBdKQotICBjYXNlICIkYWNfY3ZfaGVhZGVyX2xkYXBfc3NsX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0xEQVBfU1NMX0gsIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbGRhcF9zc2wuaCBoZWFkZXIgZmlsZS5dKQpAQCAtNjA4LDcgKzYxMiw3IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQU1NMXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwc3NsLmhdLCBbYWNfY3ZfaGVhZGVyX2xkYXBzc2xfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwc3NsLmhdLCBbY3VybF9jdl9oZWFkZXJfbGRhcHNzbF9oXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtNjQwLDEyICs2NDQsMTIgQEAKICAgICAgICAgTERBUCAqbGRwID0gbGRhcF9zc2xfaW5pdCgiZHVtbXkiLCBMREFQU19QT1JULCBjZXJ0X2xhYmVsKTsKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX2xkYXBzc2xfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGRhcHNzbF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcHNzbF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX2xkYXBzc2xfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl9sZGFwc3NsX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwc3NsX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTERBUFNTTF9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGxkYXBzc2wuaCBoZWFkZXIgZmlsZS5dKQpAQCAtODYyLDcgKzg2Niw3IEBACiBkbmwgYW5kIGNoZWNrIGlmIGl0IGlzIG5lZWRlZCBldmVuIHdpdGggc3RkbGliLmgKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX01BTExPQ10sIFsKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtYWxsb2MuaF0sIFthY19jdl9oZWFkZXJfbWFsbG9jX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbWFsbG9jLmhdLCBbY3VybF9jdl9oZWFkZXJfbWFsbG9jX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC04NzMsMTIgKzg3NywxMiBAQAogICAgICAgICBmcmVlKHEpOwogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbWFsbG9jX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX21hbGxvY19oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbWFsbG9jX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfbWFsbG9jX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfbWFsbG9jX2giID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX21hbGxvY19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTUFMTE9DX0gsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIG1hbGxvYy5oIGhlYWRlciBmaWxlLl0pCiAgICAgIwpAQCAtOTE0LDcgKzkxOCw3IEBACiBkbmwgbWVtb3J5IHJlbGF0ZWQgZnVuY3Rpb25zLgogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfTUVNT1JZXSwgWwotICBBQ19DQUNIRV9DSEVDSyhbZm9yIG1lbW9yeS5oXSwgW2FjX2N2X2hlYWRlcl9tZW1vcnlfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtZW1vcnkuaF0sIFtjdXJsX2N2X2hlYWRlcl9tZW1vcnlfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpbmNsdWRlIDxtZW1vcnkuaD4KQEAgLTkyNSwxMiArOTI5LDEyIEBACiAgICAgICAgIGZyZWUocSk7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9tZW1vcnlfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbWVtb3J5X2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9tZW1vcnlfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl9tZW1vcnlfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl9tZW1vcnlfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfbWVtb3J5X2giID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9NRU1PUllfSCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbWVtb3J5LmggaGVhZGVyIGZpbGUuXSkKICAgICAjCkBAIC0xMTU0LDcgKzExNTgsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUTkFNRUlORk8sIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0bmFtZWluZm8gZnVuY3Rpb24uXSkKLSAgICAgIGFjX2N2X2Z1bmNfZ2V0bmFtZWluZm89InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19nZXRuYW1laW5mbz0ieWVzIgogICAgIGZpCiAgIGZpCiBdKQpAQCAtMTIwOSw3ICsxMjEzLDcgQEAKICAgICAgICAgICAgICAgICAgICBuZXRkYi5oIG5ldGluZXQvaW4uaCBhcnBhL2luZXQuaCkKICAgIwogICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgTklfV0lUSFNDT1BFSURdLAotICAgIFthY19jdl93b3JraW5nX25pX3dpdGhzY29wZWlkXSwgWworICAgIFtjdXJsX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWRdLCBbCiAgICAgQUNfUlVOX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpZmRlZiBIQVZFX1NURExJQl9ICkBAIC0xMjY3LDEwICsxMjcxLDEwIEBACiAgICAgICBdXSkgIyBBQy1MQU5HLVBST0dSQU0KICAgICBdLFsKICAgICAgICMgRXhpdCBjb2RlID09IDAuIFByb2dyYW0gd29ya2VkLgotICAgICAgYWNfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ieWVzIgorICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJ5ZXMiCiAgICAgXSxbCiAgICAgICAjIEV4aXQgY29kZSAhPSAwLiBQcm9ncmFtIGZhaWxlZC4KLSAgICAgIGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQ9Im5vIgorICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJubyIKICAgICBdLFsKICAgICAgICMgUHJvZ3JhbSBpcyBub3QgcnVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nLiBTbyB3ZSBhc3N1bWUKICAgICAgICMgTklfV0lUSFNDT1BFSUQgd2lsbCB3b3JrIGlmIHdlIGFyZSBhYmxlIHRvIGNvbXBpbGUgaXQuCkBAIC0xMjgzLDEzICsxMjg3LDEzIEBACiAgICAgICAgICAgdW5zaWduZWQgaW50IGR1bW15PSBOSV9OVU1FUklDSE9TVCB8IE5JX05VTUVSSUNTRVJWIHwgTklfV0lUSFNDT1BFSUQ7CiAgICAgICAgIF1dKQogICAgICAgXSxbCi0gICAgICAgIGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQ9InllcyIKKyAgICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJ5ZXMiCiAgICAgICBdLFsKLSAgICAgICAgYWNfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ibm8iCisgICAgICAgIGN1cmxfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ibm8iCiAgICAgICBdKSAjIEFDLUNPTVBJTEUtSUZFTFNFCiAgICAgXSkgIyBBQy1SVU4tSUZFTFNFCiAgIF0pICMgQUMtQ0FDSEUtQ0hFQ0sKLSAgY2FzZSAiJGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQiIGluCisgIGNhc2UgIiRjdXJsX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQiIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FKEhBVkVfTklfV0lUSFNDT1BFSUQsIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiBOSV9XSVRIU0NPUEVJRCBleGlzdHMgYW5kIHdvcmtzLl0pCkBAIC0xNDIzLDcgKzE0MjcsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfUkVDViwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSByZWN2IGZ1bmN0aW9uLl0pCi0gICAgICBhY19jdl9mdW5jX3JlY3Y9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19yZWN2PSJ5ZXMiCiAgICAgZmkKICAgZWxzZQogICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGxpbmsgZnVuY3Rpb24gcmVjdl0pCkBAIC0xNTkwLDcgKzE1OTQsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0VORCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZW5kIGZ1bmN0aW9uLl0pCi0gICAgICBhY19jdl9mdW5jX3NlbmQ9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19zZW5kPSJ5ZXMiCiAgICAgZmkKICAgZWxzZQogICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGxpbmsgZnVuY3Rpb24gc2VuZF0pCkBAIC0xNjAzLDcgKzE2MDcsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19NU0dfTk9TSUdOQUxdLCBbCiAgIEFDX0NIRUNLX0hFQURFUlMoc3lzL3R5cGVzLmggc3lzL3NvY2tldC5oKQotICBBQ19DQUNIRV9DSEVDSyhbZm9yIE1TR19OT1NJR05BTF0sIFthY19jdl9tc2dfbm9zaWduYWxdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgTVNHX05PU0lHTkFMXSwgW2N1cmxfY3ZfbXNnX25vc2lnbmFsXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtMTYzMSwxMiArMTYzNSwxMiBAQAogICAgICAgICBpbnQgZmxhZz1NU0dfTk9TSUdOQUw7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X21zZ19ub3NpZ25hbD0ieWVzIgorICAgICAgY3VybF9jdl9tc2dfbm9zaWduYWw9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X21zZ19ub3NpZ25hbD0ibm8iCisgICAgICBjdXJsX2N2X21zZ19ub3NpZ25hbD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X21zZ19ub3NpZ25hbCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfbXNnX25vc2lnbmFsIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX01TR19OT1NJR05BTCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNU0dfTk9TSUdOQUwgZmxhZy5dKQpAQCAtMTY1NCw3ICsxNjU4LDcgQEAKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19IRUFERVJfV0lOU09DS10pZG5sCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0syXSlkbmwKICAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdHlwZXMuaCBzeXMvdGltZS5oIHRpbWUuaCBzeXMvc29ja2V0LmgpCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RydWN0IHRpbWV2YWxdLCBbYWNfY3Zfc3RydWN0X3RpbWV2YWxdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RydWN0IHRpbWV2YWxdLCBbY3VybF9jdl9zdHJ1Y3RfdGltZXZhbF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTE2OTMsMTIgKzE2OTcsMTIgQEAKICAgICAgICAgdHMudHZfdXNlYyA9IDA7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X3N0cnVjdF90aW1ldmFsPSJ5ZXMiCisgICAgICBjdXJsX2N2X3N0cnVjdF90aW1ldmFsPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9zdHJ1Y3RfdGltZXZhbD0ibm8iCisgICAgICBjdXJsX2N2X3N0cnVjdF90aW1ldmFsPSJubyIKICAgICBdKQogICBdKQotICBjYXNlICIkYWNfY3Zfc3RydWN0X3RpbWV2YWwiIGluCisgIGNhc2UgIiRjdXJsX2N2X3N0cnVjdF90aW1ldmFsIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUlVDVF9USU1FVkFMLCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHRpbWV2YWwgc3RydWN0Ll0pCkBAIC0xNzM2LDEzICsxNzQwLDEzIEBACiAgICAgICAgIF1dKQogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICAgICAgYWNfY3Zfc2lnX2F0b21pY190X3ZvbGF0aWxlPSJubyIKKyAgICAgICAgY3VybF9jdl9zaWdfYXRvbWljX3Rfdm9sYXRpbGU9Im5vIgogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgIGFjX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZT0ieWVzIgorICAgICAgICBjdXJsX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZT0ieWVzIgogICAgICAgXSkKICAgICAgICMKLSAgICAgIGlmIHRlc3QgIiRhY19jdl9zaWdfYXRvbWljX3Rfdm9sYXRpbGUiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRjdXJsX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZSIgPSAieWVzIjsgdGhlbgogICAgICAgICBBQ19ERUZJTkUoSEFWRV9TSUdfQVRPTUlDX1RfVk9MQVRJTEUsIDEsCiAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHNpZ19hdG9taWNfdCBpcyBhbHJlYWR5IGRlZmluZWQgYXMgdm9sYXRpbGUuXSkKICAgICAgIGZpCkBAIC0xODUxLDggKzE4NTUsMTAgQEAKICAgQUNfUkVRVUlSRShbQUNfSEVBREVSX1RJTUVdKWRubAogICBBQ19DSEVDS19IRUFERVJTKHN5cy90eXBlcy5oIHN5cy90aW1lLmggdGltZS5oKQogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBtb25vdG9uaWMgY2xvY2tfZ2V0dGltZV0pCi0gIEFDX0NPTVBJTEVfSUZFTFNFKFsKLSAgICBBQ19MQU5HX1BST0dSQU0oW1sKKyAgIworICBpZiB0ZXN0ICJ4JGRvbnR3YW50X3J0IiA9PSAieG5vIiA7IHRoZW4KKyAgICBBQ19DT01QSUxFX0lGRUxTRShbCisgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKQEAgLTE4NjYsMTcgKzE4NzIsMTggQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjZW5kaWYKICNlbmRpZgotICAgIF1dLFtbCi0gICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7Ci0gICAgICAodm9pZCljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKTsKLSAgICBdXSkKLSAgXSxbCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICBhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWU9InllcyIKLSAgXSxbCi0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZT0ibm8iCi0gIF0pCisgICAgICBdXSxbWworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgICAgICh2b2lkKWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOworICAgICAgXV0pCisgICAgXSxbCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICAgY3VybF9mdW5jX2Nsb2NrX2dldHRpbWU9InllcyIKKyAgICBdLFsKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKKyAgICBdKQorICBmaQogICBkbmwgRGVmaW5pdGlvbiBvZiBIQVZFX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDIGlzIGludGVudGlvbmFsbHkgcG9zdHBvbmVkCiAgIGRubCB1bnRpbCBsaWJyYXJ5IGxpbmtpbmcgYW5kIHJ1bi10aW1lIGNoZWNrcyBmb3IgY2xvY2tfZ2V0dGltZSBzdWNjZWVkLgogXSkKQEAgLTE4OTAsNyArMTg5Nyw3IEBACiBBQ19ERUZVTihbQ1VSTF9DSEVDS19MSUJTX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0ZVTkNfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUNdKWRubAogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfZnVuY19jbG9ja19nZXR0aW1lIiA9ICJ5ZXMiOyB0aGVuCiAgICAgIwogICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGNsb2NrX2dldHRpbWUgaW4gbGlicmFyaWVzXSkKICAgICAjCkBAIC0xOTM1LDExICsxOTQyLDExIEBACiAgICAgICBYLXVua25vd24pCiAgICAgICAgIEFDX01TR19SRVNVTFQoW2Nhbm5vdCBmaW5kIGNsb2NrX2dldHRpbWVdKQogICAgICAgICBBQ19NU0dfV0FSTihbSEFWRV9DTE9DS19HRVRUSU1FX01PTk9UT05JQyB3aWxsIG5vdCBiZSBkZWZpbmVkXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKKyAgICAgICAgY3VybF9mdW5jX2Nsb2NrX2dldHRpbWU9Im5vIgogICAgICAgICA7OwogICAgICAgWC0pCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vIGFkZGl0aW9uYWwgbGliIHJlcXVpcmVkXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCiAgICAgICAgIDs7CiAgICAgICAqKQogICAgICAgICBpZiB0ZXN0IC16ICIkY3VybF9jdl9zYXZlX0xJQlMiOyB0aGVuCkBAIC0xOTQ4LDEzICsxOTU1LDEzIEBACiAgICAgICAgICAgTElCUz0iJGN1cmxfY3ZfZ2Nsa19MSUJTICRjdXJsX2N2X3NhdmVfTElCUyIKICAgICAgICAgZmkKICAgICAgICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfY3ZfZ2Nsa19MSUJTXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCiAgICAgICAgIDs7CiAgICAgZXNhYwogICAgICMKICAgICBkbmwgb25seSBkbyBydW50aW1lIHZlcmlmaWNhdGlvbiB3aGVuIG5vdCBjcm9zcy1jb21waWxpbmcKICAgICBpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgIT0gInh5ZXMiICYmCi0gICAgICB0ZXN0ICIkYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIiA9ICJ5ZXMiOyB0aGVuCisgICAgICB0ZXN0ICIkY3VybF9mdW5jX2Nsb2NrX2dldHRpbWUiID0gInllcyI7IHRoZW4KICAgICAgIEFDX01TR19DSEVDS0lORyhbaWYgbW9ub3RvbmljIGNsb2NrX2dldHRpbWUgd29ya3NdKQogICAgICAgQUNfUlVOX0lGRUxTRShbCiAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtMTk4NiwxMiArMTk5MywxMiBAQAogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgICAgICAgQUNfTVNHX1dBUk4oW0hBVkVfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUMgd2lsbCBub3QgYmUgZGVmaW5lZF0pCi0gICAgICAgIGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZT0ibm8iCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKICAgICAgICAgTElCUz0iJGN1cmxfY3Zfc2F2ZV9MSUJTIgogICAgICAgXSkKICAgICBmaQogICAgICMKLSAgICBjYXNlICIkYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIiBpbgorICAgIGNhc2UgIiRjdXJsX2Z1bmNfY2xvY2tfZ2V0dGltZSIgaW4KICAgICAgIHllcykKICAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUMsIDEsCiAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBjbG9ja19nZXR0aW1lIGZ1bmN0aW9uIGFuZCBtb25vdG9uaWMgdGltZXIuXSkKQEAgLTIxNTIsNyArMjE1OSw3IEBACiAgIEFDX01TR19DSEVDS0lORyhbc2l6ZSBvZiBjdXJsX3NvY2tsZW5fdF0pCiAgIGN1cmxfc2l6ZW9mX2N1cmxfc29ja2xlbl90PSJ1bmtub3duIgogICBjdXJsX3B1bGxfaGVhZGVyc19zb2NrbGVuX3Q9InVua25vd24iCi0gIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd3MydGNwaXBfaCIgPSAieWVzIjsgdGhlbgogICAgIHRzdF9wdWxsX2hlYWRlcl9jaGVja3M9J25vbmUgd3MydGNwaXAnCiAgICAgdHN0X3NpemVfY2hlY2tzPSc0JwogICBlbHNlCkBAIC0yNDQ2LDcgKzI0NTMsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0VMRUNULCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNlbGVjdCBmdW5jdGlvbi5dKQotICAgICAgYWNfY3ZfZnVuY19zZWxlY3Q9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19zZWxlY3Q9InllcyIKICAgICBmaQogICBmaQogXSkKQEAgLTI1NjcsNyArMjU3NCw4IEBACiAgIEFDX01TR19DSEVDS0lORyhbZGVmYXVsdCBDQSBjZXJ0IGJ1bmRsZS9wYXRoXSkKIAogICBBQ19BUkdfV0lUSChjYS1idW5kbGUsCi1BQ19IRUxQX1NUUklORyhbLS13aXRoLWNhLWJ1bmRsZT1GSUxFXSwgW0ZpbGUgbmFtZSB0byB1c2UgYXMgQ0EgYnVuZGxlXSkKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtY2EtYnVuZGxlPUZJTEVdLAorW1BhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgQ0EgY2VydGlmaWNhdGVzIChleGFtcGxlOiAvZXRjL2NhLWJ1bmRsZS5jcnQpXSkKIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtY2EtYnVuZGxlXSwgW0Rvbid0IHVzZSBhIGRlZmF1bHQgQ0EgYnVuZGxlXSksCiAgIFsKICAgICB3YW50X2NhPSIkd2l0aHZhbCIKQEAgLTI1NzcsNyArMjU4NSwxMSBAQAogICBdLAogICBbIHdhbnRfY2E9InVuc2V0IiBdKQogICBBQ19BUkdfV0lUSChjYS1wYXRoLAotQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1jYS1wYXRoPURJUkVDVE9SWV0sIFtEaXJlY3RvcnkgdG8gdXNlIGFzIENBIHBhdGhdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1jYS1wYXRoPURJUkVDVE9SWV0sCitbUGF0aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIENBIGNlcnRpZmljYXRlcyBzdG9yZWQgaW5kaXZpZHVhbGx5LCB3aXRoIFwKK3RoZWlyIGZpbGVuYW1lcyBpbiBhIGhhc2ggZm9ybWF0LiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB3aXRoIE9wZW5TU0wsIFwKK0dudVRMUyBhbmQgUG9sYXJTU0wgYmFja2VuZHMuIFJlZmVyIHRvIE9wZW5TU0wgY19yZWhhc2ggZm9yIGRldGFpbHMuIFwKKyhleGFtcGxlOiAvZXRjL2NlcnRpZmljYXRlcyldKQogQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1jYS1wYXRoXSwgW0Rvbid0IHVzZSBhIGRlZmF1bHQgQ0EgcGF0aF0pLAogICBbCiAgICAgd2FudF9jYXBhdGg9IiR3aXRodmFsIgpAQCAtMjU4Nyw2ICsyNTk5LDEwIEBACiAgIF0sCiAgIFsgd2FudF9jYXBhdGg9InVuc2V0Il0pCiAKKyAgY2Ffd2FybmluZz0iICAgKHdhcm5pbmc6IGNlcnRzIG5vdCBmb3VuZCkiCisgIGNhcGF0aF93YXJuaW5nPSIgICAod2FybmluZzogY2VydHMgbm90IGZvdW5kKSIKKyAgY2hlY2tfY2FwYXRoPSIiCisKICAgaWYgdGVzdCAieCR3YW50X2NhIiAhPSAieG5vIiAtYSAieCR3YW50X2NhIiAhPSAieHVuc2V0IiAtYSBcCiAgICAgICAgICAgIngkd2FudF9jYXBhdGgiICE9ICJ4bm8iIC1hICJ4JHdhbnRfY2FwYXRoIiAhPSAieHVuc2V0IjsgdGhlbgogICAgIGRubCBib3RoIGdpdmVuCkBAIC0yNjM1LDEyICsyNjUxLDcgQEAKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICJ4JHdhbnRfY2FwYXRoIiA9ICJ4dW5zZXQiIC1hICJ4JGNhIiA9ICJ4bm8iIC1hIFwKICAgICAgICAgICAgICAgIngkT1BFTlNTTF9FTkFCTEVEIiA9ICJ4MSI7IHRoZW4KLSAgICAgICAgZm9yIGEgaW4gL2V0Yy9zc2wvY2VydHMvOyBkbwotICAgICAgICAgIGlmIHRlc3QgLWQgIiRhIiAmJiBscyAiJGEiL1tbMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdXS4wID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIGNhcGF0aD0iJGEiCi0gICAgICAgICAgICBicmVhawotICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKKyAgICAgICAgY2hlY2tfY2FwYXRoPSIvZXRjL3NzbC9jZXJ0cy8iCiAgICAgICBmaQogICAgIGVsc2UKICAgICAgIGRubCBubyBvcHRpb24gZ2l2ZW4gYW5kIGNyb3NzLWNvbXBpbGluZwpAQCAtMjY0OCw2ICsyNjU5LDMwIEBACiAgICAgZmkKICAgZmkKIAorICBpZiB0ZXN0ICJ4JGNhIiA9ICJ4bm8iIHx8IHRlc3QgLWYgIiRjYSI7IHRoZW4KKyAgICBjYV93YXJuaW5nPSIiCisgIGZpCisKKyAgaWYgdGVzdCAieCRjYXBhdGgiICE9ICJ4bm8iOyB0aGVuCisgICAgY2hlY2tfY2FwYXRoPSIkY2FwYXRoIgorICBmaQorCisgIGlmIHRlc3QgISAteiAiJGNoZWNrX2NhcGF0aCI7IHRoZW4KKyAgICBmb3IgYSBpbiAiJGNoZWNrX2NhcGF0aCI7IGRvCisgICAgICBpZiB0ZXN0IC1kICIkYSIgJiYgbHMgIiRhIi9bWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXV0uMCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkY2FwYXRoIiA9ICJ4bm8iOyB0aGVuCisgICAgICAgICAgY2FwYXRoPSIkYSIKKyAgICAgICAgZmkKKyAgICAgICAgY2FwYXRoX3dhcm5pbmc9IiIKKyAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICBmaQorCisgIGlmIHRlc3QgIngkY2FwYXRoIiA9ICJ4bm8iOyB0aGVuCisgICAgY2FwYXRoX3dhcm5pbmc9IiIKKyAgZmkKKwogICBpZiB0ZXN0ICJ4JGNhIiAhPSAieG5vIjsgdGhlbgogICAgIENVUkxfQ0FfQlVORExFPSciJyRjYSciJwogICAgIEFDX0RFRklORV9VTlFVT1RFRChDVVJMX0NBX0JVTkRMRSwgIiRjYSIsIFtMb2NhdGlvbiBvZiBkZWZhdWx0IGNhIGJ1bmRsZV0pCkBAIC0yNjYyLDYgKzI2OTcsMjQgQEAKICAgaWYgdGVzdCAieCRjYSIgPSAieG5vIiAmJiB0ZXN0ICJ4JGNhcGF0aCIgPSAieG5vIjsgdGhlbgogICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIGJ1aWx0aW4gQ0Egc3RvcmUgb2YgU1NMIGxpYnJhcnldKQorICBBQ19BUkdfV0lUSChjYS1mYWxsYmFjaywKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtY2EtZmFsbGJhY2tdLCBbVXNlIHRoZSBidWlsdCBpbiBDQSBzdG9yZSBvZiB0aGUgU1NMIGxpYnJhcnldKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1jYS1mYWxsYmFja10sIFtEb24ndCB1c2UgdGhlIGJ1aWx0IGluIENBIHN0b3JlIG9mIHRoZSBTU0wgbGlicmFyeV0pLAorICBbCisgICAgaWYgdGVzdCAieCR3aXRoX2NhX2ZhbGxiYWNrIiAhPSAieHllcyIgLWEgIngkd2l0aF9jYV9mYWxsYmFjayIgIT0gInhubyI7IHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbLS13aXRoLWNhLWZhbGxiYWNrIG9ubHkgYWxsb3dzIHllcyBvciBubyBhcyBwYXJhbWV0ZXJdKQorICAgIGZpCisgIF0sCisgIFsgd2l0aF9jYV9mYWxsYmFjaz0ibm8iXSkKKyAgQUNfTVNHX1JFU1VMVChbJHdpdGhfY2FfZmFsbGJhY2tdKQorICBpZiB0ZXN0ICJ4JHdpdGhfY2FfZmFsbGJhY2siID0gInh5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAieCRPUEVOU1NMX0VOQUJMRUQiICE9ICJ4MSIgLWEgIngkR05VVExTX0VOQUJMRUQiICE9ICJ4MSI7IHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbLS13aXRoLWNhLWZhbGxiYWNrIG9ubHkgd29ya3Mgd2l0aCBPcGVuU1NMIG9yIEdudVRMU10pCisgICAgZmkKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoQ1VSTF9DQV9GQUxMQkFDSywgMSwgW2RlZmluZSAiMSIgdG8gdXNlIGJ1aWx0IGluIENBIHN0b3JlIG9mIFNTTCBsaWJyYXJ5IF0pCisgIGZpCiBdKQogCiAKQEAgLTI4MzQsNyArMjg4Nyw2IEBACiAgICMKICAgeF9MUDY0X2xvbmc9IiIKICAgeF9MUDMyX2xvbmc9IiIKLSAgeF9MUDE2X2xvbmc9IiIKICAgIwogICBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1lcSAiOCIgJiYKICAgICAgdGVzdCAiJGFjX2N2X3NpemVvZl92b2lkcCIgLWdlICI4IjsgdGhlbgpAQCAtMjg0Miw5ICsyODk0LDYgQEAKICAgZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1lcSAiNCIgJiYKICAgICAgICB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3ZvaWRwIiAtZ2UgIjQiOyB0aGVuCiAgICAgeF9MUDMyX2xvbmc9ImxvbmciCi0gIGVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiAtZXEgIjIiICYmCi0gICAgICAgdGVzdCAiJGFjX2N2X3NpemVvZl92b2lkcCIgLWdlICIyIjsgdGhlbgotICAgIHhfTFAxNl9sb25nPSJsb25nIgogICBmaQogICAjCiAgIGRubCBET19DVVJMX09GRl9UX0NIRUNLIHJlc3VsdHMgYXJlIHN0b3JlZCBpbiBuZXh0IDMgdmFycwpAQCAtMjg3OSwxNyArMjkyOCw2IEBACiAgICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfdHlwZW9mX2N1cmxfb2ZmX3RdKQogICBmaQogICBpZiB0ZXN0ICIkY3VybF90eXBlb2ZfY3VybF9vZmZfdCIgPSAidW5rbm93biI7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAxNi1iaXQgY3VybF9vZmZfdCBkYXRhIHR5cGVdKQotICAgIGZvciB0MiBpbiAgICAgICAgICBcCi0gICAgICAiJHhfTFAxNl9sb25nIiAgIFwKLSAgICAgICdpbnQxNl90JyAgICAgICAgXAotICAgICAgJ19faW50MTYnICAgICAgICBcCi0gICAgICAnaW50JyAgICAgICAgICAgIDsgZG8KLSAgICAgIERPX0NVUkxfT0ZGX1RfQ0hFQ0soWyR0Ml0sIFsyXSkKLSAgICBkb25lCi0gICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfdHlwZW9mX2N1cmxfb2ZmX3RdKQotICBmaQotICBpZiB0ZXN0ICIkY3VybF90eXBlb2ZfY3VybF9vZmZfdCIgPSAidW5rbm93biI7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGRhdGEgdHlwZSBmb3IgY3VybF9vZmZfdC5dKQogICBmaQogICAjCkBAIC0yOTczLDcgKzMwMTEsNyBAQAogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTXSlkbmwKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGJ1aWxkIHRhcmdldCBzdXBwb3J0cyBXSU4zMiBmaWxlIEFQSV0pCiAgIGN1cmxfd2luMzJfZmlsZV9hcGk9Im5vIgotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd2luZG93c19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgaWYgdGVzdCB4IiRlbmFibGVfbGFyZ2VmaWxlIiAhPSAieG5vIjsgdGhlbgogICAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKQEAgLTMwNDksMTIgKzMwODcsMTQgQEAKIGRubAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19QS0dDT05GSUddLCBbCisgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgICBQS0dDT05GSUc9IiRQS0dfQ09ORklHIgorICAgIGVsc2UKKyAgICAgIEFDX1BBVEhfVE9PTChbUEtHQ09ORklHXSwgW3BrZy1jb25maWddLCBbbm9dLAorICAgICAgICBbJFBBVEg6L3Vzci9iaW46L3Vzci9sb2NhbC9iaW5dKQorICAgIGZpCiAKLSAgICBQS0dDT05GSUc9Im5vIgotCi0gICAgQUNfUEFUSF9UT09MKCBQS0dDT05GSUcsIHBrZy1jb25maWcsIG5vLCAkUEFUSDovdXNyL2JpbjovdXNyL2xvY2FsL2JpbikKLQotICAgIGlmIHRlc3QgeCRQS0dDT05GSUcgIT0geG5vOyB0aGVuCisgICAgaWYgdGVzdCAieCRQS0dDT05GSUciICE9ICJ4bm8iOyB0aGVuCiAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMSBvcHRpb25zIHdpdGggcGtnLWNvbmZpZ10pCiAgICAgICBkbmwgYXNrIHBrZy1jb25maWcgYWJvdXQgJDEKICAgICAgIGl0ZXhpc3RzPWBDVVJMX0VYUE9SVF9QQ0RJUihbJDJdKSBkbmwKQEAgLTMxMTEsMyArMzE1MSw0OCBAQAogMTsKIF9FT0YKIF0pCisKK2RubCBDVVJMX0NQUF9QCitkbmwKK2RubCBDaGVjayBpZiAkY3BwIC1QIHNob3VsZCBiZSB1c2VkIGZvciBleHRyYWN0IGRlZmluZSB2YWx1ZXMgZHVlIHRvIGdjYyA1Citkbmwgc3BsaXR0aW5nIHVwIHN0cmluZ3MgYW5kIGRlZmluZXMgYmV0d2VlbiBsaW5lIG91dHB1dHMuIGdjYyBieSBkZWZhdWx0CitkbmwgKHdpdGhvdXQgLVApIHdpbGwgc2hvdyBURVNUIEVJTlZBTCBURVNUIGFzCitkbmwKK2RubCAjIDEzICJjb25mdGVzdC5jIgorZG5sIFRFU1QKK2RubCAjIDEzICJjb25mdGVzdC5jIiAzIDQKK2RubCAgICAgMjIKK2RubCAjIDEzICJjb25mdGVzdC5jIgorZG5sICAgICAgICAgICAgVEVTVAorCitBQ19ERUZVTihbQ1VSTF9DUFBfUF0sIFsKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiBjcHAgLVAgaXMgbmVlZGVkXSkKKyAgQUNfRUdSRVBfQ1BQKFtURVNULipURVNUXSwgWworICNpbmNsdWRlIDxlcnJuby5oPgorVEVTVCBFSU5WQUwgVEVTVAorICBdLCBbY3BwPW5vXSwgW2NwcD15ZXNdKQorICBBQ19NU0dfUkVTVUxUKFskY3BwXSkKKworICBkbmwgd2UgbmVlZCBjcHAgLVAgc28gY2hlY2sgaWYgaXQgd29ya3MgdGhlbgorICBpZiB0ZXN0ICJ4JGNwcCIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGNwcCAtUCB3b3Jrc10pCisgICAgT0xEQ1BQRkxBR1M9JENQUEZMQUdTCisgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtUCIKKyAgICBBQ19FR1JFUF9DUFAoW1RFU1QuKlRFU1RdLCBbCisgI2luY2x1ZGUgPGVycm5vLmg+CitURVNUIEVJTlZBTCBURVNUCisgICAgXSwgW2NwcF9wPXllc10sIFtjcHBfcD1ub10pCisgICAgQUNfTVNHX1JFU1VMVChbJGNwcF9wXSkKKworICAgIGlmIHRlc3QgIngkY3BwX3AiID0gInhubyI7IHRoZW4KKyAgICAgIEFDX01TR19XQVJOKFtmYWlsZWQgdG8gZmlndXJlIG91dCBjcHAgLVAgYWx0ZXJuYXRpdmVdKQorICAgICAgIyB3aXRob3V0IC1QCisgICAgICBDUFBQRkxBR1M9JE9MRENQUEZMQUdTCisgICAgZWxzZQorICAgICAgIyB3aXRoIC1QCisgICAgICBDUFBQRkxBR1M9JENQUEZMQUdTCisgICAgZmkKKyAgICBkbmwgcmVzdG9yZSBDUFBGTEFHUworICAgIENQUEZMQUdTPSRPTERDUFBGTEFHUworICBmaQorXSkKZGlmZiAtLWdpdCBhL2FwcHZleW9yLnltbCBiL2FwcHZleW9yLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzI1YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvYXBwdmV5b3IueW1sCkBAIC0wLDAgKzEsMzUgQEAKK3ZlcnNpb246IDcuNDcuMC57YnVpbGR9CisKK2Vudmlyb25tZW50OgorICAgIG1hdHJpeDoKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTEgMjAxMiBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTIKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTIgMjAxMyBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTMKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTQgMjAxNSBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTUKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTEgMjAxMiBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTIKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPTgorICAgICAgLSBQUkpfR0VOOiAiVmlzdWFsIFN0dWRpbyAxMiAyMDEzIFdpbjY0IgorICAgICAgICBCRElSOiBtc3ZjMjAxMworICAgICAgICBQUkpfQ0ZHOiBSZWxlYXNlCisgICAgICAgIE9QRU5TU0w6IE9OCisgICAgICAtIFBSSl9HRU46ICJWaXN1YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQiCisgICAgICAgIEJESVI6IG1zdmMyMDE1CisgICAgICAgIFBSSl9DRkc6IFJlbGVhc2UKKyAgICAgICAgT1BFTlNTTDogT04KKworCitidWlsZF9zY3JpcHQ6CisgICAgLSBta2RpciBidWlsZC4lQkRJUiUKKyAgICAtIGNkIGJ1aWxkLiVCRElSJQorICAgIC0gY21ha2UgLi4gLUciJVBSSl9HRU4lIiAtRENNQUtFX1VTRV9PUEVOU1NMPSVPUEVOU1NMJQorICAgIC0gY21ha2UgLS1idWlsZCAuIC0tY29uZmlnICVQUkpfQ0ZHJSAtLWNsZWFuLWZpcnN0CmRpZmYgLS1naXQgYS9idWlsZGNvbmYgYi9idWlsZGNvbmYKaW5kZXggNzA1ZjBkMy4uMGQ5OThjMiAxMDA3NTUKLS0tIGEvYnVpbGRjb25mCisrKyBiL2J1aWxkY29uZgpAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9idWlsZGNvbmYuYmF0IGIvYnVpbGRjb25mLmJhdAppbmRleCBkYzU1ZmFiLi5hZDNmYmE2IDEwMDY0NAotLS0gYS9idWlsZGNvbmYuYmF0CisrKyBiL2J1aWxkY29uZi5iYXQKQEAgLTEsMzggKzEsMzUwIEBACiBAZWNobyBvZmYKLVJFTQotUkVNCi1SRU0gVGhpcyBiYXRjaCBmaWxlIG11c3QgYmUgdXNlZCB0byBzZXQgdXAgYSBnaXQgdHJlZSB0byBidWlsZCBvbgotUkVNIHN5c3RlbXMgd2hlcmUgdGhlcmUgaXMgbm8gYXV0b3Rvb2xzIHN1cHBvcnQgKGkuZS4gTWljcm9zb2Z0KS4KLVJFTQotUkVNIFRoaXMgZmlsZSBpcyBub3QgaW5jbHVkZWQgbm9yIG5lZWRlZCBmb3IgY3VybCdzIHJlbGVhc2UKLVJFTSBhcmNoaXZlcywgbmVpdGhlciBmb3IgY3VybCdzIGRhaWx5IHNuYXBzaG90IGFyY2hpdmVzLgorcmVtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworcmVtICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKK3JlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CityZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CityZW0gKgorcmVtICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KK3JlbSAqCityZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorcmVtICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCityZW0gKgorcmVtICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCityZW0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK3JlbSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCityZW0gKgorcmVtICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorcmVtICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK3JlbSAqCityZW0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLWlmIGV4aXN0IEdJVC1JTkZPIGdvdG8gc3RhcnRfZG9pbmcKLUVDSE8gRVJST1I6IFRoaXMgZmlsZSBzaGFsbCBvbmx5IGJlIHVzZWQgd2l0aCBhIGN1cmwgZ2l0IHRyZWUgY2hlY2tvdXQuCi1nb3RvIGVuZF9hbGwKLTpzdGFydF9kb2luZworcmVtIE5PVEVTCityZW0KK3JlbSBUaGlzIGJhdGNoIGZpbGUgbXVzdCBiZSB1c2VkIHRvIHNldCB1cCBhIGdpdCB0cmVlIHRvIGJ1aWxkIG9uIHN5c3RlbXMgd2hlcmUKK3JlbSB0aGVyZSBpcyBubyBhdXRvdG9vbHMgc3VwcG9ydCAoaS5lLiBET1MgYW5kIFdpbmRvd3MpLgorcmVtCiAKLVJFTSBjcmVhdGUgdG9vbF9odWdlaGVscC5jCi1pZiBub3QgZXhpc3Qgc3JjXHRvb2xfaHVnZWhlbHAuYy5jdnMgZ290byBlbmRfaHVnZWhlbHBfYwotY29weSAvWSBzcmNcdG9vbF9odWdlaGVscC5jLmN2cyBzcmNcdG9vbF9odWdlaGVscC5jCi06ZW5kX2h1Z2VoZWxwX2MKKzpiZWdpbgorICByZW0gU2V0IG91ciB2YXJpYWJsZXMKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBzZXRsb2NhbAorICBzZXQgTU9ERT1HRU5FUkFURQogCi1SRU0gY3JlYXRlIE1ha2VmaWxlCi1pZiBub3QgZXhpc3QgTWFrZWZpbGUuZGlzdCBnb3RvIGVuZF9tYWtlZmlsZQotY29weSAvWSBNYWtlZmlsZS5kaXN0IE1ha2VmaWxlCi06ZW5kX21ha2VmaWxlCisgIHJlbSBTd2l0Y2ggdG8gdGhpcyBiYXRjaCBmaWxlJ3MgZGlyZWN0b3J5CisgIGNkIC9kICIlfjBcLi4iIDE+TlVMIDI+JjEKIAotUkVNIGNyZWF0ZSBjdXJsYnVpbGQuaAotaWYgbm90IGV4aXN0IGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaC5kaXN0IGdvdG8gZW5kX2N1cmxidWlsZF9oCi1jb3B5IC9ZIGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaC5kaXN0IGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaAotOmVuZF9jdXJsYnVpbGRfaAorICByZW0gQ2hlY2sgd2UgYXJlIHJ1bm5pbmcgZnJvbSBhIGN1cmwgZ2l0IHJlcG9zaXRvcnkKKyAgaWYgbm90IGV4aXN0IEdJVC1JTkZPIGdvdG8gbm9yZXBvCiAKLVJFTSBzZXR1cCBjLWFyZXMgZ2l0IHRyZWUKLWlmIG5vdCBleGlzdCBhcmVzXGJ1aWxkY29uZi5iYXQgZ290byBlbmRfY19hcmVzCi1jZCBhcmVzCi1jYWxsIGJ1aWxkY29uZi5iYXQKLWNkIC4uCi06ZW5kX2NfYXJlcworICByZW0gRGV0ZWN0IHByb2dyYW1zLiBIQVZFXzxQUk9HTkFNRT4KKyAgcmVtIFdoZW4gbm90IGZvdW5kIHRoZSB2YXJpYWJsZSBpcyBzZXQgdW5kZWZpbmVkLiBUaGUgdW5kZWZpbmVkIHBhdHRlcm4KKyAgcmVtIGFsbG93cyBmb3Igc3RhdGVtZW50cyBsaWtlICJpZiBub3QgZGVmaW5lZCBIQVZFX1BFUkwgKGNvbW1hbmQpIgorICBncm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoc2V0IEhBVkVfR1JPRkY9KSBlbHNlIChzZXQgSEFWRV9HUk9GRj1ZKQorICBucm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoc2V0IEhBVkVfTlJPRkY9KSBlbHNlIChzZXQgSEFWRV9OUk9GRj1ZKQorICBwZXJsIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKKyAgaWYgZXJyb3JsZXZlbCAxIChzZXQgSEFWRV9QRVJMPSkgZWxzZSAoc2V0IEhBVkVfUEVSTD1ZKQorICBnemlwIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKKyAgaWYgZXJyb3JsZXZlbCAxIChzZXQgSEFWRV9HWklQPSkgZWxzZSAoc2V0IEhBVkVfR1pJUD1ZKQogCi06ZW5kX2FsbAorOnBhcnNlQXJncworICBpZiAiJX4xIiA9PSAiIiBnb3RvIHN0YXJ0CiAKKyAgaWYgL2kgIiV+MSIgPT0gIi1jbGVhbiIgKAorICAgIHNldCBNT0RFPUNMRUFOCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLT8iICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaGVscCIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSAoCisgICAgZ290byB1bmtub3duCisgICkKKworICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCisKKzpzdGFydAorICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKKyAgICBlY2hvLgorICAgIGVjaG8gR2VuZXJhdGluZyBwcmVyZXF1aXNpdGUgZmlsZXMKKworICAgIGNhbGwgOmdlbmVyYXRlCisgICAgaWYgZXJyb3JsZXZlbCA0IGdvdG8gbm9nZW5jdXJsYnVpbGQKKyAgICBpZiBlcnJvcmxldmVsIDMgZ290byBub2dlbmh1Z2VoZWxwCisgICAgaWYgZXJyb3JsZXZlbCAyIGdvdG8gbm9nZW5tYWtlZmlsZQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIHdhcm5pbmcKKworICApIGVsc2UgKAorICAgIGVjaG8uCisgICAgZWNobyBSZW1vdmluZyBwcmVyZXF1aXNpdGUgZmlsZXMKKworICAgIGNhbGwgOmNsZWFuCisgICAgaWYgZXJyb3JsZXZlbCAzIGdvdG8gbm9jbGVhbmN1cmxidWlsZAorICAgIGlmIGVycm9ybGV2ZWwgMiBnb3RvIG5vY2xlYW5odWdlaGVscAorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIG5vY2xlYW5tYWtlZmlsZQorICApCisKKyAgZ290byBzdWNjZXNzCisKK3JlbSBNYWluIGdlbmVyYXRlIGZ1bmN0aW9uLgorcmVtCityZW0gUmV0dXJuczoKK3JlbQorcmVtIDAgLSBzdWNjZXNzCityZW0gMSAtIHN1Y2Nlc3Mgd2l0aCBzaW1wbGlmaWVkIHRvb2xfaHVnZWhlbHAuYyAKK3JlbSAyIC0gZmFpbGVkIHRvIGdlbmVyYXRlIE1ha2VmaWxlCityZW0gMyAtIGZhaWxlZCB0byBnZW5lcmF0ZSB0b29sX2h1Z2VoZWxwLmMKK3JlbSA0IC0gZmFpbGVkIHRvIGdlbmVyYXRlIGN1cmxidWlsZC5oCityZW0KKzpnZW5lcmF0ZQorICBpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIHNldGxvY2FsCisgIHNldCBCQVNJQ19IVUdFSEVMUD0wCisKKyAgcmVtIENyZWF0ZSBNYWtlZmlsZQorICBlY2hvICogJUNEJVxNYWtlZmlsZQorICBpZiBleGlzdCBNYWtlZmlsZS5kaXN0ICgKKyAgICBjb3B5IC9ZIE1ha2VmaWxlLmRpc3QgTWFrZWZpbGUgMT5OVUwgMj4mMQorICAgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgICBpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGVuZGxvY2FsCisgICAgICBleGl0IC9CIDIKKyAgICApCisgICkKKworICByZW0gQ3JlYXRlIHRvb2xfaHVnZWhlbHAuYworICBlY2hvICogJUNEJVxzcmNcdG9vbF9odWdlaGVscC5jCisgIGNhbGwgOmdlbkh1Z2VIZWxwCisgIGlmIGVycm9ybGV2ZWwgMiAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMworICApCisgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgc2V0IEJBU0lDX0hVR0VIRUxQPTEKKyAgKQorICBjbWQgL2MgZXhpdCAwCisKKyAgcmVtIENyZWF0ZSBjdXJsYnVpbGQuaAorICBlY2hvICogJUNEJVxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oLmRpc3QgKAorICAgIGNvcHkgL1kgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oLmRpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oIDE+TlVMIDI+JjEKKyAgICBpZiBlcnJvcmxldmVsIDEgKAorICAgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgICAgZXhpdCAvQiA0CisgICAgKQorICApCisKKyAgcmVtIFNldHVwIGMtYXJlcyBnaXQgdHJlZQorICBpZiBleGlzdCBhcmVzXGJ1aWxkY29uZi5iYXQgKAorICAgIGVjaG8uCisgICAgZWNobyBDb25maWd1cmluZyBjLWFyZXMgYnVpbGQgZW52aXJvbm1lbnQKKyAgICBjZCBhcmVzCisgICAgY2FsbCBidWlsZGNvbmYuYmF0CisgICAgY2QgLi4KKyAgKQorCisgIGlmICIlQkFTSUNfSFVHRUhFTFAlIiA9PSAiMSIgKAorICAgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKKyAgICBleGl0IC9CIDEKKyAgKQorCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKKyAgZXhpdCAvQiAwCisKK3JlbSBNYWluIGNsZWFuIGZ1bmN0aW9uLgorcmVtCityZW0gUmV0dXJuczoKK3JlbQorcmVtIDAgLSBzdWNjZXNzCityZW0gMSAtIGZhaWxlZCB0byBjbGVhbiBNYWtlZmlsZQorcmVtIDIgLSBmYWlsZWQgdG8gY2xlYW4gdG9vbF9odWdlaGVscC5jCityZW0gMyAtIGZhaWxlZCB0byBjbGVhbiBjdXJsYnVpbGQuaAorcmVtCis6Y2xlYW4KKyAgcmVtIFJlbW92ZSBNYWtlZmlsZQorICBlY2hvICogJUNEJVxNYWtlZmlsZQorICBpZiBleGlzdCBNYWtlZmlsZSAoCisgICAgZGVsIE1ha2VmaWxlIDI+TlVMCisgICAgaWYgZXhpc3QgTWFrZWZpbGUgKAorICAgICAgZXhpdCAvQiAxCisgICAgKQorICApCisKKyAgcmVtIFJlbW92ZSB0b29sX2h1Z2VoZWxwLmMKKyAgZWNobyAqICVDRCVcc3JjXHRvb2xfaHVnZWhlbHAuYworICBpZiBleGlzdCBzcmNcdG9vbF9odWdlaGVscC5jICgKKyAgICBkZWwgc3JjXHRvb2xfaHVnZWhlbHAuYyAyPk5VTAorICAgIGlmIGV4aXN0IHNyY1x0b29sX2h1Z2VoZWxwLmMgKAorICAgICAgZXhpdCAvQiAyCisgICAgKQorICApCisKKyAgcmVtIFJlbW92ZSBjdXJsYnVpbGQuaAorICBlY2hvICogJUNEJVxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oICgKKyAgICBkZWwgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oIDI+TlVMCisgICAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oICgKKyAgICAgIGV4aXQgL0IgMworICAgICkKKyAgKQorCisgIGV4aXQgL0IKKworcmVtIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHNyY1x0b29sX2h1Z2VoZWxwLmMKK3JlbQorcmVtIFJldHVybnM6CityZW0KK3JlbSAwIC0gZnVsbCB0b29sX2h1Z2VoZWxwLmMgZ2VuZXJhdGVkCityZW0gMSAtIHNpbXBsaWZpZWQgdG9vbF9odWdlaGVscC5jCityZW0gMiAtIGZhaWx1cmUKK3JlbQorOmdlbkh1Z2VIZWxwCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgc2V0bG9jYWwKKyAgc2V0IExDX0FMTD1DCisgIHNldCBST0ZGQ01EPQorICBzZXQgQkFTSUM9MQorCisgIGlmIGRlZmluZWQgSEFWRV9QRVJMICgKKyAgICBpZiBkZWZpbmVkIEhBVkVfR1JPRkYgKAorICAgICAgc2V0IFJPRkZDTUQ9Z3JvZmYgLW10dHktY2hhciAtVGFzY2lpIC1QLWMgLW1hbgorICAgICkgZWxzZSBpZiBkZWZpbmVkIEhBVkVfTlJPRkYgKAorICAgICAgc2V0IFJPRkZDTUQ9bnJvZmYgLWMgLVRhc2NpaSAtbWFuCisgICAgKQorICApCisKKyAgaWYgZGVmaW5lZCBST0ZGQ01EICgKKyAgICBlY2hvICNpbmNsdWRlICJ0b29sX3NldHVwLmgiPiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgZWNobyAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIj4+IHNyY1x0b29sX2h1Z2VoZWxwLmMgCisKKyAgICBpZiBkZWZpbmVkIEhBVkVfR1pJUCAoCisgICAgICBlY2hvICNpZm5kZWYgSEFWRV9MSUJaPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICkKKworICAgICVST0ZGQ01EJSBkb2NzXGN1cmwuMSAyPk5VTCB8IHBlcmwgc3JjXG1raGVscC5wbCBkb2NzXE1BTlVBTCA+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgaWYgZGVmaW5lZCBIQVZFX0daSVAgKAorICAgICAgZWNobyAjZWxzZT4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgICVST0ZGQ01EJSBkb2NzXGN1cmwuMSAyPk5VTCB8IHBlcmwgc3JjXG1raGVscC5wbCAtYyBkb2NzXE1BTlVBTCA+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvICNlbmRpZiAvXiogSEFWRV9MSUJaIF4qLz4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICApCisKKyAgICBzZXQgQkFTSUM9MAorICApIGVsc2UgKAorICAgIGlmIGV4aXN0IHNyY1x0b29sX2h1Z2VoZWxwLmMuY3ZzICgKKyAgICAgIGNvcHkgL1kgc3JjXHRvb2xfaHVnZWhlbHAuYy5jdnMgc3JjXHRvb2xfaHVnZWhlbHAuYyAxPk5VTCAyPiYxCisgICAgKSBlbHNlICgKKyAgICAgIGVjaG8gI2luY2x1ZGUgInRvb2xfc2V0dXAuaCI+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgIGVjaG8gI2luY2x1ZGUgInRvb2xfaHVnZWhlbHAuaGQiPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNoby4+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvIHZvaWQgaHVnZWhlbHAodm9pZF4pPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyB7Pj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyAjaWZkZWYgVVNFX01BTlVBTD4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgIGVjaG8gICBmcHV0cygiQnVpbHQtaW4gbWFudWFsIG5vdCBpbmNsdWRlZFxuIiwgc3Rkb3V0Xik7Pj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyAjZW5kaWY+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvIH0+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgKQorICApCisKKyAgZmluZHN0ciAiL0M6dm9pZCBodWdlaGVscCh2b2lkKSIgc3JjXHRvb2xfaHVnZWhlbHAuYyAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMgorICApCisKKyAgaWYgIiVCQVNJQyUiID09ICIxIiAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMQorICApCisKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICBleGl0IC9CIDAKKworcmVtIEZ1bmN0aW9uIHRvIGNsZWFuLXVwIGxvY2FsIHZhcmlhYmxlcyB1bmRlciBET1MsIFdpbmRvd3MgMy54IGFuZAorcmVtIFdpbmRvd3MgOXggYXMgc2V0bG9jYWwgaXNuJ3QgYXZhaWxhYmxlIHVudGlsIFdpbmRvd3MgTlQKK3JlbQorOmRvc0NsZWFudXAKKyAgc2V0IE1PREU9CisgIHNldCBIQVZFX0dST0ZGPQorICBzZXQgSEFWRV9OUk9GRj0KKyAgc2V0IEhBVkVfUEVSTD0KKyAgc2V0IEhBVkVfR1pJUD0KKyAgc2V0IEJBU0lDX0hVR0VIRUxQPQorICBzZXQgTENfQUxMCisgIHNldCBST0ZGQ01EPQorICBzZXQgQkFTSUM9CisKKyAgZXhpdCAvQgorCis6c3ludGF4CisgIHJlbSBEaXNwbGF5IHRoZSBoZWxwCisgIGVjaG8uCisgIGVjaG8gVXNhZ2U6IGJ1aWxkY29uZiBbLWNsZWFuXQorICBlY2hvLgorICBlY2hvIC1jbGVhbiAgICAtIFJlbW92ZXMgdGhlIGZpbGVzCisgIGdvdG8gZXJyb3IKKworOnVua25vd24KKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5rbm93biBhcmd1bWVudCAnJTEnCisgIGdvdG8gZXJyb3IKKworOm5vcmVwbworICBlY2hvLgorICBlY2hvIEVycm9yOiBUaGlzIGJhdGNoIGZpbGUgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIGEgY3VybCBnaXQgcmVwb3NpdG9yeQorICBnb3RvIGVycm9yCisKKzpub2dlbm1ha2VmaWxlCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBNYWtlZmlsZQorICBnb3RvIGVycm9yCisKKzpub2dlbmh1Z2VoZWxwCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBzcmNcdG9vbF9odWdlaGVscC5jCisgIGdvdG8gZXJyb3IKKworOm5vZ2VuY3VybGJ1aWxkCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgZ290byBlcnJvcgorCis6bm9jbGVhbm1ha2VmaWxlCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBjbGVhbiBNYWtlZmlsZQorICBnb3RvIGVycm9yCisKKzpub2NsZWFuaHVnZWhlbHAKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5hYmxlIHRvIGNsZWFuIHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgZ290byBlcnJvcgorCis6bm9jbGVhbmN1cmxidWlsZAorICBlY2hvLgorICBlY2hvIEVycm9yOiBVbmFibGUgdG8gY2xlYW4gaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oCisgIGdvdG8gZXJyb3IKKworOndhcm5pbmcKKyAgZWNoby4KKyAgZWNobyBXYXJuaW5nOiBUaGUgY3VybCBtYW51YWwgY291bGQgbm90IGJlIGludGVncmF0ZWQgaW4gdGhlIHNvdXJjZS4gVGhpcyBtZWFucyB3aGVuCisgIGVjaG8geW91IGJ1aWxkIGN1cmwgdGhlIG1hbnVhbCB3aWxsIG5vdCBiZSBhdmFpbGFibGUgKGN1cmwgLS1tYW5eKS4gSW50ZWdyYXRpb24gb2YKKyAgZWNobyB0aGUgbWFudWFsIGlzIG5vdCByZXF1aXJlZCBhbmQgYSBzdW1tYXJ5IG9mIHRoZSBvcHRpb25zIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlCisgIGVjaG8gKGN1cmwgLS1oZWxwXikuIFRvIGludGVncmF0ZSB0aGUgbWFudWFsIHlvdXIgUEFUSCBpcyByZXF1aXJlZCB0byBoYXZlCisgIGVjaG8gZ3JvZmYvbnJvZmYsIHBlcmwgYW5kIG9wdGlvbmFsbHkgZ3ppcCBmb3IgY29tcHJlc3Npb24uCisgIGdvdG8gc3VjY2VzcworCis6ZXJyb3IKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiAoCisgICAgZW5kbG9jYWwKKyAgKSBlbHNlICgKKyAgICBjYWxsIDpkb3NDbGVhbnVwCisgICkKKyAgZXhpdCAvQiAxCisKKzpzdWNjZXNzCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgKAorICAgIGVuZGxvY2FsCisgICkgZWxzZSAoCisgICAgY2FsbCA6ZG9zQ2xlYW51cAorICApCisgIGV4aXQgL0IgMApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGE1ZThiNGMuLmRhMGU5ZDggMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDE0ICsyNCwxNCBAQAogQUNfUFJFUkVRKDIuNTcpCiAKIGRubCBXZSBkb24ndCBrbm93IHRoZSB2ZXJzaW9uIG51bWJlciAic3RhdGljYWxseSIgc28gd2UgdXNlIGEgZGFzaCBoZXJlCi1BQ19JTklUKFtjdXJsXSwgWy1dLCBbYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdDogaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL10pCitBQ19JTklUKFtjdXJsXSwgWy1dLCBbYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9dKQogCiBYQ19PVlJfWlo1MAogWENfT1ZSX1paNjAKIENVUkxfT1ZFUlJJREVfQVVUT0NPTkYKIAogZG5sIGNvbmZpZ3VyZSBzY3JpcHQgY29weXJpZ2h0Ci1BQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OCAtIDIwMTQgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+CitBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OCAtIDIwMTYgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+CiBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQgYW5kIG1vZGlmaWVkIHVuZGVyIHRoZQogdGVybXMgb2YgdGhlIGN1cmwgbGljZW5zZTsgc2VlIENPUFlJTkcgZm9yIG1vcmUgZGV0YWlsc10pCiAKQEAgLTM5LDYgKzM5LDcgQEAKIEFDX0NPTkZJR19IRUFERVJTKGxpYi9jdXJsX2NvbmZpZy5oIGluY2x1ZGUvY3VybC9jdXJsYnVpbGQuaCkKIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKIEFNX01BSU5UQUlORVJfTU9ERQorbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKIAogQ1VSTF9DSEVDS19PUFRJT05fREVCVUcKIENVUkxfQ0hFQ0tfT1BUSU9OX09QVElNSVpFCkBAIC00Nyw2ICs0OCw3IEBACiBDVVJMX0NIRUNLX09QVElPTl9DVVJMREVCVUcKIENVUkxfQ0hFQ0tfT1BUSU9OX1NZTUJPTF9ISURJTkcKIENVUkxfQ0hFQ0tfT1BUSU9OX0FSRVMKK0NVUkxfQ0hFQ0tfT1BUSU9OX1JUCiAKIFhDX0NIRUNLX1BBVEhfU0VQQVJBVE9SCiAKQEAgLTE0Nyw3ICsxNDksNyBAQAogCiBkbmwKIGRubCBpbml0aWFsaXplIGFsbCB0aGUgaW5mbyB2YXJpYWJsZXMKLSAgICBjdXJsX3NzbF9tc2c9Im5vICAgICAgKC0td2l0aC17c3NsLGdudXRscyxuc3MscG9sYXJzc2wsY3lhc3NsLGF4dGxzLHdpbnNzbCxkYXJ3aW5zc2x9ICkiCisgICAgY3VybF9zc2xfbXNnPSJubyAgICAgICgtLXdpdGgte3NzbCxnbnV0bHMsbnNzLHBvbGFyc3NsLG1iZWR0bHMsY3lhc3NsLGF4dGxzLHdpbnNzbCxkYXJ3aW5zc2x9ICkiCiAgICAgY3VybF9zc2hfbXNnPSJubyAgICAgICgtLXdpdGgtbGlic3NoMikiCiAgICBjdXJsX3psaWJfbXNnPSJubyAgICAgICgtLXdpdGgtemxpYikiCiAgICAgY3VybF9nc3NfbXNnPSJubyAgICAgICgtLXdpdGgtZ3NzYXBpKSIKQEAgLTE2NSw2ICsxNjcsNyBAQAogICAgY3VybF9ydHNwX21zZz0ibm8gICAgICAoLS1lbmFibGUtcnRzcCkiCiAgICBjdXJsX3J0bXBfbXNnPSJubyAgICAgICgtLXdpdGgtbGlicnRtcCkiCiAgIGN1cmxfbXRsbmtfbXNnPSJubyAgICAgICgtLXdpdGgtbGlibWV0YWxpbmspIgorICAgIGN1cmxfcHNsX21zZz0ibm8gICAgICAoLS13aXRoLWxpYnBzbCkiCiAKICAgICBpbml0X3NzbF9tc2c9JHtjdXJsX3NzbF9tc2d9CiAKQEAgLTMyOCw3ICszMzEsNyBAQAogCiBDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTCiBDVVJMX0NIRUNLX05BVElWRV9XSU5ET1dTCi1jYXNlIFgtIiRhY19jdl9uYXRpdmVfd2luZG93cyIgaW4KK2Nhc2UgWC0iJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiIGluCiAgIFgteWVzKQogICAgIENVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0sKICAgICBDVVJMX0NIRUNLX0hFQURFUl9XSU5TT0NLMgpAQCAtMzM3LDExICszNDAsMTEgQEAKICAgICBDVVJMX0NIRUNLX0hFQURFUl9XSU5CRVIKICAgICA7OwogICAqKQotICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgotICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oPSJubyIKLSAgICBhY19jdl9oZWFkZXJfd3MydGNwaXBfaD0ibm8iCi0gICAgYWNfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCi0gICAgYWNfY3ZfaGVhZGVyX3dpbmJlcl9oPSJubyIKKyAgICBjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2syX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCisgICAgY3VybF9jdl9oZWFkZXJfd2luYmVyX2g9Im5vIgogICAgIDs7CiBlc2FjCiBDVVJMX0NIRUNLX1dJTjMyX0xBUkdFRklMRQpAQCAtNzMxLDggKzczNCw4IEBACiBpZiB0ZXN0ICIkSEFWRV9HRVRIT1NUQllOQU1FIiAhPSAiMSIKIHRoZW4KICAgZG5sIFRoaXMgaXMgZm9yIHdpbnNvY2sgc3lzdGVtcwotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAieWVzIjsgdGhlbgotICAgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luc29ja19oIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2hlYWRlcl93aW5kb3dzX2giID0gInllcyI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd2luc29ja19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAgICotKi1taW5ndzMyY2UqKQogICAgICAgICAgIHdpbnNvY2tfTElCPSItbHdpbnNvY2siCkBAIC03NDIsNyArNzQ1LDcgQEAKICAgICAgICAgICA7OwogICAgICAgZXNhYwogICAgIGZpCi0gICAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiA9ICJ5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2syX2giID0gInllcyI7IHRoZW4KICAgICAgIHdpbnNvY2tfTElCPSItbHdzMl8zMiIKICAgICBmaQogICAgIGlmIHRlc3QgISAteiAiJHdpbnNvY2tfTElCIjsgdGhlbgpAQCAtODQwLDE3ICs4NDMsNiBAQAogICBBQ19NU0dfRVJST1IoW2NvdWxkbid0IGZpbmQgbGlicmFyaWVzIGZvciBnZXRob3N0YnluYW1lKCldKQogZmkKIAotZG5sIHJlc29sdmUgbGliPwotQUNfQ0hFQ0tfRlVOQyhzdHJjYXNlY21wLCAsIFsgQUNfQ0hFQ0tfTElCKHJlc29sdmUsIHN0cmNhc2VjbXApIF0pCi0KLWlmIHRlc3QgIiRhY19jdl9saWJfcmVzb2x2ZV9zdHJjYXNlY21wIiA9ICIkYWNfY3ZfZnVuY19zdHJjYXNlY21wIjsgdGhlbgotICBBQ19DSEVDS19MSUIocmVzb2x2ZSwgc3RyY2FzZWNtcCwKLSAgICAgICAgICAgICAgW0xJQlM9Ii1scmVzb2x2ZSAkTElCUyJdLAotICAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICAgLWxuc2wpCi1maQotYWNfY3ZfZnVuY19zdHJjYXNlY21wPSJubyIKLQogQ1VSTF9DSEVDS19MSUJTX0NPTk5FQ1QKIAogQ1VSTF9ORVRXT1JLX0xJQlM9JExJQlMKQEAgLTk4OCw3ICs5ODAsNyBAQAogICBDVVJMX0NIRUNLX0hFQURFUl9MREFQX1NTTAogCiAgIGlmIHRlc3QgLXogIiRMREFQTElCTkFNRSIgOyB0aGVuCi0gICAgaWYgdGVzdCAiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyI7IHRoZW4KICAgICAgIGRubCBXaW5kb3dzIHVzZXMgYSBzaW5nbGUgYW5kIHVuaXF1ZSBMREFQIGxpYnJhcnkgbmFtZQogICAgICAgTERBUExJQk5BTUU9IndsZGFwMzIiCiAgICAgICBMQkVSTElCTkFNRT0ibm8iCkBAIC0xMDcyLDcgKzEwNjQsMTEgQEAKIAogICBBQ19UUllfUlVOKFsgLyogaXMgQUZfSU5FVDYgYXZhaWxhYmxlPyAqLwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfV0lOU09DSzJfSAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZWxzZQogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBmb3IgZXhpdCgpICovCiBtYWluKCkKIHsKQEAgLTEwODYsOCArMTA4Miw4IEBACiAgIGlwdjY9eWVzLAogICBBQ19NU0dfUkVTVUxUKG5vKQogICBpcHY2PW5vLAotICBBQ19NU0dfUkVTVUxUKG5vKQotICBpcHY2PW5vCisgIEFDX01TR19SRVNVTFQoeWVzKQorICBpcHY2PXllcwogKSkKIAogaWYgdGVzdCAiJGlwdjYiID0gInllcyI7IHRoZW4KQEAgLTEwOTksNyArMTA5NSwxMiBAQAogICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHN0cnVjdCBzb2NrYWRkcl9pbjYgaGFzIHNpbjZfc2NvcGVfaWQgbWVtYmVyXSkKICAgQUNfVFJZX0NPTVBJTEUoWwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dICwKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZWxzZQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZl0gLAogICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHM7IHMuc2luNl9zY29wZV9pZCA9IDA7ICwgaGF2ZV9zaW42X3Njb3BlX2lkPXllcykKICAgaWYgdGVzdCAiJGhhdmVfc2luNl9zY29wZV9pZCIgPSB5ZXM7IHRoZW4KICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQpAQCAtMTMyOSw3ICsxMzMwLDcgQEAKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgV2luZG93cyBuYXRpdmUgU1NML1RMUyAoV2luZG93cyBuYXRpdmUgYnVpbGRzIG9ubHkpXSkKIGlmIHRlc3QgIiRjdXJsX3NzbF9tc2ciID0gIiRpbml0X3NzbF9tc2ciOyB0aGVuCiAgIGlmIHRlc3QgIngkT1BUX1dJTlNTTCIgIT0gInhubyIgICYmCi0gICAgIHRlc3QgIngkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInh5ZXMiOyB0aGVuCisgICAgIHRlc3QgIngkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSAieHllcyI7IHRoZW4KICAgICBBQ19NU0dfUkVTVUxUKHllcykKICAgICBBQ19ERUZJTkUoVVNFX1NDSEFOTkVMLCAxLCBbdG8gZW5hYmxlIFdpbmRvd3MgbmF0aXZlIFNTTC9UTFMgc3VwcG9ydF0pCiAgICAgQUNfU1VCU1QoVVNFX1NDSEFOTkVMLCBbMV0pCkBAIC0xMzg4LDYgKzEzODksMjQgQEAKICAgQ0xFQU5DUFBGTEFHUz0iJENQUEZMQUdTIgogICBDTEVBTkxJQlM9IiRMSUJTIgogCisgIGRubCBUaGlzIGlzIGZvciBNc3lzL01pbmd3CisgIGNhc2UgJGhvc3QgaW4KKyAgICAqLSotbXN5cyogfCAqLSotbWluZ3cqKQorICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2RpMzJdKQorICAgICAgbXlfYWNfc2F2ZV9MSUJTPSRMSUJTCisgICAgICBMSUJTPSItbGdkaTMyICRMSUJTIgorICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDx3aW5kZWYuaD4KKyAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8d2luZ2RpLmg+XSwKKyAgICAgICAgICAgICAgICAgICBbR2RpRmx1c2goKTtdLAorICAgICAgICAgICAgICAgICAgIFsgZG5sIHdvcmtlZCEKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCisgICAgICAgICAgICAgICAgICAgWyBkbmwgZmFpbGVkLCByZXN0b3JlIExJQlMKKyAgICAgICAgICAgICAgICAgICBMSUJTPSRteV9hY19zYXZlX0xJQlMKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKG5vKV0KKyAgICAgICAgICAgICAgICAgICkKKyAgICAgIDs7CisgIGVzYWMKKwogICBjYXNlICIkT1BUX1NTTCIgaW4KICAgeWVzKQogICAgIGRubCAtLXdpdGgtc3NsICh3aXRob3V0IHBhdGgpIHVzZWQKQEAgLTE0NjYsMzEgKzE0ODUsMTMgQEAKICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkU1NMX0NQUEZMQUdTIgogICBMREZMQUdTPSIkTERGTEFHUyAkU1NMX0xERkxBR1MiCiAKLSAgZG5sIFRoaXMgaXMgZm9yIE1zeXMvTWluZ3cKLSAgY2FzZSAkaG9zdCBpbgotICAgICotKi1tc3lzKiB8ICotKi1taW5ndyopCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnZGkzMl0pCi0gICAgICBteV9hY19zYXZlX0xJQlM9JExJQlMKLSAgICAgIExJQlM9Ii1sZ2RpMzIgJExJQlMiCi0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHdpbmRlZi5oPgotICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx3aW5nZGkuaD5dLAotICAgICAgICAgICAgICAgICAgIFtHZGlGbHVzaCgpO10sCi0gICAgICAgICAgICAgICAgICAgWyBkbmwgd29ya2VkIQotICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pXSwKLSAgICAgICAgICAgICAgICAgICBbIGRubCBmYWlsZWQsIHJlc3RvcmUgTElCUwotICAgICAgICAgICAgICAgICAgIExJQlM9JG15X2FjX3NhdmVfTElCUwotICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQobm8pXQotICAgICAgICAgICAgICAgICAgKQotICAgICAgOzsKLSAgZXNhYwotCi0gIEFDX0NIRUNLX0xJQihjcnlwdG8sIENSWVBUT19sb2NrLFsKKyAgQUNfQ0hFQ0tfTElCKGNyeXB0bywgSE1BQ19VcGRhdGUsWwogICAgICBIQVZFQ1JZUFRPPSJ5ZXMiCiAgICAgIExJQlM9Ii1sY3J5cHRvICRMSUJTIgogICAgICBdLFsKICAgICAgTERGTEFHUz0iJENMRUFOTERGTEFHUyAtTCRMSUJfT1BFTlNTTCIKICAgICAgQ1BQRkxBR1M9IiRDTEVBTkNQUEZMQUdTIC1JJFBSRUZJWF9PUEVOU1NML2luY2x1ZGUvb3BlbnNzbCAtSSRQUkVGSVhfT1BFTlNTTC9pbmNsdWRlIgotICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBITUFDX0luaXQsWworICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBITUFDX0luaXRfZXgsWwogICAgICAgIEhBVkVDUllQVE89InllcyIKICAgICAgICBMSUJTPSItbGNyeXB0byAkTElCUyJdLCBbCiAgICAgICAgTERGTEFHUz0iJENMRUFOTERGTEFHUyIKQEAgLTE1MDEsNiArMTUwMiw0NiBAQAogCiAKICAgaWYgdGVzdCBYIiRIQVZFQ1JZUFRPIiA9IFgieWVzIjsgdGhlbgorICAgICBBQ19NU0dfQ0hFQ0tJTkcoW09wZW5TU0wgbGlua2luZyB3aXRob3V0IC1sZGxdKQorICAgICBzYXZlZF9saWJzPSRMSUJTCisgICAgIEFDX1RSWV9MSU5LKAorICAgICAgICBbCisgICAgICAgICAgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgICAgICAgIF0sCisgICAgICAgIFsKKyAgICAgICAgICBTU0xlYXlfYWRkX2FsbF9hbGdvcml0aG1zKCk7CisgICAgICAgIF0sCisgICAgICAgIFsKKyAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgICAgICBMSUJTPSIkc2F2ZWRfbGlicyIKKyAgICAgICAgXSwKKyAgICAgICAgWworICAgICAgICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtPcGVuU1NMIGxpbmtpbmcgd2l0aCAtbGRsXSkKKyAgICAgICAgICBMSUJTPSItbGRsICRMSUJTIgorICAgICAgICAgIEFDX1RSWV9MSU5LKAorICAgICAgICAgIFsKKyAgICAgICAgICAgICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgU1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcygpOworICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgICAgICAgICBMSUJTPSIkc2F2ZWRfbGlicyAtbGRsIgorICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgICAgICAgIExJQlM9IiRzYXZlZF9saWJzIgorICAgICAgICAgIF0KKyAgICAgICAgICApCisKKyAgICAgICAgXQorICAgICApCisKKyAgZmkKKworICBpZiB0ZXN0IFgiJEhBVkVDUllQVE8iID0gWCJ5ZXMiOyB0aGVuCiAgICAgZG5sIFRoaXMgaXMgb25seSByZWFzb25hYmxlIHRvIGRvIGlmIGNyeXB0byBhY3R1YWxseSBpcyB0aGVyZTogY2hlY2sgZm9yCiAgICAgZG5sIFNTTCBsaWJzIE5PVEU6IGl0IGlzIGltcG9ydGFudCB0byBkbyB0aGlzIEFGVEVSIHRoZSBjcnlwdG8gbGliCiAKQEAgLTE1NzEsNyArMTYxMiw2IEBACiAgICAgZG5sIE9sZGVyIHZlcnNpb25zIG9mIEN5YXNzbCAoc29tZSB0aW1lIGJlZm9yZSAyLjkuNCkgZG9uJ3QgaGF2ZQogICAgIGRubCBTU0xfZ2V0X3NodXRkb3duIChidXQgdGhpcyBjaGVjayB3b24ndCBhY3R1YWxseSBkZXRlY3QgaXQgdGhlcmUKICAgICBkbmwgYXMgaXQncyBhIG1hY3JvIHRoYXQgbmVlZHMgdGhlIGhlYWRlciBmaWxlcyBiZSBpbmNsdWRlZCkKLSAgICBkbmwgQm9yaW5nU1NMIGRvZXNuJ3QgaGF2ZSBERVNfc2V0X29kZF9wYXJpdHkKIAogICAgIEFDX0NIRUNLX0ZVTkNTKCBSQU5EX3N0YXR1cyBcCiAgICAgICAgICAgICAgICAgICAgIFJBTkRfc2NyZWVuIFwKQEAgLTE1NzksMjQgKzE2MTksMjQgQEAKICAgICAgICAgICAgICAgICAgICAgRU5HSU5FX2NsZWFudXAgXAogICAgICAgICAgICAgICAgICAgICBDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YSBcCiAgICAgICAgICAgICAgICAgICAgIFNTTF9nZXRfc2h1dGRvd24gXAotICAgICAgICAgICAgICAgICAgICBTU0x2Ml9jbGllbnRfbWV0aG9kIFwKLSAgICAgICAgICAgICAgICAgICAgREVTX3NldF9vZGRfcGFyaXR5ICkKKyAgICAgICAgICAgICAgICAgICAgU1NMdjJfY2xpZW50X21ldGhvZCApCiAKICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBCb3JpbmdTU0xdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKLSAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwotI2luY2x1ZGUgPG9wZW5zc2wvYmFzZS5oPgotICAgICAgXV0sW1sKLSNpZm5kZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKLSNlcnJvciBub3QgYm9yaW5nc3NsCi0jZW5kaWYKLSAgICAgIF1dKQorICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9iYXNlLmg+CisgICAgICAgICAgICAgICAgXV0sW1sKKyAgICAgICAgICAgICAgICAjaWZuZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCisgICAgICAgICAgICAgICAgI2Vycm9yIG5vdCBib3Jpbmdzc2wKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CT1JJTkdTU0wsIDEsCi0gICAgICAgIFtEZWZpbmUgdG8gMSBpZiB1c2luZyBCb3JpbmdTU0wuXSkKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQk9SSU5HU1NMLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHVzaW5nIEJvcmluZ1NTTC5dKQorICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKEJvcmluZ1NTTCkiCiAgICAgXSxbCi0gICAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgICBdKQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGlicmVzc2xdKQpAQCAtMTc4MCwxMiArMTgyMCwxMyBAQAogICAgICAgICAgIGRubCBsaW5rZXIgZG9lc24ndCBzZWFyY2ggdGhyb3VnaCwgd2UgbmVlZCB0byBhZGQgaXQgdG8KICAgICAgICAgICBkbmwgTERfTElCUkFSWV9QQVRIIHRvIHByZXZlbnQgZnVydGhlciBjb25maWd1cmUgdGVzdHMgdG8gZmFpbAogICAgICAgICAgIGRubCBkdWUgdG8gdGhpcwotICAgICAgICAgIGlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiAhPSAieHllcyI7IHRoZW4gCisgICAgICAgICAgaWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciICE9ICJ4eWVzIjsgdGhlbgogICAgICAgICAgICAgTERfTElCUkFSWV9QQVRIPSIkTERfTElCUkFSWV9QQVRIOiRndGxzbGliIgogICAgICAgICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSAogICAgICAgICAgICAgQUNfTVNHX05PVElDRShbQWRkZWQgJGd0bHNsaWIgdG8gTERfTElCUkFSWV9QQVRIXSkKICAgICAgICAgICBmaQogICAgICAgICBmaQorICAgICAgICBBQ19DSEVDS19GVU5DUyhnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUyKQogICAgICAgZmkKIAogICAgIGZpCkBAIC0xOTI0LDYgKzE5NjUsOTMgQEAKIGZpCiAKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgY2hlY2sgZm9yIG1iZWRUTFMKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09QVF9NQkVEVExTPW5vCisKK19jcHBmbGFncz0kQ1BQRkxBR1MKK19sZGZsYWdzPSRMREZMQUdTCitBQ19BUkdfV0lUSChtYmVkdGxzLGRubAorQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1tYmVkdGxzPVBBVEhdLFt3aGVyZSB0byBsb29rIGZvciBtYmVkVExTLCBQQVRIIHBvaW50cyB0byB0aGUgaW5zdGFsbGF0aW9uIHJvb3RdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1tYmVkdGxzXSwgW2Rpc2FibGUgbWJlZFRMUyBkZXRlY3Rpb25dKSwKKyAgT1BUX01CRURUTFM9JHdpdGh2YWwpCisKK2lmIHRlc3QgIiRjdXJsX3NzbF9tc2ciID0gIiRpbml0X3NzbF9tc2ciOyB0aGVuCisKKyAgaWYgdGVzdCBYIiRPUFRfTUJFRFRMUyIgIT0gWG5vOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkT1BUX01CRURUTFMiID0gInllcyI7IHRoZW4KKyAgICAgIE9QVF9NQkVEVExTPSIiCisgICAgZmkKKworICAgIGlmIHRlc3QgLXogIiRPUFRfTUJFRFRMUyIgOyB0aGVuCisgICAgICBkbmwgY2hlY2sgZm9yIGxpYiBmaXJzdCB3aXRob3V0IHNldHRpbmcgYW55IG5ldyBwYXRoCisKKyAgICAgIEFDX0NIRUNLX0xJQihtYmVkdGxzLCBtYmVkdGxzX2hhdmVnZV9pbml0LAorICAgICAgZG5sIGxpYm1iZWR0bHMgZm91bmQsIHNldCB0aGUgdmFyaWFibGUKKyAgICAgICBbCisgICAgICAgICBBQ19ERUZJTkUoVVNFX01CRURUTFMsIDEsIFtpZiBtYmVkVExTIGlzIGVuYWJsZWRdKQorICAgICAgICAgQUNfU1VCU1QoVVNFX01CRURUTFMsIFsxXSkKKyAgICAgICAgIE1CRURUTFNfRU5BQkxFRD0xCisgICAgICAgICBVU0VfTUJFRFRMUz0ieWVzIgorICAgICAgICAgY3VybF9zc2xfbXNnPSJlbmFibGVkIChtYmVkVExTKSIKKyAgICAgICAgXSwgW10sIC1sbWJlZHg1MDkgLWxtYmVkY3J5cHRvKQorICAgIGZpCisKKyAgICBhZGRsZD0iIgorICAgIGFkZGxpYj0iIgorICAgIGFkZGNmbGFncz0iIgorICAgIG1iZWR0bHNsaWI9IiIKKworICAgIGlmIHRlc3QgIngkVVNFX01CRURUTFMiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgZG5sIGFkZCB0aGUgcGF0aCBhbmQgdGVzdCBhZ2FpbgorICAgICAgYWRkbGQ9LUwkT1BUX01CRURUTFMvbGliJGxpYnN1ZmYKKyAgICAgIGFkZGNmbGFncz0tSSRPUFRfTUJFRFRMUy9pbmNsdWRlCisgICAgICBtYmVkdGxzbGliPSRPUFRfTUJFRFRMUy9saWIkbGlic3VmZgorCisgICAgICBMREZMQUdTPSIkTERGTEFHUyAkYWRkbGQiCisgICAgICBpZiB0ZXN0ICIkYWRkY2ZsYWdzIiAhPSAiLUkvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRhZGRjZmxhZ3MiCisgICAgICBmaQorCisgICAgICBBQ19DSEVDS19MSUIobWJlZHRscywgbWJlZHRsc19zc2xfaW5pdCwKKyAgICAgICBbCisgICAgICAgQUNfREVGSU5FKFVTRV9NQkVEVExTLCAxLCBbaWYgbWJlZFRMUyBpcyBlbmFibGVkXSkKKyAgICAgICBBQ19TVUJTVChVU0VfTUJFRFRMUywgWzFdKQorICAgICAgIE1CRURUTFNfRU5BQkxFRD0xCisgICAgICAgVVNFX01CRURUTFM9InllcyIKKyAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKG1iZWRUTFMpIgorICAgICAgIF0sCisgICAgICAgWworICAgICAgICAgQ1BQRkxBR1M9JF9jcHBmbGFncworICAgICAgICAgTERGTEFHUz0kX2xkZmxhZ3MKKyAgICAgICBdLCAtbG1iZWR4NTA5IC1sbWJlZGNyeXB0bykKKyAgICBmaQorCisgICAgaWYgdGVzdCAieCRVU0VfTUJFRFRMUyIgPSAieHllcyI7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW2RldGVjdGVkIG1iZWRUTFNdKQorCisgICAgICBMSUJTPSItbG1iZWR0bHMgLWxtYmVkeDUwOSAtbG1iZWRjcnlwdG8gJExJQlMiCisKKyAgICAgIGlmIHRlc3QgLW4gIiRtYmVkdGxzbGliIjsgdGhlbgorICAgICAgICBkbmwgd2hlbiBzaGFyZWQgbGlicyB3ZXJlIGZvdW5kIGluIGEgcGF0aCB0aGF0IHRoZSBydW4tdGltZQorICAgICAgICBkbmwgbGlua2VyIGRvZXNuJ3Qgc2VhcmNoIHRocm91Z2gsIHdlIG5lZWQgdG8gYWRkIGl0IHRvCisgICAgICAgIGRubCBMRF9MSUJSQVJZX1BBVEggdG8gcHJldmVudCBmdXJ0aGVyIGNvbmZpZ3VyZSB0ZXN0cyB0byBmYWlsCisgICAgICAgIGRubCBkdWUgdG8gdGhpcworICAgICAgICBpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgIT0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgTERfTElCUkFSWV9QQVRIPSIkTERfTElCUkFSWV9QQVRIOiRtYmVkdGxzbGliIgorICAgICAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEgKKyAgICAgICAgICBBQ19NU0dfTk9USUNFKFtBZGRlZCAkbWJlZHRsc2xpYiB0byBMRF9MSUJSQVJZX1BBVEhdKQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorCisgIGZpIGRubCBtYmVkVExTIG5vdCBkaXNhYmxlZAorCitmaQorCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZG5sIGNoZWNrIGZvciBDeWFTU0wKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIwMjYsMTEgKzIxNTQsMTEgQEAKIAldXSkKICAgICAgIF0sWwogICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgICAgICBBQ19ERUZJTkUoVVNFX0NZQVNTTCwgMSwgW2lmIEN5YVNTTCBpcyBlbmFibGVkXSkKKyAgICAgICAgIEFDX0RFRklORShVU0VfQ1lBU1NMLCAxLCBbaWYgQ3lhU1NML1dvbGZTU0wgaXMgZW5hYmxlZF0pCiAgICAgICAgICBBQ19TVUJTVChVU0VfQ1lBU1NMLCBbMV0pCiAgICAgICAgICBDWUFTU0xfRU5BQkxFRD0xCiAgICAgICAgICBVU0VfQ1lBU1NMPSJ5ZXMiCi0gICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKEN5YVNTTCkiCisgICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKFdvbGZTU0wpIgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKQEAgLTIwNDIsNyArMjE3MCw3IEBACiAgICAgZmkKIAogICAgIGlmIHRlc3QgIngkVVNFX0NZQVNTTCIgPSAieHllcyI7IHRoZW4KLSAgICAgIEFDX01TR19OT1RJQ0UoW2RldGVjdGVkIEN5YVNTTF0pCisgICAgICBBQ19NU0dfTk9USUNFKFtkZXRlY3RlZCAkY3lhc3NsbGlibmFtZV0pCiAKICAgICAgIGRubCBjeWFzc2wvY3Rhb2NyeXB0L3R5cGVzLmggbmVlZHMgU0laRU9GX0xPTkdfTE9ORyBkZWZpbmVkIQogICAgICAgQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZykKQEAgLTIwNTUsNiArMjE4MywxOSBAQAogCiAgICAgICBMSUJTPSItbCRjeWFzc2xsaWJuYW1lIC1sbSAkTElCUyIKIAorICAgICAgaWYgdGVzdCAieCRjeWFzc2xsaWJuYW1lIiA9ICJ4d29sZnNzbCI7IHRoZW4KKyAgICAgICAgZG5sIFJlY2VudCBXb2xmU1NMIHZlcnNpb25zIGJ1aWxkIHdpdGhvdXQgU1NMdjMgYnkgZGVmYXVsdAorICAgICAgICBkbmwgV29sZlNTTCBuZWVkcyBjb25maWd1cmUgLS1lbmFibGUtb3BlbnNzbGV4dHJhIHRvIGhhdmUgKmdldF9wZWVyKgorICAgICAgICBBQ19DSEVDS19GVU5DUyh3b2xmU1NMdjNfY2xpZW50X21ldGhvZCBcCisgICAgICAgICAgICAgICAgICAgICAgIHdvbGZTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgd29sZlNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgIHdvbGZTU0xfVXNlQUxQTikKKyAgICAgIGVsc2UKKyAgICAgICAgZG5sIEN5YXNzbCBuZWVkcyBjb25maWd1cmUgLS1lbmFibGUtb3BlbnNzbGV4dHJhIHRvIGhhdmUgKmdldF9wZWVyKgorICAgICAgICBBQ19DSEVDS19GVU5DUyhDeWFTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgQ3lhU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQorICAgICAgZmkKKwogICAgICAgaWYgdGVzdCAtbiAiJGN5YXNzbGxpYiI7IHRoZW4KICAgICAgICAgZG5sIHdoZW4gc2hhcmVkIGxpYnMgd2VyZSBmb3VuZCBpbiBhIHBhdGggdGhhdCB0aGUgcnVuLXRpbWUKICAgICAgICAgZG5sIGxpbmtlciBkb2Vzbid0IHNlYXJjaCB0aHJvdWdoLCB3ZSBuZWVkIHRvIGFkZCBpdCB0bwpAQCAtMjI0Nyw3ICsyMzg4LDcgQEAKICAgZmkKIGZpCiAKLWlmIHRlc3QgIngkT1BFTlNTTF9FTkFCTEVEJEdOVVRMU19FTkFCTEVEJE5TU19FTkFCTEVEJFBPTEFSU1NMX0VOQUJMRUQkQVhUTFNfRU5BQkxFRCRDWUFTU0xfRU5BQkxFRCRXSU5TU0xfRU5BQkxFRCREQVJXSU5TU0xfRU5BQkxFRCIgPSAieCI7IHRoZW4KK2lmIHRlc3QgIngkT1BFTlNTTF9FTkFCTEVEJEdOVVRMU19FTkFCTEVEJE5TU19FTkFCTEVEJFBPTEFSU1NMX0VOQUJMRUQkTUJFRFRMU19FTkFCTEVEJEFYVExTX0VOQUJMRUQkQ1lBU1NMX0VOQUJMRUQkV0lOU1NMX0VOQUJMRUQkREFSV0lOU1NMX0VOQUJMRUQiID0gIngiOyB0aGVuCiAgIEFDX01TR19XQVJOKFtTU0wgZGlzYWJsZWQsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSBIVFRQUywgRlRQUywgTlRMTSBhbmQgbW9yZS5dKQogICBBQ19NU0dfV0FSTihbVXNlIC0td2l0aC1zc2wsIC0td2l0aC1nbnV0bHMsIC0td2l0aC1wb2xhcnNzbCwgLS13aXRoLWN5YXNzbCwgLS13aXRoLW5zcywgLS13aXRoLWF4dGxzLCAtLXdpdGgtd2luc3NsLCBvciAtLXdpdGgtZGFyd2luc3NsIHRvIGFkZHJlc3MgdGhpcy5dKQogZWxzZQpAQCAtMjI2Myw2ICsyNDA0LDI3IEBACiBDVVJMX0NIRUNLX0NBX0JVTkRMRQogCiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZG5sIENoZWNrIGZvciBsaWJwc2wKK2RubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FDX0FSR19XSVRIKGxpYnBzbCwKKyAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1saWJwc2xdLAorICAgICAgICAgICBbZGlzYWJsZSBzdXBwb3J0IGZvciBsaWJwc2wgY29va2llIGNoZWNraW5nXSksCisgICAgICAgICAgIHdpdGhfbGlicHNsPSR3aXRodmFsLAorICAgICAgICAgICB3aXRoX2xpYnBzbD15ZXMpCitpZiB0ZXN0ICR3aXRoX2xpYnBzbCAhPSAibm8iOyB0aGVuCisgIEFDX1NFQVJDSF9MSUJTKHBzbF9idWlsdGluLCBwc2wsCisgICAgW2N1cmxfcHNsX21zZz0ieWVzIjsKKyAgICAgQUNfREVGSU5FKFtVU0VfTElCUFNMXSwgWzFdLCBbUFNMIHN1cHBvcnQgZW5hYmxlZF0pCisgICAgIF0sCisgICAgW2N1cmxfcHNsX21zZz0ibm8gICAgICAobGlicHNsIG5vdCBmb3VuZCkiOworICAgICBBQ19NU0dfV0FSTihbbGlicHNsIHdhcyBub3QgZm91bmRdKQorICAgICBdCisgICkKK2ZpCitBTV9DT05ESVRJT05BTChbVVNFX0xJQlBTTF0sIFt0ZXN0ICIkY3VybF9wc2xfbXNnIiA9ICJ5ZXMiXSkKKworZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIGRubCBDaGVjayBmb3IgbGlibWV0YWxpbmsKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTI4NzAsNiArMzAzMiwzMSBAQAogZmkKIAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2RubCBDaGVjayBmb3IgenNoIGNvbXBsZXRpb24gcGF0aAorZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworT1BUX1pTSF9GUEFUSD1kZWZhdWx0CitBQ19BUkdfV0lUSCh6c2gtZnVuY3Rpb25zLWRpciwKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtenNoLWZ1bmN0aW9ucy1kaXI9UEFUSF0sW0luc3RhbGwgenNoIGNvbXBsZXRpb25zIHRvIFBBVEhdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16c2gtZnVuY3Rpb25zLWRpcl0sW0RvIG5vdCBpbnN0YWxsIHpzaCBjb21wbGV0aW9uc10pLAorICBbT1BUX1pTSF9GUEFUSD0kd2l0aHZhbF0pCitjYXNlICIkT1BUX1pTSF9GUEFUSCIgaW4KKyAgbm8pCisgICAgZG5sIC0td2l0aG91dC16c2gtZnVuY3Rpb25zLWRpciBvcHRpb24gdXNlZAorICAgIDs7CisgIGRlZmF1bHR8eWVzKQorICAgIGRubCAtLXdpdGgtenNoLWZ1bmN0aW9ucy1kaXIgb3B0aW9uIHVzZWQgd2l0aG91dCBwYXRoCisgICAgWlNIX0ZVTkNUSU9OU19ESVI9IiRkYXRhcm9vdGRpci96c2gvc2l0ZS1mdW5jdGlvbnMiCisgICAgQUNfU1VCU1QoWlNIX0ZVTkNUSU9OU19ESVIpCisgICAgOzsKKyAgKikKKyAgICBkbmwgLS13aXRoLXpzaC1mdW5jdGlvbnMtZGlyIG9wdGlvbiB1c2VkIHdpdGggcGF0aAorICAgIFpTSF9GVU5DVElPTlNfRElSPSIkd2l0aHZhbCIKKyAgICBBQ19TVUJTVChaU0hfRlVOQ1RJT05TX0RJUikKKyAgICA7OworZXNhYworCitkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogZG5sIEJhY2sgdG8gIm5vcm1hbCIgY29uZmlndXJpbmcKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTI5NjEsNyArMzE0OCw3IEBACiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCiAKIHNvbmFtZV9idW1wPW5vCi1pZiB0ZXN0IHgiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiAhPSAieHllcyIgJiYKK2lmIHRlc3QgeCIkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgIT0gInh5ZXMiICYmCiAgICB0ZXN0ICRhY19jdl9zaXplb2Zfb2ZmX3QgLW5lICRjdXJsX3NpemVvZl9jdXJsX29mZl90OyB0aGVuCiAgIEFDX01TR19XQVJOKFtUaGlzIGxpYmN1cmwgYnVpbHQgaXMgcHJvYmFibHkgbm90IEFCSSBjb21wYXRpYmxlIHdpdGggcHJldmlvdXNdKQogICBBQ19NU0dfV0FSTihbYnVpbGRzISBZb3UgTVVTVCByZWFkIGxpYi9SRUFETUUuY3VybF9vZmZfdCB0byBmaWd1cmUgaXQgb3V0Ll0pCkBAIC0zMTI5LDcgKzMzMTYsNyBAQAogQ1VSTF9DSEVDS19GVU5DX0dFVE5BTUVJTkZPCiAKIGlmIHRlc3QgIiRpcHY2IiA9ICJ5ZXMiOyB0aGVuCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2dldGFkZHJpbmZvIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm8iID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoRU5BQkxFX0lQVjYsIDEsIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydF0pCiAgICAgSVBWNl9FTkFCTEVEPTEKICAgICBBQ19TVUJTVChJUFY2X0VOQUJMRUQpCkBAIC0zMTk2LDcgKzMzODMsNyBAQAogQ1VSTF9DSEVDS19MSUJfQVJFUwogQU1fQ09ORElUSU9OQUwoVVNFX0VNQkVEREVEX0FSRVMsIHRlc3QgeCRlbWJlZGRlZF9hcmVzID0geHllcykKIAotaWYgdGVzdCAieCRhY19jdl9uYXRpdmVfd2luZG93cyIgIT0gInh5ZXMiICYmCitpZiB0ZXN0ICJ4JGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiICE9ICJ4eWVzIiAmJgogICAgdGVzdCAieCRlbmFibGVfc2hhcmVkIiA9ICJ4eWVzIjsgdGhlbgogICBidWlsZF9saWJob3N0bmFtZT15ZXMKIGVsc2UKQEAgLTMyMTEsNyArMzM5OCw3IEBACiBbT3B0aW9ucyAtLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciBhbmQgLS1lbmFibGUtYXJlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXSkKIGZpCiAKLWlmIHRlc3QgIiR3YW50X3RocmVzIiA9ICJ5ZXMiOyB0aGVuCitpZiB0ZXN0ICIkd2FudF90aHJlcyIgPSAieWVzIiAmJiB0ZXN0ICIkZG9udHdhbnRfcnQiID0gIm5vIjsgdGhlbgogICBBQ19DSEVDS19IRUFERVIocHRocmVhZC5oLAogICAgIFsgQUNfREVGSU5FKEhBVkVfUFRIUkVBRF9ILCAxLCBbaWYgeW91IGhhdmUgPHB0aHJlYWQuaD5dKQogICAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCkBAIC0zMjY2LDcgKzM0NTMsNyBAQAogQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1zc3BpXSxbRGlzYWJsZSBTU1BJXSksCiBbIGNhc2UgIiRlbmFibGV2YWwiIGluCiAgIHllcykKLSAgICAgICBpZiB0ZXN0ICIkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyI7IHRoZW4KKyAgICAgICBpZiB0ZXN0ICIkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgICAgICAgICBBQ19ERUZJTkUoVVNFX1dJTkRPV1NfU1NQSSwgMSwgW3RvIGVuYWJsZSBTU1BJIHN1cHBvcnRdKQogICAgICAgICAgQUNfU1VCU1QoVVNFX1dJTkRPV1NfU1NQSSwgWzFdKQpAQCAtMzQ3OSw2ICszNjY2LDEwIEBACiAgIFNVUFBPUlRfRkVBVFVSRVM9IiRTVVBQT1JUX0ZFQVRVUkVTIEdTUy1BUEkiCiBmaQogCitpZiB0ZXN0ICJ4JGN1cmxfcHNsX21zZyIgPSAieHllcyI7IHRoZW4KKyAgU1VQUE9SVF9GRUFUVVJFUz0iJFNVUFBPUlRfRkVBVFVSRVMgUFNMIgorZmkKKwogaWYgdGVzdCAieCRDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgiICE9ICJ4MSIgLWEgXAogICAgIFwoICJ4JEhBVkVfR1NTQVBJIiA9ICJ4MSIgLW8gIngkVVNFX1dJTkRPV1NfU1NQSSIgPSAieDEiIFwpOyB0aGVuCiAgIFNVUFBPUlRfRkVBVFVSRVM9IiRTVVBQT1JUX0ZFQVRVUkVTIFNQTkVHTyIKQEAgLTM2MjYsNiArMzgxNyw3IEBACiAgICAgICAgICAgIGluY2x1ZGUvY3VybC9NYWtlZmlsZSBcCiAgICAgICAgICAgIHNyYy9NYWtlZmlsZSBcCiAgICAgICAgICAgIGxpYi9NYWtlZmlsZSBcCisgICAgICAgICAgIHNjcmlwdHMvTWFrZWZpbGUgXAogICAgICAgICAgICBsaWIvbGliY3VybC52ZXJzIFwKICAgICAgICAgICAgdGVzdHMvTWFrZWZpbGUgXAogICAgICAgICAgICB0ZXN0cy9jZXJ0cy9NYWtlZmlsZSBcCkBAIC0zNjc3LDEzICszODY5LDE1IEBACiAgIC0tbGliY3VybCBvcHRpb246ICR7Y3VybF9saWJjdXJsX21zZ30KICAgVmVyYm9zZSBlcnJvcnM6ICAgJHtjdXJsX3ZlcmJvc2VfbXNnfQogICBTU1BJIHN1cHBvcnQ6ICAgICAke2N1cmxfc3NwaV9tc2d9Ci0gIGNhIGNlcnQgYnVuZGxlOiAgICR7Y2F9Ci0gIGNhIGNlcnQgcGF0aDogICAgICR7Y2FwYXRofQorICBjYSBjZXJ0IGJ1bmRsZTogICAke2NhfSR7Y2Ffd2FybmluZ30KKyAgY2EgY2VydCBwYXRoOiAgICAgJHtjYXBhdGh9JHtjYXBhdGhfd2FybmluZ30KKyAgY2EgZmFsbGJhY2s6ICAgICAgJHt3aXRoX2NhX2ZhbGxiYWNrfQogICBMREFQIHN1cHBvcnQ6ICAgICAke2N1cmxfbGRhcF9tc2d9CiAgIExEQVBTIHN1cHBvcnQ6ICAgICR7Y3VybF9sZGFwc19tc2d9CiAgIFJUU1Agc3VwcG9ydDogICAgICR7Y3VybF9ydHNwX21zZ30KICAgUlRNUCBzdXBwb3J0OiAgICAgJHtjdXJsX3J0bXBfbXNnfQogICBtZXRhbGluayBzdXBwb3J0OiAke2N1cmxfbXRsbmtfbXNnfQorICBQU0wgc3VwcG9ydDogICAgICAke2N1cmxfcHNsX21zZ30KICAgSFRUUDIgc3VwcG9ydDogICAgJHtjdXJsX2gyX21zZ30KICAgUHJvdG9jb2xzOiAgICAgICAgJHtTVVBQT1JUX1BST1RPQ09MU30KIF0pCmRpZmYgLS1naXQgYS9jdXJsLWNvbmZpZy5pbiBiL2N1cmwtY29uZmlnLmluCmluZGV4IDkzOTg3MjIuLmFmNDg0YjQgMTAwNjQ0Ci0tLSBhL2N1cmwtY29uZmlnLmluCisrKyBiL2N1cmwtY29uZmlnLmluCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvQklORElOR1MgYi9kb2NzL0JJTkRJTkdTCmluZGV4IGZlZDE2ZTkuLmViNjdjM2QgMTAwNjQ0Ci0tLSBhL2RvY3MvQklORElOR1MKKysrIGIvZG9jcy9CSU5ESU5HUwpAQCAtMjcsNyArMjcsNyBAQAogCiBDCiAgIGxpYmN1cmwgaXMgYSBDIGxpYnJhcnkgaW4gaXRzZWxmIQotICBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCiAKIEMrKwogCkBAIC0xODQsNyArMTg0LDcgQEAKIFJQRwogCiAgIFN1cHBvcnQgZm9yIElMRS9SUEcgb24gT1MvNDAwIGlzIGluY2x1ZGVkIGluIHNvdXJjZSBkaXN0cmlidXRpb24KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsLworICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsLwogICBTZWUgcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwIGFuZCBwYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbgogCiBSdWJ5CmRpZmYgLS1naXQgYS9kb2NzL0JVR1MgYi9kb2NzL0JVR1MKaW5kZXggMzY2ODZlZi4uZGZkOWIyMCAxMDA2NDQKLS0tIGEvZG9jcy9CVUdTCisrKyBiL2RvY3MvQlVHUwpAQCAtMzUsMTIgKzM1LDEyIEBACiAgIGhhdmUgYSBnbyBhdCBhIHNvbHV0aW9uLiBZb3UgY2FuIG9wdGlvbmFsbHkgYWxzbyBwb3N0IHlvdXIgYnVnL3Byb2JsZW0gYXQKICAgY3VybCdzIGJ1ZyB0cmFja2luZyBzeXN0ZW0gb3ZlciBhdAogCi0gICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMKIAogICBQbGVhc2UgcmVhZCB0aGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGJlbG93IGZpcnN0IGJlZm9yZSBkb2luZyB0aGF0IQogCiAgIElmIHlvdSBmZWVsIHlvdSBuZWVkIHRvIGFzayBhcm91bmQgZmlyc3QsIGZpbmQgYSBzdWl0YWJsZSBtYWlsaW5nIGxpc3QgYW5kCi0gIHBvc3QgdGhlcmUuIFRoZSBsaXN0cyBhcmUgYXZhaWxhYmxlIG9uIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgcG9zdCB0aGVyZS4gVGhlIGxpc3RzIGFyZSBhdmFpbGFibGUgb24gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogMS4zIFdoYXQgdG8gcmVwb3J0CiAKZGlmZiAtLWdpdCBhL2RvY3MvQ0hFQ0tTUkMubWQgYi9kb2NzL0NIRUNLU1JDLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MWUwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0NIRUNLU1JDLm1kCkBAIC0wLDAgKzEsMTI0IEBACisjIGNoZWNrc3JjCisKK1RoaXMgaXMgdGhlIHRvb2wgd2UgdXNlIHdpdGhpbiB0aGUgY3VybCBwcm9qZWN0IHRvIHNjYW4gQyBzb3VyY2UgY29kZSBhbmQKK2NoZWNrIHRoYXQgaXQgYWRoZXJlcyB0byBvdXIgW1NvdXJjZSBDb2RlIFN0eWxlIGd1aWRlXShDT0RFX1NUWUxFLm1kKS4KKworIyMgVXNhZ2UKKworICAgIGNoZWNrc3JjLnBsIFtvcHRpb25zXSBbZmlsZTFdIFtmaWxlMl0gLi4uCisKKyMjIENvbW1hbmQgbGluZSBvcHRpb25zCisKK2AtV1tmaWxlXWAgd2hpdGVsaXN0cyB0aGF0IGZpbGUgYW5kIGV4Y2x1ZGVzIGl0IGZyb20gYmVpbmcgY2hlY2tlZC4gSGVscGZ1bAord2hlbiwgZm9yIGV4YW1wbGUsIG9uZSBvZiB0aGUgZmlsZXMgaXMgZ2VuZXJhdGVkLgorCitgLURbZGlyXWAgZGlyZWN0b3J5IG5hbWUgdG8gcHJlcGVuZCB0byBmaWxlIG5hbWVzIHdoZW4gYWNjZXNzaW5nIHRoZW0uCisKK2AtaGAgc2hvd3MgdGhlIGhlbHAgb3V0cHV0LCB0aGF0IGFsc28gbGlzdHMgYWxsIHJlY29nbml6ZWQgd2FybmluZ3MKKworIyMgV2hhdCBkb2VzIGNoZWNrc3JjIHdhcm4gZm9yPworCitjaGVja3NyYyBkb2VzIG5vdCBjaGVjayBhbmQgdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGVudGlyZSBzdHlsZSBndWlkZSwKK2J1dCB0aGUgc2NyaXB0IGlzIGluc3RlYWQgYW4gZWZmb3J0IHRvIGRldGVjdCB0aGUgbW9zdCBjb21tb24gbWlzdGFrZXMgYW5kCitzeW50YXggbWlzdGFrZXMgdGhhdCBjb250cmlidXRlcnMgbWFrZSBiZWZvcmUgdGhleSBnZXQgYWNjdXN0b21lZCB0byBvdXIgY29kZQorc3R5bGUuIEhlY2ssIG1hbnkgb2YgdXMgcmVndWxhcnMgZG8gdGhlIG1pc3Rha2VzIHRvbyBhbmQgdGhpcyBzY3JpcHQgaGVscHMgdXMKK2tlZXAgdGhlIGNvZGUgaW4gc2hhcGUuCisKKyAgICBjaGVja3NyYy5wbCAtaAorCitMaXN0cyBob3cgdG8gdXNlIHRoZSBzY3JpcHQgYW5kIGl0IGxpc3RzIGFsbCBleGlzdGluZyB3YXJuaW5ncyBpdCBoYXMgYW5kCitwcm9ibGVtcyBpdCBkZXRlY3RzLiBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIHRoZSBleGlzdGluZyBjaGVja3NyYword2FybmluZ3MgYXJlOgorCistIGBCQURDT01NQU5EYDogVGhlcmUncyBhIGJhZCAhY2hlY2tzcmMhIGluc3RydWN0aW9uIGluIHRoZSBjb2RlLiBTZWUgdGhlCisgICAqKklnbm9yZSBjZXJ0YWluIHdhcm5pbmdzKiogc2VjdGlvbiBiZWxvdyBmb3IgZGV0YWlscy4KKworLSBgQkFOTkVERlVOQ2A6IEEgYmFubmVkIGZ1bmN0aW9uIHdhcyB1c2VkLiBUaGUgZnVudGlvbnMgc3ByaW50ZiwgdnNwcmludGYsCisgICBzdHJjYXQsIHN0cm5jYXQsIGdldHMgYXJlICoqbmV2ZXIqKiBhbGxvd2VkIGluIGN1cmwgc291cmNlIGNvZGUuCisKKy0gYEJSQUNFRUxTRWA6ICd9IGVsc2UnIG9uIHRoZSBzYW1lIGxpbmUuIFRoZSBlbHNlIGlzIHN1cHBvc2VkIHRvIGJlIG9uIHRoZQorICBmb2xsb3dpbmcgbGluZS4KKworLSBgQlJBQ0VQT1NgOiB3cm9uZyBwb3NpdGlvbiBmb3IgYW4gb3BlbiBicmFjZSAoYHtgKS4KKworLSBgQ09NTUFOT1NQQUNFYDogYSBjb21tYSB3aXRob3V0IGZvbGxvd2luZyBzcGFjZQorCistIGBDT1BZUklHSFRgOiB0aGUgZmlsZSBpcyBtaXNzaW5nIGEgY29weXJpZ2h0IHN0YXRlbWVudCEKKworLSBgQ1BQQ09NTUVOVFNgOiBgLy9gIGNvbW1lbnQgZGV0ZWN0ZWQsIHRoYXQncyBub3QgQzg5IGNvbXBsaWFudAorCistIGBGT1BFTk1PREVgOiBgZm9wZW4oKWAgbmVlZHMgYSBtYWNybyBmb3IgdGhlIG1vZGUgc3RyaW5nLCB1c2UgaXQKKworLSBgSU5ERU5UQVRJT05gOiBkZXRlY3RlZCBhIHdyb25nIHN0YXJ0IGNvbHVtbiBmb3IgY29kZS4gTm90ZSB0aGF0IHRoaXMgd2FybmluZworICAgb25seSBjaGVja3Mgc29tZSBzcGVjaWZpYyBwbGFjZXMgYW5kIHdpbGwgY2VydGFpbmx5IG1pc3MgbWFueSBiYWQKKyAgIGluZGVudGF0aW9ucy4KKworLSBgTE9OR0xJTkVgOiBBIGxpbmUgaXMgbG9uZ2VyIHRoYW4gNzkgY29sdW1ucy4KKworLSBgUEFSRU5CUkFDRWA6IGApe2Agd2FzIHVzZWQgd2l0aG91dCBzdWZmaWNpZW50IHNwYWNlIGluIGJldHdlZW4uCisKKy0gYFJFVFVSTk5PU1BBQ0VgOiBgcmV0dXJuYCB3YXMgdXNlZCB3aXRob3V0IHNwYWNlIGJldHdlZW4gdGhlIGtleXdvcmQgYW5kIHRoZQorICAgZm9sbG93aW5nIHZhbHVlLgorCistIGBTUEFDRUFGVEVSUEFSRU5gOiB0aGVyZSB3YXMgYSBzcGFjZSBhZnRlciBvcGVuIHBhcmVudGhlc2lzLCBgKCB0ZXh0YC4KKworLSBgU1BBQ0VCRUZPUkVDTE9TRWA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhIGNsb3NlIHBhcmVudGhlc2lzLCBgdGV4dCApYC4KKworLSBgU1BBQ0VCRUZPUkVDT01NQWA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhIGNvbW1hLCBgb25lICwgdHdvYC4KKworLSBgU1BBQ0VCRUZPUkVQQVJFTmA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhbiBvcGVuIHBhcmVudGhlc2lzLCBgaWYgKGAsCisgICB3aGVyZSBvbmUgd2FzIG5vdCBleHBlY3RlZAorCistIGBTUEFDRVNFTUlMQ09MT05gOiB0aGVyZSB3YXMgYSBzcGFjZSBiZWZvcmUgc2VtaWNvbG9uLCBgIDtgLgorCistIGBUQUJTYDogVEFCIGNoYXJhY3RlcnMgYXJlIG5vdCBhbGxvd2VkIQorCistIGBUUkFJTElOR1NQQUNFYDogVHJhaWxpbmcgd2hpdGUgc3BhY2Ugb24gdGhlIGxpbmUKKworLSBgVU5VU0VESUdOT1JFYDogYSBjaGVja3NyYyBpbmxpbmVkIHdhcm5pbmcgaWdub3JlIHdhcyBhc2tlZCBmb3IgYnV0IG5vdCB1c2VkLAorICAgdGhhdCdzIGFuIGlnbm9yZSB0aGF0IHNob3VsZCBiZSByZW1vdmVkIG9yIGNoYW5nZWQgdG8gZ2V0IHVzZWQuCisKKyMjIElnbm9yZSBjZXJ0YWluIHdhcm5pbmdzCisKK0R1ZSB0byB0aGUgbmF0dXJlIG9mIHRoZSBzb3VyY2UgY29kZSBhbmQgdGhlIGZsYXdzIG9mIHRoZSBjaGVja3NyYyB0b29sLCB0aGVyZQoraXMgc29tZXRpbWVzIGEgbmVlZCB0byBpZ25vcmUgc3BlY2lmaWMgd2FybmluZ3MuIGNoZWNrc3JjIGFsbG93cyBhIGZldworZGlmZmVyZW50IHdheXMgdG8gZG8gdGhpcy4KKworIyMjIElubGluZSBpZ25vcmUKKworWW91IGNhbiBjb250cm9sIHdoYXQgdG8gaWdub3JlIHdpdGhpbiBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIGJ5IHByb3ZpZGluZworaW5zdHJ1Y3Rpb25zIHRvIGNoZWNrc3JjIGluIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYuIFlvdSBuZWVkIGEgbWFnaWMgbWFya2VyCit0aGF0IGlzIGAhY2hlY2tzcmMhYCBmb2xsb3dlZCBieSB0aGUgaW5zdHJ1Y3Rpb24uIFRoZSBpbnN0cnVjdGlvbiBjYW4gYXNrIHRvCitpZ25vcmUgYSBzcGVjaWZpYyB3YXJuaW5nIE4gbnVtYmVyIG9mIHRpbWVzIG9yIHlvdSBpZ25vcmUgYWxsIG9mIHRoZW0gdW50aWwKK3lvdSBtYXJrIHRoZSBlbmQgb2YgdGhlIGlnbm9yZWQgc2VjdGlvbi4KKworSW5saW5lIGlnbm9yZXMgYXJlIG9ubHkgZG9uZSBmb3IgdGhhdCBzaW5nbGUgc3BlY2lmaWMgc291cmNlIGNvZGUgZmlsZS4KKworRXhhbXBsZQorCisgICAgLyogIWNoZWNrc3JjISBkaXNhYmxlIExPTkdMSU5FIGFsbCAqLworCitUaGlzIHdpbGwgaWdub3JlIHRoZSB3YXJuaW5nIGZvciBvdmVybHkgbG9uZyBsaW5lcyB1bnRpbCBpdCBpcyByZS1lbmFibGVkIHdpdGg6CisKKyAgICAvKiAhY2hlY2tzcmMhIGVuYWJsZSBMT05HTElORSAqLworCitJZiB0aGUgZW5hYmxpbmcgaXNuJ3QgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBmaWxlLCBpdCB3aWxsIGJlIGVuYWJsZWQKK2F1dG9tYXRpY2FsbHkgZm9yIHRoZSBuZXh0IGZpbGUuCisKK1lvdSBjYW4gYWxzbyBvcHQgdG8gaWdub3JlIGp1c3QgTiB2aW9sYXRpb25zIHNvIHRoYXQgaWYgeW91IGhhdmUgYSBzaW5nbGUgbG9uZworbGluZSB5b3UganVzdCBjYW4ndCBzaG9ydGVuIGFuZCBpcyBhZ3JlZWQgdG8gYmUgZmluZSBhbnl3YXk6CisKKyAgICAvKiAhY2hlY2tzcmMhIGRpc2FibGUgTE9OR0xJTkUgMSAqLworCisuLi4gYW5kIHRoZSB3YXJuaW5nIGZvciBsb25nIGxpbmVzIHdpbGwgYmUgZW5hYmxlZCBhZ2FpbiBhdXRvbWF0aWNhbGx5IGFmdGVyCitpdCBoYXMgaWdub3JlZCB0aGF0IHNpbmdsZSB3YXJuaW5nLiBUaGUgbnVtYmVyIGAxYCBjYW4gb2YgY291cnNlIGJlIGNoYW5nZWQgdG8KK2FueSBvdGhlciBpbnRlZ2VyIG51bWJlci4gSXQgY2FuIGJlIHVzZWQgdG8gbWFrZSBzdXJlIG9ubHkgdGhlIGV4YWN0IGludGVuZGVkCitpbnN0YW5jZXMgYXJlIGlnbm9yZWQgYW5kIG5vdGhpbmcgZXh0cmEuCisKKyMjIyBEaXJlY3Rvcnkgd2lkZSBpZ25vcmUgcGF0dGVybnMKKworVGhpcyBpcyBhIG1ldGhvZCB3ZSd2ZSB0cmFuc2l0aW9uZWQgYXdheSBmcm9tLiBVc2UgaW5saW5lIGlnbm9yZXMgYXMgZmFyIGFzCitwb3NzaWJsZS4KKworTWFrZSBhIGBjaGVja3NyYy53aGl0ZWxpc3RgIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSBvZiB0aGUgc291cmNlIGNvZGUgd2l0aCB0aGUKK2ZhbHNlIHBvc2l0aXZlLCBhbmQgaW5jbHVkZSB0aGUgZnVsbCBvZmZlbmRpbmcgbGluZSBpbnRvIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL2RvY3MvQ09ERV9PRl9DT05EVUNULm1kIGIvZG9jcy9DT0RFX09GX0NPTkRVQ1QubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRlYTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQ09ERV9PRl9DT05EVUNULm1kCkBAIC0wLDAgKzEsMzIgQEAKK0NvbnRyaWJ1dG9yIENvZGUgb2YgQ29uZHVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGNvbnRyaWJ1dG9ycyBhbmQgbWFpbnRhaW5lcnMgb2YgdGhpcyBwcm9qZWN0LCB3ZSBwbGVkZ2UgdG8gcmVzcGVjdCBhbGwKK3Blb3BsZSB3aG8gY29udHJpYnV0ZSB0aHJvdWdoIHJlcG9ydGluZyBpc3N1ZXMsIHBvc3RpbmcgZmVhdHVyZSByZXF1ZXN0cywKK3VwZGF0aW5nIGRvY3VtZW50YXRpb24sIHN1Ym1pdHRpbmcgcHVsbCByZXF1ZXN0cyBvciBwYXRjaGVzLCBhbmQgb3RoZXIKK2FjdGl2aXRpZXMuCisKK1dlIGFyZSBjb21taXR0ZWQgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gdGhpcyBwcm9qZWN0IGEgaGFyYXNzbWVudC1mcmVlCitleHBlcmllbmNlIGZvciBldmVyeW9uZSwgcmVnYXJkbGVzcyBvZiBsZXZlbCBvZiBleHBlcmllbmNlLCBnZW5kZXIsIGdlbmRlcgoraWRlbnRpdHkgYW5kIGV4cHJlc3Npb24sIHNleHVhbCBvcmllbnRhdGlvbiwgZGlzYWJpbGl0eSwgcGVyc29uYWwgYXBwZWFyYW5jZSwKK2JvZHkgc2l6ZSwgcmFjZSwgZXRobmljaXR5LCBhZ2UsIG9yIHJlbGlnaW9uLgorCitFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGUgdGhlIHVzZSBvZiBzZXh1YWwKK2xhbmd1YWdlIG9yIGltYWdlcnksIGRlcm9nYXRvcnkgY29tbWVudHMgb3IgcGVyc29uYWwgYXR0YWNrcywgdHJvbGxpbmcsIHB1YmxpYworb3IgcHJpdmF0ZSBoYXJhc3NtZW50LCBpbnN1bHRzLCBvciBvdGhlciB1bnByb2Zlc3Npb25hbCBjb25kdWN0LgorCitQcm9qZWN0IG1haW50YWluZXJzIGhhdmUgdGhlIHJpZ2h0IGFuZCByZXNwb25zaWJpbGl0eSB0byByZW1vdmUsIGVkaXQsIG9yCityZWplY3QgY29tbWVudHMsIGNvbW1pdHMsIGNvZGUsIHdpa2kgZWRpdHMsIGlzc3VlcywgYW5kIG90aGVyIGNvbnRyaWJ1dGlvbnMKK3RoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LiBQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QKK2ZvbGxvdyB0aGUgQ29kZSBvZiBDb25kdWN0IG1heSBiZSByZW1vdmVkIGZyb20gdGhlIHByb2plY3QgdGVhbS4KKworVGhpcyBjb2RlIG9mIGNvbmR1Y3QgYXBwbGllcyBib3RoIHdpdGhpbiBwcm9qZWN0IHNwYWNlcyBhbmQgaW4gcHVibGljIHNwYWNlcword2hlbiBhbiBpbmRpdmlkdWFsIGlzIHJlcHJlc2VudGluZyB0aGUgcHJvamVjdCBvciBpdHMgY29tbXVuaXR5LgorCitJbnN0YW5jZXMgb2YgYWJ1c2l2ZSwgaGFyYXNzaW5nLCBvciBvdGhlcndpc2UgdW5hY2NlcHRhYmxlIGJlaGF2aW9yIG1heSBiZQorcmVwb3J0ZWQgYnkgb3BlbmluZyBhbiBpc3N1ZSBvciBjb250YWN0aW5nIG9uZSBvciBtb3JlIG9mIHRoZSBwcm9qZWN0CittYWludGFpbmVycy4KKworVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBbQ29udHJpYnV0b3IKK0NvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSwgdmVyc2lvbiAxLjEuMCwgYXZhaWxhYmxlIGF0CitbaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvMS8wL10oaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvMS8wLykKZGlmZiAtLWdpdCBhL2RvY3MvQ09ERV9TVFlMRS5tZCBiL2RvY3MvQ09ERV9TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2E0ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9DT0RFX1NUWUxFLm1kCkBAIC0wLDAgKzEsMTg2IEBACisjIGNVUkwgQyBjb2RlIHN0eWxlCisKK1NvdXJjZSBjb2RlIHRoYXQgaGFzIGEgY29tbW9uIHN0eWxlIGlzIGVhc2llciB0byByZWFkIHRoYW4gY29kZSB0aGF0IHVzZXMKK2RpZmZlcmVudCBzdHlsZXMgaW4gZGlmZmVyZW50IHBsYWNlcy4gSXQgaGVscHMgbWFraW5nIHRoZSBjb2RlIGZlZWwgbGlrZSBvbmUKK3NpbmdsZSBjb2RlIGJhc2UuIEVhc3ktdG8tcmVhZCBpcyBhIHZlcnkgaW1wb3J0YW50IHByb3BlcnR5IG9mIGNvZGUgYW5kIGhlbHBzCittYWtpbmcgaXQgZWFzaWVyIHRvIHJldmlldyB3aGVuIG5ldyB0aGluZ3MgYXJlIGFkZGVkIGFuZCBpdCBoZWxwcyBkZWJ1Z2dpbmcKK2NvZGUgd2hlbiBkZXZlbG9wZXJzIGFyZSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgdGhpbmdzIGdvIHdyb25nLiBBIHVuaWZpZWQKK3N0eWxlIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4gaW5kaXZpZHVhbCBjb250cmlidXRvcnMgaGF2aW5nIHRoZWlyIG93biBwZXJzb25hbAordGFzdGVzIHNhdGlzZmllZC4KKworT3VyIEMgY29kZSBoYXMgYSBmZXcgc3R5bGUgcnVsZXMuIE1vc3Qgb2YgdGhlbSBhcmUgdmVyaWZpZWQgYW5kIHVwaGVsZCBieSB0aGUKK2xpYi9jaGVja3NyYy5wbCBzY3JpcHQuIEludm9rZWQgd2l0aCBgbWFrZSBjaGVja3NyY2Agb3IgZXZlbiBieSBkZWZhdWx0IGJ5IHRoZQorYnVpbGQgc3lzdGVtIHdoZW4gYnVpbHQgYWZ0ZXIgYC4vY29uZmlndXJlIC0tZW5hYmxlLWRlYnVnYCBoYXMgYmVlbiB1c2VkLgorCitJdCBpcyBub3JtYWxseSBub3QgYSBwcm9ibGVtIGZvciBhbnlvbmUgdG8gZm9sbG93IHRoZSBndWlkZWxpbmVzLCBhcyB5b3UganVzdAorbmVlZCB0byBjb3B5IHRoZSBzdHlsZSBhbHJlYWR5IHVzZWQgaW4gdGhlIHNvdXJjZSBjb2RlIGFuZCB0aGVyZSBhcmUgbm8KK3BhcnRpY3VsYXJseSB1bnVzdWFsIHJ1bGVzIGluIG91ciBzZXQgb2YgcnVsZXMuCisKK1dlIGFsc28gd29yayBoYXJkIG9uIHdyaXRpbmcgY29kZSB0aGF0IGFyZSB3YXJuaW5nLWZyZWUgb24gYWxsIHRoZSBtYWpvcgorcGxhdGZvcm1zIGFuZCBpbiBnZW5lcmFsIG9uIGFzIG1hbnkgcGxhdGZvcm1zIGFzIHBvc3NpYmxlLiBDb2RlIHRoYXQgb2J2aW91c2x5Cit3aWxsIGNhdXNlIHdhcm5pbmdzIHdpbGwgbm90IGJlIGFjY2VwdGVkIGFzLWlzLgorCisjIyBOYW1pbmcKKworVHJ5IHVzaW5nIGEgbm9uLWNvbmZ1c2luZyBuYW1pbmcgc2NoZW1lIGZvciB5b3VyIG5ldyBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlCituYW1lcy4gSXQgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIHRvIG1lYW4gdGhhdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhcyBpbgorb3RoZXIgcGxhY2VzIG9mIHRoZSBjb2RlLCBqdXN0IHRoYXQgdGhlIG5hbWVzIHNob3VsZCBiZSBsb2dpY2FsLAordW5kZXJzdGFuZGFibGUgYW5kIGJlIG5hbWVkIGFjY29yZGluZyB0byB3aGF0IHRoZXkncmUgdXNlZCBmb3IuIEZpbGUtbG9jYWwKK2Z1bmN0aW9ucyBzaG91bGQgYmUgbWFkZSBzdGF0aWMuIFdlIGxpa2UgbG93ZXIgY2FzZSBuYW1lcy4KKworU2VlIHRoZSBJTlRFUk5BTFMgZG9jdW1lbnQgb24gaG93IHdlIG5hbWUgbm9uLWV4cG9ydGVkIGxpYnJhcnktZ2xvYmFsIHN5bWJvbHMuCisKKyMjIEluZGVudGluZworCitXZSB1c2Ugb25seSBzcGFjZXMgZm9yIGluZGVudGF0aW9uLCBuZXZlciBUQUJzLiBXZSB1c2UgdHdvIHNwYWNlcyBmb3IgZWFjaCBuZXcKK29wZW4gYnJhY2UuCisKKyAgICBpZihzb21ldGhpbmdfaXNfdHJ1ZSkgeworICAgICAgd2hpbGUoc2Vjb25kX3N0YXRlbWVudCA9PSBmaW5lKSB7CisgICAgICAgIG1vbygpOworICAgICAgfQorICAgIH0KKworIyMgQ29tbWVudHMKKworU2luY2Ugd2Ugd3JpdGUgQzg5IGNvZGUsIGAvL2AgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkLiBUaGV5IHdlcmVuJ3QKK2ludHJvZHVjZWQgaW4gdGhlIEMgc3RhbmRhcmQgdW50aWwgQzk5LiBXZSB1c2Ugb25seSBgLypgIGFuZCBgKi9gIGNvbW1lbnRzOgorCisgICAgLyogdGhpcyBpcyBhIGNvbW1lbnQgKi8KKworIyMgTG9uZyBsaW5lcworCitTb3VyY2UgY29kZSBpbiBjdXJsIG1heSBuZXZlciBiZSB3aWRlciB0aGFuIDgwIGNvbHVtbnMgYW5kIHRoZXJlIGFyZSB0d28KK3JlYXNvbnMgZm9yIG1haW50YWluaW5nIHRoaXMgZXZlbiBpbiB0aGUgbW9kZXJuIGVyYSBvZiB2ZXJ5IGxhcmdlIGFuZCBoaWdoCityZXNvbHV0aW9uIHNjcmVlbnM6CisKKzEuIE5hcnJvd2VyIGNvbHVtbnMgYXJlIGVhc2llciB0byByZWFkIHRoYW4gdmVyeSB3aWRlIG9uZXMuIFRoZXJlJ3MgYSByZWFzb24KKyAgIG5ld3NwYXBlcnMgaGF2ZSB1c2VkIGNvbHVtbnMgZm9yIGRlY2FkZXMgb3IgY2VudHVyaWVzLgorCisyLiBOYXJyb3dlciBjb2x1bW5zIGFsbG93IGRldmVsb3BlcnMgdG8gZWFzaWVyIHNob3cgbXVsdGlwbGUgcGllY2VzIG9mIGNvZGUKKyAgIG5leHQgdG8gZWFjaCBvdGhlciBpbiBkaWZmZXJlbnQgd2luZG93cy4gSSBvZnRlbiBoYXZlIHR3byBvciB0aHJlZSBzb3VyY2UKKyAgIGNvZGUgd2luZG93cyBuZXh0IHRvIGVhY2ggb3RoZXIgb24gdGhlIHNhbWUgc2NyZWVuIC0gYXMgd2VsbCBhcyBtdWx0aXBsZQorICAgdGVybWluYWwgYW5kIGRlYnVnZ2luZyB3aW5kb3dzLgorCisjIyBCcmFjZXMKKworSW4gaWYvd2hpbGUvZG8vZm9yIGV4cHJlc3Npb25zLCB3ZSB3cml0ZSB0aGUgb3BlbiBicmFjZSBvbiB0aGUgc2FtZSBsaW5lIGFzCit0aGUga2V5d29yZCBhbmQgd2UgdGhlbiBzZXQgdGhlIGNsb3NpbmcgYnJhY2Ugb24gdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwgYXMKK3RoZSBpbml0aWFsIGtleXdvcmQuIExpa2UgdGhpczoKKworICAgIGlmKGFnZSA8IDQwKSB7CisgICAgICAvKiBjbGVhcmx5IGEgeW91bmdzdGVyICovCisgICAgfQorCitXaGVuIHdlIHdyaXRlIGZ1bmN0aW9ucyBob3dldmVyLCB0aGUgb3BlbmluZyBicmFjZSBzaG91bGQgYmUgaW4gdGhlIGZpcnN0Citjb2x1bW4gb2YgdGhlIGZpcnN0IGxpbmU6CisKKyAgICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorCisjIyAnZWxzZScgb24gdGhlIGZvbGxvd2luZyBsaW5lCisKK1doZW4gYWRkaW5nIGFuIGBlbHNlYCBjbGF1c2UgdG8gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIHVzaW5nIGJyYWNlcywgd2UgYWRkCitpdCBvbiBhIG5ldyBsaW5lIGFmdGVyIHRoZSBjbG9zaW5nIGJyYWNlLiBMaWtlIHRoaXM6CisKKyAgICBpZihhZ2UgPCA0MCkgeworICAgICAgLyogY2xlYXJseSBhIHlvdW5nc3RlciAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIHByb2JhYmx5IGdydW1weSAqLworICAgIH0KKworIyMgTm8gc3BhY2UgYmVmb3JlIHBhcmVudGhlc2VzCisKK1doZW4gd3JpdGluZyBleHByZXNzaW9ucyB1c2luZyBpZi93aGlsZS9kby9mb3IsIHRoZXJlIHNoYWxsIGJlIG5vIHNwYWNlCitiZXR3ZWVuIHRoZSBrZXl3b3JkIGFuZCB0aGUgb3BlbiBwYXJlbnRoZXNpcy4gTGlrZSB0aGlzOgorCisgICAgd2hpbGUoMSkgeworICAgICAgLyogbG9vcCBmb3JldmVyICovCisgICAgfQorCisjIyBVc2UgYm9vbGVhbiBjb25kaXRpb25zCisKK1JhdGhlciB0aGFuIHRlc3QgYSBjb25kaXRpb25hbCB2YWx1ZSBzdWNoIGFzIGEgYm9vbCBhZ2FpbnN0IFRSVUUgb3IgRkFMU0UsIGEKK3BvaW50ZXIgYWdhaW5zdCBOVUxMIG9yICE9IE5VTEwgYW5kIGFuIGludCBhZ2FpbnN0IHplcm8gb3Igbm90IHplcm8gaW4KK2lmL3doaWxlIGNvbmRpdGlvbnMgd2UgcHJlZmVyOgorCisgICAgcmVzdWx0ID0gZG9fc29tZXRoaW5nKCk7CisgICAgaWYoIXJlc3VsdCkgeworICAgICAgLyogc29tZXRoaW5nIHdlbnQgd3JvbmcgKi8KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisjIyBObyBhc3NpZ25tZW50cyBpbiBjb25kaXRpb25zCisKK1RvIGluY3JlYXNlIHJlYWRhYmlsaXR5IGFuZCByZWR1Y2UgY29tcGxleGl0eSBvZiBjb25kaXRpb25hbHMsIHdlIGF2b2lkCithc3NpZ25pbmcgdmFyaWFibGVzIHdpdGhpbiBpZi93aGlsZSBjb25kaXRpb25zLiBXZSBmcm93biB1cG9uIHRoaXMgc3R5bGU6CisKKyAgICBpZigocHRyID0gbWFsbG9jKDEwMCkpID09IE5VTEwpCisgICAgICByZXR1cm4gTlVMTDsKKworYW5kIGluc3RlYWQgd2UgZW5jb3VyYWdlIHRoZSBhYm92ZSB2ZXJzaW9uIHRvIGJlIHNwZWxsZWQgb3V0IG1vcmUgY2xlYXJseToKKworICAgIHB0ciA9IG1hbGxvYygxMDApOworICAgIGlmKCFwdHIpCisgICAgICByZXR1cm4gTlVMTDsKKworIyMgTmV3IGJsb2NrIG9uIGEgbmV3IGxpbmUKKworV2UgbmV2ZXIgd3JpdGUgbXVsdGlwbGUgc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBzb3VyY2UgbGluZSwgZXZlbiBmb3IgdmVyeQorc2hvcnQgaWYoKSBjb25kaXRpb25zLgorCisgICAgaWYoYSkKKyAgICAgIHJldHVybiBUUlVFOworICAgIGVsc2UgaWYoYikKKyAgICAgIHJldHVybiBGQUxTRTsKKworYW5kIE5FVkVSOgorCisgICAgaWYoYSkgcmV0dXJuIFRSVUU7CisgICAgZWxzZSBpZihiKSByZXR1cm4gRkFMU0U7CisKKyMjIFNwYWNlIGFyb3VuZCBvcGVyYXRvcnMKKworUGxlYXNlIHVzZSBzcGFjZXMgb24gYm90aCBzaWRlcyBvZiBvcGVyYXRvcnMgaW4gQyBleHByZXNzaW9ucy4gIFBvc3RmaXggYCgpLAorW10sIC0+LCAuLCArKywgLS1gIGFuZCBVbmFyeSBgKywgLSAhLCB+LCAmYCBvcGVyYXRvcnMgZXhjbHVkZWQgdGhleSBzaG91bGQKK2hhdmUgbm8gc3BhY2UuCisKK0V4YW1wbGVzOgorCisgICAgYmxhID0gZnVuYygpOworICAgIHdobyA9IG5hbWVbMF07CisgICAgYWdlICs9IDE7CisgICAgdHJ1ZSA9ICFmYWxzZTsKKyAgICBzaXplICs9IC0yICsgMyAqIChhICsgYik7CisgICAgcHRyLT5tZW1iZXIgPSBhKys7CisgICAgc3RydWN0LmZpZWxkID0gYi0tOworICAgIHB0ciA9ICZhZGRyZXNzOworICAgIGNvbnRlbnRzID0gKnBvaW50ZXI7CisgICAgY29tcGxlbWVudCA9IH5iaXRzOworICAgIGVtcHR5ID0gKCEqc3RyaW5nKSA/IFRSVUUgOiBGQUxTRTsKKworIyMgUGxhdGZvcm0gZGVwZW5kZW50IGNvZGUKKworVXNlIGAjaWZkZWYgSEFWRV9GRUFUVVJFYCB0byBkbyBjb25kaXRpb25hbCBjb2RlLiBXZSBhdm9pZCBjaGVja2luZyBmb3IKK3BhcnRpY3VsYXIgb3BlcmF0aW5nIHN5c3RlbXMgb3IgaGFyZHdhcmUgaW4gdGhlICNpZmRlZiBsaW5lcy4gVGhlIEhBVkVfRkVBVFVSRQorc2hhbGwgYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IGZvciB1bml4LWxpa2Ugc3lzdGVtcyBhbmQgdGhleSBhcmUKK2hhcmQtY29kZWQgaW4gdGhlIGNvbmZpZy1bc3lzdGVtXS5oIGZpbGVzIGZvciB0aGUgb3RoZXJzLgorCitXZSBhbHNvIGVuY291cmFnZSB1c2Ugb2YgbWFjcm9zL2Z1bmN0aW9ucyB0aGF0IHBvc3NpYmx5IGFyZSBlbXB0eSBvciBkZWZpbmVkCit0byBjb25zdGFudHMgd2hlbiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgdGhhdCBmZWF0dXJlLCB0byBtYWtlIHRoZSBjb2RlCitzZWFtbGVzcy4gTGlrZSB0aGlzIHN0eWxlIHdoZXJlIHRoZSBgbWFnaWMoKWAgZnVuY3Rpb24gd29ya3MgZGlmZmVyZW50bHkKK2RlcGVuZGluZyBvbiBhIGJ1aWxkLXRpbWUgY29uZGl0aW9uYWw6CisKKyAgICAjaWZkZWYgSEFWRV9NQUdJQworICAgIHZvaWQgbWFnaWMoaW50IGEpCisgICAgeworICAgICAgcmV0dXJuIGEgKyAyOworICAgIH0KKyAgICAjZWxzZQorICAgICNkZWZpbmUgbWFnaWMoeCkgMQorICAgICNlbmRpZgorCisgICAgaW50IGNvbnRlbnQgPSBtYWdpYygzKTsKZGlmZiAtLWdpdCBhL2RvY3MvQ09OVFJJQlVURSBiL2RvY3MvQ09OVFJJQlVURQppbmRleCBjNmVhOTc3Li45ZTg0MTc1IDEwMDY0NAotLS0gYS9kb2NzL0NPTlRSSUJVVEUKKysrIGIvZG9jcy9DT05UUklCVVRFCkBAIC0xNSwxOCArMTUsMTMgQEAKICAxLjIgTGljZW5zZQogIDEuMyBXaGF0IFRvIFJlYWQKIAotIDIuIGNVUkwgQ29kaW5nIFN0YW5kYXJkcwotIDIuMSBOYW1pbmcKLSAyLjIgSW5kZW50aW5nCi0gMi4zIENvbW1lbnRpbmcKLSAyLjQgTGluZSBMZW5ndGhzCi0gMi41IEdlbmVyYWwgU3R5bGUKLSAyLjYgTm9uLWNsb2JiZXJpbmcgQWxsIE92ZXIKLSAyLjcgUGxhdGZvcm0gRGVwZW5kZW50IENvZGUKLSAyLjggV3JpdGUgU2VwYXJhdGUgUGF0Y2hlcwotIDIuOSBQYXRjaCBBZ2FpbnN0IFJlY2VudCBTb3VyY2VzCi0gMi4xMCBEb2N1bWVudAotIDIuMTEgVGVzdCBDYXNlcworIDIuIFdyaXRlIGEgZ29vZCBwYXRjaAorIDIuMSBGb2xsb3cgY29kZSBzdHlsZQorIDIuMiBOb24tY2xvYmJlcmluZyBBbGwgT3ZlcgorIDIuMyBXcml0ZSBTZXBhcmF0ZSBQYXRjaGVzCisgMi40IFBhdGNoIEFnYWluc3QgUmVjZW50IFNvdXJjZXMKKyAyLjUgRG9jdW1lbnQKKyAyLjYgVGVzdCBDYXNlcwogCiAgMy4gUHVzaGluZyBPdXQgWW91ciBDaGFuZ2VzCiAgMy4xIFdyaXRlIEFjY2VzcyB0byBnaXQgUmVwb3NpdG9yeQpAQCAtNDIsMTMgKzM3LDEzIEBACiAKIDEuMSBKb2luIHRoZSBDb21tdW5pdHkKIAotIFNraXAgb3ZlciB0byBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvIGFuZCBqb2luIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nCisgU2tpcCBvdmVyIHRvIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvIGFuZCBqb2luIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nCiAgbGlzdChzKS4gIFJlYWQgdXAgb24gZGV0YWlscyBiZWZvcmUgeW91IHBvc3QgcXVlc3Rpb25zLiBSZWFkIHRoaXMgZmlsZSBiZWZvcmUKICB5b3Ugc3RhcnQgc2VuZGluZyBwYXRjaGVzISBXZSBwcmVmZXIgcGF0Y2hlcyBhbmQgZGlzY3Vzc2lvbnMgYmVpbmcgaGVsZCBvbgogIHRoZSBtYWlsaW5nIGxpc3QocyksIG5vdCBzZW50IHRvIGluZGl2aWR1YWxzLgogCiAgQmVmb3JlIHBvc3RpbmcgdG8gb25lIG9mIHRoZSBjdXJsIG1haWxpbmcgbGlzdHMsIHBsZWFzZSByZWFkIHVwIG9uIHRoZSBtYWlsaW5nCi0gbGlzdCBldGlxdWV0dGU6IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9ldGlxdWV0dGUuaHRtbAorIGxpc3QgZXRpcXVldHRlOiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2V0aXF1ZXR0ZS5odG1sCiAKICBXZSBhbHNvIGhhbmcgb3V0IG9uIElSQyBpbiAjY3VybCBvbiBpcmMuZnJlZW5vZGUubmV0CiAKQEAgLTg3LDQ4ICs4MiwxNSBAQAogIGxpc3QgaXMgZ29ubmEgZ2l2ZSB5b3UgYSBsb3Qgb2YgaW5zaWdodHMgb24gd2hhdCdzIGdvaW5nIG9uIHJpZ2h0IG5vdy4gQXNraW5nCiAgdGhlcmUgaXMgYSBnb29kIGlkZWEgdG9vLgogCi0yLiBjVVJMIENvZGluZyBTdGFuZGFyZHMKKzIuIFdyaXRlIGEgZ29vZCBwYXRjaAogCi0yLjEgTmFtaW5nCisyLjEgRm9sbG93IGNvZGUgc3R5bGUKIAotIFRyeSB1c2luZyBhIG5vbi1jb25mdXNpbmcgbmFtaW5nIHNjaGVtZSBmb3IgeW91ciBuZXcgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZQotIG5hbWVzLiBJdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG8gbWVhbiB0aGF0IHlvdSBzaG91bGQgdXNlIHRoZSBzYW1lIGFzIGluCi0gb3RoZXIgcGxhY2VzIG9mIHRoZSBjb2RlLCBqdXN0IHRoYXQgdGhlIG5hbWVzIHNob3VsZCBiZSBsb2dpY2FsLAotIHVuZGVyc3RhbmRhYmxlIGFuZCBiZSBuYW1lZCBhY2NvcmRpbmcgdG8gd2hhdCB0aGV5J3JlIHVzZWQgZm9yLiBGaWxlLWxvY2FsCi0gZnVuY3Rpb25zIHNob3VsZCBiZSBtYWRlIHN0YXRpYy4gV2UgbGlrZSBsb3dlciBjYXNlIG5hbWVzLgorIFdoZW4gd3JpdGluZyBDIGNvZGUsIGZvbGxvdyB0aGUgQ09ERV9TVFlMRSBhbHJlYWR5IGVzdGFibGlzaGVkIGluIHRoZQorIHByb2plY3QuIENvbnNpc3RlbnQgc3R5bGUgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCBhbmQgbWlzdGFrZXMgbGVzcyBsaWtlbHkKKyB0byBoYXBwZW4uCiAKLSBTZWUgdGhlIElOVEVSTkFMUyBkb2N1bWVudCBvbiBob3cgd2UgbmFtZSBub24tZXhwb3J0ZWQgbGlicmFyeS1nbG9iYWwKLSBzeW1ib2xzLgotCi0yLjIgSW5kZW50aW5nCi0KLSBVc2UgdGhlIHNhbWUgaW5kZW50aW5nIGxldmVscyBhbmQgYnJhY2luZyBtZXRob2QgYXMgYWxsIHRoZSBvdGhlciBjb2RlCi0gYWxyZWFkeSBkb2VzLiBJdCBtYWtlcyB0aGUgc291cmNlIGNvZGUgZWFzaWVyIHRvIGZvbGxvdyBpZiBhbGwgb2YgaXQgaXMKLSB3cml0dGVuIHVzaW5nIHRoZSBzYW1lIHN0eWxlLiBXZSBkb24ndCBhc2sgeW91IHRvIGxpa2UgaXQsIHdlIGp1c3QgYXNrIHlvdSB0bwotIGZvbGxvdyB0aGUgdHJhZGl0aW9uISA7LSkgVGhpcyBtYWlubHkgbWVhbnM6IDItbGV2ZWwgaW5kZW50cywgdXNpbmcgc3BhY2VzCi0gb25seSAobm8gdGFicykgYW5kIGhhdmluZyB0aGUgb3BlbmluZyBicmFjZSAoeykgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaWYoKQotIG9yIHdoaWxlKCkuCi0KLSBBbHNvIG5vdGUgdGhhdCB3ZSB1c2UgaWYoKSBhbmQgd2hpbGUoKSB3aXRoIG5vIHNwYWNlIGJlZm9yZSB0aGUgcGFyZW50aGVzaXMuCi0KLTIuMyBDb21tZW50aW5nCi0KLSBDb21tZW50IHlvdXIgc291cmNlIGNvZGUgZXh0ZW5zaXZlbHkgdXNpbmcgQyBjb21tZW50cyAoLyogY29tbWVudCAqLyksIERPIE5PVAotIHVzZSBDKysgY29tbWVudHMgKC8vIHRoaXMgc3R5bGUpLiBDb21tZW50ZWQgY29kZSBpcyBxdWFsaXR5IGNvZGUgYW5kIGVuYWJsZXMKLSBmdXR1cmUgbW9kaWZpY2F0aW9ucyBtdWNoIG1vcmUuIFVuY29tbWVudGVkIGNvZGUgcmlzayBoYXZpbmcgdG8gYmUgY29tcGxldGVseQotIHJlcGxhY2VkIHdoZW4gc29tZW9uZSB3YW50cyB0byBleHRlbmQgdGhpbmdzLCBzaW5jZSBvdGhlciBwZXJzb25zJyBzb3VyY2UKLSBjb2RlIGNhbiBnZXQgcXVpdGUgaGFyZCB0byByZWFkLgotCi0yLjQgTGluZSBMZW5ndGhzCi0KLSBXZSB3cml0ZSBzb3VyY2UgbGluZXMgc2hvcnRlciB0aGFuIDgwIGNvbHVtbnMuCi0KLTIuNSBHZW5lcmFsIFN0eWxlCi0KLSBLZWVwIHlvdXIgZnVuY3Rpb25zIHNtYWxsLiBJZiB0aGV5J3JlIHNtYWxsIHlvdSBhdm9pZCBhIGxvdCBvZiBtaXN0YWtlcyBhbmQKLSB5b3UgZG9uJ3QgYWNjaWRlbnRhbGx5IG1peCB1cCB2YXJpYWJsZXMgZXRjLgotCi0yLjYgTm9uLWNsb2JiZXJpbmcgQWxsIE92ZXIKKzIuMiBOb24tY2xvYmJlcmluZyBBbGwgT3ZlcgogCiAgV2hlbiB5b3Ugd3JpdGUgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgZml4IGJ1Z3MsIGl0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBkb24ndAogIGZpZGRsZSBhbGwgb3ZlciB0aGUgc291cmNlIGZpbGVzIGFuZCBmdW5jdGlvbnMuIFJlbWVtYmVyIHRoYXQgaXQgaXMgbGlrZWx5CkBAIC0xMzcsMTQgKzk5LDcgQEAKICBmdW5jdGlvbmFsaXR5LCB0cnkgd3JpdGluZyBpdCBpbiBhIG5ldyBzb3VyY2UgZmlsZS4gSWYgeW91IGZpeCBidWdzLCB0cnkgdG8KICBmaXggb25lIGJ1ZyBhdCBhIHRpbWUgYW5kIHNlbmQgdGhlbSBhcyBzZXBhcmF0ZSBwYXRjaGVzLgogCi0yLjcgUGxhdGZvcm0gRGVwZW5kZW50IENvZGUKLQotIFVzZSAjaWZkZWYgSEFWRV9GRUFUVVJFIHRvIGRvIGNvbmRpdGlvbmFsIGNvZGUuIFdlIGF2b2lkIGNoZWNraW5nIGZvcgotIHBhcnRpY3VsYXIgb3BlcmF0aW5nIHN5c3RlbXMgb3IgaGFyZHdhcmUgaW4gdGhlICNpZmRlZiBsaW5lcy4gVGhlCi0gSEFWRV9GRUFUVVJFIHNoYWxsIGJlIGdlbmVyYXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBmb3IgdW5peC1saWtlIHN5c3RlbXMKLSBhbmQgdGhleSBhcmUgaGFyZC1jb2RlZCBpbiB0aGUgY29uZmlnLVtzeXN0ZW1dLmggZmlsZXMgZm9yIHRoZSBvdGhlcnMuCi0KLTIuOCBXcml0ZSBTZXBhcmF0ZSBQYXRjaGVzCisyLjMgV3JpdGUgU2VwYXJhdGUgUGF0Y2hlcwogCiAgSXQgaXMgYW5ub3lpbmcgd2hlbiB5b3UgZ2V0IGEgaHVnZSBwYXRjaCBmcm9tIHNvbWVvbmUgdGhhdCBpcyBzYWlkIHRvIGZpeCA1MTEKICBvZGQgcHJvYmxlbXMsIGJ1dCBkaXNjdXNzaW9ucyBhbmQgb3BpbmlvbnMgZG9uJ3QgYWdyZWUgd2l0aCA1MTAgb2YgdGhlbSAtIG9yCkBAIC0xNTgsMTQgKzExMywxNCBAQAogIEFsc28sIHNlcGFyYXRlIHBhdGNoZXMgZW5hYmxlIGJpc2VjdGluZyBtdWNoIGJldHRlciB3aGVuIHdlIHRyYWNrIHByb2JsZW1zIGluCiAgdGhlIGZ1dHVyZS4KIAotMi45IFBhdGNoIEFnYWluc3QgUmVjZW50IFNvdXJjZXMKKzIuNCBQYXRjaCBBZ2FpbnN0IFJlY2VudCBTb3VyY2VzCiAKICBQbGVhc2UgdHJ5IHRvIGdldCB0aGUgbGF0ZXN0IGF2YWlsYWJsZSBzb3VyY2VzIHRvIG1ha2UgeW91ciBwYXRjaGVzCiAgYWdhaW5zdC4gSXQgbWFrZXMgdGhlIGxpZmUgb2YgdGhlIGRldmVsb3BlcnMgc28gbXVjaCBlYXNpZXIuIFRoZSB2ZXJ5IGJlc3QgaXMKICBpZiB5b3UgZ2V0IHRoZSBtb3N0IHVwLXRvLWRhdGUgc291cmNlcyBmcm9tIHRoZSBnaXQgcmVwb3NpdG9yeSwgYnV0IHRoZQogIGxhdGVzdCByZWxlYXNlIGFyY2hpdmUgaXMgcXVpdGUgT0sgYXMgd2VsbCEKIAotMi4xMCBEb2N1bWVudAorMi41IERvY3VtZW50CiAKICBXcml0aW5nIGRvY3MgaXMgZGVhZCBib3JpbmcgYW5kIG9uZSBvZiB0aGUgYmlnIHByb2JsZW1zIHdpdGggbWFueSBvcGVuIHNvdXJjZQogIHByb2plY3RzLiBTb21lb25lJ3MgZ290dGEgZG8gaXQuIEl0IG1ha2VzIGl0IGEgbG90IGVhc2llciBpZiB5b3Ugc3VibWl0IGEKQEAgLTE3Niw3ICsxMzEsNyBAQAogIEFTQ0lJIGZpbGVzLiBBbGwgSFRNTCBmaWxlcyBvbiB0aGUgd2ViIHNpdGUgYW5kIGluIHRoZSByZWxlYXNlIGFyY2hpdmVzIGFyZQogIGdlbmVyYXRlZCBmcm9tIHRoZSBucm9mZi9BU0NJSSB2ZXJzaW9ucy4KIAotMi4xMSBUZXN0IENhc2VzCisyLjYgVGVzdCBDYXNlcwogCiAgU2luY2UgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIG1haW4KICBmZWF0dXJlcyBhcmUgd29ya2luZyBhcyB0aGV5J3JlIHN1cHBvc2VkIHRvLiBUbyBtYWludGFpbiB0aGlzIHNpdHVhdGlvbiBhbmQKQEAgLTIwMyw3ICsxNTgsNyBAQAogCiAgWW91IG5lZWQgdG8gZmlyc3QgY2hlY2tvdXQgdGhlIHJlcG9zaXRvcnk6CiAKLSAgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC5naXQKKyAgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwuZ2l0CiAKICBZb3UgdGhlbiBwcm9jZWVkIGFuZCBlZGl0IGFsbCB0aGUgZmlsZXMgeW91IGxpa2UgYW5kIHlvdSBjb21taXQgdGhlbSB0byB5b3VyCiAgbG9jYWwgcmVwb3NpdG9yeToKZGlmZiAtLWdpdCBhL2RvY3MvRElTVFJPLURJTEVNTUEgYi9kb2NzL0RJU1RSTy1ESUxFTU1BCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDMxN2ZkLi4wMDAwMDAwCi0tLSBhL2RvY3MvRElTVFJPLURJTEVNTUEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYgKzAsMCBAQAotICBEYXRlOiBGZWJydWFyeSAxMSwgMjAwNwotICBBdXRob3I6IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+Ci0gIFVSTDogaHR0cDovL2N1cmwuaGF4eC5zZS9sZWdhbC9kaXN0cm8tZGlsZW1tYS5odG1sCi0KLUNvbmRpdGlvbgotCi0gVGhpcyBkb2N1bWVudCBpcyB3cml0dGVuIHRvIGRlc2NyaWJlIHRoZSBzaXR1YXRpb24gYXMgaXQgaXMgcmlnaHQgbm93LgotIGxpYmN1cmwgNy4xNi4xIGlzIGN1cnJlbnRseSB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLiBUaGluZ3MgbWF5IG9mCi0gY291cnNlIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotCi0gVGhpcyBkb2N1bWVudCByZWZsZWN0cyBteSB2aWV3IGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoZXNlIHRoaW5ncy4gUGxlYXNlIHRlbGwKLSBtZSB3aGVyZSBhbmQgaG93IHlvdSB0aGluayBJJ20gd3JvbmcsIGFuZCBJJ2xsIHRyeSB0byBjb3JyZWN0IG15IG1pc3Rha2VzLgotCi1CYWNrZ3JvdW5kCi0KLSBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGhhcyBkZWVtZWQgdGhlIE9yaWdpbmFsIEJTRCBsaWNlbnNlWzFdIHRvIGJlCi0gImluY29tcGF0aWJsZSJbMl0gd2l0aCBHUExbM10uIEknZCByYXRoZXIgc2F5IGl0IGlzIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBidXQKLSB0aGUgcG9pbnQgaXMgdGhlIHNhbWU6IGlmIHlvdSBkaXN0cmlidXRlIGEgYmluYXJ5IHZlcnNpb24gb2YgYSBHUEwgcHJvZ3JhbSwKLSBpdCBNVVNUIE5PVCBiZSBsaW5rZWQgd2l0aCBhbnkgT3JpZ2luYWwgQlNELWxpY2Vuc2VkIHBhcnRzIG9yIGxpYnJhcmllcy4KLSBEb2luZyBzbyB3aWxsIHZpb2xhdGUgdGhlIEdQTCBsaWNlbnNlLiBGb3IgYSBsb25nIHRpbWUsIHZlcnkgbWFueSBHUEwKLSBsaWNlbnNlZCBwcm9ncmFtcyBoYXZlIGF2b2lkZWQgdGhpcyBsaWNlbnNlIG1lc3MgYnkgYWRkaW5nIGFuIGV4Y2VwdGlvbls4XSB0bwotIHRoZWlyIGxpY2Vuc2UuIEFuZCBtYW55IG90aGVycyBoYXZlIGp1c3QgY2xvc2VkIHRoZWlyIGV5ZXMgZm9yIHRoaXMgcHJvYmxlbS4KLQotIGxpYmN1cmwgaXMgTUlULXN0eWxlWzRdIGxpY2Vuc2VkIC0gaG93IG9uIGVhcnRoIGRpZCB0aGlzIGRpbGVtbWEgZmFsbCBvbnRvCi0gb3VyIHBsYXRlcz8KLQotIGxpYmN1cmwgaXMgb25seSBhIGxpdHRsZSBsaWJyYXJ5LiBsaWJjdXJsIGNhbiBiZSBidWlsdCB0byB1c2UgT3BlblNTTCBmb3IgaXRzCi0gU1NML1RMUyBjYXBhYmlsaXRpZXMuIE9wZW5TU0wgaXMgYmFzaWNhbGx5IE9yaWdpbmFsIEJTRCBsaWNlbnNlZFs1XS4KLQotIElmIGxpYmN1cmwgYnVpbHQgdG8gdXNlIE9wZW5TU0wgaXMgdXNlZCBieSBhIEdQTC1saWNlbnNlZCBhcHBsaWNhdGlvbiBhbmQgeW91Ci0gZGVjaWRlIHRvIGRpc3RyaWJ1dGUgYSBiaW5hcnkgdmVyc2lvbiBvZiBpdCAoTGludXggZGlzdHJvcyAtIGZvciBleGFtcGxlIC0KLSB0ZW5kIHRvKSwgeW91IGhhdmUgYSBjbGFzaC4gR1BMIHZzIE9yaWdpbmFsIEJTRC4KLQotIFRoaXMgZGlsZW1tYSBpcyBub3QgbGliY3VybC1zcGVjaWZpYyBub3IgaXMgaXQgc3BlY2lmaWMgdG8gYW55IHBhcnRpY3VsYXIKLSBMaW51eCBkaXN0cm8uIChUaGlzIGFydGljbGUgbWVudGlvbnMgYW5kIHJlZmVycyB0byBEZWJpYW4gc2V2ZXJhbCB0aW1lcywgYnV0Ci0gb25seSBiZWNhdXNlIERlYmlhbiBzZWVtcyB0byBiZSB0aGUgb25seSBMaW51eCBkaXN0cm8gdG8gaGF2ZSBmYWNlZCB0aGlzCi0gaXNzdWUgeWV0IHNpbmNlIG5vIG90aGVyIGRpc3RybyBpcyBzaGlwcGluZyBsaWJjdXJsIGJ1aWx0IHdpdGggdHdvIFNTTAotIGxpYnJhcmllcy4pCi0KLVBhcnQgb2YgdGhlIE9wZXJhdGluZyBTeXN0ZW0KLQotIFRoaXMgd291bGQgbm90IGJlIGEgcHJvYmxlbSBpZiB0aGUgdXNlZCBsaWIgd291bGQgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZQotIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSwgYXMgdGhlbiB0aGUgR1BMIGxpY2Vuc2UgaGFzIGFuIGV4Y2VwdGlvbgotIGNsYXVzZVs2XSB0aGF0IGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gdXNlIHN1Y2ggbGlicyB3aXRob3V0IGhhdmluZyB0byBiZQotIGFsbG93ZWQgdG8gZGlzdHJpYnV0ZSBpdCBvciBpdHMgc291cmNlcy4gUG9zc2libHkgc29tZSBkaXN0cm9zIHdpbGwgY2xhaW0KLSB0aGF0IE9wZW5TU0wgaXMgcGFydCBvZiB0aGVpciBvcGVyYXRpbmcgc3lzdGVtLgotCi0gRGViaWFuIGRvZXMgaG93ZXZlciBub3QgdGFrZSB0aGlzIHN0YW5jZSBhbmQgaGFzIG9mZmljaWFsbHkoPykgY2xhaW1lZCB0aGF0Ci0gT3BlblNTTCBpcyBub3QgYSByZXF1aXJlZCBwYXJ0IG9mIHRoZSBEZWJpYW4gb3BlcmF0aW5nIHN5c3RlbQotCi0gU29tZSBwZW9wbGUgY2xhaW0gdGhhdCB0aGlzIHBhcmFncmFwaCBjYW5ub3QgYmUgZXhwbG9pdGVkIHRoaXMgd2F5IGJ5IGEgTGludXgKLSBkaXN0cm8sIGJ1dCBJIGFtIG5vdCBhIGxhd3llciBhbmQgdGhhdCBpcyBhIGRpc2N1c3Npb24gbGVmdCBvdXRzaWRlIG9mIHRoaXMKLSBkb2N1bWVudC4KLQotR251VExTCi0KLSBTaW5jZSBNYXkgMjAwNSBsaWJjdXJsIGNhbiBnZXQgYnVpbHQgdG8gdXNlIEdudVRMUyBpbnN0ZWFkIG9mIE9wZW5TU0wuIEdudVRMUwotIGlzIGFuIExHUExbN10gbGljZW5zZWQgbGlicmFyeSB0aGF0IG9mZmVycyBhIG1hdGNoaW5nIHNldCBvZiBmZWF0dXJlcyBhcwotIE9wZW5TU0wgZG9lcy4gTm93LCB5b3UgY2FuIGJ1aWxkIGFuZCBkaXN0cmlidXRlIGFuIFRMUy9TU0wgY2FwYWJsZSBsaWJjdXJsCi0gd2l0aG91dCBpbmNsdWRpbmcgYW55IE9yaWdpbmFsIEJTRCBsaWNlbnNlZCBjb2RlLgotCi0gSSBiZWxpZXZlIERlYmlhbiBpcyB0aGUgZmlyc3QgKG9ubHk/KSBkaXN0cm8gdGhhdCBwcm92aWRlcyBsaWJjdXJsL0dudVRMUwotIHBhY2thZ2VzLgotCi15YXNzbAotCi0gbGliY3VybCBjYW4gZ2V0IGFsc28gZ2V0IGJ1aWx0IHRvIHVzZSB5YXNzbCBmb3IgdGhlIFRMUy9TU0wgbGF5ZXIuIHlhc3NsIGlzIGEKLSBHUExbM10gbGljZW5zZWQgbGlicmFyeS4KLQotCi1HbnVUTFMgdnMgT3BlblNTTCB2cyB5YXNzbAotCi0gV2hpbGUgdGhlc2UgdGhyZWUgbGlicmFyaWVzIG9mZmVyIHNpbWlsYXIgZmVhdHVyZXMsIHRoZXkgYXJlIG5vdCBlcXVhbC4KLSBsaWJjdXJsIGRvZXMgbm90ICh5ZXQpIG9mZmVyIGEgc3RhbmRhcmRpemVkIHN0YWJsZSBBQkkgaWYgeW91IGRlY2lkZSB0bwotIHN3aXRjaCBmcm9tIHVzaW5nIGxpYmN1cmwtb3BlbnNzbCB0byBsaWJjdXJsLWdudXRscyBvciB2aWNlLXZlcnNhLiBUaGUgR251VExTCi0gYW5kIHlhc3NsIHN1cHBvcnQgaXMgdmVyeSByZWNlbnQgaW4gbGliY3VybCBhbmQgaXQgaGFzIG5vdCBiZWVuIHRlc3RlZCBub3IKLSB1c2VkIHZlcnkgZXh0ZW5zaXZlbHksIHdoaWxlIHRoZSBPcGVuU1NMIGVxdWl2YWxlbnQgY29kZSBoYXMgYmVlbiB1c2VkIGFuZAotIHRodXMgbWF0dXJlZCBzaW5jZSAxOTk5LgotCi0gR251VExTCi0gICAtIExHUEwgbGljZW5zZWQKLSAgIC0gc3VwcG9ydHMgU1JQCi0gICAtIGxhY2tzIFNTTHYyIHN1cHBvcnQKLSAgIC0gbGFja3MgTUQyIHN1cHBvcnQgKHVzZWQgYnkgYXQgbGVhc3Qgc29tZSBDQSBjZXJ0cykKLSAgIC0gbGFja3MgdGhlIGNyeXB0byBmdW5jdGlvbnMgbGliY3VybCB1c2VzIGZvciBOVExNCi0KLSBPcGVuU1NMCi0gICAtIE9yaWdpbmFsIEJTRCBsaWNlbnNlZAotICAgLSBsYWNrcyBTUlAKLSAgIC0gc3VwcG9ydHMgU1NMdjIKLSAgIC0gb2xkZXIgYW5kIG1vcmUgd2lkZWx5IHVzZWQKLSAgIC0gcHJvdmlkZXMgY3J5cHRvIGZ1bmN0aW9ucyBsaWJjdXJsIHVzZXMgZm9yIE5UTE0KLSAgIC0gbGliY3VybCBjYW4gZG8gbm9uLWJsb2NraW5nIGNvbm5lY3RzIHdpdGggaXQgaW4gNy4xNS40IGFuZCBsYXRlcgotCi0geWFzc2wKLSAgIC0gR1BMIGxpY2Vuc2VkCi0gICAtIG11Y2ggdW50ZXN0ZWQgYW5kIHVucHJvdmVuIGluIHRoZSByZWFsIHdvcmsgYnkgKGxpYiljdXJsIHVzZXJzIHNvIHdlIGRvbid0Ci0gICAgIGtub3cgYSBsb3QgYWJvdXQgcmVzdHJpY3Rpb25zIG9yIGJlbmVmaXRzIGZyb20gdXNpbmcgdGhpcwotCi1UaGUgQmV0dGVyIExpY2Vuc2UsIE9yaWdpbmFsIEJTRCwgR1BMIG9yIExHUEw/Ci0KLSBJdCBpc24ndCBvYnZpb3VzIG9yIHdpdGhvdXQgZGViYXRlIHRvIGFueSBvYmplY3RpdmUgaW50ZXJlc3RlZCBwYXJ0eSB0aGF0Ci0gZWl0aGVyIG9mIHRoZXNlIGxpY2Vuc2VzIGFyZSB0aGUgImJldHRlciIgb3IgZXZlbiB0aGUgInByZWZlcnJlZCIgb25lIGluIGEKLSBnZW5lcmljIHNpdHVhdGlvbi4KLQotIEluc3RlYWQsIEkgdGhpbmsgd2Ugc2hvdWxkIGFjY2VwdCB0aGUgZmFjdCB0aGF0IHRoZSBTU0wvVExTIGxpYnJhcmllcyBhbmQKLSB0aGVpciBkaWZmZXJlbnQgbGljZW5zZXMgd2lsbCBmaXQgZGlmZmVyZW50IGFwcGxpY2F0aW9ucyBhbmQgdGhlaXIgYXV0aG9ycwotIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb25zJyBsaWNlbnNlcyBhbmQgdGhlaXIgZ2VuZXJhbCB1c2FnZQotIHBhdHRlcm4gKGNvbnNpZGVyaW5nIGhvdyBHUEwgYW5kIExHUEwgbGlicmFyaWVzIGZvciBleGFtcGxlIGNhbiBiZSBidXJkZW5zb21lCi0gZm9yIGVtYmVkZGVkIHN5c3RlbXMgdXNhZ2UpLgotCi0gSW4gRGViaWFuIGxhbmQsIHRoZXJlIHNlZW1zIHRvIGJlIGEgY29tbW9uIG9waW5pb24gdGhhdCBMR1BMIGlzICJtYXhpbWFsbHkKLSBjb21wYXRpYmxlIiB3aXRoIGFwcHMgd2hpbGUgT3JpZ2luYWwgQlNEIGlzIG5vdC4gTGlrZSB0aGlzOgotCi0gICAgICAgIGh0dHBzOi8vbGlzdHMuZGViaWFuLm9yZy9kZWJpYW4tZGV2ZWwvMjAwNS8wOS9tc2cwMTQxNy5odG1sCi0KLU1vcmUgU1NMIExpYnJhcmllcwotCi0gSW4gbGliY3VybCwgdGhlcmUncyBubyBzdG9wcGluZyB1cyBoZXJlLiBUaGVyZSBhcmUgbW9yZSBPcGVuIFNvdXJjZS9GcmVlCi0gU1NML1RMUyBsaWJyYXJpZXMgb3V0IHRoZXJlIGFuZCB3ZSB3b3VsZCB2ZXJ5IG11Y2ggbGlrZSB0byBzdXBwb3J0IHRoZW0gYXMKLSB3ZWxsLCB0byBvZmZlciBhcHBsaWNhdGlvbiBhdXRob3JzIGFuIGV2ZW4gd2lkZXIgc2NvcGUgb2YgY2hvaWNlLgotCi1BcHBsaWNhdGlvbiBBbmdsZSBvZiB0aGlzIFByb2JsZW0KLQotIGxpYmN1cmwgaXMgYnVpbHQgdG8gdXNlIG9uZSBTU0wvVExTIGxpYnJhcnkuIEl0IHVzZXMgYSBzaW5nbGUgZml4ZWQgbmFtZSAoYnkKLSBkZWZhdWx0KSBvbiB0aGUgYnVpbHQvY3JlYXRlZCBsaWIgZmlsZSwgYW5kIGFwcGxpY2F0aW9ucyBhcmUgYnVpbHQvbGlua2VkIHRvCi0gdXNlIHRoYXQgc2luZ2xlIGxpYi4gUmVwbGFjaW5nIG9uZSBsaWJjdXJsIGluc3RhbmNlIHdpdGggYW5vdGhlciBvbmUgdGhhdAotIHVzZXMgdGhlIG90aGVyIFNTTC9UTFMgbGlicmFyeSBtaWdodCBicmVhayBvbmUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgKGR1ZSB0bwotIEFCSSBkaWZmZXJlbmNlcyBhbmQvb3IgZGlmZmVyZW50IGZlYXR1cmUgc2V0KS4gWW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0bwotIHVzZSB0aGUgbGliY3VybCBpdCB3YXMgYnVpbHQgZm9yLgotCi1Qcm9qZWN0IGNVUkwgQW5nbGUgb2YgdGhpcyBQcm9ibGVtCi0KLSBXZSBkaXN0cmlidXRlIGxpYmN1cmwgYW5kIGV2ZXJ5b25lIG1heSBidWlsZCBsaWJjdXJsIHdpdGggZWl0aGVyIGxpYnJhcnkgYXQKLSB0aGVpciBjaG9pY2UuIFRoaXMgcHJvYmxlbSBpcyBub3QgZGlyZWN0bHkgYSBwcm9ibGVtIG9mIG91cnMuIEl0IG1lcmVseQotIGFmZmVjdHMgdXNlcnMgLSBHUEwgYXBwbGljYXRpb24gYXV0aG9ycyBvbmx5IC0gb2Ygb3VyIGxpYiBhcyBpdCBjb21lcwotIGluY2x1ZGVkIGFuZCBkZWxpdmVyZWQgb24gc29tZSBkaXN0cm9zLgotCi0gbGliY3VybCBoYXMgZGlmZmVyZW50IEFCSSB3aGVuIGJ1aWx0IHdpdGggZGlmZmVyZW50IFNTTC9UTFMgbGlicmFyaWVzIGR1ZSB0bwotIHRoZXNlIHJlYXNvbnM6Ci0KLSAxLiBObyBvbmUgaGFzIHdvcmtlZCBvbiBmaXhpbmcgdGhpcy4gVGhlIG11dGV4L2xvY2sgY2FsbGJhY2tzIHNob3VsZCBiZSBzZXQKLSAgICB3aXRoIGEgZ2VuZXJpYyBsaWJjdXJsIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHVzZSB0aGUgcHJvcGVyIHVuZGVybHlpbmcKLSAgICBmdW5jdGlvbnMuCi0KLSAyLiBUaGUgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OIG9wdGlvbiBpcyBub3QgcG9zc2libGUgdG8gImVtdWxhdGUiIG9uIEdudVRMUwotICAgIGJ1dCBzaW1wbHkgcmVxdWlyZXMgT3BlblNTTC4KLQotIDMuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgb3RoZXIgc3VidGxlIGRpZmZlcmVuY2VzIGp1c3QgYmVjYXVzZSBub2JvZHkgaGFzIHlldAotICAgIHRyaWVkIHRvIG1ha2UgYSBmaXhlZCBBQkkgbGlrZSB0aGlzLgotCi1EaXN0cm8gQW5nbGUgb2YgdGhpcyBQcm9ibGVtCi0KLSBUbyBteSBrbm93bGVkZ2UgdGhlcmUgaXMgb25seSBvbmUgZGlzdHJvIHRoYXQgc2hpcHMgbGliY3VybCBidWlsdCB3aXRoIGVpdGhlcgotIE9wZW5TU0wgb3IgR251VExTLgotCi0gRGViaWFuIExpbnV4IGlzIG5vdyAoc2luY2UgbWlkIFNlcHRlbWJlciAyMDA1KSBwcm92aWRpbmcgdHdvIGRpZmZlcmVudAotIGxpYmN1cmwgcGFja2FnZXMsIG9uZSBmb3IgbGliY3VybCBidWlsdCB3aXRoIE9wZW5TU0wgYW5kIG9uZSBidWlsdCB3aXRoCi0gR251VExTLiBUaGV5IHVzZSBkaWZmZXJlbnQgLnNvIG5hbWVzIGFuZCBjYW4gdGhpcyBib3RoIGJlIGluc3RhbGxlZCBpbiBhCi0gc2luZ2xlIHN5c3RlbSBzaW11bHRhbmVvdXNseS4gVGhpcyBoYXMgYmVlbiBzYWlkIHRvIGJlIGEgdHJhbnNpdGlvbmFsIHN5c3RlbQotIG5vdCBkZXNpcmVkIHRvIGtlZXAgaW4gdGhlIGxvbmcgcnVuLgotCi1Gb290bm90ZXMKLQotIFsxXSA9IGh0dHA6Ly93d3cueGZyZWU4Ni5vcmcvMy4zLjYvQ09QWVJJR0hUMi5odG1sIzYKLSBbMl0gPSBodHRwczovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvYnNkLmh0bWwKLSBbM10gPSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCi0gWzRdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sCi0gWzVdID0gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAotIFs2XSA9IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwgZW5kIG9mIHNlY3Rpb24gMwotIFs3XSA9IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC5odG1sCi0gWzhdID0gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlblNTTF9leGNlcHRpb24KLQotRmVlZGJhY2svVXBkYXRlcyBwcm92aWRlZCBieQotCi0gRXJpYyBDb29wZXIKZGlmZiAtLWdpdCBhL2RvY3MvRkFRIGIvZG9jcy9GQVEKaW5kZXggMDZhMzA2ZC4uOGNlNTIxNyAxMDA2NDQKLS0tIGEvZG9jcy9GQVEKKysrIGIvZG9jcy9GQVEKQEAgLTMwLDYgKzMwLDcgQEAKICAgMi4yIERvZXMgY3VybCB3b3JrL2J1aWxkIHdpdGggb3RoZXIgU1NMIGxpYnJhcmllcz8KICAgMi4zIFdoZXJlIGNhbiBJIGZpbmQgYSBjb3B5IG9mIExJQkVBWTMyLkRMTD8KICAgMi40IERvZXMgY3VybCBzdXBwb3J0IFNPQ0tTIChSRkMgMTkyOCkgPworICAyLjUgSW5zdGFsbCBsaWJjdXJsIGZvciBib3RoIDMyYml0IGFuZCA2NGJpdD8KIAogIDMuIFVzYWdlIFByb2JsZW1zCiAgIDMuMSBjdXJsOiAoMSkgU1NMIGlzIGRpc2FibGVkLCBodHRwczogbm90IHN1cHBvcnRlZApAQCAtMjI1LDcgKzIyNiw5IEBACiAgIGltcGxlbWVudCBpdCBmb3IgeW91LCB0aGF0IGlzIG5vdCBhIHZlcnkgZnJpZW5kbHkgYXR0aXR1ZGUuIFdlIHNwZW5kIGEKICAgY29uc2lkZXJhYmxlIHRpbWUgYWxyZWFkeSBvbiBtYWludGFpbmluZyBhbmQgZGV2ZWxvcGluZyBjdXJsLiBJbiBvcmRlciB0bwogICBnZXQgbW9yZSBvdXQgb2YgdXMsIHlvdSBzaG91bGQgY29uc2lkZXIgdHJhZGluZyBpbiBzb21lIG9mIHlvdXIgdGltZSBhbmQKLSAgZWZmb3J0cyBpbiByZXR1cm4uCisgIGVmZm9ydHMgaW4gcmV0dXJuLiBTaW1wbHkgZ28gdG8gdGhlIEdpdEh1YiByZXBvIHdoaWNoIHJlc2lkZXMgYXQKKyAgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybCwgZm9yayB0aGUgcHJvamVjdCwgYW5kIGNyZWF0ZSBwdWxsIHJlcXVlc3RzCisgIHdpdGggeW91ciBwcm9wb3NlZCBjaGFuZ2VzLgogCiAgIElmIHlvdSB3cml0ZSB0aGUgY29kZSwgY2hhbmNlcyBhcmUgYmlnZ2VyIHRoYXQgaXQgd2lsbCBnZXQgaW50byBjdXJsIGZhc3Rlci4KIApAQCAtMjUxLDkgKzI1NCwxMCBAQAogCiAgIFdlIHN0aWxsIGdldCBoZWxwIGZyb20gY29tcGFuaWVzLiBIYXh4IHByb3ZpZGVzIHdlYiBzaXRlLCBiYW5kd2lkdGgsIG1haWxpbmcKICAgbGlzdHMgZXRjLCBzb3VyY2Vmb3JnZS5uZXQgaG9zdHMgcHJvamVjdCBzZXJ2aWNlcyB3ZSB0YWtlIGFkdmFudGFnZSBmcm9tLAotICBsaWtlIHRoZSBidWcgdHJhY2tlciBhbmQgZ2l0aHViIGhvc3RzIHRoZSBwcmltYXJ5IGdpdCByZXBvc2l0b3J5LiBBbHNvCi0gIGFnYWluLCBzb21lIGNvbXBhbmllcyBoYXZlIHNwb25zb3JlZCBjZXJ0YWluIHBhcnRzIG9mIHRoZSBkZXZlbG9wbWVudCBpbiB0aGUKLSAgcGFzdCBhbmQgSSBob3BlIHNvbWUgd2lsbCBjb250aW51ZSB0byBkbyBzbyBpbiB0aGUgZnV0dXJlLgorICBsaWtlIHRoZSBidWcgdHJhY2tlciwgYW5kIEdpdEh1YiBob3N0cyB0aGUgcHJpbWFyeSBnaXQgcmVwb3NpdG9yeSBhdAorICBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsLiBBbHNvIGFnYWluLCBzb21lIGNvbXBhbmllcyBoYXZlIHNwb25zb3JlZAorICBjZXJ0YWluIHBhcnRzIG9mIHRoZSBkZXZlbG9wbWVudCBpbiB0aGUgcGFzdCBhbmQgSSBob3BlIHNvbWUgd2lsbCBjb250aW51ZSB0bworICBkbyBzbyBpbiB0aGUgZnV0dXJlLgogCiAgIElmIHlvdSB3YW50IHRvIHN1cHBvcnQgb3VyIHByb2plY3QsIGNvbnNpZGVyIGEgZG9uYXRpb24gb3IgYSBiYW5uZXItcHJvZ3JhbQogICBvciBldmVuIGJldHRlcjogYnkgaGVscGluZyB1cyBjb2RpbmcsIGRvY3VtZW50aW5nLCB0ZXN0aW5nIGV0Yy4KQEAgLTI3OCw3ICsyODIsNyBAQAogICBQbGVhc2UgZG8gbm90IG1haWwgYW55IHNpbmdsZSBpbmRpdmlkdWFsIHVubGVzcyB5b3UgcmVhbGx5IG5lZWQgdG8uIEtlZXAKICAgY3VybC1yZWxhdGVkIHF1ZXN0aW9ucyBvbiBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gQWxsIGF2YWlsYWJsZSBtYWlsaW5nCiAgIGxpc3RzIGFyZSBsaXN0ZWQgaW4gdGhlIE1BTlVBTCBkb2N1bWVudCBhbmQgb25saW5lIGF0Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogICBLZWVwaW5nIGN1cmwtcmVsYXRlZCBxdWVzdGlvbnMgYW5kIGRpc2N1c3Npb25zIG9uIG1haWxpbmcgbGlzdHMgYWxsb3dzCiAgIG90aGVycyB0byBqb2luIGluIGFuZCBoZWxwLCB0byBzaGFyZSB0aGVpciBpZGVhcywgY29udHJpYnV0ZSB0aGVpcgpAQCAtMjk5LDcgKzMwMyw3IEBACiAgIHlvdXIgY3VybC1yZWxhdGVkIHByb2JsZW1zLgogCiAgIFdlIGxpc3QgYXZhaWxhYmxlIGFsdGVybmF0aXZlcyBvbiB0aGUgY3VybCB3ZWIgc2l0ZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9zdXBwb3J0Lmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2Uvc3VwcG9ydC5odG1sCiAKICAgMS4xMCBIb3cgbWFueSBhcmUgdXNpbmcgY3VybD8KIApAQCAtMzE2LDcgKzMyMCw3IEBACiAgIEluIE1heSAyMDEyIERhbmllbCBkaWQgYSBjb3VudGluZyBnYW1lIGFuZCBjYW1lIHVwIHdpdGggYSBudW1iZXIgdGhhdCBtYXkKICAgYmUgY29tcGxldGVseSB3cm9uZyBvciBzb21ld2hhdCBhY2N1cmF0ZS4gT3ZlciA1MDAgbWlsbGlvbiEKIAotICBTZWUgaHR0cDovL2RhbmllbC5oYXh4LnNlL2Jsb2cvMjAxMi8wNS8xNi8zMDBtLXVzZXJzLworICBTZWUgaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9ibG9nLzIwMTIvMDUvMTYvMzAwbS11c2Vycy8KIAogICAxLjExIFdoeSBkb24ndCB5b3UgdXBkYXRlIGNhLWJ1bmRsZS5jcnQKIApAQCAtMzM4LDcgKzM0Miw3IEBACiAgIElmIHlvdSB3YW50IHRoZSBtb3N0IHJlY2VudCBjb2xsZWN0aW9uIG9mIGNhIGNlcnRzIHRoYXQgTW96aWxsYSBGaXJlZm94CiAgIHVzZXMsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBleHRyYWN0IHRoZSBjb2xsZWN0aW9uIHlvdXJzZWxmIGZyb20gTW96aWxsYQogICBGaXJlZm94IChieSBydW5uaW5nICdtYWtlIGNhLWJ1bmRsZSksIG9yIGJ5IHVzaW5nIG91ciBvbmxpbmUgc2VydmljZSBzZXR1cAotICBmb3IgdGhpcyBwdXJwb3NlOiBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwKKyAgZm9yIHRoaXMgcHVycG9zZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jYWV4dHJhY3QuaHRtbAogCiAgIDEuMTIgSSBoYXZlIGEgcHJvYmxlbSB3aG8gY2FuIEkgY2hhdCB3aXRoPwogCkBAIC0zNTIsMTMgKzM1NiwxNSBAQAogICBjcnlwdG9ncmFwaHkuIFdoZW4gZG9pbmcgc28sIHRoZSBFeHBvcnQgQ29udHJvbCBDbGFzc2lmaWNhdGlvbiBOdW1iZXIgKEVDQ04pCiAgIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGxldmVsIG9mIGV4cG9ydCBjb250cm9sIGV0Yy4KIAotICBBU0YgZ2l2ZXMgYSBnb29kIGV4cGxhbmF0aW9uIGF0IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NyeXB0by5odG1sCisgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzIGEgZ29vZCBleHBsYW5hdGlvbiBvZiBFQ0NOcyBhdAorICBodHRwczovL3d3dy5hcGFjaGUub3JnL2Rldi9jcnlwdG8uaHRtbAogCiAgIFdlIGJlbGlldmUgY3VybCdzIG51bWJlciBtaWdodCBiZSBFQ0NOIDVEMDAyLCBhbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0gIDVEOTkyLiBJdCBzZWVtcyBuZWNlc3NhcnkgdG8gd3JpdGUgdGhlbSwgYXNraW5nIHRvIGNvbmZpcm0uCisgIDVEOTkyLiBJdCBzZWVtcyBuZWNlc3NhcnkgdG8gd3JpdGUgdGhlbSAodGhlIGF1dGhvcml0eSB0aGF0IGFkbWluaXN0ZXJzIEVDQ04KKyAgbnVtYmVycyksIGFza2luZyB0byBjb25maXJtLgogCi0gIENvbXByZWhlbnNpYmxlIGV4cGxhbmF0aW9ucyBvZiB0aGUgbWVhbmluZyBvZiBzdWNoIG51bWJlcnMgYW5kIGhvdyB0bwotICBvYnRhaW4gdGhlbSAocmVzcC4pIGFyZSBoZXJlCisgIENvbXByZWhlbnNpYmxlIGV4cGxhbmF0aW9ucyBvZiB0aGUgbWVhbmluZyBvZiBzdWNoIG51bWJlcnMgYW5kIGhvdyB0byBvYnRhaW4KKyAgdGhlbSAocmVzcC4pIGFyZSBoZXJlCiAKICAgaHR0cDovL3d3dy5iaXMuZG9jLmdvdi9saWNlbnNpbmcvZXhwb3J0aW5nYmFzaWNzLmh0bQogICBodHRwOi8vd3d3LmJpcy5kb2MuZ292L2xpY2Vuc2luZy9kb19pX25lZWRhbmVjY24uaHRtbApAQCAtNDQ0LDcgKzQ1MCw3IEBACiAgIEdudVRMUywgeWFzc2wsIE5TUywgUG9sYXJTU0wsIGF4VExTLCBTZWN1cmUgVHJhbnNwb3J0IChuYXRpdmUgaU9TL09TIFgpLAogICBXaW5TU0wgKG5hdGl2ZSBXaW5kb3dzKSBvciBHU0tpdCAobmF0aXZlIElCTSBpKS4gVGhleSBhbGwgaGF2ZSB0aGVpciBwcm9zCiAgIGFuZCBjb25zLCBhbmQgd2UgdHJ5IHRvIG1haW50YWluIGEgY29tcGFyaXNvbiBvZiB0aGVtIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2wtY29tcGFyZWQuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCiAKICAgMi4zIFdoZXJlIGNhbiBJIGZpbmQgYSBjb3B5IG9mIExJQkVBWTMyLkRMTD8KIApAQCAtNDU5LDYgKzQ2NSwzMiBAQAogCiAgIFllcywgU09DS1MgNCBhbmQgNSBhcmUgc3VwcG9ydGVkLgogCisgIDIuNSBJbnN0YWxsIGxpYmN1cmwgZm9yIGJvdGggMzJiaXQgYW5kIDY0Yml0PworCisgIEluIGN1cmwncyBjb25maWd1cmUgcHJvY2VkdXJlIG9uZSBvZiB0aGUgcmVndWxhciBpbmNsdWRlIGZpbGVzIGdldCBjcmVhdGVkCisgIHdpdGggcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24uIFRoZSBmaWxlICdjdXJsL2N1cmxidWlsZC5oJyBpbiB0aGUKKyAgaW5zdGFsbGVkIGxpYmN1cmwgZmlsZSB0cmVlIGlzIHRoZXJlZm9yZSBzb21ld2hhdCB0aWVkIHRvIHRoYXQgcGFydGljdWxhcgorICBwbGF0Zm9ybS4KKworICBUbyBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gZ2V0IGJ1aWx0IGZvciBlaXRoZXIgMzJiaXQgb3IgNjRiaXQgeW91IG5lZWQgdG8KKyAgaW5zdGFsbCBsaWJjdXJsIGhlYWRlcnMgZm9yIGJvdGggc2V0dXBzIGFuZCB1bmZvcnR1bmF0ZWx5IGN1cmwgZG9lc24ndCBkbworICB0aGlzIGF1dG9tYXRpY2FsbHkuCisKKyAgQSBjb21tb25seSB1c2VkIHByb2NlZHVyZSBpcyB0aGlzOgorCisgICAgICQgLi9jb25maWd1cmUgWzMyYml0IHBsYXRmb3JtXQorICAgICAkIG12IGN1cmwvY3VybGJ1aWxkLmggY3VybC9jdXJsYnVpbGQtMzJiaXQuaAorICAgICAkIC4vY29uZmlndXJlIFs2NGJpdCBwbGF0Zm9ybV0KKyAgICAgJCBtdiBjdXJsL2N1cmxidWlsZC5oIGN1cmwvY3VybGJ1aWxkLTY0Yml0LmgKKworICBUaGVuIHlvdSBtYWtlIGEgdG9wbGV2ZWwgY3VybC9jdXJsYnVpbGQuaCByZXBsYWNlbWVudCB0aGF0IG9ubHkgZG9lcyB0aGlzOgorCisgICAgICNpZmRlZiBJU18zMkJJVAorICAgICAjaW5jbHVkZSAiY3VybGJ1aWxkLTMyYml0LmgiCisgICAgIGVsc2UKKyAgICAgI2luY2x1ZGUgImN1cmxidWlsZC02NGJpdC5oIgorICAgICAjZW5kaWYKKwogCiAzLiBVc2FnZSBwcm9ibGVtcwogCkBAIC01NTYsNyArNTg4LDcgQEAKIAogICBGaW5kIG91dCBtb3JlIGFib3V0IHdoaWNoIGxhbmd1YWdlcyB0aGF0IHN1cHBvcnQgY3VybCBkaXJlY3RseSwgYW5kIGhvdyB0bwogICBpbnN0YWxsIGFuZCB1c2UgdGhlbSwgaW4gdGhlIGxpYmN1cmwgc2VjdGlvbiBvZiB0aGUgY3VybCB3ZWIgc2l0ZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsLworICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsLwogCiAgIEFsbCB0aGUgdmFyaW91cyBiaW5kaW5ncyB0byBsaWJjdXJsIGFyZSBtYWRlIGJ5IG90aGVyIHByb2plY3RzIGFuZCBwZW9wbGUsCiAgIG91dHNpZGUgb2YgdGhlIGNVUkwgcHJvamVjdC4gVGhlIGNVUkwgcHJvamVjdCBpdHNlbGYgb25seSBwcm9kdWNlcyBsaWJjdXJsCkBAIC02ODksNyArNzIxLDcgQEAKICAgY2VydGlmaWNhdGUuIFNlcnZlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIGN1cmwKICAgYW5kIGxpYmN1cmwgYW5kIGlzIG9mdGVuIHRoZSByZWFzb24gZm9yIHByb2JsZW1zIGFzIGV4cGxhaW5lZCBpbiBGQVEgZW50cnkKICAgNC4xMiBhbmQgdGhlIFNTTENFUlRTIGRvY3VtZW50Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCkuIFNlcnZlciBjZXJ0aWZpY2F0ZXMgdGhhdCBhcmUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCkuIFNlcnZlciBjZXJ0aWZpY2F0ZXMgdGhhdCBhcmUKICAgInNlbGYtc2lnbmVkIiBvciBvdGhlcndpc2Ugc2lnbmVkIGJ5IGEgQ0EgdGhhdCB5b3UgZG8gbm90IGhhdmUgYSBDQSBjZXJ0CiAgIGZvciwgY2Fubm90IGJlIHZlcmlmaWVkLiBJZiB0aGUgdmVyaWZpY2F0aW9uIGR1cmluZyBhIGNvbm5lY3QgZmFpbHMsIHlvdSBhcmUKICAgcmVmdXNlZCBhY2Nlc3MuIFlvdSB0aGVuIG5lZWQgdG8gZXhwbGljaXRseSBkaXNhYmxlIHRoZSB2ZXJpZmljYXRpb24gdG8KQEAgLTk4MCw3ICsxMDEyLDcgQEAKICAgdGhpcyBjaGVjay4KIAogICBEZXRhaWxzIGFyZSBhbHNvIGluIHRoZSBTU0xDRVJUUyBmaWxlIGluIHRoZSByZWxlYXNlIGFyY2hpdmVzLCBmb3VuZCBvbmxpbmUKLSAgaGVyZTogaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbGNlcnRzLmh0bWwKKyAgaGVyZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sCiAKICAgNC4xMyBXaHkgaXMgY3VybCAtUiBvbiBXaW5kb3dzIG9uZSBob3VyIG9mZj8KIApAQCAtMTA4Nyw3ICsxMTE5LDcgQEAKIAogICBJbiBzdWNoIGNhc2VzLCB0aGUgVENQL0lQIHN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlY3Rpbmcgd2hlbiB0aGUKICAgbmV0d29yayBjb25uZWN0aW9uIGlzIGlycmV2b2NhYmx5IGxvc3QuIFNpbmNlIHdpdGggc29tZSBwcm90b2NvbHMgaXQgaXMKLSAgcGVyZmVjdGx5IGxlZ2FsIGZvciB0aGUgY2xpZW50IHdhaXQgaW5kZWZpbml0ZWx5IGZvciBkYXRhLCB0aGUgc3RhY2sgbWF5CisgIHBlcmZlY3RseSBsZWdhbCBmb3IgdGhlIGNsaWVudCB0byB3YWl0IGluZGVmaW5pdGVseSBmb3IgZGF0YSwgdGhlIHN0YWNrIG1heQogICBuZXZlciByZXBvcnQgYSBwcm9ibGVtLCBhbmQgZXZlbiB3aGVuIGl0IGRvZXMsIGl0IGNhbiB0YWtlIHVwIHRvIDIwIG1pbnV0ZXMKICAgZm9yIGl0IHRvIGRldGVjdCBhbiBpc3N1ZS4gIFRoZSBjdXJsIG9wdGlvbiAtLWtlZXBhbGl2ZS10aW1lIGVuYWJsZXMKICAga2VlcC1hbGl2ZSBzdXBwb3J0IGluIHRoZSBUQ1AvSVAgc3RhY2sgd2hpY2ggbWFrZXMgaXQgcGVyaW9kaWNhbGx5IHByb2JlIHRoZQpAQCAtMTE1MywyNSArMTE4NSw5IEBACiAgIHlvdXIgc3lzdGVtIGhhcyBzdWNoLiAgTm90ZSB0aGF0IHlvdSBtdXN0IG5ldmVyIHNoYXJlIHRoZSBzYW1lIGhhbmRsZSBpbgogICBtdWx0aXBsZSB0aHJlYWRzLgogCi0gIGxpYmN1cmwncyBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lb3V0cyBtaWdodCB1c2Ugc2lnbmFscyAoZGVwZW5kaW5nIG9uIHdoYXQgaXQKLSAgd2FzIGJ1aWx0IHRvIHVzZSBmb3IgbmFtZSByZXNvbHZpbmcpLCBhbmQgc2lnbmFsIGhhbmRsaW5nIGlzIGdlbmVyYWxseSBub3QKLSAgdGhyZWFkLXNhZmUuICBNdWx0aS10aHJlYWRlZCBBcHBsaWNhdGlvbnNzIHRoYXQgY2FsbCBsaWJjdXJsIGZyb20gZGlmZmVyZW50Ci0gIHRocmVhZHMgKG9uIGRpZmZlcmVudCBoYW5kbGVzKSBtaWdodCB3YW50IHRvIHVzZSBDVVJMT1BUX05PU0lHTkFMLCBlLmcuOgotCi0gICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIENVUkxPUFRfTk9TSUdOQUwsIHRydWUpOwotCi0gIElmIHlvdSB1c2UgYSBPcGVuU1NMLXBvd2VyZWQgbGliY3VybCBpbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50LCB5b3UKLSAgbmVlZCB0byBwcm92aWRlIG9uZSBvciB0d28gbG9ja2luZyBmdW5jdGlvbnM6Ci0KLSAgICBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwKLQotICBJZiB5b3UgdXNlIGEgR251VExTLXBvd2VyZWQgbGliY3VybCBpbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50LCB5b3UKLSAgbmVlZCB0byBwcm92aWRlIGxvY2tpbmcgZnVuY3Rpb24ocykgZm9yIGxpYmdjcnlwdCAod2hpY2ggaXMgdXNlZCBieSBHbnVUTFMKLSAgZm9yIHRoZSBjcnlwdG8gZnVuY3Rpb25zKS4KLQotICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDExMTEwMzA4MzMzMC9odHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzL21hbnVhbC9odG1sX25vZGUvTXVsdGlfMDAyZHRocmVhZGVkLWFwcGxpY2F0aW9ucy5odG1sCi0KLSAgTm8gc3BlY2lhbCBsb2NraW5nIGlzIG5lZWRlZCB3aXRoIGEgTlNTLXBvd2VyZWQgbGliY3VybC4gTlNTIGlzIHRocmVhZC1zYWZlLgorICBUaGVyZSBtYXkgYmUgc29tZSBleGNlcHRpb25zIHRvIHRocmVhZCBzYWZldHkgZGVwZW5kaW5nIG9uIGhvdyBsaWJjdXJsIHdhcworICBidWlsdC4gUGxlYXNlIHJldmlldyB0aGUgZ3VpZGVsaW5lcyBmb3IgdGhyZWFkIHNhZmV0eSB0byBsZWFybiBtb3JlOgorICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvdGhyZWFkc2FmZS5odG1sCiAKICAgNS4yIEhvdyBjYW4gSSByZWNlaXZlIGFsbCBkYXRhIGludG8gYSBsYXJnZSBtZW1vcnkgY2h1bms/CiAKQEAgLTEzOTcsNyArMTQxMyw3IEBACiAgIHRvIGRvICJMSVNUIC1hIiBvciBzaW1pbGFyIHRvIHNlZSB0aGVtLgogCiAgIFRoZSBhcHBsaWNhdGlvbiB0aHVzIG5lZWRzIHRvIHBhcnNlIHRoZSBMSVNUIG91dHB1dC4gT25lIHN1Y2ggZXhpc3RpbmcKLSAgbGlzdCBwYXJzZXIgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9jci55cC50by9mdHBwYXJzZS5odG1sICBWZXJzaW9ucyBvZgorICBsaXN0IHBhcnNlciBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jci55cC50by9mdHBwYXJzZS5odG1sICBWZXJzaW9ucyBvZgogICBsaWJjdXJsIHNpbmNlIDcuMjEuMCBhbHNvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHdpbGRjYXJkIHRvCiAgIGRvd25sb2FkIG11bHRpcGxlIGZpbGVzIGZyb20gb25lIEZUUCBkaXJlY3RvcnkuCiAKQEAgLTE1MTYsNyArMTUzMiw3IEBACiAgIG5vdGljZSIgc29tZXdoZXJlLiBNb3N0IHByb2JhYmx5IGxpa2UgaW4gdGhlIGRvY3VtZW50YXRpb24gb3IgaW4gdGhlIHNlY3Rpb24KICAgd2hlcmUgb3RoZXIgdGhpcmQgcGFydHkgZGVwZW5kZW5jaWVzIGFscmVhZHkgYXJlIG1lbnRpb25lZCBhbmQgYWNrbm93bGVkZ2VkLgogCi0gIEFzIGNhbiBiZSBzZWVuIGhlcmU6IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb21wYW5pZXMuaHRtbCBhbmQgZWxzZXdoZXJlLAorICBBcyBjYW4gYmUgc2VlbiBoZXJlOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvbXBhbmllcy5odG1sIGFuZCBlbHNld2hlcmUsCiAgIG1vcmUgYW5kIG1vcmUgY29tcGFuaWVzIGFyZSBkaXNjb3ZlcmluZyB0aGUgcG93ZXIgb2YgbGliY3VybCBhbmQgdGFrZQogICBhZHZhbnRhZ2Ugb2YgaXQgZXZlbiBpbiBjb21tZXJjaWFsIGVudmlyb25tZW50cy4KIApAQCAtMTUzNiw5ICsxNTUyLDcgQEAKIAogICA3LjIgV2hvIHdyb3RlIFBIUC9DVVJMPwogCi0gIFBIUC9DVVJMIGlzIGEgbW9kdWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgcmVndWxhciBQSFAgcGFja2FnZS4gSXQgZGVwZW5kcyBhbmQKLSAgdXNlcyBsaWJjdXJsLCBzbyB5b3UgbmVlZCB0byBoYXZlIGxpYmN1cmwgaW5zdGFsbGVkIHByb3Blcmx5IGZpcnN0IGJlZm9yZQotICBQSFAvQ1VSTCBjYW4gYmUgdXNlZC4gUEhQL0NVUkwgd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IFN0ZXJsaW5nIEh1Z2hlcy4KKyAgUEhQL0NVUkwgd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IFN0ZXJsaW5nIEh1Z2hlcy4KIAogICA3LjMgQ2FuIEkgcGVyZm9ybSBtdWx0aXBsZSByZXF1ZXN0cyB1c2luZyB0aGUgc2FtZSBoYW5kbGU/CiAKQEAgLTE1NDcsNCArMTU2MSwxMCBAQAogICB1bmtub3duIHRvIG1lKS4KIAogICBBZnRlciBhIHRyYW5zZmVyLCB5b3UganVzdCBzZXQgbmV3IG9wdGlvbnMgaW4gdGhlIGhhbmRsZSBhbmQgbWFrZSBhbm90aGVyCi0gIHRyYW5zZmVyLiBUaGlzIHdpbGwgbWFrZSBsaWJjdXJsIHRvIHJlLXVzZSB0aGUgc2FtZSBjb25uZWN0aW9uIGlmIGl0IGNhbi4KKyAgdHJhbnNmZXIuIFRoaXMgd2lsbCBtYWtlIGxpYmN1cmwgcmUtdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gaWYgaXQgY2FuLgorCisgIDcuNCBEb2VzIFBIUC9DVVJMIGhhdmUgZGVwZW5kZW5jaWVzPworCisgIFBIUC9DVVJMIGlzIGEgbW9kdWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgcmVndWxhciBQSFAgcGFja2FnZS4gSXQgZGVwZW5kcyBvbgorICBhbmQgdXNlcyBsaWJjdXJsLCBzbyB5b3UgbmVlZCB0byBoYXZlIGxpYmN1cmwgaW5zdGFsbGVkIHByb3Blcmx5IGJlZm9yZQorICBQSFAvQ1VSTCBjYW4gYmUgdXNlZC4KZGlmZiAtLWdpdCBhL2RvY3MvSElTVE9SWSBiL2RvY3MvSElTVE9SWQppbmRleCBlNzZlNWI5Li5mODc4ZWUxIDEwMDY0NAotLS0gYS9kb2NzL0hJU1RPUlkKKysrIGIvZG9jcy9ISVNUT1JZCkBAIC02NSw3ICs2NSw3IEBACiBNYXksIGZpcnN0IERlYmlhbiBwYWNrYWdlLgogCiBBdWd1c3QsIExEQVA6Ly8gYW5kIEZJTEU6Ly8gc3VwcG9ydCBhZGRlZC4gVGhlIGN1cmwgd2ViIHNpdGUgZ2V0cyAxMzAwIHZpc2l0cwotd2Vla2x5Lgord2Vla2x5LiBNb3ZlZCBzaXRlIHRvIGN1cmwuaGF4eC5udS4KIAogUmVsZWFzZWQgY3VybCA2LjAgaW4gU2VwdGVtYmVyLiAxNTAwMCBsaW5lcyBvZiBjb2RlLgogCkBAIC04MSw2ICs4MSw4IEBACiBvdGhlciBzb2Z0d2FyZSBhbmQgcHJvZ3JhbXMgdG8gZ2V0IGJhc2VkIG9uIGFuZCBwb3dlcmVkIGJ5IGxpYmN1cmwuIEFsbW9zdAogMjAwMDAgbGluZXMgb2YgY29kZS4KIAorSnVuZSAyMDAwOiB0aGUgY3VybCBzaXRlIG1vdmVzIHRvICJjdXJsLmhheHguc2UiCisKIEF1Z3VzdCwgdGhlIGN1cmwgd2ViIHNpdGUgZ2V0cyA0MDAwIHZpc2l0cyB3ZWVrbHkuCiAKIFRoZSBQSFAgZ3V5cyBhZG9wdGVkIGxpYmN1cmwgYWxyZWFkeSB0aGUgc2FtZSBtb250aCwgd2hlbiB0aGUgZmlyc3QgZXZlciB0aGlyZApkaWZmIC0tZ2l0IGEvZG9jcy9IVFRQLUNPT0tJRVMgYi9kb2NzL0hUVFAtQ09PS0lFUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVhYmRkZi4uMDAwMDAwMAotLS0gYS9kb2NzL0hUVFAtQ09PS0lFUworKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1VcGRhdGVkOiBKdWx5IDMsIDIwMTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0KLQotSFRUUCBDb29raWVzCi0KLSAxLiBIVFRQIENvb2tpZXMKLSAxLjEgQ29va2llIG92ZXJ2aWV3Ci0gMS4yIENvb2tpZXMgc2F2ZWQgdG8gZGlzawotIDEuMyBDb29raWVzIHdpdGggY3VybCB0aGUgY29tbWFuZCBsaW5lIHRvb2wKLSAxLjQgQ29va2llcyB3aXRoIGxpYmN1cmwKLSAxLjUgQ29va2llcyB3aXRoIGphdmFzY3JpcHQKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLTEuIEhUVFAgQ29va2llcwotCi0gIDEuMSBDb29raWUgb3ZlcnZpZXcKLQotICBIVFRQIGNvb2tpZXMgYXJlIHBpZWNlcyBvZiAnbmFtZT1jb250ZW50cycgc25pcHBldHMgdGhhdCBhIHNlcnZlciB0ZWxscyB0aGUKLSAgY2xpZW50IHRvIGhvbGQgYW5kIHRoZW4gdGhlIGNsaWVudCBzZW5kcyBiYWNrIHRob3NlIHRoZSBzZXJ2ZXIgb24gc3Vic2VxdWVudAotICByZXF1ZXN0cyB0byB0aGUgc2FtZSBkb21haW5zL3BhdGhzIGZvciB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNldC4KLQotICBDb29raWVzIGFyZSBlaXRoZXIgInNlc3Npb24gY29va2llcyIgd2hpY2ggdHlwaWNhbGx5IGFyZSBmb3Jnb3R0ZW4gd2hlbiB0aGUKLSAgc2Vzc2lvbiBpcyBvdmVyIHdoaWNoIGlzIG9mdGVuIHRyYW5zbGF0ZWQgdG8gZXF1YWwgd2hlbiBicm93c2VyIHF1aXRzLCBvcgotICB0aGUgY29va2llcyBhcmVuJ3Qgc2Vzc2lvbiBjb29raWVzIHRoZXkgaGF2ZSBleHBpcmF0aW9uIGRhdGVzIGFmdGVyIHdoaWNoCi0gIHRoZSBjbGllbnQgd2lsbCB0aHJvdyB0aGVtIGF3YXkuCi0KLSAgQ29va2llcyBhcmUgc2V0IHRvIHRoZSBjbGllbnQgd2l0aCB0aGUgU2V0LUNvb2tpZTogaGVhZGVyIGFuZCBhcmUgc2VudCB0bwotICBzZXJ2ZXJzIHdpdGggdGhlIENvb2tpZTogaGVhZGVyLgotCi0gIEZvciBhIHZlcnkgbG9uZyB0aW1lLCB0aGUgb25seSBzcGVjIGV4cGxhaW5pbmcgaG93IHRvIHVzZSBjb29raWVzIHdhcyB0aGUKLSAgb3JpZ2luYWwgTmV0c2NhcGUgc3BlYyBmcm9tIDE5OTQ6IGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL2Nvb2tpZV9zcGVjLmh0bWwKLQotICBJbiAyMDExLCBSRkM2MjY1IChodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNjI2NS50eHQpIHdhcyBmaW5hbGx5IHB1Ymxpc2hlZAotICBhbmQgZGV0YWlscyBob3cgY29va2llcyB3b3JrIHdpdGhpbiBIVFRQLgotCi0gIDEuMiBDb29raWVzIHNhdmVkIHRvIGRpc2sKLQotICBOZXRzY2FwZSBvbmNlIGNyZWF0ZWQgYSBmaWxlIGZvcm1hdCBmb3Igc3RvcmluZyBjb29raWVzIG9uIGRpc2sgc28gdGhhdCB0aGV5Ci0gIHdvdWxkIHN1cnZpdmUgYnJvd3NlciByZXN0YXJ0cy4gY3VybCBhZG9wdGVkIHRoYXQgZmlsZSBmb3JtYXQgdG8gYWxsb3cKLSAgc2hhcmluZyB0aGUgY29va2llcyB3aXRoIGJyb3dzZXJzLCBvbmx5IHRvIHNlZSBicm93c2VycyBtb3ZlIGF3YXkgZnJvbSB0aGF0Ci0gIGZvcm1hdC4gTW9kZXJuIGJyb3dzZXJzIG5vIGxvbmdlciB1c2UgaXQsIHdoaWxlIGN1cmwgc3RpbGwgZG9lcy4KLQotICBUaGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0IHN0b3JlcyBvbmUgY29va2llIHBlciBwaHlzaWNhbCBsaW5lIGluIHRoZQotICBmaWxlIHdpdGggYSBidW5jaCBvZiBhc3NvY2lhdGVkIG1ldGEgZGF0YSwgZWFjaCBmaWVsZCBzZXBhcmF0ZWQgd2l0aAotICBUQUIuIFRoYXQgZmlsZSBpcyBjYWxsZWQgdGhlIGNvb2tpZWphciBpbiBjdXJsIHRlcm1pbm9sb2d5LgotCi0gIFdoZW4gbGliY3VybCBzYXZlcyBhIGNvb2tpZWphciwgaXQgY3JlYXRlcyBhIGZpbGUgaGVhZGVyIG9mIGl0cyBvd24gaW4gd2hpY2gKLSAgdGhlcmUgaXMgYSBVUkwgbWVudGlvbiB0aGF0IHdpbGwgbGluayB0byB0aGUgd2ViIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudC4KLQotICAxLjMgQ29va2llcyB3aXRoIGN1cmwgdGhlIGNvbW1hbmQgbGluZSB0b29sCi0KLSAgY3VybCBoYXMgYSBmdWxsIGNvb2tpZSAiZW5naW5lIiBidWlsdCBpbi4gSWYgeW91IGp1c3QgYWN0aXZhdGUgaXQsIHlvdSBjYW4KLSAgaGF2ZSBjdXJsIHJlY2VpdmUgYW5kIHNlbmQgY29va2llcyBleGFjdGx5IGFzIG1hbmRhdGVkIGluIHRoZSBzcGVjcy4KLQotICBDb21tYW5kIGxpbmUgb3B0aW9uczoKLQotICAtYiwgLS1jb29raWUKLQotICAgIHRlbGwgY3VybCBhIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gYW5kIHN0YXJ0IHRoZSBjb29raWUgZW5naW5lLCBvciBpZgotICAgIGl0IGlzbid0IGEgZmlsZSBpdCB3aWxsIHBhc3Mgb24gdGhlIGdpdmVuIHN0cmluZy4gLWIgbmFtZT12YXIgd29ya3MgYW5kIHNvCi0gICAgZG9lcyAtYiBjb29raWVmaWxlLgotCi0gIC1qLCAtLWp1bmstc2Vzc2lvbi1jb29raWVzCi0KLSAgICB3aGVuIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAtYiwgaXQgd2lsbCBza2lwIGFsbCAic2Vzc2lvbiBjb29raWVzIiBvbgotICAgIGxvYWQgc28gYXMgdG8gYXBwZWFyIHRvIHN0YXJ0IGEgbmV3IGNvb2tpZSBzZXNzaW9uLgotCi0gIC1jLCAtLWNvb2tpZS1qYXIKLQotICAgIHRlbGwgY3VybCB0byBzdGFydCB0aGUgY29va2llIGVuZ2luZSBhbmQgd3JpdGUgY29va2llcyB0byB0aGUgZ2l2ZW4gZmlsZQotICAgIGFmdGVyIHRoZSByZXF1ZXN0KHMpCi0KLSAgMS40IENvb2tpZXMgd2l0aCBsaWJjdXJsCi0KLSAgbGliY3VybCBvZmZlcnMgc2V2ZXJhbCB3YXlzIHRvIGVuYWJsZSBhbmQgaW50ZXJmYWNlIHRoZSBjb29raWUgZW5naW5lLiBUaGVzZQotICBvcHRpb25zIGFyZSB0aGUgb25lcyBwcm92aWRlZCBieSB0aGUgbmF0aXZlIEFQSS4gbGliY3VybCBiaW5kaW5ncyBtYXkgb2ZmZXIKLSAgYWNjZXNzIHRvIHRoZW0gdXNpbmcgb3RoZXIgbWVhbnMuCi0KLSAgQ1VSTE9QVF9DT09LSUUKLQotICAgIElzIHVzZWQgd2hlbiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSBleGFjdCBjb250ZW50cyBvZiBhIGNvb2tpZSBoZWFkZXIgdG8KLSAgICBzZW5kIHRvIHRoZSBzZXJ2ZXIuCi0KLSAgQ1VSTE9QVF9DT09LSUVGSUxFCi0KLSAgICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB0byByZWFkIHRoZSBpbml0aWFsIHNldCBvZgotICAgIGNvb2tpZXMgZnJvbSB0aGUgZ2l2ZW4gZmlsZS4gUmVhZC1vbmx5LgotCi0gIENVUkxPUFRfQ09PS0lFSkFSCi0KLSAgICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB3aGVuIHRoZSBlYXN5IGhhbmRsZSBpcwotICAgIGNsb3NlZCBzYXZlIGFsbCBrbm93biBjb29raWVzIHRvIHRoZSBnaXZlbiBjb29raWVqYXIgZmlsZS4gV3JpdGUtb25seS4KLQotICBDVVJMT1BUX0NPT0tJRUxJU1QKLQotICAgIFByb3ZpZGUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgY29va2llIHRvIGFkZCB0byB0aGUgaW50ZXJuYWwKLSAgICBzdG9yYWdlIG9mIGNvb2tpZXMuIFBhc3MgaW4gdGhlIGNvb2tpZSBhcyBhIEhUVFAgaGVhZGVyIHdpdGggYWxsIHRoZQotICAgIGRldGFpbHMgc2V0LCBvciBwYXNzIGluIGEgbGluZSBmcm9tIGEgbmV0c2NhcGUgY29va2llIGZpbGUuIFRoaXMgb3B0aW9uCi0gICAgY2FuIGFsc28gYmUgdXNlZCB0byBmbHVzaCB0aGUgY29va2llcyBldGMuCi0gICAgCi0gIENVUkxJTkZPX0NPT0tJRUxJU1QKLQotICAgIEV4dHJhY3QgY29va2llIGluZm9ybWF0aW9uIGZyb20gdGhlIGludGVybmFsIGNvb2tpZSBzdG9yYWdlIGFzIGEgbGlua2VkCi0gICAgbGlzdC4KLQotICAxLjUgQ29va2llcyB3aXRoIGphdmFzY3JpcHQKLQotICBUaGVzZSBkYXlzIGEgbG90IG9mIHRoZSB3ZWIgaXMgYnVpbHQgdXAgYnkgamF2YXNjcmlwdC4gVGhlIHdlYmJyb3dzZXIgbG9hZHMKLSAgY29tcGxldGUgcHJvZ3JhbXMgdGhhdCByZW5kZXIgdGhlIHBhZ2UgeW91IHNlZS4gVGhlc2UgamF2YXNjcmlwdCBwcm9ncmFtcwotICBjYW4gYWxzbyBzZXQgYW5kIGFjY2VzcyBjb29raWVzLgotCi0gIFNpbmNlIGN1cmwgYW5kIGxpYmN1cmwgYXJlIHBsYWluIEhUVFAgY2xpZW50cyB3aXRob3V0IGFueSBrbm93bGVkZ2Ugb2Ygb3IKLSAgY2FwYWJpbGl0eSB0byBoYW5kbGUgamF2YXNjcmlwdCwgc3VjaCBjb29raWVzIHdpbGwgbm90IGJlIGRldGVjdGVkIG9yIHVzZWQuCi0KLSAgT2Z0ZW4sIGlmIHlvdSB3YW50IHRvIG1pbWljIHdoYXQgYSBicm93c2VyIGRvZXMgb24gc3VjaCB3ZWIgc2l0ZXMsIHlvdSBjYW4KLSAgcmVjb3JkIHdlYiBicm93c2VyIEhUVFAgdHJhZmZpYyB3aGVuIHVzaW5nIHN1Y2ggYSBzaXRlIGFuZCB0aGVuIHJlcGVhdCB0aGUKLSAgY29va2llIG9wZXJhdGlvbnMgdXNpbmcgY3VybCBvciBsaWJjdXJsLgpkaWZmIC0tZ2l0IGEvZG9jcy9IVFRQLUNPT0tJRVMubWQgYi9kb2NzL0hUVFAtQ09PS0lFUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWIyODM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9IVFRQLUNPT0tJRVMubWQKQEAgLTAsMCArMSwxMDQgQEAKKyMgSFRUUCBDb29raWVzCisKKyMjIENvb2tpZSBvdmVydmlldworCisgIENvb2tpZXMgYXJlIGBuYW1lPWNvbnRlbnRzYCBwYWlycyB0aGF0IGEgSFRUUCBzZXJ2ZXIgdGVsbHMgdGhlIGNsaWVudCB0bworICBob2xkIGFuZCB0aGVuIHRoZSBjbGllbnQgc2VuZHMgYmFjayB0aG9zZSB0byB0aGUgc2VydmVyIG9uIHN1YnNlcXVlbnQKKyAgcmVxdWVzdHMgdG8gdGhlIHNhbWUgZG9tYWlucyBhbmQgcGF0aHMgZm9yIHdoaWNoIHRoZSBjb29raWVzIHdlcmUgc2V0LgorCisgIENvb2tpZXMgYXJlIGVpdGhlciAic2Vzc2lvbiBjb29raWVzIiB3aGljaCB0eXBpY2FsbHkgYXJlIGZvcmdvdHRlbiB3aGVuIHRoZQorICBzZXNzaW9uIGlzIG92ZXIgd2hpY2ggaXMgb2Z0ZW4gdHJhbnNsYXRlZCB0byBlcXVhbCB3aGVuIGJyb3dzZXIgcXVpdHMsIG9yCisgIHRoZSBjb29raWVzIGFyZW4ndCBzZXNzaW9uIGNvb2tpZXMgdGhleSBoYXZlIGV4cGlyYXRpb24gZGF0ZXMgYWZ0ZXIgd2hpY2gKKyAgdGhlIGNsaWVudCB3aWxsIHRocm93IHRoZW0gYXdheS4KKworICBDb29raWVzIGFyZSBzZXQgdG8gdGhlIGNsaWVudCB3aXRoIHRoZSBTZXQtQ29va2llOiBoZWFkZXIgYW5kIGFyZSBzZW50IHRvCisgIHNlcnZlcnMgd2l0aCB0aGUgQ29va2llOiBoZWFkZXIuCisKKyAgRm9yIGEgdmVyeSBsb25nIHRpbWUsIHRoZSBvbmx5IHNwZWMgZXhwbGFpbmluZyBob3cgdG8gdXNlIGNvb2tpZXMgd2FzIHRoZQorICBvcmlnaW5hbCBbTmV0c2NhcGUgc3BlYyBmcm9tIDE5OTRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL3JmYy9jb29raWVfc3BlYy5odG1sKS4KKworICBJbiAyMDExLCBbUkZDNjI2NV0oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzYyNjUudHh0KSB3YXMgZmluYWxseQorICBwdWJsaXNoZWQgYW5kIGRldGFpbHMgaG93IGNvb2tpZXMgd29yayB3aXRoaW4gSFRUUC4KKworIyMgQ29va2llcyBzYXZlZCB0byBkaXNrCisKKyAgTmV0c2NhcGUgb25jZSBjcmVhdGVkIGEgZmlsZSBmb3JtYXQgZm9yIHN0b3JpbmcgY29va2llcyBvbiBkaXNrIHNvIHRoYXQgdGhleQorICB3b3VsZCBzdXJ2aXZlIGJyb3dzZXIgcmVzdGFydHMuIGN1cmwgYWRvcHRlZCB0aGF0IGZpbGUgZm9ybWF0IHRvIGFsbG93CisgIHNoYXJpbmcgdGhlIGNvb2tpZXMgd2l0aCBicm93c2Vycywgb25seSB0byBzZWUgYnJvd3NlcnMgbW92ZSBhd2F5IGZyb20gdGhhdAorICBmb3JtYXQuIE1vZGVybiBicm93c2VycyBubyBsb25nZXIgdXNlIGl0LCB3aGlsZSBjdXJsIHN0aWxsIGRvZXMuCisKKyAgVGhlIG5ldHNjYXBlIGNvb2tpZSBmaWxlIGZvcm1hdCBzdG9yZXMgb25lIGNvb2tpZSBwZXIgcGh5c2ljYWwgbGluZSBpbiB0aGUKKyAgZmlsZSB3aXRoIGEgYnVuY2ggb2YgYXNzb2NpYXRlZCBtZXRhIGRhdGEsIGVhY2ggZmllbGQgc2VwYXJhdGVkIHdpdGgKKyAgVEFCLiBUaGF0IGZpbGUgaXMgY2FsbGVkIHRoZSBjb29raWVqYXIgaW4gY3VybCB0ZXJtaW5vbG9neS4KKworICBXaGVuIGxpYmN1cmwgc2F2ZXMgYSBjb29raWVqYXIsIGl0IGNyZWF0ZXMgYSBmaWxlIGhlYWRlciBvZiBpdHMgb3duIGluIHdoaWNoCisgIHRoZXJlIGlzIGEgVVJMIG1lbnRpb24gdGhhdCB3aWxsIGxpbmsgdG8gdGhlIHdlYiB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKKyMjIENvb2tpZXMgd2l0aCBjdXJsIHRoZSBjb21tYW5kIGxpbmUgdG9vbAorCisgIGN1cmwgaGFzIGEgZnVsbCBjb29raWUgImVuZ2luZSIgYnVpbHQgaW4uIElmIHlvdSBqdXN0IGFjdGl2YXRlIGl0LCB5b3UgY2FuCisgIGhhdmUgY3VybCByZWNlaXZlIGFuZCBzZW5kIGNvb2tpZXMgZXhhY3RseSBhcyBtYW5kYXRlZCBpbiB0aGUgc3BlY3MuCisKKyAgQ29tbWFuZCBsaW5lIG9wdGlvbnM6CisKKyAgYC1iLCAtLWNvb2tpZWAKKworICB0ZWxsIGN1cmwgYSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIGFuZCBzdGFydCB0aGUgY29va2llIGVuZ2luZSwgb3IgaWYgaXQKKyAgaXNuJ3QgYSBmaWxlIGl0IHdpbGwgcGFzcyBvbiB0aGUgZ2l2ZW4gc3RyaW5nLiAtYiBuYW1lPXZhciB3b3JrcyBhbmQgc28gZG9lcworICAtYiBjb29raWVmaWxlLgorCisgIGAtaiwgLS1qdW5rLXNlc3Npb24tY29va2llc2AKKworICB3aGVuIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAtYiwgaXQgd2lsbCBza2lwIGFsbCAic2Vzc2lvbiBjb29raWVzIiBvbiBsb2FkCisgIHNvIGFzIHRvIGFwcGVhciB0byBzdGFydCBhIG5ldyBjb29raWUgc2Vzc2lvbi4KKworICBgLWMsIC0tY29va2llLWphcmAKKworICB0ZWxsIGN1cmwgdG8gc3RhcnQgdGhlIGNvb2tpZSBlbmdpbmUgYW5kIHdyaXRlIGNvb2tpZXMgdG8gdGhlIGdpdmVuIGZpbGUKKyAgYWZ0ZXIgdGhlIHJlcXVlc3QocykKKworIyMgQ29va2llcyB3aXRoIGxpYmN1cmwKKworICBsaWJjdXJsIG9mZmVycyBzZXZlcmFsIHdheXMgdG8gZW5hYmxlIGFuZCBpbnRlcmZhY2UgdGhlIGNvb2tpZSBlbmdpbmUuIFRoZXNlCisgIG9wdGlvbnMgYXJlIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHRoZSBuYXRpdmUgQVBJLiBsaWJjdXJsIGJpbmRpbmdzIG1heSBvZmZlcgorICBhY2Nlc3MgdG8gdGhlbSB1c2luZyBvdGhlciBtZWFucy4KKworICBgQ1VSTE9QVF9DT09LSUVgCisKKyAgSXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhlIGV4YWN0IGNvbnRlbnRzIG9mIGEgY29va2llIGhlYWRlciB0bworICBzZW5kIHRvIHRoZSBzZXJ2ZXIuCisKKyAgYENVUkxPUFRfQ09PS0lFRklMRWAKKworICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB0byByZWFkIHRoZSBpbml0aWFsIHNldCBvZgorICBjb29raWVzIGZyb20gdGhlIGdpdmVuIGZpbGUuIFJlYWQtb25seS4KKworICBgQ1VSTE9QVF9DT09LSUVKQVJgCisKKyAgVGVsbCBsaWJjdXJsIHRvIGFjdGl2YXRlIHRoZSBjb29raWUgZW5naW5lLCBhbmQgd2hlbiB0aGUgZWFzeSBoYW5kbGUgaXMKKyAgY2xvc2VkIHNhdmUgYWxsIGtub3duIGNvb2tpZXMgdG8gdGhlIGdpdmVuIGNvb2tpZWphciBmaWxlLiBXcml0ZS1vbmx5LgorCisgIGBDVVJMT1BUX0NPT0tJRUxJU1RgCisKKyAgUHJvdmlkZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBjb29raWUgdG8gYWRkIHRvIHRoZSBpbnRlcm5hbAorICBzdG9yYWdlIG9mIGNvb2tpZXMuIFBhc3MgaW4gdGhlIGNvb2tpZSBhcyBhIEhUVFAgaGVhZGVyIHdpdGggYWxsIHRoZSBkZXRhaWxzCisgIHNldCwgb3IgcGFzcyBpbiBhIGxpbmUgZnJvbSBhIG5ldHNjYXBlIGNvb2tpZSBmaWxlLiBUaGlzIG9wdGlvbiBjYW4gYWxzbyBiZQorICB1c2VkIHRvIGZsdXNoIHRoZSBjb29raWVzIGV0Yy4KKworICBgQ1VSTElORk9fQ09PS0lFTElTVGAKKworICBFeHRyYWN0IGNvb2tpZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnRlcm5hbCBjb29raWUgc3RvcmFnZSBhcyBhIGxpbmtlZAorICBsaXN0LgorCisjIyBDb29raWVzIHdpdGggamF2YXNjcmlwdAorCisgIFRoZXNlIGRheXMgYSBsb3Qgb2YgdGhlIHdlYiBpcyBidWlsdCB1cCBieSBqYXZhc2NyaXB0LiBUaGUgd2ViYnJvd3NlciBsb2FkcworICBjb21wbGV0ZSBwcm9ncmFtcyB0aGF0IHJlbmRlciB0aGUgcGFnZSB5b3Ugc2VlLiBUaGVzZSBqYXZhc2NyaXB0IHByb2dyYW1zCisgIGNhbiBhbHNvIHNldCBhbmQgYWNjZXNzIGNvb2tpZXMuCisKKyAgU2luY2UgY3VybCBhbmQgbGliY3VybCBhcmUgcGxhaW4gSFRUUCBjbGllbnRzIHdpdGhvdXQgYW55IGtub3dsZWRnZSBvZiBvcgorICBjYXBhYmlsaXR5IHRvIGhhbmRsZSBqYXZhc2NyaXB0LCBzdWNoIGNvb2tpZXMgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgb3IgdXNlZC4KKworICBPZnRlbiwgaWYgeW91IHdhbnQgdG8gbWltaWMgd2hhdCBhIGJyb3dzZXIgZG9lcyBvbiBzdWNoIHdlYiBzaXRlcywgeW91IGNhbgorICByZWNvcmQgd2ViIGJyb3dzZXIgSFRUUCB0cmFmZmljIHdoZW4gdXNpbmcgc3VjaCBhIHNpdGUgYW5kIHRoZW4gcmVwZWF0IHRoZQorICBjb29raWUgb3BlcmF0aW9ucyB1c2luZyBjdXJsIG9yIGxpYmN1cmwuCmRpZmYgLS1naXQgYS9kb2NzL0hUVFAyLm1kIGIvZG9jcy9IVFRQMi5tZAppbmRleCBiNGUyOTgzLi5jYzVhNWIzIDEwMDY0NAotLS0gYS9kb2NzL0hUVFAyLm1kCisrKyBiL2RvY3MvSFRUUDIubWQKQEAgLTIsMTIgKzIsMTMgQEAKID09PT09PT09PT09PT09PT0KIAogW0hUVFAvMiBTcGVjXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzU0MC50eHQpCi1baHR0cDIgZXhwbGFpbmVkXShodHRwOi8vZGFuaWVsLmhheHguc2UvaHR0cDIvKQorW2h0dHAyIGV4cGxhaW5lZF0oaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9odHRwMi8pCiAKIEJ1aWxkIHByZXJlcXVpc2l0ZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLSBuZ2h0dHAyCi0gIC0gT3BlblNTTCwgTlNTLCBHbnV0VExTIG9yIFBvbGFyU1NMIHdpdGggYSBuZXcgZW5vdWdoIHZlcnNpb24KKyAgLSBPcGVuU1NMLCBsaWJyZXNzbCwgQm9yaW5nU1NMLCBOU1MsIEdudXRUTFMsIG1iZWRUTFMsIHdvbGZTU0wgb3IgU0NoYW5uZWwKKyAgICB3aXRoIGEgbmV3IGVub3VnaCB2ZXJzaW9uLgogCiBbbmdodHRwMl0oaHR0cHM6Ly9uZ2h0dHAyLm9yZy8pCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNiwyMyArMzcsMzIgQEAKIElmIGBDVVJMT1BUX0hUVFBfVkVSU0lPTmAgaXMgc2V0IHRvIGBDVVJMX0hUVFBfVkVSU0lPTl8yXzBgLCBsaWJjdXJsIHdpbGwgdXNlCiBBTFBOIChvciBOUE4pIHRvIG5lZ290aWF0ZSB3aGljaCBwcm90b2NvbCB0byBjb250aW51ZSB3aXRoLiBQb3NzaWJseSBpbnRyb2R1Y2UKIGFuIG9wdGlvbiB0aGF0IHdpbGwgY2F1c2UgbGliY3VybCB0byBmYWlsIGlmIG5vdCBwb3NzaWJsZSB0byB1c2UgSFRUUC8yLgotQ29uc2lkZXIgb3B0aW9ucyB0byBleHBsaWNpdGx5IGRpc2FibGUgQUxQTiBhbmQvb3IgTlBOLgorCitgQ1VSTF9IVFRQX1ZFUlNJT05fMlRMU2Agd2FzIGFkZGVkIGluIDcuNDcuMCBhcyBhIHdheSB0byBhc2sgbGliY3VybCB0byBwcmVmZXIKK0hUVFAvMiBmb3IgSFRUUFMgYnV0IHN0aWNrIHRvIDEuMSBieSBkZWZhdWx0IGZvciBwbGFpbiBvbGQgSFRUUCBjb25uZWN0aW9ucy4KIAogQUxQTiBpcyB0aGUgVExTIGV4dGVuc2lvbiB0aGF0IEhUVFAvMiBpcyBleHBlY3RlZCB0byB1c2UuIFRoZSBOUE4gZXh0ZW5zaW9uIGlzCiBmb3IgYSBzaW1pbGFyIHB1cnBvc2UsIHdhcyBtYWRlIHByaW9yIHRvIEFMUE4gYW5kIGlzIHVzZWQgZm9yIFNQRFkgc28gZWFybHkKIEhUVFAvMiBzZXJ2ZXJzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBOUE4gYmVmb3JlIEFMUE4gc3VwcG9ydCBpcyB3aWRlc3ByZWFkLgogCitgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE5gIGFuZCBgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTmAgYXJlIG9mZmVyZWQgdG8gYWxsb3cKK2FwcGxpY2F0aW9ucyB0byBleHBsaWNpdGx5IGRpc2FibGUgQUxQTiBvciBOUE4uCisKIFNTTCBsaWJzCiAtLS0tLS0tLQogCiBUaGUgY2hhbGxlbmdlIGlzIHRoZSBBTFBOIGFuZCBOUE4gc3VwcG9ydCBhbmQgYWxsIG91ciBkaWZmZXJlbnQgU1NMCi1iYWNrZW5kcy4gWW91IG1heSBuZWVkIGEgZmFpcmx5IHVwZGF0ZWQgU1NMIGxpYnJhcnkgdmVyc2lvbiBmb3IgaXQgdG8KLXByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBUTFMgZmVhdHVyZXMuIFJpZ2h0IG5vdyB3ZSBzdXBwb3J0OgorYmFja2VuZHMuIFlvdSBtYXkgbmVlZCBhIGZhaXJseSB1cGRhdGVkIFNTTCBsaWJyYXJ5IHZlcnNpb24gZm9yIGl0IHRvIHByb3ZpZGUKK3RoZSBuZWNlc3NhcnkgVExTIGZlYXR1cmVzLiBSaWdodCBub3cgd2Ugc3VwcG9ydDoKIAotICAtIE9wZW5TU0w6ICBBTFBOIGFuZCBOUE4KLSAgLSBOU1M6ICAgICAgQUxQTiBhbmQgTlBOCi0gIC0gR251VExTOiAgIEFMUE4KLSAgLSBQb2xhclNTTDogQUxQTgorICAtIE9wZW5TU0w6ICAgQUxQTiBhbmQgTlBOCisgIC0gbGlicmVzc2w6ICBBTFBOIGFuZCBOUE4KKyAgLSBCb3JpbmdTU0w6IEFMUE4gYW5kIE5QTgorICAtIE5TUzogICAgICAgQUxQTiBhbmQgTlBOCisgIC0gR251VExTOiAgICBBTFBOCisgIC0gbWJlZFRMUzogICBBTFBOCisgIC0gU0NoYW5uZWw6ICBBTFBOCisgIC0gd29sZlNTTDogICBBTFBOCiAKIE11bHRpcGxleGluZwogLS0tLS0tLS0tLS0tCkBAIC04NCw3ICs5NCwxMiBAQAogY3VybCB0b29sCiAtLS0tLS0tLS0KIAotY3VybCBvZmZlcnMgdGhlIGAtLWh0dHAyYCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGVuYWJsZSB1c2Ugb2YgSFRUUC8yCitjdXJsIG9mZmVycyB0aGUgYC0taHR0cDJgIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxlIHVzZSBvZiBIVFRQLzIuCisKK2N1cmwgb2ZmZXJzIHRoZSBgLS1odHRwMi1wcmlvci1rbm93bGVkZ2VgIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxlIHVzZSBvZiAKK0hUVFAvMiB3aXRob3V0IEhUVFAvMS4xIFVwZ3JhZGUuCisKK1NpbmNlIDcuNDcuMCwgdGhlIGN1cmwgdG9vbCBlbmFibGVzIEhUVFAvMiBieSBkZWZhdWx0IGZvciBIVFRQUyBjb25uZWN0aW9ucy4KIAogSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTUsMTMgKzExMCw0IEBACiBjbGllbnQgY2FuIHVzZSB0aGF0IGhpbnQgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gYXN5bmNocm9ub3VzbHkuICBGb3IKIGxpYmN1cmwsIHdlIG1heSBpbnRyb2R1Y2UgYSB3YXkgdG8gYnJpbmcgc3VjaCBjbHVlcyB0byB0aGUgYXBwbGljYXRvbiBhbmQvb3IKIGxldCBhIHN1YnNlcXVlbnQgcmVxdWVzdCB1c2UgdGhlIGFsdGVybmF0ZSByb3V0ZQotYXV0b21hdGljYWxseS4gW1NwZWNdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtYWx0LXN2Yy0wNSkKLQotVE9ETwotLS0tLQotCi0gIC0gUHJvdmlkZSBBUEkgdG8gc2V0IHByaW9yaXRpZXMgLyBkZXBlbmRlbmNpZXMgb2YgaW5kaXZpZHVhbCBzdHJlYW1zCi0KLSAgLSBJbXBsZW1lbnQgInByaW9yLWtub3dsZWRnZSIgSFRUUC8yIGNvbm5lY2l0b25zIG92ZXIgY2xlYXIgdGV4dCBzbyB0aGF0Ci0gICAgY3VybCBjYW4gY29ubmVjdCB3aXRoIEhUVFAvMiBhdCBvbmNlIHdpdGhvdXQgMS4xK1VwZ3JhZGUuCi0KK2F1dG9tYXRpY2FsbHkuIFtTcGVjXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWFsdC1zdmMtMTQpCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwgYi9kb2NzL0lOU1RBTEwKaW5kZXggNDU3MDMxOC4uMmUxMDc1YiAxMDA2NDQKLS0tIGEvZG9jcy9JTlNUQUxMCisrKyBiL2RvY3MvSU5TVEFMTApAQCAtNDcxLDYgKzQ3MSwxNSBAQAogICAgYWRkICctRENVUkxfU1RBVElDTElCJyB0byB5b3VyIENGTEFHUy4gIE90aGVyd2lzZSB0aGUgbGlua2VyIHdpbGwgbG9vayBmb3IKICAgIGR5bmFtaWMgaW1wb3J0IHN5bWJvbHMuCiAKKyAgIExlZ2FjeSBXaW5kb3dzIGFuZCBTU0wKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgV2luU1NMIChzcGVjaWZpY2FsbHkgU0NoYW5uZWwgZnJvbSBXaW5kb3dzIFNTUEkpLCBpcyB0aGUgbmF0aXZlIFNTTCBsaWJyYXJ5CisgICBpbiBXaW5kb3dzLiBIb3dldmVyLCBXaW5TU0wgaW4gV2luZG93cyA8PSBYUCBpcyB1bmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXJzCisgICB0aGF0IG5vIGxvbmdlciBzdXBwb3J0IHRoZSBsZWdhY3kgaGFuZHNoYWtlcyBhbmQgYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlCisgICB2ZXJzaW9ucy4gSWYgeW91IHdpbGwgYmUgdXNpbmcgY3VybCBpbiBvbmUgb2YgdGhvc2UgZWFybGllciB2ZXJzaW9ucyBvZgorICAgV2luZG93cyB5b3Ugc2hvdWxkIGNob29zZSBhbm90aGVyIFNTTCBiYWNrZW5kIHN1Y2ggYXMgT3BlblNTTC4KKwogQXBwbGUgaU9TIGFuZCBNYWMgT1MgWAogPT09PT09PT09PT09PT09PT09PT09PQogCkBAIC02OTcsNyArNzA2LDcgQEAKICAgIEJ1aWxkcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgOCB0aW1lcyBhIGRheSBmcm9tIGN1cnJlbnQgZ2l0IGFyZSBoZXJlOgogICAgaHR0cDovL3d3dy5na253Lm5ldC9taXJyb3IvY3VybC9hdXRvYnVpbGRzLwogICAgdGhlIHN0YXR1cyBvZiB0aGVzZSBidWlsZHMgY2FuIGJlIHZpZXdlZCBhdCB0aGUgYXV0b2J1aWxkIHRhYmxlOgotICAgaHR0cDovL2N1cmwuaGF4eC5zZS9kZXYvYnVpbGRzLmh0bWwKKyAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2Rldi9idWlsZHMuaHRtbAogCiBlQ29zCiA9PT09CkBAIC05NDEsOSArOTUwLDEwIEBACiAgICBpbXBvcnRhbnQgZmFjdG9yLiAgRmlyc3QsIGJlIHN1cmUgdG8gc2V0IHRoZSBDRkxBR1MgdmFyaWFibGUgd2hlbgogICAgY29uZmlndXJpbmcgd2l0aCBhbnkgcmVsZXZhbnQgY29tcGlsZXIgb3B0aW1pemF0aW9uIGZsYWdzIHRvIHJlZHVjZSB0aGUKICAgIHNpemUgb2YgdGhlIGJpbmFyeS4gIEZvciBnY2MsIHRoaXMgd291bGQgbWVhbiBhdCBtaW5pbXVtIHRoZSAtT3Mgb3B0aW9uLAotICAgYW5kIHBvdGVudGlhbGx5IHRoZSAtbWFyY2g9WCBhbmQgLW1keW5hbWljLW5vLXBpYyBvcHRpb25zIGFzIHdlbGwsIGUuZy4KKyAgIGFuZCBwb3RlbnRpYWxseSB0aGUgLW1hcmNoPVgsIC1tZHluYW1pYy1uby1waWMgYW5kIC1mbHRvIG9wdGlvbnMgYXMgd2VsbCwKKyAgIGUuZy4KIAotICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSctT3MnIC4uLgorICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSctT3MnIExERkxBR1M9Jy1XbCwtQnN5bWJvbGljJy4uLgogCiAgICBOb3RlIHRoYXQgbmV3ZXIgY29tcGlsZXJzIG9mdGVuIHByb2R1Y2Ugc21hbGxlciBjb2RlIHRoYW4gb2xkZXIgdmVyc2lvbnMKICAgIGR1ZSB0byBpbXByb3ZlZCBvcHRpbWl6YXRpb24uCkBAIC05NjEsNyArOTcxLDkgQEAKICAgICAgLS1kaXNhYmxlLWlwdjYgKGRpc2FibGVzIHN1cHBvcnQgZm9yIElQdjYpCiAgICAgIC0tZGlzYWJsZS1tYW51YWwgKGRpc2FibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBkb2N1bWVudGF0aW9uKQogICAgICAtLWRpc2FibGUtcHJveHkgKGRpc2FibGVzIHN1cHBvcnQgZm9yIEhUVFAgYW5kIFNPQ0tTIHByb3hpZXMpCisgICAgIC0tZGlzYWJsZS11bml4LXNvY2tldHMgKGRpc2FibGVzIHN1cHBvcnQgZm9yIFVOSVggc29ja2V0cykKICAgICAgLS1kaXNhYmxlLXZlcmJvc2UgKGVsaW1pbmF0ZXMgZGVidWdnaW5nIHN0cmluZ3MgYW5kIGVycm9yIGNvZGUgc3RyaW5ncykKKyAgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1zeW1ib2xzIChkaXNhYmxlcyBzdXBwb3J0IGZvciB2ZXJzaW9uZWQgc3ltYm9scykKICAgICAgLS1lbmFibGUtaGlkZGVuLXN5bWJvbHMgKGVsaW1pbmF0ZXMgdW5uZWVkZWQgc3ltYm9scyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkpCiAgICAgIC0td2l0aG91dC1saWJpZG4gKGRpc2FibGVzIHN1cHBvcnQgZm9yIHRoZSBsaWJpZG4gRE5TIGxpYnJhcnkpCiAgICAgIC0td2l0aG91dC1saWJydG1wIChkaXNhYmxlcyBzdXBwb3J0IGZvciBSVE1QKQpAQCAtOTc0LDcgKzk4Niw3IEBACiAgICBjb25maWd1cmUgY29tbWFuZC1saW5lLCBlLmcuCiAKICAgICAgQ0ZMQUdTPSItT3MgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgXAotICAgICAgICAgICAgIC1mbm8tdW53aW5kLXRhYmxlcyAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIiBcCisgICAgICAgICAgICAgLWZuby11bndpbmQtdGFibGVzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZsdG8iIFwKICAgICAgTERGTEFHUz0iLVdsLC1zIC1XbCwtQnN5bWJvbGljIC1XbCwtLWdjLXNlY3Rpb25zIgogCiAgICBCZSBzdXJlIGFsc28gdG8gc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSB5b3VyIGJpbmFyaWVzIGFmdGVyCkBAIC05ODQsOSArOTk2LDkgQEAKICAgIC5jb21tZW50IHNlY3Rpb24pLgogCiAgICBVc2luZyB0aGVzZSB0ZWNobmlxdWVzIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGJhc2ljIEhUVFAtb25seSBzaGFyZWQKLSAgIGxpYmN1cmwgbGlicmFyeSBmb3IgaTM4NiBMaW51eCBwbGF0Zm9ybXMgdGhhdCBpcyBvbmx5IDExNCBLaUIgaW4gc2l6ZSwgYW5kCi0gICBhbiBGVFAtb25seSBsaWJyYXJ5IHRoYXQgaXMgMTE1IEtpQiBpbiBzaXplIChhcyBvZiBsaWJjdXJsIHZlcnNpb24gNy4zNS4wLAotICAgdXNpbmcgZ2NjIDQuOC4yKS4KKyAgIGxpYmN1cmwgbGlicmFyeSBmb3IgaTM4NiBMaW51eCBwbGF0Zm9ybXMgdGhhdCBpcyBvbmx5IDEwOSBLaUIgaW4gc2l6ZSwgYW5kCisgICBhbiBGVFAtb25seSBsaWJyYXJ5IHRoYXQgaXMgMTA5IEtpQiBpbiBzaXplIChhcyBvZiBsaWJjdXJsIHZlcnNpb24gNy40NS4wLAorICAgdXNpbmcgZ2NjIDQuOS4yKS4KIAogICAgWW91IG1heSBmaW5kIHRoYXQgc3RhdGljYWxseSBsaW5raW5nIGxpYmN1cmwgdG8geW91ciBhcHBsaWNhdGlvbiB3aWxsCiAgICByZXN1bHQgaW4gYSBsb3dlciB0b3RhbCBzaXplIHRoYW4gZHluYW1pY2FsbHkgbGlua2luZy4KQEAgLTEwODksNyArMTEwMSw3IEBACiBIZWltZGFsICAgICAgaHR0cDovL3d3dy5oNWwub3JnLwogbGliaWRuICAgICAgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLwogbGlibWV0YWxpbmsgIGh0dHBzOi8vbGF1bmNocGFkLm5ldC9saWJtZXRhbGluay8KLWxpYnNzaDIgICAgICBodHRwOi8vd3d3LmxpYnNzaDIub3JnLworbGlic3NoMiAgICAgIGh0dHBzOi8vd3d3LmxpYnNzaDIub3JnLwogTUlUIEtlcmJlcm9zIGh0dHA6Ly93ZWIubWl0LmVkdS9rZXJiZXJvcy93d3cvZGlzdC8KIE5TUyAgICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTCiBPcGVuTERBUCAgICAgaHR0cDovL3d3dy5vcGVubGRhcC5vcmcvCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuZGV2Y3BwIGIvZG9jcy9JTlNUQUxMLmRldmNwcAppbmRleCBlZTJkNzAzLi5mOTg5ZDUyIDEwMDY0NAotLS0gYS9kb2NzL0lOU1RBTEwuZGV2Y3BwCisrKyBiL2RvY3MvSU5TVEFMTC5kZXZjcHAKQEAgLTI0OCw3ICsyNDgsNyBAQAogb3BlbnNzbC0wLjkuN2Utd2luMzItYmluLnppcCBmb3IgdGhlIG1pbmltYWxpc3QgcGFja2FnZSBvZiB0aGUgb3BlbnNzbC0wLjkuN2UKIGJpbmFyaWVzIHBvcnRlZCB0byBNUyBXaW5kb3dzIDk1Lzk4L05UL1hQIHVzaW5nIHRoZSBNaW5nVzMyL0dDQy0zLjEKIGRldmVsb3BtZW50IGVudmlyb25tZW50LiBUaGUgZmlsZSBtYXkgYmUgZG93bmxvYWRlZCBhdAotaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC8uCitodHRwczovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC8uCiAKIDItIE9wZW4gdGhlIGFib3ZlIHppcCBmaWxlLiBZb3Ugd2lsbCBmaW5kIHR3byBmaWxlcyAtIFNETC5kbGwsCiBTRExfbWl4ZXIuZGxsLiBJbnN0YWxsIHRoZW0gaW4gdGhlIGRpcmVjdG9yeSBDOlxXSU5ET1dTXFNZU1RFTTMyIGZvciBXaW4gOXgKZGlmZiAtLWdpdCBhL2RvY3MvSU5URVJOQUxTIGIvZG9jcy9JTlRFUk5BTFMKaW5kZXggNGNkNjNiNC4uNjk4ZDY2ZSAxMDA2NDQKLS0tIGEvZG9jcy9JTlRFUk5BTFMKKysrIGIvZG9jcy9JTlRFUk5BTFMKQEAgLTEwNzksMTcgKzEwNzksMTcgQEAKICAgdGhlIHNoYXJlIEFQSS4KIAogCi1bMV06IGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAotWzJdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfaW5pdC5odG1sCitbMV06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKK1syXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9pbml0Lmh0bWwKIFszXTogaHR0cDovL2MtYXJlcy5oYXh4LnNlLwogWzRdOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCAiUkZDIDcyMzAiCi1bNV06IGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL0NVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwKLVs2XTogaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLWNvbXByZXNzZWQKLVs3XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLmh0bWwKLVs4XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV90aW1lb3V0Lmh0bWwKLVs5XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zZXRvcHQuaHRtbAotWzEwXTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5odG1sCi1bMTFdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX3BlcmZvcm0uaHRtbAotWzEyXTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9mZHNldC5odG1sCi1bMTNdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX2FkZF9oYW5kbGUuaHRtbAotWzE0XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9pbmZvX3JlYWQuaHRtbAorWzVdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuaHRtbAorWzZdOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLWNvbXByZXNzZWQKK1s3XTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi5odG1sCitbOF06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX3RpbWVvdXQuaHRtbAorWzldOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zZXRvcHQuaHRtbAorWzEwXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL0NVUkxNT1BUX1RJTUVSRlVOQ1RJT04uaHRtbAorWzExXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfbXVsdGlfcGVyZm9ybS5odG1sCitbMTJdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9mZHNldC5odG1sCitbMTNdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9hZGRfaGFuZGxlLmh0bWwKK1sxNF06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX2luZm9fcmVhZC5odG1sCmRpZmYgLS1naXQgYS9kb2NzL0tOT1dOX0JVR1MgYi9kb2NzL0tOT1dOX0JVR1MKaW5kZXggMzQ1ZGM0NS4uYzkxYzM4OCAxMDA2NDQKLS0tIGEvZG9jcy9LTk9XTl9CVUdTCisrKyBiL2RvY3MvS05PV05fQlVHUwpAQCAtMSwyNTcgKzEsNTE2IEBACi1UaGVzZSBhcmUgcHJvYmxlbXMga25vd24gdG8gZXhpc3QgYXQgdGhlIHRpbWUgb2YgdGhpcyByZWxlYXNlLiBGZWVsIGZyZWUgdG8KLWpvaW4gaW4gYW5kIGhlbHAgdXMgY29ycmVjdCBvbmUgb3IgbW9yZSBvZiB0aGVzZSEgQWxzbyBiZSBzdXJlIHRvIGNoZWNrIHRoZQotY2hhbmdlbG9nIG9mIHRoZSBjdXJyZW50IGRldmVsb3BtZW50IHN0YXR1cywgYXMgb25lIG9yIG1vcmUgb2YgdGhlc2UgcHJvYmxlbXMKLW1heSBoYXZlIGJlZW4gZml4ZWQgc2luY2UgdGhpcyB3YXMgd3JpdHRlbiEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAKLTkwLiBJTUFQICJTRUFSQ0ggQUxMIiB0cnVuY2F0ZXMgb3V0cHV0IG9uIGxhcmdlIGJveGVzLiAiQSBxdWljayBzZWFyY2ggb2YgdGhlCi0gIGNvZGUgcmV2ZWFscyB0aGF0IHBpbmdwb25nLmMgY29udGFpbnMgc29tZSB0cnVuY2F0aW9uIGNvZGUsIGF0IGxpbmUgNDA4LAotICB3aGVuIGl0IGRlZW1zIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgdG8gYmUgdG9vIGxhcmdlIHRydW5jYXRpbmcgaXQgdG8gNDAKLSAgY2hhcmFjdGVycyIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM2NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtub3duIEJ1Z3MKIAotODkuIERpc2FibGluZyBIVFRQIFBpcGVsaW5pbmcgd2hlbiB0aGVyZSBhcmUgb25nb2luZyB0cmFuc2ZlcnMgY2FuIGxlYWQgdG8KLSAgaGVhcCBjb3JydXB0aW9uIGFuZCBjcmFzaC4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQxMQorVGhlc2UgYXJlIHByb2JsZW1zIGFuZCBidWdzIGtub3duIHRvIGV4aXN0IGF0IHRoZSB0aW1lIG9mIHRoaXMgcmVsZWFzZS4gRmVlbAorZnJlZSB0byBqb2luIGluIGFuZCBoZWxwIHVzIGNvcnJlY3Qgb25lIG9yIG1vcmUgb2YgdGhlc2UhIEFsc28gYmUgc3VyZSB0bworY2hlY2sgdGhlIGNoYW5nZWxvZyBvZiB0aGUgY3VycmVudCBkZXZlbG9wbWVudCBzdGF0dXMsIGFzIG9uZSBvciBtb3JlIG9mIHRoZXNlCitwcm9ibGVtcyBtYXkgaGF2ZSBiZWVuIGZpeGVkIG9yIGNoYW5nZWQgc29tZXdoYXQgc2luY2UgdGhpcyB3YXMgd3JpdHRlbiEKIAotODguIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IENVUkxJTkZPX0ZJTEVUSU1FIGZvciBTRlRQIHRyYW5zZmVycyBhbmQgdGh1cwotICBjdXJsJ3MgLVIgb3B0aW9uIGFsc28gZG9lc24ndCB3b3JrIHRoZW4uCisgMS4gSFRUUAorIDEuMSBDVVJMRk9STV9DT05URU5UTEVOIGluIGFuIGFycmF5CisgMS4yIERpc2FibGluZyBIVFRQIFBpcGVsaW5pbmcKKyAxLjMgU1RBUlRUUkFOU0ZFUiB0aW1lIGlzIHdyb25nIGZvciBIVFRQIFBPU1RzCisgMS40IG11bHRpcGFydCBmb3JtcG9zdHMgZmlsZSBuYW1lIGVuY29kaW5nCisgMS41IEV4cGVjdC0xMDAgbWVldHMgNDE3CisgMS42IFVubmVjZXNzYXJ5IGNsb3NlIHdoZW4gNDAxIHJlY2VpdmVkIHdhaXRpbmcgZm9yIDEwMAorIDEuNyBDT05ORUNUIHJlc3BvbnNlIGxhcmdlciB0aGFuIDE2S0IKKyAxLjggRE5TIHRpbWluZyBpcyB3cm9uZyBmb3IgSFRUUCByZWRpcmVjdHMKKyAxLjkgSFRUUC8yIGZyYW1lcyB3aGlsZSBpbiB0aGUgY29ubmVjdGlvbiBwb29sIGtpbGwgcmV1c2UKKyAxLjEwIFN0cmlwcyB0cmFpbGluZyBkb3QgZnJvbSBob3N0IG5hbWUKIAotODcuIC1KLy0tcmVtb3RlLWhlYWRlci1uYW1lIGRvZXNuJ3QgZGVjb2RlICUtZW5jb2RlZCBmaWxlIG5hbWVzLiBSRkM2MjY2Ci0gIGRldGFpbHMgaG93IGl0IHNob3VsZCBiZSBkb25lLiBUaGUgY2FuIG9mIHdvcm0gaXMgYmFzaWNhbGx5IHRoYXQgd2UgaGF2ZSBubwotICBjaGFyc2V0IGhhbmRsaW5nIGluIGN1cmwgYW5kIGFzY2lpID49MTI4IGlzIGEgY2hhbGxlbmdlIGZvciB1cy4gTm90IHRvCi0gIG1lbnRpb24gdGhhdCBkZWNvZGluZyBhbHNvIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBjaGVjayBmb3IgbmFzdGluZXNzIHRoYXQgaXMKLSAgYXR0ZW1wdGVkLCBsaWtlICIuLi8iIHNlcXVlbmNlcyBhbmQgdGhlIGxpa2UuIFByb2JhYmx5IGV2ZXJ5dGhpbmcgdG8gdGhlIGxlZnQKLSAgb2YgYW55IGVtYmVkZGVkIHNsYXNoZXMgc2hvdWxkIGJlIGN1dCBvZmYuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyOTQKKyAyLiBUTFMKKyAyLjEgSGFuZ3Mgd2l0aCBQb2xhclNTTAorIDIuMiBDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIGhhcyBsaW1pdGVkIHN1cHBvcnQKKyAyLjMgREVSIGluIGtleWNoYWluCisgMi40IEdudVRMUyBiYWNrZW5kIHNraXBzIHJlYWxseSBsb25nIGNlcnRpZmljYXRlIGZpZWxkcwogCi04Ni4gVGhlIGRpc2Nvbm5lY3QgY29tbWFuZHMgKExPR09VVCBhbmQgUVVJVCkgbWF5IG5vdCBiZSBzZW50IGJ5IElNQVAsIFBPUDMKLSAgYW5kIFNNVFAgaWYgYSBmYWlsdXJlIG9jY3VycyBkdXJpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHBoYXNlIG9mIGEKLSAgY29ubmVjdGlvbi4KKyAzLiBFbWFpbCBwcm90b2NvbHMKKyAzLjEgSU1BUCBTRUFSQ0ggQUxMIHRydW5jYXRlZCByZXNwb25zZQorIDMuMiBObyBkaXNjb25uZWN0IGNvbW1hbmQKKyAzLjMgU01UUCB0byBtdWx0aXBsZSByZWNpcGllbnRzCiAKLTg1LiBXcm9uZyBTVEFSVFRSQU5TRkVSIHRpbWVyIGFjY291bnRpbmcgZm9yIFBPU1QgcmVxdWVzdHMKLSAgVGltZXIgd29ya3MgZmluZSB3aXRoIEdFVCByZXF1ZXN0cywgYnV0IHdoaWxlIHVzaW5nIFBPU1QgdGhlIHRpbWUgZm9yCi0gIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRSBpcyB3cm9uZy4gV2hpbGUgdXNpbmcgUE9TVAotICBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgbWludXMgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBpcyBuZWFyIHRvIHplcm8KLSAgZXZlcnkgdGltZS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIxMworIDQuIENvbW1hbmQgbGluZQorIDQuMSAtSiB3aXRoICUtZW5jb2RlZCBmaWxlIG5hbWVhcworIDQuMiAtSiB3aXRoIC1DIC0gZmFpbHMKKyA0LjMgLS1yZXRyeSBhbmQgdHJhbnNmZXIgdGltZW91dHMKIAotODQuIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQgaXMgb25seSBpbXBsZW1lbnRlZCBmb3IgdGhlIE9wZW5TU0wgYW5kIE5TUwotICBiYWNrZW5kcywgc28gcmVseWluZyBvbiB0aGlzIGluZm9ybWF0aW9uIGluIGEgZ2VuZXJpYyBhcHAgaXMgZmxha3kuCisgNS4gQnVpbGQgYW5kIHBvcnRhYmlsaXR5IGlzc3VlcworIDUuMSBXaW5kb3dzIEJvcmxhbmQgY29tcGlsZXIKKyA1LjIgY3VybC1jb25maWcgLS1saWJzIGNvbnRhaW5zIHByaXZhdGUgZGV0YWlscworIDUuMyBsaWJpZG4gYW5kIG9sZCBpY29udgorIDUuNCBBSVggc2hhcmVkIGJ1aWxkIHdpdGggYy1hcmVzIGZhaWxzCisgNS41IGNhbid0IGhhbmRsZSBVbmljb2RlIGFyZ3VtZW50cyBpbiBXaW5kb3dzCiAKLTgyLiBXaGVuIGJ1aWxkaW5nIHdpdGggdGhlIFdpbmRvd3MgQm9ybGFuZCBjb21waWxlciwgaXQgZmFpbHMgYmVjYXVzZSB0aGUKLSAgInRsaWIiIHRvb2wgZG9lc24ndCBzdXBwb3J0IGh5cGhlbnMgKG1pbnVzIHNpZ25zKSBpbiBmaWxlIG5hbWVzIGFuZCB3ZSBoYXZlCi0gIHN1Y2ggaW4gdGhlIGJ1aWxkLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjIyCisgNi4gQXV0aGVudGljYXRpb24KKyA2LjEgTlRMTSBhdXRoZW50aWNhdGlvbiBhbmQgdW5pY29kZQorIDYuMiBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgYnVpbGQKKyA2LjMgTlRMTSBpbiBzeXN0ZW0gY29udGV4dCB1c2VzIHdyb25nIG5hbWUKKyA2LjQgTmVnb3RpYXRlIG5lZWRzIGEgZmFrZSB1c2VyIG5hbWUKIAotODEuIFdoZW4gdXNpbmcgLUogKHdpdGggLU8pLCBhdXRvbWF0aWNhbGx5IHJlc3VtZWQgZG93bmxvYWRpbmcgdG9nZXRoZXIgd2l0aAotICAiLUMgLSIgZmFpbHMuIFdpdGhvdXQgLUogdGhlIHNhbWUgY29tbWFuZCBsaW5lIHdvcmtzISBUaGlzIGhhcHBlbnMgYmVjYXVzZQotICB0aGUgcmVzdW1lIGxvZ2ljIGlzIHdvcmtlZCBvdXQgYmVmb3JlIHRoZSB0YXJnZXQgZmlsZSBuYW1lIChhbmQgdGh1cyBpdHMKLSAgcHJlLXRyYW5zZmVyIHNpemUpIGhhcyBiZWVuIGZpZ3VyZWQgb3V0IQotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMTY5CisgNy4gRlRQCisgNy4xIEZUUCB3aXRob3V0IG9yIHNsb3cgMjIwIHJlc3BvbnNlCisgNy4yIEZUUCB3aXRoIENPTk5FQ1QgYW5kIHNsb3cgc2VydmVyCisgNy4zIEZUUCB3aXRoIE5PQk9EWSBhbmQgRkFJTE9ORVJST1IKKyA3LjQgRlRQIHdpdGggQUNDVAorIDcuNSBBU0NJSSBGVFAKKyA3LjYgRlRQIHdpdGggTlVMcyBpbiBVUkwgcGFydHMKKyA3LjcgRlRQIGFuZCBlbXB0eSBwYXRoIHBhcnRzIGluIHRoZSBVUkwKIAotODAuIEN1cmwgZG9lc24ndCByZWNvZ25pemUgY2VydGlmaWNhdGVzIGluIERFUiBmb3JtYXQgaW4ga2V5Y2hhaW4sIGJ1dCBpdAotICB3b3JrcyB3aXRoIFBFTS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTA2NQorIDguIFRFTE5FVAorIDguMSBURUxORVQgYW5kIHRpbWUgbGltdGlhdGlvbnMgZG9uJ3Qgd29yaworIDguMiBNaWNyb3NvZnQgdGVsbmV0IHNlcnZlcgogCi03OS4gU01UUC4gV2hlbiBzZW5kaW5nIGRhdGEgdG8gbXVsdGlwbGUgcmVjaXBpZW50cywgY3VybCB3aWxsIGFib3J0IGFuZCByZXR1cm4KLSAgZmFpbHVyZSBpZiBvbmUgb2YgdGhlIHJlY2lwaWVudHMgaW5kaWNhdGUgZmFpbHVyZSAob24gdGhlICJSQ1BUIFRPIgotICBjb21tYW5kKS4gT3JkaW5hcnkgbWFpbCBwcm9ncmFtcyB3b3VsZCBwcm9jZWVkIGFuZCBzdGlsbCBzZW5kIHRvIHRoZSBvbmVzCi0gIHRoYXQgY2FuIHJlY2VpdmUgZGF0YS4gVGhpcyBpcyBzdWJqZWN0IGZvciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTExNgorIDkuIFNGVFAgYW5kIFNDUAorIDkuMSBTRlRQIGRvZXNuJ3QgZG8gQ1VSTE9QVF9QT1NUUVVPVEUgY29ycmVjdAogCi03OC4gY3VybCBhbmQgbGliY3VybCBkb24ndCBhbHdheXMgc2lnbmFsIHRoZSBjbGllbnQgcHJvcGVybHkgd2hlbiAic2VuZGluZyIKLSAgemVybyBieXRlcyBmaWxlcyAtIGl0IG1ha2VzIGZvciBleGFtcGxlIHRoZSBjb21tYW5kIGxpbmUgY2xpZW50IG5vdCBjcmVhdGluZwotICBhbnkgZmlsZSBhdCBhbGwuIExpa2Ugd2hlbiB1c2luZyBGVFAuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEwNjMKKyAxMC4gU09DS1MKKyAxMC4xIFNPQ0tTIHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nCisgMTAuMiBTT0NLUyBkb24ndCBzdXBwb3J0IHRpbWVvdXRzCisgMTAuMyBGVFBTIG92ZXIgU09DS1MKKyAxMC40IGFjdGl2ZSBGVFAgb3ZlciBhIFNPQ0tTCiAKLTc2LiBUaGUgU09DS0VUIHR5cGUgaW4gV2luNjQgaXMgNjQgYml0cyBsYXJnZSAoYW5kIHRodXMgc28gaXMgY3VybF9zb2NrZXRfdCBvbgotICB0aGF0IHBsYXRmb3JtKSwgYW5kIGxvbmcgaXMgb25seSAzMiBiaXRzLiBJdCBtYWtlcyBpdCBpbXBvc3NpYmxlIGZvcgotICBjdXJsX2Vhc3lfZ2V0aW5mbygpIHRvIHJldHVybiBhIHNvY2tldCBwcm9wZXJseSB3aXRoIHRoZSBDVVJMSU5GT19MQVNUU09DS0VUCi0gIG9wdGlvbiBhcyBmb3IgYWxsIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLgorIDExLiBJbnRlcm5hbHMKKyAxMS4xIEN1cmwgbGVha3MgLm9uaW9uIGhvc3RuYW1lcyBpbiBETlMKKyAxMS4yIGVycm9yIGJ1ZmZlciBub3Qgc2V0IGlmIGNvbm5lY3Rpb24gdG8gbXVsdGlwbGUgYWRkcmVzc2VzIGZhaWxzCiAKLTc1LiBOVExNIGF1dGhlbnRpY2F0aW9uIGludm9sdmluZyB1bmljb2RlIHVzZXIgbmFtZSBvciBwYXNzd29yZCBvbmx5IHdvcmtzCi0gIHByb3Blcmx5IGlmIGJ1aWx0IHdpdGggVU5JQ09ERSBkZWZpbmVkIHRvZ2V0aGVyIHdpdGggdGhlIFdpblNTTC9zY2hhbm5lbAotICBiYWNrZW5kLiBUaGUgb3JpZ2luYWwgcHJvYmxlbSB3YXMgbWVudGlvbmVkIGluOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMTAvMDAyNC5odG1sCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTg5NgorIDEyLiBMREFQIGFuZCBPcGVuTERBUAorIDEyLjEgT3BlbkxEQVAgaGFuZ3MgYWZ0ZXIgcmV0dXJuaW5nIHJlc3VsdHMKIAotICBUaGUgV2luU1NML3NjaGFubmVsIHZlcnNpb24gdmVyaWZpZWQgdG8gd29yayBhcyBtZW50aW9uZWQgaW4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEyLTA3LzAwNzMuaHRtbAorIDEzIFRDUC9JUAorIDEzLjEgLS1pbnRlcmZhY2UgZm9yIGlwdjYgYmluZHMgdG8gdW51c2FibGUgSVAgYWRkcmVzcwogCi03My4gaWYgYSBjb25uZWN0aW9uIGlzIG1hZGUgdG8gYSBGVFAgc2VydmVyIGJ1dCB0aGUgc2VydmVyIHRoZW4ganVzdCBuZXZlcgotICBzZW5kcyB0aGUgMjIwIHJlc3BvbnNlIG9yIG90aGVyd2lzZSBpcyBkZWFkIHNsb3csIGxpYmN1cmwgd2lsbCBub3QKLSAgYWNrbm93bGVkZ2UgdGhlIGNvbm5lY3Rpb24gdGltZW91dCBkdXJpbmcgdGhhdCBwaGFzZSBidXQgb25seSB0aGUgInJlYWwiCi0gIHRpbWVvdXQgLSB3aGljaCBtYXkgc3VycHJpc2UgdXNlcnMgYXMgaXQgaXMgcHJvYmFibHkgY29uc2lkZXJlZCB0byBiZSB0aGUKLSAgY29ubmVjdCBwaGFzZSB0byBtb3N0IHBlb3BsZS4gQnJvdWdodCB1cCAoYW5kIGlzIGJlaW5nIG1pc3VuZGVyc3Rvb2QpIGluOgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NTYKIAotNzIuICJQYXVzaW5nIHBpcGVsaW5lIHByb2JsZW1zLiIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTA3LzAyMTQuaHRtbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLTcwLiBQcm9ibGVtIHJlLXVzaW5nIGVhc3kgaGFuZGxlIGFmdGVyIGNhbGwgdG8gY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNy8wMjQ5Lmh0bWwKKzEuIEhUVFAKIAotNjguICJNb3JlIHF1ZXN0aW9ucyBhYm91dCBhcmVzIGJlaGF2aW9yIi4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTA4LzAwMTIuaHRtbAorMS4xIENVUkxGT1JNX0NPTlRFTlRMRU4gaW4gYW4gYXJyYXkKIAotNjcuIFdoZW4gY3JlYXRpbmcgbXVsdGlwYXJ0IGZvcm1wb3N0cy4gVGhlIGZpbGUgbmFtZSBwYXJ0IGNhbiBiZSBlbmNvZGVkIHdpdGgKLSAgc29tZXRoaW5nIGJleW9uZCBhc2NpaSBidXQgY3VycmVudGx5IGxpYmN1cmwgd2lsbCBvbmx5IHBhc3MgaW4gdGhlIHZlcmJhdGltCi0gIHN0cmluZyB0aGUgYXBwIHByb3ZpZGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBicm93c2VycyB0aGF0IGFscmVhZHkgZG8gdGhpcwotICBlbmNvZGluZy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGUgdXBkYXRlZCBkcmFmdCB0byBSRkMyMjMxOgotICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcmVzY2hrZS1yZmMyMjMxLWluLWh0dHAtMDIKKyBJdCBpcyBub3QgcG9zc2libGUgdG8gcGFzcyBhIDY0LWJpdCB2YWx1ZSB1c2luZyBDVVJMRk9STV9DT05URU5UTEVOIHdpdGgKKyBDVVJMRk9STV9BUlJBWSwgd2hlbiBjb21waWxlZCBvbiAzMi1iaXQgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA2NC1iaXQKKyBpbnRlZ2Vycy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZSAnY3VybF9mb3JtcycgdXNlcyBhIGR1YWwKKyBwdXJwb3NlIGNoYXIqIGZvciBzdG9yaW5nIHRoZXNlIHZhbHVlcyBpbiB2aWEgY2FzdGluZy4gRm9yIG1vcmUgaW5mb3JtYXRpb24KKyBzZWUgdGhlIG5vdyBjbG9zZWQgcmVsYXRlZCBpc3N1ZToKKyBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy82MDgKIAotNjYuIFdoZW4gdXNpbmcgdGVsbmV0LCB0aGUgdGltZSBsaW1pdGF0aW9uIG9wdGlvbnMgZG9uJ3Qgd29yay4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9ODQ2CisxLjIgRGlzYWJsaW5nIEhUVFAgUGlwZWxpbmluZwogCi02NS4gV2hlbiBkb2luZyBGVFAgb3ZlciBhIHNvY2tzIHByb3h5IG9yIENPTk5FQ1QgdGhyb3VnaCBIVFRQIHByb3h5IGFuZCB0aGUKLSAgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQsIGxpYmN1cmwgd2lsbCBmYWlsIGlmIHRoZSAocGFzc2l2ZSkgVENQIGNvbm5lY3Rpb24KLSAgZm9yIHRoZSBkYXRhIHRyYW5zZmVyIGlzbid0IG1vcmUgb3IgbGVzcyBpbnN0YW50IGFzIHRoZSBjb2RlIGRvZXMgbm90Ci0gIHByb3Blcmx5IHdhaXQgZm9yIHRoZSBjb25uZWN0IHRvIGJlIGNvbmZpcm1lZC4gU2VlIHRlc3QgY2FzZSA1NjQgZm9yIGEgZmlyc3QKLSAgc2hvdCBhdCBhIHRlc3QgY2FzZS4KKyBEaXNhYmxpbmcgSFRUUCBQaXBlbGluaW5nIHdoZW4gdGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNmZXJzIGNhbiBsZWFkIHRvCisgaGVhcCBjb3JydXB0aW9uIGFuZCBjcmFzaC4gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0MTEKIAotNjMuIFdoZW4gQ1VSTE9QVF9DT05ORUNUX09OTFkgaXMgdXNlZCwgdGhlIGhhbmRsZSBjYW5ub3QgcmVsaWFibHkgYmUgcmUtdXNlZAotICBmb3IgYW55IGZ1cnRoZXIgcmVxdWVzdHMgb3IgdHJhbnNmZXJzLiBUaGUgd29yay1hcm91bmQgaXMgdGhlbiB0byBjbG9zZSB0aGF0Ci0gIGhhbmRsZSB3aXRoIGN1cmxfZWFzeV9jbGVhbnVwKCkgYW5kIGNyZWF0ZSBhIG5ldy4gU29tZSBtb3JlIGRldGFpbHM6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNC8wMzAwLmh0bWwKKzEuMyBTVEFSVFRSQU5TRkVSIHRpbWUgaXMgd3JvbmcgZm9yIEhUVFAgUE9TVHMKIAotNjEuIElmIGFuIHVwbG9hZCB1c2luZyBFeHBlY3Q6IDEwMC1jb250aW51ZSByZWNlaXZlcyBhbiBIVFRQIDQxNyByZXNwb25zZSwKLSAgaXQgb3VnaHQgdG8gYmUgYXV0b21hdGljYWxseSByZXNlbnQgd2l0aG91dCB0aGUgRXhwZWN0Oi4gIEEgd29ya2Fyb3VuZCBpcwotICBmb3IgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byByZWRvIHRoZSB0cmFuc2ZlciBhZnRlciBkaXNhYmxpbmcgRXhwZWN0Oi4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwOC0wMi8wMDQzLmh0bWwKKyBXcm9uZyBTVEFSVFRSQU5TRkVSIHRpbWVyIGFjY291bnRpbmcgZm9yIFBPU1QgcmVxdWVzdHMgVGltZXIgd29ya3MgZmluZSB3aXRoCisgR0VUIHJlcXVlc3RzLCBidXQgd2hpbGUgdXNpbmcgUE9TVCB0aGUgdGltZSBmb3IgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FCisgaXMgd3JvbmcuIFdoaWxlIHVzaW5nIFBPU1QgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FIG1pbnVzCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBpcyBuZWFyIHRvIHplcm8gZXZlcnkgdGltZS4KIAotNjAuIGxpYmN1cmwgY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlmIGFuIEhUVFAgNDAxIHJlcGx5IGlzIHJlY2VpdmVkIHdoaWxlIGl0Ci0gIGlzIHdhaXRpbmcgZm9yIHRoZSB0aGUgMTAwLWNvbnRpbnVlIHJlc3BvbnNlLgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDgvMDQ2Mi5odG1sCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMjE4CisgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMTMKIAotNTguIEl0IHNlZW1zIHNlbnNpYmxlIHRvIGJlIGFibGUgdG8gdXNlIENVUkxPUFRfTk9CT0RZIGFuZAotICBDVVJMT1BUX0ZBSUxPTkVSUk9SIHdpdGggRlRQIHRvIGRldGVjdCBpZiBhIGZpbGUgZXhpc3RzIG9yIG5vdCwgYnV0IGl0IGlzCi0gIG5vdCB3b3JraW5nOiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDcvMDI5NS5odG1sCisxLjQgbXVsdGlwYXJ0IGZvcm1wb3N0cyBmaWxlIG5hbWUgZW5jb2RpbmcKIAotNTYuIFdoZW4gbGliY3VybCBzZW5kcyBDVVJMT1BUX1BPU1RRVU9URSBjb21tYW5kcyB3aGVuIGNvbm5lY3RlZCB0byBhIFNGVFAKLSAgc2VydmVyIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UsIHRoZSBjb21tYW5kcyBhcmUgbm90IGJlaW5nIHNlbnQgY29ycmVjdGx5Ci0gIGFuZCBpbnN0ZWFkIHRoZSBjb25uZWN0aW9uIGlzICJjYW5jZWxsZWQiICh0aGUgb3BlcmF0aW9uIGlzIGNvbnNpZGVyZWQgZG9uZSkKLSAgcHJlbWF0dXJlbHkuIFRoZXJlIGlzIGEgaGFsZi1iYWtlZCAoYnVzeS1sb29waW5nKSBwYXRjaCBwcm92aWRlZCBpbiB0aGUgYnVnCi0gIHJlcG9ydCBidXQgaXQgY2Fubm90IGJlIGFjY2VwdGVkIGFzLWlzLiBTZWUKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NzQ4CisgV2hlbiBjcmVhdGluZyBtdWx0aXBhcnQgZm9ybXBvc3RzLiBUaGUgZmlsZSBuYW1lIHBhcnQgY2FuIGJlIGVuY29kZWQgd2l0aAorIHNvbWV0aGluZyBiZXlvbmQgYXNjaWkgYnV0IGN1cnJlbnRseSBsaWJjdXJsIHdpbGwgb25seSBwYXNzIGluIHRoZSB2ZXJiYXRpbQorIHN0cmluZyB0aGUgYXBwIHByb3ZpZGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBicm93c2VycyB0aGF0IGFscmVhZHkgZG8gdGhpcworIGVuY29kaW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRoZSB1cGRhdGVkIGRyYWZ0IHRvIFJGQzIyMzE6CisgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXJlc2Noa2UtcmZjMjIzMS1pbi1odHRwLTAyCiAKLTU1LiBsaWJjdXJsIGZhaWxzIHRvIGJ1aWxkIHdpdGggTUlUIEtlcmJlcm9zIGZvciBXaW5kb3dzIChLZlcpIGR1ZSB0byBLZlcncwotICBsaWJyYXJ5IGhlYWRlciBmaWxlcyBleHBvcnRpbmcgc3ltYm9scy9tYWNyb3MgdGhhdCBzaG91bGQgYmUga2VwdCBwcml2YXRlCi0gIHRvIHRoZSBLZlcgbGlicmFyeS4gU2VlIHRpY2tldCAjNTYwMSBhdCBodHRwOi8va3JiZGV2Lm1pdC5lZHUvcnQvCisxLjUgRXhwZWN0LTEwMCBtZWV0cyA0MTcKIAotNTIuIEdhdXRhbSBLYWNocm9vJ3MgaXNzdWUgdGhhdCBpZGVudGlmaWVzIGEgcHJvYmxlbSB3aXRoIHRoZSBtdWx0aSBpbnRlcmZhY2UKLSAgd2hlcmUgYSBjb25uZWN0aW9uIGNhbiBiZSByZS11c2VkIHdpdGhvdXQgYWN0dWFsbHkgYmVpbmcgcHJvcGVybHkKLSAgU1NMLW5lZ290aWF0ZWQ6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wMS8wMjc3Lmh0bWwKKyBJZiBhbiB1cGxvYWQgdXNpbmcgRXhwZWN0OiAxMDAtY29udGludWUgcmVjZWl2ZXMgYW4gSFRUUCA0MTcgcmVzcG9uc2UsIGl0Cisgb3VnaHQgdG8gYmUgYXV0b21hdGljYWxseSByZXNlbnQgd2l0aG91dCB0aGUgRXhwZWN0Oi4gIEEgd29ya2Fyb3VuZCBpcyBmb3IKKyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHJlZG8gdGhlIHRyYW5zZmVyIGFmdGVyIGRpc2FibGluZyBFeHBlY3Q6LgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA4LTAyLzAwNDMuaHRtbAogCi00OS4gSWYgdXNpbmcgLS1yZXRyeSBhbmQgdGhlIHRyYW5zZmVyIHRpbWVvdXRzIChwb3NzaWJseSBkdWUgdG8gdXNpbmcgLW0gb3IKLSAgLXkvLVkpIHRoZSBuZXh0IGF0dGVtcHQgZG9lc24ndCByZXN1bWUgdGhlIHRyYW5zZmVyIHByb3Blcmx5IGZyb20gd2hhdCB3YXMKLSAgZG93bmxvYWRlZCBpbiB0aGUgcHJldmlvdXMgYXR0ZW1wdCBidXQgd2lsbCB0cnVuY2F0ZSBhbmQgcmVzdGFydCBhdCB0aGUKLSAgb3JpZ2luYWwgcG9zaXRpb24gd2hlcmUgaXQgd2FzIGF0IGJlZm9yZSB0aGUgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQuIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDEvMDA4MC5odG1sIGFuZCBNYW5kcml2YSBidWcgcmVwb3J0Ci0gIGh0dHBzOi8vcWEubWFuZHJpdmEuY29tL3Nob3dfYnVnLmNnaT9pZD0yMjU2NQorMS42IFVubmVjZXNzYXJ5IGNsb3NlIHdoZW4gNDAxIHJlY2VpdmVkIHdhaXRpbmcgZm9yIDEwMAogCi00OC4gSWYgYSBDT05ORUNUIHJlc3BvbnNlLWhlYWRlcnMgYXJlIGxhcmdlciB0aGFuIEJVRlNJWkUgKDE2S0IpIHdoZW4gdGhlCi0gIGNvbm5lY3Rpb24gaXMgbWVhbnQgdG8gYmUga2VwdCBhbGl2ZSAobGlrZSBmb3IgTlRMTSBwcm94eSBhdXRoKSwgdGhlCi0gIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHByZW1hdHVyZWx5IGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHJlc3Qgb2YgdGhlIEhUVFAKLSAgcHJvdG9jb2wgY29kZS4gVGhpcyBzaG91bGQgYmUgdmVyeSByYXJlLgorIGxpYmN1cmwgY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlmIGFuIEhUVFAgNDAxIHJlcGx5IGlzIHJlY2VpdmVkIHdoaWxlIGl0IGlzCisgd2FpdGluZyBmb3IgdGhlIHRoZSAxMDAtY29udGludWUgcmVzcG9uc2UuCisgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wOC8wNDYyLmh0bWwKIAotNDMuIFRoZXJlIHNlZW1zIHRvIGJlIGEgcHJvYmxlbSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1pY3Jvc29mdCB0ZWxuZXQgc2VydmVyLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02NDkKKzEuNyBDT05ORUNUIHJlc3BvbnNlIGxhcmdlciB0aGFuIDE2S0IKIAotNDEuIFdoZW4gZG9pbmcgYW4gb3BlcmF0aW9uIG92ZXIgRlRQIHRoYXQgcmVxdWlyZXMgdGhlIEFDQ1QgY29tbWFuZCAoYnV0IG5vdAotICB3aGVuIGxvZ2dpbmcgaW4pLCB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBzaW5jZSBsaWJjdXJsIGRvZXNuJ3QgZGV0ZWN0IHRoaXMKLSAgYW5kIHRodXMgZmFpbHMgdG8gaXNzdWUgdGhlIGNvcnJlY3QgY29tbWFuZDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NjM1CisgSWYgYSBDT05ORUNUIHJlc3BvbnNlLWhlYWRlcnMgYXJlIGxhcmdlciB0aGFuIEJVRlNJWkUgKDE2S0IpIHdoZW4gdGhlCisgY29ubmVjdGlvbiBpcyBtZWFudCB0byBiZSBrZXB0IGFsaXZlIChsaWtlIGZvciBOVExNIHByb3h5IGF1dGgpLCB0aGUgZnVuY3Rpb24KKyB3aWxsIHJldHVybiBwcmVtYXR1cmVseSBhbmQgd2lsbCBjb25mdXNlIHRoZSByZXN0IG9mIHRoZSBIVFRQIHByb3RvY29sCisgY29kZS4gVGhpcyBzaG91bGQgYmUgdmVyeSByYXJlLgogCi0zOS4gU3RlZmZlbiBSdW1sZXIncyBSYWNlIENvbmRpdGlvbiBpbiBDdXJsX3Byb3h5Q09OTkVDVDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTAxLzAwNDUuaHRtbAorMS44IEROUyB0aW1pbmcgaXMgd3JvbmcgZm9yIEhUVFAgcmVkaXJlY3RzCiAKLTM4LiBLdW1hciBTd2FteSBCaGF0dCdzIHByb2JsZW0gaW4gZnRwL3NzbCAiTElTVCIgb3BlcmF0aW9uOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMDEvMDEwMy5odG1sCisgV2hlbiBleHRyYWN0aW5nIHRpbWluZyBpbmZvcm1hdGlvbiBhZnRlciBIVFRQIHJlZGlyZWN0cywgb25seSB0aGUgbGFzdAorIHRyYW5zZmVyJ3MgcmVzdWx0cyBhcmUgcmV0dXJuZWQgYW5kIG5vdCB0aGUgdG90YWxzOgorIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzUyMgogCi0zNS4gQm90aCBTT0NLUzUgYW5kIFNPQ0tTNCBwcm94eSBjb25uZWN0aW9ucyBhcmUgZG9uZSBibG9ja2luZywgd2hpY2ggaXMgdmVyeQotICBiYWQgd2hlbiB1c2VkIHdpdGggdGhlIG11bHRpIGludGVyZmFjZS4KKzEuOSBIVFRQLzIgZnJhbWVzIHdoaWxlIGluIHRoZSBjb25uZWN0aW9uIHBvb2wga2lsbCByZXVzZQogCi0zNC4gVGhlIFNPQ0tTNCBjb25uZWN0aW9uIGNvZGVzIGRvbid0IHByb3Blcmx5IGFja25vd2xlZGdlIChjb25uZWN0KSB0aW1lb3V0cy4KLSAgQWxzbyBzZWUgIzEyLiBBY2NvcmRpbmcgdG8gYnVnICMxNTU2NTI4LCBldmVuIHRoZSBTT0NLUzUgY29ubmVjdCBjb2RlIGRvZXMKLSAgbm90IGRvIGl0IHJpZ2h0OiBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MDQKKyBJZiB0aGUgc2VydmVyIHNlbmRzIEhUVFAvMiBmcmFtZXMgKGxpa2UgZm9yIGV4YW1wbGUgYW4gSFRUUC8yIFBJTkcgZnJhbWUpIHRvCisgY3VybCB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBoZWxkIGluIGN1cmwncyBjb25uZWN0aW9uIHBvb2wsIHRoZSBzb2NrZXQgd2lsbAorIGJlIGZvdW5kIHJlYWRhYmxlIHdoZW4gY29uc2lkZXJlZCBmb3IgcmV1c2UgYW5kIHRoYXQgbWFrZXMgY3VybCB0aGluayBpdCBpcworIGRlYWQgYW5kIHRoZW4gaXQgd2lsbCBiZSBjbG9zZWQgYW5kIGEgbmV3IGNvbm5lY3Rpb24gZ2V0cyBjcmVhdGVkIGluc3RlYWQuCiAKLTMxLiAiY3VybC1jb25maWcgLS1saWJzIiB3aWxsIGluY2x1ZGUgZGV0YWlscyBzZXQgaW4gTERGTEFHUyB3aGVuIGNvbmZpZ3VyZSBpcwotICBydW4gdGhhdCBtaWdodCBiZSBuZWVkZWQgb25seSBmb3IgYnVpbGRpbmcgbGliY3VybC4gRnVydGhlciwgY3VybC1jb25maWcKLSAgLS1jZmxhZ3Mgc3VmZmVycyBmcm9tIHRoZSBzYW1lIGVmZmVjdHMgd2l0aCBDRkxBR1MvQ1BQRkxBR1MuCisgVGhpcyBpcyAqYmVzdCogZml4ZWQgYnkgYWRkaW5nIG1vbml0b3JpbmcgdG8gY29ubmVjdGlvbnMgd2hpbGUgdGhleSBhcmUga2VwdAorIGluIHRoZSBwb29sIHNvIHRoYXQgcGluZ3MgY2FuIGJlIHJlc3BvbmRlZCB0byBhcHByb3ByaWF0ZWx5LgogCi0yNi4gTlRMTSBhdXRoZW50aWNhdGlvbiB1c2luZyBTU1BJIChvbiBXaW5kb3dzKSB3aGVuIChsaWIpY3VybCBpcyBydW5uaW5nIGluCi0gICJzeXN0ZW0gY29udGV4dCIgd2lsbCBtYWtlIGl0IHVzZSB3cm9uZyg/KSB1c2VyIG5hbWUgLSBhdCBsZWFzdCB3aGVuIGNvbXBhcmVkCi0gIHRvIHdoYXQgd2luaHR0cCBkb2VzLiBTZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NTM1CisxLjEwIFN0cmlwcyB0cmFpbGluZyBkb3QgZnJvbSBob3N0IG5hbWUKIAotMjMuIFNPQ0tTLXJlbGF0ZWQgcHJvYmxlbXM6Ci0gIEIpIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IEZUUFMgb3ZlciBhIFNPQ0tTIHByb3h5LgotICBFKSBsaWJjdXJsIGRvZXNuJ3Qgc3VwcG9ydCBhY3RpdmUgRlRQIG92ZXIgYSBTT0NLUyBwcm94eQorIFdoZW4gZ2l2ZW4gYSBVUkwgd2l0IGEgdHJhaWxpbmcgZG90IGZvciB0aGUgaG9zdCBuYW1lIHBhcnQ6CisgImh0dHBzOi8vZXhhbXBsZS5jb20uLyIsIGxpYmN1cmwgd2lsbCBzdHJpcCBvZmYgdGhlIGRvdCBhbmQgdXNlIHRoZSBuYW1lCisgd2l0aG91dCBhIGRvdCBpbnRlcm5hbGx5IGFuZCBzZW5kIGl0IGRvdC1sZXNzIGluIEhUVFAgSG9zdDogaGVhZGVycyBhbmQgaW4KKyB0aGUgVExTIFNOSSBmaWVsZC4KIAotICBXZSBwcm9iYWJseSBoYXZlIGV2ZW4gbW9yZSBidWdzIGFuZCBsYWNrIG9mIGZlYXR1cmVzIHdoZW4gYSBTT0NLUyBwcm94eSBpcwotICB1c2VkLgorIFRoZSBIVFRQIHBhcnQgdmlvbGF0ZXMgUkZDIDcyMzAgc2VjdGlvbiA1LjQgYnV0IHRoZSBTTkkgcGFydCBpcyBhY2NvcmRhbmNlCisgd2l0aCBSRkMgNjA2NiBzZWN0aW9uIDMuCiAKLTIxLiBGVFAgQVNDSUkgdHJhbnNmZXJzIGRvIG5vdCBmb2xsb3cgUkZDOTU5LiBUaGV5IGRvbid0IGNvbnZlcnQgdGhlIGRhdGEKLSAgIGFjY29yZGluZ2x5IChub3QgZm9yIHNlbmRpbmcgbm9yIGZvciByZWNlaXZpbmcpLiBSRkMgOTU5IHNlY3Rpb24gMy4xLjEuMQotICAgY2xlYXJseSBkZXNjcmliZXMgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmU6CisgVVJMcyB1c2luZyB0aGVzZSB0cmFpbGluZyBkb3RzIGFyZSB2ZXJ5IHJhcmUgaW4gdGhlIHdpbGQgYW5kIHdlIGhhdmUgbm90IHNlZW4KKyBvciBnb3R0ZW4gYW55IHJlYWwtd29ybGQgcHJvYmxlbXMgd2l0aCBzdWNoIFVSTHMgcmVwb3J0ZWQuIFRoZSBwb3B1bGFyCisgYnJvd3NlcnMgc2VlbSB0byBoYXZlIHN0YXllZCB3aXRoIG5vdCBzdHJpcHBpbmcgdGhlIGRvdCBmb3IgYm90aCB1c2VzICh0aHVzCisgdGhleSB2aW9sYXRlIFJGQyA2MDY2IGluc3RlYWQgb2YgUkZDIDcyMzApLgogCi0gICAgIFRoZSBzZW5kZXIgY29udmVydHMgdGhlIGRhdGEgZnJvbSBhbiBpbnRlcm5hbCBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gdG8KLSAgICAgdGhlIHN0YW5kYXJkIDgtYml0IE5WVC1BU0NJSSByZXByZXNlbnRhdGlvbiAoc2VlIHRoZSBUZWxuZXQKLSAgICAgc3BlY2lmaWNhdGlvbikuICBUaGUgcmVjZWl2ZXIgd2lsbCBjb252ZXJ0IHRoZSBkYXRhIGZyb20gdGhlIHN0YW5kYXJkCi0gICAgIGZvcm0gdG8gaGlzIG93biBpbnRlcm5hbCBmb3JtLgorIERhbmllbCB0b29rIHRoZSBkaXNjdXNzaW9uIHRvIHRoZSBIVFRQYmlzIG1haWxpbmcgbGlzdCBpbiBNYXJjaCAyMDE2OgorIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9pZXRmLWh0dHAtd2cvMjAxNkphbk1hci8wNDMwLmh0bWwgYnV0CisgdGhlcmUgd2FzIG5vdCBtYWpvciBydXNoIG9yIGludGVyZXN0IHRvIGZpeCB0aGlzLiBUaGUgaW1wcmVzc2lvbiBJIGdldCBpcworIHRoYXQgbW9zdCBIVFRQIHBlb3BsZSByYXRoZXIgbm90IHJvY2sgdGhlIGJvYXQgbm93IGFuZCBpbnN0ZWFkIHByaW9yaXRpemUgd2ViCisgY29tcGF0aWJpbGl0eSByYXRoZXIgdGhhbiB0byBzdHJpY3RseSBhZGhlcmUgdG8gdGhlc2UgUkZDcy4KIAotICAgU2luY2UgNy4xNS40IGF0IGxlYXN0IGxpbmUgZW5kaW5ncyBhcmUgY29udmVydGVkLgorIE91ciBjdXJyZW50IGFwcHJvYWNoIGFsbG93cyBhIGtub3dpbmcgY2xpZW50IHRvIHNlbmQgYSBjdXN0b20gSFRUUCBoZWFkZXIKKyB3aXRoIHRoZSBkb3QgYWRkZWQuCiAKLTE2LiBGVFAgVVJMcyBwYXNzZWQgdG8gY3VybCBtYXkgY29udGFpbiBOVUwgKDB4MDApIGluIHRoZSBSRkMgMTczOCA8dXNlcj4sCi0gIDxwYXNzd29yZD4sIGFuZCA8ZnBhdGg+IGNvbXBvbmVudHMsIGVuY29kZWQgYXMgIiUwMCIuICBUaGUgcHJvYmxlbSBpcyB0aGF0Ci0gIGN1cmxfdW5lc2NhcGUgZG9lcyBub3QgZGV0ZWN0IHRoaXMsIGJ1dCBpbnN0ZWFkIHJldHVybnMgYSBzaG9ydGVuZWQgQwotICBzdHJpbmcuICBGcm9tIGEgc3RyaWN0IEZUUCBwcm90b2NvbCBzdGFuZHBvaW50LCBOVUwgaXMgYSB2YWxpZCBjaGFyYWN0ZXIKLSAgd2l0aGluIFJGQyA5NTkgPHN0cmluZz4sIHNvIHRoZSB3YXkgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5IGluIGN1cmwgd291bGQKLSAgYmUgdG8gdXNlIGEgZGF0YSBzdHJ1Y3R1cmUgb3RoZXIgdGhhbiBhIHBsYWluIEMgc3RyaW5nLCBvbmUgdGhhdCBjYW4gaGFuZGxlCi0gIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXJzLiAgRnJvbSBhIHByYWN0aWNhbCBzdGFuZHBvaW50LCBtb3N0IEZUUCBzZXJ2ZXJzCi0gIHdvdWxkIG5vdCBtZWFuaW5nZnVsbHkgc3VwcG9ydCBOVUwgY2hhcmFjdGVycyB3aXRoaW4gUkZDIDk1OSA8c3RyaW5nPiwKLSAgYW55d2F5IChlLmcuLCBVbml4IHBhdGhuYW1lcyBtYXkgbm90IGNvbnRhaW4gTlVMKS4KKyBJdCBjYW4gYWxzbyBiZSBub3RlZCB0aGF0IHdoaWxlIGFkZGluZyBhIHRyYWlsaW5nIGRvdCB0byB0aGUgaG9zdCBuYW1lIGluCisgbW9zdCAoYWxsPykgY2FzZXMgd2lsbCBtYWtlIHRoZSBuYW1lIHJlc29sdmUgdG8gdGhlIHNhbWUgc2V0IG9mIElQIGFkZHJlc3NlcywKKyBtYW55IEhUVFAgc2VydmVycyB3aWxsIG5vdCBoYXBwaWx5IGFjY2VwdCB0aGUgdHJhaWxpbmcgZG90IHRoZXJlIHVubGVzcyB0aGF0CisgaGFzIGJlZW4gc3BlY2lmaWNseSBjb25maWd1cmVkIHRvIGJlIGEgZmluZSB2aXJ0dWFsIGhvc3QuCiAKLTE0LiBUZXN0IGNhc2UgMTY1IG1pZ2h0IGZhaWwgb24gYSBzeXN0ZW0gd2hpY2ggaGFzIGxpYmlkbiBwcmVzZW50LCBidXQgd2l0aCBhbgotICBvbGQgaWNvbnYgdmVyc2lvbiAoMi4xLjMgaXMgYSBrbm93biBiYWQgdmVyc2lvbiksIHNpbmNlIGl0IGRvZXNuJ3QgcmVjb2duaXplCi0gIHRoZSBjaGFyc2V0IHdoZW4gbmFtZWQgSVNPODg1OS0xLiBDaGFuZ2luZyB0aGUgbmFtZSB0byBJU08tODg1OS0xIG1ha2VzIHRoZQotICB0ZXN0IHBhc3MsIGJ1dCBpbnN0ZWFkIG1ha2VzIGl0IGZhaWwgb24gU29sYXJpcyBob3N0cyB0aGF0IHVzZSBpdHMgbmF0aXZlCi0gIGljb252LgorIElmIFVSTHMgd2l0aCB0cmFpbGluZyBkb3RzIGZvciBob3N0IG5hbWVzIGJlY29tZSBtb3JlIHBvcHVsYXIgb3IgZXZlbiBqdXN0CisgdXNlZCBtb3JlIHRoYW4gZm9yIGp1c3QgcGxhaW4gZnVuIGV4cGVyaW1lbnRzLCBJJ20gc3VyZSB3ZSB3aWxsIGhhdmUgcmVhc29uCisgdG8gZ28gYmFjayBhbmQgcmVjb25zaWRlci4KIAotMTMuIGN1cmwgdmVyc2lvbiA3LjEyLjIgZmFpbHMgb24gQUlYIGlmIGNvbXBpbGVkIHdpdGggLS1lbmFibGUtYXJlcy4KLSAgVGhlIHdvcmthcm91bmQgaXMgdG8gY29tYmluZSAtLWVuYWJsZS1hcmVzIHdpdGggLS1kaXNhYmxlLXNoYXJlZAorIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy83MTYgZm9yIHRoZSBkaXNjdXNzaW9uLgogCi0xMi4gV2hlbiBjb25uZWN0aW5nIHRvIGEgU09DS1MgcHJveHksIHRoZSAoY29ubmVjdCkgdGltZW91dCBpcyBub3QgcHJvcGVybHkKLSAgYWNrbm93bGVkZ2VkIGFmdGVyIHRoZSBhY3R1YWwgVENQIGNvbm5lY3QgKGR1cmluZyB0aGUgU09DS1MgIm5lZ290aWF0ZSIKLSAgcGhhc2UpLgogCi0xMC4gVG8gZ2V0IEhUVFAgTmVnb3RpYXRlIChTUE5FR08pIGF1dGhlbnRpY2F0aW9uIHRvIHdvcmsgZmluZSwgeW91IG5lZWQgdG8KLSAgcHJvdmlkZSBhIChmYWtlKSB1c2VyIG5hbWUgKHRoaXMgY29uY2VybnMgYm90aCBjdXJsIGFuZCB0aGUgbGliKSBiZWNhdXNlIHRoZQotICBjb2RlIHdyb25nbHkgb25seSBjb25zaWRlcnMgYXV0aGVudGljYXRpb24gaWYgdGhlcmUncyBhIHVzZXIgbmFtZSBwcm92aWRlZC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NDQwIEhvdz8KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTA4LzAxODIuaHRtbAorMi4gVExTCiAKLTguIERvaW5nIHJlc3VtZWQgdXBsb2FkIG92ZXIgSFRUUCBkb2VzIG5vdCB3b3JrIHdpdGggJy1DIC0nLCBiZWNhdXNlIGN1cmwKLSAgZG9lc24ndCBkbyBhIEhFQUQgZmlyc3QgdG8gZ2V0IHRoZSBpbml0aWFsIHNpemUuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZQotICBtYW51YWxseSBmb3IgSFRUUCBQVVQgcmVzdW1lIHRvIHdvcmssIGFuZCB0aGVuICctQyBbaW5kZXhdJy4KKzIuMSBIYW5ncyB3aXRoIFBvbGFyU1NMCiAKLTYuIGxpYmN1cmwgaWdub3JlcyBlbXB0eSBwYXRoIHBhcnRzIGluIEZUUCBVUkxzLCB3aGVyZWFzIFJGQzE3Mzggc3RhdGVzIHRoYXQKLSAgc3VjaCBwYXJ0cyBzaG91bGQgYmUgc2VudCB0byB0aGUgc2VydmVyIGFzICdDV0QgJyAod2l0aG91dCBhbiBhcmd1bWVudCkuCi0gIFRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUsIGlzIHRoYXQgd2Uga25vd2luZ2x5IGJyZWFrIHRoaXMgaWYgdGhlCi0gIGVtcHR5IHBhcnQgaXMgZmlyc3QgaW4gdGhlIHBhdGgsIGFzIHRoZW4gd2UgdXNlIHRoZSBkb3VibGUgc2xhc2hlcyB0bwotICBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIHJlYWNoIHRoZSByb290IGRpciAodGhpcyBleGNlcHRpb24gU0hBTEwKLSAgcmVtYWluIGV2ZW4gd2hlbiB0aGlzIGJ1ZyBpcyBmaXhlZCkuCisgImN1cmxfZWFzeV9wZXJmb3JtIGhhbmdzIHdpdGggaW1hcCBhbmQgUG9sYXJTU0wiCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMzM0CiAKLTUuIGxpYmN1cmwgZG9lc24ndCB0cmVhdCB0aGUgY29udGVudC1sZW5ndGggb2YgY29tcHJlc3NlZCBkYXRhIHByb3Blcmx5LCBhcwotICBpdCBzZWVtcyBIVFRQIHNlcnZlcnMgc2VuZCB0aGUgKnVuY29tcHJlc3NlZCogbGVuZ3RoIGluIHRoYXQgaGVhZGVyIGFuZAotICBsaWJjdXJsIHRoaW5rcyBvZiBpdCBhcyB0aGUgKmNvbXByZXNzZWQqIGxlbmd0aC4gU29tZSBleHBsYW5hdGlvbnMgYXJlIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0wNi8wMTQ2Lmh0bWwKKyBNb3N0IGxpa2VseSwgYSBmaXggc2ltaWxhciB0byBjb21taXQgYzExMTE3OGJkNCAoZm9yIG1iZWRUTFMpIGlzCisgbmVjZXNzYXJ5LiBPciBpZiB3ZSBqdXN0IHdhaXQgYSBsaXR0bGUgbG9uZ2VyIHdlJ2xsIHJpcCBvdXQgYWxsIHN1cHBvcnQgZm9yCisgUG9sYXJTU0wgaW5zdGVhZC4uLgogCi0yLiBJZiBhIEhUVFAgc2VydmVyIHJlc3BvbmRzIHRvIGEgSEVBRCByZXF1ZXN0IGFuZCBpbmNsdWRlcyBhIGJvZHkgKHRodXMKLSAgdmlvbGF0aW5nIHRoZSBSRkMyNjE2KSwgY3VybCB3b24ndCB3YWl0IHRvIHJlYWQgdGhlIHJlc3BvbnNlIGJ1dCBqdXN0IHN0b3AKLSAgcmVhZGluZyBhbmQgcmV0dXJuIGJhY2suIElmIGEgc2Vjb25kIHJlcXVlc3QgKGxldCdzIGFzc3VtZSBhIEdFVCkgaXMgdGhlbgotICBpbW1lZGlhdGVseSBtYWRlIHRvIHRoZSBzYW1lIHNlcnZlciBhZ2FpbiwgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSByZS11c2VkCi0gIGZpbmUgb2YgY291cnNlLCBhbmQgdGhlIHNlY29uZCByZXF1ZXN0IHdpbGwgYmUgc2VudCBvZmYgYnV0IHdoZW4gdGhlCi0gIHJlc3BvbnNlIGlzIHRvIGdldCByZWFkLCB0aGUgcHJldmlvdXMgcmVzcG9uc2UtYm9keSBpcyB3aGF0IGN1cmwgd2lsbCByZWFkCi0gIGFuZCBoYXZvYyBpcyB3aGF0IGhhcHBlbnMuCi0gIE1vcmUgZGV0YWlscyBvbiB0aGlzIGlzIGZvdW5kIGluIHRoaXMgbGliY3VybCBtYWlsaW5nIGxpc3QgdGhyZWFkOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDItMDgvMDAwMC5odG1sCisyLjIgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCBoYXMgbGltaXRlZCBzdXBwb3J0CisKKyBDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9yIHRoZSBPcGVuU1NMIGFuZCBOU1MKKyBiYWNrZW5kcywgc28gcmVseWluZyBvbiB0aGlzIGluZm9ybWF0aW9uIGluIGEgZ2VuZXJpYyBhcHAgaXMgZmxha3kuCisKKzIuMyBERVIgaW4ga2V5Y2hhaW4KKworIEN1cmwgZG9lc24ndCByZWNvZ25pemUgY2VydGlmaWNhdGVzIGluIERFUiBmb3JtYXQgaW4ga2V5Y2hhaW4sIGJ1dCBpdCB3b3JrcworIHdpdGggUEVNLiAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEwNjUKKworMi40IEdudVRMUyBiYWNrZW5kIHNraXBzIHJlYWxseSBsb25nIGNlcnRpZmljYXRlIGZpZWxkcworCisgbGliY3VybCBjYWxscyBnbnV0bHNfeDUwOV9jcnRfZ2V0X2RuKCkgd2l0aCBhIGZpeGVkIGJ1ZmZlciBzaXplIGFuZCBpZiB0aGUKKyBmaWVsZCBpcyB0b28gbG9uZyBpbiB0aGUgY2VydCwgaXQnbGwganVzdCByZXR1cm4gYW4gZXJyb3IgYW5kIHRoZSBmaWVsZCB3aWxsCisgYmUgZGlzcGxheWVkIGJsYW5rLgorCisKKzMuIEVtYWlsIHByb3RvY29scworCiszLjEgSU1BUCBTRUFSQ0ggQUxMIHRydW5jYXRlZCByZXNwb25zZQorCisgSU1BUCAiU0VBUkNIIEFMTCIgdHJ1bmNhdGVzIG91dHB1dCBvbiBsYXJnZSBib3hlcy4gIkEgcXVpY2sgc2VhcmNoIG9mIHRoZQorIGNvZGUgcmV2ZWFscyB0aGF0IHBpbmdwb25nLmMgY29udGFpbnMgc29tZSB0cnVuY2F0aW9uIGNvZGUsIGF0IGxpbmUgNDA4LCB3aGVuCisgaXQgZGVlbXMgdGhlIHNlcnZlciByZXNwb25zZSB0byBiZSB0b28gbGFyZ2UgdHJ1bmNhdGluZyBpdCB0byA0MCBjaGFyYWN0ZXJzIgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzY2CisKKzMuMiBObyBkaXNjb25uZWN0IGNvbW1hbmQKKworIFRoZSBkaXNjb25uZWN0IGNvbW1hbmRzIChMT0dPVVQgYW5kIFFVSVQpIG1heSBub3QgYmUgc2VudCBieSBJTUFQLCBQT1AzIGFuZAorIFNNVFAgaWYgYSBmYWlsdXJlIG9jY3VycyBkdXJpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHBoYXNlIG9mIGEgY29ubmVjdGlvbi4KKworMy4zIFNNVFAgdG8gbXVsdGlwbGUgcmVjaXBpZW50cworCisgV2hlbiBzZW5kaW5nIGRhdGEgdG8gbXVsdGlwbGUgcmVjaXBpZW50cywgY3VybCB3aWxsIGFib3J0IGFuZCByZXR1cm4gZmFpbHVyZQorIGlmIG9uZSBvZiB0aGUgcmVjaXBpZW50cyBpbmRpY2F0ZSBmYWlsdXJlIChvbiB0aGUgIlJDUFQgVE8iCisgY29tbWFuZCkuIE9yZGluYXJ5IG1haWwgcHJvZ3JhbXMgd291bGQgcHJvY2VlZCBhbmQgc3RpbGwgc2VuZCB0byB0aGUgb25lcworIHRoYXQgY2FuIHJlY2VpdmUgZGF0YS4gVGhpcyBpcyBzdWJqZWN0IGZvciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTExNgorCisKKzQuIENvbW1hbmQgbGluZQorCis0LjEgLUogd2l0aCAlLWVuY29kZWQgZmlsZSBuYW1lYXMKKworIC1KLy0tcmVtb3RlLWhlYWRlci1uYW1lIGRvZXNuJ3QgZGVjb2RlICUtZW5jb2RlZCBmaWxlIG5hbWVzLiBSRkM2MjY2IGRldGFpbHMKKyBob3cgaXQgc2hvdWxkIGJlIGRvbmUuIFRoZSBjYW4gb2Ygd29ybSBpcyBiYXNpY2FsbHkgdGhhdCB3ZSBoYXZlIG5vIGNoYXJzZXQKKyBoYW5kbGluZyBpbiBjdXJsIGFuZCBhc2NpaSA+PTEyOCBpcyBhIGNoYWxsZW5nZSBmb3IgdXMuIE5vdCB0byBtZW50aW9uIHRoYXQKKyBkZWNvZGluZyBhbHNvIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBjaGVjayBmb3IgbmFzdGluZXNzIHRoYXQgaXMgYXR0ZW1wdGVkLAorIGxpa2UgIi4uLyIgc2VxdWVuY2VzIGFuZCB0aGUgbGlrZS4gUHJvYmFibHkgZXZlcnl0aGluZyB0byB0aGUgbGVmdCBvZiBhbnkKKyBlbWJlZGRlZCBzbGFzaGVzIHNob3VsZCBiZSBjdXQgb2ZmLgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjk0CisKKzQuMiAtSiB3aXRoIC1DIC0gZmFpbHMKKworIFdoZW4gdXNpbmcgLUogKHdpdGggLU8pLCBhdXRvbWF0aWNhbGx5IHJlc3VtZWQgZG93bmxvYWRpbmcgdG9nZXRoZXIgd2l0aCAiLUMKKyAtIiBmYWlscy4gV2l0aG91dCAtSiB0aGUgc2FtZSBjb21tYW5kIGxpbmUgd29ya3MhIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZQorIHJlc3VtZSBsb2dpYyBpcyB3b3JrZWQgb3V0IGJlZm9yZSB0aGUgdGFyZ2V0IGZpbGUgbmFtZSAoYW5kIHRodXMgaXRzCisgcHJlLXRyYW5zZmVyIHNpemUpIGhhcyBiZWVuIGZpZ3VyZWQgb3V0IQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMTY5CisKKzQuMyAtLXJldHJ5IGFuZCB0cmFuc2ZlciB0aW1lb3V0cworCisgSWYgdXNpbmcgLS1yZXRyeSBhbmQgdGhlIHRyYW5zZmVyIHRpbWVvdXRzIChwb3NzaWJseSBkdWUgdG8gdXNpbmcgLW0gb3IKKyAteS8tWSkgdGhlIG5leHQgYXR0ZW1wdCBkb2Vzbid0IHJlc3VtZSB0aGUgdHJhbnNmZXIgcHJvcGVybHkgZnJvbSB3aGF0IHdhcworIGRvd25sb2FkZWQgaW4gdGhlIHByZXZpb3VzIGF0dGVtcHQgYnV0IHdpbGwgdHJ1bmNhdGUgYW5kIHJlc3RhcnQgYXQgdGhlCisgb3JpZ2luYWwgcG9zaXRpb24gd2hlcmUgaXQgd2FzIGF0IGJlZm9yZSB0aGUgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQuIFNlZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDEvMDA4MC5odG1sIGFuZCBNYW5kcml2YSBidWcgcmVwb3J0CisgaHR0cHM6Ly9xYS5tYW5kcml2YS5jb20vc2hvd19idWcuY2dpP2lkPTIyNTY1CisKKworNS4gQnVpbGQgYW5kIHBvcnRhYmlsaXR5IGlzc3VlcworCis1LjEgV2luZG93cyBCb3JsYW5kIGNvbXBpbGVyCisKKyBXaGVuIGJ1aWxkaW5nIHdpdGggdGhlIFdpbmRvd3MgQm9ybGFuZCBjb21waWxlciwgaXQgZmFpbHMgYmVjYXVzZSB0aGUgInRsaWIiCisgdG9vbCBkb2Vzbid0IHN1cHBvcnQgaHlwaGVucyAobWludXMgc2lnbnMpIGluIGZpbGUgbmFtZXMgYW5kIHdlIGhhdmUgc3VjaCBpbgorIHRoZSBidWlsZC4gIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjIyCisKKzUuMiBjdXJsLWNvbmZpZyAtLWxpYnMgY29udGFpbnMgcHJpdmF0ZSBkZXRhaWxzCisKKyAiY3VybC1jb25maWcgLS1saWJzIiB3aWxsIGluY2x1ZGUgZGV0YWlscyBzZXQgaW4gTERGTEFHUyB3aGVuIGNvbmZpZ3VyZSBpcworIHJ1biB0aGF0IG1pZ2h0IGJlIG5lZWRlZCBvbmx5IGZvciBidWlsZGluZyBsaWJjdXJsLiBGdXJ0aGVyLCBjdXJsLWNvbmZpZworIC0tY2ZsYWdzIHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBlZmZlY3RzIHdpdGggQ0ZMQUdTL0NQUEZMQUdTLgorCis1LjMgbGliaWRuIGFuZCBvbGQgaWNvbnYKKworIFRlc3QgY2FzZSAxNjUgbWlnaHQgZmFpbCBvbiBhIHN5c3RlbSB3aGljaCBoYXMgbGliaWRuIHByZXNlbnQsIGJ1dCB3aXRoIGFuCisgb2xkIGljb252IHZlcnNpb24gKDIuMS4zIGlzIGEga25vd24gYmFkIHZlcnNpb24pLCBzaW5jZSBpdCBkb2Vzbid0IHJlY29nbml6ZQorIHRoZSBjaGFyc2V0IHdoZW4gbmFtZWQgSVNPODg1OS0xLiBDaGFuZ2luZyB0aGUgbmFtZSB0byBJU08tODg1OS0xIG1ha2VzIHRoZQorIHRlc3QgcGFzcywgYnV0IGluc3RlYWQgbWFrZXMgaXQgZmFpbCBvbiBTb2xhcmlzIGhvc3RzIHRoYXQgdXNlIGl0cyBuYXRpdmUKKyBpY29udi4KKworNS40IEFJWCBzaGFyZWQgYnVpbGQgd2l0aCBjLWFyZXMgZmFpbHMKKworIGN1cmwgdmVyc2lvbiA3LjEyLjIgZmFpbHMgb24gQUlYIGlmIGNvbXBpbGVkIHdpdGggLS1lbmFibGUtYXJlcy4gIFRoZQorIHdvcmthcm91bmQgaXMgdG8gY29tYmluZSAtLWVuYWJsZS1hcmVzIHdpdGggLS1kaXNhYmxlLXNoYXJlZAorCis1LjUgY2FuJ3QgaGFuZGxlIFVuaWNvZGUgYXJndW1lbnRzIGluIFdpbmRvd3MKKworIElmIGEgVVJMIG9yIGZpbGVuYW1lIGNhbid0IGJlIGVuY29kZWQgdXNpbmcgdGhlIHVzZXIncyBjdXJyZW50IGNvZGVwYWdlIHRoZW4KKyBpdCBjYW4gb25seSBiZSBlbmNvZGVkIHByb3Blcmx5IGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQuIFdpbmRvd3MgdXNlcworIFVURi0xNiBlbmNvZGluZyBmb3IgVW5pY29kZSBhbmQgc3RvcmVzIGl0IGluIHdpZGUgY2hhcmFjdGVycywgaG93ZXZlciBjdXJsCisgYW5kIGxpYmN1cmwgYXJlIG5vdCBlcXVpcHBlZCBmb3IgdGhhdCBhdCB0aGUgbW9tZW50LiBBbmQsIGV4Y2VwdCBmb3IgQ3lnd2luLAorIFdpbmRvd3MgY2FuJ3QgdXNlIFVURi04IGFzIGEgbG9jYWxlLgorCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT0zNDUKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTczMQorCisKKzYuIEF1dGhlbnRpY2F0aW9uCisKKzYuMSBOVExNIGF1dGhlbnRpY2F0aW9uIGFuZCB1bmljb2RlCisKKyBOVExNIGF1dGhlbnRpY2F0aW9uIGludm9sdmluZyB1bmljb2RlIHVzZXIgbmFtZSBvciBwYXNzd29yZCBvbmx5IHdvcmtzCisgcHJvcGVybHkgaWYgYnVpbHQgd2l0aCBVTklDT0RFIGRlZmluZWQgdG9nZXRoZXIgd2l0aCB0aGUgV2luU1NML3NjaGFubmVsCisgYmFja2VuZC4gVGhlIG9yaWdpbmFsIHByb2JsZW0gd2FzIG1lbnRpb25lZCBpbjoKKyBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTEwLzAwMjQuaHRtbAorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04OTYKKworIFRoZSBXaW5TU0wvc2NoYW5uZWwgdmVyc2lvbiB2ZXJpZmllZCB0byB3b3JrIGFzIG1lbnRpb25lZCBpbgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTItMDcvMDA3My5odG1sCisKKzYuMiBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgYnVpbGQKKworIGxpYmN1cmwgZmFpbHMgdG8gYnVpbGQgd2l0aCBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgKEtmVykgZHVlIHRvIEtmVydzCisgbGlicmFyeSBoZWFkZXIgZmlsZXMgZXhwb3J0aW5nIHN5bWJvbHMvbWFjcm9zIHRoYXQgc2hvdWxkIGJlIGtlcHQgcHJpdmF0ZSB0bworIHRoZSBLZlcgbGlicmFyeS4gU2VlIHRpY2tldCAjNTYwMSBhdCBodHRwOi8va3JiZGV2Lm1pdC5lZHUvcnQvCisKKzYuMyBOVExNIGluIHN5c3RlbSBjb250ZXh0IHVzZXMgd3JvbmcgbmFtZQorCisgTlRMTSBhdXRoZW50aWNhdGlvbiB1c2luZyBTU1BJIChvbiBXaW5kb3dzKSB3aGVuIChsaWIpY3VybCBpcyBydW5uaW5nIGluCisgInN5c3RlbSBjb250ZXh0IiB3aWxsIG1ha2UgaXQgdXNlIHdyb25nKD8pIHVzZXIgbmFtZSAtIGF0IGxlYXN0IHdoZW4gY29tcGFyZWQKKyB0byB3aGF0IHdpbmh0dHAgZG9lcy4gU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD01MzUKKworNi40IE5lZ290aWF0ZSBuZWVkcyBhIGZha2UgdXNlciBuYW1lCisKKyBUbyBnZXQgSFRUUCBOZWdvdGlhdGUgKFNQTkVHTykgYXV0aGVudGljYXRpb24gdG8gd29yayBmaW5lLCB5b3UgbmVlZCB0bworIHByb3ZpZGUgYSAoZmFrZSkgdXNlciBuYW1lICh0aGlzIGNvbmNlcm5zIGJvdGggY3VybCBhbmQgdGhlIGxpYikgYmVjYXVzZSB0aGUKKyBjb2RlIHdyb25nbHkgb25seSBjb25zaWRlcnMgYXV0aGVudGljYXRpb24gaWYgdGhlcmUncyBhIHVzZXIgbmFtZSBwcm92aWRlZC4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NDQwIEhvdz8KKyBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTA4LzAxODIuaHRtbAorCisKKzcuIEZUUAorCis3LjEgRlRQIHdpdGhvdXQgb3Igc2xvdyAyMjAgcmVzcG9uc2UKKworIElmIGEgY29ubmVjdGlvbiBpcyBtYWRlIHRvIGEgRlRQIHNlcnZlciBidXQgdGhlIHNlcnZlciB0aGVuIGp1c3QgbmV2ZXIgc2VuZHMKKyB0aGUgMjIwIHJlc3BvbnNlIG9yIG90aGVyd2lzZSBpcyBkZWFkIHNsb3csIGxpYmN1cmwgd2lsbCBub3QgYWNrbm93bGVkZ2UgdGhlCisgY29ubmVjdGlvbiB0aW1lb3V0IGR1cmluZyB0aGF0IHBoYXNlIGJ1dCBvbmx5IHRoZSAicmVhbCIgdGltZW91dCAtIHdoaWNoIG1heQorIHN1cnByaXNlIHVzZXJzIGFzIGl0IGlzIHByb2JhYmx5IGNvbnNpZGVyZWQgdG8gYmUgdGhlIGNvbm5lY3QgcGhhc2UgdG8gbW9zdAorIHBlb3BsZS4gQnJvdWdodCB1cCAoYW5kIGlzIGJlaW5nIG1pc3VuZGVyc3Rvb2QpIGluOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NTYKKworNy4yIEZUUCB3aXRoIENPTk5FQ1QgYW5kIHNsb3cgc2VydmVyCisKKyBXaGVuIGRvaW5nIEZUUCBvdmVyIGEgc29ja3MgcHJveHkgb3IgQ09OTkVDVCB0aHJvdWdoIEhUVFAgcHJveHkgYW5kIHRoZSBtdWx0aQorIGludGVyZmFjZSBpcyB1c2VkLCBsaWJjdXJsIHdpbGwgZmFpbCBpZiB0aGUgKHBhc3NpdmUpIFRDUCBjb25uZWN0aW9uIGZvciB0aGUKKyBkYXRhIHRyYW5zZmVyIGlzbid0IG1vcmUgb3IgbGVzcyBpbnN0YW50IGFzIHRoZSBjb2RlIGRvZXMgbm90IHByb3Blcmx5IHdhaXQKKyBmb3IgdGhlIGNvbm5lY3QgdG8gYmUgY29uZmlybWVkLiBTZWUgdGVzdCBjYXNlIDU2NCBmb3IgYSBmaXJzdCBzaG90IGF0IGEgdGVzdAorIGNhc2UuCisKKzcuMyBGVFAgd2l0aCBOT0JPRFkgYW5kIEZBSUxPTkVSUk9SCisKKyBJdCBzZWVtcyBzZW5zaWJsZSB0byBiZSBhYmxlIHRvIHVzZSBDVVJMT1BUX05PQk9EWSBhbmQgQ1VSTE9QVF9GQUlMT05FUlJPUgorIHdpdGggRlRQIHRvIGRldGVjdCBpZiBhIGZpbGUgZXhpc3RzIG9yIG5vdCwgYnV0IGl0IGlzIG5vdCB3b3JraW5nOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDcvMDI5NS5odG1sCisKKzcuNCBGVFAgd2l0aCBBQ0NUCisKKyBXaGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvdmVyIEZUUCB0aGF0IHJlcXVpcmVzIHRoZSBBQ0NUIGNvbW1hbmQgKGJ1dCBub3Qgd2hlbgorIGxvZ2dpbmcgaW4pLCB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBzaW5jZSBsaWJjdXJsIGRvZXNuJ3QgZGV0ZWN0IHRoaXMgYW5kCisgdGh1cyBmYWlscyB0byBpc3N1ZSB0aGUgY29ycmVjdCBjb21tYW5kOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MzUKKworNy41IEFTQ0lJIEZUUAorCisgRlRQIEFTQ0lJIHRyYW5zZmVycyBkbyBub3QgZm9sbG93IFJGQzk1OS4gVGhleSBkb24ndCBjb252ZXJ0IHRoZSBkYXRhCisgYWNjb3JkaW5nbHkgKG5vdCBmb3Igc2VuZGluZyBub3IgZm9yIHJlY2VpdmluZykuIFJGQyA5NTkgc2VjdGlvbiAzLjEuMS4xCisgY2xlYXJseSBkZXNjcmliZXMgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmU6CisKKyAgICBUaGUgc2VuZGVyIGNvbnZlcnRzIHRoZSBkYXRhIGZyb20gYW4gaW50ZXJuYWwgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIHRvCisgICAgdGhlIHN0YW5kYXJkIDgtYml0IE5WVC1BU0NJSSByZXByZXNlbnRhdGlvbiAoc2VlIHRoZSBUZWxuZXQKKyAgICBzcGVjaWZpY2F0aW9uKS4gIFRoZSByZWNlaXZlciB3aWxsIGNvbnZlcnQgdGhlIGRhdGEgZnJvbSB0aGUgc3RhbmRhcmQKKyAgICBmb3JtIHRvIGhpcyBvd24gaW50ZXJuYWwgZm9ybS4KKworIFNpbmNlIDcuMTUuNCBhdCBsZWFzdCBsaW5lIGVuZGluZ3MgYXJlIGNvbnZlcnRlZC4KKworNy42IEZUUCB3aXRoIE5VTHMgaW4gVVJMIHBhcnRzCisKKyBGVFAgVVJMcyBwYXNzZWQgdG8gY3VybCBtYXkgY29udGFpbiBOVUwgKDB4MDApIGluIHRoZSBSRkMgMTczOCA8dXNlcj4sCisgPHBhc3N3b3JkPiwgYW5kIDxmcGF0aD4gY29tcG9uZW50cywgZW5jb2RlZCBhcyAiJTAwIi4gIFRoZSBwcm9ibGVtIGlzIHRoYXQKKyBjdXJsX3VuZXNjYXBlIGRvZXMgbm90IGRldGVjdCB0aGlzLCBidXQgaW5zdGVhZCByZXR1cm5zIGEgc2hvcnRlbmVkIEMgc3RyaW5nLgorIEZyb20gYSBzdHJpY3QgRlRQIHByb3RvY29sIHN0YW5kcG9pbnQsIE5VTCBpcyBhIHZhbGlkIGNoYXJhY3RlciB3aXRoaW4gUkZDCisgOTU5IDxzdHJpbmc+LCBzbyB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzIGNvcnJlY3RseSBpbiBjdXJsIHdvdWxkIGJlIHRvIHVzZSBhCisgZGF0YSBzdHJ1Y3R1cmUgb3RoZXIgdGhhbiBhIHBsYWluIEMgc3RyaW5nLCBvbmUgdGhhdCBjYW4gaGFuZGxlIGVtYmVkZGVkIE5VTAorIGNoYXJhY3RlcnMuICBGcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIG1vc3QgRlRQIHNlcnZlcnMgd291bGQgbm90CisgbWVhbmluZ2Z1bGx5IHN1cHBvcnQgTlVMIGNoYXJhY3RlcnMgd2l0aGluIFJGQyA5NTkgPHN0cmluZz4sIGFueXdheSAoZS5nLiwKKyBVbml4IHBhdGhuYW1lcyBtYXkgbm90IGNvbnRhaW4gTlVMKS4KKworNy43IEZUUCBhbmQgZW1wdHkgcGF0aCBwYXJ0cyBpbiB0aGUgVVJMCisKKyBsaWJjdXJsIGlnbm9yZXMgZW1wdHkgcGF0aCBwYXJ0cyBpbiBGVFAgVVJMcywgd2hlcmVhcyBSRkMxNzM4IHN0YXRlcyB0aGF0Cisgc3VjaCBwYXJ0cyBzaG91bGQgYmUgc2VudCB0byB0aGUgc2VydmVyIGFzICdDV0QgJyAod2l0aG91dCBhbiBhcmd1bWVudCkuICBUaGUKKyBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUsIGlzIHRoYXQgd2Uga25vd2luZ2x5IGJyZWFrIHRoaXMgaWYgdGhlIGVtcHR5CisgcGFydCBpcyBmaXJzdCBpbiB0aGUgcGF0aCwgYXMgdGhlbiB3ZSB1c2UgdGhlIGRvdWJsZSBzbGFzaGVzIHRvIGluZGljYXRlIHRoYXQKKyB0aGUgdXNlciB3YW50cyB0byByZWFjaCB0aGUgcm9vdCBkaXIgKHRoaXMgZXhjZXB0aW9uIFNIQUxMIHJlbWFpbiBldmVuIHdoZW4KKyB0aGlzIGJ1ZyBpcyBmaXhlZCkuCisKKworOC4gVEVMTkVUCisKKzguMSBURUxORVQgYW5kIHRpbWUgbGltdGlhdGlvbnMgZG9uJ3Qgd29yaworCisgV2hlbiB1c2luZyB0ZWxuZXQsIHRoZSB0aW1lIGxpbWl0YXRpb24gb3B0aW9ucyBkb24ndCB3b3JrLgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NDYKKworOC4yIE1pY3Jvc29mdCB0ZWxuZXQgc2VydmVyCisKKyBUaGVyZSBzZWVtcyB0byBiZSBhIHByb2JsZW0gd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNaWNyb3NvZnQgdGVsbmV0IHNlcnZlci4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NjQ5CisKKworOS4gU0ZUUCBhbmQgU0NQCisKKzkuMSBTRlRQIGRvZXNuJ3QgZG8gQ1VSTE9QVF9QT1NUUVVPVEUgY29ycmVjdAorCisgV2hlbiBsaWJjdXJsIHNlbmRzIENVUkxPUFRfUE9TVFFVT1RFIGNvbW1hbmRzIHdoZW4gY29ubmVjdGVkIHRvIGEgU0ZUUCBzZXJ2ZXIKKyB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlLCB0aGUgY29tbWFuZHMgYXJlIG5vdCBiZWluZyBzZW50IGNvcnJlY3RseSBhbmQKKyBpbnN0ZWFkIHRoZSBjb25uZWN0aW9uIGlzICJjYW5jZWxsZWQiICh0aGUgb3BlcmF0aW9uIGlzIGNvbnNpZGVyZWQgZG9uZSkKKyBwcmVtYXR1cmVseS4gVGhlcmUgaXMgYSBoYWxmLWJha2VkIChidXN5LWxvb3BpbmcpIHBhdGNoIHByb3ZpZGVkIGluIHRoZSBidWcKKyByZXBvcnQgYnV0IGl0IGNhbm5vdCBiZSBhY2NlcHRlZCBhcy1pcy4gU2VlCisgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTc0OAorCisKKzEwLiBTT0NLUworCisxMC4xIFNPQ0tTIHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nCisKKyBCb3RoIFNPQ0tTNSBhbmQgU09DS1M0IHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nLCB3aGljaCBpcyB2ZXJ5IGJhZAorIHdoZW4gdXNlZCB3aXRoIHRoZSBtdWx0aSBpbnRlcmZhY2UuCisKKzEwLjIgU09DS1MgZG9uJ3Qgc3VwcG9ydCB0aW1lb3V0cworCisgVGhlIFNPQ0tTNCBjb25uZWN0aW9uIGNvZGVzIGRvbid0IHByb3Blcmx5IGFja25vd2xlZGdlIChjb25uZWN0KSB0aW1lb3V0cy4KKyBBY2NvcmRpbmcgdG8gYnVnICMxNTU2NTI4LCBldmVuIHRoZSBTT0NLUzUgY29ubmVjdCBjb2RlIGRvZXMgbm90IGRvIGl0IHJpZ2h0OgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MDQKKworIFdoZW4gY29ubmVjdGluZyB0byBhIFNPQ0sgcHJveHksIHRoZSAoY29ubmVjdCkgdGltZW91dCBpcyBub3QgcHJvcGVybHkKKyBhY2tub3dsZWRnZWQgYWZ0ZXIgdGhlIGFjdHVhbCBUQ1AgY29ubmVjdCAoZHVyaW5nIHRoZSBTT0NLUyAibmVnb3RpYXRlIgorIHBoYXNlKS4KKworMTAuMyBGVFBTIG92ZXIgU09DS1MKKworIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IEZUUFMgb3ZlciBhIFNPQ0tTIHByb3h5LgorCisxMC40IGFjdGl2ZSBGVFAgb3ZlciBhIFNPQ0tTCisKKyBsaWJjdXJsIGRvZXNuJ3Qgc3VwcG9ydCBhY3RpdmUgRlRQIG92ZXIgYSBTT0NLUyBwcm94eQorCisKKzExLiBJbnRlcm5hbHMKKworMTEuMSBDdXJsIGxlYWtzIC5vbmlvbiBob3N0bmFtZXMgaW4gRE5TCisKKyBDdXJsIHNlbmRzIEROUyByZXF1ZXN0cyBmb3IgaG9zdG5hbWVzIHdpdGggYSAub25pb24gVExELiBUaGlzIGxlYWtzCisgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgdXNlciBpcyBhdHRlbXB0aW5nIHRvIGFjY2VzcywgYW5kIHZpb2xhdGVzIHRoaXMKKyByZXF1aXJlbWVudCBvZiBSRkM3Njg2OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzY4NgorCisgSXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzU0MworCisxMS4yIGVycm9yIGJ1ZmZlciBub3Qgc2V0IGlmIGNvbm5lY3Rpb24gdG8gbXVsdGlwbGUgYWRkcmVzc2VzIGZhaWxzCisKKyBJZiB5b3UgYXNrIGxpYmN1cmwgdG8gcmVzb2x2ZSBhIGhvc3RuYW1lIGxpa2UgZXhhbXBsZS5jb20gdG8gSVB2NiBhZGRyZXNzZXMKKyBvbmx5LiBCdXQgeW91IG9ubHkgaGF2ZSBJUHY0IGNvbm5lY3Rpdml0eS4gbGliY3VybCB3aWxsIGNvcnJlY3RseSBmYWlsIHdpdGgKKyBDVVJMRV9DT1VMRE5UX0NPTk5FQ1QuIEJ1dCB0aGUgZXJyb3IgYnVmZmVyIHNldCBieSBDVVJMT1BUX0VSUk9SQlVGRkVSCisgcmVtYWlucyBlbXB0eS4gSXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzU0NAorCisKKzEyLiBMREFQIGFuZCBPcGVuTERBUAorCisxMi4xIE9wZW5MREFQIGhhbmdzIGFmdGVyIHJldHVybmluZyByZXN1bHRzCisKKyBCeSBjb25maWd1cmF0aW9uIGRlZmF1bHRzLCBvcGVubGRhcCBhdXRvbWF0aWNhbGx5IGNoYXNlIHJlZmVycmFscyBvbgorIHNlY29uZGFyeSBzb2NrZXQgZGVzY3JpcHRvcnMuIFRoZSBPcGVuTERBUCBiYWNrZW5kIGlzIGFzeW5jaHJvbm91cyBhbmQgdGh1cworIHNob3VsZCBtb25pdG9yIGFsbCBzb2NrZXQgZGVzY3JpcHRvcnMgaW52b2x2ZWQuIEN1cnJlbnRseSwgdGhlc2Ugc2Vjb25kYXJ5CisgZGVzY3JpcHRvcnMgYXJlIG5vdCBtb25pdG9yZWQsIGNhdXNpbmcgb3BlbmxkYXAgbGlicmFyeSB0byBuZXZlciByZWNlaXZlCisgZGF0YSBmcm9tIHRoZW0uCisKKyBBcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLCBkaXNhYmxlIHJlZmVycmFscyBjaGFzaW5nIGJ5IGNvbmZpZ3VyYXRpb24uCisKKyBUaGUgZml4IGlzIG5vdCBlYXN5OiBwcm9wZXIgYXV0b21hdGljIHJlZmVycmFscyBjaGFzaW5nIHJlcXVpcmVzIGEKKyBzeW5jaHJvbm91cyBiaW5kIGNhbGxiYWNrIGFuZCBtb25pdG9yaW5nIGFuIGFyYml0cmFyeSBudW1iZXIgb2Ygc29ja2V0CisgZGVzY3JpcHRvcnMgZm9yIGEgc2luZ2xlIGVhc3kgaGFuZGxlIChjdXJyZW50bHkgbGltaXRlZCB0byA1KS4KKworIEdlbmVyaWMgTERBUCBpcyBzeW5jaHJvbm91czogT0suCisKKyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNjIyIGFuZAorICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE2LTAxLzAxMDEuaHRtbAorCisKKzEzIFRDUC9JUAorCisxMy4xIC0taW50ZXJmYWNlIGZvciBpcHY2IGJpbmRzIHRvIHVudXNhYmxlIElQIGFkZHJlc3MKKworIFNpbmNlIElQdjYgcHJvdmlkZXMgYSBsb3Qgb2YgYWRkcmVzc2VzIHdpdGggZGlmZmVyZW50IHNjb3BlLCBiaW5kaW5nIHRvIGFuCisgSVB2NiBhZGRyZXNzIG5lZWRzIHRvIHRha2UgdGhlIHByb3BlciBjYXJlIHNvIHRoYXQgaXQgZG9lc24ndCBiaW5kIHRvIGEKKyBsb2NhbGx5IHNjb3BlZCBhZGRyZXNzIGFzIHRoYXQgaXMgYm91bmQgdG8gZmFpbC4KKworIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzY4NgpkaWZmIC0tZ2l0IGEvZG9jcy9MSUNFTlNFLU1JWElORyBiL2RvY3MvTElDRU5TRS1NSVhJTkcKaW5kZXggY2NiNmFkYS4uZDhlMzZjYSAxMDA2NDQKLS0tIGEvZG9jcy9MSUNFTlNFLU1JWElORworKysgYi9kb2NzL0xJQ0VOU0UtTUlYSU5HCkBAIC0xOCw3ICsxOCw3IEBACiBhZGRyZXNzZWQgd2hlbiB0aGUgTW9kaWZpZWQgQlNEIGxpY2Vuc2Ugd2FzIGNyZWF0ZWQsIHdoaWNoIGRvZXMgbm90IGhhdmUgdGhlCiBhbm5vdW5jZW1lbnQgY2xhdXNlIHRoYXQgY29sbGlkZXMgd2l0aCBHUEwuCiAKLWxpYmN1cmwgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sCitsaWJjdXJsIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKIAogICAgICAgICBVc2VzIGFuIE1JVCAob3IgTW9kaWZpZWQgQlNEKS1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgYXMgbGliZXJhbCBhcwogICAgICAgICBwb3NzaWJsZS4KQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgKE1heSBiZSB1c2VkIGZvciBTU0wvVExTIHN1cHBvcnQpIEFzIGFuIE9wZW5TU0wgZm9yaywgaXQgaGFzIHRoZSBzYW1lCiAgICAgICAgIGxpY2Vuc2UgYXMgdGhhdC4KIAotYy1hcmVzICBodHRwOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvYy1hcmVzL2xpY2Vuc2UuaHRtbAorYy1hcmVzICBodHRwczovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy9saWNlbnNlLmh0bWwKIAogICAgICAgICAoVXNlZCBmb3IgYXN5bmNocm9ub3VzIG5hbWUgcmVzb2x2ZXMpIFVzZXMgYW4gTUlUIGxpY2Vuc2UgdGhhdCBpcyB2ZXJ5CiAgICAgICAgIGxpYmVyYWwgYW5kIGltcG9zZXMgbm8gcmVzdHJpY3Rpb25zIG9uIGFueSBvdGhlciBsaWJyYXJ5IG9yIHBhcnQgeW91CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgbGliY3VybCB1c2VzIE9wZW5MREFQIGFzIGEgc2hhcmVkIGxpYnJhcnkgb25seSwgSSBoYXZlIG5vdCBoZWFyZCBvZgogICAgICAgICBhbnlvbmUgdGhhdCBzaGlwcyBPcGVuTERBUCBsaW5rZWQgd2l0aCBsaWJjdXJsIGluIGFuIGFwcC4KIAotbGlic3NoMiBodHRwOi8vd3d3LmxpYnNzaDIub3JnLworbGlic3NoMiBodHRwczovL3d3dy5saWJzc2gyLm9yZy8KIAogICAgICAgICAoVXNlZCBmb3Igc2NwIGFuZCBzZnRwIHN1cHBvcnQpIGxpYnNzaDIgdXNlcyBhIE1vZGlmaWVkIEJTRC1zdHlsZQogICAgICAgICBsaWNlbnNlLgpkaWZmIC0tZ2l0IGEvZG9jcy9NQUlMLUVUSVFVRVRURSBiL2RvY3MvTUFJTC1FVElRVUVUVEUKaW5kZXggYjZjMGY0NS4uNzUwNTgwMCAxMDA2NDQKLS0tIGEvZG9jcy9NQUlMLUVUSVFVRVRURQorKysgYi9kb2NzL01BSUwtRVRJUVVFVFRFCkBAIC0zMyw3ICszMyw3IEBACiAgIDEuMSBNYWlsaW5nIExpc3RzCiAKICAgVGhlIG1haWxpbmcgbGlzdHMgd2UgaGF2ZSBhcmUgYWxsIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGF0Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogICBFYWNoIG1haWxpbmcgbGlzdCBpcyB0YXJnZXRlZCB0byBhIHNwZWNpZmljIHNldCBvZiB1c2VycyBhbmQgc3ViamVjdHMsCiAgIHBsZWFzZSB1c2UgdGhlIG9uZSBvciB0aGUgb25lcyB0aGF0IHN1aXQgeW91IHRoZSBtb3N0LgpkaWZmIC0tZ2l0IGEvZG9jcy9NQU5VQUwgYi9kb2NzL01BTlVBTAppbmRleCBmYjM0OTQ4Li4wOGZkYjU3IDEwMDY0NAotLS0gYS9kb2NzL01BTlVBTAorKysgYi9kb2NzL01BTlVBTApAQCAtMyw3ICszLDcgQEAKICAgWW91IGFsd2F5cyBmaW5kIG5ld3MgYWJvdXQgd2hhdCdzIGdvaW5nIG9uIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9ucwogICBmcm9tIHRoZSBjdXJsIHdlYiBwYWdlcywgbG9jYXRlZCBhdDoKIAotICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlCisgICAgICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlCiAKIFNJTVBMRSBVU0FHRQogCkBAIC04MjQsNyArODI0LDcgQEAKICAgV29ya2luZyB3aXRoIExEQVAgVVJMcyI6CiAgIGh0dHA6Ly9kZXZlbG9wZXIubmV0c2NhcGUuY29tL2RvY3MvbWFudWFscy9kaXJzZGsvY3NkazMwL3VybC5odG0KIAotICBSRkMgMjI1NSwgIlRoZSBMREFQIFVSTCBGb3JtYXQiIGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL3JmYzIyNTUudHh0CisgIFJGQyAyMjU1LCAiVGhlIExEQVAgVVJMIEZvcm1hdCIgaHR0cHM6Ly9jdXJsLmhheHguc2UvcmZjL3JmYzIyNTUudHh0CiAKICAgVG8gc2hvdyB5b3UgYW4gZXhhbXBsZSwgdGhpcyBpcyBob3cgSSBjYW4gZ2V0IGFsbCBwZW9wbGUgZnJvbSBteSBsb2NhbCBMREFQCiAgIHNlcnZlciB0aGF0IGhhcyBhIGNlcnRhaW4gc3ViLWRvbWFpbiBpbiB0aGVpciBlbWFpbCBhZGRyZXNzOgpAQCAtMTAxMSw3ICsxMDExLDcgQEAKIAogICBGb3IgeW91ciBjb252ZW5pZW5jZSwgd2UgaGF2ZSBzZXZlcmFsIG9wZW4gbWFpbGluZyBsaXN0cyB0byBkaXNjdXNzIGN1cmwsCiAgIGl0cyBkZXZlbG9wbWVudCBhbmQgdGhpbmdzIHJlbGV2YW50IHRvIHRoaXMuIEdldCBhbGwgaW5mbyBhdAotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvLiBTb21lIG9mIHRoZSBsaXN0cyBhdmFpbGFibGUgYXJlOgorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLy4gU29tZSBvZiB0aGUgbGlzdHMgYXZhaWxhYmxlIGFyZToKIAogICBjdXJsLXVzZXJzCiAKZGlmZiAtLWdpdCBhL2RvY3MvTWFrZWZpbGUuYW0gYi9kb2NzL01ha2VmaWxlLmFtCmluZGV4IGUzZTI3ZDMuLjI4NGU1MzEgMTAwNjQ0Ci0tLSBhL2RvY3MvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsMjIgKzMzLDIyIEBACiAKIENMRUFORklMRVMgPSAkKEdFTkhUTUxQQUdFUykgJChQREZQQUdFUykKIAotRVhUUkFfRElTVCA9IE1BTlVBTCBCVUdTIENPTlRSSUJVVEUgRkFRIEZFQVRVUkVTIElOVEVSTkFMUyBTU0xDRVJUUwkgXAotIFJFQURNRS53aW4zMiBSRVNPVVJDRVMgVE9ETyBUaGVBcnRPZkh0dHBTY3JpcHRpbmcgVEhBTktTIFZFUlNJT05TCSBcCi0gS05PV05fQlVHUyBCSU5ESU5HUyAkKG1hbl9NQU5TKSAkKEhUTUxQQUdFUykgSElTVE9SWSBJTlNUQUxMCQkgXAotICQoUERGUEFHRVMpIExJQ0VOU0UtTUlYSU5HIFJFQURNRS5uZXR3YXJlIERJU1RSTy1ESUxFTU1BIElOU1RBTEwuZGV2Y3BwIFwKLSBNQUlMLUVUSVFVRVRURSBIVFRQLUNPT0tJRVMgU0VDVVJJVFkgUkVMRUFTRS1QUk9DRURVUkUgIFwKLSBTU0wtUFJPQkxFTVMgSFRUUDIubWQgUk9BRE1BUC5tZAorRVhUUkFfRElTVCA9IE1BTlVBTCBCVUdTIENPTlRSSUJVVEUgRkFRIEZFQVRVUkVTIElOVEVSTkFMUyBTU0xDRVJUUyAgICAgXAorIFJFQURNRS53aW4zMiBSRVNPVVJDRVMgVE9ETyBUaGVBcnRPZkh0dHBTY3JpcHRpbmcgVEhBTktTIFZFUlNJT05TICAgICAgXAorIEtOT1dOX0JVR1MgQklORElOR1MgJChtYW5fTUFOUykgJChIVE1MUEFHRVMpIEhJU1RPUlkgSU5TVEFMTCAgICAgICAgICAgXAorICQoUERGUEFHRVMpIExJQ0VOU0UtTUlYSU5HIFJFQURNRS5uZXR3YXJlIElOU1RBTEwuZGV2Y3BwICAgICAgICAgICAgICAgXAorIE1BSUwtRVRJUVVFVFRFIEhUVFAtQ09PS0lFUy5tZCBTRUNVUklUWSBSRUxFQVNFLVBST0NFRFVSRSBTU0wtUFJPQkxFTVMgXAorIEhUVFAyLm1kIFJPQURNQVAubWQgQ09ERV9PRl9DT05EVUNULm1kIENPREVfU1RZTEUubWQgQ0hFQ0tTUkMubWQKIAotTUFOMkhUTUw9IHJvZmZpdCA8ICQ8ID4kQAorTUFOMkhUTUw9IHJvZmZpdCAkPCA+JEAKIAogU1VGRklYRVMgPSAuMSAuaHRtbCAucGRmCiAKIGh0bWw6ICQoSFRNTFBBR0VTKQotCWNkIGxpYmN1cmw7IG1ha2UgaHRtbAorCWNkIGxpYmN1cmwgJiYgbWFrZSBodG1sCiAKIHBkZjogJChQREZQQUdFUykKLQljZCBsaWJjdXJsOyBtYWtlIHBkZgorCWNkIGxpYmN1cmwgJiYgbWFrZSBwZGYKIAogLjEuaHRtbDoKIAkkKE1BTjJIVE1MKQpkaWZmIC0tZ2l0IGEvZG9jcy9SRUxFQVNFLVBST0NFRFVSRSBiL2RvY3MvUkVMRUFTRS1QUk9DRURVUkUKaW5kZXggZmMzMTI3NC4uNDc5MDc4ZiAxMDA2NDQKLS0tIGEvZG9jcy9SRUxFQVNFLVBST0NFRFVSRQorKysgYi9kb2NzL1JFTEVBU0UtUFJPQ0VEVVJFCkBAIC0xMSw4ICsxMSw4IEBACiAtIG1ha2Ugc3VyZSBhbGwgcmVsZXZhbnQgY2hhbmdlcyBhcmUgY29tbWl0dGVkIG9uIHRoZSBtYXN0ZXIgYnJhbmNoCiAKIC0gdGFnIHRoZSBnaXQgcmVwbyBpbiB0aGlzIHN0eWxlOiBgZ2l0IHRhZyAtYSBjdXJsLTdfMzRfMGAuIC1hIGFubm90YXRlcyB0aGUKLSAgdGFnIGFuZCB3ZSB1c2UgdW5kZXJzY29yZXMgaW5zdGVhZCBvZiBkb3RzIGluIHRoZSB2ZXJzaW9uIG51bWJlci4gCi0gICAKKyAgdGFnIGFuZCB3ZSB1c2UgdW5kZXJzY29yZXMgaW5zdGVhZCBvZiBkb3RzIGluIHRoZSB2ZXJzaW9uIG51bWJlci4KKwogLSBydW4gIi4vbWFrZXRneiA3LjM0LjAiIHRvIGJ1aWxkIHRoZSByZWxlYXNlIHRhcmJhbGxzLiBJdCBpcyBpbXBvcnRhbnQgdGhhdAogICB5b3UgcnVuIHRoaXMgb24gYSBtYWNoaW5lIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGF1dG90b29scyBldGMgaW5zdGFsbGVkCiAgIGFzIHRoaXMgaXMgd2hhdCB0aGVuIHdpbGwgYmUgc2hpcHBlZCBhbmQgdXNlZCBieSBtb3N0IHVzZXJzIG9uICpuaXggbGlrZQpAQCAtNDEsNiArNDEsMTEgQEAKIAogICAodGhlIHdlYiBzaXRlIHRoZW4gdXBkYXRlcyBpdHMgY29udGVudHMgYXV0b21hdGljYWxseSkKIAorb24gZ2l0aHViCistLS0tLS0tLS0KKworLSBlZGl0IHRoZSBuZXdseSBtYWRlIHJlbGVhc2UgdGFnIHNvIHRoYXQgaXQgaXMgbGlzdGVkIGFzIHRoZSBsYXRlc3QgcmVsZWFzZQorCiBpbmZvcm0KIC0tLS0tLQogCkBAIC03OCwxMiArODMsMTAgQEAKIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBhYm92ZSwgaGVyZSBhcmUgc29tZSBwbGFubmVkIHJlbGVhc2UgZGF0ZXMgKGF0IHRoZQogdGltZSBvZiB0aGlzIHdyaXRpbmcpOgogCi0tIEp1bmUgMTcsIDIwMTUgKHZlcnNpb24gNy40My4wKQotLSBBdWd1c3QgMTIsIDIwMTUKLS0gT2N0b2JlciA3LCAyMDE1Ci0tIERlY2VtYmVyIDIsIDIwMTUKLS0gSmFudWFyeSAyNywgMjAxNgotLSBNYXJjaCAyMywgMjAxNgorLSBNYXJjaCAyMywgMjAxNiAodmVyc2lvbiA3LjQ4LjApCiAtIE1heSAxOCwgMjAxNgogLSBKdWx5IDEzLCAyMDE2CiAtIFNlcHRlbWJlciA3LCAyMDE2CistIE5vdmVtYmVyIDIsIDIwMTYKKy0gRGVjZW1iZXIgMjgsIDIwMTYKKy0gRmVicnVhcnkgMjIsIDIwMTcKZGlmZiAtLWdpdCBhL2RvY3MvUkVTT1VSQ0VTIGIvZG9jcy9SRVNPVVJDRVMKaW5kZXggNzYwZTc1OS4uMWFkOGFhYyAxMDA2NDQKLS0tIGEvZG9jcy9SRVNPVVJDRVMKKysrIGIvZG9jcy9SRVNPVVJDRVMKQEAgLTM2LDcgKzM2LDcgQEAKIAogICBSRkMgMjEwOSAtIEhUVFAgU3RhdGUgTWFuYWdlbWVudCBNZWNoYW5pc20gKGNvb2tpZSBzdHVmZikKICAgICAgICAgICAgLSBBbHNvLCByZWFkIE5ldHNjYXBlJ3Mgc3BlY2lmaWNhdGlvbiBhdAotICAgICAgICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL2Nvb2tpZV9zcGVjLmh0bWwKKyAgICAgICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9yZmMvY29va2llX3NwZWMuaHRtbAogCiAgIFJGQyAyMTgzIC0gVGhlIENvbnRlbnQtRGlzcG9zaXRpb24gSGVhZGVyIEZpZWxkCiAKZGlmZiAtLWdpdCBhL2RvY3MvUk9BRE1BUC5tZCBiL2RvY3MvUk9BRE1BUC5tZAppbmRleCBlYjUyZDE4Li5kNjY0NDAzIDEwMDY0NAotLS0gYS9kb2NzL1JPQURNQVAubWQKKysrIGIvZG9jcy9ST0FETUFQLm1kCkBAIC0xOCwzMSArMTgsMTggQEAKICAgIFRvIGRlY2lkZTogaWYgd2UgbmVlZCB0byBidW5kbGUgcGFydHMgb2YgdGhlIG5naHR0cDIgc3R1ZmYgdGhhdCBwcm9iYWJseQogICAgd29uJ3QgYmUgc2hpcHBlZCBieSBtYW55IGRpc3Ryb3MuCiAKLS0gc3RyZWFtIHByb3BlcnRpZXMgQVBJCitIVFRQIGNvb2tpZXMKKy0tLS0tLS0tLS0tLQogCi0gICBQcm92aWRlIG9wdGlvbnMgZm9yIHNldHRpbmcgcHJpb3JpdGllcyBhbmQgZGVwZW5kZW5jaWVzIGFtb25nIHRoZSBzdHJlYW1zCi0gICAoZWFzeSBoYW5kbGVzKS4gVGhleSBhcmUgbW9zdGx5IGluZm9ybWF0aW9uIHNldCBmb3IgdGhlIHN0cmVhbSBhbmQgc2VudCB0bwotICAgdGhlIHNlcnZlciBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBtdWNoIGxvZ2ljIGZvciB0aGlzLgorVHdvIGNvb2tpZSBkcmFmdHMgaGF2ZSBiZWVuIGFkb3B0ZWQgYnkgdGhlIGh0dHB3ZyBpbiBJRVRGIGFuZCB3ZSBzaG91bGQKK3N1cHBvcnQgdGhlbSBhcyB0aGUgcG9wdWxhciBicm93c2VycyB3aWxsIGFzIHdlbGw6CiAKLS0gc2VydmVyIHB1c2gKK1tEZXByZWNhdGUgbW9kaWZpY2F0aW9uIG9mICdzZWN1cmUnIGNvb2tpZXMgZnJvbSBub24tc2VjdXJlCitvcmlnaW5zXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWNvb2tpZS1hbG9uZS0wMCkKIAotICAgTm90IGV4YWN0bHkgY2xlYXIgZXhhY3RseSBob3cgdG8gc3VwcG9ydCB0aGlzIEFQSS13aXNlLCBidXQgYnkgYWRkaW5nCi0gICBoYW5kbGVzIHdpdGhvdXQgYXNraW5nIGZvciBhIHJlc291cmNlIGl0IGNvdWxkIGJlIGEgd2F5IHRvIGJlIHByZXBhcmVkIHRvCi0gICByZWNlaXZlIHB1c2hlcyBpbiBjYXNlIHN1Y2ggYXJlIHNlbnQuIFdlIHByb2JhYmx5IG5lZWQgaXQgdG8gc3RpbGwgc3BlY2lmeQotICAgYSBVUkwgd2l0aCBob3N0IG5hbWUsIHBvcnQgZXRjIGJ1dCB3ZSBwcm9iYWJseSBuZWVkIGEgc3BlY2lhbCBvcHRpb24gdG8KLSAgIHRlbGwgbGliY3VybCBpdCBpcyBmb3Igc2VydmVyIHB1c2ggcHVycG9zZXMuCitbQ29va2llIFByZWZpeGVzXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWNvb2tpZS1wcmVmaXhlcy0wMCkKIAotLSBwcm92aWRlIG9wdGlvbiBmb3IgSFRUUC8yICJwcmlvciBrbm93bGVkZ2UiIG92ZXIgY2xlYXIgdGV4dAotCi0gICBBcyBpdCB3b3VsZCBhdm9pZCB0aGUgcm91bmR0cmlwLWhlYXZ5IFVwZ3JhZGU6IHByb2NlZHVyZXMgd2hlbiB5b3UgX2tub3dfCi0gICBpdCBzcGVha3MgSFRUUC8yLgotCi0tIHByb3ZpZGUgb3B0aW9uIHRvIGFsbG93IGN1cmwgdG8gZGVmYXVsdCB0byBIVFRQLzIgb25seSB3aGVuIHVzaW5nIEhUVFBTCi0KLSAgIFdlIGNvdWxkIHN3aXRjaCBvbiBIVFRQLzIgYnktZGVmYXVsdCBmb3IgSFRUUFMgcXVpdGUgZWFzaWx5IGFuZCBpdAotICAgc2hvdWxkbid0IGh1cnQgYW55b25lLCB3aGlsZSBIVFRQLzIgZm9yIEhUVFAgYnkgZGVmYXVsdCBjb3VsZCBpbnRyb2R1Y2UKLSAgIGxvdHMgb2YgVXBncmFkZTogcm91bmR0cmlwcyB0aGF0IHVzZXJzIHdvbid0IGxpa2UuIFNvIGEgc2VwYXJhdGVkIG9wdGlvbgotICAgYWx0ZXJuYXRpdmUgbWFrZXMgc2Vuc2UuCitbRmlyZWZveCBidWcgcmVwb3J0IGFib3V0IHNlY3VyZSBjb29raWVzXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05NzYwNzMpCiAKIFNSViByZWNvcmRzCiAtLS0tLS0tLS0tLQpAQCAtNTIsNyArMzksOSBAQAogSFRUUFMgdG8gcHJveHkKIC0tLS0tLS0tLS0tLS0tCiAKLVRvIGF2b2lkIG5ldHdvcmsgdHJhZmZpYyB0by9mcm9tIHRoZSBwcm94eSBnZXR0aW5nIHNub29wZWQgb24uCitUbyBhdm9pZCBuZXR3b3JrIHRyYWZmaWMgdG8vZnJvbSB0aGUgcHJveHkgZ2V0dGluZyBzbm9vcGVkIG9uLiBUaGVyZSdzIGEgZ2l0CiticmFuY2ggaW4gdGhlIHB1YmxpYyBnaXQgcmVwb3NpdG9yeSBmb3IgdGhpcyB0aGF0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdvcmtzCitmb3IgYWxsIFRMUyBiYWNrZW5kcyBhbmQgdGhlbiBtZXJnZSEKIAogY3VybF9mb3JtYWRkKCkKIC0tLS0tLS0tLS0tLS0tCkBAIC02MSwxMiArNTAsMTAgQEAKIGBjdXJsX2Zvcm1nZXQoKWAgYW5kIGBjdXJsX2Zvcm1mcmVlKClgIGJ5IGFkZGluZyByZXBsYWNlbWVudCBmdW5jdGlvbnMgYW5kCiBkZXByZWNhdGluZyB0aGUgb2xkIG9uZXMgdG8gYWxsb3cgY3VzdG9tIG1hbGxvY3MgYW5kIG1vcmUKIAotdGhpcmQtcGFydHkgU0FTTAorVGhpcmQtcGFydHkgU0FTTAogLS0tLS0tLS0tLS0tLS0tLQogCi1hZGQgc3VwcG9ydCBmb3IgdGhpcmQtcGFydHkgU0FTTCBsaWJyYXJpZXMgc3VjaCBhcyBDeXJ1cyBTQVNMIC0gbWF5IG5lZWQgdG8KLW1vdmUgZXhpc3RpbmcgbmF0aXZlIGFuZCBTU1BJIGJhc2VkIGF1dGhlbnRpY2F0aW9uIGludG8gdnNhc2wgZm9sZGVyIGFmdGVyCi1yZXdvcmtpbmcgSFRUUCBhbmQgU0FTTCBjb2RlCitBZGQgc3VwcG9ydCBmb3IgdGhpcmQtcGFydHkgU0FTTCBsaWJyYXJpZXMgc3VjaCBhcyBDeXJ1cyBTQVNMLgogCiBTQVNMIGF1dGhlbnRpY2F0aW9uIGluIExEQVAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE3LDcgKzEwNCw3IEBACiAKIDIuIGN1cmwgLWggb3V0cHV0IChjb25zaWRlcmVkIG92ZXJ3aGVsbWluZyB0byB1c2VycykKIAotMy4gd2UgaGF2ZSA+IDE2MCBjb21tYW5kIGxpbmUgb3B0aW9ucywgaXMgdGhlcmUgYSB3YXkgdG8gcmVkbyB0aGluZ3MgdG8KKzMuIHdlIGhhdmUgPiAxNzAgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGlzIHRoZXJlIGEgd2F5IHRvIHJlZG8gdGhpbmdzIHRvCiAgICBzaW1wbGlmeSBvciBpbXByb3ZlIHRoZSBzaXR1YXRpb24gYXMgd2UgYXJlIGxpa2VseSB0byBrZWVwIGFkZGluZwogICAgZmVhdHVyZXMvb3B0aW9ucyBpbiB0aGUgZnV0dXJlIHRvbwogCmRpZmYgLS1naXQgYS9kb2NzL1NFQ1VSSVRZIGIvZG9jcy9TRUNVUklUWQppbmRleCBlZTg0NGQ4Li43YjI0NWQ3IDEwMDY0NAotLS0gYS9kb2NzL1NFQ1VSSVRZCisrKyBiL2RvY3MvU0VDVVJJVFkKQEAgLTE0LDcgKzE0LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQWxsIGtub3duIGFuZCBwdWJsaWMgY3VybCBvciBsaWJjdXJsIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzIGFyZSBsaXN0ZWQgb24KLVt0aGUgY3VybCB3ZWIgc2l0ZSBzZWN1cml0eSBwYWdlXShodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc2VjdXJpdHkuaHRtbCkuCitbdGhlIGN1cmwgd2ViIHNpdGUgc2VjdXJpdHkgcGFnZV0oaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zZWN1cml0eS5odG1sKS4KIAogU2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHNob3VsZCBub3QgYmUgZW50ZXJlZCBpbiB0aGUgcHJvamVjdCdzIHB1YmxpYyBidWcKIHRyYWNrZXIgdW5sZXNzIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBpbiBwbGFjZSB0byBsaW1pdCBhY2Nlc3MgdG8gdGhlCmRpZmYgLS1naXQgYS9kb2NzL1NTTC1QUk9CTEVNUyBiL2RvY3MvU1NMLVBST0JMRU1TCmluZGV4IDM2NTAyNjcuLmU2Mzk4NzEgMTAwNjQ0Ci0tLSBhL2RvY3MvU1NMLVBST0JMRU1TCisrKyBiL2RvY3MvU1NMLVBST0JMRU1TCkBAIC0yNiw3ICsyNiw3IEBACiAgIHByb2JsZW1zIGlmIHlvdXIgQ0EgY2VydCBkb2VzIG5vdCBoYXZlIHRoZSBjZXJ0aWZpY2F0ZXMgZm9yIHRoZQogICBpbnRlcm1lZGlhdGVzIGluIHRoZSB3aG9sZSB0cnVzdCBjaGFpbi4KIAotU1NMIHZlcnNpb24KK1Byb3RvY29sIHZlcnNpb24KIAogICBTb21lIGJyb2tlbiBzZXJ2ZXJzIGZhaWwgdG8gc3VwcG9ydCB0aGUgcHJvdG9jb2wgbmVnb3RpYXRpb24gcHJvcGVybHkgdGhhdAogICBTU0wgc2VydmVycyBhcmUgc3VwcG9zZWQgdG8gaGFuZGxlLiBUaGlzIG1heSBjYXVzZSB0aGUgY29ubmVjdGlvbiB0byBmYWlsCkBAIC0zNiw3ICszNiw5IEBACiAgIEFuIGFkZGl0aW9uYWwgY29tcGxpY2F0aW9uIGNhbiBiZSB0aGF0IG1vZGVybiBTU0wgbGlicmFyaWVzIHNvbWV0aW1lcyBhcmUKICAgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBvbGRlciBTU0wgYW5kIFRMUyB2ZXJzaW9ucyBkaXNhYmxlZCEKIAotU1NMIGNpcGhlcnMKKyAgQWxsIHZlcnNpb25zIG9mIFNTTCBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuIFVzZSBUTFMuCisKK0NpcGhlcnMKIAogICBDbGllbnRzIGdpdmUgc2VydmVycyBhIGxpc3Qgb2YgY2lwaGVycyB0byBzZWxlY3QgZnJvbS4gSWYgdGhlIGxpc3QgZG9lc24ndAogICBpbmNsdWRlIGFueSBjaXBoZXJzIHRoZSBzZXJ2ZXIgd2FudHMvY2FuIHVzZSwgdGhlIGNvbm5lY3Rpb24gaGFuZHNoYWtlCkBAIC01MSwxMCArNTMsMTQgQEAKICAgTm90ZSB0aGF0IHRoZXNlIHdlYWsgY2lwaGVycyBhcmUgaWRlbnRpZmllZCBhcyBmbGF3ZWQuIEZvciBleGFtcGxlLCB0aGlzCiAgIGluY2x1ZGVzIHN5bW1ldHJpYyBjaXBoZXJzIHdpdGggbGVzcyB0aGFuIDEyOCBiaXQga2V5cyBhbmQgUkM0LgogCisgIFdpblNTTCBpbiBXaW5kb3dzIFhQIGlzIG5vdCBhYmxlIHRvIGNvbm5lY3QgdG8gc2VydmVycyB0aGF0IG5vIGxvbmdlcgorICBzdXBwb3J0IHRoZSBsZWdhY3kgaGFuZHNoYWtlcyBhbmQgYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlIHZlcnNpb25zLCBzbyB3ZQorICBhZHZpY2UgYWdhaW5zdCBidWlsZGluZyBjdXJsIHRvIHVzZSBXaW5TU0wgb24gcmVhbGx5IG9sZCBXaW5kb3dzIHZlcnNpb25zLgorCiAgIFJlZmVyZW5jZXM6CiAKICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXBvcG92LXRscy1wcm9oaWJpdGluZy1yYzQtMDEKLSAgCisKIEFsbG93IEJFQVNUCiAKICAgQkVBU1QgaXMgdGhlIG5hbWUgb2YgYSBUTFMgMS4wIGF0dGFjayB0aGF0IHN1cmZhY2VkIDIwMTEuIFdoZW4gYWRkaW5nIG1lYW5zCkBAIC02NSwzICs3MSwxNyBAQAogICBpbnRyb2R1Y2VkLiBFeGFjdGx5IGFzIGl0IHNvdW5kcywgaXQgcmUtaW50cm9kdWNlcyB0aGUgQkVBU1QgdnVsbmVyYWJpbGl0eQogICBidXQgb24gdGhlIG90aGVyIGhhbmQgaXQgYWxsb3dzIGN1cmwgdG8gY29ubmVjdCB0byB0aGF0IGtpbmQgb2Ygc3RyYW5nZQogICBzZXJ2ZXJzLgorCitEaXNhYmxpbmcgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MKKworICBTb21lIFNTTCBiYWNrZW5kcyBtYXkgZG8gY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MgKENSTCwgT0NTUCwgZXRjKQorICBkZXBlbmRpbmcgb24gdGhlIE9TIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoZSAtLXNzbC1uby1yZXZva2Ugb3B0aW9uIHdhcworICBpbnRyb2R1Y2VkIGluIDcuNDQuMCB0byBkaXNhYmxlIHJldm9jYXRpb24gY2hlY2tpbmcgYnV0IGN1cnJlbnRseSBpcyBvbmx5CisgIHN1cHBvcnRlZCBmb3IgV2luU1NMICh0aGUgbmF0aXZlIFdpbmRvd3MgU1NMIGxpYnJhcnkpLCB3aXRoIGFuIGV4Y2VwdGlvbiBpbgorICB0aGUgY2FzZSBvZiBXaW5kb3dzJyBVbnRydXN0ZWQgUHVibGlzaGVycyBibGFja2xpc3Qgd2hpY2ggaXQgc2VlbXMgY2FuJ3QgYmUKKyAgYnlwYXNzZWQuIFRoaXMgb3B0aW9uIG1heSBoYXZlIGJyb2FkZXIgc3VwcG9ydCB0byBhY2NvbW1vZGF0ZSBvdGhlciBTU0wKKyAgYmFja2VuZHMgaW4gdGhlIGZ1dHVyZS4KKworICBSZWZlcmVuY2VzOgorCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsLWNvbXBhcmVkLmh0bWwKZGlmZiAtLWdpdCBhL2RvY3MvU1NMQ0VSVFMgYi9kb2NzL1NTTENFUlRTCmluZGV4IDg5ZTViYjYuLjc3NTU2MDkgMTAwNjQ0Ci0tLSBhL2RvY3MvU1NMQ0VSVFMKKysrIGIvZG9jcy9TU0xDRVJUUwpAQCAtMjAsOCArMjAsOCBAQAogSXQgaXMgYWJvdXQgdHJ1c3QKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgc3lzdGVtIGlzIGFib3V0IHRydXN0LiBJbiB5b3VyIGxvY2FsIENBIGNlcnQgYnVuZGxlIHlvdSBoYXZlIGNlcnRzIGZyb20KLSp0cnVzdGVkKiBDZXJ0aWZpY2F0ZSBBdXRob3JpdGllcyB0aGF0IHlvdSB0aGVuIGNhbiB1c2UgdG8gdmVyaWZ5IHRoYXQgdGhlCitUaGlzIHN5c3RlbSBpcyBhYm91dCB0cnVzdC4gSW4geW91ciBsb2NhbCBDQSBjZXJ0aWZpY2F0ZSBzdG9yZSB5b3UgaGF2ZSBjZXJ0cworZnJvbSAqdHJ1c3RlZCogQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgdGhhdCB5b3UgdGhlbiBjYW4gdXNlIHRvIHZlcmlmeSB0aGF0IHRoZQogc2VydmVyIGNlcnRpZmljYXRlcyB5b3Ugc2VlIGFyZSB2YWxpZC4gVGhleSdyZSBzaWduZWQgYnkgb25lIG9mIHRoZSBDQXMgeW91CiB0cnVzdC4KIApAQCAtMzUsMTYgKzM1LDE2IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogbGliY3VybCBwZXJmb3JtcyBwZWVyIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYnkgZGVmYXVsdC4gIFRoaXMgaXMgZG9uZQotYnkgdXNpbmcgQ0EgY2VydCBidW5kbGUgdGhhdCB0aGUgU1NMIGxpYnJhcnkgY2FuIHVzZSB0byBtYWtlIHN1cmUgdGhlIHBlZXIncwotc2VydmVyIGNlcnRpZmljYXRlIGlzIHZhbGlkLgorYnkgdXNpbmcgYSBDQSBjZXJ0aWZpY2F0ZSBzdG9yZSB0aGF0IHRoZSBTU0wgbGlicmFyeSBjYW4gdXNlIHRvIG1ha2Ugc3VyZSB0aGUKK3BlZXIncyBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgdmFsaWQuCiAKIElmIHlvdSBjb21tdW5pY2F0ZSB3aXRoIEhUVFBTLCBGVFBTIG9yIG90aGVyIFRMUy11c2luZyBzZXJ2ZXJzIHVzaW5nCi1jZXJ0aWZpY2F0ZXMgdGhhdCBhcmUgc2lnbmVkIGJ5IENBcyBwcmVzZW50IGluIHRoZSBidW5kbGUsIHlvdSBjYW4gYmUgc3VyZQorY2VydGlmaWNhdGVzIHRoYXQgYXJlIHNpZ25lZCBieSBDQXMgcHJlc2VudCBpbiB0aGUgc3RvcmUsIHlvdSBjYW4gYmUgc3VyZQogdGhhdCB0aGUgcmVtb3RlIHNlcnZlciByZWFsbHkgaXMgdGhlIG9uZSBpdCBjbGFpbXMgdG8gYmUuCiAKIElmIHRoZSByZW1vdGUgc2VydmVyIHVzZXMgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgaWYgeW91IGRvbid0IGluc3RhbGwgYSBDQQotY2VydCBidW5kbGUsIGlmIHRoZSBzZXJ2ZXIgdXNlcyBhIGNlcnRpZmljYXRlIHNpZ25lZCBieSBhIENBIHRoYXQgaXNuJ3QKLWluY2x1ZGVkIGluIHRoZSBidW5kbGUgeW91IHVzZSBvciBpZiB0aGUgcmVtb3RlIGhvc3QgaXMgYW4gaW1wb3N0b3IKK2NlcnQgc3RvcmUsIGlmIHRoZSBzZXJ2ZXIgdXNlcyBhIGNlcnRpZmljYXRlIHNpZ25lZCBieSBhIENBIHRoYXQgaXNuJ3QKK2luY2x1ZGVkIGluIHRoZSBzdG9yZSB5b3UgdXNlIG9yIGlmIHRoZSByZW1vdGUgaG9zdCBpcyBhbiBpbXBvc3RvcgogaW1wZXJzb25hdGluZyB5b3VyIGZhdm9yaXRlIHNpdGUsIGFuZCB5b3Ugd2FudCB0byB0cmFuc2ZlciBmaWxlcyBmcm9tIHRoaXMKIHNlcnZlciwgZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTU5LDEyICs1OSwyMiBAQAogCiAgICAgV2l0aCB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbDogLS1jYWNlcnQgW2ZpbGVdCiAKLSAzLiBBZGQgdGhlIENBIGNlcnQgZm9yIHlvdXIgc2VydmVyIHRvIHRoZSBleGlzdGluZyBkZWZhdWx0IENBIGNlcnQgYnVuZGxlLgotICAgIFRoZSBkZWZhdWx0IHBhdGggb2YgdGhlIENBIGJ1bmRsZSB1c2VkIGNhbiBiZSBjaGFuZ2VkIGJ5IHJ1bm5pbmcgY29uZmlndXJlCi0gICAgd2l0aCB0aGUgLS13aXRoLWNhLWJ1bmRsZSBvcHRpb24gcG9pbnRpbmcgb3V0IHRoZSBwYXRoIG9mIHlvdXIgY2hvaWNlLgorIDMuIEFkZCB0aGUgQ0EgY2VydCBmb3IgeW91ciBzZXJ2ZXIgdG8gdGhlIGV4aXN0aW5nIGRlZmF1bHQgQ0EgY2VydGlmaWNhdGUKKyAgICBzdG9yZS4gVGhlIGRlZmF1bHQgQ0EgY2VydGlmaWNhdGUgc3RvcmUgY2FuIGNoYW5nZWQgYXQgY29tcGlsZSB0aW1lIHdpdGggdGhlCisgICAgZm9sbG93aW5nIGNvbmZpZ3VyZSBvcHRpb25zOgogCi0gICAgVG8gZG8gdGhpcywgeW91IG5lZWQgdG8gZ2V0IHRoZSBDQSBjZXJ0IGZvciB5b3VyIHNlcnZlciBpbiBQRU0gZm9ybWF0IGFuZAotICAgIHRoZW4gYXBwZW5kIHRoYXQgdG8geW91ciBDQSBjZXJ0IGJ1bmRsZS4KKyAgICAtLXdpdGgtY2EtYnVuZGxlPUZJTEU6IHVzZSB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgQ0EgY2VydGlmaWNhdGUgc3RvcmUuIENBCisgICAgY2VydGlmaWNhdGVzIG5lZWQgdG8gYmUgY29uY2F0ZW5hdGVkIGluIFBFTSBmb3JtYXQgaW50byB0aGlzIGZpbGUuCisKKyAgICAtLXdpdGgtY2EtcGF0aD1QQVRIOiB1c2UgdGhlIHNwZWNpZmllZCBwYXRoIGFzIENBIGNlcnRpZmljYXRlIHN0b3JlLiBDQQorICAgIGNlcnRpZmljYXRlcyBuZWVkIHRvIGJlIHN0b3JlZCBhcyBpbmRpdmlkdWFsIFBFTSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KKyAgICBZb3UgbWF5IG5lZWQgdG8gcnVuIGNfcmVoYXNoIGFmdGVyIGFkZGluZyBmaWxlcyB0aGVyZS4KKworICAgIElmIG5laXRoZXIgb2YgdGhlIHR3byBvcHRpb25zIGlzIHNwZWNpZmllZCwgY29uZmlndXJlIHdpbGwgdHJ5IHRvIGF1dG8tZGV0ZWN0CisgICAgYSBzZXR0aW5nLiBJdCdzIGFsc28gcG9zc2libGUgdG8gZXhwbGljaXRseSBub3QgaGFyZGNvZGUgYW55IGRlZmF1bHQgc3RvcmUKKyAgICBidXQgcmVseSBvbiB0aGUgYnVpbHQgaW4gZGVmYXVsdCB0aGUgY3J5cHRvIGxpYnJhcnkgbWF5IHByb3ZpZGUgaW5zdGVhZC4KKyAgICBZb3UgY2FuIGFjaGlldmUgdGhhdCBieSBwYXNzaW5nIGJvdGggLS13aXRob3V0LWNhLWJ1bmRsZSBhbmQKKyAgICAtLXdpdGhvdXQtY2EtcGF0aCB0byB0aGUgY29uZmlndXJlIHNjcmlwdC4KIAogICAgIElmIHlvdSB1c2UgSW50ZXJuZXQgRXhwbG9yZXIsIHRoaXMgaXMgb25lIHdheSB0byBnZXQgZXh0cmFjdCB0aGUgQ0EgY2VydAogICAgIGZvciBhIHBhcnRpY3VsYXIgc2VydmVyOgpAQCAtNzYsNyArODYsNyBAQAogICAgICAtIENvbnZlcnQgaXQgZnJvbSBjcnQgdG8gUEVNIHVzaW5nIHRoZSBvcGVuc3NsIHRvb2w6CiAgICAgICAgb3BlbnNzbCB4NTA5IC1pbmZvcm0gREVTIC1pbiB5b3VyZG93bmxvYWRlZC5jcnQgXAogICAgICAgIC1vdXQgb3V0Y2VydC5wZW0gLXRleHQKLSAgICAgLSBBcHBlbmQgdGhlICdvdXRjZXJ0LnBlbScgdG8gdGhlIENBIGNlcnQgYnVuZGxlIG9yIHVzZSBpdCBzdGFuZC1hbG9uZQorICAgICAtIEFkZCB0aGUgJ291dGNlcnQucGVtJyB0byB0aGUgQ0EgY2VydGlmaWNhdGUgc3RvcmUgb3IgdXNlIGl0IHN0YW5kLWFsb25lCiAgICAgICAgYXMgZGVzY3JpYmVkIGJlbG93LgogCiAgICAgSWYgeW91IHVzZSB0aGUgJ29wZW5zc2wnIHRvb2wsIHRoaXMgaXMgb25lIHdheSB0byBnZXQgZXh0cmFjdCB0aGUgQ0EgY2VydApAQCAtODksOSArOTksOSBAQAogICAgICAtIElmIHlvdSB3YW50IHRvIHNlZSB0aGUgZGF0YSBpbiB0aGUgY2VydGlmaWNhdGUsIHlvdSBjYW4gZG86ICJvcGVuc3NsCiAgICAgICAgeDUwOSAtaW5mb3JtIFBFTSAtaW4gY2VydGZpbGUgLXRleHQgLW91dCBjZXJ0ZGF0YSIgd2hlcmUgY2VydGZpbGUgaXMKICAgICAgICB0aGUgY2VydCB5b3UgZXh0cmFjdGVkIGZyb20gbG9nZmlsZS4gTG9vayBpbiBjZXJ0ZGF0YS4KLSAgICAgLSBJZiB5b3Ugd2FudCB0byB0cnVzdCB0aGUgY2VydGlmaWNhdGUsIHlvdSBjYW4gYXBwZW5kIGl0IHRvIHlvdXIKLSAgICAgICBjZXJ0IGJ1bmRsZSBvciB1c2UgaXQgc3RhbmQtYWxvbmUgYXMgZGVzY3JpYmVkLiBKdXN0IHJlbWVtYmVyIHRoYXQgdGhlCi0gICAgICAgc2VjdXJpdHkgaXMgbm8gYmV0dGVyIHRoYW4gdGhlIHdheSB5b3Ugb2J0YWluZWQgdGhlIGNlcnRpZmljYXRlLgorICAgICAtIElmIHlvdSB3YW50IHRvIHRydXN0IHRoZSBjZXJ0aWZpY2F0ZSwgeW91IGNhbiBhZGQgaXQgdG8geW91ciBDQQorICAgICAgIGNlcnRpZmljYXRlIHN0b3JlIG9yIHVzZSBpdCBzdGFuZC1hbG9uZSBhcyBkZXNjcmliZWQuIEp1c3QgcmVtZW1iZXIgdGhhdAorICAgICAgIHRoZSBzZWN1cml0eSBpcyBubyBiZXR0ZXIgdGhhbiB0aGUgd2F5IHlvdSBvYnRhaW5lZCB0aGUgY2VydGlmaWNhdGUuCiAKICA0LiBJZiB5b3UncmUgdXNpbmcgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wsIHlvdSBjYW4gc3BlY2lmeSB5b3VyIG93biBDQQogICAgIGNlcnQgcGF0aCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgQ1VSTF9DQV9CVU5ETEVgIHRvIHRoZSBwYXRoCkBAIC0xMDksMTMgKzExOSwxMyBAQAogIDUuIEdldCBhIGJldHRlci9kaWZmZXJlbnQvbmV3ZXIgQ0EgY2VydCBidW5kbGUhIE9uZSBvcHRpb24gaXMgdG8gZXh0cmFjdCB0aGUKICAgICBvbmUgYSByZWNlbnQgRmlyZWZveCBicm93c2VyIHVzZXMgYnkgcnVubmluZyAnbWFrZSBjYS1idW5kbGUnIGluIHRoZSBjdXJsCiAgICAgYnVpbGQgdHJlZSByb290LCBvciBwb3NzaWJseSBkb3dubG9hZCBhIHZlcnNpb24gdGhhdCB3YXMgZ2VuZXJhdGVkIHRoaXMKLSAgICB3YXkgZm9yIHlvdTogW0NBIEV4dHJhY3RdKGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jYWV4dHJhY3QuaHRtbCkKKyAgICB3YXkgZm9yIHlvdTogW0NBIEV4dHJhY3RdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwpCiAKIE5lZ2xlY3RpbmcgdG8gdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWV0aG9kcyB3aGVuIGRlYWxpbmcgd2l0aCBhIHNlcnZlciB1c2luZyBhCiBjZXJ0aWZpY2F0ZSB0aGF0IGlzbid0IHNpZ25lZCBieSBvbmUgb2YgdGhlIGNlcnRpZmljYXRlcyBpbiB0aGUgaW5zdGFsbGVkIENBCi1jZXJ0IGJ1bmRsZSwgd2lsbCBjYXVzZSBTU0wgdG8gcmVwb3J0IGFuIGVycm9yICgiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIpCi1kdXJpbmcgdGhlIGhhbmRzaGFrZSBhbmQgU1NMIHdpbGwgdGhlbiByZWZ1c2UgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhhdAotc2VydmVyLgorY2VydGlmaWNhdGUgc3RvcmUsIHdpbGwgY2F1c2UgU1NMIHRvIHJlcG9ydCBhbiBlcnJvciAoImNlcnRpZmljYXRlIHZlcmlmeQorZmFpbGVkIikgZHVyaW5nIHRoZSBoYW5kc2hha2UgYW5kIFNTTCB3aWxsIHRoZW4gcmVmdXNlIGZ1cnRoZXIgY29tbXVuaWNhdGlvbgord2l0aCB0aGF0IHNlcnZlci4KIAogQ2VydGlmaWNhdGUgVmVyaWZpY2F0aW9uIHdpdGggTlNTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyMyw4ICsxMzMsOCBAQAogSWYgbGliY3VybCB3YXMgYnVpbHQgd2l0aCBOU1Mgc3VwcG9ydCwgdGhlbiBkZXBlbmRpbmcgb24gdGhlIE9TIGRpc3RyaWJ1dGlvbiwKIGl0IGlzIHByb2JhYmx5IHJlcXVpcmVkIHRvIHRha2Ugc29tZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIHVzZSB0aGUgc3lzdGVtLXdpZGUKIENBIGNlcnQgZGIuIFJlZEhhdCBzaGlwcyB3aXRoIGFuIGFkZGl0aW9uYWwgbW9kdWxlLCBsaWJuc3NwZW0uc28sIHdoaWNoCi1lbmFibGVzIE5TUyB0byByZWFkIHRoZSBPcGVuU1NMIFBFTSBDQSBidW5kbGUuIFRoaXMgbGlicmFyeSBpcyBtaXNzaW5nIGluCi1PcGVuU3VTRSwgYW5kIHdpdGhvdXQgaXQsIE5TUyBjYW4gb25seSB3b3JrIHdpdGggaXRzIG93biBpbnRlcm5hbCBmb3JtYXRzLiBOU1MKK2VuYWJsZXMgTlNTIHRvIHJlYWQgdGhlIE9wZW5TU0wgUEVNIENBIGJ1bmRsZS4gT24gb3BlblNVU0UgeW91IGNhbiBpbnN0YWxsCitwMTEta2l0LW5zcy10cnVzdCB3aGljaCBtYWtlcyBOU1MgdXNlIHRoZSBzeXN0ZW0gd2lkZSBDQSBjZXJ0aWZpY2F0ZSBzdG9yZS4gTlNTCiBhbHNvIGhhcyBhIG5ldyBbZGF0YWJhc2UgZm9ybWF0XShodHRwczovL3dpa2kubW96aWxsYS5vcmcvTlNTX1NoYXJlZF9EQikuCiAKIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiA3LjE5LjcsIGxpYmN1cmwgYXV0b21hdGljYWxseSBhZGRzIHRoZSAnc3FsOicgcHJlZml4IHRvCmRpZmYgLS1naXQgYS9kb2NzL1RIQU5LUyBiL2RvY3MvVEhBTktTCmluZGV4IDg5YTczOGQuLmU4MTE5MmMgMTAwNjQ0Ci0tLSBhL2RvY3MvVEhBTktTCisrKyBiL2RvY3MvVEhBTktTCkBAIC00LDYgKzQsOCBAQAogCiAgSWYgeW91IGhhdmUgY29udHJpYnV0ZWQgYnV0IGFyZSBtaXNzaW5nIGhlcmUsIHBsZWFzZSBsZXQgdXMga25vdyEKIAorIkNhcHRhaW4gQmFzaWwiCisiU3Bvb24gTWFuIgogQWFybyBLb3NraW5lbgogQWFyb24gT25lYWwKIEFhcm9uIE9yZW5zdGVpbgpAQCAtNDQsMTcgKzQ2LDIwIEBACiBBbGV4YW5kZXIgTGF6aWMKIEFsZXhhbmRlciBQZXBwZXIKIEFsZXhhbmRlciBQZXNseWFrCitBbGV4YW5kZXIgVHJhdWQKIEFsZXhhbmRlciBaaHVyYXZsZXYKIEFsZXhleSBCb3J6b3YKIEFsZXhleSBQZXN0ZXJuaWtvdgogQWxleGV5IFNpbWFrCiBBbGV4ZXkgWmFraGxlc3RpbgogQWxleGlzIENhcnZhbGhvCitBbGV4aXMgTGEgR291dHRlCiBBbGZyZWQgR2ViZXJ0CiBBbGxlbiBQdWxzaWZlcgogQWxvbmEgUm9zc2VuCiBBbW9sIFBhdHRla2FyCiBBbXIgU2hhaGluCitBbmF0b2wgQmVsc2tpCiBBbmF0b2xpIFR1Ym1hbgogQW5kZXJzIEJha2tlbgogQW5kZXJzIEd1c3RhZnNzb24KQEAgLTEwMCw2ICsxMDUsNyBAQAogQW50b24gS2FsbXlrb3YKIEFudG9uIE1hbG92CiBBbnRvbiBZYWJjaGluc2tpeQorQW50b25pbyBMYXJyb3NhCiBBcmthZGl1c3ogTWlza2lld2ljegogQXJtZWwgQXNzZWxpbgogQXJuYXVkIENvbXBhbgpAQCAtMTMxLDEyICsxMzcsMTUgQEAKIEJlbmphbWluIEdlcmFyZAogQmVuamFtaW4gR2lsYmVydAogQmVuamFtaW4gSm9obnNvbgorQmVuamFtaW4gS2lyY2hlcgogQmVub2l0IE5laWwKIEJlbm9pdCBTaWdvdXJlCiBCZXJuYXJkIExlYWsKK0Jlcm5hcmQgU3BpbAogQmVybmhhcmQgUmV1dG5lci1GaXNjaGVyCiBCZXJ0IEh1aWpiZW4KIEJlcnRyYW5kIERlbWlkZGVsYWVyCitCZXJ0cmFuZCBTaW1vbm5ldAogQmlsbCBEb3lsZQogQmlsbCBFZ2VydAogQmlsbCBIb2ZmbWFuCkBAIC0xNTIsNiArMTYxLDcgQEAKIEJvYiBTY2hhZGVyCiBCb2dkYW4gTmljdWxhCiBCcmFkIEJ1cmRpY2sKK0JyYWQgRml0enBhdHJpY2sKIEJyYWQgSGFyZGVyCiBCcmFkIEhhcmRzCiBCcmFkIEtpbmcKQEAgLTE2OSw2ICsxNzksNyBAQAogQnJpYW4gUiBEdWZmeQogQnJpYW4gVWxtCiBCcm9jayBOb2xhbmQKK0JydSBSb20KIEJydWNlIE1pdGNoZW5lcgogQnJ1bm8gVGhvbXNlbgogQnJ1bm8gZGUgQ2FydmFsaG8KQEAgLTIwNSw2ICsyMTYsNyBAQAogQ2hyaXN0aWFuIEt1cnoKIENocmlzdGlhbiBSb2JvdHRvbSBSZWlzCiBDaHJpc3RpYW4gU2NobWl0egorQ2hyaXN0aWFuIFN0ZXdhcnQKIENocmlzdGlhbiBWb2d0CiBDaHJpc3RpYW4gV2Vpc2dlcmJlcgogQ2hyaXN0b3BoZSBEZW1vcnkKQEAgLTIxOCw2ICsyMzAsNyBAQAogQ2xhcmVuY2UgR2FyZG5lcgogQ2xlbWVucyBHcnViZXIKIENsaWZmb3JkIFdvbGYKK0NsaW50IENsYXl0b24KIENvZHkgSm9uZXMKIENvZHkgTWFjawogQ29sYnkgUmFuZ2VyCkBAIC0yMjYsNiArMjM5LDcgQEAKIENvbGluIFdhdHNvbgogQ29sbSBCdWNrbGV5CiBDb25zdGFudGluZSBTYXB1bnR6YWtpcworQ29yeSBCZW5maWVsZAogQ29yeSBOZWxzb24KIENyYWlnIEEgV2VzdAogQ3JhaWcgRGF2aXNvbgpAQCAtMjM0LDYgKzI0OCw3IEBACiBDcmlzdGlhbiBSb2Ryw61ndWV6CiBDdXJ0IEJvZ21pbmUKIEN5cmlsbCBPc3RlcndhbGRlcgorQ8OpZHJpYyBDb25uZXMKIEPDqWRyaWMgRGVsdGhlaWwKIEQuIEZsaW5rbWFubgogRGEtWW9vbiBDaHVuZwpAQCAtMjQxLDggKzI1NiwxMCBAQAogRGFnb2JlcnQgTWljaGVsc2VuCiBEYW1pYW4gRGl4b24KIERhbWllbiBBZGFudAorRGFtaWVuIFZpZWxwZWF1CiBEYW4gQmVja2VyCiBEYW4gQworRGFuIENyaXN0aWFuCiBEYW4gRmFuZHJpY2gKIERhbiBMb2NrcwogRGFuIE5lbHNvbgpAQCAtMjUyLDkgKzI2OSwxNSBAQAogRGFuaWVsIEJsYWNrCiBEYW5pZWwgQ2F0ZXIKIERhbmllbCBFZ2dlcgorRGFuaWVsIEh3YW5nCiBEYW5pZWwgSm9obnNvbgorRGFuaWVsIEthaG4gR2lsbG1vcgorRGFuaWVsIExlZSBId2FuZwogRGFuaWVsIE1lbGFuaQogRGFuaWVsIE1lbnR6CitEYW5pZWwgU2NoYXVlbmJlcmcKK0RhbmllbCBTZWl0aGVyCitEYW5pZWwgU2hhaGFmCiBEYW5pZWwgU3RlaW5iZXJnCiBEYW5pZWwgU3RlbmJlcmcKIERhbmllbCBUaGVyb24KQEAgLTI2OCw3ICsyOTEsOSBAQAogRGF2ZSBSZWlzbmVyCiBEYXZlIFRob21wc29uCiBEYXZlIFZhc2lsZXZza3kKK0RhdmV5IFNoYWZpawogRGF2aWQgQmF1CitEYXZpZCBCZW5qYW1pbgogRGF2aWQgQmluZGVybWFuCiBEYXZpZCBCbGFpa2llCiBEYXZpZCBCeXJvbgpAQCAtMjk3LDEwICszMjIsMTIgQEAKIERhdmlkIFdyaWdodAogRGF2aWQgWWFuCiBEZW5nbWlud2VuCitEZW5pcyBGZWtsdXNoa2luCiBEZW5uaXMgQ2xhcmtlCiBEZXJlayBIaWdnaW5zCiBEZXRsZWYgU2NobWllcgogRGlkaWVyIEJyaXNlYm91cmcKK0RpZWdvIEJlcwogRGllZ28gQ2Fzb3JyYW4KIERpbHlhbiBQYWxhdXpvdgogRGltYSBCYXJza3kKQEAgLTMyMCwxMiArMzQ3LDE0IEBACiBEbWl0cnkgS3Vyb2Noa2luCiBEbWl0cnkgUG9wb3YKIERtaXRyeSBSZWNoa2luCitEbWl0cnkgUy4gQmFpa292CiBEb2xibmVmZiBBLlYKIERvbWVuaWNvIEFuZHJlb2xpCiBEb21pbmljayBNZWdsaW8KIERvbWluaXF1ZSBMZXVlbmJlcmdlcgogRG91ZyBLYXVmbWFuCiBEb3VnIFBvcnRlcgorRG91Z2xhcyBDcmVhZ2VyCiBEb3VnbGFzIEUuIFdlZ3NjaGVpZAogRG91Z2xhcyBLaWxwYXRyaWNrCiBEb3VnbGFzIFIuIEhvcm5lcgpAQCAtMzM1LDYgKzM2NCw3IEBACiBEdWFuZSBDYXRoZXkKIER1bmNhbiBNYWMtVmljYXIgUHJldHQKIER1c3RpbiBCb3N3ZWxsCitEdXN0eSBNYWJlCiBEeWxhbiBFbGxpY290dAogRHlsYW4gU2FsaXNidXJ5CiBFYXJseSBFaGxpbmdlcgpAQCAtMzY0LDEyICszOTQsMTQgQEAKIEVyaWMgTWVsdmlsbGUKIEVyaWMgTWVydGVucwogRXJpYyBSYXV0bWFuCitFcmljIFJpZGdlCiBFcmljIFMuIFJheW1vbmQKIEVyaWMgVGhlbGluCiBFcmljIFZlcmduYXVkCiBFcmljIFdvbmcKIEVyaWMgWW91bmcKIEVyaWNrIE51d2VuZGFtCitFcmlrIEphbnNzZW4KIEVyaWsgSm9oYW5zc29uCiBFcm5lc3QgQmVpbnJvaHIKIEVyd2FuIExlZ3JhbmQKQEAgLTM3Nyw2ICs0MDksNyBAQAogRXRoYW4gR2xhc3NlciBDYW1wCiBFdWdlbmUgS290bHlhcm92CiBFdmFuIEpvcmRhbgorRXZnZW55IEdyaW4KIEV2Z2VueSBUdXJuYWV2CiBFeWdlbmUgUnlhYmlua2luCiBGYWJpYW4gRnJhbmsKQEAgLTM4NCwxMiArNDE3LDE1IEBACiBGYWJpYW4gS2VpbAogRmFicml6aW8gQW1tb2xsbwogRmVkb3IgS2FycGVsZXZpdGNoCitGZWlzdCBKb3NzZWxpbgogRmVsaXggWWFuCiBGZWxpeCB2b24gTGVpdG5lcgogRmVuZyBUdQorRmxhdmlvIE1lZGVpcm9zCiBGbG9yaWFuIFNjaG9wcG1hbm4KIEZsb3JpYW4gV2VpbWVyCiBGb3JyZXN0IENhaG9vbgorRnJhbmNpc2NvIE1vcmFlcwogRnJhbmsgR2V2YWVydHMKIEZyYW5rIEhlbXBlbAogRnJhbmsgS2VlbmV5CkBAIC00MzcsNiArNDczLDcgQEAKIEdsZW4gTmFrYW11cmEKIEdsZW4gU2NvdHQKIEdsZW5uIFNoZXJpZGFuCitHb29nbGUgSW5jLgogR29yZG9uIE1hcmxlcgogR29yaWxsYSBNYWd1aWxhCiBHcmFudCBFcmlja3NvbgpAQCAtNDUzLDYgKzQ5MCw3IEBACiBHdWlsbGF1bWUgQXJsdWlzb24KIEd1bnRlciBLbmF1ZgogR3VzdGFmIEh1aQorR3VzdGF2byBHcmllY28KIEd3ZW5vbGUgQmVhdWNoZXNuZQogR8O2a2hhbiDFnmVuZ8O8bgogR8O2dHogQmFiaW4tRWJlbGwKQEAgLTQ3Myw2ICs1MTEsNyBAQAogSGVpbnJpY2ggU2NoYWVmZXIKIEhlbHdpbmcgTHV0egogSGVuZHJpayBWaXNhZ2UKK0hlbnJpayBHYcOfbWFubgogSGVucmlrIFN0b3JuZXIKIEhlbnJ5IEx1ZGVtYW5uCiBIZXJ2ZSBBbWJsYXJkCkBAIC00OTcsOSArNTM2LDExIEBACiBJbGd1aXogTGF0eXBvdgogSWxqYSB2YW4gU3BydW5kZWwKIEltbWFudWVsIEdyZWdvaXJlCitJbmNhIFIKIEluZ21hciBSdW5nZQogSW5nbyBSYWxmIEJsdW0KIEluZ28gV2lsa2VuCitJcmZhbiBBZGlsb3ZpYwogSXNhYWMgQm91a3JpcwogSXNoYW4gU2luZ2hMZXZldHQKIEl2byBCZWxsaW4gU2FsYXJpbgpAQCAtNTA3LDcgKzU0OCw5IEBACiBKYWNreSBMYW0KIEphY29iIE1ldXNlcgogSmFjb2IgTW9zaGVua28KK0phY3RyeSBaZW5nCiBKYWQgQ2hhbWNoYW0KK0phaW1lIEZ1bGxhb25kbwogSmFrdWIgWmFrcnpld3NraQogSmFtZXMgQnVyc2EKIEphbWVzIENoZW5nCkBAIC01MzUsNiArNTc4LDcgQEAKIEphc29uIE1jRG9uYWxkCiBKYXNvbiBTLiBQcmllYmUKIEphdmllciBCYXJyb3NvCitKYXZpZXIgRy4gU29nbwogSmF5IEF1c3RpbgogSmF5ZXNoIEEgU2hhaAogSmF6IEZyZXNoCkBAIC01NTQsNiArNTk4LDcgQEAKIEplZmYgUGhpbGxpcHMKIEplZmYgUG9obG1leWVyCiBKZWZmIFdlYmVyCitKZWZmcmV5IFdhbHRvbgogSmVucyBSYW50aWwKIEplcmVteSBGcmllc25lcgogSmVyZW15IEh1ZGRsZXN0b24KQEAgLTU2OCw2ICs2MTMsNyBAQAogSmVzIEJhZHdhbAogSmVzcGVyIEplbnNlbgogSmVzc2UgTm9sbGVyCitKZXNzZSBUYW4KIEppZSBIZQogSmltIERyYXNoCiBKaW0gRnJlZW1hbgpAQCAtNTkwLDYgKzYzNiw3IEBACiBKb2hhbiB2YW4gU2Vsc3QKIEpvaGFubmVzIEJhdWVyCiBKb2hhbm5lcyBFcm5zdAorSm9oYW5uZXMgU2NoaW5kZWxpbgogSm9obiBCcmFkc2hhdwogSm9obiBDb2ZmZXkKIEpvaG4gQ3JvdwpAQCAtNjAwLDEzICs2NDcsMTYgQEAKIEpvaG4gSmFuc3NlbgogSm9obiBKb3NlcGggQmFjaGlyCiBKb2huIEtlbGx5CitKb2huIEtvaGwKIEpvaG4gTGFzaworSm9obiBMZXZvbgogSm9obiBMaWdodHNleQogSm9obiBNYXJpbm8KIEpvaG4gTWFyc2hhbGwKIEpvaG4gTWNHb3dhbgogSm9obiBQLiBNY0Nhc2tleQogSm9obiBTdXByb2NrCitKb2huIFdhbmdodWkKIEpvaG4gV2lsa2luc29uCiBKb2huLU1hcmsgQmVsbAogSm9obm55IEx1b25nCkBAIC02MTksNiArNjY5LDcgQEAKIEpvbiBUcmF2aXMKIEpvbiBUdXJuZXIKIEpvbmFzIEZvcnNtYW4KK0pvbmFzIE1pbm5iZXJnCiBKb25hcyBTY2huZWxsaQogSm9uYXRhbiBMYW5kZXIKIEpvbmF0YW4gVmVsYQpAQCAtNjI3LDYgKzY3OCw3IEBACiBKb25hdGhhbiBIc2V1CiBKb25hdGhhbiBOaWVkZXIKIEpvbmdraSBTdXdhbmRpCitKb29uYXMgS3VvcmlsZWh0bwogSm9zZSBBbGYKIEpvc2UgS2FoYW4KIEpvc2VmIFdvbGYKQEAgLTYzNiw2ICs2ODgsNyBAQAogSnVhbiBCYXJyZXRvCiBKdWFuIEYuIENvZGFnbm9uZQogSnVhbiBJZ25hY2lvIEhlcnbDoXMKK0p1YW4gUlAKIEp1ZHNvbiBCaXNob3AKIEp1ZXJnZW4gV2lsa2UKIEp1a2thIFBpaGwKQEAgLTY0Nyw2ICs3MDAsNyBAQAogSnVsaWVuIFJveWVyCiBKdW4taWNoaXJvIGl0b2p1biBIYWdpbm8KIEp1cmlqIFNtYWtvdgorSnVzdGluIEVobGVydAogSnVzdGluIEZsZXRjaGVyCiBKdXN0aW4gS2FybmVnZXMKIEp1c3RpbiBNYWdnYXJkCkBAIC02NTQsMTUgKzcwOCwxOCBAQAogSsO2cm4gSGFydHJvdGgKIEsuIFIuIFdhbGtlcgogS2FpIEVuZ2VydAorS2FpIE5vZGEKIEthaSBTb21tZXJmZWxkCiBLYWktVXdlIFJvbW1lbAogS2FsbGUgVmFobG1hbgogS2FtaWwgRHVka2EKK0thbmcgTGluCiBLYW5nLUppbiBMZWUKIEthcmwgTW9lcmRlcgogS2Fyb2wgUGlldHJ6YWsKIEthc3BhciBCcmFuZAogS2F0aWUgV2FuZworS2F6dWhvIE9rdQogS2VlcyBDb29rCiBLZWl0aCBNYWNEb25hbGQKIEtlaXRoIE1jR3VpZ2FuCkBAIC02ODksNiArNzQ2LDcgQEAKIEtyaXN0ZXIgSm9oYW5zZW4KIEtyaXN0aWFuIEd1bnN0b25lCiBLcmlzdGlhbiBLw7ZobnRvcHAKK0t1cnQgRmFua2hhdXNlcgogS3lsZSBKLiBNY0theQogS3lsZSBMLiBIdWZmCiBLeWxlIFNhbGxlZQpAQCAtNzA1LDYgKzc2Myw3IEBACiBMYXJzIFRvcmJlbiBXaWxzb24KIExhdSBIYW5nIEtpbgogTGF1cmVudCBSYWJyZXQKK0xhdXJpIEthc2FuZW4KIExlZ29mZiBWaW5jZW50CiBMZWhlbCBCZXJuYWR0CiBMZWlmIFcKQEAgLTcyMCw2ICs3NzksOCBAQAogTGluZGxleSBGcmVuY2gKIExpbmcgVGhpbwogTGludXMgTmllbHNlbiBGZWx0emluZworTGludXMgTm9yZGJlcmcKK0xpb3IgS2FwbGFuCiBMaXNhIFh1CiBMaXZpdSBDaGlyY3UKIExpemEgQWxlbmNoZXJ5CkBAIC03MzIsNiArNzkzLDggQEAKIEx1Y2FzIFBhcmR1ZQogTHVkZWsgRmluc3RybGUKIEx1ZG92aWNvIENhdmVkb24KK0x1ZHdpZyBOdXNzZWwKK0x1a2FzIFJ1emlja2EKIEx1a2FzeiBDemVraWVyZGEKIEx1a2UgQW1lcnkKIEx1a2UgQ2FsbApAQCAtNzQyLDYgKzgwNSw4IEBACiBNYWNpZWogUHV6aW8KIE1hY2llaiBXLiBSb3p5Y2tpCiBNYWtzIE5hdW1vdgorTWFrc2ltIEt1emV2YW5vdgorTWFrc2ltIFN0c2VwYW5lbmthCiBNYW1vcnUgVGFzYWthCiBNYW5keSBXdQogTWFuZnJlZCBTY2h3YXJiCkBAIC03NzksNiArODQ0LDcgQEAKIE1hcmt1cyBLb2V0dGVyCiBNYXJrdXMgTW9lbGxlcgogTWFya3VzIE9iZXJodW1lcgorTWFycXVpcyBkZSBNdWVzbGkKIE1hcnRpam4gS29zdGVyCiBNYXJ0aW4gQy4gTWFydGluCiBNYXJ0aW4gRHJhc2FyCkBAIC04MjUsNyArODkxLDkgQEAKIE1pY2hhZWwgR29mZmlvdWwKIE1pY2hhZWwgSmFobgogTWljaGFlbCBKZXJyaXMKK01pY2hhZWwgS2FsaW5pbgogTWljaGFlbCBLYXVmbWFubgorTWljaGFlbCBLw7ZuaWcKIE1pY2hhZWwgTWVhbGxpbmcKIE1pY2hhZWwgTXVlbGxlcgogTWljaGFlbCBPc2lwb3YKQEAgLTgzNSw4ICs5MDMsMTAgQEAKIE1pY2hhZWwgV2FsbG5lcgogTWljaGFsIEJvbmlubwogTWljaGFsIE1hcmVrCitNaWNoYcWCIEZpdGEKIE1pY2hhxYIgR8Ozcm55CiBNaWNoYcWCIEtvd2FsY3p5aworTWljaGHFgiBQaWVjaG93c2tpCiBNaWNoZWwgUHJvbW9uZXQKIE1pY2hlbGUgQmluaQogTWlndWVsIEFuZ2VsCkBAIC04NjIsMTIgKzkzMiwxNCBAQAogTW9oYW1tYWQgQWxTYWxlaAogTW9odW4gQmlzd2FzCiBNb3N0eW4gQnJhbWxleS1Nb29yZQorTW90aSBBdnJhaGFtaQogTXlrIFRheWxvcgogTmFjaCBNLiBTLgogTmFnYWkgSAogTmF0aGFuIENvdWx0ZXIKIE5hdGhhbiBPJ1N1bGxpdmFuCiBOYXRoYW5hZWwgTmVyb2RlCitOYXRoYW5pZWwgV2Fpc2Jyb3QKIE5hdmVlbiBDaGFuZHJhbgogTmF2ZWVuIE5vZWwKIE5laWwgQm93ZXJzCkBAIC04OTQsMTUgKzk2NiwyMCBAQAogTm9idWhpcm8gQmFuCiBOb2RhayBTb2RhawogTm9yYmVydCBGcmVzZQorTm9yYmVydCBLZXR0CiBOb3JiZXJ0IE5vdm90bnkKK09jdGF2aW8gU2Nocm9lZGVyCiBPZmVyCiBPbGEgTW9yawogT2xhZiBGbGViYmUKIE9sYWYgU3TDvGJlbgorT2xlZyBQdWRleWV2CiBPbGl2ZXIgR29uZMW+YQorT2xpdmVyIEdyYXV0ZQogT2xpdmVyIEt1Y2tlcnR6CiBPbGl2ZXIgU2NoaW5kbGVyCiBPbGl2aWVyIEJlcmdlcgorT3JhbmdlIFRzYWkKIE9yZW4gU291cm91am9uCiBPcmVuIFRpcm9zaAogT3JnYWQgU2hhbmVoCkBAIC05NDQsNiArMTAyMSw3IEBACiBQYXdlbCBLaWVyc2tpCiBQZWRybyBMYXJyb3kKIFBlZHJvIE5ldmVzCitQZXIgTWFsbWJlcmcKIFBldGVyIEJyYXkKIFBldGVyIEZvcnJldAogUGV0ZXIgR2FsCkBAIC05OTEsNiArMTA2OSw3IEBACiBRdWlubiBTbGFjawogUmFkdSBTaW1pb25lc2N1CiBSYWZhIE11eW8KK1JhZmFlbCBBbnRvbmlvCiBSYWZhZWwgU2FndWxhCiBSYWZheWVsIE1rcnRjaHlhbgogUmFmYcOrbCBDYXJyw6kKQEAgLTk5OCw2ICsxMDc3LDcgQEAKIFJhaW5lciBKdW5nCiBSYWluZXIgS29lbmlnCiBSYWplc2ggTmFnYW5hdGhhbgorUmFqa3VtYXIgTWFuZGFsCiBSYWxmIFMuIEVuZ2Vsc2NoYWxsCiBSYWxwaCBCZWNrbWFubgogUmFscGggTWl0Y2hlbGwKQEAgLTEwMDcsNiArMTA4Nyw3IEBACiBSYXkgRGFzc2VuCiBSYXkgUGVrb3dza2kKIFJheSBTYXRpcm8KK1JhenZhbiBDb2pvY2FydQogUmVpbm91dCB2YW4gU2Nob3V3ZW4KIFJlbWkgR2Fjb2duZQogUmVuYXRvIEJvdGVsaG8KQEAgLTEwMjcsMTAgKzExMDgsMTIgQEAKIFJpY2hhcmQgQ2xheXRvbgogUmljaGFyZCBDb29wZXIKIFJpY2hhcmQgR29ydG9uCitSaWNoYXJkIEhvc2tpbmcKIFJpY2hhcmQgTWljaGFlbAogUmljaGFyZCBNb29yZQogUmljaGFyZCBQcmVzY290dAogUmljaGFyZCBTaWx2ZXJtYW4KK1JpY2hhcmQgdmFuIGRlbiBCZXJnCiBSaWNrIEpvbmVzCiBSaWNrIFJpY2hhcmRzb24KIFJvYiBDcml0dGVuZGVuCkBAIC0xMDUxLDkgKzExMzQsMTEgQEAKIFJvYmluIEpvaG5zb24KIFJvYmluIEtheQogUm9ic29uIEJyYWdhIEFyYXVqbworUm9kIFdpZGRvd3NvbgogUm9kbmV5IFNpbW1vbnMKIFJvZHJpYyBHbGFzZXIKIFJvZHJpZ28gU2lsdmEKK1JvZ2VyIExlaWdoCiBSb2xhbmQgQmxvbQogUm9sYW5kIEtyaWthdmEKIFJvbGFuZCBaaW1tZXJtYW5uCkBAIC0xMDc4LDYgKzExNjMsNyBAQAogU2FsdmF0b3JlIFNvcnJlbnRpbm8KIFNhbSBEZWFuZQogU2FtIEh1cnN0CitTYW0gUm90aAogU2FtIFNjaGFua2VuCiBTYW1wbyBLZWxsb21ha2kKIFNhbXVlbCBEw61heiBHYXJjw61hCkBAIC0xMDk3LDIzICsxMTgzLDI3IEBACiBTY290dCBEYXZpcwogU2NvdHQgTWNDcmVhcnkKIFNlYW4gQm91ZHJlYXUKK1NlYmFzdGlhbiBQb2hsc2NobWlkdAogU2ViYXN0aWFuIFJhc211c3NlbgogU2VudGhpbCBSYWphIFZlbHUKIFNlcmdlaSBOaWt1bG92CiBTZXJnZXkgVGF0YXJpbmNldgogU2VyZ2lvIEJhbGxlc3RyZXJvCiBTZXNodWJhYnUgUGFzYW0KK1NldGggTW9zCiBTaCBEaWFvCiBTaGFvIFNodWNoYW8KIFNoYXJhZCBHdXB0YQogU2hhcmQKIFNoYXduIExhbmRkZW4KIFNoYXduIFBvdWxzb24KK1NoaW5lIEZhbgogU2htdWxpayBSZWdldgogU2lkZGhhcnRoYSBQcmFrYXNoIEphaW4KLVNpZG5leSBTYW4gTWFydGluCitTaWRuZXkgU2FuIE1hcnTDrW4KIFNpZWdmcmllZCBHeXVyaWNza28KIFNpbW9uIERpY2sKK1NpbW9uIEguCiBTaW1vbiBKb3NlZnNzb24KIFNpbW9uIExpdQogU29uZyBNYQpAQCAtMTE1NywxNiArMTI0NywyMSBAQAogU3ZlbiBBbmRlcnMKIFN2ZW4gTmV1aGF1cwogU3ZlbiBXZWdlbmVyCitTdnlhdG9zbGF2IE1pc2h5bgogU3ltZW9uIFBhcmFzY2hvdWRpcwogU8OpYmFzdGllbiBXaWxsZW1pam5zCiBULiBCaGFyYXRoCiBULiBZYW1hZGEKK1RKIFNhdW5kZXJzCiBUYWUgSHlvdW5nIEFobgotVGFuZWxpIFZhaGFrYW5nYXMKK1RhbmVsaSBWw6Row6RrYW5nYXMKIFRhbmd1eSBGYXV0cmUKIFRhdHN1aGlybyBUc3VqaWthd2EKIFRlbXByaW11cworVGVycmkgT2RhCitUaGVvZG9yZSBEdWJvaXMKIFRob21hcyBCcmF1bgorVGhvbWFzIEdsYW56bWFubgogVGhvbWFzIEouIE1vb3JlCiBUaG9tYXMgS2xhdXNuZXIKIFRob21hcyBMLiBTaGlubmljawpAQCAtMTE3NCw2ICsxMjY5LDcgQEAKIFRob21hcyBSdWVja2VyCiBUaG9tYXMgU2Nod2luZ2UKIFRob21hcyBUb25pbm8KK1Rob3JzdGVuIFNjaMO2bmluZwogVGlpdCBQaWttYQogVGlsbCBNYWFzCiBUaW0gQW5zZWxsCkBAIC0xMTg0LDEwICsxMjgwLDEyIEBACiBUaW0gSGFyZGVyCiBUaW0gSGVja21hbgogVGltIE5ld3NvbWUKLVRpbSBSdWVoc2VuCitUaW0gUsO8aHNlbgogVGltIFNuZWRkb24KK1RpbSBTdGFjawogVGltIFN0YXJsaW5nCiBUaW1vIFNpcmFpbmVuCitUaW1vdGVqIExhemFyCiBUaW51cyB2YW4gZGVuIEJlcmcKIFRvYmlhcyBNYXJrdXMKIFRvYmlhcyBSdW5kc3Ryw7ZtCkBAIC0xMTk1LDcgKzEyOTMsNiBAQAogVG9ieSBQZXRlcnNvbgogVG9kZCBBIE91c2thCiBUb2RkIEt1bGVzemEKLVRvZGQgT3Vza2EKIFRvZGQgVmllcmxpbmcKIFRvbSBCZW5vaXN0CiBUb20gRG9ub3ZhbgpAQCAtMTIwOSw2ICsxMzA2LDcgQEAKIFRvbSBXcmlnaHQKIFRvbSBaZXJ1Y2hhCiBUb21hcyBIb2dlcgorVG9tYXMgSmFrb2Jzc29uCiBUb21hcyBNbGNvY2gKIFRvbWFzIFBvc3Bpc2VrCiBUb21hcyBTemVwZQpAQCAtMTIyNSw2ICsxMzIzLDcgQEAKIFRvc2hpbyBLdXJhdG9taQogVG9zaGl5dWtpIE1hZXphd2EKIFRyYWlhbiBOaWNvbGVzY3UKK1RyYXZpcyBCdXJ0cnVtCiBUcm9lbHMgV2Fsc3RlZCBIYW5zZW4KIFRyb3kgRW5nZWwKIFR1cG9uZSBBbGZyZWRvCkBAIC0xMjU1LDkgKzEzNTQsMTEgQEAKIFZvanRlY2ggTWluYXJpawogVm9qdMSbY2ggS3LDoWwKIFZzZXZvbG9kIE5vdmlrb3YKK1cuIE1hcmsgS3ViYWNraQogV2FsZGVrIEtvemJhCiBXYWx0ZXIgSi4gTWFjawogV2FyZCBXaWxsYXRzCitXYXJwIEthd2FkYQogV2FycmVuIE1lbnplcgogV2F5bmUgSGFpZ2gKIFdlcm5lciBLb2NoCkBAIC0xMjcyLDYgKzEzNzMsNyBAQAogV291dGVyIFZhbiBSb295CiBXdSBZb25nemhlbmcKIFhhdmllciBCb3VjaG91eAorWGlhbmdiaW4gTGkKIFlhYWtvdiBTZWxrb3dpdHoKIFlhbWFkYSBZYXN1aGFydQogWWFuZyBUc2UKQEAgLTEyOTEsNyArMTM5MywxOCBAQAogWmVrdW4gTmkKIFptZXkgUGV0cm9mZgogWnZpIEhhcidFbAorYXNhdmFoIG9uIGdpdGh1YgorYmF1bWFuaiBvbiBnaXRodWIKK2JzYW1tb24gb24gZ2l0aHViCitka2pqcjg5IG9uIGdpdGh1YgorZVhlQzY0IG9uIGdpdGh1YgoranZlYXpleSBvbiBnaXRodWIKK2tyZXNoYW5vIG9uIGdpdGh1YgorbWFyYy1ncm91bmRjdGwgb24gZ2l0aHViCituZWV4IG9uIGdpdGh1YgogbmsKK3NpbHZlamExIG9uIGdpdGh1Ygogc3dhbGthdXMgYXQgeWFob28uY29tCiB0b21taW5rW2F0XXBvc3QucGwKK8WgdGVmYW4gS3JlbWXFiAog0J3QuNC60LjRgtCwINCU0L7RgNC+0YXQuNC9CmRpZmYgLS1naXQgYS9kb2NzL1RIQU5LUy1maWx0ZXIgYi9kb2NzL1RIQU5LUy1maWx0ZXIKaW5kZXggMzlhOGE0Yy4uZGVmZDYwNSAxMDA2NDQKLS0tIGEvZG9jcy9USEFOS1MtZmlsdGVyCisrKyBiL2RvY3MvVEhBTktTLWZpbHRlcgpAQCAtNDgsNSArNDgsMjMgQEAKIHMvdGV0ZXRlc3QgdGV0ZXRlc3QvLwogcy9KacWZw60gSHJ1xaFrYS9KaXJpIEhydXNrYS8KIHMvVmlrdG9yIFN6YWthdHMvVmlrdG9yIFN6YWvDoXRzLwotcy9Kb25hdGhhbiBDYXJkb3NvL0pvbmF0aGFuIENhcmRvc28gTWFjaGFkby8KLXMvTGludXMgTmllbHNlbi9MaW51cyBOaWVsc2VuIEZlbHR6aW5nLworcy9Kb25hdGhhbiBDYXJkb3NvJC9Kb25hdGhhbiBDYXJkb3NvIE1hY2hhZG8vCitzL0xpbnVzIE5pZWxzZW4kL0xpbnVzIE5pZWxzZW4gRmVsdHppbmcvCitzL1RvZGQgT3Vza2EkL1RvZGQgQSBPdXNrYS8KK3MvVGltIFJ1ZWhzZW4vVGltIFLDvGhzZW4vCitzL01pY2hhZWwgS29lbmlnL01pY2hhZWwgS8O2bmlnLworcy9tb3BhcmlzdGhlYmVzdC9UcmF2aXMgQnVydHJ1bS8KK3MvSmFuLUUvSmFuIEVocmhhcmR0Lworcy9QYXJhcyBTJC9QYXJhcyBTZXRoaWEvCitzL0NyaXN0aWFuIFJvZHJceEVEZ3VleiQvQ3Jpc3RpYW4gUm9kcsOtZ3Vlei8KK3MvU2lkbmV5IFNhbiBNYXJ0XHhFRG4kL1NpZG5leSBTYW4gTWFydMOtbi8KK3MvU2lkbmV5IFNhbiBNYXJ0aW4kL1NpZG5leSBTYW4gTWFydMOtbi8KK3MvVGFuZWxpIFZceEU0aFx4RTRrYW5nYXMkL1RhbmVsaSBWw6Row6RrYW5nYXMvCitzL1RhbmVsaSBWYWhha2FuZ2FzJC9UYW5lbGkgVsOkaMOka2FuZ2FzLworcy/QndC40LrQuNGC0LAg0JTQvtGA0L7RhdC40L0uL9Cd0LjQutC40YLQsCDQlNC+0YDQvtGF0LjQvS8KK3MvdXBzdHJlYW0gdGVzdHMgMzA1Ly8KK3MvIChlZGl0ZWQpLy8KK3MvSmVhbi1QaGlsaXBwZSBCYXJldHRlLUxhUGllcnJlJC9KZWFuLVBoaWxpcHBlIEJhcnJldHRlLUxhUGllcnJlLworcy9Kb2VybiBIYXJ0cm90aCQvSsO2cm4gSGFydHJvdGgvCitzL0hvbmdsaSBMYWkgKFBodXNpb24pJC9Ib25nbGkgTGFpLworcy9naXRodWIgdXNlciAna3Jlc2hhbm8nJC9rcmVzaGFubyBvbiBnaXRodWIvCmRpZmYgLS1naXQgYS9kb2NzL1RPRE8gYi9kb2NzL1RPRE8KaW5kZXggNjViZjJmZi4uZjNiMDYwMCAxMDA2NDQKLS0tIGEvZG9jcy9UT0RPCisrKyBiL2RvY3MvVE9ETwpAQCAtMjUsMTEgKzI1LDIxIEBACiAgMS43IERldGVjdCB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBjYWxsYmFja3MKICAxLjggQWxsb3cgU1NMIChIVFRQUykgdG8gcHJveHkKICAxLjkgQ2FjaGUgbmVnYXRpdmUgbmFtZSByZXNvbHZlcworIDEuMTAgU3VwcG9ydCBJRE5BMjAwOAorIDEuMTEgbWluaW1pemUgZGVwZW5kZW5jaWVzIHdpdGggZHluYW1pY2x5IGxvYWRlZCBtb2R1bGVzCisgMS4xMiBoYXZlIGZvcm0gZnVuY3Rpb25zIHVzZSBDVVJMIGhhbmRsZSBhcmd1bWVudAorIDEuMTMgQWRkIENVUkxPUFRfTUFJTF9DTElFTlQgb3B0aW9uCisgMS4xNCBUeXBlc2FmZSBjdXJsX2Vhc3lfc2V0b3B0KCkKKyAxLjE1IFRDUCBGYXN0IE9wZW4KKyAxLjE2IFRyeSB0byBVUkwgZW5jb2RlIGdpdmVuIFVSTAorIDEuMTcgQWRkIHN1cHBvcnQgZm9yIElSSXMKIAogIDIuIGxpYmN1cmwgLSBtdWx0aSBpbnRlcmZhY2UKICAyLjEgTW9yZSBub24tYmxvY2tpbmcKLSAyLjIgRml4IEhUVFAgUGlwZWxpbmluZyBmb3IgUFVUCi0gMi4zIEJldHRlciBzdXBwb3J0IGZvciBzYW1lIG5hbWUgcmVzb2x2ZXMKKyAyLjIgQmV0dGVyIHN1cHBvcnQgZm9yIHNhbWUgbmFtZSByZXNvbHZlcworIDIuMyBOb24tYmxvY2tpbmcgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCkKKyAyLjQgU3BsaXQgY29ubmVjdCBhbmQgYXV0aGVudGljYXRpb24gcHJvY2VzcworIDIuNSBFZGdlLXRyaWdnZXJlZCBzb2NrZXRzIHNob3VsZCB3b3JrCiAKICAzLiBEb2N1bWVudGF0aW9uCiAgMy4xIFVwZGF0ZSBkYXRlIGFuZCB2ZXJzaW9uIGluIG1hbiBwYWdlcwpAQCAtNTAsNiArNjAsNyBAQAogIDUuNCBTUERZCiAgNS41IGF1dGg9IGluIFVSTHMKICA1LjYgUmVmdXNlICJkb3duZ3JhZGUiIHJlZGlyZWN0cworIDUuNyBNb3JlIGNvbXByZXNzaW9ucwogCiAgNi4gVEVMTkVUCiAgNi4xIGRpdGNoIHN0ZGluCkBAIC02MCwyMiArNzEsMjMgQEAKICA3LiBTTVRQCiAgNy4xIFBpcGVsaW5pbmcKICA3LjIgRW5oYW5jZWQgY2FwYWJpbGl0eSBzdXBwb3J0Ci0gCisKICA4LiBQT1AzCiAgOC4xIFBpcGVsaW5pbmcKICA4LjIgRW5oYW5jZWQgY2FwYWJpbGl0eSBzdXBwb3J0Ci0gCisKICA5LiBJTUFQCiAgOS4xIEVuaGFuY2VkIGNhcGFiaWxpdHkgc3VwcG9ydAotIAorCiAgMTAuIExEQVAKICAxMC4xIFNBU0wgYmFzZWQgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcwotIAorCiAgMTEuIFNNQgogIDExLjEgRmlsZSBsaXN0aW5nIHN1cHBvcnQKICAxMS4yIEhvbm9yIGZpbGUgdGltZXN0YW1wcwogIDExLjMgVXNlIE5UTE12MgotIAorIDExLjQgQ3JlYXRlIHJlbW90ZSBkaXJlY3RvcmllcworCiAgMTIuIE5ldyBwcm90b2NvbHMKICAxMi4xIFJTWU5DCiAKQEAgLTEwMSw4ICsxMTMsOSBAQAogIDE2LiBTQVNMCiAgMTYuMSBPdGhlciBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zCiAgMTYuMiBBZGQgUU9QIHN1cHBvcnQgdG8gR1NTQVBJIGF1dGhlbnRpY2F0aW9uCi0gCi0gMTcuIENsaWVudAorIDE2LjMgU3VwcG9ydCBiaW5hcnkgbWVzc2FnZXMgKGkuZS46IG5vbi1iYXNlNjQpCisKKyAxNy4gQ29tbWFuZCBsaW5lIHRvb2wKICAxNy4xIHN5bmMKICAxNy4yIGdsb2IgcG9zdHMKICAxNy4zIHByZXZlbnQgZmlsZSBvdmVyd3JpdGluZwpAQCAtMTEyLDYgKzEyNSwxMSBAQAogIDE3Ljcgd2FybmluZyB3aGVuIHNlbmRpbmcgYmluYXJ5IG91dHB1dCB0byB0ZXJtaW5hbAogIDE3Ljggb2ZmZXIgY29sb3ItY29kZWQgSFRUUCBoZWFkZXIgb3V0cHV0CiAgMTcuOSBDaG9vc2UgdGhlIG5hbWUgb2YgZmlsZSBpbiBicmFjZXMgZm9yIGNvbXBsZXggVVJMcworIDE3LjEwIGltcHJvdmUgaG93IGN1cmwgd29ya3MgaW4gYSB3aW5kb3dzIGNvbnNvbGUgd2luZG93CisgMTcuMTEgLXcgb3V0cHV0IHRvIHN0ZGVycgorIDE3LjEyIGtlZXAgcnVubmluZywgcmVhZCBpbnN0cnVjdGlvbnMgZnJvbSBwaXBlL3NvY2tldAorIDE3LjEzIHN1cHBvcnQgbWV0YWxpbmsgaW4gaHR0cCBoZWFkZXJzCisgMTcuMTQgLS1mYWlsIHdpdGhvdXQgLS1sb2NhdGlvbiBzaG91bGQgdHJlYXQgM3h4IGFzIGEgZmFpbHVyZQogCiAgMTguIEJ1aWxkCiAgMTguMSByb2ZmaXQKQEAgLTEyMiw2ICsxNDAsNyBAQAogIDE5LjMgbW9yZSBwcm90b2NvbHMgc3VwcG9ydGVkCiAgMTkuNCBtb3JlIHBsYXRmb3JtcyBzdXBwb3J0ZWQKICAxOS41IEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IGNvbm5lY3Rpb25zCisgMTkuNiBVc2UgdGhlIFJGQzYyNjUgdGVzdCBzdWl0ZQogCiAgMjAuIE5leHQgU09OQU1FIGJ1bXAKICAyMC4xIGh0dHAtc3R5bGUgSEVBRCBvdXRwdXQgZm9yIEZUUApAQCAtMTM3LDggKzE1Niw2IEBACiAgMjEuNiByZW1vdmUgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRQogIDIxLjcgcmVtb3ZlIHByb2dyZXNzIG1ldGVyIGZyb20gbGliY3VybAogIDIxLjggcmVtb3ZlICdjdXJsX2h0dHBwb3N0JyBmcm9tIHB1YmxpYwotIDIxLjkgaGF2ZSBmb3JtIGZ1bmN0aW9ucyB1c2UgQ1VSTCBoYW5kbGUgYXJndW1lbnQKLSAyMS4xMCBBZGQgQ1VSTE9QVF9NQUlMX0NMSUVOVCBvcHRpb24KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTE2Myw3ICsxODAsNyBAQAogIHNpZ25hbCBoYW5kbGVyIGJhY2sgaW50byB0aGUgbGlicmFyeSB3aXRoIGEgc2lnc2V0am1wLCB3aGljaCBlZmZlY3RpdmVseQogIGNhdXNlcyBsaWJjdXJsIHRvIGNvbnRpbnVlIHJ1bm5pbmcgd2l0aGluIHRoZSBzaWduYWwgaGFuZGxlci4gVGhpcyBpcwogIG5vbi1wb3J0YWJsZSBhbmQgY291bGQgY2F1c2UgcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMuIEEgZGlzY3Vzc2lvbiBvbiB0aGUKLSBwcm9ibGVtIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDkvMDE5Ny5odG1sCisgcHJvYmxlbSBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wOS8wMTk3Lmh0bWwKIAogIEFsc28sIGFsYXJtKCkgcHJvdmlkZXMgdGltZW91dCByZXNvbHV0aW9uIG9ubHkgdG8gdGhlIG5lYXJlc3Qgc2Vjb25kLiBhbGFybQogIG91Z2h0IHRvIGJlIHJlcGxhY2VkIGJ5IHNldGl0aW1lciBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4KQEAgLTIxOCw2ICsyMzUsODIgQEAKICBBIG5hbWUgcmVzb2x2ZSB0aGF0IGhhcyBmYWlsZWQgaXMgbGlrZWx5IHRvIGZhaWwgd2hlbiBtYWRlIGFnYWluIHdpdGhpbiBhCiAgc2hvcnQgcGVyaW9kIG9mIHRpbWUuIEN1cnJlbnRseSB3ZSBvbmx5IGNhY2hlIHBvc2l0aXZlIHJlc3BvbnNlcy4KIAorMS4xMCBTdXBwb3J0IElETkEyMDA4CisKKyBJbnRlcm5hdGlvbmFsIERvbWFpbiBOYW1lcyBhcmUgc3VwcG9ydGVkIGluIGxpYmN1cmwgc2luY2UgeWVhcnMgYmFjaywgcG93ZXJlZAorIGJ5IGxpYmlkbi4gbGliaWRuIGltcGxlbWVudHMgSUROQTIwMDMgd2hpY2ggaGFzIGJlZW4gc3VwZXJzZWRlZCBieSBJRE5BMjAwOC4KKyBsaWJpZG4yIGlzIGFuIGV4aXN0aW5nIGxpYnJhcnkgb2ZmZXJpbmcgc3VwcG9ydCBmb3IgSUROQTIwMDguCisKKzEuMTEgbWluaW1pemUgZGVwZW5kZW5jaWVzIHdpdGggZHluYW1pY2x5IGxvYWRlZCBtb2R1bGVzCisKKyBXZSBjYW4gY3JlYXRlIGEgc3lzdGVtIHdpdGggbG9hZGFibGUgbW9kdWxlcy9wbHVnLWlucywgd2hlcmUgdGhlc2UgbW9kdWxlcworIHdvdWxkIGJlIHRoZSBvbmVzIHRoYXQgbGluayB0byAzcmQgcGFydHkgbGlicy4gVGhhdCB3b3VsZCBhbGxvdyB1cyB0byBhdm9pZAorIGhhdmluZyB0byBsb2FkIEFMTCBkZXBlbmRlbmNpZXMgc2luY2Ugb25seSB0aGUgbmVjZXNzYXJ5IG9uZXMgZm9yIHRoaXMKKyBhcHAvaW52b2tlL3VzZWQgcHJvdG9jb2xzIHdvdWxkIGJlIG5lY2Vzc2FyeSB0byBsb2FkLiAgU2VlCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMzQ5CisKKzEuMTIgaGF2ZSBmb3JtIGZ1bmN0aW9ucyB1c2UgQ1VSTCBoYW5kbGUgYXJndW1lbnQKKworIGN1cmxfZm9ybWFkZCgpIGFuZCBjdXJsX2Zvcm1nZXQoKSBib3RoIGN1cnJlbnRseSBoYXZlIG5vIENVUkwgaGFuZGxlCisgYXJndW1lbnQsIGJ1dCBib3RoIGNhbiB1c2UgYSBjYWxsYmFjayB0aGF0IGlzIHNldCBpbiB0aGUgZWFzeSBoYW5kbGUsIGFuZAorIHRodXMgY3VybF9mb3JtZ2V0KCkgd2l0aCBjYWxsYmFjayBjYW5ub3QgZnVuY3Rpb24gd2l0aG91dCBmaXJzdCBoYXZpbmcKKyBjdXJsX2Vhc3lfcGVyZm9ybSgpIChvciBzaW1pbGFyKSBjYWxsZWQgLSB3aGljaCBpcyBoYXJkIHRvIGdyYXNwIGFuZCBhIGRlc2lnbgorIG1pc3Rha2UuCisKKyBUaGUgY3VybF9mb3JtYWRkKCkgZGVzaWduIGNhbiBwcm9iYWJseSBhbHNvIGJlIHJlY29uc2lkZXJlZCB0byBtYWtlIGl0IGVhc2llcgorIHRvIHVzZSBhbmQgbGVzcyBlcnJvci1wcm9uZS4gUHJvYmFibHkgZWFzaWVzdCBieSBzcGxpdHRpbmcgaXQgaW50byBzZXZlcmFsCisgZnVuY3Rpb24gY2FsbHMuCisKKzEuMTMgQWRkIENVUkxPUFRfTUFJTF9DTElFTlQgb3B0aW9uCisKKyBSYXRoZXIgdGhhbiB1c2UgdGhlIFVSTCB0byBzcGVjaWZ5IHRoZSBtYWlsIGNsaWVudCBzdHJpbmcgdG8gcHJlc2VudCBpbiB0aGUKKyBIRUxPIGFuZCBFSExPIGNvbW1hbmRzLCBsaWJjdXJsIHNob3VsZCBzdXBwb3J0IGEgbmV3IENVUkxPUFQgc3BlY2lmaWNhbGx5IGZvcgorIHNwZWNpZnlpbmcgdGhpcyBkYXRhIGFzIHRoZSBVUkwgaXMgbm9uLXN0YW5kYXJkIGFuZCB0byBiZSBob25lc3QgYSBiaXQgb2YgYQorIGhhY2sgOy0pCisKKyBQbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgdGhyZWFkIGZvciBtb3JlIGluZm9ybWF0aW9uOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTItMDUvMDE3OC5odG1sCisKKzEuMTQgVHlwZXNhZmUgY3VybF9lYXN5X3NldG9wdCgpCisKKyBPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHByb2JsZW1zIGluIGxpYmN1cmwgdXNpbmcgYXBwbGljYXRpb25zIGlzIHRoZSBsYWNrIG9mCisgdHlwZSBjaGVja3MgZm9yIGN1cmxfZWFzeV9zZXRvcHQoKSB3aGljaCBoYXBwZW5zIGJlY2F1c2UgaXQgYWNjZXB0cyB2YXJhcmdzCisgYW5kIHRodXMgY2FuIHRha2UgYW55IHR5cGUuCisKKyBPbmUgcG9zc2libGUgc29sdXRpb24gdG8gdGhpcyBpcyB0byBpbnRyb2R1Y2UgYSBmZXcgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZQorIHNldG9wdCB2ZXJzaW9uIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGRhdGEgeW91IGNhbiBzZXQuCisKKyAgY3VybF9lYXN5X3NldF9udW0oKSAtIHNldHMgYSBsb25nIHZhbHVlCisKKyAgY3VybF9lYXN5X3NldF9sYXJnZSgpIC0gc2V0cyBhIGN1cmxfb2ZmX3QgdmFsdWUKKworICBjdXJsX2Vhc3lfc2V0X3B0cigpIC0gc2V0cyBhIHBvaW50ZXIKKworICBjdXJsX2Vhc3lfc2V0X2NiKCkgLSBzZXRzIGEgY2FsbGJhY2sgUExVUyBpdHMgY2FsbGJhY2sgZGF0YQorCisxLjE1IFRDUCBGYXN0IE9wZW4KKworIFJGQyA3NDEzIGRlZmluZXMgaG93IHRvIGluY2x1ZGUgZGF0YSBhbHJlYWR5IGluIHRoZSBUQ1AgU1lOIGhhbmRzaGFrZSB0bworIHJlZHVjZSBsYXRlbmN5LgorCisxLjE2IFRyeSB0byBVUkwgZW5jb2RlIGdpdmVuIFVSTAorCisgR2l2ZW4gYSBVUkwgdGhhdCBmb3IgZXhhbXBsZSBjb250YWlucyBzcGFjZXMsIGxpYmN1cmwgY291bGQgaGF2ZSBhbiBvcHRpb24KKyB0aGF0IHdvdWxkIHRyeSBzb21ld2hhdCBoYXJkZXIgdGhhbiBpdCBkb2VzIG5vdyBhbmQgY29udmVydCBzcGFjZXMgdG8gJTIwIGFuZAorIHBlcmhhcHMgVVJMIGVuY29kZWQgYnl0ZSB2YWx1ZXMgb3ZlciAxMjggZXRjIChiYXNpY2FsbHkgZG8gd2hhdCB0aGUgcmVkaXJlY3QKKyBmb2xsb3dpbmcgY29kZSBhbHJlYWR5IGRvZXMpLgorCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNTE0CisKKzEuMTcgQWRkIHN1cHBvcnQgZm9yIElSSXMKKworIElSSXMgKFJGQyAzOTg3KSBhbGxvdyBsb2NhbGl6ZWQsIG5vbi1hc2NpaSwgbmFtZXMgaW4gdGhlIFVSTC4gVG8gcHJvcGVybHkKKyBzdXBwb3J0IHRoaXMsIGN1cmwvbGliY3VybCB3b3VsZCBuZWVkIHRvIHRyYW5zbGF0ZS9lbmNvZGUgdGhlIGdpdmVuIGlucHV0CisgZnJvbSB0aGUgaW5wdXQgc3RyaW5nIGVuY29kaW5nIGludG8gcGVyY2VudCBlbmNvZGVkIG91dHB1dCAib3ZlciB0aGUgd2lyZSIuCisKKyBUbyBtYWtlIHRoYXQgd29yayBzbW9vdGhseSBmb3IgY3VybCB1c2VycyBldmVuIG9uIFdpbmRvd3MsIGN1cmwgd291bGQKKyBwcm9iYWJseSBuZWVkIHRvIGJlIGFibGUgdG8gY29udmVydCBmcm9tIHNldmVyYWwgaW5wdXQgZW5jb2RpbmdzLgorCiAKIDIuIGxpYmN1cmwgLSBtdWx0aSBpbnRlcmZhY2UKIApAQCAtMjM1LDEzICszMjgsNyBAQAogIC0gVGhlICJET05FIiBvcGVyYXRpb24gKHBvc3QgdHJhbnNmZXIgcHJvdG9jb2wtc3BlY2lmaWMgYWN0aW9ucykgZm9yIHRoZQogICAgcHJvdG9jb2xzIFNGVFAsIFNNVFAsIEZUUC4gRml4aW5nIEN1cmxfZG9uZSgpIGZvciB0aGlzIGlzIGEgd29ydGh5IHRhc2suCiAKLTIuMiBGaXggSFRUUCBQaXBlbGluaW5nIGZvciBQVVQKLQotIEhUVFAgUGlwZWxpbmluZyBjYW4gYmUgYSB3YXkgdG8gZ3JlYXRseSBlbmhhbmNlIHBlcmZvcm1hbmNlIGZvciBtdWx0aXBsZQotIHNlcmlhbCByZXF1ZXN0cyBhbmQgY3VycmVudGx5IGxpYmN1cmwgb25seSBzdXBwb3J0cyB0aGF0IGZvciBIRUFEIGFuZCBHRVQKLSByZXF1ZXN0cyBidXQgaXQgc2hvdWxkIGFsc28gYmUgcG9zc2libGUgZm9yIFBVVC4KLQotMi4zIEJldHRlciBzdXBwb3J0IGZvciBzYW1lIG5hbWUgcmVzb2x2ZXMKKzIuMiBCZXR0ZXIgc3VwcG9ydCBmb3Igc2FtZSBuYW1lIHJlc29sdmVzCiAKICBJZiBhIG5hbWUgcmVzb2x2ZSBoYXMgYmVlbiBpbml0aWF0ZWQgZm9yIG5hbWUgTk4gYW5kIGEgc2Vjb25kIGVhc3kgaGFuZGxlCiAgd2FudHMgdG8gcmVzb2x2ZSB0aGF0IG5hbWUgYXMgd2VsbCwgbWFrZSBpdCB3YWl0IGZvciB0aGUgZmlyc3QgcmVzb2x2ZSB0byBlbmQKQEAgLTI0OSw2ICszMzYsMjYgQEAKICBlc3BlY2lhbGx5IG5lZWRlZCB3aGVuIGFkZGluZyBtYW55IHNpbXVsdGFuZW91cyBoYW5kbGVzIHVzaW5nIHRoZSBzYW1lIGhvc3QKICBuYW1lIHdoZW4gdGhlIEROUyByZXNvbHZlciBjYW4gZ2V0IGZsb29kZWQuCiAKKzIuMyBOb24tYmxvY2tpbmcgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCkKKworIFRoZSBtdWx0aSBpbnRlcmZhY2UgaGFzIGEgZmV3IEFQSSBjYWxscyB0aGF0IGFzc3VtZSBhIGJsb2NraW5nIGJlaGF2aW9yLCBsaWtlCisgYWRkX2hhbmRsZSgpIGFuZCByZW1vdmVfaGFuZGxlKCkgd2hpY2ggbGltaXRzIHdoYXQgd2UgY2FuIGRvIGludGVybmFsbHkuIFRoZQorIG11bHRpIEFQSSBuZWVkIHRvIGJlIG1vdmVkIGV2ZW4gbW9yZSBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uIHRoYXQgImRyaXZlcyIKKyBldmVyeXRoaW5nIGluIGEgbm9uLWJsb2NraW5nIG1hbm5lciBhbmQgc2lnbmFscyB3aGVuIHNvbWV0aGluZyBpcyBkb25lLiBBCisgcmVtb3ZlIG9yIGFkZCB3b3VsZCB0aGVuIG9ubHkgYXNrIGZvciB0aGUgYWN0aW9uIHRvIGdldCBzdGFydGVkIGFuZCB0aGVuCisgbXVsdGlfcGVyZm9ybSgpIGV0YyBzdGlsbCBiZSBjYWxsZWQgdW50aWwgdGhlIGFkZC9yZW1vdmUgaXMgY29tcGxldGVkLgorCisyLjQgU3BsaXQgY29ubmVjdCBhbmQgYXV0aGVudGljYXRpb24gcHJvY2VzcworCisgVGhlIG11bHRpIGludGVyZmFjZSB0cmVhdHMgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgYXMgcGFydCBvZiB0aGUgY29ubmVjdAorIHBoYXNlLiBBcyBzdWNoIGFueSBmYWlsdXJlcyBkdXJpbmcgYXV0aGVudGljYXRpb24gd29uJ3QgdHJpZ2dlciB0aGUgcmVsZXZhbnQKKyBRVUlUIG9yIExPR09GRiBmb3IgcHJvdG9jb2xzIHN1Y2ggYXMgSU1BUCwgUE9QMyBhbmQgU01UUC4KKworMi41IEVkZ2UtdHJpZ2dlcmVkIHNvY2tldHMgc2hvdWxkIHdvcmsKKworIFRoZSBtdWx0aV9zb2NrZXQgQVBJIHNob3VsZCB3b3JrIHdpdGggZWRnZS10cmlnZ2VyZWQgc29ja2V0IGV2ZW50cy4gT25lIG9mCisgdGhlIGludGVybmFsIGFjdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGltcHJvdmVkIGZvciB0aGlzIHRvIHdvcmsgcGVyZmVjdGx5IGlzCisgdGhlICdtYXhsb29wcycgaGFuZGxpbmcgaW4gdHJhbnNmZXIuYzpyZWFkd3JpdGVfZGF0YSgpLgogCiAzLiBEb2N1bWVudGF0aW9uCiAKQEAgLTI3Miw3ICszNzksNyBAQAogIFdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgcGFzc2l2ZWx5IHRvIGEgc2VydmVyIHdoaWNoIG9ubHkgc3VwcG9ydHMgYWN0aXZlCiAgY29ubmVjdGlvbnMsIGxpYmN1cmwgcmV0dXJucyBDVVJMRV9GVFBfV0VJUkRfUEFTVl9SRVBMWSBhbmQgY2xvc2VzIHRoZQogIGNvbm5lY3Rpb24uIFRoZXJlIGNvdWxkIGJlIGEgd2F5IHRvIGZhbGxiYWNrIHRvIGFuIGFjdGl2ZSBjb25uZWN0aW9uIChhbmQKLSB2aWNlIHZlcnNhKS4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc1NDc5MworIHZpY2UgdmVyc2EpLiBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc1NDc5MwogCiA0LjMgRWFybGllciBiYWQgbGV0dGVyIGRldGVjdGlvbgogCkBAIC0zMDksMTMgKzQxNiwxMyBAQAogNS4xIEJldHRlciBwZXJzaXN0ZW5jeSBmb3IgSFRUUCAxLjAKIAogICJCZXR0ZXIiIHN1cHBvcnQgZm9yIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgb3ZlciBIVFRQIDEuMAotIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTEwODkwMDEKKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTA4OTAwMQogCiA1LjIgc3VwcG9ydCBGRjMgc3FsaXRlIGNvb2tpZSBmaWxlcwogCiAgRmlyZWZveCAzIGlzIGNoYW5naW5nIGZyb20gaXRzIGZvcm1lciBmb3JtYXQgdG8gYSBhIHNxbGl0ZSBkYXRhYmFzZSBpbnN0ZWFkLgogIFdlIHNob3VsZCBjb25zaWRlciBob3cgKGxpYiljdXJsIGNhbi9zaG91bGQgc3VwcG9ydCB0aGlzLgotIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTE4NzEzODgKKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTg3MTM4OAogCiA1LjMgUmVhcnJhbmdlIHJlcXVlc3QgaGVhZGVyIG9yZGVyCiAKQEAgLTM0NSwxNyArNDUyLDI1IEBACiAgRm9yIGV4YW1wbGU6CiAKICBodHRwOi8vdGVzdDpwYXNzO2F1dGg9TlRMTUBleGFtcGxlLmNvbSB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgLS11c2VyCi0gdGVzdDpwYXNzO2F1dGg9TlRMTSBvciAtLXVzZXIgdGVzdDpwYXNzIC0tbnRsbSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuIAorIHRlc3Q6cGFzczthdXRoPU5UTE0gb3IgLS11c2VyIHRlc3Q6cGFzcyAtLW50bG0gZnJvbSB0aGUgY29tbWFuZCBsaW5lLgogCiAgQWRkaXRpb25hbGx5IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGZvciBwcm94eSBiYXNlIFVSTHMgYXMgd2VsbC4KIAogNS42IFJlZnVzZSAiZG93bmdyYWRlIiByZWRpcmVjdHMKIAotIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvaXNzdWVzLzIyNgorIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy8yMjYKIAogIENvbnNpZGVyIGEgd2F5IHRvIHRlbGwgY3VybCB0byByZWZ1c2UgdG8gImRvd25ncmFkZSIgcHJvdG9jb2wgd2l0aCBhIHJlZGlyZWN0CiAgYW5kL29yIHBvc3NpYmx5IGEgYml0IHRoYXQgcmVmdXNlcyByZWRpcmVjdCB0byBjaGFuZ2UgcHJvdG9jb2wgY29tcGxldGVseS4KIAorNS43IE1vcmUgY29tcHJlc3Npb25zCisKKyBDb21wcmVzc2lvbiBhbGdvcml0aG1zIHRoYXQgcGVyZm9ybSBiZXR0ZXIgdGhhbiBnemlwIGFyZSBiZWluZyBjb25zaWRlcmVkIGZvcgorIHVzZSBhbmQgaW5jbHVzaW9uIGluIGV4aXN0aW5nIGJyb3dzZXJzLiBGb3IgZXhhbXBsZSAnYnJvdGxpJy4gSWYgc2VydmVycworIGZvbGxvdyBhbG9uZyBpdCBpcyBhIGdvb2QgcmVhc29uIGZvciB1cyB0byBhbHNvIGFsbG93IHVzZXJzIHRvIHRha2UgYWR2YW50YWdlCisgb2YgdGhpcy4gVGhlIGFsZ29yaXRobTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkgVGhlIEZpcmVmb3ggYnVnOgorIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjU1OQorCiAKIDYuIFRFTE5FVAogCkBAIC00MzUsNiArNTUwLDExIEBACiAKIEN1cnJlbnRseSB0aGUgU01CIGF1dGhlbnRpY2F0aW9uIHVzZXMgTlRMTXYxLgogCisxMS40IENyZWF0ZSByZW1vdGUgZGlyZWN0b3JpZXMKKworU3VwcG9ydCBmb3IgY3JlYXRpbmcgcmVtb3RlIGRpcmVjdG9yaWVzIHdoZW4gdXBsb2FkaW5nIGEgZmlsZSB0byBhIGRpcmVjdG9yeQordGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBzZXJ2ZXIsIGp1c3QgbGlrZSAtLWZ0cC1jcmVhdGUtZGlycy4KKwogMTIuIE5ldyBwcm90b2NvbHMKIAogMTIuMSBSU1lOQwpAQCAtNDQ3LDcgKzU2Nyw3IEBACiAxMy4xIERpc2FibGUgc3BlY2lmaWMgdmVyc2lvbnMKIAogIFByb3ZpZGUgYW4gb3B0aW9uIHRoYXQgYWxsb3dzIGZvciBkaXNhYmxpbmcgc3BlY2lmaWMgU1NMIHZlcnNpb25zLCBzdWNoIGFzCi0gU1NMdjIgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc2NzI3NgorIFNTTHYyIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xNzY3Mjc2CiAKIDEzLjIgUHJvdmlkZSBtdXRleCBsb2NraW5nIEFQSQogCkBAIC00NTgsNyArNTc4LDcgQEAKIDEzLjMgRXZhbHVhdGUgU1NMIHBhdGNoZXMKIAogIEV2YWx1YXRlL2FwcGx5IEdlcnRqYW4gdmFuIFdpbmdlcmRlJ3MgU1NMIHBhdGNoZXM6Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTAzLzAwODcuaHRtbAorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDQtMDMvMDA4Ny5odG1sCiAKIDEzLjQgQ2FjaGUgT3BlblNTTCBjb250ZXh0cwogCkBAIC00OTYsOSArNjE2LDkgQEAKICBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNjY5OC50eHQKIAogIEFuIGluaXRpYWwgcGF0Y2ggd2FzIHBvc3RlZCBieSBTdXJlc2ggS3Jpc2huYXN3YW15IG9uIE1hcmNoIDd0aCAyMDEzCi0gKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxMy0wMy8wMDc1Lmh0bWwpIGJ1dCBpdCB3YXMgYSB0b28gc2ltcGxlCisgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTMtMDMvMDA3NS5odG1sKSBidXQgaXQgd2FzIGEgdG9vIHNpbXBsZQogIGFwcHJvYWNoLiBTZWUgRGFuaWVsJ3MgY29tbWVudHM6Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEzLTAzLzAxMDMuaHRtbCAuIGxpYnVuYm91bmQgbWF5IGJlIHRoZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTMtMDMvMDEwMy5odG1sIC4gbGlidW5ib3VuZCBtYXkgYmUgdGhlCiAgY29ycmVjdCBsaWJyYXJ5IHRvIGJhc2UgdGhpcyBkZXZlbG9wbWVudCBvbi4KIAogMTQuIEdudVRMUwpAQCAtNTUzLDcgKzY3Myw3IEBACiAKICBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIE9MUCwKICBHU1MtU1BORUdPIGFuZCBvdGhlcnMuCi0gCisKIDE2LjIgQWRkIFFPUCBzdXBwb3J0IHRvIEdTU0FQSSBhdXRoZW50aWNhdGlvbgogCiAgQ3VycmVudGx5IHRoZSBHU1NBUEkgYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0cyB0aGUgZGVmYXVsdCBRT1Agb2YgYXV0aApAQCAtNTYxLDcgKzY4MSwxMSBAQAogIHdpdGggaW50ZWdyaXR5IHByb3RlY3Rpb24pIGFuZCBhdXRoLWNvbmYgKEF1dGhlbnRpY2F0aW9uIHdpdGggaW50ZWdyaXR5IGFuZAogIHByaXZhY3kgcHJvdGVjdGlvbikuCiAKLTE3LiBDbGllbnQKKzE2LjMgU3VwcG9ydCBiaW5hcnkgbWVzc2FnZXMgKGkuZS46IG5vbi1iYXNlNjQpCisKKyAgTWFuZGF0b3J5IHRvIHN1cHBvcnQgTERBUCBTQVNMIGF1dGhlbnRpY2F0aW9uLgorCisxNy4gQ29tbWFuZCBsaW5lIHRvb2wKIAogMTcuMSBzeW5jCiAKQEAgLTU5MCw3ICs3MTQsNyBAQAogIFRoZSBjbGllbnQgY291bGQgYmUgdG9sZCB0byB1c2UgbWF4aW11bSBOIHNpbXVsdGFuZW91cyBwYXJhbGxlbCB0cmFuc2ZlcnMgYW5kCiAgdGhlbiBqdXN0IG1ha2Ugc3VyZSB0aGF0IGhhcHBlbnMuIEl0IHNob3VsZCBvZiBjb3Vyc2Ugbm90IG1ha2UgbW9yZSB0aGFuIG9uZQogIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgcmVtb3RlIGhvc3QuIFRoaXMgd291bGQgcmVxdWlyZSB0aGUgY2xpZW50IHRvIHVzZSB0aGUKLSBtdWx0aSBpbnRlcmZhY2UuIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTE1NTg1OTUKKyBtdWx0aSBpbnRlcmZhY2UuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xNTU4NTk1CiAKIDE3LjUgcHJvdmlkZSBmb3JtcG9zdCBoZWFkZXJzCiAKQEAgLTYwOCwzMiArNzMyLDc4IEBACiAKIDE3LjYgd2FybmluZyB3aGVuIHNldHRpbmcgYW4gb3B0aW9uCiAKLSAgRGlzcGxheSBhIHdhcm5pbmcgd2hlbiBsaWJjdXJsIHJldHVybnMgYW4gZXJyb3Igd2hlbiBzZXR0aW5nIGFuIG9wdGlvbi4KLSAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRlbGwgd2hlbiBzdXBwb3J0IGZvciBhIHBhcnRpY3VsYXIgZmVhdHVyZSBoYXNuJ3QgYmVlbgotICBjb21waWxlZCBpbnRvIHRoZSBsaWJyYXJ5LgorIERpc3BsYXkgYSB3YXJuaW5nIHdoZW4gbGliY3VybCByZXR1cm5zIGFuIGVycm9yIHdoZW4gc2V0dGluZyBhbiBvcHRpb24uCisgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRlbGwgd2hlbiBzdXBwb3J0IGZvciBhIHBhcnRpY3VsYXIgZmVhdHVyZSBoYXNuJ3QgYmVlbgorIGNvbXBpbGVkIGludG8gdGhlIGxpYnJhcnkuCiAKIDE3Ljcgd2FybmluZyB3aGVuIHNlbmRpbmcgYmluYXJ5IG91dHB1dCB0byB0ZXJtaW5hbAogCi0gIFByb3ZpZGUgYSB3YXkgdGhhdCBwcm9tcHRzIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGJpbmFyeSBkYXRhIGlzCi0gIHNlbnQgdG8gdGhlIHRlcm1pbmFsLCBtdWNoIGluIHRoZSBzdHlsZSAnbGVzcycgZG9lcyBpdC4KKyBQcm92aWRlIGEgd2F5IHRoYXQgcHJvbXB0cyB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBiaW5hcnkgZGF0YSBpcworIHNlbnQgdG8gdGhlIHRlcm1pbmFsLCBtdWNoIGluIHRoZSBzdHlsZSAnbGVzcycgZG9lcyBpdC4KIAogMTcuOCBvZmZlciBjb2xvci1jb2RlZCBIVFRQIGhlYWRlciBvdXRwdXQKIAotICBCeSBvZmZlcmluZyBkaWZmZXJlbnQgY29sb3Igb3V0cHV0IG9uIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIGhlYWRlcgotICBjb250ZW50cywgdGhleSBjb3VsZCBiZSBtYWRlIG1vcmUgcmVhZGFibGUgYW5kIHRodXMgaGVscCB1c2VycyB3b3JraW5nIG9uCi0gIEhUVFAgc2VydmljZXMuCisgQnkgb2ZmZXJpbmcgZGlmZmVyZW50IGNvbG9yIG91dHB1dCBvbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSBoZWFkZXIKKyBjb250ZW50cywgdGhleSBjb3VsZCBiZSBtYWRlIG1vcmUgcmVhZGFibGUgYW5kIHRodXMgaGVscCB1c2VycyB3b3JraW5nIG9uCisgSFRUUCBzZXJ2aWNlcy4KIAogMTcuOSBDaG9vc2UgdGhlIG5hbWUgb2YgZmlsZSBpbiBicmFjZXMgZm9yIGNvbXBsZXggVVJMcwogCi0gIFdoZW4gdXNpbmcgYnJhY2VzIHRvIGRvd25sb2FkIGEgbGlzdCBvZiBVUkxzIGFuZCB5b3UgdXNlIGNvbXBsaWNhdGVkIG5hbWVzCi0gIGluIHRoZSBsaXN0IG9mIGFsdGVybmF0aXZlcywgaXQgY291bGQgYmUgaGFuZHkgdG8gYWxsb3cgY3VybCB0byB1c2Ugb3RoZXIKLSAgbmFtZXMgd2hlbiBzYXZpbmcuCisgV2hlbiB1c2luZyBicmFjZXMgdG8gZG93bmxvYWQgYSBsaXN0IG9mIFVSTHMgYW5kIHlvdSB1c2UgY29tcGxpY2F0ZWQgbmFtZXMKKyBpbiB0aGUgbGlzdCBvZiBhbHRlcm5hdGl2ZXMsIGl0IGNvdWxkIGJlIGhhbmR5IHRvIGFsbG93IGN1cmwgdG8gdXNlIG90aGVyCisgbmFtZXMgd2hlbiBzYXZpbmcuCiAKLSAgQ29uc2lkZXIgYSB3YXkgdG8gb2ZmZXIgdGhhdC4gUG9zc2libHkgbGlrZQotICB7cGFydFVSTDE6bmFtZTEscGFydFVSTDI6bmFtZTIscGFydFVSTDM6bmFtZTN9IHdoZXJlIHRoZSBuYW1lIGZvbGxvd2luZyB0aGUKLSAgY29sb24gaXMgdGhlIG91dHB1dCBuYW1lLgorIENvbnNpZGVyIGEgd2F5IHRvIG9mZmVyIHRoYXQuIFBvc3NpYmx5IGxpa2UKKyB7cGFydFVSTDE6bmFtZTEscGFydFVSTDI6bmFtZTIscGFydFVSTDM6bmFtZTN9IHdoZXJlIHRoZSBuYW1lIGZvbGxvd2luZyB0aGUKKyBjb2xvbiBpcyB0aGUgb3V0cHV0IG5hbWUuCiAKLSAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjIxCisgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzIyMQorCisxNy4xMCBpbXByb3ZlIGhvdyBjdXJsIHdvcmtzIGluIGEgd2luZG93cyBjb25zb2xlIHdpbmRvdworCisgSWYgeW91IHB1bGwgdGhlIHNjcm9sbGJhciB3aGVuIHRyYW5zZmVycmluZyB3aXRoIGN1cmwgaW4gYSBXaW5kb3dzIGNvbnNvbGUKKyB3aW5kb3csIHRoZSB0cmFuc2ZlciBpcyBpbnRlcnJ1cHRlZCBhbmQgY2FuIGdldCBkaXNjb25uZWN0ZWQuIFRoaXMgY2FuCisgcHJvYmFibHkgYmUgaW1wcm92ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy8zMjIKKworMTcuMTEgLXcgb3V0cHV0IHRvIHN0ZGVycgorCisgLXcgaXMgcXVpdGUgdXNlZnVsLCBidXQgbm90IHRvIHRob3NlIG9mIHVzIHdobyB1c2UgY3VybCB3aXRob3V0IC1vIG9yIC1PCisgKHN1Y2ggYXMgZm9yIHNjcmlwdGluZyB0aHJvdWdoIGEgaGlnaGVyIGxldmVsIGxhbmd1YWdlKS4gSXQgd291bGQgYmUgbmljZSB0bworIGhhdmUgYW4gb3B0aW9uIHRoYXQgaXMgZXhhY3RseSBsaWtlIC13IGJ1dCBzZW5kcyBpdCB0byBzdGRlcnIKKyBpbnN0ZWFkLiBQcm9wb3NlZCBuYW1lOiAtLXdyaXRlLXN0ZGVyci4gU2VlCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNjEzCisKKzE3LjEyIGtlZXAgcnVubmluZywgcmVhZCBpbnN0cnVjdGlvbnMgZnJvbSBwaXBlL3NvY2tldAorCisgUHJvdmlkZSBhbiBvcHRpb24gdGhhdCBtYWtlcyBjdXJsIG5vdCBleGl0IGFmdGVyIHRoZSBsYXN0IFVSTCAob3IgZXZlbiB3b3JrCisgd2l0aG91dCBhIGdpdmVuIFVSTCksIGFuZCB0aGVuIG1ha2UgaXQgcmVhZCBpbnN0cnVjdGlvbnMgcGFzc2VkIG9uIGEgcGlwZSBvcgorIG92ZXIgYSBzb2NrZXQgdG8gbWFrZSBmdXJ0aGVyIGluc3RydWN0aW9ucyBzbyB0aGF0IGEgc2Vjb25kIHN1YnNlcXVlbnQgY3VybAorIGludm9rZSBjYW4gdGFsayB0byB0aGUgc3RpbGwgcnVubmluZyBpbnN0YW5jZSBhbmQgYXNrIGZvciB0cmFuc2ZlcnMgdG8gZ2V0CisgZG9uZSwgYW5kIHRodXMgbWFpbnRhaW4gaXRzIGNvbm5lY3Rpb24gcG9vbCwgRE5TIGNhY2hlIGFuZCBtb3JlLgorCisxNy4xMyBzdXBwb3J0IG1ldGFsaW5rIGluIGh0dHAgaGVhZGVycworCisgQ3VybCBoYXMgc3VwcG9ydCBmb3IgZG93bmxvYWRpbmcgYSBtZXRhbGluayB4bWwgZmlsZSwgcHJvY2Vzc2luZyBpdCwgYW5kIHRoZW4KKyBkb3dubG9hZGluZyB0aGUgdGFyZ2V0IG9mIHRoZSBtZXRhbGluay4gVGhpcyBpcyBkb25lIHZpYSB0aGUgLS1tZXRhbGluayBvcHRpb24uCisgSXQgd291bGQgYmUgbmljZSBpZiBtZXRhbGluayBhbHNvIHN1cHBvcnRlZCBkb3dubG9hZGluZyB2aWEgbWV0YWxpbmsKKyBpbmZvcm1hdGlvbiB0aGF0IGlzIHN0b3JlZCBpbiBIVFRQIGhlYWRlcnMgKFJGQyA2MjQ5KS4gVGhlb3JldGljYWxseSB0aGlzIGNvdWxkCisgYWxzbyBiZSBzdXBwb3J0ZWQgd2l0aCB0aGUgLS1tZXRhbGluayBvcHRpb24uCisKKyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNDkKKworIFNlZSBhbHNvIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLXdnZXQvMjAxNS0wNi9tc2cwMDAzNC5odG1sIGZvcgorIGFuIGltcGxlbWF0YXRpb24gb2YgdGhpcyBpbiB3Z2V0LgorCisxNy4xNCAtLWZhaWwgd2l0aG91dCAtLWxvY2F0aW9uIHNob3VsZCB0cmVhdCAzeHggYXMgYSBmYWlsdXJlCisKKyBUbyBhbGxvdyBhIGNvbW1hbmQgbGluZSBsaWtlIHRoaXMgdG8gZGV0ZWN0IGEgcmVkaXJlY3QgYW5kIGNvbnNpZGVyIGl0IGEKKyBmYWlsdXJlOgorCisgICAgY3VybCAtdiAtLWZhaWwgLU8gaHR0cHM6Ly9leGFtcGxlLmNvbS9jdXJsLTcuNDguMC50YXIuZ3oKKworIC4uLiAtLWZhaWwgbXVzdCB0cmVhdCAzeHggcmVzcG9uc2VzIGFzIGZhaWx1cmVzIHRvby4gVGhlIGxlYXN0IHByb2JsZW1hdGljCisgd2F5IHRvIGltcGxlbWVudCB0aGlzIGlzIHByb2JhYmx5IHRvIGFkZCB0aGF0IG5ldyBsb2dpYyBpbiB0aGUgY29tbWFuZCBsaW5lCisgdG9vbCBvbmx5IGFuZCBub3QgaW4gdGhlIHVuZGVybHlpbmcgQ1VSTE9QVF9GQUlMT05FUlJPUiBsb2dpYy4KIAogCiAxOC4gQnVpbGQKQEAgLTY4MCw2ICs4NTAsMTYgQEAKICBhbmQgdGh1cyB0aGUgd2FpdCBmb3IgY29ubmVjdGlvbnMgbG9vcCBpcyBuZXZlciBlbnRlcmVkIHRvIHJlY2VpdmUgdGhlIHNlY29uZAogIGNvbm5lY3Rpb24uCiAKKzE5LjYgVXNlIHRoZSBSRkM2MjY1IHRlc3Qgc3VpdGUKKworIEEgdGVzdCBzdWl0ZSBtYWRlIGZvciBIVFRQIGNvb2tpZXMgKFJGQyA2MjY1KSBieSBBZGFtIEJhcnRoIGlzIGF2YWlsYWJsZSBhdAorIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFydGgvaHR0cC1zdGF0ZS90cmVlL21hc3Rlci90ZXN0cworCisgSXQnZCBiZSByZWFsbHkgYXdlc29tZSBpZiBzb21lb25lIHdvdWxkIHdyaXRlIGEgc2NyaXB0L3NldHVwIHRoYXQgd291bGQgcnVuCisgY3VybCB3aXRoIHRoYXQgdGVzdCBzdWl0ZSBhbmQgZGV0ZWN0IGRldmlhbmNlcy4gSWRlYWxseSwgdGhhdCB3b3VsZCBldmVuIGJlCisgaW5jb3Jwb3JhdGVkIGludG8gb3VyIHJlZ3VsYXIgdGVzdCBzdWl0ZS4KKworCiAyMC4gTmV4dCBTT05BTUUgYnVtcAogCiAyMC4xIGh0dHAtc3R5bGUgSEVBRCBvdXRwdXQgZm9yIEZUUApAQCAtNzg0LDIyICs5NjQsMyBAQAogCiAgQ2hhbmdpbmcgdGhlbSB0byByZXR1cm4gYSBwcml2YXRlIGhhbmRsZSB3aWxsIGJlbmVmaXQgdGhlIGltcGxlbWVudGF0aW9uIGFuZAogIGFsbG93IHVzIG11Y2ggZ3JlYXRlciBmcmVlZG9tcyB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBhIHNvbGlkIEFQSSBhbmQgQUJJLgotCi0yMS45IGhhdmUgZm9ybSBmdW5jdGlvbnMgdXNlIENVUkwgaGFuZGxlIGFyZ3VtZW50Ci0KLSBjdXJsX2Zvcm1hZGQoKSBhbmQgY3VybF9mb3JtZ2V0KCkgYm90aCBjdXJyZW50bHkgaGF2ZSBubyBDVVJMIGhhbmRsZQotIGFyZ3VtZW50LCBidXQgYm90aCBjYW4gdXNlIGEgY2FsbGJhY2sgdGhhdCBpcyBzZXQgaW4gdGhlIGVhc3kgaGFuZGxlLCBhbmQKLSB0aHVzIGN1cmxfZm9ybWdldCgpIHdpdGggY2FsbGJhY2sgY2Fubm90IGZ1bmN0aW9uIHdpdGhvdXQgZmlyc3QgaGF2aW5nCi0gY3VybF9lYXN5X3BlcmZvcm0oKSAob3Igc2ltaWxhcikgY2FsbGVkIC0gd2hpY2ggaXMgaGFyZCB0byBncmFzcCBhbmQgYSBkZXNpZ24KLSBtaXN0YWtlLgotCi0yMS4xMCBBZGQgQ1VSTE9QVF9NQUlMX0NMSUVOVCBvcHRpb24KLQotIFJhdGhlciB0aGFuIHVzZSB0aGUgVVJMIHRvIHNwZWNpZnkgdGhlIG1haWwgY2xpZW50IHN0cmluZyB0byBwcmVzZW50IGluIHRoZQotIEhFTE8gYW5kIEVITE8gY29tbWFuZHMsIGxpYmN1cmwgc2hvdWxkIHN1cHBvcnQgYSBuZXcgQ1VSTE9QVCBzcGVjaWZpY2FsbHkgZm9yCi0gc3BlY2lmeWluZyB0aGlzIGRhdGEgYXMgdGhlIFVSTCBpcyBub24tc3RhbmRhcmQgYW5kIHRvIGJlIGhvbmVzdCBhIGJpdCBvZiBhCi0gaGFjayA7LSkKLQotIFBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyB0aHJlYWQgZm9yIG1vcmUgaW5mb3JtYXRpb246Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEyLTA1LzAxNzguaHRtbAotIApkaWZmIC0tZ2l0IGEvZG9jcy9UaGVBcnRPZkh0dHBTY3JpcHRpbmcgYi9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZwppbmRleCA3NmZhZWU0Li4wNDdkYjgwIDEwMDY0NAotLS0gYS9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZworKysgYi9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZwpAQCAtMTM2LDcgKzEzNiw3IEBACiAKICBUaGUgVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIGZvcm1hdCBpcyBob3cgeW91IHNwZWNpZnkgdGhlIGFkZHJlc3Mgb2YgYQogIHBhcnRpY3VsYXIgcmVzb3VyY2Ugb24gdGhlIEludGVybmV0LiBZb3Uga25vdyB0aGVzZSwgeW91J3ZlIHNlZW4gVVJMcyBsaWtlCi0gaHR0cDovL2N1cmwuaGF4eC5zZSBvciBodHRwczovL3lvdXJiYW5rLmNvbSBhIG1pbGxpb24gdGltZXMuIFJGQyAzOTg2IGlzIHRoZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlIG9yIGh0dHBzOi8veW91cmJhbmsuY29tIGEgbWlsbGlvbiB0aW1lcy4gUkZDIDM5ODYgaXMgdGhlCiAgY2Fub25pY2FsIHNwZWMuIEFuZCB5ZWFoLCB0aGUgZm9ybWFsIG5hbWUgaXMgbm90IFVSTCwgaXQgaXMgVVJJLgogCiAgMi4yIEhvc3QKQEAgLTIwMyw3ICsyMDMsNyBAQAogIGlzc3VlcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgYW5kIHJlY2VpdmVzIHRoZSBkb2N1bWVudCBpdCBhc2tlZCBmb3IuCiAgSWYgeW91IGlzc3VlIHRoZSBjb21tYW5kIGxpbmUKIAotICAgICAgICBjdXJsIGh0dHA6Ly9jdXJsLmhheHguc2UKKyAgICAgICAgY3VybCBodHRwczovL2N1cmwuaGF4eC5zZQogCiAgeW91IGdldCBhIHdlYiBwYWdlIHJldHVybmVkIGluIHlvdXIgdGVybWluYWwgd2luZG93LiBUaGUgZW50aXJlIEhUTUwgZG9jdW1lbnQKICB0aGF0IHRoYXQgVVJMIGhvbGRzLgpAQCAtNjI4LDcgKzYyOCw3IEBACiAgIE1vcmUgYWJvdXQgc2VydmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgY2EgY2VydCBidW5kbGVzIGNhbiBiZSByZWFkCiAgIGluIHRoZSBTU0xDRVJUUyBkb2N1bWVudCwgYXZhaWxhYmxlIG9ubGluZSBoZXJlOgogCi0gICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sCisgICAgICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbAogCiAgIEF0IHRpbWVzIHlvdSBtYXkgZW5kIHVwIHdpdGggeW91ciBvd24gQ0EgY2VydCBzdG9yZSBhbmQgdGhlbiB5b3UgY2FuIHRlbGwKICAgY3VybCB0byB1c2UgdGhhdCB0byB2ZXJpZnkgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlOgpAQCAtNzU1LDQgKzc1NSw0IEBACiAKICAxNC4yIFNpdGVzCiAKLSBodHRwOi8vY3VybC5oYXh4LnNlIGlzIHRoZSBob21lIG9mIHRoZSBjVVJMIHByb2plY3QKKyBodHRwczovL2N1cmwuaGF4eC5zZSBpcyB0aGUgaG9tZSBvZiB0aGUgY1VSTCBwcm9qZWN0CmRpZmYgLS1naXQgYS9kb2NzL2N1cmwtY29uZmlnLjEgYi9kb2NzL2N1cmwtY29uZmlnLjEKaW5kZXggMTRhOWQyYi4uNGMxZTMyMyAxMDA2NDQKLS0tIGEvZG9jcy9jdXJsLWNvbmZpZy4xCisrKyBiL2RvY3MvY3VybC1jb25maWcuMQpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2N1cmwuMSBiL2RvY3MvY3VybC4xCmluZGV4IDExYjk1ZDQuLmYyZDQ4ZjEgMTAwNjQ0Ci0tLSBhL2RvY3MvY3VybC4xCisrKyBiL2RvY3MvY3VybC4xCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsMTYgKzUxLDE2IEBACiAKIG9yIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdIGFzIGluOgogCi0gIGZ0cDovL2Z0cC5udW1lcmljYWxzLmNvbS9maWxlWzEtMTAwXS50eHQKKyAgZnRwOi8vZnRwLmV4YW1wbGUuY29tL2ZpbGVbMS0xMDBdLnR4dAogCi0gIGZ0cDovL2Z0cC5udW1lcmljYWxzLmNvbS9maWxlWzAwMS0xMDBdLnR4dCAgICAod2l0aCBsZWFkaW5nIHplcm9zKQorICBmdHA6Ly9mdHAuZXhhbXBsZS5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZyB6ZXJvcykKIAotICBmdHA6Ly9mdHAubGV0dGVycy5jb20vZmlsZVthLXpdLnR4dAorICBmdHA6Ly9mdHAuZXhhbXBsZS5jb20vZmlsZVthLXpdLnR4dAogCiBOZXN0ZWQgc2VxdWVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLCBidXQgeW91IGNhbiB1c2Ugc2V2ZXJhbCBvbmVzIG5leHQgdG8gZWFjaAogb3RoZXI6CiAKLSAgaHR0cDovL2FueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbFsxLTRdL3BhcnR7YSxiLGN9Lmh0bWwKKyAgaHR0cDovL2V4YW1wbGUuY29tL2FyY2hpdmVbMTk5Ni0xOTk5XS92b2xbMS00XS9wYXJ0e2EsYixjfS5odG1sCiAKIFlvdSBjYW4gc3BlY2lmeSBhbnkgYW1vdW50IG9mIFVSTHMgb24gdGhlIGNvbW1hbmQgbGluZS4gVGhleSB3aWxsIGJlIGZldGNoZWQKIGluIGEgc2VxdWVudGlhbCBtYW5uZXIgaW4gdGhlIHNwZWNpZmllZCBvcmRlci4KQEAgLTY4LDkgKzY4LDkgQEAKIFlvdSBjYW4gc3BlY2lmeSBhIHN0ZXAgY291bnRlciBmb3IgdGhlIHJhbmdlcyB0byBnZXQgZXZlcnkgTnRoIG51bWJlciBvcgogbGV0dGVyOgogCi0gIGh0dHA6Ly93d3cubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMDoxMF0udHh0CisgIGh0dHA6Ly9leGFtcGxlLmNvbS9maWxlWzEtMTAwOjEwXS50eHQKIAotICBodHRwOi8vd3d3LmxldHRlcnMuY29tL2ZpbGVbYS16OjJdLnR4dAorICBodHRwOi8vZXhhbXBsZS5jb20vZmlsZVthLXo6Ml0udHh0CiAKIFdoZW4gdXNpbmcgW10gb3Ige30gc2VxdWVuY2VzIHdoZW4gaW52b2tlZCBmcm9tIGEgY29tbWFuZCBsaW5lIHByb21wdCwgeW91CiBwcm9iYWJseSBoYXZlIHRvIHB1dCB0aGUgZnVsbCBVUkwgd2l0aGluIGRvdWJsZSBxdW90ZXMgdG8gYXZvaWQgdGhlIHNoZWxsIGZyb20KQEAgLTE1MCw2ICsxNTAsMTQgQEAKIC5JUCAiLS1odHRwMiIKIChIVFRQKSBUZWxscyBjdXJsIHRvIGlzc3VlIGl0cyByZXF1ZXN0cyB1c2luZyBIVFRQIDIuIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKIHVuZGVybHlpbmcgbGliY3VybCB3YXMgYnVpbHQgdG8gc3VwcG9ydCBpdC4gKEFkZGVkIGluIDcuMzMuMCkKKy5JUCAiLS1odHRwMi1wcmlvci1rbm93bGVkZ2UiCisoSFRUUCkgVGVsbHMgY3VybCB0byBpc3N1ZSBpdHMgbm9uLVRMUyBIVFRQIHJlcXVlc3RzIHVzaW5nIEhUVFAvMiB3aXRob3V0CitIVFRQLzEuMSBVcGdyYWRlLiBJdCByZXF1aXJlcyBwcmlvciBrbm93bGVkZ2UgdGhhdCB0aGUgc2VydmVyIHN1cHBvcnRzIEhUVFAvMgorc3RyYWlnaHQgYXdheS4gSFRUUFMgcmVxdWVzdHMgd2lsbCBzdGlsbCBkbyBIVFRQLzIgdGhlIHN0YW5kYXJkIHdheSB3aXRoCituZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gaW4gdGhlIFRMUyBoYW5kc2hha2UuCisKK0hUVFAvMiBzdXBwb3J0IGluIGdlbmVyYWwgYWxzbyByZXF1aXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGxpYmN1cmwgd2FzIGJ1aWx0Cit0byBzdXBwb3J0IGl0LiAoQWRkZWQgaW4gNy40OS4wKQogLklQICItLW5vLW5wbiIKIERpc2FibGUgdGhlIE5QTiBUTFMgZXh0ZW5zaW9uLiBOUE4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmIGxpYmN1cmwgd2FzIGJ1aWx0CiB3aXRoIGFuIFNTTCBsaWJyYXJ5IHRoYXQgc3VwcG9ydHMgTlBOLiBOUE4gaXMgdXNlZCBieSBhIGxpYmN1cmwgdGhhdCBzdXBwb3J0cwpAQCAtMTcxLDEwICsxNzksMTEgQEAKIC5JUCAiLTIsIC0tc3NsdjIiCiAoU1NMKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0aW5nIHdpdGggYSByZW1vdGUgU1NMCiBzZXJ2ZXIuIFNvbWV0aW1lcyBjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgU1NMdjIgc3VwcG9ydC4gU1NMdjIgaXMgd2lkZWx5Ci1jb25zaWRlcmVkIGluc2VjdXJlLgorY29uc2lkZXJlZCBpbnNlY3VyZSAoc2VlIFJGQyA2MTc2KS4KIC5JUCAiLTMsIC0tc3NsdjMiCiAoU1NMKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0aW5nIHdpdGggYSByZW1vdGUgU1NMCi1zZXJ2ZXIuIFNvbWV0aW1lcyBjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgU1NMdjMgc3VwcG9ydC4KK3NlcnZlci4gU29tZXRpbWVzIGN1cmwgaXMgYnVpbHQgd2l0aG91dCBTU0x2MyBzdXBwb3J0LiBTU0x2MyBpcyB3aWRlbHkKK2NvbnNpZGVyZWQgaW5zZWN1cmUgKHNlZSBSRkMgNzU2OCkuCiAuSVAgIi00LCAtLWlwdjQiCiBUaGlzIG9wdGlvbiB0ZWxscyBjdXJsIHRvIHJlc29sdmUgbmFtZXMgdG8gSVB2NCBhZGRyZXNzZXMgb25seSwgYW5kIG5vdCBmb3IKIGV4YW1wbGUgdHJ5IElQdjYuCkBAIC0yMTIsMTYgKzIyMSwyNSBAQAogCiBJZiBubyAnPScgc3ltYm9sIGlzIHVzZWQgaW4gdGhlIGxpbmUsIGl0IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZSB0byB1c2UgdG8KIHJlYWQgcHJldmlvdXNseSBzdG9yZWQgY29va2llIGxpbmVzIGZyb20sIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluIHRoaXMgc2Vzc2lvbgotaWYgdGhleSBtYXRjaC4gVXNpbmcgdGhpcyBtZXRob2QgYWxzbyBhY3RpdmF0ZXMgdGhlICJjb29raWUgcGFyc2VyIiB3aGljaCB3aWxsCitpZiB0aGV5IG1hdGNoLiBVc2luZyB0aGlzIG1ldGhvZCBhbHNvIGFjdGl2YXRlcyB0aGUgY29va2llIGVuZ2luZSB3aGljaCB3aWxsCiBtYWtlIGN1cmwgcmVjb3JkIGluY29taW5nIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMKIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIFxmSS1MLCAtLWxvY2F0aW9uXGZQIG9wdGlvbi4gVGhlIGZpbGUgZm9ybWF0IG9mIHRoZQotZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBzaG91bGQgYmUgcGxhaW4gSFRUUCBoZWFkZXJzIG9yIHRoZSBOZXRzY2FwZS9Nb3ppbGxhCi1jb29raWUgZmlsZSBmb3JtYXQuCitmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpbiBIVFRQIGhlYWRlcnMgKFNldC1Db29raWUgc3R5bGUpIG9yCit0aGUgTmV0c2NhcGUvTW96aWxsYSBjb29raWUgZmlsZSBmb3JtYXQuCiAKIFRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIFxmSS1iLCAtLWNvb2tpZVxmUCBpcyBvbmx5IHVzZWQgYXMgaW5wdXQuIE5vIGNvb2tpZXMKIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4gVG8gc3RvcmUgY29va2llcywgdXNlIHRoZSBcZkktYywgLS1jb29raWUtamFyXGZQCiBvcHRpb24uCiAKK0V4ZXJjaXNlIGNhdXRpb24gaWYgeW91IGFyZSB1c2luZyB0aGlzIG9wdGlvbiBhbmQgbXVsdGlwbGUgdHJhbnNmZXJzIG1heSBvY2N1ci4KK0lmIHlvdSB1c2UgdGhlIE5BTUUxPVZBTFVFMTsgZm9ybWF0LCBvciBpbiBhIGZpbGUgdXNlIHRoZSBTZXQtQ29va2llIGZvcm1hdCBhbmQKK2Rvbid0IHNwZWNpZnkgYSBkb21haW4sIHRoZW4gdGhlIGNvb2tpZSBpcyBzZW50IGZvciBhbnkgZG9tYWluIChldmVuIGFmdGVyCityZWRpcmVjdHMgYXJlIGZvbGxvd2VkKSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIGJ5IGEgc2VydmVyLXNldCBjb29raWUuIElmIHRoZQorY29va2llIGVuZ2luZSBpcyBlbmFibGVkIGFuZCBhIHNlcnZlciBzZXRzIGEgY29va2llIG9mIHRoZSBzYW1lIG5hbWUgdGhlbiBib3RoCit3aWxsIGJlIHNlbnQgb24gYSBmdXR1cmUgdHJhbnNmZXIgdG8gdGhhdCBzZXJ2ZXIsIGxpa2VseSBub3Qgd2hhdCB5b3UgaW50ZW5kZWQuCitUbyBhZGRyZXNzIHRoZXNlIGlzc3VlcyBzZXQgYSBkb21haW4gaW4gU2V0LUNvb2tpZSAoZG9pbmcgdGhhdCB3aWxsIGluY2x1ZGUKK3N1Yi1kb21haW5zKSBvciB1c2UgdGhlIE5ldHNjYXBlIGZvcm1hdC4KKwogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItQiwgLS11c2UtYXNjaWkiCiAoRlRQL0xEQVApIEVuYWJsZSBBU0NJSSB0cmFuc2Zlci4gRm9yIEZUUCwgdGhpcyBjYW4gYWxzbyBiZSBlbmZvcmNlZCBieSB1c2luZwpAQCAtMjUzLDYgKzI3MSw5IEBACiBkaXNwbGF5ZWQsIGJ1dCB0aGF0IGlzIHRoZSBvbmx5IHZpc2libGUgZmVlZGJhY2sgeW91IGdldCBhYm91dCB0aGlzIHBvc3NpYmx5CiBsZXRoYWwgc2l0dWF0aW9uLgogCitTaW5jZSA3LjQzLjAgY29va2llcyB0aGF0IHdlcmUgaW1wb3J0ZWQgaW4gdGhlIFNldC1Db29raWUgZm9ybWF0IHdpdGhvdXQgYQorZG9tYWluIG5hbWUgYXJlIG5vdCBleHBvcnRlZCBieSB0aGlzIG9wdGlvbi4KKwogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBzcGVjaWZpZWQgZmlsZSBuYW1lIHdpbGwgYmUKIHVzZWQuCiAuSVAgIi1DLCAtLWNvbnRpbnVlLWF0IDxvZmZzZXQ+IgpAQCAtNDE3LDYgKzQzOCw5IEBACiBcZkItLWVwcnRcZlAgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBlbmFibGUgRVBSVCBhZ2FpbiBhbmQgXGZCLS1uby1lcHJ0XGZQCiBpcyBhbiBhbGlhcyBmb3IgXGZCLS1kaXNhYmxlLWVwcnRcZlAuCiAKK0lmIHRoZSBzZXJ2ZXIgaXMgYW4gSVB2NiBob3N0LCB0aGlzIG9wdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0IGFzIEVQUlQgaXMKK25lY2Vzc2FyeSB0aGVuLgorCiBEaXNhYmxpbmcgRVBSVCBvbmx5IGNoYW5nZXMgdGhlIGFjdGl2ZSBiZWhhdmlvci4gSWYgeW91IHdhbnQgdG8gc3dpdGNoIHRvCiBwYXNzaXZlIG1vZGUgeW91IG5lZWQgdG8gbm90IHVzZSBcZkktUCwgLS1mdHAtcG9ydFxmUCBvciBmb3JjZSBpdCB3aXRoCiBcZkktLWZ0cC1wYXN2XGZQLgpAQCAtNDI4LDYgKzQ1Miw5IEBACiBcZkItLWVwc3ZcZlAgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBlbmFibGUgRVBTViBhZ2FpbiBhbmQgXGZCLS1uby1lcHN2XGZQCiBpcyBhbiBhbGlhcyBmb3IgXGZCLS1kaXNhYmxlLWVwc3ZcZlAuCiAKK0lmIHRoZSBzZXJ2ZXIgaXMgYW4gSVB2NiBob3N0LCB0aGlzIG9wdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0IGFzIEVQU1YgaXMKK25lY2Vzc2FyeSB0aGVuLgorCiBEaXNhYmxpbmcgRVBTViBvbmx5IGNoYW5nZXMgdGhlIHBhc3NpdmUgYmVoYXZpb3IuIElmIHlvdSB3YW50IHRvIHN3aXRjaCB0bwogYWN0aXZlIG1vZGUgeW91IG5lZWQgdG8gdXNlIFxmSS1QLCAtLWZ0cC1wb3J0XGZQLgogLklQICItLWRucy1pbnRlcmZhY2UgPGludGVyZmFjZT4iCkBAIC00NzUsMTAgKzUwMiwxMCBAQAogKFNTTCkgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSB3aGVuIGdldHRpbmcgYQogZmlsZSB3aXRoIEhUVFBTLCBGVFBTIG9yIGFub3RoZXIgU1NMLWJhc2VkIHByb3RvY29sLiBUaGUgY2VydGlmaWNhdGUgbXVzdCBiZQogaW4gUEtDUyMxMiBmb3JtYXQgaWYgdXNpbmcgU2VjdXJlIFRyYW5zcG9ydCwgb3IgUEVNIGZvcm1hdCBpZiB1c2luZyBhbnkgb3RoZXIKLWVuZ2luZS4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCBpc24ndCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZAotZm9yIG9uIHRoZSB0ZXJtaW5hbC4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGFzc3VtZXMgYSBcJiJjZXJ0aWZpY2F0ZSIgZmlsZSB0aGF0Ci1pcyB0aGUgcHJpdmF0ZSBrZXkgYW5kIHRoZSBwcml2YXRlIGNlcnRpZmljYXRlIGNvbmNhdGVuYXRlZCEgU2VlIFxmSS0tY2VydFxmUAotYW5kIFxmSS0ta2V5XGZQIHRvIHNwZWNpZnkgdGhlbSBpbmRlcGVuZGVudGx5LgorZW5naW5lLiAgSWYgdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlzbid0IHNwZWNpZmllZCwgaXQgd2lsbCBiZSBxdWVyaWVkIGZvciBvbgordGhlIHRlcm1pbmFsLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gYXNzdW1lcyBhIFwmImNlcnRpZmljYXRlIiBmaWxlIHRoYXQgaXMgdGhlCitwcml2YXRlIGtleSBhbmQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBjb25jYXRlbmF0ZWQhIFNlZSBcZkktLWNlcnRcZlAgYW5kCitcZkktLWtleVxmUCB0byBzcGVjaWZ5IHRoZW0gaW5kZXBlbmRlbnRseS4KIAogSWYgY3VybCBpcyBidWlsdCBhZ2FpbnN0IHRoZSBOU1MgU1NMIGxpYnJhcnkgdGhlbiB0aGlzIG9wdGlvbiBjYW4gdGVsbAogY3VybCB0aGUgbmlja25hbWUgb2YgdGhlIGNlcnRpZmljYXRlIHRvIHVzZSB3aXRoaW4gdGhlIE5TUyBkYXRhYmFzZSBkZWZpbmVkCkBAIC01MTAsNiArNTM3LDEzIEBACiAoU1NMKSBTcGVjaWZ5IHRoZSBwYXRoIG5hbWUgdG8gdGhlIEVudHJvcHkgR2F0aGVyaW5nIERhZW1vbiBzb2NrZXQuIFRoZSBzb2NrZXQKIGlzIHVzZWQgdG8gc2VlZCB0aGUgcmFuZG9tIGVuZ2luZSBmb3IgU1NMIGNvbm5lY3Rpb25zLiBTZWUgYWxzbyB0aGUKIFxmSS0tcmFuZG9tLWZpbGVcZlAgb3B0aW9uLgorLklQICItLWV4cGVjdDEwMC10aW1lb3V0IDxzZWNvbmRzPiIKKyhIVFRQKSBNYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHlvdSBhbGxvdyBjdXJsIHRvIHdhaXQgZm9yIGEgMTAwLWNvbnRpbnVlCityZXNwb25zZSB3aGVuIGN1cmwgZW1pdHMgYW4gRXhwZWN0czogMTAwLWNvbnRpbnVlIGhlYWRlciBpbiBpdHMgcmVxdWVzdC4gQnkKK2RlZmF1bHQgY3VybCB3aWxsIHdhaXQgb25lIHNlY29uZC4gVGhpcyBvcHRpb24gYWNjZXB0cyBkZWNpbWFsIHZhbHVlcyEgV2hlbgorY3VybCBzdG9wcyB3YWl0aW5nLCBpdCB3aWxsIGNvbnRpbnVlIGFzIGlmIHRoZSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZC4KKworKEFkZGVkIGluIDcuNDcuMCkKIC5JUCAiLS1jZXJ0LXR5cGUgPHR5cGU+IgogKFNTTCkgVGVsbHMgY3VybCB3aGF0IGNlcnRpZmljYXRlIHR5cGUgdGhlIHByb3ZpZGVkIGNlcnRpZmljYXRlIGlzIGluLiBQRU0sCiBERVIgYW5kIEVORyBhcmUgcmVjb2duaXplZCB0eXBlcy4gIElmIG5vdCBzcGVjaWZpZWQsIFBFTSBpcyBhc3N1bWVkLgpAQCAtNTQ0LDE3ICs1NzgsMjcgQEAKIAogSWYgdGhpcyBvcHRpb24gaXMgc2V0LCB0aGUgZGVmYXVsdCBjYXBhdGggdmFsdWUgd2lsbCBiZSBpZ25vcmVkLCBhbmQgaWYgaXQgaXMKIHVzZWQgc2V2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZC4KLS5JUCAiLS1waW5uZWRwdWJrZXkgPHBpbm5lZCBwdWJsaWMga2V5PiIKLShTU0wpIFRlbGxzIGN1cmwgdG8gdXNlIHRoZSBzcGVjaWZpZWQgcHVibGljIGtleSBmaWxlIHRvIHZlcmlmeSB0aGUgcGVlci4gVGhlCi1maWxlIG11c3QgY29udGFpbiBhIHNpbmdsZSBwdWJsaWMga2V5IGluIFBFTSBvciBERVIgZm9ybWF0LgorLklQICItLXBpbm5lZHB1YmtleSA8cGlubmVkIHB1YmxpYyBrZXkgKGhhc2hlcyk+IgorKFNTTCkgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBwdWJsaWMga2V5IGZpbGUgKG9yIGhhc2hlcykgdG8gdmVyaWZ5IHRoZQorcGVlci4gVGhpcyBjYW4gYmUgYSBwYXRoIHRvIGEgZmlsZSB3aGljaCBjb250YWlucyBhIHNpbmdsZSBwdWJsaWMga2V5IGluIFBFTSBvcgorREVSIGZvcm1hdCwgb3IgYW55IG51bWJlciBvZiBiYXNlNjQgZW5jb2RlZCBzaGEyNTYgaGFzaGVzIHByZWNlZGVkIGJ5CitcJ3NoYTI1Ni8vXCcgYW5kIHNlcGFyYXRlZCBieSBcJztcJwogCiBXaGVuIG5lZ290aWF0aW5nIGEgVExTIG9yIFNTTCBjb25uZWN0aW9uLCB0aGUgc2VydmVyIHNlbmRzIGEgY2VydGlmaWNhdGUKIGluZGljYXRpbmcgaXRzIGlkZW50aXR5LiBBIHB1YmxpYyBrZXkgaXMgZXh0cmFjdGVkIGZyb20gdGhpcyBjZXJ0aWZpY2F0ZSBhbmQKIGlmIGl0IGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgdG8gdGhpcyBvcHRpb24sIGN1cmwgd2lsbAogYWJvcnQgdGhlIGNvbm5lY3Rpb24gYmVmb3JlIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGFueSBkYXRhLgogCi1BZGRlZCBpbiA3LjM5LjAgZm9yIE9wZW5TU0wsIEdudVRMUyBhbmQgR1NLaXQuIEFkZGVkIGluIDcuNDMuMCBmb3IgTlNTIGFuZAotd29sZlNTTC9DeWFTU0wuIE90aGVyIFNTTCBiYWNrZW5kcyBub3Qgc3VwcG9ydGVkLgorUEVNL0RFUiBzdXBwb3J0OgorICA3LjM5LjA6IE9wZW5TU0wsIEdudVRMUyBhbmQgR1NLaXQKKyAgNy40My4wOiBOU1MgYW5kIHdvbGZTU0wvQ3lhU1NMCisgIDcuNDcuMDogbWJlZHRscworICA3LjQ5LjA6IFBvbGFyU1NMCitzaGEyNTYgc3VwcG9ydDoKKyAgNy40NC4wOiBPcGVuU1NMLCBHbnVUTFMsIE5TUyBhbmQgd29sZlNTTC9DeWFTU0wuCisgIDcuNDcuMDogbWJlZHRscworICA3LjQ5LjA6IFBvbGFyU1NMCitPdGhlciBTU0wgYmFja2VuZHMgbm90IHN1cHBvcnRlZC4KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItLWNlcnQtc3RhdHVzIgpAQCAtNTk3LDM2ICs2NDEsMzcgQEAKIGF0dGFjaGVkIGluIHRoZSBwb3N0IGFzIGEgZmlsZSB1cGxvYWQsIHdoaWxlIHRoZSA8IG1ha2VzIGEgdGV4dCBmaWVsZCBhbmQganVzdAogZ2V0IHRoZSBjb250ZW50cyBmb3IgdGhhdCB0ZXh0IGZpZWxkIGZyb20gYSBmaWxlLgogCi1FeGFtcGxlLCB0byBzZW5kIHlvdXIgcGFzc3dvcmQgZmlsZSB0byB0aGUgc2VydmVyLCB3aGVyZQotXCYncGFzc3dvcmQnIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtLWZpZWxkIHRvIHdoaWNoIC9ldGMvcGFzc3dkIHdpbGwgYmUgdGhlCi1pbnB1dDoKK0V4YW1wbGU6IHRvIHNlbmQgYW4gaW1hZ2UgdG8gYSBzZXJ2ZXIsIHdoZXJlIFwmJ3Byb2ZpbGUnIGlzIHRoZSBuYW1lIG9mIHRoZQorZm9ybS1maWVsZCB0byB3aGljaCBwb3J0cmFpdC5qcGcgd2lsbCBiZSB0aGUgaW5wdXQ6CiAKLVxmQmN1cmxcZlAgLUYgcGFzc3dvcmQ9QC9ldGMvcGFzc3dkIHd3dy5teXBhc3N3b3Jkcy5jb20KK1xmQmN1cmxcZlAgLUYgcHJvZmlsZT1AcG9ydHJhaXQuanBnIGh0dHBzOi8vZXhhbXBsZS5jb20vdXBsb2FkLmNnaQogCiBUbyByZWFkIGNvbnRlbnQgZnJvbSBzdGRpbiBpbnN0ZWFkIG9mIGEgZmlsZSwgdXNlIC0gYXMgdGhlIGZpbGVuYW1lLiBUaGlzIGdvZXMKLWZvciBib3RoIEAgYW5kIDwgY29uc3RydWN0cy4KK2ZvciBib3RoIEAgYW5kIDwgY29uc3RydWN0cy4gVW5mb3J0dW5hdGVseSBpdCBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgdGhlCitmaWxlIGZyb20gYSBuYW1lZCBwaXBlIG9yIHNpbWlsYXIsIGFzIGl0IG5lZWRzIHRoZSBmdWxsIHNpemUgYmVmb3JlIHRoZQordHJhbnNmZXIgc3RhcnRzLgogCiBZb3UgY2FuIGFsc28gdGVsbCBjdXJsIHdoYXQgQ29udGVudC1UeXBlIHRvIHVzZSBieSB1c2luZyAndHlwZT0nLCBpbiBhIG1hbm5lcgogc2ltaWxhciB0bzoKIAotXGZCY3VybFxmUCAtRiAid2ViPUBpbmRleC5odG1sO3R5cGU9dGV4dC9odG1sIiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJ3ZWI9QGluZGV4Lmh0bWw7dHlwZT10ZXh0L2h0bWwiIGV4YW1wbGUuY29tCiAKIG9yCiAKLVxmQmN1cmxcZlAgLUYgIm5hbWU9ZGFuaWVsO3R5cGU9dGV4dC9mb28iIHVybC5jb20KK1xmQmN1cmxcZlAgLUYgIm5hbWU9ZGFuaWVsO3R5cGU9dGV4dC9mb28iIGV4YW1wbGUuY29tCiAKIFlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGNoYW5nZSB0aGUgbmFtZSBmaWVsZCBvZiBhIGZpbGUgdXBsb2FkIHBhcnQgYnkgc2V0dGluZwogZmlsZW5hbWU9LCBsaWtlIHRoaXM6CiAKLVxmQmN1cmxcZlAgLUYgImZpbGU9QGxvY2FsZmlsZTtmaWxlbmFtZT1uYW1laW5wb3N0IiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJmaWxlPUBsb2NhbGZpbGU7ZmlsZW5hbWU9bmFtZWlucG9zdCIgZXhhbXBsZS5jb20KIAogSWYgZmlsZW5hbWUvcGF0aCBjb250YWlucyAnLCcgb3IgJzsnLCBpdCBtdXN0IGJlIHF1b3RlZCBieSBkb3VibGUtcXVvdGVzIGxpa2U6CiAKLVxmQmN1cmxcZlAgLUYgImZpbGU9QFxcImxvY2FsZmlsZVxcIjtmaWxlbmFtZT1cXCJuYW1laW5wb3N0XFwiIiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJmaWxlPUBcXCJsb2NhbGZpbGVcXCI7ZmlsZW5hbWU9XFwibmFtZWlucG9zdFxcIiIgZXhhbXBsZS5jb20KIAogb3IKIAotXGZCY3VybFxmUCAtRiAnZmlsZT1AImxvY2FsZmlsZSI7ZmlsZW5hbWU9Im5hbWVpbnBvc3QiJyB1cmwuY29tCitcZkJjdXJsXGZQIC1GICdmaWxlPUAibG9jYWxmaWxlIjtmaWxlbmFtZT0ibmFtZWlucG9zdCInIGV4YW1wbGUuY29tCiAKIE5vdGUgdGhhdCBpZiBhIGZpbGVuYW1lL3BhdGggaXMgcXVvdGVkIGJ5IGRvdWJsZS1xdW90ZXMsIGFueSBkb3VibGUtcXVvdGUKIG9yIGJhY2tzbGFzaCB3aXRoaW4gdGhlIGZpbGVuYW1lIG11c3QgYmUgZXNjYXBlZCBieSBiYWNrc2xhc2guCkBAIC03MTAsNiArNzU1LDEwIEBACiBhdXRoZW50aWNhdGlvbiwgYnV0IG5vbi1lbmNyeXB0ZWQgZGF0YSB0cmFuc2ZlcnMgZm9yIGVmZmljaWVuY3kuICBGYWlscyB0aGUKIHRyYW5zZmVyIGlmIHRoZSBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IFNTTC9UTFMuICAoQWRkZWQgaW4gNy4xNi4wKQogdGhhdCBjYW4gc3RpbGwgYmUgdXNlZCBidXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCisuSVAgIi0tZnRwLXNzbCIKKyhGVFApIFRoaXMgZGVwcmVjYXRlZCBvcHRpb24gaXMgbm93IGtub3duIGFzIFxmSS0tc3NsXGZQLgorLklQICItLWZ0cC1zc2wtcmVxZCIKKyhGVFApIFRoaXMgZGVwcmVjYXRlZCBvcHRpb24gaXMgbm93IGtub3duIGFzIFxmSS0tc3NsLXJlcWRcZlAuCiAuSVAgIi0tZm9ybS1zdHJpbmcgPG5hbWU9c3RyaW5nPiIKIChIVFRQKSBTaW1pbGFyIHRvIFxmSS0tZm9ybVxmUCBleGNlcHQgdGhhdCB0aGUgdmFsdWUgc3RyaW5nIGZvciB0aGUgbmFtZWQKIHBhcmFtZXRlciBpcyB1c2VkIGxpdGVyYWxseS4gTGVhZGluZyBcJidAJyBhbmQgXCYnPCcgY2hhcmFjdGVycywgYW5kIHRoZQpAQCAtNzU3LDcgKzgwNiw3IEBACiAKIEV4YW1wbGU6CiAKLVwmIyBjdXJsIC1IICJYLUZpcnN0LU5hbWU6IEpvZSIgaHR0cDovLzE5Mi4xNjguMC4xLworXCYjIGN1cmwgLUggIlgtRmlyc3QtTmFtZTogSm9lIiBodHRwOi8vZXhhbXBsZS5jb20vCiAKIFxmQldBUk5JTkdcZlA6IGhlYWRlcnMgc2V0IHdpdGggdGhpcyBvcHRpb24gd2lsbCBiZSBzZXQgaW4gYWxsIHJlcXVlc3RzIC0gZXZlbgogYWZ0ZXIgcmVkaXJlY3RzIGFyZSBmb2xsb3dlZCwgbGlrZSB3aGVuIHRvbGQgd2l0aCBcZkItTCwgLS1sb2NhdGlvblxmUC4gVGhpcwpAQCAtNzcxLDEwICs4MjAsMTIgQEAKIGJlIHRoZSAxMjggYml0IE1ENSBjaGVja3N1bSBvZiB0aGUgcmVtb3RlIGhvc3QncyBwdWJsaWMga2V5LCBjdXJsIHdpbGwgcmVmdXNlCiB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBob3N0IHVubGVzcyB0aGUgbWQ1c3VtcyBtYXRjaC4gKEFkZGVkIGluIDcuMTcuMSkKIC5JUCAiLS1pZ25vcmUtY29udGVudC1sZW5ndGgiCi0oSFRUUCkKLUlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNlcnZlcnMKLXJ1bm5pbmcgQXBhY2hlIDEueCwgd2hpY2ggd2lsbCByZXBvcnQgaW5jb3JyZWN0IENvbnRlbnQtTGVuZ3RoIGZvciBmaWxlcwotbGFyZ2VyIHRoYW4gMiBnaWdhYnl0ZXMuCitGb3IgSFRUUCwgSWdub3JlIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IKK3NlcnZlcnMgcnVubmluZyBBcGFjaGUgMS54LCB3aGljaCB3aWxsIHJlcG9ydCBpbmNvcnJlY3QgQ29udGVudC1MZW5ndGggZm9yCitmaWxlcyBsYXJnZXIgdGhhbiAyIGdpZ2FieXRlcy4KKworRm9yIEZUUCAoc2luY2UgNy40Ni4wKSwgc2tpcCB0aGUgUkVUUiBjb21tYW5kIHRvIGZpZ3VyZSBvdXQgdGhlIHNpemUgYmVmb3JlCitkb3dubG9hZGluZyBhIGZpbGUuCiAuSVAgIi1pLCAtLWluY2x1ZGUiCiAoSFRUUCkgSW5jbHVkZSB0aGUgSFRUUC1oZWFkZXIgaW4gdGhlIG91dHB1dC4gVGhlIEhUVFAtaGVhZGVyIGluY2x1ZGVzIHRoaW5ncwogbGlrZSBzZXJ2ZXItbmFtZSwgZGF0ZSBvZiB0aGUgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLgpAQCAtNzg4LDcgKzgzOSw3IEBACiBQZXJmb3JtIGFuIG9wZXJhdGlvbiB1c2luZyBhIHNwZWNpZmllZCBpbnRlcmZhY2UuIFlvdSBjYW4gZW50ZXIgaW50ZXJmYWNlCiBuYW1lLCBJUCBhZGRyZXNzIG9yIGhvc3QgbmFtZS4gQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2U6CiAKLSBjdXJsIC0taW50ZXJmYWNlIGV0aDA6MSBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS8KKyBjdXJsIC0taW50ZXJmYWNlIGV0aDA6MSBodHRwczovL3d3dy5leGFtcGxlLmNvbS8KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItaiwgLS1qdW5rLXNlc3Npb24tY29va2llcyIKQEAgLTgwMSw4ICs4NTIsMTcgQEAKIHNlcnZlci1zcGVjaWZpZWQgQ29udGVudC1EaXNwb3NpdGlvbiBmaWxlbmFtZSBpbnN0ZWFkIG9mIGV4dHJhY3RpbmcgYSBmaWxlbmFtZQogZnJvbSB0aGUgVVJMLgogCitJZiB0aGUgc2VydmVyIHNwZWNpZmllcyBhIGZpbGUgbmFtZSBhbmQgYSBmaWxlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzCitpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpdCB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBhbmQgYW4gZXJyb3Igd2lsbAorb2NjdXIuIElmIHRoZSBzZXJ2ZXIgZG9lc24ndCBzcGVjaWZ5IGEgZmlsZSBuYW1lIHRoZW4gdGhpcyBvcHRpb24gaGFzIG5vCitlZmZlY3QuCisKIFRoZXJlJ3Mgbm8gYXR0ZW1wdCB0byBkZWNvZGUgJS1zZXF1ZW5jZXMgKHlldCkgaW4gdGhlIHByb3ZpZGVkIGZpbGUgbmFtZSwgc28KIHRoaXMgb3B0aW9uIG1heSBwcm92aWRlIHlvdSB3aXRoIHJhdGhlciB1bmV4cGVjdGVkIGZpbGUgbmFtZXMuCisKK1xmQldBUk5JTkdcZlA6IEV4ZXJjaXNlIGp1ZGljaW91cyB1c2Ugb2YgdGhpcyBvcHRpb24sIGVzcGVjaWFsbHkgb24gV2luZG93cy4gQQorcm9ndWUgc2VydmVyIGNvdWxkIHNlbmQgeW91IHRoZSBuYW1lIG9mIGEgRExMIG9yIG90aGVyIGZpbGUgdGhhdCBjb3VsZCBwb3NzaWJseQorYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkgYnkgV2luZG93cyBvciBzb21lIHRoaXJkIHBhcnR5IHNvZnR3YXJlLgogLklQICItaywgLS1pbnNlY3VyZSIKIChTU0wpIFRoaXMgb3B0aW9uIGV4cGxpY2l0bHkgYWxsb3dzIGN1cmwgdG8gcGVyZm9ybSAiaW5zZWN1cmUiIFNTTCBjb25uZWN0aW9ucwogYW5kIHRyYW5zZmVycy4gQWxsIFNTTCBjb25uZWN0aW9ucyBhcmUgYXR0ZW1wdGVkIHRvIGJlIG1hZGUgc2VjdXJlIGJ5IHVzaW5nCkBAIC04MTAsNyArODcwLDcgQEAKIGNvbnNpZGVyZWQgImluc2VjdXJlIiBmYWlsIHVubGVzcyBcZkktaywgLS1pbnNlY3VyZVxmUCBpcyB1c2VkLgogCiBTZWUgdGhpcyBvbmxpbmUgcmVzb3VyY2UgZm9yIGZ1cnRoZXIgZGV0YWlsczoKLVxmQmh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sXGZQCitcZkJodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbGNlcnRzLmh0bWxcZlAKIC5JUCAiLUssIC0tY29uZmlnIDxjb25maWcgZmlsZT4iCiBTcGVjaWZ5IHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgZnJvbS4gVGhlIGNvbmZpZyBmaWxlIGlzIGEKIHRleHQgZmlsZSBpbiB3aGljaCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGNhbiBiZSB3cml0dGVuIHdoaWNoIHRoZW4gd2lsbCBiZQpAQCAtODM3LDcgKzg5Nyw3IEBACiBpdCB1c2luZyB0aGUgXGZJLS11cmxcZlAgb3B0aW9uLCBhbmQgbm90IGJ5IHNpbXBseSB3cml0aW5nIHRoZSBVUkwgb24gaXRzIG93bgogbGluZS4gU28sIGl0IGNvdWxkIGxvb2sgc2ltaWxhciB0byB0aGlzOgogCi11cmwgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzLyIKK3VybCA9ICJodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzLyIKIAogV2hlbiBjdXJsIGlzIGludm9rZWQsIGl0IGFsd2F5cyAodW5sZXNzIFxmSS1xXGZQIGlzIHVzZWQpIGNoZWNrcyBmb3IgYSBkZWZhdWx0CiBjb25maWcgZmlsZSBhbmQgdXNlcyBpdCBpZiBmb3VuZC4gVGhlIGRlZmF1bHQgY29uZmlnIGZpbGUgaXMgY2hlY2tlZCBmb3IgaW4KQEAgLTg1NiwxNCArOTE2LDE0IEBACiAubmYKICMgLS0tIEV4YW1wbGUgZmlsZSAtLS0KICMgdGhpcyBpcyBhIGNvbW1lbnQKLXVybCA9ICJjdXJsLmhheHguc2UiCit1cmwgPSAiZXhhbXBsZS5jb20iCiBvdXRwdXQgPSAiY3VybGhlcmUuaHRtbCIKIHVzZXItYWdlbnQgPSAic3VwZXJhZ2VudC8xLjAiCiAKICMgYW5kIGZldGNoIGFub3RoZXIgVVJMIHRvbwotdXJsID0gImN1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCIKK3VybCA9ICJleGFtcGxlLmNvbS9kb2NzL21hbnBhZ2UuaHRtbCIKIC1PCi1yZWZlcmVyID0gImh0dHA6Ly9ub3doZXJlYXRhbGwuY29tLyIKK3JlZmVyZXIgPSAiaHR0cDovL25vd2hlcmVhdGFsbC5leGFtcGxlLmNvbS8iCiAjIC0tLSBFbmQgb2YgZXhhbXBsZSBmaWxlIC0tLQogLmZpCiAKQEAgLTg5OCw2ICs5NTgsOCBAQAogdmVyeSBjb21tb24uIFVzZSBcZkktViwgLS12ZXJzaW9uXGZQIHRvIHNlZSBpZiB5b3VyIGN1cmwgc3VwcG9ydHMgaXQuCiAKIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2V2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZC4KKy5JUCAiLS1rcmI0IDxsZXZlbD4iCisoRlRQKSBUaGlzIGlzIHRoZSBmb3JtZXIgbmFtZSBmb3IgXGZJLS1rcmJcZlAuIERvIG5vdCB1c2UuCiAuSVAgIi1sLCAtLWxpc3Qtb25seSIKIChGVFApCiBXaGVuIGxpc3RpbmcgYW4gRlRQIGRpcmVjdG9yeSwgdGhpcyBzd2l0Y2ggZm9yY2VzIGEgbmFtZS1vbmx5IHZpZXcuIFRoaXMgaXMKQEAgLTkzNSw3ICs5OTcsNyBAQAogCiBZb3UgY2FuIHRlbGwgY3VybCB0byBub3QgY2hhbmdlIHRoZSBub24tR0VUIHJlcXVlc3QgbWV0aG9kIHRvIEdFVCBhZnRlciBhIDMweAogcmVzcG9uc2UgYnkgdXNpbmcgdGhlIGRlZGljYXRlZCBvcHRpb25zIGZvciB0aGF0OiBcZkktLXBvc3QzMDFcZlAsCi1cZkktLXBvc3QzMDJcZlAgYW5kIFxmSS1wb3N0MzAzXGZQLgorXGZJLS1wb3N0MzAyXGZQIGFuZCBcZkktLXBvc3QzMDNcZlAuCiAuSVAgIi0tbGliY3VybCA8ZmlsZT4iCiBBcHBlbmQgdGhpcyBvcHRpb24gdG8gYW55IG9yZGluYXJ5IGN1cmwgY29tbWFuZCBsaW5lLCBhbmQgeW91IHdpbGwgZ2V0IGEKIGxpYmN1cmwtdXNpbmcgQyBzb3VyY2UgY29kZSB3cml0dGVuIHRvIHRoZSBmaWxlIHRoYXQgZG9lcyB0aGUgZXF1aXZhbGVudApAQCAtMTAxMSw3ICsxMDczLDggQEAKIGZpbGVzIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgZXZlbiBpZiB0aGUgZmlsZSB0cmFuc2ZlciBlbmRzIHVwIGJlaW5nIGxhcmdlcgogdGhhbiB0aGlzIGdpdmVuIGxpbWl0LiBUaGlzIGNvbmNlcm5zIGJvdGggRlRQIGFuZCBIVFRQIHRyYW5zZmVycy4KIC5JUCAiLS1tYWlsLXJjcHQgPGFkZHJlc3M+IgotKFNNVFApIFNwZWNpZnkgYSBzaW5nbGUgYWRkcmVzcywgdXNlciBuYW1lIG9yIG1haWxpbmcgbGlzdCBuYW1lLgorKFNNVFApIFNwZWNpZnkgYSBzaW5nbGUgYWRkcmVzcywgdXNlciBuYW1lIG9yIG1haWxpbmcgbGlzdCBuYW1lLiBSZXBlYXQgdGhpcworb3B0aW9uIHNldmVyYWwgdGltZXMgdG8gc2VuZCB0byBtdWx0aXBsZSByZWNpcGllbnRzLgogCiBXaGVuIHBlcmZvcm1pbmcgYSBtYWlsIHRyYW5zZmVyLCB0aGUgcmVjaXBpZW50IHNob3VsZCBzcGVjaWZ5IGEgdmFsaWQgZW1haWwKIGFkZHJlc3MgdG8gc2VuZCB0aGUgbWFpbCB0by4gKEFkZGVkIGluIDcuMjAuMCkKQEAgLTExMjcsNiArMTE5MCwxOSBAQAogYSBkb21haW4gd2hpY2ggY29udGFpbnMgdGhlIGhvc3RuYW1lLCBvciB0aGUgaG9zdG5hbWUgaXRzZWxmLiBGb3IgZXhhbXBsZSwKIGxvY2FsLmNvbSB3b3VsZCBtYXRjaCBsb2NhbC5jb20sIGxvY2FsLmNvbTo4MCwgYW5kIHd3dy5sb2NhbC5jb20sIGJ1dCBub3QKIHd3dy5ub3Rsb2NhbC5jb20uICAoQWRkZWQgaW4gNy4xOS40KS4KKy5JUCAiLS1jb25uZWN0LXRvIDxob3N0OnBvcnQ6Y29ubmVjdC10by1ob3N0OmNvbm5lY3QtdG8tcG9ydD4iCitGb3IgYSByZXF1ZXN0IHRvIHRoZSBnaXZlbiAiaG9zdDpwb3J0IiBwYWlyLCBjb25uZWN0IHRvCisiY29ubmVjdC10by1ob3N0OmNvbm5lY3QtdG8tcG9ydCIgaW5zdGVhZC4KK1RoaXMgaXMgc3VpdGFibGUgdG8gZGlyZWN0IHRoZSByZXF1ZXN0IGF0IGEgc3BlY2lmaWMgc2VydmVyLCBlLmcuIGF0IGEgc3BlY2lmaWMKK2NsdXN0ZXIgbm9kZSBpbiBhIGNsdXN0ZXIgb2Ygc2VydmVycy4KK1RoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZCB0byBlc3RhYmxpc2ggdGhlIG5ldHdvcmsgY29ubmVjdGlvbi4gSXQgZG9lcyBOT1QKK2FmZmVjdCB0aGUgaG9zdG5hbWUvcG9ydCB0aGF0IGlzIHVzZWQgZm9yIFRMUy9TU0wgKGUuZy4gU05JLCBjZXJ0aWZpY2F0ZQordmVyaWZpY2F0aW9uKSBvciBmb3IgdGhlIGFwcGxpY2F0aW9uIHByb3RvY29scy4KKyJob3N0IiBhbmQgInBvcnQiIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5nLCBtZWFuaW5nICJhbnkgaG9zdC9wb3J0Ii4KKyJjb25uZWN0LXRvLWhvc3QiIGFuZCAiY29ubmVjdC10by1wb3J0IiBtYXkgYWxzbyBiZSB0aGUgZW1wdHkgc3RyaW5nLAorbWVhbmluZyAidXNlIHRoZSByZXF1ZXN0J3Mgb3JpZ2luYWwgaG9zdC9wb3J0Ii4KK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIG1hbnkgdGltZXMgdG8gYWRkIG1hbnkgY29ubmVjdCBydWxlcy4KKyhBZGRlZCBpbiA3LjQ5LjApLgogLklQICItLW50bG0iCiAoSFRUUCkgRW5hYmxlcyBOVExNIGF1dGhlbnRpY2F0aW9uLiBUaGUgTlRMTSBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2FzCiBkZXNpZ25lZCBieSBNaWNyb3NvZnQgYW5kIGlzIHVzZWQgYnkgSUlTIHdlYiBzZXJ2ZXJzLiBJdCBpcyBhIHByb3ByaWV0YXJ5CkBAIC0xMTQyLDEzICsxMjE4LDE3IEBACiBcZkktViwgLS12ZXJzaW9uXGZQIHRvIHNlZSBpZiB5b3VyIGN1cmwgc3VwcG9ydHMgTlRMTS4KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCBvbmx5IHRoZSBmaXJzdCBvbmUgaXMgdXNlZC4KKy5JUCAiLS1udGxtLXdiIgorKEhUVFApIEVuYWJsZXMgTlRMTSBtdWNoIGluIHRoZSBzdHlsZSBcZkktLW50bG1cZlAgZG9lcywgYnV0IGhhbmQgb3ZlciB0aGUKK2F1dGhlbnRpY2F0aW9uIHRvIHRoZSBzZXBhcmF0ZSBiaW5hcnkgbnRsbWF1dGggYXBwbGljYXRpb24gdGhhdCBpcyBleGVjdXRlZAord2hlbiBuZWVkZWQuCiAuSVAgIi1vLCAtLW91dHB1dCA8ZmlsZT4iCiBXcml0ZSBvdXRwdXQgdG8gPGZpbGU+IGluc3RlYWQgb2Ygc3Rkb3V0LiBJZiB5b3UgYXJlIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoCiBtdWx0aXBsZSBkb2N1bWVudHMsIHlvdSBjYW4gdXNlICcjJyBmb2xsb3dlZCBieSBhIG51bWJlciBpbiB0aGUgPGZpbGU+CiBzcGVjaWZpZXIuIFRoYXQgdmFyaWFibGUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBjdXJyZW50IHN0cmluZyBmb3IgdGhlIFVSTAogYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjoKIAotICBjdXJsIGh0dHA6Ly97b25lLHR3b30uc2l0ZS5jb20gLW8gImZpbGVfIzEudHh0IgorICBjdXJsIGh0dHA6Ly97b25lLHR3b30uZXhhbXBsZS5jb20gLW8gImZpbGVfIzEudHh0IgogCiBvciB1c2Ugc2V2ZXJhbCB2YXJpYWJsZXMgbGlrZToKIApAQCAtMTE2MywxMiArMTI0MywxNSBAQAogV3JpdGUgb3V0cHV0IHRvIGEgbG9jYWwgZmlsZSBuYW1lZCBsaWtlIHRoZSByZW1vdGUgZmlsZSB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlCiBwYXJ0IG9mIHRoZSByZW1vdGUgZmlsZSBpcyB1c2VkLCB0aGUgcGF0aCBpcyBjdXQgb2ZmLikKIAotVGhlIHJlbW90ZSBmaWxlIG5hbWUgdG8gdXNlIGZvciBzYXZpbmcgaXMgZXh0cmFjdGVkIGZyb20gdGhlIGdpdmVuIFVSTCwKLW5vdGhpbmcgZWxzZS4KK1RoZSBmaWxlIHdpbGwgYmUgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIElmIHlvdSB3YW50IHRoZSBmaWxlCitzYXZlZCBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksIG1ha2Ugc3VyZSB5b3UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcKK2RpcmVjdG9yeSBiZWZvcmUgaW52b2tpbmcgY3VybCB3aXRoIHRoaXMgb3B0aW9uLgogCi1Db25zZXF1ZW50aWFsbHksIHRoZSBmaWxlIHdpbGwgYmUgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIElmCi15b3Ugd2FudCB0aGUgZmlsZSBzYXZlZCBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksIG1ha2Ugc3VyZSB5b3UgY2hhbmdlIGN1cnJlbnQKLXdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSB5b3UgaW52b2tlIGN1cmwgd2l0aCB0aGUgXGZCLU8sIC0tcmVtb3RlLW5hbWVcZlAgZmxhZyEKK1RoZSByZW1vdGUgZmlsZSBuYW1lIHRvIHVzZSBmb3Igc2F2aW5nIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBVUkwsIG5vdGhpbmcKK2Vsc2UsIGFuZCBpZiBpdCBhbHJlYWR5IGV4aXN0cyBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLiBJZiB5b3Ugd2FudCB0aGUgc2VydmVyCit0byBiZSBhYmxlIHRvIGNob29zZSB0aGUgZmlsZSBuYW1lIHJlZmVyIHRvIFxmSS1KLCAtLXJlbW90ZS1oZWFkZXItbmFtZVxmUAord2hpY2ggY2FuIGJlIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhpcyBvcHRpb24uIElmIHRoZSBzZXJ2ZXIgY2hvb3NlcyBhIGZpbGUgbmFtZQorYW5kIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyBpdCB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbi4KIAogVGhlcmUgaXMgbm8gVVJMIGRlY29kaW5nIGRvbmUgb24gdGhlIGZpbGUgbmFtZS4gSWYgaXQgaGFzICUyMCBvciBvdGhlciBVUkwKIGVuY29kZWQgcGFydHMgb2YgdGhlIG5hbWUsIHRoZXkgd2lsbCBlbmQgdXAgYXMtaXMgYXMgZmlsZSBuYW1lLgpAQCAtMTI0NSwyMSArMTMyOCwyMSBAQAogCiAoQWRkZWQgaW4gNy40Mi4wKQogLklQICItLXBvc3QzMDEiCi0oSFRUUCkgVGVsbHMgY3VybCB0byByZXNwZWN0IFJGQyAyNjE2LzEwLjMuMiBhbmQgbm90IGNvbnZlcnQgUE9TVCByZXF1ZXN0cworKEhUVFApIFRlbGxzIGN1cmwgdG8gcmVzcGVjdCBSRkMgNzIzMC82LjQuMiBhbmQgbm90IGNvbnZlcnQgUE9TVCByZXF1ZXN0cwogaW50byBHRVQgcmVxdWVzdHMgd2hlbiBmb2xsb3dpbmcgYSAzMDEgcmVkaXJlY3Rpb24uIFRoZSBub24tUkZDIGJlaGF2aW91ciBpcwogdWJpcXVpdG91cyBpbiB3ZWIgYnJvd3NlcnMsIHNvIGN1cmwgZG9lcyB0aGUgY29udmVyc2lvbiBieSBkZWZhdWx0IHRvIG1haW50YWluCiBjb25zaXN0ZW5jeS4gSG93ZXZlciwgYSBzZXJ2ZXIgbWF5IHJlcXVpcmUgYSBQT1NUIHRvIHJlbWFpbiBhIFBPU1QgYWZ0ZXIgc3VjaAogYSByZWRpcmVjdGlvbi4gVGhpcyBvcHRpb24gaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4gdXNpbmcgXGZJLUwsIC0tbG9jYXRpb25cZlAKIChBZGRlZCBpbiA3LjE3LjEpCiAuSVAgIi0tcG9zdDMwMiIKLShIVFRQKSBUZWxscyBjdXJsIHRvIHJlc3BlY3QgUkZDIDI2MTYvMTAuMy4yIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzCisoSFRUUCkgVGVsbHMgY3VybCB0byByZXNwZWN0IFJGQyA3MjMwLzYuNC4zIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzCiBpbnRvIEdFVCByZXF1ZXN0cyB3aGVuIGZvbGxvd2luZyBhIDMwMiByZWRpcmVjdGlvbi4gVGhlIG5vbi1SRkMgYmVoYXZpb3VyIGlzCiB1YmlxdWl0b3VzIGluIHdlYiBicm93c2Vycywgc28gY3VybCBkb2VzIHRoZSBjb252ZXJzaW9uIGJ5IGRlZmF1bHQgdG8gbWFpbnRhaW4KIGNvbnNpc3RlbmN5LiBIb3dldmVyLCBhIHNlcnZlciBtYXkgcmVxdWlyZSBhIFBPU1QgdG8gcmVtYWluIGEgUE9TVCBhZnRlciBzdWNoCiBhIHJlZGlyZWN0aW9uLiBUaGlzIG9wdGlvbiBpcyBtZWFuaW5nZnVsIG9ubHkgd2hlbiB1c2luZyBcZkktTCwgLS1sb2NhdGlvblxmUAogKEFkZGVkIGluIDcuMTkuMSkKIC5JUCAiLS1wb3N0MzAzIgotKEhUVFApIFRlbGxzIGN1cmwgdG8gcmVzcGVjdCBSRkMgMjYxNi8xMC4zLjIgYW5kIG5vdCBjb252ZXJ0IFBPU1QgcmVxdWVzdHMKKyhIVFRQKSBUZWxscyBjdXJsIHRvIHJlc3BlY3QgUkZDIDcyMzAvNi40LjQgYW5kIG5vdCBjb252ZXJ0IFBPU1QgcmVxdWVzdHMKIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nIGEgMzAzIHJlZGlyZWN0aW9uLiBUaGUgbm9uLVJGQyBiZWhhdmlvdXIgaXMKIHViaXF1aXRvdXMgaW4gd2ViIGJyb3dzZXJzLCBzbyBjdXJsIGRvZXMgdGhlIGNvbnZlcnNpb24gYnkgZGVmYXVsdCB0byBtYWludGFpbgogY29uc2lzdGVuY3kuIEhvd2V2ZXIsIGEgc2VydmVyIG1heSByZXF1aXJlIGEgUE9TVCB0byByZW1haW4gYSBQT1NUIGFmdGVyIHN1Y2gKQEAgLTEzMDYsOSArMTM4OSw0MCBAQAogYXMgY29uY2F0ZW5hdGluZyB0aGUgcHJvdG9jb2xzIGludG8gb25lIGluc3RhbmNlIG9mIHRoZSBvcHRpb24uCiAKIChBZGRlZCBpbiA3LjIwLjIpCisuSVAgIi0tcHJvdG8tZGVmYXVsdCA8cHJvdG9jb2w+IgorVGVsbHMgY3VybCB0byB1c2UgXGZJcHJvdG9jb2xcZlAgZm9yIGFueSBVUkwgbWlzc2luZyBhIHNjaGVtZSBuYW1lLgorCitFeGFtcGxlOgorCisuUlMKKy5JUCAiLS1wcm90by1kZWZhdWx0IGh0dHBzIGZ0cC5tb3ppbGxhLm9yZyIKK2h0dHBzOi8vZnRwLm1vemlsbGEub3JnCisuUkUKKworQW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCBwcm90b2NvbCBjYXVzZXMgZXJyb3IKK1xmSUNVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MXGZQLgorCitUaGlzIG9wdGlvbiBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRlZmF1bHQgcHJveHkgcHJvdG9jb2wgKGh0dHApLgorCitXaXRob3V0IHRoaXMgb3B0aW9uIGN1cmwgd291bGQgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LCBzZWUgXGZJLS11cmxcZlAKK2ZvciBkZXRhaWxzLgorCisoQWRkZWQgaW4gNy40NS4wKQogLklQICItLXByb3RvLXJlZGlyIDxwcm90b2NvbHM+IgotVGVsbHMgY3VybCB0byB1c2UgdGhlIGxpc3RlZCBwcm90b2NvbHMgYWZ0ZXIgYSByZWRpcmVjdC4gU2VlIC0tcHJvdG8gZm9yCi1ob3cgcHJvdG9jb2xzIGFyZSByZXByZXNlbnRlZC4KK1RlbGxzIGN1cmwgdG8gdXNlIHRoZSBsaXN0ZWQgcHJvdG9jb2xzIG9uIHJlZGlyZWN0LiBTZWUgLS1wcm90byBmb3IgaG93Citwcm90b2NvbHMgYXJlIHJlcHJlc2VudGVkLgorCitFeGFtcGxlOgorCisuUlMKKy5JUCAiLS1wcm90by1yZWRpciAtYWxsLGh0dHAsaHR0cHMiCitBbGxvdyBvbmx5IEhUVFAgYW5kIEhUVFBTIG9uIHJlZGlyZWN0LgorLlJFCisKK0J5IGRlZmF1bHQgY3VybCB3aWxsIGFsbG93IGFsbCBwcm90b2NvbHMgb24gcmVkaXJlY3QgZXhjZXB0IHNldmVyYWwgZGlzYWJsZWQKK2ZvciBzZWN1cml0eSByZWFzb25zOiBTaW5jZSA3LjE5LjQgRklMRSBhbmQgU0NQIGFyZSBkaXNhYmxlZCwgYW5kIHNpbmNlIDcuNDAuMAorU01CIGFuZCBTTUJTIGFyZSBhbHNvIGRpc2FibGVkLiBTcGVjaWZ5aW5nIFxmSWFsbFxmUCBvciBcZkkrYWxsXGZQIGVuYWJsZXMgYWxsCitwcm90b2NvbHMgb24gcmVkaXJlY3QsIGluY2x1ZGluZyB0aG9zZSBkaXNhYmxlZCBmb3Igc2VjdXJpdHkuCiAKIChBZGRlZCBpbiA3LjIwLjIpCiAuSVAgIi0tcHJveHktYW55YXV0aCIKQEAgLTEzNTEsNyArMTQ2NSw3IEBACiBwcml2YXRlIGtleSBmaWxlLCBzbyBwYXNzaW5nIHRoaXMgb3B0aW9uIGlzIGdlbmVyYWxseSBub3QgcmVxdWlyZWQuIE5vdGUgdGhhdAogdGhpcyBwdWJsaWMga2V5IGV4dHJhY3Rpb24gcmVxdWlyZXMgbGliY3VybCB0byBiZSBsaW5rZWQgYWdhaW5zdCBhIGNvcHkgb2YKIGxpYnNzaDIgMS4yLjggb3IgaGlnaGVyIHRoYXQgaXMgaXRzZWxmIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuKQotLklQICItcSIKKy5JUCAiLXEsIC0tZGlzYWJsZSIKIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGUgXGZJY3VybHJjXGZQIGNvbmZpZwogZmlsZSB3aWxsIG5vdCBiZSByZWFkIGFuZCB1c2VkLiBTZWUgdGhlIFxmSS1LLCAtLWNvbmZpZ1xmUCBmb3IgZGV0YWlscyBvbiB0aGUKIGRlZmF1bHQgY29uZmlnIGZpbGUgc2VhcmNoIHBhdGguCkBAIC0xNDIzLDEzICsxNTM3LDEwIEBACiBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcndhcmQKIC5UUAogLkIgMC0wLC0xCi1zcGVjaWZpZXMgdGhlIGZpcnN0IGFuZCBsYXN0IGJ5dGUgb25seSgqKShIKQotLlRQCi0uQiA1MDAtNzAwLDYwMC03OTkKLXNwZWNpZmllcyAzMDAgYnl0ZXMgZnJvbSBvZmZzZXQgNTAwKEgpCitzcGVjaWZpZXMgdGhlIGZpcnN0IGFuZCBsYXN0IGJ5dGUgb25seSgqKShIVFRQKQogLlRQCiAuQiAxMDAtMTk5LDUwMC01OTkKLXNwZWNpZmllcyB0d28gc2VwYXJhdGUgMTAwLWJ5dGUgcmFuZ2VzKCopKEgpCitzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMC1ieXRlIHJhbmdlcygqKSAoSFRUUCkKIC5SRQogLklQCiAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgd2l0aCBhIG11bHRpcGFydApAQCAtMTQ3NCw2ICsxNTg1LDkgQEAKIHlvdSBuZWVkIHNldmVyYWwgZW50cmllcyBpZiB5b3Ugd2FudCB0byBwcm92aWRlIGFkZHJlc3MgZm9yIHRoZSBzYW1lIGhvc3QgYnV0CiBkaWZmZXJlbnQgcG9ydHMuCiAKK1RoZSBwcm92aWRlZCBhZGRyZXNzIHNldCBieSB0aGlzIG9wdGlvbiB3aWxsIGJlIHVzZWQgZXZlbiBpZiBcZkktNCwgLS1pcHY0XGZQCitvciBcZkktNiwgLS1pcHY2XGZQIGlzIHNldCB0byBtYWtlIGN1cmwgdXNlIGFub3RoZXIgSVAgdmVyc2lvbi4KKwogVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgbWFueSB0aW1lcyB0byBhZGQgbWFueSBob3N0IG5hbWVzIHRvIHJlc29sdmUuCiAKIChBZGRlZCBpbiA3LjIxLjMpCkBAIC0xNTM0LDE0ICsxNjQ4LDE3IEBACiAoRlRQLCBQT1AzLCBJTUFQLCBTTVRQKSBSZXF1aXJlIFNTTC9UTFMgZm9yIHRoZSBjb25uZWN0aW9uLiAgVGVybWluYXRlcyB0aGUKIGNvbm5lY3Rpb24gaWYgdGhlIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgU1NML1RMUy4gKEFkZGVkIGluIDcuMjAuMCkKIAotVGhpcyBvcHRpb24gd2FzIGZvcm1lcmx5IGtub3duIGFzIFxmSS0tZnRwLXNzbC1yZXFkXGZQIChhZGRlZCBpbiA3LjE1LjUpLiBUaGF0Ci1vcHRpb24gbmFtZSBjYW4gc3RpbGwgYmUgdXNlZCBidXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCitUaGlzIG9wdGlvbiB3YXMgZm9ybWVybHkga25vd24gYXMgXGZJLS1mdHAtc3NsLXJlcWRcZlAuCiAuSVAgIi0tc3NsLWFsbG93LWJlYXN0IgogKFNTTCkgVGhpcyBvcHRpb24gdGVsbHMgY3VybCB0byBub3Qgd29yayBhcm91bmQgYSBzZWN1cml0eSBmbGF3IGluIHRoZSBTU0wzCiBhbmQgVExTMS4wIHByb3RvY29scyBrbm93biBhcyBCRUFTVC4gIElmIHRoaXMgb3B0aW9uIGlzbid0IHVzZWQsIHRoZSBTU0wgbGF5ZXIKIG1heSB1c2Ugd29ya2Fyb3VuZHMga25vd24gdG8gY2F1c2UgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcyB3aXRoIHNvbWUgb2xkZXIKIFNTTCBpbXBsZW1lbnRhdGlvbnMuIFdBUk5JTkc6IHRoaXMgb3B0aW9uIGxvb3NlbnMgdGhlIFNTTCBzZWN1cml0eSwgYW5kIGJ5CiB1c2luZyB0aGlzIGZsYWcgeW91IGFzayBmb3IgZXhhY3RseSB0aGF0LiAgKEFkZGVkIGluIDcuMjUuMCkKKy5JUCAiLS1zc2wtbm8tcmV2b2tlIgorKFdpblNTTCkgVGhpcyBvcHRpb24gdGVsbHMgY3VybCB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzLgorV0FSTklORzogdGhpcyBvcHRpb24gbG9vc2VucyB0aGUgU1NMIHNlY3VyaXR5LCBhbmQgYnkgdXNpbmcgdGhpcyBmbGFnIHlvdSBhc2sKK2ZvciBleGFjdGx5IHRoYXQuICAoQWRkZWQgaW4gNy40NC4wKQogLklQICItLXNvY2tzNCA8aG9zdFs6cG9ydF0+IgogVXNlIHRoZSBzcGVjaWZpZWQgU09DS1M0IHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgbm90IHNwZWNpZmllZCwgaXQgaXMKIGFzc3VtZWQgYXQgcG9ydCAxMDgwLiAoQWRkZWQgaW4gNy4xNS4yKQpAQCAtMTYzNywxNCArMTc1NCwxNiBAQAogYXJndW1lbnQsIG1lYW5pbmcgdGhhdCB5b3UgY2FuIHVwbG9hZCBtdWx0aXBsZSBmaWxlcyB0byBhIHNpbmdsZSBVUkwgYnkgdXNpbmcKIHRoZSBzYW1lIFVSTCBnbG9iYmluZyBzdHlsZSBzdXBwb3J0ZWQgaW4gdGhlIFVSTCwgbGlrZSB0aGlzOgogCi1jdXJsIC1UICJ7ZmlsZTEsZmlsZTJ9IiBodHRwOi8vd3d3LnVwbG9hZHRvdGhpc3NpdGUuY29tCitjdXJsIC1UICJ7ZmlsZTEsZmlsZTJ9IiBodHRwOi8vd3d3LmV4YW1wbGUuY29tCiAKIG9yIGV2ZW4KIAotY3VybCAtVCAiaW1nWzEtMTAwMF0ucG5nIiBmdHA6Ly9mdHAucGljdHVyZW1hbmlhLmNvbS91cGxvYWQvCitjdXJsIC1UICJpbWdbMS0xMDAwXS5wbmciIGZ0cDovL2Z0cC5leGFtcGxlLmNvbS91cGxvYWQvCiAuSVAgIi0tdGNwLW5vZGVsYXkiCiBUdXJuIG9uIHRoZSBUQ1BfTk9ERUxBWSBvcHRpb24uIFNlZSB0aGUgXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUCBtYW4gcGFnZSBmb3IKIGRldGFpbHMgYWJvdXQgdGhpcyBvcHRpb24uIChBZGRlZCBpbiA3LjExLjIpCisuSVAgIi0tdGNwLWZhc3RvcGVuIgorRW5hYmxlIHVzZSBvZiBUQ1AgRmFzdCBPcGVuIChSRkM3NDEzKS4gKEFkZGVkIGluIDcuNDkuMCkKIC5JUCAiLS10ZnRwLWJsa3NpemUgPHZhbHVlPiIKIChURlRQKSBTZXQgVEZUUCBCTEtTSVpFIG9wdGlvbiAobXVzdCBiZSA+NTEyKS4gVGhpcyBpcyB0aGUgYmxvY2sgc2l6ZSB0aGF0CiBjdXJsIHdpbGwgdHJ5IHRvIHVzZSB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvIG9yIGZyb20gYSBURlRQIHNlcnZlci4gQnkKQEAgLTE2NTMsNiArMTc3MiwxNCBAQAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogCiAoQWRkZWQgaW4gNy4yMC4wKQorLklQICItLXRmdHAtbm8tb3B0aW9ucyIKKyhURlRQKSBUZWxscyBjdXJsIG5vdCB0byBzZW5kIFRGVFAgb3B0aW9ucyByZXF1ZXN0cy4KKworVGhpcyBvcHRpb24gaW1wcm92ZXMgaW50ZXJvcCB3aXRoIHNvbWUgbGVnYWN5IHNlcnZlcnMgdGhhdCBkbyBub3QgYWNrbm93bGVkZ2UKK29yIHByb3Blcmx5IGltcGxlbWVudCBURlRQIG9wdGlvbnMuIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZAorXGZJLS10ZnRwLWJsa3NpemVcZlAgaXMgaWdub3JlZC4KKworKEFkZGVkIGluIDcuNDguMCkKIC5JUCAiLS10bHNhdXRodHlwZSA8YXV0aHR5cGU+IgogU2V0IFRMUyBhdXRoZW50aWNhdGlvbiB0eXBlLiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCBvcHRpb24gaXMgIlNSUCIsCiBmb3IgVExTLVNSUCAoUkZDIDUwNTQpLiBJZiBcZkktLXRsc3VzZXJcZlAgYW5kIFxmSS0tdGxzcGFzc3dvcmRcZlAgYXJlCkBAIC0xNzUxLDYgKzE4NzgsMTIgQEAKIFNwZWNpZnkgYSBVUkwgdG8gZmV0Y2guIFRoaXMgb3B0aW9uIGlzIG1vc3RseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIHNwZWNpZnkKIFVSTChzKSBpbiBhIGNvbmZpZyBmaWxlLgogCitJZiB0aGUgZ2l2ZW4gVVJMIGlzIG1pc3NpbmcgYSBzY2hlbWUgbmFtZSAoc3VjaCBhcyAiaHR0cDovLyIgb3IgImZ0cDovLyIgZXRjKQordGhlbiBjdXJsIHdpbGwgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LiBJZiB0aGUgb3V0ZXJtb3N0IHN1Yi1kb21haW4gbmFtZQorbWF0Y2hlcyBESUNULCBGVFAsIElNQVAsIExEQVAsIFBPUDMgb3IgU01UUCB0aGVuIHRoYXQgcHJvdG9jb2wgd2lsbCBiZSB1c2VkLAorb3RoZXJ3aXNlIEhUVFAgd2lsbCBiZSB1c2VkLiBTaW5jZSA3LjQ1LjAgZ3Vlc3NpbmcgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgYQorZGVmYXVsdCBwcm90b2NvbCwgc2VlIFxmSS0tcHJvdG8tZGVmYXVsdFxmUCBmb3IgZGV0YWlscy4KKwogVGhpcyBvcHRpb24gbWF5IGJlIHVzZWQgYW55IG51bWJlciBvZiB0aW1lcy4gVG8gY29udHJvbCB3aGVyZSB0aGlzIFVSTCBpcwogd3JpdHRlbiwgdXNlIHRoZSBcZkktbywgLS1vdXRwdXRcZlAgb3IgdGhlIFxmSS1PLCAtLXJlbW90ZS1uYW1lXGZQIG9wdGlvbnMuCiAuSVAgIi12LCAtLXZlcmJvc2UiCkBAIC0xNzk2LDcgKzE5MjksNyBAQAogVGhlIHVsdGltYXRlIGZpbGVuYW1lIHRoYXQgY3VybCB3cml0ZXMgb3V0IHRvLiBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBpZiBjdXJsCiBpcyB0b2xkIHRvIHdyaXRlIHRvIGEgZmlsZSB3aXRoIHRoZSBcZkktLXJlbW90ZS1uYW1lXGZQIG9yIFxmSS0tb3V0cHV0XGZQCiBvcHRpb24uIEl0J3MgbW9zdCB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgXGZJLS1yZW1vdGUtaGVhZGVyLW5hbWVcZlAKLW9wdGlvbi4gKEFkZGVkIGluIDcuMjUuMSkKK29wdGlvbi4gKEFkZGVkIGluIDcuMjYuMCkKIC5UUAogLkIgZnRwX2VudHJ5X3BhdGgKIFRoZSBpbml0aWFsIHBhdGggY3VybCBlbmRlZCB1cCBpbiB3aGVuIGxvZ2dpbmcgb24gdG8gdGhlIHJlbW90ZSBGVFAKQEAgLTIyNzAsNyArMjQwMyw3IEBACiBEYW5pZWwgU3RlbmJlcmcgaXMgdGhlIG1haW4gYXV0aG9yLCBidXQgdGhlIHdob2xlIGxpc3Qgb2YgY29udHJpYnV0b3JzIGlzCiBmb3VuZCBpbiB0aGUgc2VwYXJhdGUgVEhBTktTIGZpbGUuCiAuU0ggV1dXCi1odHRwOi8vY3VybC5oYXh4LnNlCitodHRwczovL2N1cmwuaGF4eC5zZQogLlNIIEZUUAogZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy8uZ2l0aWdub3JlIGIvZG9jcy9leGFtcGxlcy8uZ2l0aWdub3JlCmluZGV4IGQ2NGUxMmQuLmFlY2U2NzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvLmdpdGlnbm9yZQorKysgYi9kb2NzL2V4YW1wbGVzLy5naXRpZ25vcmUKQEAgLTczLDMgKzczLDcgQEAKIHVybDJmaWxlCiB1c2VyY2VydGlubWVtCiB4bWxzdHJlYW0KK2h0dHAyLWRvd25sb2FkCitodHRwMi1zZXJ2ZXJwdXNoCitodHRwMi11cGxvYWQKK2ltYXAtbHN1YgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy8xMC1hdC1hLXRpbWUuYyBiL2RvY3MvZXhhbXBsZXMvMTAtYXQtYS10aW1lLmMKaW5kZXggNWQ5NWE4YS4uYWExODYyZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy8xMC1hdC1hLXRpbWUuYworKysgYi9kb2NzL2V4YW1wbGVzLzEwLWF0LWEtdGltZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOSArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZSB0byBkb3dubG9hZCBtYW55Ci0gKiBmaWxlcywgYnV0IHdpdGggYSBjYXBwZWQgbWF4aW11bSBhbW91bnQgb2Ygc2ltdWx0YW5lb3VzIHRyYW5zZmVycy4KLSAqCisvKiA8REVTQz4KKyAqIFNvdXJjZSBjb2RlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZG93bmxvYWQgbWFueQorICogZmlsZXMsIHdpdGggYSBjYXBwZWQgbWF4aW11bSBhbW91bnQgb2Ygc2ltdWx0YW5lb3VzIHRyYW5zZmVycy4KKyAqIDwvREVTQz4KICAqIFdyaXR0ZW4gYnkgTWljaGFlbCBXYWxsbmVyCiAgKi8KIApAQCAtMTI2LDQxICsxMjcsNDIgQEAKICAgICAgdXNlcyAqLwogICBjdXJsX211bHRpX3NldG9wdChjbSwgQ1VSTE1PUFRfTUFYQ09OTkVDVFMsIChsb25nKU1BWCk7CiAKLSAgZm9yIChDID0gMDsgQyA8IE1BWDsgKytDKSB7CisgIGZvcihDID0gMDsgQyA8IE1BWDsgKytDKSB7CiAgICAgaW5pdChjbSwgQyk7CiAgIH0KIAotICB3aGlsZSAoVSkgeworICB3aGlsZShVKSB7CiAgICAgY3VybF9tdWx0aV9wZXJmb3JtKGNtLCAmVSk7CiAKLSAgICBpZiAoVSkgeworICAgIGlmKFUpIHsKICAgICAgIEZEX1pFUk8oJlIpOwogICAgICAgRkRfWkVSTygmVyk7CiAgICAgICBGRF9aRVJPKCZFKTsKIAotICAgICAgaWYgKGN1cmxfbXVsdGlfZmRzZXQoY20sICZSLCAmVywgJkUsICZNKSkgeworICAgICAgaWYoY3VybF9tdWx0aV9mZHNldChjbSwgJlIsICZXLCAmRSwgJk0pKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRTogY3VybF9tdWx0aV9mZHNldFxuIik7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICB9CiAKLSAgICAgIGlmIChjdXJsX211bHRpX3RpbWVvdXQoY20sICZMKSkgeworICAgICAgaWYoY3VybF9tdWx0aV90aW1lb3V0KGNtLCAmTCkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFOiBjdXJsX211bHRpX3RpbWVvdXRcbiIpOwogICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgfQotICAgICAgaWYgKEwgPT0gLTEpCisgICAgICBpZihMID09IC0xKQogICAgICAgICBMID0gMTAwOwogCi0gICAgICBpZiAoTSA9PSAtMSkgeworICAgICAgaWYoTSA9PSAtMSkgewogI2lmZGVmIFdJTjMyCiAgICAgICAgIFNsZWVwKEwpOwogI2Vsc2UKLSAgICAgICAgc2xlZXAoTCAvIDEwMDApOworICAgICAgICBzbGVlcCgodW5zaWduZWQgaW50KUwgLyAxMDAwKTsKICNlbmRpZgotICAgICAgfSBlbHNlIHsKKyAgICAgIH0KKyAgICAgIGVsc2UgewogICAgICAgICBULnR2X3NlYyA9IEwvMTAwMDsKICAgICAgICAgVC50dl91c2VjID0gKEwlMTAwMCkqMTAwMDsKIAotICAgICAgICBpZiAoMCA+IHNlbGVjdChNKzEsICZSLCAmVywgJkUsICZUKSkgeworICAgICAgICBpZigwID4gc2VsZWN0KE0rMSwgJlIsICZXLCAmRSwgJlQpKSB7CiAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFOiBzZWxlY3QoJWksLCwsJWxpKTogJWk6ICVzXG4iLAogICAgICAgICAgICAgICBNKzEsIEwsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CkBAIC0xNjgsOCArMTcwLDggQEAKICAgICAgIH0KICAgICB9CiAKLSAgICB3aGlsZSAoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGNtLCAmUSkpKSB7Ci0gICAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgICAgd2hpbGUoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGNtLCAmUSkpKSB7CisgICAgICBpZihtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKICAgICAgICAgY2hhciAqdXJsOwogICAgICAgICBDVVJMICplID0gbXNnLT5lYXN5X2hhbmRsZTsKICAgICAgICAgY3VybF9lYXN5X2dldGluZm8obXNnLT5lYXN5X2hhbmRsZSwgQ1VSTElORk9fUFJJVkFURSwgJnVybCk7CkBAIC0xODEsNyArMTgzLDcgQEAKICAgICAgIGVsc2UgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkU6IENVUkxNc2cgKCVkKVxuIiwgbXNnLT5tc2cpOwogICAgICAgfQotICAgICAgaWYgKEMgPCBDTlQpIHsKKyAgICAgIGlmKEMgPCBDTlQpIHsKICAgICAgICAgaW5pdChjbSwgQysrKTsKICAgICAgICAgVSsrOyAvKiBqdXN0IHRvIHByZXZlbnQgaXQgZnJvbSByZW1haW5pbmcgYXQgMCBpZiB0aGVyZSBhcmUgbW9yZQogICAgICAgICAgICAgICAgIFVSTHMgdG8gZ2V0ICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5hbQppbmRleCA4ZTJiYzlhLi43YTU2ZjM0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmFtCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYxLDMgKzYxLDYgQEAKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKIGFsbDogJChjaGVja19QUk9HUkFNUykKKworY2hlY2tzcmM6CisJQFBFUkxAICQodG9wX3NyY2RpcikvbGliL2NoZWNrc3JjLnBsICQoc3JjZGlyKS8qLmMKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZSBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZQppbmRleCBkZmQxMTc4Li4xN2U2MTRlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmV4YW1wbGUKKysrIGIvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5leGFtcGxlCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmluYyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCmluZGV4IDRiMGMyOGYuLjhjZTZmNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw3ICszMiw3IEBACiAgIGltYXAtbGlzdCBpbWFwLWxzdWIgaW1hcC1mZXRjaCBpbWFwLXN0b3JlIGltYXAtYXBwZW5kIGltYXAtZXhhbWluZSAgICAgICBcCiAgIGltYXAtc2VhcmNoIGltYXAtY3JlYXRlIGltYXAtZGVsZXRlIGltYXAtY29weSBpbWFwLW5vb3AgaW1hcC1zc2wgICAgICAgICBcCiAgIGltYXAtdGxzIGltYXAtbXVsdGkgdXJsMmZpbGUgc2Z0cGdldCBmdHBzZ2V0IHBvc3Rpbm1lbW9yeSBodHRwMi1kb3dubG9hZCBcCi0gIGh0dHAyLXVwbG9hZAorICBodHRwMi11cGxvYWQgaHR0cDItc2VydmVycHVzaCBnZXRyZWRpcmVjdAogCiAjIFRoZXNlIGV4YW1wbGVzIHJlcXVpcmUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWF5IG5vdCBiZSBjb21tb25seQogIyBhdmFpbGFibGUgb24gUE9TSVggc3lzdGVtcywgc28gZG9uJ3QgYm90aGVyIGF0dGVtcHRpbmcgdG8gY29tcGlsZSB0aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm0zMiBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCmluZGV4IDJkYTUyOTQuLmU3NWI2ZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCw3ICs1MCw3IEBACiBlbmRpZgogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGliaWRuIHBhY2thZ2UuCiBpZm5kZWYgTElCSUROX1BBVEgKLUxJQklETl9QQVRIID0gLi4vLi4vLi4vbGliaWRuLTEuMzAKK0xJQklETl9QQVRIID0gLi4vLi4vLi4vbGliaWRuLTEuMzIKIGVuZGlmCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBNUyBJRE4gcGFja2FnZS4KICMgTWljcm9zb2Z0IEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSBNaXRpZ2F0aW9uIEFQSXMgMS4xCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm5ldHdhcmUgYi9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm5ldHdhcmUKaW5kZXggZjhlOTk1NS4uMmQ4NWU3MyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5uZXR3YXJlCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubmV0d2FyZQpAQCAtMzQsNyArMzQsNyBAQAogCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBsaWJpZG4gcGFja2FnZS4KIGlmbmRlZiBMSUJJRE5fUEFUSAotTElCSUROX1BBVEggPSAuLi8uLi8uLi9saWJpZG4tMS4zMAorTElCSUROX1BBVEggPSAuLi8uLi8uLi9saWJpZG4tMS4zMgogZW5kaWYKIAogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGlicnRtcCBwYWNrYWdlLgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9SRUFETUUgYi9kb2NzL2V4YW1wbGVzL1JFQURNRQppbmRleCAxY2E2MmExLi4wNzhjYWJlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL1JFQURNRQorKysgYi9kb2NzL2V4YW1wbGVzL1JFQURNRQpAQCAtMzIsNTEgKzMyLDcgQEAKIAogRVhBTVBMRVMKIAotYW55YXV0aHB1dC5jICAgLSBIVFRQIFBVVCB1c2luZyAiYW55IiBhdXRoZW50aWNhdGlvbiBtZXRob2QKLWNhY2VydGlubWVtLmMgIC0gVXNlIGEgYnVpbHQtaW4gUEVNIGNlcnRpZmljYXRlIHRvIHJldHJpZXZlIGEgaHR0cHMgcGFnZQotY29va2llX2ludGVyZmFjZS5jIC0gc2hvd3MgdXNhZ2Ugb2Ygc2ltcGxlIGNvb2tpZSBpbnRlcmZhY2UKLWN1cmxndGsuYyAgICAgIC0gZG93bmxvYWQgdXNpbmcgYSBHVEsgcHJvZ3Jlc3MgYmFyCi1jdXJseC5jICAgICAgICAtIGdldHRpbmcgZmlsZSBpbmZvIGZyb20gdGhlIHJlbW90ZSBjZXJ0IGRhdGEKLWRlYnVnLmMgICAgICAgIC0gc2hvd2luZyBob3cgdG8gdXNlIHRoZSBkZWJ1ZyBjYWxsYmFjawotZmlsZXVwbG9hZC5jICAgLSB1cGxvYWRpbmcgdG8gYSBmaWxlOi8vIFVSTAotZm9wZW4uYyAgICAgICAgLSBmb3BlbigpIGxheWVyIHRoYXQgc3VwcG9ydHMgb3BlbmluZyBVUkxzIGFuZCBmaWxlcwotZnRwZ2V0LmMgICAgICAgLSBzaW1wbGUgZ2V0dGluZyBhIGZpbGUgZnJvbSBGVFAKLWZ0cGdldHJlc3AuYyAgIC0gZ2V0IHRoZSByZXNwb25zZSBzdHJpbmdzIGZyb20gdGhlIEZUUCBzZXJ2ZXIKLWZ0cHVwbG9hZC5jICAgIC0gdXBsb2FkIGEgZmlsZSB0byBhbiBGVFAgc2VydmVyCi1mdHB1cGxvYWRyZXN1bWUuYyAtIHJlc3VtZSBhbiB1cGxvYWQgdG8gYW4gRlRQIHNlcnZlcgotZ2V0aW5mby5jICAgICAgLSBnZXQgdGhlIENvbnRlbnQtVHlwZSBmcm9tIHRoZSByZWNlbnQgdHJhbnNmZXIKLWdldGlubWVtb3J5LmMgIC0gZG93bmxvYWQgYSBmaWxlIHRvIG1lbW9yeSBvbmx5Ci1naGlwZXIuYyAgICAgICAtIGN1cmxfbXVsdGlfc29ja2V0KCkgdXNpbmcgY29kZSB3aXRoIGdsaWItMgotaGlwZXJmaWZvLmMgICAgLSBkb3dubG9hZHMgYWxsIFVSTHMgd3JpdHRlbiB0byB0aGUgZmlmbywgdXNpbmcKLSAgICAgICAgICAgICAgICAgY3VybF9tdWx0aV9zb2NrZXQoKSBhbmQgbGliZXZlbnQKLWh0bWx0aWR5LmMgICAgIC0gZG93bmxvYWQgYSBkb2N1bWVudCBhbmQgdXNlIGxpYnRpZHkgdG8gcGFyc2UgdGhlIEhUTUwKLWh0bWx0aXRsZS5jYyAgIC0gZG93bmxvYWQgYSBIVE1MIGZpbGUgYW5kIGV4dHJhY3QgdGhlIDx0aXRsZT4gdGFnIGZyb20gYSBIVE1MCi0gICAgICAgICAgICAgICAgIHBhZ2UgdXNpbmcgbGlieG1sCi1odHRwLXBvc3QuYyAgICAtIEhUVFAgUE9TVAotaHR0cHB1dC5jICAgICAgLSBIVFRQIFBVVCBhIGxvY2FsIGZpbGUKLWh0dHBzLmMgICAgICAgIC0gc2ltcGxlIEhUVFBTIHRyYW5zZmVyCi1pbWFwLmMgICAgICAgICAtIHNpbXBsZSBJTUFQIHRyYW5zZmVyCi1tdWx0aS1hcHAuYyAgICAtIGEgbXVsdGktaW50ZXJmYWNlIGFwcAotbXVsdGktZGVidWdjYWxsYmFjay5jIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIHVzaW5nIHRoZSBkZWJ1ZyBjYWxsYmFjawotbXVsdGktZG91YmxlLmMgLSBhIG11bHRpLWludGVyZmFjZSBhcHAgZG9pbmcgdHdvIHNpbXVsdGFuZW91cyB0cmFuc2ZlcnMKLW11bHRpLXBvc3QuYyAgIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIGRvaW5nIGEgbXVsdGlwYXJ0IGZvcm1wb3N0Ci1tdWx0aS1zaW5nbGUuYyAtIGEgbXVsdGktaW50ZXJmYWNlIGFwcCBnZXR0aW5nIGEgc2luZ2xlIGZpbGUKLW11bHRpLXV2LmMgICAgIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIHVzaW5nIGxpYnV2Ci1tdWx0aXRocmVhZC5jICAtIGFuIGV4YW1wbGUgdXNpbmcgbXVsdGktdHJlYWRpbmcgdHJhbnNmZXJyaW5nIG11bHRpcGxlIGZpbGVzCi1vcGVuc3NsdGhyZWFkbG9jay5jIC0gc2hvdyBob3cgdG8gZG8gbG9ja2luZyB3aGVuIHVzaW5nIE9wZW5TU0wgbXVsdGktdGhyZWFkZWQKLXBlcnNpc3RhbnQuYyAgIC0gcmVxdWVzdCB0d28gVVJMcyB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uCi1wb3Azcy5jICAgICAgICAtIFBPUDNTIHRyYW5zZmVyCi1wb3Azc2xpc3QuYyAgICAtIFBPUDNTIExJU1QKLXBvc3QtY2FsbGJhY2suYyAtIHNlbmQgYSBIVFRQIFBPU1QgdXNpbmcgYSBjYWxsYmFjawotcG9zdGl0Mi5jICAgICAgLSBzZW5kIGEgSFRUUCBtdWx0aXBhcnQgZm9ybXBvc3QKLXNhbXBsZWNvbnYuYyAgIC0gc2hvd2luZyBob3cgYSBwcm9ncmFtIG9uIGEgbm9uLUFTQ0lJIHBsYXRmb3JtIHdvdWxkIGludm9rZQotICAgICAgICAgICAgICAgICBjYWxsYmFja3MgdG8gZG8gaXRzIG93biBjb2Rlc2V0IGNvbnZlcnNpb25zIGluc3RlYWQgb2YgdXNpbmcKLSAgICAgICAgICAgICAgICAgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsCi1zZXBoZWFkZXJzLmMgICAtIGRvd25sb2FkIGhlYWRlcnMgdG8gYSBzZXBhcmF0ZSBmaWxlCi1zaW1wbGUuYyAgICAgICAtIHRoZSBtb3N0IHNpbXBsZSBkb3dubG9hZCBhIFVSTCBzb3VyY2UKLXNpbXBsZXBvc3QuYyAgIC0gSFRUUCBQT1NUCi1zaW1wbGVzc2wuYyAgICAtIEhUVFBTIGV4YW1wbGUgd2l0aCBjZXJ0aWZpY2F0ZXMgbWFueSBvcHRpb25zIHNldAotc3luY3RpbWUuYyAgICAgLSBTeW5jIGxvY2FsIHRpbWUgYnkgZXh0cmFjdGluZyBkYXRlIGZyb20gcmVtb3RlIEhUVFAgc2VydmVycwotdXJsMmZpbGUuYyAgICAgLSBkb3dubG9hZCBhIGRvY3VtZW50IGFuZCBzdG9yZSBpdCBpbiBhIGZpbGUKLXhtbHN0cmVhbS5jICAgIC0gU3RyZWFtLXBhcnNlIGEgZG9jdW1lbnQgdXNpbmcgdGhlIHN0cmVhbWluZyBFeHBhdCBwYXJzZXIKLTEwLWF0LWEtdGltZS5jIC0gRG93bmxvYWQgbWFueSBmaWxlcyBzaW11bHRhbmVvdXNseSwgMTAgYXQgYSB0aW1lLgorRWFjaCBleGFtcGxlIHNvdXJjZSBjb2RlIGZpbGUgaXMgZGVzaWduZWQgdG8gYmUgYW5kIHdvcmsgc3RhbmQtYWxvbmUgYW5kCityYXRoZXIgc2VsZi1leHBsYW5hdG9yeS4gVGhlIGV4YW1wbGVzIG1heSBhdCB0aW1lcyBsYWNrIHRoZSBsZXZlbCBvZiBlcnJvcgorY2hlY2tzIHlvdSBuZWVkIGluIGEgcmVhbCB3b3JsZCwgYnV0IHRoYXQgaXMgdGhlbiBvbmx5IGZvciB0aGUgc2FrZSBvZgorcmVhZGFiaWxpdHk6IHRvIG1ha2UgdGhlIGNvZGUgc21hbGxlciBhbmQgZWFzaWVyIHRvIGZvbGxvdy4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvYWRkZG9jc3JlZi5wbCBiL2RvY3MvZXhhbXBsZXMvYWRkZG9jc3JlZi5wbAppbmRleCAyZGNjMjRiLi5lZmViZmUyIDEwMDc1NQotLS0gYS9kb2NzL2V4YW1wbGVzL2FkZGRvY3NyZWYucGwKKysrIGIvZG9jcy9leGFtcGxlcy9hZGRkb2NzcmVmLnBsCkBAIC0yLDcgKzIsNyBAQAogCiAjIHBhc3MgZmlsZXMgYXMgYXJndW1lbnQocykKIAotbXkgJGRvY3Jvb3Q9Imh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jIjsKK215ICRkb2Nyb290PSJodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MiOwogCiBmb3IgJGYgKEBBUkdWKSB7CiAgICAgb3BlbihORVcsICI+JGYubmV3Iik7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2FueWF1dGhwdXQuYyBiL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCmluZGV4IGI4OWRjYTIuLmIxMzY3ZGUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTEgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogSFRUUCBQVVQgdXBsb2FkIHdpdGggYXV0aGVudGljdGlvbiB1c2luZyAiYW55IiBtZXRob2QuIGxpYmN1cmwgcGlja3MgdGhlCisgKiBvbmUgdGhlIHNlcnZlciBzdXBwb3J0cy93YW50cy4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpZmRlZiBXSU4zMgpAQCAtNzMsNyArNzgsOCBAQAogLyogaW9jdGwgY2FsbGJhY2sgZnVuY3Rpb24gKi8KIHN0YXRpYyBjdXJsaW9lcnIgbXlfaW9jdGwoQ1VSTCAqaGFuZGxlLCBjdXJsaW9jbWQgY21kLCB2b2lkICp1c2VycCkKIHsKLSAgaW50cHRyX3QgZmQgPSAoaW50cHRyX3QpdXNlcnA7CisgIGludCAqZmRwID0gKGludCAqKXVzZXJwOworICBpbnQgZmQgPSAqZmRwOwogCiAgICh2b2lkKWhhbmRsZTsgLyogbm90IHVzZWQgaW4gaGVyZSAqLwogCkBAIC05NSwxMCArMTAxLDExIEBACiAvKiByZWFkIGNhbGxiYWNrIGZ1bmN0aW9uLCBmcmVhZCgpIGxvb2sgYWxpa2UgKi8KIHN0YXRpYyBzaXplX3QgcmVhZF9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgc2l6ZV90IHJldGNvZGU7CisgIHNzaXplX3QgcmV0Y29kZTsKICAgY3VybF9vZmZfdCBucmVhZDsKIAotICBpbnRwdHJfdCBmZCA9IChpbnRwdHJfdClzdHJlYW07CisgIGludCAqZmRwID0gKGludCAqKXN0cmVhbTsKKyAgaW50IGZkID0gKmZkcDsKIAogICByZXRjb2RlID0gcmVhZChmZCwgcHRyLCBzaXplICogbm1lbWIpOwogCkBAIC0xMTQsNyArMTIxLDcgQEAKIHsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwotICBpbnRwdHJfdCBoZCA7CisgIGludCBoZDsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogCiAgIGNoYXIgKmZpbGU7CkBAIC0xMjcsNyArMTM0LDcgQEAKICAgdXJsID0gYXJndlsyXTsKIAogICAvKiBnZXQgdGhlIGZpbGUgc2l6ZSBvZiB0aGUgbG9jYWwgZmlsZSAqLwotICBoZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpIDsKKyAgaGQgPSBvcGVuKGZpbGUsIE9fUkRPTkxZKTsKICAgZnN0YXQoaGQsICZmaWxlX2luZm8pOwogCiAgIC8qIEluIHdpbmRvd3MsIHRoaXMgd2lsbCBpbml0IHRoZSB3aW5zb2NrIHN0dWZmICovCkBAIC0xNDAsMjAgKzE0NywyMCBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIHJlYWRfY2FsbGJhY2spOwogCiAgICAgLyogd2hpY2ggZmlsZSB0byB1cGxvYWQgKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsICh2b2lkKiloZCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQUREQVRBLCAodm9pZCopJmhkKTsKIAogICAgIC8qIHNldCB0aGUgaW9jdGwgZnVuY3Rpb24gKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExGVU5DVElPTiwgbXlfaW9jdGwpOwogCiAgICAgLyogcGFzcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIHRoZSBpb2N0bCBjYWxsYmFjayBhcyB3ZWxsICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0lPQ1RMREFUQSwgKHZvaWQqKWhkKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExEQVRBLCAodm9pZCopJmhkKTsKIAogICAgIC8qIGVuYWJsZSAidXBsb2FkaW5nIiAod2hpY2ggbWVhbnMgUFVUIHdoZW4gZG9pbmcgSFRUUCkgKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCkgOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKIAogICAgIC8qIHNwZWNpZnkgdGFyZ2V0IFVSTCwgYW5kIG5vdGUgdGhhdCB0aGlzIFVSTCBzaG91bGQgYWxzbyBpbmNsdWRlIGEgZmlsZQogICAgICAgIG5hbWUsIG5vdCBvbmx5IGEgZGlyZWN0b3J5IChhcyB5b3UgY2FuIGRvIHdpdGggR1RQIHVwbG9hZHMpICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfVVJMLCB1cmwpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHVybCk7CiAKICAgICAvKiBhbmQgZ2l2ZSB0aGUgc2l6ZSBvZiB0aGUgdXBsb2FkLCB0aGlzIHN1cHBvcnRzIGxhcmdlIGZpbGUgc2l6ZXMKICAgICAgICBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSBnZW5lcmFsIHN1cHBvcnQgZm9yIGl0ICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2FzaW9oaXBlci5jcHAgYi9kb2NzL2V4YW1wbGVzL2FzaW9oaXBlci5jcHAKaW5kZXggZWI1Y2QwMy4uZDYwNjVlNSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9hc2lvaGlwZXIuY3BwCisrKyBiL2RvY3MvZXhhbXBsZXMvYXNpb2hpcGVyLmNwcApAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDExICsyMCwxMSBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogZGVtb25zdHJhdGUgdGhlIHVzZSBvZiBtdWx0aSBzb2NrZXQgaW50ZXJmYWNlIHdpdGggYm9vc3Q6OmFzaW8KKyAqIDwvREVTQz4KKyAqLwogLyoKLSAqIGZpbGU6IGFzaW9oaXBlci5jcHAKLSAqIEV4YW1wbGUgcHJvZ3JhbSB0byBkZW1vbnN0cmF0ZSB0aGUgdXNlIG9mIG11bHRpIHNvY2tldCBpbnRlcmZhY2UKLSAqIHdpdGggYm9vc3Q6OmFzaW8KLSAqCiAgKiBUaGlzIHByb2dyYW0gaXMgaW4gYysrIGFuZCB1c2VzIGJvb3N0Ojphc2lvIGluc3RlYWQgb2YgbGliZXZlbnQvbGliZXYuCiAgKiBSZXF1aXJlcyBib29zdDo6YXNpbywgYm9vc3Q6OmJpbmQgYW5kIGJvb3N0OjpzeXN0ZW0KICAqCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CiAjaW5jbHVkZSA8Ym9vc3QvYmluZC5ocHA+CisjaW5jbHVkZSA8aW9zdHJlYW0+CiAKICNkZWZpbmUgTVNHX09VVCBzdGRvdXQgLyogU2VuZCBpbmZvIHRvIHN0ZG91dCwgY2hhbmdlIHRvIHN0ZGVyciBpZiB5b3Ugd2FudCAqLwogCkBAIC0zNzgsOSArMzc5LDkgQEAKIH0KIAogLyogQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OICovCi1zdGF0aWMgaW50IGNsb3Nlc29ja2V0KHZvaWQgKmNsaWVudHAsIGN1cmxfc29ja2V0X3QgaXRlbSkKK3N0YXRpYyBpbnQgY2xvc2Vfc29ja2V0KHZvaWQgKmNsaWVudHAsIGN1cmxfc29ja2V0X3QgaXRlbSkKIHsKLSAgZnByaW50ZihNU0dfT1VULCAiXG5jbG9zZXNvY2tldCA6ICVkIiwgaXRlbSk7CisgIGZwcmludGYoTVNHX09VVCwgIlxuY2xvc2Vfc29ja2V0IDogJWQiLCBpdGVtKTsKIAogICBzdGQ6Om1hcDxjdXJsX3NvY2tldF90LCBib29zdDo6YXNpbzo6aXA6OnRjcDo6c29ja2V0ICo+OjppdGVyYXRvciBpdCA9IHNvY2tldF9tYXAuZmluZChpdGVtKTsKIApAQCAtNDI3LDcgKzQyOCw3IEBACiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04sIG9wZW5zb2NrZXQpOwogCiAgIC8qIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBjbG9zZSBhIHNvY2tldCAqLwotICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTiwgY2xvc2Vzb2NrZXQpOworICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTiwgY2xvc2Vfc29ja2V0KTsKIAogICBmcHJpbnRmKE1TR19PVVQsCiAgICAgICAgICAgIlxuQWRkaW5nIGVhc3kgJXAgdG8gbXVsdGkgJXAgKCVzKSIsIGNvbm4tPmVhc3ksIGctPm11bHRpLCB1cmwpOwpAQCAtNDQxLDcgKzQ0Miw2IEBACiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgIEdsb2JhbEluZm8gZzsKLSAgQ1VSTE1jb2RlIHJjOwogCiAgICh2b2lkKWFyZ2M7CiAgICh2b2lkKWFyZ3Y7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2NhY2VydGlubWVtLmMgYi9kb2NzL2V4YW1wbGVzL2NhY2VydGlubWVtLmMKaW5kZXggMzBhNTE1My4uYmJhOGM3MiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9jYWNlcnRpbm1lbS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY2FjZXJ0aW5tZW0uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDI1ICsxOSwxOSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogRXhhbXBsZSB1c2luZyBhICJpbiBjb3JlIiBQRU0gY2VydGlmaWNhdGUgdG8gcmV0cmlldmUgYSBodHRwcyBwYWdlLgotICogV3JpdHRlbiBieSBUaGVvIEJvcm0KKy8qIDxERVNDPgorICogQ0EgY2VydCBpbiBtZW1vcnkgd2l0aCBPcGVuU1NMIHRvIGdldCBhIEhUVFBTIHBhZ2UuCisgKiA8L0RFU0M+CiAgKi8KIAotLyogb24gYSBuZXRCU0Qgc3lzdGVtIHdpdGggT1BFTlNTTCYgTElCQ1VSTCBpbnN0YWxsZWQgZnJvbQotICogcGtnc3JjICh1c2luZyBkZWZhdWx0IHBhdGhzKSB0aGlzIHByb2dyYW0gY2FuIGJlIGNvbXBpbGVkIHVzaW5nOgotICogZ2NjIC1JL3Vzci9wa2cvaW5jbHVkZSAtTC91c3IvcGtnL2xpYiAtbGN1cmwgLVdsLC1SL3Vzci9wa2cvbGliIC1sc3NsCi0gKiAtbGNyeXB0byAtbHogLW8gY3VybGNhY2VydHRlc3QgY3VybGNhY2VydHRlc3QuYwotICogb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgeW91IG1heSB3YW50IHRvIGNoYW5nZSBwYXRocyB0byBoZWFkZXJzCi0gKiBhbmQgbGlicmFyaWVzCi0qLwogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotc2l6ZV90IHdyaXRlZnVuY3Rpb24oIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqc3RyZWFtKQorc2l6ZV90IHdyaXRlZnVuY3Rpb24odm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCiB7Ci0gIGZ3cml0ZShwdHIsc2l6ZSxubWVtYixzdHJlYW0pOwotICByZXR1cm4obm1lbWIqc2l6ZSk7CisgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICByZXR1cm4gKG5tZW1iKnNpemUpOwogfQogCiBzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4X2Z1bmN0aW9uKENVUkwgKiBjdXJsLCB2b2lkICogc3NsY3R4LCB2b2lkICogcGFybSkKQEAgLTkzLDE0ICs4NywxNCBAQAogICAgKiBzdHJ1Y3R1cmUgdGhhdCBTU0wgY2FuIHVzZQogICAgKi8KICAgUEVNX3JlYWRfYmlvX1g1MDkoYmlvLCAmY2VydCwgMCwgTlVMTCk7Ci0gIGlmIChjZXJ0ID09IE5VTEwpCisgIGlmKGNlcnQgPT0gTlVMTCkKICAgICBwcmludGYoIlBFTV9yZWFkX2Jpb19YNTA5IGZhaWxlZC4uLlxuIik7CiAKICAgLyogZ2V0IGEgcG9pbnRlciB0byB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBzdG9yZSAod2hpY2ggbWF5IGJlIGVtcHR5ISkgKi8KICAgc3RvcmU9U1NMX0NUWF9nZXRfY2VydF9zdG9yZSgoU1NMX0NUWCAqKXNzbGN0eCk7CiAKICAgLyogYWRkIG91ciBjZXJ0aWZpY2F0ZSB0byB0aGlzIHN0b3JlICovCi0gIGlmIChYNTA5X1NUT1JFX2FkZF9jZXJ0KHN0b3JlLCBjZXJ0KT09MCkKKyAgaWYoWDUwOV9TVE9SRV9hZGRfY2VydChzdG9yZSwgY2VydCk9PTApCiAgICAgcHJpbnRmKCJlcnJvciBhZGRpbmcgY2VydGlmaWNhdGVcbiIpOwogCiAgIC8qIGRlY3JlYXNlIHJlZmVyZW5jZSBjb3VudHMgKi8KQEAgLTEwOCw3ICsxMDIsNyBAQAogICBCSU9fZnJlZShiaW8pOwogCiAgIC8qIGFsbCBzZXQgdG8gZ28gKi8KLSAgcmV0dXJuIENVUkxFX09LIDsKKyAgcmV0dXJuIENVUkxFX09LOwogfQogCiBpbnQgbWFpbih2b2lkKQpAQCAtMTE4LDIyICsxMTIsMjIgQEAKIAogICBydj1jdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCk7CiAgIGNoPWN1cmxfZWFzeV9pbml0KCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9WRVJCT1NFLCAwTCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVIsIDBMKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PUFJPR1JFU1MsIDFMKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PU0lHTkFMLCAxTCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9XUklURUZVTkNUSU9OLCAqd3JpdGVmdW5jdGlvbik7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9XUklURURBVEEsIHN0ZG91dCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOwotICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLENVUkxPUFRfSEVBREVSREFUQSwgc3RkZXJyKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTENFUlRUWVBFLCJQRU0iKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllQRUVSLDFMKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfSEVBREVSLCAwTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfTk9QUk9HUkVTUywgMUwpOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PU0lHTkFMLCAxTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkRBVEEsIHN0ZGVycik7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOwogICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOwogCiAgIC8qIGZpcnN0IHRyeTogcmV0cmlldmUgcGFnZSB3aXRob3V0IGNhY2VydHMnIGNlcnRpZmljYXRlIC0+IHdpbGwgZmFpbAogICAgKi8KICAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKQorICBpZihydj09Q1VSTEVfT0spCiAgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CiAgIGVsc2UKICAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKQEAgLTE0Miw5ICsxMzYsOSBAQAogICAgKiBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBieSBpbnN0YWxsaW5nIGEgZnVuY3Rpb24gZG9pbmcgdGhlIG5lc2Nlc3NhcnkKICAgICogIm1vZGlmaWNhdGlvbnMiIHRvIHRoZSBTU0wgQ09OVEVYVCBqdXN0IGJlZm9yZSBsaW5rIGluaXQKICAgICovCi0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKICAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKQorICBpZihydj09Q1VSTEVfT0spCiAgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CiAgIGVsc2UKICAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvY2VydGluZm8uYyBiL2RvY3MvZXhhbXBsZXMvY2VydGluZm8uYwppbmRleCBhYzAxMDliLi5kZTJlMzEwIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2NlcnRpbmZvLmMKKysrIGIvZG9jcy9leGFtcGxlcy9jZXJ0aW5mby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogRXh0cmFjdCBsb3RzIG9mIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvLgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9jaGtzcGVlZC5jIGIvZG9jcy9leGFtcGxlcy9jaGtzcGVlZC5jCmluZGV4IDMxOTQ5YjguLmRlMjA1NjcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvY2hrc3BlZWQuYworKysgYi9kb2NzL2V4YW1wbGVzL2Noa3NwZWVkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IHRyYW5zZmVyIHRpbWluZyBpbmZvIGFmdGVyIGRvd25sb2FkIGNvbXBsZXRlcy4KKyAqIDwvREVTQz4KKyAqLwogLyogRXhhbXBsZSBzb3VyY2UgY29kZSB0byBzaG93IGhvdyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8KICAqIGRvd25sb2FkIGRhdGEgaW50byBhIGNodW5rIG9mIG1lbW9yeSBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBmaWxlLgogICogQWZ0ZXIgc3VjY2Vzc2Z1bCBkb3dubG9hZCB3ZSB1c2UgY3VybF9lYXN5X2dldGluZm8oKSBjYWxscyB0byBnZXQgdGhlCkBAIC02NCw2MyArNjgsNzggQEAKICAgY29uc3QgY2hhciAqdXJsID0gVVJMXzFNOwogICBjaGFyICphcHBuYW1lID0gYXJndlswXTsKIAotICBpZiAoYXJnYyA+IDEpIHsKKyAgaWYoYXJnYyA+IDEpIHsKICAgICAvKiBwYXJzZSBpbnB1dCBwYXJhbWV0ZXJzICovCi0gICAgZm9yIChhcmdjLS0sIGFyZ3YrKzsgKmFyZ3Y7IGFyZ2MtLSwgYXJndisrKSB7Ci0gICAgICBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItIiwgMSkgPT0gMCkgewotICAgICAgICBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItSCIsIDIpID09IDApIHsKKyAgICBmb3IoYXJnYy0tLCBhcmd2Kys7ICphcmd2OyBhcmdjLS0sIGFyZ3YrKykgeworICAgICAgaWYoc3RybmNhc2VjbXAoKmFyZ3YsICItIiwgMSkgPT0gMCkgeworICAgICAgICBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1IIiwgMikgPT0gMCkgewogICAgICAgICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgIlxyVXNhZ2U6ICVzIFstbT0xfDJ8NXwxMHwyMHw1MHwxMDBdIFstdF0gWy14XSBbdXJsXVxuIiwKICAgICAgICAgICAgICAgICAgIGFwcG5hbWUpOwogICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItViIsIDIpID09IDApIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY21wKCphcmd2LCAiLVYiLCAyKSA9PSAwKSB7CiAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcciVzICVzIC0gJXNcbiIsCiAgICAgICAgICAgICAgICAgICBhcHBuYW1lLCBDSEtTUEVFRF9WRVJTSU9OLCBjdXJsX3ZlcnNpb24oKSk7CiAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJuY2FzZWNtcCgqYXJndiwgIi1BIiwgMikgPT0gMCkgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoc3RybmNhc2VjbXAoKmFyZ3YsICItQSIsIDIpID09IDApIHsKICAgICAgICAgICBwcnRhbGwgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKHN0cm5jYXNlY21wKCphcmd2LCAiLVgiLCAyKSA9PSAwKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1YIiwgMikgPT0gMCkgewogICAgICAgICAgIHBydHNlcCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItVCIsIDIpID09IDApIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY21wKCphcmd2LCAiLVQiLCAyKSA9PSAwKSB7CiAgICAgICAgICAgcHJ0dGltZSA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItTT0iLCAzKSA9PSAwKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1NPSIsIDMpID09IDApIHsKICAgICAgICAgICBsb25nIG0gPSBzdHJ0b2woKCphcmd2KSszLCBOVUxMLCAxMCk7CiAgICAgICAgICAgc3dpdGNoKG0pIHsKLSAgICAgICAgICAgIGNhc2UgICAxOiB1cmwgPSBVUkxfMU07Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICAgMjogdXJsID0gVVJMXzJNOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgIDU6IHVybCA9IFVSTF81TTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIDEwOiB1cmwgPSBVUkxfMTBNOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgMjA6IHVybCA9IFVSTF8yME07Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICA1MDogdXJsID0gVVJMXzUwTTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMTAwOiB1cmwgPSBVUkxfMTAwTTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6ICBmcHJpbnRmKHN0ZGVyciwgIlxyJXM6IGludmFsaWQgcGFyYW1ldGVyICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbmFtZSwgKmFyZ3YgKyAzKTsKLSAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHVybCA9IFVSTF8xTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHVybCA9IFVSTF8yTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIHVybCA9IFVSTF81TTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICB1cmwgPSBVUkxfMTBNOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICAgIHVybCA9IFVSTF8yME07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDUwOgorICAgICAgICAgICAgdXJsID0gVVJMXzUwTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTAwOgorICAgICAgICAgICAgdXJsID0gVVJMXzEwME07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcciVzOiBpbnZhbGlkIHBhcmFtZXRlciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgYXBwbmFtZSwgKmFyZ3YgKyAzKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXHIlczogaW52YWxpZCBvciB1bmtub3duIG9wdGlvbiAlc1xuIiwKICAgICAgICAgICAgICAgICAgIGFwcG5hbWUsICphcmd2KTsKICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9Ci0gICAgICB9IGVsc2UgeworICAgICAgfQorICAgICAgZWxzZSB7CiAgICAgICAgIHVybCA9ICphcmd2OwogICAgICAgfQogICAgIH0KICAgfQogCiAgIC8qIHByaW50IHNlcGFyYXRvciBsaW5lICovCi0gIGlmIChwcnRzZXApIHsKKyAgaWYocHJ0c2VwKSB7CiAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgfQogICAvKiBwcmludCBsb2NhbHRpbWUgKi8KLSAgaWYgKHBydHRpbWUpIHsKKyAgaWYocHJ0dGltZSkgewogICAgIHRpbWVfdCB0ID0gdGltZShOVUxMKTsKICAgICBwcmludGYoIkxvY2FsdGltZTogJXMiLCBjdGltZSgmdCkpOwogICB9CkBAIC0xNjMsNyArMTgyLDcgQEAKICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQogICAgICAgcHJpbnRmKCJBdmVyYWdlIGRvd25sb2FkIHNwZWVkOiAlMC4zZiBrYnl0ZS9zZWMuXG4iLCB2YWwgLyAxMDI0KTsKIAotICAgIGlmIChwcnRhbGwpIHsKKyAgICBpZihwcnRhbGwpIHsKICAgICAgIC8qIGNoZWNrIGZvciBuYW1lIHJlc29sdXRpb24gdGltZSAqLwogICAgICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybF9oYW5kbGUsIENVUkxJTkZPX05BTUVMT09LVVBfVElNRSwgJnZhbCk7CiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQpAQCAtMTc0LDggKzE5Myw4IEBACiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQogICAgICAgICBwcmludGYoIkNvbm5lY3QgdGltZTogJTAuM2Ygc2VjLlxuIiwgdmFsKTsKICAgICB9Ci0KLSAgfSBlbHNlIHsKKyAgfQorICBlbHNlIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdoaWxlIGZldGNoaW5nICclcycgOiAlc1xuIiwKICAgICAgICAgICAgIHVybCwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2Nvb2tpZV9pbnRlcmZhY2UuYyBiL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCmluZGV4IDI4ZWU3ODEuLjA2NGM3YjMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgZXhhbXBsZSBzaG93cyB1c2FnZSBvZiBzaW1wbGUgY29va2llIGludGVyZmFjZS4gKi8KKy8qIDxERVNDPgorICogSW1wb3J0IGFuZCBleHBvcnQgY29va2llcyB3aXRoIENPT0tJRUxJU1QuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0zOSwxNyArNDIsMTggQEAKIAogICBwcmludGYoIkNvb2tpZXMsIGN1cmwga25vd3M6XG4iKTsKICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09PS0lFTElTVCwgJmNvb2tpZXMpOwotICBpZiAocmVzICE9IENVUkxFX09LKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9nZXRpbmZvIGZhaWxlZDogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgaWYocmVzICE9IENVUkxFX09LKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9nZXRpbmZvIGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgICAgZXhpdCgxKTsKICAgfQogICBuYyA9IGNvb2tpZXMsIGkgPSAxOwotICB3aGlsZSAobmMpIHsKKyAgd2hpbGUobmMpIHsKICAgICBwcmludGYoIlslZF06ICVzXG4iLCBpLCBuYy0+ZGF0YSk7CiAgICAgbmMgPSBuYy0+bmV4dDsKICAgICBpKys7CiAgIH0KLSAgaWYgKGkgPT0gMSkgeworICBpZihpID09IDEpIHsKICAgICBwcmludGYoIihub25lKVxuIik7CiAgIH0KICAgY3VybF9zbGlzdF9mcmVlX2FsbChjb29raWVzKTsKQEAgLTYzLDE0ICs2NywxNCBAQAogCiAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKTsKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gIGlmIChjdXJsKSB7CisgIGlmKGN1cmwpIHsKICAgICBjaGFyIG5saW5lWzI1Nl07CiAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVGSUxFLCAiIik7IC8qIGp1c3QgdG8gc3RhcnQgdGhlIGNvb2tpZSBlbmdpbmUgKi8KKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFRklMRSwgIiIpOyAvKiBzdGFydCBjb29raWUgZW5naW5lICovCiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gICAgaWYgKHJlcyAhPSBDVVJMRV9PSykgeworICAgIGlmKHJlcyAhPSBDVVJMRV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIHBlcmZvcm0gZmFpbGVkOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtODksMTAgKzkzLDEzIEBACiAjZW5kaWYKICAgICAvKiBOZXRzY2FwZSBmb3JtYXQgY29va2llICovCiAgICAgc25wcmludGYobmxpbmUsIHNpemVvZihubGluZSksICIlc1x0JXNcdCVzXHQlc1x0JWx1XHQlc1x0JXMiLAotICAgICAgIi5nb29nbGUuY29tIiwgIlRSVUUiLCAiLyIsICJGQUxTRSIsICh1bnNpZ25lZCBsb25nKXRpbWUoTlVMTCkgKyAzMTMzN1VMLCAiUFJFRiIsICJoZWxsbyBnb29nbGUsIGkgbGlrZSB5b3UgdmVyeSBtdWNoISIpOworICAgICAgICAgICAgICIuZ29vZ2xlLmNvbSIsICJUUlVFIiwgIi8iLCAiRkFMU0UiLAorICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRpbWUoTlVMTCkgKyAzMTMzN1VMLAorICAgICAgICAgICAgICJQUkVGIiwgImhlbGxvIGdvb2dsZSwgaSBsaWtlIHlvdSB2ZXJ5IG11Y2ghIik7CiAgICAgcmVzID0gY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsIG5saW5lKTsKLSAgICBpZiAocmVzICE9IENVUkxFX09LKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgY3VybF9lYXN5X3NldG9wdCBmYWlsZWQ6ICVzXG4iLCBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CisgICAgaWYocmVzICE9IENVUkxFX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgY3VybF9lYXN5X3NldG9wdCBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKQEAgLTEwNiwxOCArMTEzLDIxIEBACiAgICAgICAiU2V0LUNvb2tpZTogT0xEX1BSRUY9M2QxNDE0MTRiZjQyMDkzMjE7ICIKICAgICAgICJleHBpcmVzPVN1biwgMTctSmFuLTIwMzggMTk6MTQ6MDcgR01UOyBwYXRoPS87IGRvbWFpbj0uZ29vZ2xlLmNvbSIpOwogICAgIHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCBubGluZSk7Ci0gICAgaWYgKHJlcyAhPSBDVVJMRV9PSykgewotICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9zZXRvcHQgZmFpbGVkOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOworICAgIGlmKHJlcyAhPSBDVVJMRV9PSykgeworICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9zZXRvcHQgZmFpbGVkOiAlc1xuIiwKKyAgICAgICAgICAgICAgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcHJpbnRfY29va2llcyhjdXJsKTsKIAogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwotICAgIGlmIChyZXMgIT0gQ1VSTEVfT0spIHsKKyAgICBpZihyZXMgIT0gQ1VSTEVfT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBwZXJmb3JtIGZhaWxlZDogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KKworICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICB9CiAgIGVsc2UgewogICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBpbml0IGZhaWxlZCFcbiIpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9jdXJsZ3RrLmMgYi9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYwppbmRleCA4Y2I5OTE0Li5jMzEyOWMxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYworKysgYi9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYwpAQCAtNSw5ICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgorICogIENvcHlyaWdodCAoYykgMjAwMCBEYXZpZCBPZGluIChha2EgRGluZGluWCkgZm9yIE1hbmRyYWtlU29mdAogICovCi0vKiBDb3B5cmlnaHQgKGMpIDIwMDAgRGF2aWQgT2RpbiAoYWthIERpbmRpblgpIGZvciBNYW5kcmFrZVNvZnQgKi8KLS8qIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBjdXJsIGxpYnJhcnkgaW4gY29uY2VydCB3aXRoIGEgZ3RrLXRocmVhZGVkIGFwcGxpY2F0aW9uICovCisvKiA8REVTQz4KKyAqIHVzZSB0aGUgbGliY3VybCBpbiBhIGd0ay10aHJlYWRlZCBhcHBsaWNhdGlvbgorICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTQ3LDkgKzUwLDkgQEAKICAgZ2NoYXIgKnVybCA9IHB0cjsKIAogICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYoY3VybCkKLSAgewotICAgIG91dGZpbGUgPSBmb3BlbigidGVzdC5jdXJsIiwgInciKTsKKyAgaWYoY3VybCkgeworICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gInRlc3QuY3VybCI7CisgICAgb3V0ZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKIAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHVybCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0ZmlsZSk7CkBAIC05NCw3ICs5Nyw3IEBACiAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoRnJhbWUyKSwgQmFyKTsKICAgZ3RrX3dpZGdldF9zaG93X2FsbChXaW5kb3cpOwogCi0gIGlmICghZ190aHJlYWRfY3JlYXRlKCZteV90aHJlYWQsIGFyZ3ZbMV0sIEZBTFNFLCBOVUxMKSAhPSAwKQorICBpZighZ190aHJlYWRfY3JlYXRlKCZteV90aHJlYWQsIGFyZ3ZbMV0sIEZBTFNFLCBOVUxMKSAhPSAwKQogICAgIGdfd2FybmluZygiY2FuJ3QgY3JlYXRlIHRoZSB0aHJlYWQiKTsKIAogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2N1cmx4LmMgYi9kb2NzL2V4YW1wbGVzL2N1cmx4LmMKaW5kZXggYzY4Y2YwZC4uMTU1ZGEyMyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9jdXJseC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY3VybHguYwpAQCAtOSw3ICs5LDEwIEBACiAgIGNlcnRpZmljYXRlIHByZXNlbnRlZCBkdXJpbmcgc3NsIHNlc3Npb24gZXN0YWJsaXNobWVudC4KIAogKi8KLQorLyogPERFU0M+CisgKiBkZW1vbnN0cmF0ZXMgdXNlIG9mIFNTTCBjb250ZXh0IGNhbGxiYWNrLCByZXF1aXJlcyBPcGVuU1NMCisgKiA8L0RFU0M+CisgKi8KIAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlbkV2aWRlbmNlIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzMsNyArMzYsNyBAQAogICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5ldmlkZW5jZSBQcm9qZWN0CiAgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuRXZpZGVuY2UgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbmV2aWRlbmNlLm9yZy8pIgogICogICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvKSIKICAqICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkgRXJpYyBZb3VuZwogICogICAgKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQogICogICAgSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuIgpAQCAtNTIsNyArNTUsNyBAQAogICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5FdmlkZW5jZSBQcm9qZWN0CiAgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuRXZpZGVuY2UgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuZXZpZGVuY2Uub3JnLykKICAqICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnLykiCiAgKiAgICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKICAqICAgIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KICAqICAgIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLiIKQEAgLTcyLDcgKzc1LDcgQEAKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgogICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKQorICogZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwczovL3d3dy5vcGVuc3NsLm9yZy8pCiAgKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKICAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KICAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgpAQCAtOTgsMTMgKzEwMSwxOCBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmN1cmx4X3VzYWdlW109ewogICAidXNhZ2U6IGN1cmx4IGFyZ3NcbiIsCiAgICIgLXAxMiBhcmcgICAgICAgICAtIHRpYSAgZmlsZSAiLAotICAiIC1lbnZwYXNzIGFyZyAgICAgLSBlbnZpcm9uZW1lbnQgdmFyaWFibGUgd2hpY2ggY29udGVudCB0aGUgdGlhIHByaXZhdGUga2V5IHBhc3N3b3JkIiwKKyAgIiAtZW52cGFzcyBhcmcgICAgIC0gZW52aXJvbmVtZW50IHZhcmlhYmxlIHdoaWNoIGNvbnRlbnQgdGhlIHRpYSBwcml2YXRlIgorICAiIGtleSBwYXNzd29yZCIsCiAgICIgLW91dCBhcmcgICAgICAgICAtIG91dHB1dCBmaWxlIChyZXNwb25zZSktIGRlZmF1bHQgc3Rkb3V0IiwKICAgIiAtaW4gYXJnICAgICAgICAgIC0gaW5wdXQgZmlsZSAocmVxdWVzdCktIGRlZmF1bHQgc3RkaW4iLAotICAiIC1jb25uZWN0IGFyZyAgICAgLSBVUkwgb2YgdGhlIHNlcnZlciBmb3IgdGhlIGNvbm5lY3Rpb24gZXg6IHd3dy5vcGVuZXZpZGVuY2Uub3JnIiwKLSAgIiAtbWltZXR5cGUgYXJnICAgIC0gTUlNRSB0eXBlIGZvciBkYXRhIGluIGV4IDogYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5IG9yIGFwcGxpY2F0aW9uL2R2Y3MgLWRlZmF1bHQgYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5IiwKLSAgIiAtYWNjZXB0bWltZSBhcmcgIC0gTUlNRSB0eXBlIGFjY2VwdGFibGUgZm9yIHRoZSByZXNwb25zZSBleCA6IGFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXNwb25zZSBvciBhcHBsaWNhdGlvbi9kdmNzIC1kZWZhdWx0IG5vbmUiLAotICAiIC1hY2Nlc3N0eXBlIGFyZyAgLSBhbiBPYmplY3QgaWRlbnRpZmllciBpbiBhbiBBSUEvU0lBIG1ldGhvZCwgZS5nLiBBRF9EVkNTIG9yIGFkX3RpbWVzdGFtcGluZyIsCisgICIgLWNvbm5lY3QgYXJnICAgICAtIFVSTCBvZiB0aGUgc2VydmVyIGZvciB0aGUgY29ubmVjdGlvbiBleDoiCisgICIgd3d3Lm9wZW5ldmlkZW5jZS5vcmciLAorICAiIC1taW1ldHlwZSBhcmcgICAgLSBNSU1FIHR5cGUgZm9yIGRhdGEgaW4gZXggOiBhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnkiCisgICIgb3IgYXBwbGljYXRpb24vZHZjcyAtZGVmYXVsdCBhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnkiLAorICAiIC1hY2NlcHRtaW1lIGFyZyAgLSBNSU1FIHR5cGUgYWNjZXB0YWJsZSBmb3IgdGhlIHJlc3BvbnNlIGV4IDogIgorICAiYXBwbGljYXRpb24vdGltZXN0YW1wLXJlc3BvbnNlIG9yIGFwcGxpY2F0aW9uL2R2Y3MgLWRlZmF1bHQgbm9uZSIsCisgICIgLWFjY2Vzc3R5cGUgYXJnICAtIGFuIE9iamVjdCBpZGVudGlmaWVyIGluIGFuIEFJQS9TSUEgbWV0aG9kLCBlLmcuIgorICAiIEFEX0RWQ1Mgb3IgYWRfdGltZXN0YW1waW5nIiwKICAgTlVMTAogfTsKIApAQCAtMTI1LDIyICsxMzMsMjIgQEAKIC8qIFRoaXMgaXMgYSBjb250ZXh0IHRoYXQgd2UgcGFzcyB0byBhbGwgY2FsbGJhY2tzICovCiAKIHR5cGVkZWYgc3RydWN0IHNzbGN0eHBhcm1fc3QgewotICB1bnNpZ25lZCBjaGFyICogcDEyZmlsZSA7Ci0gIGNvbnN0IGNoYXIgKiBwc3QgOwotICBQS0NTMTIgKiBwMTIgOwotICBFVlBfUEtFWSAqIHBrZXkgOwotICBYNTA5ICogdXNlcmNlcnQgOwotICBTVEFDS19PRihYNTA5KSAqIGNhIDsKKyAgdW5zaWduZWQgY2hhciAqIHAxMmZpbGU7CisgIGNvbnN0IGNoYXIgKiBwc3Q7CisgIFBLQ1MxMiAqIHAxMjsKKyAgRVZQX1BLRVkgKiBwa2V5OworICBYNTA5ICogdXNlcmNlcnQ7CisgIFNUQUNLX09GKFg1MDkpICogY2E7CiAgIENVUkwgKiBjdXJsOwogICBCSU8gKiBlcnJvcmJpbzsKLSAgaW50IGFjY2Vzc3R5cGUgOworICBpbnQgYWNjZXNzdHlwZTsKICAgaW50IHZlcmJvc2U7CiAKIH0gc3NsY3R4cGFybTsKIAogLyogc29tZSBoZWxwZXIgZnVuY3Rpb24uICovCiAKLXN0YXRpYyBjaGFyICppMnNfQVNOMV9JQTVTVFJJTkcoIEFTTjFfSUE1U1RSSU5HICppYTUpCitzdGF0aWMgY2hhciAqaWE1c3RyaW5nKEFTTjFfSUE1U1RSSU5HICppYTUpCiB7CiAgIGNoYXIgKnRtcDsKICAgaWYoIWlhNSB8fCAhaWE1LT5sZW5ndGgpCkBAIC0xNTIsMjAgKzE2MCwyMCBAQAogfQogCiAvKiBBIGNvbnZlbmlhbmNlIHJvdXRpbmUgdG8gZ2V0IGFuIGFjY2VzcyBVUkkuICovCi0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyICpteV9nZXRfZXh0KFg1MDkgKiBjZXJ0LCBjb25zdCBpbnQgdHlwZSwgaW50IGV4dGVuc2lvbnR5cGUpIHsKLQorc3RhdGljIHVuc2lnbmVkIGNoYXIgKm15X2dldF9leHQoWDUwOSAqY2VydCwgY29uc3QgaW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5zaW9udHlwZSkKK3sKICAgaW50IGk7Ci0gIFNUQUNLX09GKEFDQ0VTU19ERVNDUklQVElPTikgKiBhY2Nlc3NpbmZvIDsKLSAgYWNjZXNzaW5mbyA9ICBYNTA5X2dldF9leHRfZDJpKGNlcnQsIGV4dGVuc2lvbnR5cGUsIE5VTEwsIE5VTEwpIDsKKyAgU1RBQ0tfT0YoQUNDRVNTX0RFU0NSSVBUSU9OKSAqIGFjY2Vzc2luZm87CisgIGFjY2Vzc2luZm8gPSAgWDUwOV9nZXRfZXh0X2QyaShjZXJ0LCBleHRlbnNpb250eXBlLCBOVUxMLCBOVUxMKTsKIAotICBpZiAoIXNrX0FDQ0VTU19ERVNDUklQVElPTl9udW0oYWNjZXNzaW5mbykpCisgIGlmKCFza19BQ0NFU1NfREVTQ1JJUFRJT05fbnVtKGFjY2Vzc2luZm8pKQogICAgIHJldHVybiBOVUxMOwotICBmb3IgKGkgPSAwOyBpIDwgc2tfQUNDRVNTX0RFU0NSSVBUSU9OX251bShhY2Nlc3NpbmZvKTsgaSsrKSB7CisgIGZvcihpID0gMDsgaSA8IHNrX0FDQ0VTU19ERVNDUklQVElPTl9udW0oYWNjZXNzaW5mbyk7IGkrKykgewogICAgIEFDQ0VTU19ERVNDUklQVElPTiAqIGFkID0gc2tfQUNDRVNTX0RFU0NSSVBUSU9OX3ZhbHVlKGFjY2Vzc2luZm8sIGkpOwotICAgIGlmIChPQkpfb2JqMm5pZChhZC0+bWV0aG9kKSA9PSB0eXBlKSB7Ci0gICAgICBpZiAoYWQtPmxvY2F0aW9uLT50eXBlID09IEdFTl9VUkkpIHsKLSAgICAgICAgcmV0dXJuIGkyc19BU04xX0lBNVNUUklORyhhZC0+bG9jYXRpb24tPmQuaWE1KTsKKyAgICBpZihPQkpfb2JqMm5pZChhZC0+bWV0aG9kKSA9PSB0eXBlKSB7CisgICAgICBpZihhZC0+bG9jYXRpb24tPnR5cGUgPT0gR0VOX1VSSSkgeworICAgICAgICByZXR1cm4gaWE1c3RyaW5nKGFkLT5sb2NhdGlvbi0+ZC5pYTUpOwogICAgICAgfQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg0LDg0ICsxOTIsODYgQEAKICAgc3NsY3R4cGFybSAqIHAgPSAoc3NsY3R4cGFybSAqKSBhcmc7CiAgIGludCBvazsKIAotICBpZiAocC0+dmVyYm9zZSA+IDIpCi0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiZW50ZXJpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2tcbiIpOworICBpZihwLT52ZXJib3NlID4gMikKKyAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCAiZW50ZXJpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2tcbiIpOwogCi0gIGlmICgob2s9IFg1MDlfdmVyaWZ5X2NlcnQoY3R4KSkgJiYgY3R4LT5jZXJ0KSB7Ci0gICAgdW5zaWduZWQgY2hhciAqIGFjY2Vzc2luZm8gOwotICAgIGlmIChwLT52ZXJib3NlID4gMSkKLSAgICAgIFg1MDlfcHJpbnRfZXgocC0+ZXJyb3JiaW8sY3R4LT5jZXJ0LDAsMCk7CisgIGlmKChvaz0gWDUwOV92ZXJpZnlfY2VydChjdHgpKSAmJiBjdHgtPmNlcnQpIHsKKyAgICB1bnNpZ25lZCBjaGFyICogYWNjZXNzaW5mbzsKKyAgICBpZihwLT52ZXJib3NlID4gMSkKKyAgICAgIFg1MDlfcHJpbnRfZXgocC0+ZXJyb3JiaW8sIGN0eC0+Y2VydCwgMCwgMCk7CiAKLSAgICBpZiAoYWNjZXNzaW5mbyA9IG15X2dldF9leHQoY3R4LT5jZXJ0LHAtPmFjY2Vzc3R5cGUgLE5JRF9zaW5mb19hY2Nlc3MpKSB7Ci0gICAgICBpZiAocC0+dmVyYm9zZSkKLSAgICAgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiU2V0dGluZyBVUkwgZnJvbSBTSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKKyAgICBpZihhY2Nlc3NpbmZvID0gbXlfZ2V0X2V4dChjdHgtPmNlcnQsIHAtPmFjY2Vzc3R5cGUsIE5JRF9zaW5mb19hY2Nlc3MpKSB7CisgICAgICBpZihwLT52ZXJib3NlKQorICAgICAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCAiU2V0dGluZyBVUkwgZnJvbSBTSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKIAotICAgICAgY3VybF9lYXN5X3NldG9wdChwLT5jdXJsLCBDVVJMT1BUX1VSTCxhY2Nlc3NpbmZvKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQocC0+Y3VybCwgQ1VSTE9QVF9VUkwsIGFjY2Vzc2luZm8pOwogICAgIH0KLSAgICBlbHNlIGlmIChhY2Nlc3NpbmZvID0gbXlfZ2V0X2V4dChjdHgtPmNlcnQscC0+YWNjZXNzdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSURfaW5mb19hY2Nlc3MpKSB7Ci0gICAgICBpZiAocC0+dmVyYm9zZSkKLSAgICAgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiU2V0dGluZyBVUkwgZnJvbSBBSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKKyAgICBlbHNlIGlmKGFjY2Vzc2luZm8gPSBteV9nZXRfZXh0KGN0eC0+Y2VydCwgcC0+YWNjZXNzdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JRF9pbmZvX2FjY2VzcykpIHsKKyAgICAgIGlmKHAtPnZlcmJvc2UpCisgICAgICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTZXR0aW5nIFVSTCBmcm9tIEFJQSB0bzogJXNcbiIsIGFjY2Vzc2luZm8pOwogCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KHAtPmN1cmwsIENVUkxPUFRfVVJMLGFjY2Vzc2luZm8pOworICAgICAgY3VybF9lYXN5X3NldG9wdChwLT5jdXJsLCBDVVJMT1BUX1VSTCwgYWNjZXNzaW5mbyk7CiAgICAgfQogICB9Ci0gIGlmIChwLT52ZXJib3NlID4gMikKLSAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCJsZWF2aW5nIHNzbF9hcHBfdmVyaWZ5X2NhbGxiYWNrIHdpdGggJWRcbiIsIG9rKTsKLSAgcmV0dXJuKG9rKTsKKyAgaWYocC0+dmVyYm9zZSA+IDIpCisgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgImxlYXZpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2sgd2l0aCAlZFxuIiwgb2spOworCisgIHJldHVybiBvazsKIH0KIAogCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYW4gY3VybCBTU0wgaW5pdGlhbGlzYXRpb24gY2FsbCBiYWNrLiBUaGUgY2FsbGJhY2sgc2V0czoKKy8qIFRoZSBTU0wgaW5pdGlhbGlzYXRpb24gY2FsbGJhY2suIFRoZSBjYWxsYmFjayBzZXRzOgogICAgLSBhIHByaXZhdGUga2V5IGFuZCBjZXJ0aWZpY2F0ZQogICAgLSBhIHRydXN0ZWQgY2EgY2VydGlmaWNhdGUKICAgIC0gYSBwcmVmZXJyZWQgY2lwaGVybGlzdAogICAgLSBhbiBhcHBsaWNhdGlvbiB2ZXJpZmljYXRpb24gY2FsbGJhY2sgKHRoZSBmdW5jdGlvbiBhYm92ZSkKICovCiAKLXN0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKSB7Ci0KK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKQorewogICBzc2xjdHhwYXJtICogcCA9IChzc2xjdHhwYXJtICopIHBhcm07Ci0gIFNTTF9DVFggKiBjdHggPSAoU1NMX0NUWCAqKSBzc2xjdHggOworICBTU0xfQ1RYICogY3R4ID0gKFNTTF9DVFggKikgc3NsY3R4OwogCi0gIGlmICghU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4LHAtPnVzZXJjZXJ0KSkgewotICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZSBwcm9ibGVtXG4iKTsgZ290byBlcnI7CisgIGlmKCFTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShjdHgsIHAtPnVzZXJjZXJ0KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZSBwcm9ibGVtXG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQotICBpZiAoIVNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LHAtPnBrZXkpKSB7Ci0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgIlNTTF9DVFhfdXNlX1ByaXZhdGVLZXlcbiIpOyBnb3RvIGVycjsKKyAgaWYoIVNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LCBwLT5wa2V5KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5XG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQogCi0gIGlmICghU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjdHgpKSB7Ci0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgIlNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXlcbiIpOyBnb3RvIGVycjsKKyAgaWYoIVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXkoY3R4KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5XG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQogCi0gIFNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duKGN0eCwxKTsKLSAgU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCJSQzQtTUQ1Iik7CisgIFNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duKGN0eCwgMSk7CisgIFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIlJDNC1NRDUiKTsKICAgU1NMX0NUWF9zZXRfbW9kZShjdHgsIFNTTF9NT0RFX0FVVE9fUkVUUlkpOwogCi0gIFg1MDlfU1RPUkVfYWRkX2NlcnQoU1NMX0NUWF9nZXRfY2VydF9zdG9yZShjdHgpLCBza19YNTA5X3ZhbHVlKHAtPmNhLCBza19YNTA5X251bShwLT5jYSktMSkpOworICBYNTA5X1NUT1JFX2FkZF9jZXJ0KFNTTF9DVFhfZ2V0X2NlcnRfc3RvcmUoY3R4KSwKKyAgICAgICAgICAgICAgICAgICAgICBza19YNTA5X3ZhbHVlKHAtPmNhLCBza19YNTA5X251bShwLT5jYSktMSkpOwogCi0gIFNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aChjdHgsMik7Ci0KLSAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCxTU0xfVkVSSUZZX1BFRVIsWkVST19OVUxMKTsKLQorICBTU0xfQ1RYX3NldF92ZXJpZnlfZGVwdGgoY3R4LCAyKTsKKyAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLCBaRVJPX05VTEwpOwogICBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhjdHgsIHNzbF9hcHBfdmVyaWZ5X2NhbGxiYWNrLCBwYXJtKTsKIAotCi0gIHJldHVybiBDVVJMRV9PSyA7CisgIHJldHVybiBDVVJMRV9PSzsKICAgZXJyOgogICBFUlJfcHJpbnRfZXJyb3JzKHAtPmVycm9yYmlvKTsKICAgcmV0dXJuIENVUkxFX1NTTF9DRVJUUFJPQkxFTTsKIAogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorewogICBCSU8qIGluPU5VTEw7CiAgIEJJTyogb3V0PU5VTEw7CiAKICAgY2hhciAqIG91dGZpbGUgPSBOVUxMOwotICBjaGFyICogaW5maWxlID0gTlVMTCA7CisgIGNoYXIgKiBpbmZpbGUgPSBOVUxMOwogCiAgIGludCB0YWJMZW5ndGg9MTAwOwogICBjaGFyICpiaW5hcnlwdHI7CkBAIC0yNzAsNyArMjgwLDcgQEAKICAgY2hhciogY29udGVudHR5cGU7CiAgIGNvbnN0IGNoYXIqKiBwcDsKICAgdW5zaWduZWQgY2hhciogaG9zdHBvcnR1cmwgPSBOVUxMOwotICBCSU8gKiBwMTJiaW8gOworICBCSU8gKiBwMTJiaW87CiAgIGNoYXIgKiphcmdzID0gYXJndiArIDE7CiAgIHVuc2lnbmVkIGNoYXIgKiBzZXJ2ZXJ1cmw7CiAgIHNzbGN0eHBhcm0gcDsKQEAgLTI5Myw2NiArMzAzLDkxIEBACiAgIE9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzKCk7CiAgIEVSUl9sb2FkX2NyeXB0b19zdHJpbmdzKCk7CiAKLQotCi0gIHdoaWxlICgqYXJncyAmJiAqYXJnc1swXSA9PSAnLScpIHsKLSAgICBpZiAoIXN0cmNtcCAoKmFyZ3MsICItaW4iKSkgewotICAgICAgaWYgKGFyZ3NbMV0pIHsKKyAgd2hpbGUoKmFyZ3MgJiYgKmFyZ3NbMF0gPT0gJy0nKSB7CisgICAgaWYoIXN0cmNtcCAoKmFyZ3MsICItaW4iKSkgeworICAgICAgaWYoYXJnc1sxXSkgewogICAgICAgICBpbmZpbGU9KigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoKmFyZ3MsICItb3V0IikpIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKCFzdHJjbXAgKCphcmdzLCAiLW91dCIpKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIG91dGZpbGU9KigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoKmFyZ3MsICItcDEyIikpIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKCFzdHJjbXAgKCphcmdzLCAiLXAxMiIpKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIHAucDEyZmlsZSA9ICooKythcmdzKTsKLSAgICAgIH0gZWxzZSBiYWRhcmc9MTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJncywiLWVudnBhc3MiKSA9PSAwKSB7Ci0gICAgICBpZiAoYXJnc1sxXSkgeworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBiYWRhcmc9MTsKKyAgICB9CisgICAgZWxzZSBpZihzdHJjbXAoKmFyZ3MsICItZW52cGFzcyIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgcC5wc3QgPSBnZXRlbnYoKigrK2FyZ3MpKTsKLSAgICAgIH0gZWxzZSBiYWRhcmc9MTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJncywiLWNvbm5lY3QiKSA9PSAwKSB7Ci0gICAgICBpZiAoYXJnc1sxXSkgeworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBiYWRhcmc9MTsKKyAgICB9CisgICAgZWxzZSBpZihzdHJjbXAoKmFyZ3MsICItY29ubmVjdCIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgaG9zdHBvcnR1cmwgPSAqKCsrYXJncyk7Ci0gICAgICB9IGVsc2UgYmFkYXJnPTE7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3MsIi1taW1ldHlwZSIpID09IDApIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKHN0cmNtcCgqYXJncywgIi1taW1ldHlwZSIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgbWltZXR5cGUgPSAqKCsrYXJncyk7Ci0gICAgICB9IGVsc2UgYmFkYXJnPTE7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3MsIi1hY2NlcHRtaW1lIikgPT0gMCkgewotICAgICAgaWYgKGFyZ3NbMV0pIHsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgYmFkYXJnPTE7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKCphcmdzLCAiLWFjY2VwdG1pbWUiKSA9PSAwKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIG1pbWV0eXBlYWNjZXB0ID0gKigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmdzLCItYWNjZXNzdHlwZSIpID09IDApIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7Ci0gICAgICAgIGlmICgocC5hY2Nlc3N0eXBlID0gT0JKX29iajJuaWQoT0JKX3R4dDJvYmooKisrYXJncywwKSkpID09IDApIGJhZGFyZz0xOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmdzLCItdmVyYm9zZSIpID09IDApIHsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgYmFkYXJnPTE7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKCphcmdzLCAiLWFjY2Vzc3R5cGUiKSA9PSAwKSB7CisgICAgICBpZihhcmdzWzFdKSB7CisgICAgICAgIGlmKChwLmFjY2Vzc3R5cGUgPSBPQkpfb2JqMm5pZChPQkpfdHh0Mm9iaigqKythcmdzLCAwKSkpID09IDApCisgICAgICAgICAgYmFkYXJnPTE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKHN0cmNtcCgqYXJncywgIi12ZXJib3NlIikgPT0gMCkgewogICAgICAgcC52ZXJib3NlKys7Ci0gICAgfSBlbHNlIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlCisgICAgICBiYWRhcmc9MTsKICAgICBhcmdzKys7CiAgIH0KIAotICBpZiAobWltZXR5cGU9PU5VTEwgfHwgbWltZXR5cGVhY2NlcHQgPT0gTlVMTCkgYmFkYXJnID0gMTsKKyAgaWYobWltZXR5cGU9PU5VTEwgfHwgbWltZXR5cGVhY2NlcHQgPT0gTlVMTCkKKyAgICBiYWRhcmcgPSAxOwogCi0gIGlmIChiYWRhcmcpIHsKLSAgICBmb3IgKHBwPWN1cmx4X3VzYWdlOyAoKnBwICE9IE5VTEwpOyBwcCsrKQotICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCIlc1xuIiwqcHApOwotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywiXG4iKTsKKyAgaWYoYmFkYXJnKSB7CisgICAgZm9yKHBwPWN1cmx4X3VzYWdlOyAoKnBwICE9IE5VTEwpOyBwcCsrKQorICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJXNcbiIsICpwcCk7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiXG4iKTsKICAgICBnb3RvIGVycjsKICAgfQogCi0KLQogICAvKiBzZXQgaW5wdXQgKi8KIAotICBpZiAoKGluPUJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworICBpZigoaW49QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igc2V0dGluZyBpbnB1dCBiaW9cbiIpOwogICAgIGdvdG8gZXJyOwotICB9IGVsc2UgaWYgKGluZmlsZSA9PSBOVUxMKQotICAgIEJJT19zZXRfZnAoaW4sc3RkaW4sQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOwotICBlbHNlIGlmIChCSU9fcmVhZF9maWxlbmFtZShpbixpbmZpbGUpIDw9IDApIHsKKyAgfQorICBlbHNlIGlmKGluZmlsZSA9PSBOVUxMKQorICAgIEJJT19zZXRfZnAoaW4sIHN0ZGluLCBCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisgIGVsc2UgaWYoQklPX3JlYWRfZmlsZW5hbWUoaW4sIGluZmlsZSkgPD0gMCkgewogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgaW5wdXQgZmlsZSAlc1xuIiwgaW5maWxlKTsKICAgICBCSU9fZnJlZShpbik7CiAgICAgZ290byBlcnI7CkBAIC0zNjAsMTIgKzM5NSwxMyBAQAogCiAgIC8qIHNldCBvdXRwdXQgICovCiAKLSAgaWYgKChvdXQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisgIGlmKChvdXQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igc2V0dGluZyBvdXRwdXQgYmlvLlxuIik7CiAgICAgZ290byBlcnI7Ci0gIH0gZWxzZSBpZiAob3V0ZmlsZSA9PSBOVUxMKQotICAgIEJJT19zZXRfZnAob3V0LHN0ZG91dCxCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7Ci0gIGVsc2UgaWYgKEJJT193cml0ZV9maWxlbmFtZShvdXQsb3V0ZmlsZSkgPD0gMCkgeworICB9CisgIGVsc2UgaWYob3V0ZmlsZSA9PSBOVUxMKQorICAgIEJJT19zZXRfZnAob3V0LCBzdGRvdXQsIEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKyAgZWxzZSBpZihCSU9fd3JpdGVfZmlsZW5hbWUob3V0LCBvdXRmaWxlKSA8PSAwKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZSAlc1xuIiwgb3V0ZmlsZSk7CiAgICAgQklPX2ZyZWUob3V0KTsKICAgICBnb3RvIGVycjsKQEAgLTM3NCw2MiArNDEwLDY2IEBACiAKICAgcC5lcnJvcmJpbyA9IEJJT19uZXdfZnAgKHN0ZGVyciwgQklPX05PQ0xPU0UpOwogCi0gIGlmICghKHAuY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpKSB7CisgIGlmKCEocC5jdXJsID0gY3VybF9lYXN5X2luaXQoKSkpIHsKICAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJDYW5ub3QgaW5pdCBjdXJsIGxpYlxuIik7CiAgICAgZ290byBlcnI7CiAgIH0KIAotCi0KLSAgaWYgKCEocDEyYmlvID0gQklPX25ld19maWxlKHAucDEyZmlsZSAsICJyYiIpKSkgewotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgUDEyIGZpbGUgJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZighKHAxMmJpbyA9IEJJT19uZXdfZmlsZShwLnAxMmZpbGUsICJyYiIpKSkgeworICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgUDEyIGZpbGUgJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KLSAgaWYgKCEocC5wMTIgPSBkMmlfUEtDUzEyX2JpbyAocDEyYmlvLCBOVUxMKSkpIHsKLSAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJDYW5ub3QgZGVjb2RlIFAxMiBzdHJ1Y3R1cmUgJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZighKHAucDEyID0gZDJpX1BLQ1MxMl9iaW8gKHAxMmJpbywgTlVMTCkpKSB7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiQ2Fubm90IGRlY29kZSBQMTIgc3RydWN0dXJlICVzXG4iLCBwLnAxMmZpbGUpOworICAgIGdvdG8gZXJyOwogICB9CiAKICAgcC5jYT0gTlVMTDsKLSAgaWYgKCEoUEtDUzEyX3BhcnNlIChwLnAxMiwgcC5wc3QsICYocC5wa2V5KSwgJihwLnVzZXJjZXJ0KSwgJihwLmNhKSApICkpIHsKLSAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sIkludmFsaWQgUDEyIHN0cnVjdHVyZSBpbiAlc1xuIiwgcC5wMTJmaWxlKTsgZ290byBlcnI7CisgIGlmKCEoUEtDUzEyX3BhcnNlIChwLnAxMiwgcC5wc3QsICYocC5wa2V5KSwgJihwLnVzZXJjZXJ0KSwgJihwLmNhKSApICkpIHsKKyAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJJbnZhbGlkIFAxMiBzdHJ1Y3R1cmUgaW4gJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KIAotICBpZiAoc2tfWDUwOV9udW0ocC5jYSkgPD0gMCkgewotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywiTm8gdHJ1c3R3b3J0aHkgQ0EgZ2l2ZW4uJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZihza19YNTA5X251bShwLmNhKSA8PSAwKSB7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiTm8gdHJ1c3R3b3J0aHkgQ0EgZ2l2ZW4uJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KIAotICBpZiAocC52ZXJib3NlID4gMSkKLSAgICBYNTA5X3ByaW50X2V4KHAuZXJyb3JiaW8scC51c2VyY2VydCwwLDApOworICBpZihwLnZlcmJvc2UgPiAxKQorICAgIFg1MDlfcHJpbnRfZXgocC5lcnJvcmJpbywgcC51c2VyY2VydCwgMCwgMCk7CiAKICAgLyogZGV0ZXJtaW5lIFVSTCB0byBnbyAqLwogCi0gIGlmIChob3N0cG9ydHVybCkgewotICAgIHNlcnZlcnVybCA9IG1hbGxvYyg5K3N0cmxlbihob3N0cG9ydHVybCkpOwotICAgIHNwcmludGYoc2VydmVydXJsLCJodHRwczovLyVzIixob3N0cG9ydHVybCk7CisgIGlmKGhvc3Rwb3J0dXJsKSB7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihob3N0cG9ydHVybCkgKyA5OworICAgIHNlcnZlcnVybCA9IG1hbGxvYyhsZW4pOworICAgIHNucHJpbnRmKHNlcnZlcnVybCwgbGVuLCAiaHR0cHM6Ly8lcyIsIGhvc3Rwb3J0dXJsKTsKICAgfQotICBlbHNlIGlmIChwLmFjY2Vzc3R5cGUgIT0gMCkgeyAvKiBzZWUgd2hldGhlciB3ZSBjYW4gZmluZCBhbiBBSUEgb3IgU0lBIGZvciBhIGdpdmVuIGFjY2VzcyB0eXBlICovCi0gICAgaWYgKCEoc2VydmVydXJsID0gbXlfZ2V0X2V4dChwLnVzZXJjZXJ0LHAuYWNjZXNzdHlwZSxOSURfaW5mb19hY2Nlc3MpKSkgeworICBlbHNlIGlmKHAuYWNjZXNzdHlwZSAhPSAwKSB7IC8qIHNlZSB3aGV0aGVyIHdlIGNhbiBmaW5kIGFuIEFJQSBvciBTSUEgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBhY2Nlc3MgdHlwZSAqLworICAgIGlmKCEoc2VydmVydXJsID0gbXlfZ2V0X2V4dChwLnVzZXJjZXJ0LCBwLmFjY2Vzc3R5cGUsIE5JRF9pbmZvX2FjY2VzcykpKSB7CiAgICAgICBpbnQgaj0wOwotICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCJubyBzZXJ2aWNlIFVSTCBpbiB1c2VyIGNlcnQgIgorICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAibm8gc2VydmljZSBVUkwgaW4gdXNlciBjZXJ0ICIKICAgICAgICAgICAgICAgICAgImNoZXJjaGluZyBpbiBvdGhlcnMgY2VydGlmaWNhdHNcbiIpOwotICAgICAgZm9yIChqPTA7ajxza19YNTA5X251bShwLmNhKTtqKyspIHsKLSAgICAgICAgaWYgKChzZXJ2ZXJ1cmwgPSBteV9nZXRfZXh0KHNrX1g1MDlfdmFsdWUocC5jYSxqKSxwLmFjY2Vzc3R5cGUsCisgICAgICBmb3Ioaj0wOyBqPHNrX1g1MDlfbnVtKHAuY2EpOyBqKyspIHsKKyAgICAgICAgaWYoKHNlcnZlcnVybCA9IG15X2dldF9leHQoc2tfWDUwOV92YWx1ZShwLmNhLCBqKSwgcC5hY2Nlc3N0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTklEX2luZm9fYWNjZXNzKSkpCiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmICgoc2VydmVydXJsID0gbXlfZ2V0X2V4dChza19YNTA5X3ZhbHVlKHAuY2EsaikscC5hY2Nlc3N0eXBlLAorICAgICAgICBpZigoc2VydmVydXJsID0gbXlfZ2V0X2V4dChza19YNTA5X3ZhbHVlKHAuY2EsIGopLCBwLmFjY2Vzc3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSURfc2luZm9fYWNjZXNzKSkpCiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQogICB9CiAKLSAgaWYgKCFzZXJ2ZXJ1cmwpIHsKKyAgaWYoIXNlcnZlcnVybCkgewogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIm5vIHNlcnZpY2UgVVJMIGluIGNlcnRpZmljYXRzLCIKICAgICAgICAgICAgICAgICIgY2hlY2sgJy1hY2Nlc3N0eXBlIChBRF9EVkNTIHwgYWRfdGltZXN0YW1waW5nKSciCiAgICAgICAgICAgICAgICAiIG9yIHVzZSAnLWNvbm5lY3QnXG4iKTsKICAgICBnb3RvIGVycjsKICAgfQogCi0gIGlmIChwLnZlcmJvc2UpCisgIGlmKHAudmVyYm9zZSkKICAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJTZXJ2aWNlIFVSTDogPCVzPlxuIiwgc2VydmVydXJsKTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9VUkwsIHNlcnZlcnVybCk7CkBAIC00MzcsMzggKzQ3NywzOSBAQAogICAvKiBOb3cgc3BlY2lmeSB0aGUgUE9TVCBiaW5hcnkgZGF0YSAqLwogCiAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGJpbmFyeXB0cik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsKGxvbmcpdGFiTGVuZ3RoKTsKKyAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgKGxvbmcpdGFiTGVuZ3RoKTsKIAogICAvKiBwYXNzIG91ciBsaXN0IG9mIGN1c3RvbSBtYWRlIGhlYWRlcnMgKi8KIAogICBjb250ZW50dHlwZSA9IG1hbGxvYygxNStzdHJsZW4obWltZXR5cGUpKTsKLSAgc3ByaW50Zihjb250ZW50dHlwZSwiQ29udGVudC10eXBlOiAlcyIsbWltZXR5cGUpOwotICBoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycyxjb250ZW50dHlwZSk7CisgIHNucHJpbnRmKGNvbnRlbnR0eXBlLCAxNStzdHJsZW4obWltZXR5cGUpLCAiQ29udGVudC10eXBlOiAlcyIsIG1pbWV0eXBlKTsKKyAgaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGNvbnRlbnR0eXBlKTsKICAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CiAKLSAgaWYgKHAudmVyYm9zZSkKKyAgaWYocC52ZXJib3NlKQogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIlNlcnZpY2UgVVJMOiA8JXM+XG4iLCBzZXJ2ZXJ1cmwpOwogCiAgIHsKICAgICBGSUxFICpvdXRmcDsKLSAgICBCSU9fZ2V0X2ZwKG91dCwmb3V0ZnApOworICAgIEJJT19nZXRfZnAob3V0LCAmb3V0ZnApOwogICAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0ZnApOwogICB9CiAKLSAgcmVzID0gY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4ZnVuKSAgOworICByZXMgPSBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCBzc2xjdHhmdW4pOwogCi0gIGlmIChyZXMgIT0gQ1VSTEVfT0spCi0gICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCIlZCAlcz0lZCAlZFxuIiwgX19MSU5FX18sICJDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04iLENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTixyZXMpOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJWQgJXM9JWQgJWRcbiIsIF9fTElORV9fLAorICAgICAgICAgICAgICAgIkNVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiIsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgcmVzKTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEsICZwKTsKIAogICB7CiAgICAgaW50IGx1OyBpbnQgaT0wOwotICAgIHdoaWxlICgobHUgPSBCSU9fcmVhZCAoaW4sJmJpbmFyeXB0cltpXSx0YWJMZW5ndGgtaSkpID4wICkgeworICAgIHdoaWxlKChsdSA9IEJJT19yZWFkIChpbiwgJmJpbmFyeXB0cltpXSwgdGFiTGVuZ3RoLWkpKSA+MCkgewogICAgICAgaSs9bHU7Ci0gICAgICBpZiAoaT09IHRhYkxlbmd0aCkgeworICAgICAgaWYoaT09IHRhYkxlbmd0aCkgewogICAgICAgICB0YWJMZW5ndGgrPTEwMDsKLSAgICAgICAgYmluYXJ5cHRyPXJlYWxsb2MoYmluYXJ5cHRyLHRhYkxlbmd0aCk7IC8qIHNob3VsZCBiZSBtb3JlIGNhcmVmdWwgKi8KKyAgICAgICAgYmluYXJ5cHRyPXJlYWxsb2MoYmluYXJ5cHRyLCB0YWJMZW5ndGgpOyAvKiBzaG91bGQgYmUgbW9yZSBjYXJlZnVsICovCiAgICAgICB9CiAgICAgfQogICAgIHRhYkxlbmd0aCA9IGk7CkBAIC00NzYsMjMgKzUxNywyMyBAQAogICAvKiBOb3cgc3BlY2lmeSB0aGUgUE9TVCBiaW5hcnkgZGF0YSAqLwogCiAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGJpbmFyeXB0cik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsKGxvbmcpdGFiTGVuZ3RoKTsKKyAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgKGxvbmcpdGFiTGVuZ3RoKTsKIAogCiAgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QsIHJlcyB3aWxsIGdldCB0aGUgcmV0dXJuIGNvZGUgKi8KIAotICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sIiVkICVzICVkXG4iLCBfX0xJTkVfXywgImN1cmxfZWFzeV9wZXJmb3JtIiwKKyAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJWQgJXMgJWRcbiIsIF9fTElORV9fLCAiY3VybF9lYXN5X3BlcmZvcm0iLAogICAgICAgICAgICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKHAuY3VybCkpOwogICB7Ci0gICAgaW50IHJlc3VsdCA9Y3VybF9lYXN5X2dldGluZm8ocC5jdXJsLENVUkxJTkZPX0NPTlRFTlRfVFlQRSwmcmVzcG9uc2UpOwotICAgIGlmKCBtaW1ldHlwZWFjY2VwdCAmJiBwLnZlcmJvc2UpCi0gICAgICBpZighc3RyY21wKG1pbWV0eXBlYWNjZXB0LHJlc3BvbnNlKSkKLSAgICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCJ0aGUgcmVzcG9uc2UgaGFzIGEgY29ycmVjdCBtaW1ldHlwZSA6ICVzXG4iLAorICAgIGludCByZXN1bHQgPWN1cmxfZWFzeV9nZXRpbmZvKHAuY3VybCwgQ1VSTElORk9fQ09OVEVOVF9UWVBFLCAmcmVzcG9uc2UpOworICAgIGlmKG1pbWV0eXBlYWNjZXB0ICYmIHAudmVyYm9zZSkKKyAgICAgIGlmKCFzdHJjbXAobWltZXR5cGVhY2NlcHQsIHJlc3BvbnNlKSkKKyAgICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAidGhlIHJlc3BvbnNlIGhhcyBhIGNvcnJlY3QgbWltZXR5cGUgOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSk7CiAgICAgICBlbHNlCi0gICAgICAgIEJJT19wcmludGYocC5lcnJvcmJpbywidGhlIHJlc3BvbnNlIGRvZXNuXCd0IGhhdmUgYW4gYWNjZXB0YWJsZSAiCisgICAgICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgInRoZSByZXNwb25zZSBkb2VzblwndCBoYXZlIGFuIGFjY2VwdGFibGUgIgogICAgICAgICAgICAgICAgICAgICJtaW1lIHR5cGUsIGl0IGlzICVzIGluc3RlYWQgb2YgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsbWltZXR5cGVhY2NlcHQpOworICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLCBtaW1ldHlwZWFjY2VwdCk7CiAgIH0KIAogICAvKioqIGNvZGUgZCdlcnJldXIgc2kgYWNjZXB0IG1pbWUgKioqLCBlZ2FsZW1lbnQgY29kZSByZXR1cm4gSFRUUCAhPSAyMDAgKioqLwpAQCAtNTA4LDYgKzU0OSw2IEBACiAgIEJJT19mcmVlKG91dCk7CiAgIHJldHVybiAoRVhJVF9TVUNDRVNTKTsKIAotICBlcnI6IEJJT19wcmludGYocC5lcnJvcmJpbywiZXJyb3IiKTsKKyAgZXJyOiBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJlcnJvciIpOwogICBleGl0KDEpOwogfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9kZWJ1Zy5jIGIvZG9jcy9leGFtcGxlcy9kZWJ1Zy5jCmluZGV4IDM2ZGQ4MGQuLmY1ZDU4YmYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZGVidWcuYworKysgYi9kb2NzL2V4YW1wbGVzL2RlYnVnLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IGhvdyBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gY2FuIGJlIHVzZWQuCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC01OCwxNCArNjIsMTQgQEAKIAogICAgIGZvcihjID0gMDsgKGMgPCB3aWR0aCkgJiYgKGkrYyA8IHNpemUpOyBjKyspIHsKICAgICAgIC8qIGNoZWNrIGZvciAwRDBBOyBpZiBmb3VuZCwgc2tpcCBwYXN0IGFuZCBzdGFydCBhIG5ldyBsaW5lIG9mIG91dHB1dCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMi13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgZnByaW50ZihzdHJlYW0sICIlYyIsCiAgICAgICAgICAgICAgIChwdHJbaStjXT49MHgyMCkgJiYgKHB0cltpK2NdPDB4ODApP3B0cltpK2NdOicuJyk7CiAgICAgICAvKiBjaGVjayBhZ2FpbiBmb3IgMEQwQSwgdG8gYXZvaWQgYW4gZXh0cmEgXG4gaWYgaXQncyBhdCB3aWR0aCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CiAgICAgICAgIGkrPShjKzMtd2lkdGgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZXZoaXBlcmZpZm8uYyBiL2RvY3MvZXhhbXBsZXMvZXZoaXBlcmZpZm8uYwppbmRleCBlMDM4MDFkLi4xMThmMTUyIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2V2aGlwZXJmaWZvLmMKKysrIGIvZG9jcy9leGFtcGxlcy9ldmhpcGVyZmlmby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogbXVsdGkgc29ja2V0IGludGVyZmFjZSB0b2dldGhlciB3aXRoIGxpYmV2CisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8KICAqIGRvd25sb2FkIG1hbnkgZmlsZXMgYXQgb25jZS4KICAqCkBAIC0xMTUsMTIgKzExOSwxMiBAQAogewogICBEUFJJTlQoIiVzICVsaVxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIHRpbWVvdXRfbXMpOwogICBldl90aW1lcl9zdG9wKGctPmxvb3AsICZnLT50aW1lcl9ldmVudCk7Ci0gIGlmICh0aW1lb3V0X21zID4gMCkKLSAgeworICBpZih0aW1lb3V0X21zID4gMCkgewogICAgIGRvdWJsZSAgdCA9IHRpbWVvdXRfbXMgLyAxMDAwOwogICAgIGV2X3RpbWVyX2luaXQoJmctPnRpbWVyX2V2ZW50LCB0aW1lcl9jYiwgdCwgMC4pOwogICAgIGV2X3RpbWVyX3N0YXJ0KGctPmxvb3AsICZnLT50aW1lcl9ldmVudCk7Ci0gIH1lbHNlCisgIH0KKyAgZWxzZQogICAgIHRpbWVyX2NiKGctPmxvb3AsICZnLT50aW1lcl9ldmVudCwgMCk7CiAgIHJldHVybiAwOwogfQpAQCAtMTI4LDIwICsxMzIsMzIgQEAKIC8qIERpZSBpZiB3ZSBnZXQgYSBiYWQgQ1VSTE1jb2RlIHNvbWV3aGVyZSAqLwogc3RhdGljIHZvaWQgbWNvZGVfb3JfZGllKGNvbnN0IGNoYXIgKndoZXJlLCBDVVJMTWNvZGUgY29kZSkKIHsKLSAgaWYgKCBDVVJMTV9PSyAhPSBjb2RlICkKLSAgeworICBpZihDVVJMTV9PSyAhPSBjb2RlKSB7CiAgICAgY29uc3QgY2hhciAqczsKLSAgICBzd2l0Y2ggKCBjb2RlICkKLSAgICB7Ci0gICAgY2FzZSBDVVJMTV9CQURfSEFORExFOiAgICAgICAgIHM9IkNVUkxNX0JBRF9IQU5ETEUiOyAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSTE1fQkFEX0VBU1lfSEFORExFOiAgICBzPSJDVVJMTV9CQURfRUFTWV9IQU5ETEUiOyAgICBicmVhazsKLSAgICBjYXNlIENVUkxNX09VVF9PRl9NRU1PUlk6ICAgICAgcz0iQ1VSTE1fT1VUX09GX01FTU9SWSI7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVJMTV9JTlRFUk5BTF9FUlJPUjogICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKLSAgICBjYXNlIENVUkxNX0xBU1Q6ICAgICAgICAgICAgICAgcz0iQ1VSTE1fTEFTVCI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogcz0iQ1VSTE1fdW5rbm93biI7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSBDVVJMTV9CQURfSEFORExFOgorICAgICAgcz0iQ1VSTE1fQkFEX0hBTkRMRSI7CiAgICAgICBicmVhazsKLSAgICBjYXNlICAgICBDVVJMTV9CQURfU09DS0VUOiAgICAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOworICAgIGNhc2UgQ1VSTE1fQkFEX0VBU1lfSEFORExFOgorICAgICAgcz0iQ1VSTE1fQkFEX0VBU1lfSEFORExFIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fT1VUX09GX01FTU9SWToKKyAgICAgIHM9IkNVUkxNX09VVF9PRl9NRU1PUlkiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDVVJMTV9JTlRFUk5BTF9FUlJPUjoKKyAgICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fVU5LTk9XTl9PUFRJT046CisgICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIENVUkxNX0xBU1Q6CisgICAgICBzPSJDVVJMTV9MQVNUIjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBzPSJDVVJMTV91bmtub3duIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fQkFEX1NPQ0tFVDoKKyAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOwogICAgICAgZnByaW50ZihNU0dfT1VULCAiRVJST1I6ICVzIHJldHVybnMgJXNcbiIsIHdoZXJlLCBzKTsKICAgICAgIC8qIGlnbm9yZSB0aGlzIGVycm9yICovCiAgICAgICByZXR1cm47CkBAIC0xNjQsOCArMTgwLDggQEAKICAgQ1VSTGNvZGUgcmVzOwogCiAgIGZwcmludGYoTVNHX09VVCwgIlJFTUFJTklORzogJWRcbiIsIGctPnN0aWxsX3J1bm5pbmcpOwotICB3aGlsZSAoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGctPm11bHRpLCAmbXNnc19sZWZ0KSkpIHsKLSAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChnLT5tdWx0aSwgJm1zZ3NfbGVmdCkpKSB7CisgICAgaWYobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CiAgICAgICBlYXN5ID0gbXNnLT5lYXN5X2hhbmRsZTsKICAgICAgIHJlcyA9IG1zZy0+ZGF0YS5yZXN1bHQ7CiAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhlYXN5LCBDVVJMSU5GT19QUklWQVRFLCAmY29ubik7CkBAIC0xOTMsOCArMjA5LDcgQEAKICAgcmMgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oZy0+bXVsdGksIHctPmZkLCBhY3Rpb24sICZnLT5zdGlsbF9ydW5uaW5nKTsKICAgbWNvZGVfb3JfZGllKCJldmVudF9jYjogY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uIiwgcmMpOwogICBjaGVja19tdWx0aV9pbmZvKGcpOwotICBpZiAoIGctPnN0aWxsX3J1bm5pbmcgPD0gMCApCi0gIHsKKyAgaWYoZy0+c3RpbGxfcnVubmluZyA8PSAwKSB7CiAgICAgZnByaW50ZihNU0dfT1VULCAibGFzdCB0cmFuc2ZlciBkb25lLCBraWxsIHRpbWVvdXRcbiIpOwogICAgIGV2X3RpbWVyX3N0b3AoZy0+bG9vcCwgJmctPnRpbWVyX2V2ZW50KTsKICAgfQpAQCAtMjA4LDcgKzIyMyw4IEBACiAgIEdsb2JhbEluZm8gKmcgPSAoR2xvYmFsSW5mbyAqKXctPmRhdGE7CiAgIENVUkxNY29kZSByYzsKIAotICByYyA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihnLT5tdWx0aSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwgJmctPnN0aWxsX3J1bm5pbmcpOworICByYyA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihnLT5tdWx0aSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmctPnN0aWxsX3J1bm5pbmcpOwogICBtY29kZV9vcl9kaWUoInRpbWVyX2NiOiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24iLCByYyk7CiAgIGNoZWNrX211bHRpX2luZm8oZyk7CiB9CkBAIC0yMTcsOSArMjMzLDggQEAKIHN0YXRpYyB2b2lkIHJlbXNvY2soU29ja0luZm8gKmYsIEdsb2JhbEluZm8gKmcpCiB7CiAgIHByaW50ZigiJXMgIFxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7Ci0gIGlmICggZiApCi0gIHsKLSAgICBpZiAoIGYtPmV2c2V0ICkKKyAgaWYoZikgeworICAgIGlmKGYtPmV2c2V0KQogICAgICAgZXZfaW9fc3RvcChnLT5sb29wLCAmZi0+ZXYpOwogICAgIGZyZWUoZik7CiAgIH0KQEAgLTIzNyw3ICsyNTIsNyBAQAogICBmLT5zb2NrZmQgPSBzOwogICBmLT5hY3Rpb24gPSBhY3Q7CiAgIGYtPmVhc3kgPSBlOwotICBpZiAoIGYtPmV2c2V0ICkKKyAgaWYoZi0+ZXZzZXQpCiAgICAgZXZfaW9fc3RvcChnLT5sb29wLCAmZi0+ZXYpOwogICBldl9pb19pbml0KCZmLT5ldiwgZXZlbnRfY2IsIGYtPnNvY2tmZCwga2luZCk7CiAgIGYtPmV2LmRhdGEgPSBnOwpAQCAtMjY5LDE4ICsyODQsMTYgQEAKIAogICBmcHJpbnRmKE1TR19PVVQsCiAgICAgICAgICAgInNvY2tldCBjYWxsYmFjazogcz0lZCBlPSVwIHdoYXQ9JXMgIiwgcywgZSwgd2hhdHN0clt3aGF0XSk7Ci0gIGlmICggd2hhdCA9PSBDVVJMX1BPTExfUkVNT1ZFICkKLSAgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJcbiIpOwogICAgIHJlbXNvY2soZmRwLCBnKTsKLSAgfSBlbHNlCi0gIHsKLSAgICBpZiAoICFmZHAgKQotICAgIHsKKyAgfQorICBlbHNlIHsKKyAgICBpZighZmRwKSB7CiAgICAgICBmcHJpbnRmKE1TR19PVVQsICJBZGRpbmcgZGF0YTogJXNcbiIsIHdoYXRzdHJbd2hhdF0pOwogICAgICAgYWRkc29jayhzLCBlLCB3aGF0LCBnKTsKLSAgICB9IGVsc2UKLSAgICB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgZnByaW50ZihNU0dfT1VULAogICAgICAgICAgICAgICAiQ2hhbmdpbmcgYWN0aW9uIGZyb20gJXMgdG8gJXNcbiIsCiAgICAgICAgICAgICAgIHdoYXRzdHJbZmRwLT5hY3Rpb25dLCB3aGF0c3RyW3doYXRdKTsKQEAgLTMxNiw3ICszMjksNyBAQAogCiAKIC8qIENyZWF0ZSBhIG5ldyBlYXN5IGhhbmRsZSwgYW5kIGFkZCBpdCB0byB0aGUgZ2xvYmFsIGN1cmxfbXVsdGkgKi8KLXN0YXRpYyB2b2lkIG5ld19jb25uKGNoYXIgKnVybCwgR2xvYmFsSW5mbyAqZyApCitzdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcpCiB7CiAgIENvbm5JbmZvICpjb25uOwogICBDVVJMTWNvZGUgcmM7CkBAIC0zMjYsOCArMzM5LDcgQEAKICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKIAogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCAhY29ubi0+ZWFzeSApCi0gIHsKKyAgaWYoIWNvbm4tPmVhc3kpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZCwgZXhpdGluZyFcbiIpOwogICAgIGV4aXQoMik7CiAgIH0KQEAgLTM2MiwxNiArMzc0LDE2IEBACiAgIGludCBuPTA7CiAgIEdsb2JhbEluZm8gKmcgPSAoR2xvYmFsSW5mbyAqKXctPmRhdGE7CiAKLSAgZG8KLSAgeworICBkbyB7CiAgICAgc1swXT0nXDAnOwogICAgIHJ2PWZzY2FuZihnLT5pbnB1dCwgIiUxMDIzcyVuIiwgcywgJm4pOwogICAgIHNbbl09J1wwJzsKLSAgICBpZiAoIG4gJiYgc1swXSApCi0gICAgewotICAgICAgbmV3X2Nvbm4ocyxnKTsgIC8qIGlmIHdlIHJlYWQgYSBVUkwsIGdvIGdldCBpdCEgKi8KLSAgICB9IGVsc2UgYnJlYWs7Ci0gIH0gd2hpbGUgKCBydiAhPSBFT0YgKTsKKyAgICBpZihuICYmIHNbMF0pIHsKKyAgICAgIG5ld19jb25uKHMsIGcpOyAgLyogaWYgd2UgcmVhZCBhIFVSTCwgZ28gZ2V0IGl0ISAqLworICAgIH0KKyAgICBlbHNlCisgICAgICBicmVhazsKKyAgfSB3aGlsZShydiAhPSBFT0YpOwogfQogCiAvKiBDcmVhdGUgYSBuYW1lZCBwaXBlIGFuZCB0ZWxsIGxpYmV2ZW50IHRvIG1vbml0b3IgaXQgKi8KQEAgLTM4MiwyNCArMzk0LDIwIEBACiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkOwogCiAgIGZwcmludGYoTVNHX09VVCwgIkNyZWF0aW5nIG5hbWVkIHBpcGUgXCIlc1wiXG4iLCBmaWZvKTsKLSAgaWYgKCBsc3RhdCAoZmlmbywgJnN0KSA9PSAwICkKLSAgewotICAgIGlmICggKHN0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcgKQotICAgIHsKKyAgaWYobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgeworICAgIGlmKChzdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSB7CiAgICAgICBlcnJubyA9IEVFWElTVDsKICAgICAgIHBlcnJvcigibHN0YXQiKTsKICAgICAgIGV4aXQgKDEpOwogICAgIH0KICAgfQogICB1bmxpbmsoZmlmbyk7Ci0gIGlmICggbWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSApCi0gIHsKKyAgaWYobWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSkgewogICAgIHBlcnJvcigibWtmaWZvIik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgc29ja2ZkID0gb3BlbihmaWZvLCBPX1JEV1IgfCBPX05PTkJMT0NLLCAwKTsKLSAgaWYgKCBzb2NrZmQgPT0gLTEgKQotICB7CisgIGlmKHNvY2tmZCA9PSAtMSkgewogICAgIHBlcnJvcigib3BlbiIpOwogICAgIGV4aXQgKDEpOwogICB9CkBAIC00MDgsNyArNDE2LDcgQEAKICAgZnByaW50ZihNU0dfT1VULCAiTm93LCBwaXBlIHNvbWUgVVJMJ3MgaW50byA+ICVzXG4iLCBmaWZvKTsKICAgZXZfaW9faW5pdCgmZy0+Zmlmb19ldmVudCwgZmlmb19jYiwgc29ja2ZkLCBFVl9SRUFEKTsKICAgZXZfaW9fc3RhcnQoZy0+bG9vcCwgJmctPmZpZm9fZXZlbnQpOwotICByZXR1cm4oMCk7CisgIHJldHVybiAoMCk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZXh0ZXJuYWxzb2NrZXQuYyBiL2RvY3MvZXhhbXBsZXMvZXh0ZXJuYWxzb2NrZXQuYwppbmRleCA1NDg2ZDEyLi45YjE0NGI0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2V4dGVybmFsc29ja2V0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9leHRlcm5hbHNvY2tldC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOSArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgZGVtb25zdHJhdGluZyBob3cgYW4gYXBwbGljYXRpb24gY2FuIHBhc3MgaW4gYSBjdXN0b20KKy8qIDxERVNDPgorICogQW4gZXhhbXBsZSBkZW1vbnN0cmF0aW5nIGhvdyBhbiBhcHBsaWNhdGlvbiBjYW4gcGFzcyBpbiBhIGN1c3RvbQogICogc29ja2V0IHRvIGxpYmN1cmwgdG8gdXNlLiBUaGlzIGV4YW1wbGUgYWxzbyBoYW5kbGVzIHRoZSBjb25uZWN0IGl0c2VsZi4KKyAqIDwvREVTQz4KICAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC01Myw3ICs1NCw3IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgaW50IHdyaXR0ZW4gPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilzdHJlYW0pOworICBzaXplX3Qgd3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCAoRklMRSAqKXN0cmVhbSk7CiAgIHJldHVybiB3cml0dGVuOwogfQogCkBAIC05MSw3ICs5Miw3IEBACiAgIFdTQURBVEEgd3NhRGF0YTsKICAgaW50IGluaXR3c2E7CiAKLSAgaWYoKGluaXR3c2EgPSBXU0FTdGFydHVwKE1BS0VXT1JEKDIsMCksICZ3c2FEYXRhKSkgIT0gMCkgeworICBpZigoaW5pdHdzYSA9IFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwgMCksICZ3c2FEYXRhKSkgIT0gMCkgewogICAgIHByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWQ6ICVkXG4iLCBpbml0d3NhKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtMTA2LDcgKzEwNyw3IEBACiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly85OS45OS45OS45OTo5OTk5Iik7CiAKICAgICAvKiBDcmVhdGUgdGhlIHNvY2tldCAibWFudWFsbHkiICovCi0gICAgaWYoIChzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApKSA9PSBDVVJMX1NPQ0tFVF9CQUQgKSB7CisgICAgaWYoKHNvY2tmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkpID09IENVUkxfU09DS0VUX0JBRCkgewogICAgICAgcHJpbnRmKCJFcnJvciBjcmVhdGluZyBsaXN0ZW5pbmcgc29ja2V0LlxuIik7CiAgICAgICByZXR1cm4gMzsKICAgICB9CkBAIC0xMTUsMTAgKzExNiwxMCBAQAogICAgIHNlcnZhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgIHNlcnZhZGRyLnNpbl9wb3J0ICAgPSBodG9ucyhQT1JUTlVNKTsKIAotICAgIGlmIChJTkFERFJfTk9ORSA9PSAoc2VydmFkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKElQQUREUikpKQorICAgIGlmKElOQUREUl9OT05FID09IChzZXJ2YWRkci5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoSVBBRERSKSkpCiAgICAgICByZXR1cm4gMjsKIAotICAgIGlmKGNvbm5lY3Qoc29ja2ZkLChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNlcnZhZGRyLCBzaXplb2Yoc2VydmFkZHIpKSA9PQorICAgIGlmKGNvbm5lY3Qoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZzZXJ2YWRkciwgc2l6ZW9mKHNlcnZhZGRyKSkgPT0KICAgICAgICAtMSkgewogICAgICAgY2xvc2Uoc29ja2ZkKTsKICAgICAgIHByaW50ZigiY2xpZW50IGVycm9yOiBjb25uZWN0OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZmlsZXVwbG9hZC5jIGIvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKaW5kZXggNjY1ZWNhMC4uMzYzZmFlNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVcGxvYWQgdG8gYSBmaWxlOi8vIFVSTAorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mb3Blbi5jIGIvZG9jcy9leGFtcGxlcy9mb3Blbi5jCmluZGV4IDBhYWQwYWIuLjcxYmUxNzggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZm9wZW4uYworKysgYi9kb2NzL2V4YW1wbGVzL2ZvcGVuLmMKQEAgLTQyLDYgKzQyLDEwIEBACiAgKgogICogVGhpcyBleGFtcGxlIHJlcXVpcmVzIGxpYmN1cmwgNy45Ljcgb3IgbGF0ZXIuCiAgKi8KKy8qIDxERVNDPgorICogaW1wbGVtZW50cyBhbiBmb3BlbigpIGFic3RyYWN0aW9uIGFsbG93aW5nIHJlYWRpbmcgZnJvbSBVUkxzCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03Niw3ICs4MCw3IEBACiB0eXBlZGVmIHN0cnVjdCBmY3VybF9kYXRhIFVSTF9GSUxFOwogCiAvKiBleHBvcnRlZCBmdW5jdGlvbnMgKi8KLVVSTF9GSUxFICp1cmxfZm9wZW4oY29uc3QgY2hhciAqdXJsLGNvbnN0IGNoYXIgKm9wZXJhdGlvbik7CitVUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqb3BlcmF0aW9uKTsKIGludCB1cmxfZmNsb3NlKFVSTF9GSUxFICpmaWxlKTsKIGludCB1cmxfZmVvZihVUkxfRklMRSAqZmlsZSk7CiBzaXplX3QgdXJsX2ZyZWFkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgVVJMX0ZJTEUgKmZpbGUpOwpAQCAtMTAyLDkgKzEwNiw5IEBACiAKICAgaWYoc2l6ZSA+IHJlbWJ1ZmYpIHsKICAgICAvKiBub3QgZW5vdWdoIHNwYWNlIGluIGJ1ZmZlciAqLwotICAgIG5ld2J1ZmY9cmVhbGxvYyh1cmwtPmJ1ZmZlcix1cmwtPmJ1ZmZlcl9sZW4gKyAoc2l6ZSAtIHJlbWJ1ZmYpKTsKKyAgICBuZXdidWZmPXJlYWxsb2ModXJsLT5idWZmZXIsIHVybC0+YnVmZmVyX2xlbiArIChzaXplIC0gcmVtYnVmZikpOwogICAgIGlmKG5ld2J1ZmY9PU5VTEwpIHsKLSAgICAgIGZwcmludGYoc3RkZXJyLCJjYWxsYmFjayBidWZmZXIgZ3JvdyBmYWlsZWRcbiIpOworICAgICAgZnByaW50ZihzdGRlcnIsICJjYWxsYmFjayBidWZmZXIgZ3JvdyBmYWlsZWRcbiIpOwogICAgICAgc2l6ZT1yZW1idWZmOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTE2MSw4ICsxNjUsNyBAQAogICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLwogICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgIGlmKG1jICE9IENVUkxNX09LKQotICAgIHsKKyAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjI2LDcgKzIyOSw3IEBACiAgIHJldHVybiAwOwogfQogCi1VUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCxjb25zdCBjaGFyICpvcGVyYXRpb24pCitVUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqb3BlcmF0aW9uKQogewogICAvKiB0aGlzIGNvZGUgY291bGQgY2hlY2sgZm9yIFVSTHMgb3IgdHlwZXMgaW4gdGhlICd1cmwnIGFuZAogICAgICBiYXNpY2FsbHkgdXNlIHRoZSByZWFsIGZvcGVuKCkgZm9yIHN0YW5kYXJkIGZpbGVzICovCkBAIC0yNDAsNyArMjQzLDcgQEAKIAogICBtZW1zZXQoZmlsZSwgMCwgc2l6ZW9mKFVSTF9GSUxFKSk7CiAKLSAgaWYoKGZpbGUtPmhhbmRsZS5maWxlPWZvcGVuKHVybCxvcGVyYXRpb24pKSkKKyAgaWYoKGZpbGUtPmhhbmRsZS5maWxlPWZvcGVuKHVybCwgb3BlcmF0aW9uKSkpCiAgICAgZmlsZS0+dHlwZSA9IENGVFlQRV9GSUxFOyAvKiBtYXJrZWQgYXMgVVJMICovCiAKICAgZWxzZSB7CkBAIC0zMzQsMTMgKzMzNywxMyBAQAogCiAgIHN3aXRjaChmaWxlLT50eXBlKSB7CiAgIGNhc2UgQ0ZUWVBFX0ZJTEU6Ci0gICAgd2FudD1mcmVhZChwdHIsc2l6ZSxubWVtYixmaWxlLT5oYW5kbGUuZmlsZSk7CisgICAgd2FudD1mcmVhZChwdHIsIHNpemUsIG5tZW1iLCBmaWxlLT5oYW5kbGUuZmlsZSk7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDRlRZUEVfQ1VSTDoKICAgICB3YW50ID0gbm1lbWIgKiBzaXplOwogCi0gICAgZmlsbF9idWZmZXIoZmlsZSx3YW50KTsKKyAgICBmaWxsX2J1ZmZlcihmaWxlLCB3YW50KTsKIAogICAgIC8qIGNoZWNrIGlmIHRoZXJlcyBkYXRhIGluIHRoZSBidWZmZXIgLSBpZiBub3QgZmlsbF9idWZmZXIoKQogICAgICAqIGVpdGhlciBlcnJvcmVkIG9yIEVPRiAqLwpAQCAtMzU0LDcgKzM1Nyw3IEBACiAgICAgLyogeGZlciBkYXRhIHRvIGNhbGxlciAqLwogICAgIG1lbWNweShwdHIsIGZpbGUtPmJ1ZmZlciwgd2FudCk7CiAKLSAgICB1c2VfYnVmZmVyKGZpbGUsd2FudCk7CisgICAgdXNlX2J1ZmZlcihmaWxlLCB3YW50KTsKIAogICAgIHdhbnQgPSB3YW50IC8gc2l6ZTsgICAgIC8qIG51bWJlciBvZiBpdGVtcyAqLwogICAgIGJyZWFrOwpAQCAtMzc5LDcgKzM4Miw3IEBACiAgICAgYnJlYWs7CiAKICAgY2FzZSBDRlRZUEVfQ1VSTDoKLSAgICBmaWxsX2J1ZmZlcihmaWxlLHdhbnQpOworICAgIGZpbGxfYnVmZmVyKGZpbGUsIHdhbnQpOwogCiAgICAgLyogY2hlY2sgaWYgdGhlcmVzIGRhdGEgaW4gdGhlIGJ1ZmZlciAtIGlmIG5vdCBmaWxsIGVpdGhlciBlcnJvcmVkIG9yCiAgICAgICogRU9GICovCkBAIC00MDMsNyArNDA2LDcgQEAKICAgICBtZW1jcHkocHRyLCBmaWxlLT5idWZmZXIsIHdhbnQpOwogICAgIHB0clt3YW50XT0wOy8qIGFsbHdheXMgbnVsbCB0ZXJtaW5hdGUgKi8KIAotICAgIHVzZV9idWZmZXIoZmlsZSx3YW50KTsKKyAgICB1c2VfYnVmZmVyKGZpbGUsIHdhbnQpOwogCiAgICAgYnJlYWs7CiAKQEAgLTQ0Myw2ICs0NDYsMTAgQEAKICAgfQogfQogCisjZGVmaW5lIEZHRVRTRklMRSAiZmdldHMudGVzdCIKKyNkZWZpbmUgRlJFQURGSUxFICJmcmVhZC50ZXN0IgorI2RlZmluZSBSRVdJTkRGSUxFICJyZXdpbmQudGVzdCIKKwogLyogU21hbGwgbWFpbiBwcm9ncmFtIHRvIHJldHJpdmUgZnJvbSBhIHVybCB1c2luZyBmZ2V0cyBhbmQgZnJlYWQgc2F2aW5nIHRoZQogICogb3V0cHV0IHRvIHR3byB0ZXN0IGZpbGVzIChub3RlIHRoZSBmZ2V0cyBtZXRob2Qgd2lsbCBjb3JydXB0IGJpbmFyeSBmaWxlcyBpZgogICogdGhleSBjb250YWluIDAgY2hhcnMgKi8KQEAgLTQ2MSw3ICs0NjgsNyBAQAogICAgIHVybD1hcmd2WzFdOy8qIHVzZSBwYXNzZWQgdXJsICovCiAKICAgLyogY29weSBmcm9tIHVybCBsaW5lIGJ5IGxpbmUgd2l0aCBmZ2V0cyAqLwotICBvdXRmPWZvcGVuKCJmZ2V0cy50ZXN0IiwidysiKTsKKyAgb3V0Zj1mb3BlbihGR0VUU0ZJTEUsICJ3YisiKTsKICAgaWYoIW91dGYpIHsKICAgICBwZXJyb3IoImNvdWxkbid0IG9wZW4gZmdldHMgb3V0cHV0IGZpbGVcbiIpOwogICAgIHJldHVybiAxOwpAQCAtNDc1LDggKzQ4Miw4IEBACiAgIH0KIAogICB3aGlsZSghdXJsX2Zlb2YoaGFuZGxlKSkgewotICAgIHVybF9mZ2V0cyhidWZmZXIsc2l6ZW9mKGJ1ZmZlciksaGFuZGxlKTsKLSAgICBmd3JpdGUoYnVmZmVyLDEsc3RybGVuKGJ1ZmZlciksb3V0Zik7CisgICAgdXJsX2ZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGhhbmRsZSk7CisgICAgZndyaXRlKGJ1ZmZlciwgMSwgc3RybGVuKGJ1ZmZlciksIG91dGYpOwogICB9CiAKICAgdXJsX2ZjbG9zZShoYW5kbGUpOwpAQCAtNDg1LDcgKzQ5Miw3IEBACiAKIAogICAvKiBDb3B5IGZyb20gdXJsIHdpdGggZnJlYWQgKi8KLSAgb3V0Zj1mb3BlbigiZnJlYWQudGVzdCIsIncrIik7CisgIG91dGY9Zm9wZW4oRlJFQURGSUxFLCAid2IrIik7CiAgIGlmKCFvdXRmKSB7CiAgICAgcGVycm9yKCJjb3VsZG4ndCBvcGVuIGZyZWFkIG91dHB1dCBmaWxlXG4iKTsKICAgICByZXR1cm4gMTsKQEAgLTUwMCw3ICs1MDcsNyBAQAogCiAgIGRvIHsKICAgICBucmVhZCA9IHVybF9mcmVhZChidWZmZXIsIDEsIHNpemVvZihidWZmZXIpLCBoYW5kbGUpOwotICAgIGZ3cml0ZShidWZmZXIsMSxucmVhZCxvdXRmKTsKKyAgICBmd3JpdGUoYnVmZmVyLCAxLCBucmVhZCwgb3V0Zik7CiAgIH0gd2hpbGUobnJlYWQpOwogCiAgIHVybF9mY2xvc2UoaGFuZGxlKTsKQEAgLTUwOSw3ICs1MTYsNyBAQAogCiAKICAgLyogVGVzdCByZXdpbmQgKi8KLSAgb3V0Zj1mb3BlbigicmV3aW5kLnRlc3QiLCJ3KyIpOworICBvdXRmPWZvcGVuKFJFV0lOREZJTEUsICJ3YisiKTsKICAgaWYoIW91dGYpIHsKICAgICBwZXJyb3IoImNvdWxkbid0IG9wZW4gZnJlYWQgb3V0cHV0IGZpbGVcbiIpOwogICAgIHJldHVybiAxOwpAQCAtNTIyLDIxICs1MjksMTkgQEAKICAgICByZXR1cm4gMjsKICAgfQogCi0gIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSxzaXplb2YoYnVmZmVyKSwgaGFuZGxlKTsKLSAgZndyaXRlKGJ1ZmZlciwxLG5yZWFkLG91dGYpOworICBucmVhZCA9IHVybF9mcmVhZChidWZmZXIsIDEsIHNpemVvZihidWZmZXIpLCBoYW5kbGUpOworICBmd3JpdGUoYnVmZmVyLCAxLCBucmVhZCwgb3V0Zik7CiAgIHVybF9yZXdpbmQoaGFuZGxlKTsKIAogICBidWZmZXJbMF09J1xuJzsKLSAgZndyaXRlKGJ1ZmZlciwxLDEsb3V0Zik7CisgIGZ3cml0ZShidWZmZXIsIDEsIDEsIG91dGYpOwogCi0gIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSxzaXplb2YoYnVmZmVyKSwgaGFuZGxlKTsKLSAgZndyaXRlKGJ1ZmZlciwxLG5yZWFkLG91dGYpOwotCisgIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSwgc2l6ZW9mKGJ1ZmZlciksIGhhbmRsZSk7CisgIGZ3cml0ZShidWZmZXIsIDEsIG5yZWFkLCBvdXRmKTsKIAogICB1cmxfZmNsb3NlKGhhbmRsZSk7CiAKICAgZmNsb3NlKG91dGYpOwogCi0KICAgcmV0dXJuIDA7LyogYWxsIGRvbmUgKi8KIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwLXdpbGRjYXJkLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cC13aWxkY2FyZC5jCmluZGV4IGQxNzVkZGYuLmYyNDliYzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZnRwLXdpbGRjYXJkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHAtd2lsZGNhcmQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIEZUUCB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoaW5nCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC0xMTUsNyArMTE5LDcgQEAKICAgICAgIHJldHVybiBDVVJMX0NIVU5LX0JHTl9GVU5DX1NLSVA7CiAgICAgfQogCi0gICAgZGF0YS0+b3V0cHV0ID0gZm9wZW4oZmluZm8tPmZpbGVuYW1lLCAidyIpOworICAgIGRhdGEtPm91dHB1dCA9IGZvcGVuKGZpbmZvLT5maWxlbmFtZSwgIndiIik7CiAgICAgaWYoIWRhdGEtPm91dHB1dCkgewogICAgICAgcmV0dXJuIENVUkxfQ0hVTktfQkdOX0ZVTkNfRkFJTDsKICAgICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2Z0cGdldC5jIGIvZG9jcy9leGFtcGxlcy9mdHBnZXQuYwppbmRleCAyODUyODNmLi45YjdkYzAyIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2Z0cGdldC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZnRwZ2V0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxMSArMjMsOSBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZ2V0IGEgc2luZ2xlIGZpbGUgZnJvbSBhbiBGVFAgc2VydmVyLgotICogSXQgZGVsYXlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gZmlsZSBjcmVhdGlvbiB1bnRpbCB0aGUgZmlyc3Qgd3JpdGUKLSAqIGNhbGxiYWNrIHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGFuIGVtcHR5IGZpbGUgaW4gY2FzZSB0aGUgcmVtb3RlIGZpbGUKLSAqIGRvZXNuJ3QgZXhpc3Qgb3Igc29tZXRoaW5nIGVsc2UgZmFpbHMuCisvKiA8REVTQz4KKyAqIEdldCBhIHNpbmdsZSBmaWxlIGZyb20gYW4gRlRQIHNlcnZlci4KKyAqIDwvREVTQz4KICAqLwogCiBzdHJ1Y3QgRnRwRmlsZSB7CkBAIC02NSw3ICs2Myw3IEBACiAgICAgICogWW91IGJldHRlciByZXBsYWNlIHRoZSBVUkwgd2l0aCBvbmUgdGhhdCB3b3JrcyEKICAgICAgKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLAotICAgICAgICAgICAgICAgICAgICAgImZ0cDovL2Z0cC5leGFtcGxlLmNvbS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsL2N1cmwtNy45LjIudGFyLmd6Iik7CisgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vZnRwLmV4YW1wbGUuY29tL2N1cmwvY3VybC03LjkuMi50YXIuZ3oiKTsKICAgICAvKiBEZWZpbmUgb3VyIGNhbGxiYWNrIHRvIGdldCBjYWxsZWQgd2hlbiB0aGVyZSdzIGRhdGEgdG8gYmUgd3JpdHRlbiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBteV9md3JpdGUpOwogICAgIC8qIFNldCBhIHBvaW50ZXIgdG8gb3VyIHN0cnVjdCB0byBwYXNzIHRvIHRoZSBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mdHBnZXRpbmZvLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYwppbmRleCBkZmRjZjc4Li4yNzdlNTJiIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYworKysgYi9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDkgKzI0LDkgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0vKgotICogVGhpcyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNoZWNrIGEgc2luZ2xlIGZpbGUncyBzaXplIGFuZCBtdGltZQotICogZnJvbSBhbiBGVFAgc2VydmVyLgorLyogPERFU0M+CisgKiBDaGVja3MgYSBzaW5nbGUgZmlsZSdzIHNpemUgYW5kIG10aW1lIGZyb20gYW4gRlRQIHNlcnZlci4KKyAqIDwvREVTQz4KICAqLwogCiBzdGF0aWMgc2l6ZV90IHRocm93X2F3YXkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpkYXRhKQpAQCAtNjUsMTYgKzY1LDE4IEBACiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAKICAgICBpZihDVVJMRV9PSyA9PSByZXMpIHsKLSAgICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9nZXRpbmZvLmh0bWwgKi8KKyAgICAgIC8qIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfZ2V0aW5mby5odG1sICovCiAgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19GSUxFVElNRSwgJmZpbGV0aW1lKTsKICAgICAgIGlmKChDVVJMRV9PSyA9PSByZXMpICYmIChmaWxldGltZSA+PSAwKSkgewogICAgICAgICB0aW1lX3QgZmlsZV90aW1lID0gKHRpbWVfdClmaWxldGltZTsKICAgICAgICAgcHJpbnRmKCJmaWxldGltZSAlczogJXMiLCBmaWxlbmFtZSwgY3RpbWUoJmZpbGVfdGltZSkpOwogICAgICAgfQotICAgICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQsICZmaWxlc2l6ZSk7CisgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlc2l6ZSk7CiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAoZmlsZXNpemU+MC4wKSkKICAgICAgICAgcHJpbnRmKCJmaWxlc2l6ZSAlczogJTAuMGYgYnl0ZXNcbiIsIGZpbGVuYW1lLCBmaWxlc2l6ZSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAvKiB3ZSBmYWlsZWQgKi8KICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybCB0b2xkIHVzICVkXG4iLCByZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwZ2V0cmVzcC5jIGIvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKaW5kZXggZGNiMjk2YS4uN2RjMzQ0MCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxMyArMjMsMTEgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0vKgotICogU2ltaWxhciB0byBmdHBnZXQuYyBidXQgdGhpcyBhbHNvIHN0b3JlcyB0aGUgcmVjZWl2ZWQgcmVzcG9uc2UtbGluZXMKKy8qIDxERVNDPgorICogU2ltaWxhciB0byBmdHBnZXQuYyBidXQgYWxzbyBzdG9yZXMgdGhlIHJlY2VpdmVkIHJlc3BvbnNlLWxpbmVzCiAgKiBpbiBhIHNlcGFyYXRlIGZpbGUgdXNpbmcgb3VyIG93biBjYWxsYmFjayEKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgd2FzIGludHJvZHVjZWQgaW4gbGliY3VybCA3LjkuMy4KKyAqIDwvREVTQz4KICAqLwotCiBzdGF0aWMgc2l6ZV90CiB3cml0ZV9yZXNwb25zZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKmRhdGEpCiB7CkBAIC0zNyw2ICszNSw5IEBACiAgIHJldHVybiBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgd3JpdGVoZXJlKTsKIH0KIAorI2RlZmluZSBGVFBCT0RZICJmdHAtbGlzdCIKKyNkZWZpbmUgRlRQSEVBREVSUyAiZnRwLXJlc3BvbnNlcyIKKwogaW50IG1haW4odm9pZCkKIHsKICAgQ1VSTCAqY3VybDsKQEAgLTQ1LDEwICs0NiwxMCBAQAogICBGSUxFICpyZXNwZmlsZTsKIAogICAvKiBsb2NhbCBmaWxlIG5hbWUgdG8gc3RvcmUgdGhlIGZpbGUgYXMgKi8KLSAgZnRwZmlsZSA9IGZvcGVuKCJmdHAtbGlzdCIsICJ3YiIpOyAvKiBiIGlzIGJpbmFyeSwgbmVlZGVkIG9uIHdpbjMyICovCisgIGZ0cGZpbGUgPSBmb3BlbihGVFBCT0RZLCAid2IiKTsgLyogYiBpcyBiaW5hcnksIG5lZWRlZCBvbiB3aW4zMiAqLwogCiAgIC8qIGxvY2FsIGZpbGUgbmFtZSB0byBzdG9yZSB0aGUgRlRQIHNlcnZlcidzIHJlc3BvbnNlIGxpbmVzIGluICovCi0gIHJlc3BmaWxlID0gZm9wZW4oImZ0cC1yZXNwb25zZXMiLCAid2IiKTsgLyogYiBpcyBiaW5hcnksIG5lZWRlZCBvbiB3aW4zMiAqLworICByZXNwZmlsZSA9IGZvcGVuKEZUUEhFQURFUlMsICJ3YiIpOyAvKiBiIGlzIGJpbmFyeSwgbmVlZGVkIG9uIHdpbjMyICovCiAKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwc2dldC5jIGIvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKaW5kZXggZGFlNDUzNC4uZDUzZjA4OCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMSArMjQsOSBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZ2V0IGEgc2luZ2xlIGZpbGUgZnJvbSBhbiBGVFBTIHNlcnZlci4KLSAqIEl0IGRlbGF5cyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIGZpbGUgY3JlYXRpb24gdW50aWwgdGhlIGZpcnN0IHdyaXRlCi0gKiBjYWxsYmFjayBzbyB0aGF0IGl0IHdvbid0IGNyZWF0ZSBhbiBlbXB0eSBmaWxlIGluIGNhc2UgdGhlIHJlbW90ZSBmaWxlCi0gKiBkb2Vzbid0IGV4aXN0IG9yIHNvbWV0aGluZyBlbHNlIGZhaWxzLgorLyogPERFU0M+CisgKiBHZXQgYSBzaW5nbGUgZmlsZSBmcm9tIGFuIEZUUFMgc2VydmVyLgorICogPC9ERVNDPgogICovCiAKIHN0cnVjdCBGdHBGaWxlIHsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cHVwbG9hZC5jCmluZGV4IGU3OWY4ZDguLmJiYTBjNGQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDExICszMywxMCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLS8qCi0gKiBUaGlzIGV4YW1wbGUgc2hvd3MgYW4gRlRQIHVwbG9hZCwgd2l0aCBhIHJlbmFtZSBvZiB0aGUgZmlsZSBqdXN0IGFmdGVyCi0gKiBhIHN1Y2Nlc3NmdWwgdXBsb2FkLgotICoKLSAqIEV4YW1wbGUgYmFzZWQgb24gc291cmNlIGNvZGUgcHJvdmlkZWQgYnkgRXJpY2sgTnV3ZW5kYW0uIFRoYW5rcyEKKy8qIDxERVNDPgorICogUGVyZm9ybXMgYW4gRlRQIHVwbG9hZCBhbmQgcmVuYW1lcyB0aGUgZmlsZSBqdXN0IGFmdGVyIGEgc3VjY2Vzc2Z1bAorICogdHJhbnNmZXIuCisgKiA8L0RFU0M+CiAgKi8KIAogI2RlZmluZSBMT0NBTF9GSUxFICAgICAgIi90bXAvdXBsb2FkdGhpcy50eHQiCkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCk7CiAKICAgICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgUkVNT1RFX1VSTCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgUkVNT1RFX1VSTCk7CiAKICAgICAvKiBwYXNzIGluIHRoYXQgbGFzdCBvZiBGVFAgY29tbWFuZHMgdG8gcnVuIGFmdGVyIHRoZSB0cmFuc2ZlciAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NUUVVPVEUsIGhlYWRlcmxpc3QpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWRyZXN1bWUuYyBiL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkcmVzdW1lLmMKaW5kZXggNTViODk4Ni4uNjQxNTYzNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWRyZXN1bWUuYworKysgYi9kb2NzL2V4YW1wbGVzL2Z0cHVwbG9hZHJlc3VtZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTMgKzE5LDkgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFVwbG9hZCB0byBGVFAsIHJlc3VtaW5nIGZhaWxlZCB0cmFuc2ZlcnMKLSAqCi0gKiBDb21waWxlIGZvciBNaW5HVyBsaWtlIHRoaXM6Ci0gKiAgZ2NjIC1XYWxsIC1wZWRhbnRpYyAtc3RkPWM5OSBmdHB1cGxvYWR3aXRocmVzdW1lLmMgLW8gZnRwdXBsb2FkcmVzdW1lLmV4ZQotICogIC1sY3VybCAtbG1zdmNyNzAKLSAqCi0gKiBXcml0dGVuIGJ5IFBoaWxpcCBCb2NrCisvKiA8REVTQz4KKyAqIFVwbG9hZCB0byBGVFAsIHJlc3VtaW5nIGZhaWxlZCB0cmFuc2ZlcnMuCisgKiA8L0RFU0M+CiAgKi8KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDAsNyArMzYsOCBAQAogLyogVGhlIE1pbkdXIGhlYWRlcnMgYXJlIG1pc3NpbmcgYSBmZXcgV2luMzIgZnVuY3Rpb24gZGVmaW5pdGlvbnMsCiAgICB5b3Ugc2hvdWxkbid0IG5lZWQgdGhpcyBpZiB5b3UgdXNlIFZDKysgKi8KICNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfX01JTkdXNjRfXykKLWludCBfX2NkZWNsIF9zbnNjYW5mKGNvbnN0IGNoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKTsKK2ludCBfX2NkZWNsIF9zbnNjYW5mKGNvbnN0IGNoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLik7CiAjZW5kaWYKIAogCkBAIC01Myw3ICs1MCw3IEBACiAgIC8qIF9zbnNjYW5mKCkgaXMgV2luMzIgc3BlY2lmaWMgKi8KICAgciA9IF9zbnNjYW5mKHB0ciwgc2l6ZSAqIG5tZW1iLCAiQ29udGVudC1MZW5ndGg6ICVsZFxuIiwgJmxlbik7CiAKLSAgaWYgKHIpIC8qIE1pY3Jvc29mdDogd2UgZG9uJ3QgcmVhZCB0aGUgc3BlY3MgKi8KKyAgaWYocikgLyogTWljcm9zb2Z0OiB3ZSBkb24ndCByZWFkIHRoZSBzcGVjcyAqLwogICAgICooKGxvbmcgKikgc3RyZWFtKSA9IGxlbjsKIAogICByZXR1cm4gc2l6ZSAqIG5tZW1iOwpAQCAtNzEsNyArNjgsNyBAQAogICBGSUxFICpmID0gc3RyZWFtOwogICBzaXplX3QgbjsKIAotICBpZiAoZmVycm9yKGYpKQorICBpZihmZXJyb3IoZikpCiAgICAgcmV0dXJuIENVUkxfUkVBREZVTkNfQUJPUlQ7CiAKICAgbiA9IGZyZWFkKHB0ciwgc2l6ZSwgbm1lbWIsIGYpICogc2l6ZTsKQEAgLTg5LDcgKzg2LDcgQEAKICAgaW50IGM7CiAKICAgZiA9IGZvcGVuKGxvY2FscGF0aCwgInJiIik7Ci0gIGlmIChmID09IE5VTEwpIHsKKyAgaWYoIWYpIHsKICAgICBwZXJyb3IoTlVMTCk7CiAgICAgcmV0dXJuIDA7CiAgIH0KQEAgLTk4LDcgKzk1LDcgQEAKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfVVJMLCByZW1vdGVwYXRoKTsKIAotICBpZiAodGltZW91dCkKKyAgaWYodGltZW91dCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQsIHRpbWVvdXQpOwogCiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybGhhbmRsZSwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgZ2V0Y29udGVudGxlbmd0aGZ1bmMpOwpAQCAtMTA5LDE0ICsxMDYsMTUgQEAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX1JFQURGVU5DVElPTiwgcmVhZGZ1bmMpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfUkVBRERBVEEsIGYpOwogCi0gIGN1cmxfZWFzeV9zZXRvcHQoY3VybGhhbmRsZSwgQ1VSTE9QVF9GVFBQT1JULCAiLSIpOyAvKiBkaXNhYmxlIHBhc3NpdmUgbW9kZSAqLworICAvKiBkaXNhYmxlIHBhc3NpdmUgbW9kZSAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfRlRQUE9SVCwgIi0iKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLCAxTCk7CiAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKIAotICBmb3IgKGMgPSAwOyAociAhPSBDVVJMRV9PSykgJiYgKGMgPCB0cmllcyk7IGMrKykgeworICBmb3IoYyA9IDA7IChyICE9IENVUkxFX09LKSAmJiAoYyA8IHRyaWVzKTsgYysrKSB7CiAgICAgLyogYXJlIHdlIHJlc3VtaW5nPyAqLwotICAgIGlmIChjKSB7IC8qIHllcyAqLworICAgIGlmKGMpIHsgLyogeWVzICovCiAgICAgICAvKiBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBhbHJlYWR5IHdyaXR0ZW4gKi8KIAogICAgICAgLyoKQEAgLTEzMSw3ICsxMjksNyBAQAogICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX0hFQURFUiwgMUwpOwogCiAgICAgICByID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybGhhbmRsZSk7Ci0gICAgICBpZiAociAhPSBDVVJMRV9PSykKKyAgICAgIGlmKHIgIT0gQ1VSTEVfT0spCiAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfTk9CT0RZLCAwTCk7CkBAIC0xNTAsNyArMTQ4LDcgQEAKIAogICBmY2xvc2UoZik7CiAKLSAgaWYgKHIgPT0gQ1VSTEVfT0spCisgIGlmKHIgPT0gQ1VSTEVfT0spCiAgICAgcmV0dXJuIDE7CiAgIGVsc2UgewogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyKSk7CkBAIC0xNjUsNyArMTYzLDggQEAKICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwogICBjdXJsaGFuZGxlID0gY3VybF9lYXN5X2luaXQoKTsKIAotICB1cGxvYWQoY3VybGhhbmRsZSwgImZ0cDovL3VzZXI6cGFzc0BleGFtcGxlLmNvbS9wYXRoL2ZpbGUiLCAiQzpcXGZpbGUiLCAwLCAzKTsKKyAgdXBsb2FkKGN1cmxoYW5kbGUsICJmdHA6Ly91c2VyOnBhc3NAZXhhbXBsZS5jb20vcGF0aC9maWxlIiwgIkM6XFxmaWxlIiwKKyAgICAgICAgIDAsIDMpOwogCiAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmxoYW5kbGUpOwogICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2dldGluZm8uYyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCmluZGV4IGFjYmUxZTEuLjU1ODU1NjQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVXNlIGdldGluZm8gdG8gZ2V0IGNvbnRlbnQtdHlwZSBhZnRlciBjb21wbGV0ZWQgdHJhbnNmZXIuCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC0yNywxOCArMzEsMTQgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwogCi0gIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9pbml0Lmh0bWwgKi8KICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKLSAgICAvKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwjQ1VSTE9QVFVSTCAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOwotICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9wZXJmb3JtLmh0bWwgKi8KICAgICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIAogICAgIGlmKENVUkxFX09LID09IHJlcykgewogICAgICAgY2hhciAqY3Q7CiAgICAgICAvKiBhc2sgZm9yIHRoZSBjb250ZW50LXR5cGUgKi8KLSAgICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9nZXRpbmZvLmh0bWwgKi8KICAgICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0NPTlRFTlRfVFlQRSwgJmN0KTsKIAogICAgICAgaWYoKENVUkxFX09LID09IHJlcykgJiYgY3QpCkBAIC00Niw3ICs0Niw2IEBACiAgICAgfQogCiAgICAgLyogYWx3YXlzIGNsZWFudXAgKi8KLSAgICAvKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfY2xlYW51cC5odG1sICovCiAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgIH0KICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2dldGlubWVtb3J5LmMgYi9kb2NzL2V4YW1wbGVzL2dldGlubWVtb3J5LmMKaW5kZXggYTFjMjE0MC4uZmI3OTQ3OCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9nZXRpbm1lbW9yeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5tZW1vcnkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBFeGFtcGxlIHNvdXJjZSBjb2RlIHRvIHNob3cgaG93IHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0bwotICogZG93bmxvYWQgZGF0YSBpbnRvIGEgY2h1bmsgb2YgbWVtb3J5IGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGZpbGUuCisvKiA8REVTQz4KKyAqIFNob3dzIGhvdyB0aGUgd3JpdGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZG93bmxvYWQgZGF0YSBpbnRvIGEKKyAqIGNodW5rIG9mIG1lbW9yeSBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBmaWxlLgorICogPC9ERVNDPgogICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzQsNyArMzYsNiBAQAogICBzaXplX3Qgc2l6ZTsKIH07CiAKLQogc3RhdGljIHNpemVfdAogV3JpdGVNZW1vcnlDYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqdXNlcnApCiB7CkBAIC01NSw3ICs1Niw2IEBACiAgIHJldHVybiByZWFsc2l6ZTsKIH0KIAotCiBpbnQgbWFpbih2b2lkKQogewogICBDVVJMICpjdXJsX2hhbmRsZTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZ2V0cmVkaXJlY3QuYyBiL2RvY3MvZXhhbXBsZXMvZ2V0cmVkaXJlY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDdiMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9leGFtcGxlcy9nZXRyZWRpcmVjdC5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogU2hvdyBob3cgdG8gZXh0cmFjdCBMb2NhdGlvbjogaGVhZGVyIGFuZCBVUkwgdG8gcmVkaXJlY3QgdG8uCisgKiA8L0RFU0M+CisgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitpbnQgbWFpbih2b2lkKQoreworICBDVVJMICpjdXJsOworICBDVVJMY29kZSByZXM7CisgIGNoYXIgKmxvY2F0aW9uOworICBsb25nIHJlc3BvbnNlX2NvZGU7CisKKyAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CisgIGlmKGN1cmwpIHsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgICAvKiBleGFtcGxlLmNvbSBpcyByZWRpcmVjdGVkLCBmaWd1cmUgb3V0IHRoZSByZWRpcmVjdGlvbiEgKi8KKworICAgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QsIHJlcyB3aWxsIGdldCB0aGUgcmV0dXJuIGNvZGUgKi8KKyAgICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKKyAgICAvKiBDaGVjayBmb3IgZXJyb3JzICovCisgICAgaWYocmVzICE9IENVUkxFX09LKQorICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICAgIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgICBlbHNlIHsKKyAgICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsICZyZXNwb25zZV9jb2RlKTsKKyAgICAgIGlmKChyZXMgPT0gQ1VSTEVfT0spICYmCisgICAgICAgICAoKHJlc3BvbnNlX2NvZGUgLyAxMDApICE9IDMpKSB7CisgICAgICAgIC8qIGEgcmVkaXJlY3QgaW1wbGllcyBhIDN4eCByZXNwb25zZSBjb2RlICovCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTm90IGEgcmVkaXJlY3QuXG4iKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19SRURJUkVDVF9VUkwsICZsb2NhdGlvbik7CisKKyAgICAgICAgaWYoKHJlcyA9PSBDVVJMRV9PSykgJiYgbG9jYXRpb24pIHsKKyAgICAgICAgICAvKiBUaGlzIGlzIHRoZSBuZXcgYWJzb2x1dGUgVVJMIHRoYXQgeW91IGNvdWxkIHJlZGlyZWN0IHRvLCBldmVuIGlmCisgICAgICAgICAgICogdGhlIExvY2F0aW9uOiByZXNwb25zZSBoZWFkZXIgbWF5IGhhdmUgYmVlbiBhIHJlbGF0aXZlIFVSTC4gKi8KKyAgICAgICAgICBwcmludGYoIlJlZGlyZWN0ZWQgdG86ICVzXG4iLCBsb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBhbHdheXMgY2xlYW51cCAqLworICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOworICB9CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9naGlwZXIuYyBiL2RvY3MvZXhhbXBsZXMvZ2hpcGVyLmMKaW5kZXggNzU3MWZmYS4uNzMxN2E2MyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9naGlwZXIuYworKysgYi9kb2NzL2V4YW1wbGVzL2doaXBlci5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMzggKzE5LDQxIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIG11bHRpIHNvY2tldCBBUEkgdXNhZ2UgdG9nZXRoZXIgd2l0aCB3aXRoIGdsaWIyCisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8KICAqIGRvd25sb2FkIG1hbnkgZmlsZXMgYXQgb25jZS4KICAqCiAgKiBXcml0dGVuIGJ5IEplZmYgUG9obG1leWVyCiAKLVJlcXVpcmVzIGdsaWItMi54IGFuZCBhIChQT1NJWD8pIHN5c3RlbSB0aGF0IGhhcyBta2ZpZm8oKS4KKyBSZXF1aXJlcyBnbGliLTIueCBhbmQgYSAoUE9TSVg/KSBzeXN0ZW0gdGhhdCBoYXMgbWtmaWZvKCkuCiAKLVRoaXMgaXMgYW4gYWRhcHRhdGlvbiBvZiBsaWJjdXJsJ3MgImhpcGV2LmMiIGFuZCBsaWJldmVudCdzICJldmVudC10ZXN0LmMiCi1zYW1wbGUgcHJvZ3JhbXMsIGFkYXB0ZWQgdG8gdXNlIGdsaWIncyBnX2lvX2NoYW5uZWwgaW4gcGxhY2Ugb2YgbGliZXZlbnQuCisgVGhpcyBpcyBhbiBhZGFwdGF0aW9uIG9mIGxpYmN1cmwncyAiaGlwZXYuYyIgYW5kIGxpYmV2ZW50J3MgImV2ZW50LXRlc3QuYyIKKyBzYW1wbGUgcHJvZ3JhbXMsIGFkYXB0ZWQgdG8gdXNlIGdsaWIncyBnX2lvX2NoYW5uZWwgaW4gcGxhY2Ugb2YgbGliZXZlbnQuCiAKLVdoZW4gcnVubmluZywgdGhlIHByb2dyYW0gY3JlYXRlcyB0aGUgbmFtZWQgcGlwZSAiaGlwZXIuZmlmbyIKKyBXaGVuIHJ1bm5pbmcsIHRoZSBwcm9ncmFtIGNyZWF0ZXMgdGhlIG5hbWVkIHBpcGUgImhpcGVyLmZpZm8iCiAKLVdoZW5ldmVyIHRoZXJlIGlzIGlucHV0IGludG8gdGhlIGZpZm8sIHRoZSBwcm9ncmFtIHJlYWRzIHRoZSBpbnB1dCBhcyBhIGxpc3QKLW9mIFVSTCdzIGFuZCBjcmVhdGVzIHNvbWUgbmV3IGVhc3kgaGFuZGxlcyB0byBmZXRjaCBlYWNoIFVSTCB2aWEgdGhlCi1jdXJsX211bHRpICJoaXBlciIgQVBJLgorIFdoZW5ldmVyIHRoZXJlIGlzIGlucHV0IGludG8gdGhlIGZpZm8sIHRoZSBwcm9ncmFtIHJlYWRzIHRoZSBpbnB1dCBhcyBhIGxpc3QKKyBvZiBVUkwncyBhbmQgY3JlYXRlcyBzb21lIG5ldyBlYXN5IGhhbmRsZXMgdG8gZmV0Y2ggZWFjaCBVUkwgdmlhIHRoZQorIGN1cmxfbXVsdGkgImhpcGVyIiBBUEkuCiAKIAotVGh1cywgeW91IGNhbiB0cnkgYSBzaW5nbGUgVVJMOgotICAlIGVjaG8gaHR0cDovL3d3dy55YWhvby5jb20gPiBoaXBlci5maWZvCisgVGh1cywgeW91IGNhbiB0cnkgYSBzaW5nbGUgVVJMOgorICUgZWNobyBodHRwOi8vd3d3LnlhaG9vLmNvbSA+IGhpcGVyLmZpZm8KIAotT3IgYSB3aG9sZSBidW5jaCBvZiB0aGVtOgotICAlIGNhdCBteS11cmwtbGlzdCA+IGhpcGVyLmZpZm8KKyBPciBhIHdob2xlIGJ1bmNoIG9mIHRoZW06CisgJSBjYXQgbXktdXJsLWxpc3QgPiBoaXBlci5maWZvCiAKLVRoZSBmaWZvIGJ1ZmZlciBpcyBoYW5kbGVkIGFsbW9zdCBpbnN0YW50bHksIHNvIHlvdSBjYW4gZXZlbiBhZGQgbW9yZSBVUkwncwotd2hpbGUgdGhlIHByZXZpb3VzIHJlcXVlc3RzIGFyZSBzdGlsbCBiZWluZyBkb3dubG9hZGVkLgorIFRoZSBmaWZvIGJ1ZmZlciBpcyBoYW5kbGVkIGFsbW9zdCBpbnN0YW50bHksIHNvIHlvdSBjYW4gZXZlbiBhZGQgbW9yZSBVUkwncworIHdoaWxlIHRoZSBwcmV2aW91cyByZXF1ZXN0cyBhcmUgc3RpbGwgYmVpbmcgZG93bmxvYWRlZC4KIAotVGhpcyBpcyBwdXJlbHkgYSBkZW1vIGFwcCwgYWxsIHJldHJpZXZlZCBkYXRhIGlzIHNpbXBseSBkaXNjYXJkZWQgYnkgdGhlIHdyaXRlCi1jYWxsYmFjay4KKyBUaGlzIGlzIHB1cmVseSBhIGRlbW8gYXBwLCBhbGwgcmV0cmlldmVkIGRhdGEgaXMgc2ltcGx5IGRpc2NhcmRlZCBieSB0aGUgd3JpdGUKKyBjYWxsYmFjay4KIAogKi8KIAotCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC02MCwxMyArNjMsMTAgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0KICNkZWZpbmUgTVNHX09VVCBnX3ByaW50ICAgLyogQ2hhbmdlIHRvICJnX2Vycm9yIiB0byB3cml0ZSB0byBzdGRlcnIgKi8KICNkZWZpbmUgU0hPV19WRVJCT1NFIDAgICAgLyogU2V0IHRvIG5vbi16ZXJvIGZvciBsaWJjdXJsIG1lc3NhZ2VzICovCiAjZGVmaW5lIFNIT1dfUFJPR1JFU1MgMCAgIC8qIFNldCB0byBub24temVybyB0byBlbmFibGUgcHJvZ3Jlc3MgY2FsbGJhY2sgKi8KIAotCi0KIC8qIEdsb2JhbCBpbmZvcm1hdGlvbiwgY29tbW9uIHRvIGFsbCBjb25uZWN0aW9ucyAqLwogdHlwZWRlZiBzdHJ1Y3QgX0dsb2JhbEluZm8gewogICBDVVJMTSAqbXVsdGk7CkBAIC03NCw4ICs3NCw2IEBACiAgIGludCBzdGlsbF9ydW5uaW5nOwogfSBHbG9iYWxJbmZvOwogCi0KLQogLyogSW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZWFzeSBoYW5kbGUgKi8KIHR5cGVkZWYgc3RydWN0IF9Db25uSW5mbyB7CiAgIENVUkwgKmVhc3k7CkBAIC04NCw3ICs4Miw2IEBACiAgIGNoYXIgZXJyb3JbQ1VSTF9FUlJPUl9TSVpFXTsKIH0gQ29ubkluZm87CiAKLQogLyogSW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgc29ja2V0ICovCiB0eXBlZGVmIHN0cnVjdCBfU29ja0luZm8gewogICBjdXJsX3NvY2tldF90IHNvY2tmZDsKQEAgLTk2LDMwICs5MywyNSBAQAogICBHbG9iYWxJbmZvICpnbG9iYWw7CiB9IFNvY2tJbmZvOwogCi0KLQotCiAvKiBEaWUgaWYgd2UgZ2V0IGEgYmFkIENVUkxNY29kZSBzb21ld2hlcmUgKi8KIHN0YXRpYyB2b2lkIG1jb2RlX29yX2RpZShjb25zdCBjaGFyICp3aGVyZSwgQ1VSTE1jb2RlIGNvZGUpIHsKLSAgaWYgKCBDVVJMTV9PSyAhPSBjb2RlICkgeworICBpZihDVVJMTV9PSyAhPSBjb2RlKSB7CiAgICAgY29uc3QgY2hhciAqczsKICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICAgIGNhc2UgICAgIENVUkxNX0JBRF9IQU5ETEU6ICAgICAgICAgcz0iQ1VSTE1fQkFEX0hBTkRMRSI7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICAgICBDVVJMTV9CQURfRUFTWV9IQU5ETEU6ICAgIHM9IkNVUkxNX0JBRF9FQVNZX0hBTkRMRSI7ICAgIGJyZWFrOwotICAgICAgY2FzZSAgICAgQ1VSTE1fT1VUX09GX01FTU9SWTogICAgICBzPSJDVVJMTV9PVVRfT0ZfTUVNT1JZIjsgICAgICBicmVhazsKLSAgICAgIGNhc2UgICAgIENVUkxNX0lOVEVSTkFMX0VSUk9SOiAgICAgcz0iQ1VSTE1fSU5URVJOQUxfRVJST1IiOyAgICAgYnJlYWs7Ci0gICAgICBjYXNlICAgICBDVVJMTV9CQURfU09DS0VUOiAgICAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAgICAgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKLSAgICAgIGNhc2UgICAgIENVUkxNX0xBU1Q6ICAgICAgICAgICAgICAgcz0iQ1VSTE1fTEFTVCI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBzPSJDVVJMTV91bmtub3duIjsKKyAgICBjYXNlICAgICBDVVJMTV9CQURfSEFORExFOiAgICAgICAgIHM9IkNVUkxNX0JBRF9IQU5ETEUiOyAgICAgICAgIGJyZWFrOworICAgIGNhc2UgICAgIENVUkxNX0JBRF9FQVNZX0hBTkRMRTogICAgcz0iQ1VSTE1fQkFEX0VBU1lfSEFORExFIjsgICAgYnJlYWs7CisgICAgY2FzZSAgICAgQ1VSTE1fT1VUX09GX01FTU9SWTogICAgICBzPSJDVVJMTV9PVVRfT0ZfTUVNT1JZIjsgICAgICBicmVhazsKKyAgICBjYXNlICAgICBDVVJMTV9JTlRFUk5BTF9FUlJPUjogICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsgICAgIGJyZWFrOworICAgIGNhc2UgICAgIENVUkxNX0JBRF9TT0NLRVQ6ICAgICAgICAgcz0iQ1VSTE1fQkFEX1NPQ0tFVCI7ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAgICAgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKKyAgICBjYXNlICAgICBDVVJMTV9MQVNUOiAgICAgICAgICAgICAgIHM9IkNVUkxNX0xBU1QiOyAgICAgICAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IHM9IkNVUkxNX3Vua25vd24iOwogICAgIH0KICAgICBNU0dfT1VUKCJFUlJPUjogJXMgcmV0dXJucyAlc1xuIiwgd2hlcmUsIHMpOwogICAgIGV4aXQoY29kZSk7CiAgIH0KIH0KIAotCi0KIC8qIENoZWNrIGZvciBjb21wbGV0ZWQgdHJhbnNmZXJzLCBhbmQgcmVtb3ZlIHRoZWlyIGVhc3kgaGFuZGxlcyAqLwogc3RhdGljIHZvaWQgY2hlY2tfbXVsdGlfaW5mbyhHbG9iYWxJbmZvICpnKQogewpAQCAtMTMxLDggKzEyMyw4IEBACiAgIENVUkxjb2RlIHJlczsKIAogICBNU0dfT1VUKCJSRU1BSU5JTkc6ICVkXG4iLCBnLT5zdGlsbF9ydW5uaW5nKTsKLSAgd2hpbGUgKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChnLT5tdWx0aSwgJm1zZ3NfbGVmdCkpKSB7Ci0gICAgaWYgKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgeworICB3aGlsZSgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZy0+bXVsdGksICZtc2dzX2xlZnQpKSkgeworICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgewogICAgICAgZWFzeSA9IG1zZy0+ZWFzeV9oYW5kbGU7CiAgICAgICByZXMgPSBtc2ctPmRhdGEucmVzdWx0OwogICAgICAgY3VybF9lYXN5X2dldGluZm8oZWFzeSwgQ1VSTElORk9fUFJJVkFURSwgJmNvbm4pOwpAQCAtMTQ2LDggKzEzOCw2IEBACiAgIH0KIH0KIAotCi0KIC8qIENhbGxlZCBieSBnbGliIHdoZW4gb3VyIHRpbWVvdXQgZXhwaXJlcyAqLwogc3RhdGljIGdib29sZWFuIHRpbWVyX2NiKGdwb2ludGVyIGRhdGEpCiB7CkBAIC0xNTUsMTQgKzE0NSwxMiBAQAogICBDVVJMTWNvZGUgcmM7CiAKICAgcmMgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oZy0+bXVsdGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwgJmctPnN0aWxsX3J1bm5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMX1NPQ0tFVF9USU1FT1VULCAwLCAmZy0+c3RpbGxfcnVubmluZyk7CiAgIG1jb2RlX29yX2RpZSgidGltZXJfY2I6IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbiIsIHJjKTsKICAgY2hlY2tfbXVsdGlfaW5mbyhnKTsKICAgcmV0dXJuIEZBTFNFOwogfQogCi0KLQogLyogVXBkYXRlIHRoZSBldmVudCB0aW1lciBhZnRlciBjdXJsX211bHRpIGxpYnJhcnkgY2FsbHMgKi8KIHN0YXRpYyBpbnQgdXBkYXRlX3RpbWVvdXRfY2IoQ1VSTE0gKm11bHRpLCBsb25nIHRpbWVvdXRfbXMsIHZvaWQgKnVzZXJwKQogewpAQCAtMTcyLDE1ICsxNjAsMTIgQEAKICAgdGltZW91dC50dl91c2VjID0gKHRpbWVvdXRfbXMlMTAwMCkqMTAwMDsKIAogICBNU0dfT1VUKCIqKiogdXBkYXRlX3RpbWVvdXRfY2IgJWxkID0+ICVsZDolbGQgKioqXG4iLAotICAgICAgICAgICAgICB0aW1lb3V0X21zLCB0aW1lb3V0LnR2X3NlYywgdGltZW91dC50dl91c2VjKTsKKyAgICAgICAgICB0aW1lb3V0X21zLCB0aW1lb3V0LnR2X3NlYywgdGltZW91dC50dl91c2VjKTsKIAogICBnLT50aW1lcl9ldmVudCA9IGdfdGltZW91dF9hZGQodGltZW91dF9tcywgdGltZXJfY2IsIGcpOwogICByZXR1cm4gMDsKIH0KIAotCi0KLQogLyogQ2FsbGVkIGJ5IGdsaWIgd2hlbiB3ZSBnZXQgYWN0aW9uIG9uIGEgbXVsdGkgc29ja2V0ICovCiBzdGF0aWMgZ2Jvb2xlYW4gZXZlbnRfY2IoR0lPQ2hhbm5lbCAqY2gsIEdJT0NvbmRpdGlvbiBjb25kaXRpb24sIGdwb2ludGVyIGRhdGEpCiB7CkBAIC0xOTgsNDEgKzE4Myw0MyBAQAogICBjaGVja19tdWx0aV9pbmZvKGcpOwogICBpZihnLT5zdGlsbF9ydW5uaW5nKSB7CiAgICAgcmV0dXJuIFRSVUU7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZSB7CiAgICAgTVNHX09VVCgibGFzdCB0cmFuc2ZlciBkb25lLCBraWxsIHRpbWVvdXRcbiIpOwotICAgIGlmIChnLT50aW1lcl9ldmVudCkgeyBnX3NvdXJjZV9yZW1vdmUoZy0+dGltZXJfZXZlbnQpOyB9CisgICAgaWYoZy0+dGltZXJfZXZlbnQpIHsKKyAgICAgIGdfc291cmNlX3JlbW92ZShnLT50aW1lcl9ldmVudCk7CisgICAgfQogICAgIHJldHVybiBGQUxTRTsKICAgfQogfQogCi0KLQogLyogQ2xlYW4gdXAgdGhlIFNvY2tJbmZvIHN0cnVjdHVyZSAqLwogc3RhdGljIHZvaWQgcmVtc29jayhTb2NrSW5mbyAqZikKIHsKLSAgaWYgKCFmKSB7IHJldHVybjsgfQotICBpZiAoZi0+ZXYpIHsgZ19zb3VyY2VfcmVtb3ZlKGYtPmV2KTsgfQorICBpZighZikgeworICAgIHJldHVybjsKKyAgfQorICBpZihmLT5ldikgeworICAgIGdfc291cmNlX3JlbW92ZShmLT5ldik7CisgIH0KICAgZ19mcmVlKGYpOwogfQogCi0KLQogLyogQXNzaWduIGluZm9ybWF0aW9uIHRvIGEgU29ja0luZm8gc3RydWN0dXJlICovCiBzdGF0aWMgdm9pZCBzZXRzb2NrKFNvY2tJbmZvKmYsIGN1cmxfc29ja2V0X3QgcywgQ1VSTCplLCBpbnQgYWN0LCBHbG9iYWxJbmZvKmcpCiB7CiAgIEdJT0NvbmRpdGlvbiBraW5kID0KLSAgICAgKGFjdCZDVVJMX1BPTExfSU4/R19JT19JTjowKXwoYWN0JkNVUkxfUE9MTF9PVVQ/R19JT19PVVQ6MCk7CisgICAgKGFjdCZDVVJMX1BPTExfSU4/R19JT19JTjowKXwoYWN0JkNVUkxfUE9MTF9PVVQ/R19JT19PVVQ6MCk7CiAKICAgZi0+c29ja2ZkID0gczsKICAgZi0+YWN0aW9uID0gYWN0OwogICBmLT5lYXN5ID0gZTsKLSAgaWYgKGYtPmV2KSB7IGdfc291cmNlX3JlbW92ZShmLT5ldik7IH0KLSAgZi0+ZXY9Z19pb19hZGRfd2F0Y2goZi0+Y2gsIGtpbmQsIGV2ZW50X2NiLGcpOwotCisgIGlmKGYtPmV2KSB7CisgICAgZ19zb3VyY2VfcmVtb3ZlKGYtPmV2KTsKKyAgfQorICBmLT5ldj1nX2lvX2FkZF93YXRjaChmLT5jaCwga2luZCwgZXZlbnRfY2IsIGcpOwogfQogCi0KLQogLyogSW5pdGlhbGl6ZSBhIG5ldyBTb2NrSW5mbyBzdHJ1Y3R1cmUgKi8KIHN0YXRpYyB2b2lkIGFkZHNvY2soY3VybF9zb2NrZXRfdCBzLCBDVVJMICplYXN5LCBpbnQgYWN0aW9uLCBHbG9iYWxJbmZvICpnKQogewpAQCAtMjQ0LDggKzIzMSw2IEBACiAgIGN1cmxfbXVsdGlfYXNzaWduKGctPm11bHRpLCBzLCBmZHApOwogfQogCi0KLQogLyogQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04gKi8KIHN0YXRpYyBpbnQgc29ja19jYihDVVJMICplLCBjdXJsX3NvY2tldF90IHMsIGludCB3aGF0LCB2b2lkICpjYnAsIHZvaWQgKnNvY2twKQogewpAQCAtMjU0LDE0ICsyMzksMTUgQEAKICAgc3RhdGljIGNvbnN0IGNoYXIgKndoYXRzdHJbXT17ICJub25lIiwgIklOIiwgIk9VVCIsICJJTk9VVCIsICJSRU1PVkUiIH07CiAKICAgTVNHX09VVCgic29ja2V0IGNhbGxiYWNrOiBzPSVkIGU9JXAgd2hhdD0lcyAiLCBzLCBlLCB3aGF0c3RyW3doYXRdKTsKLSAgaWYgKHdoYXQgPT0gQ1VSTF9QT0xMX1JFTU9WRSkgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBNU0dfT1VUKCJcbiIpOwogICAgIHJlbXNvY2soZmRwKTsKLSAgfSBlbHNlIHsKLSAgICBpZiAoIWZkcCkgeworICB9CisgIGVsc2UgeworICAgIGlmKCFmZHApIHsKICAgICAgIE1TR19PVVQoIkFkZGluZyBkYXRhOiAlcyVzXG4iLAotICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX0lOPyJSRUFEIjoiIiwKLSAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9PVVQ/IldSSVRFIjoiIiApOworICAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9JTj8iUkVBRCI6IiIsCisgICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX09VVD8iV1JJVEUiOiIiKTsKICAgICAgIGFkZHNvY2socywgZSwgd2hhdCwgZyk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMjczLDggKzI1OSw2IEBACiAgIHJldHVybiAwOwogfQogCi0KLQogLyogQ1VSTE9QVF9XUklURUZVTkNUSU9OICovCiBzdGF0aWMgc2l6ZV90IHdyaXRlX2NiKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqZGF0YSkKIHsKQEAgLTI4NSwzMCArMjY5LDI1IEBACiAgIHJldHVybiByZWFsc2l6ZTsKIH0KIAotCi0KIC8qIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiAqLwotc3RhdGljIGludCBwcm9nX2NiICh2b2lkICpwLCBkb3VibGUgZGx0b3RhbCwgZG91YmxlIGRsbm93LCBkb3VibGUgdWx0LCBkb3VibGUgdWxuKQorc3RhdGljIGludCBwcm9nX2NiICh2b2lkICpwLCBkb3VibGUgZGx0b3RhbCwgZG91YmxlIGRsbm93LCBkb3VibGUgdWx0LAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgdWxuKQogewogICBDb25uSW5mbyAqY29ubiA9IChDb25uSW5mbyAqKXA7CiAgIE1TR19PVVQoIlByb2dyZXNzOiAlcyAoJWcvJWcpXG4iLCBjb25uLT51cmwsIGRsbm93LCBkbHRvdGFsKTsKICAgcmV0dXJuIDA7CiB9CiAKLQotCiAvKiBDcmVhdGUgYSBuZXcgZWFzeSBoYW5kbGUsIGFuZCBhZGQgaXQgdG8gdGhlIGdsb2JhbCBjdXJsX211bHRpICovCi1zdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcgKQorc3RhdGljIHZvaWQgbmV3X2Nvbm4oY2hhciAqdXJsLCBHbG9iYWxJbmZvICpnKQogewogICBDb25uSW5mbyAqY29ubjsKICAgQ1VSTE1jb2RlIHJjOwogCiAgIGNvbm4gPSBnX21hbGxvYzAoc2l6ZW9mKENvbm5JbmZvKSk7Ci0KICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKLQogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCFjb25uLT5lYXN5KSB7CisgIGlmKCFjb25uLT5lYXN5KSB7CiAgICAgTVNHX09VVCgiY3VybF9lYXN5X2luaXQoKSBmYWlsZWQsIGV4aXRpbmchXG4iKTsKICAgICBleGl0KDIpOwogICB9CkBAIC0zMzYsOTMgKzMxNSw5MCBAQAogICAgICB0aGF0IHRoZSBuZWNlc3Nhcnkgc29ja2V0X2FjdGlvbigpIGNhbGwgd2lsbCBiZSBjYWxsZWQgYnkgdGhpcyBhcHAgKi8KIH0KIAotCiAvKiBUaGlzIGdldHMgY2FsbGVkIGJ5IGdsaWIgd2hlbmV2ZXIgZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSBmaWZvICovCiBzdGF0aWMgZ2Jvb2xlYW4gZmlmb19jYiAoR0lPQ2hhbm5lbCAqY2gsIEdJT0NvbmRpdGlvbiBjb25kaXRpb24sIGdwb2ludGVyIGRhdGEpCiB7Ci0gICNkZWZpbmUgQlVGX1NJWkUgMTAyNAorI2RlZmluZSBCVUZfU0laRSAxMDI0CiAgIGdzaXplIGxlbiwgdHA7CiAgIGdjaGFyICpidWYsICp0bXAsICphbGw9TlVMTDsKICAgR0lPU3RhdHVzIHJ2OwogCiAgIGRvIHsKICAgICBHRXJyb3IgKmVycj1OVUxMOwotICAgIHJ2ID0gZ19pb19jaGFubmVsX3JlYWRfbGluZSAoY2gsJmJ1ZiwmbGVuLCZ0cCwmZXJyKTsKLSAgICBpZiAoIGJ1ZiApIHsKLSAgICAgIGlmICh0cCkgeyBidWZbdHBdPSdcMCc7IH0KLSAgICAgIG5ld19jb25uKGJ1ZiwoR2xvYmFsSW5mbyopZGF0YSk7CisgICAgcnYgPSBnX2lvX2NoYW5uZWxfcmVhZF9saW5lKGNoLCAmYnVmLCAmbGVuLCAmdHAsICZlcnIpOworICAgIGlmKGJ1ZikgeworICAgICAgaWYodHApIHsKKyAgICAgICAgYnVmW3RwXT0nXDAnOworICAgICAgfQorICAgICAgbmV3X2Nvbm4oYnVmLCAoR2xvYmFsSW5mbyopZGF0YSk7CiAgICAgICBnX2ZyZWUoYnVmKTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgIGJ1ZiA9IGdfbWFsbG9jKEJVRl9TSVpFKzEpOwotICAgICAgd2hpbGUgKFRSVUUpIHsKKyAgICAgIHdoaWxlKFRSVUUpIHsKICAgICAgICAgYnVmW0JVRl9TSVpFXT0nXDAnOwotICAgICAgICBnX2lvX2NoYW5uZWxfcmVhZF9jaGFycyhjaCxidWYsQlVGX1NJWkUsJmxlbiwmZXJyKTsKLSAgICAgICAgaWYgKGxlbikgeworICAgICAgICBnX2lvX2NoYW5uZWxfcmVhZF9jaGFycyhjaCwgYnVmLCBCVUZfU0laRSwgJmxlbiwgJmVycik7CisgICAgICAgIGlmKGxlbikgewogICAgICAgICAgIGJ1ZltsZW5dPSdcMCc7Ci0gICAgICAgICAgaWYgKGFsbCkgeworICAgICAgICAgIGlmKGFsbCkgewogICAgICAgICAgICAgdG1wPWFsbDsKICAgICAgICAgICAgIGFsbD1nX3N0cmR1cF9wcmludGYoIiVzJXMiLCB0bXAsIGJ1Zik7CiAgICAgICAgICAgICBnX2ZyZWUodG1wKTsKLSAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFsbCA9IGdfc3RyZHVwKGJ1Zik7CiAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKGFsbCkgewotICAgICAgICBuZXdfY29ubihhbGwsKEdsb2JhbEluZm8qKWRhdGEpOworICAgICAgaWYoYWxsKSB7CisgICAgICAgIG5ld19jb25uKGFsbCwgKEdsb2JhbEluZm8qKWRhdGEpOwogICAgICAgICBnX2ZyZWUoYWxsKTsKICAgICAgIH0KICAgICAgIGdfZnJlZShidWYpOwogICAgIH0KLSAgICBpZiAoIGVyciApIHsKKyAgICBpZihlcnIpIHsKICAgICAgIGdfZXJyb3IoImZpZm9fY2I6ICVzIiwgZXJyLT5tZXNzYWdlKTsKICAgICAgIGdfZnJlZShlcnIpOwogICAgICAgYnJlYWs7CiAgICAgfQotICB9IHdoaWxlICggKGxlbikgJiYgKHJ2ID09IEdfSU9fU1RBVFVTX05PUk1BTCkgKTsKKyAgfSB3aGlsZSgobGVuKSAmJiAocnYgPT0gR19JT19TVEFUVVNfTk9STUFMKSk7CiAgIHJldHVybiBUUlVFOwogfQogCi0KLQotCiBpbnQgaW5pdF9maWZvKHZvaWQpCiB7Ci0gc3RydWN0IHN0YXQgc3Q7Ci0gY29uc3QgY2hhciAqZmlmbyA9ICJoaXBlci5maWZvIjsKLSBpbnQgc29ja2V0OworICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgY29uc3QgY2hhciAqZmlmbyA9ICJoaXBlci5maWZvIjsKKyAgaW50IHNvY2tldDsKIAotIGlmIChsc3RhdCAoZmlmbywgJnN0KSA9PSAwKSB7Ci0gIGlmICgoc3Quc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykgewotICAgZXJybm8gPSBFRVhJU1Q7Ci0gICBwZXJyb3IoImxzdGF0Iik7Ci0gICBleGl0ICgxKTsKKyAgaWYobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgeworICAgIGlmKChzdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSB7CisgICAgICBlcnJubyA9IEVFWElTVDsKKyAgICAgIHBlcnJvcigibHN0YXQiKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KICAgfQotIH0KIAotIHVubGluayAoZmlmbyk7Ci0gaWYgKG1rZmlmbyAoZmlmbywgMDYwMCkgPT0gLTEpIHsKLSAgcGVycm9yKCJta2ZpZm8iKTsKLSAgZXhpdCAoMSk7Ci0gfQorICB1bmxpbmsgKGZpZm8pOworICBpZihta2ZpZm8gKGZpZm8sIDA2MDApID09IC0xKSB7CisgICAgcGVycm9yKCJta2ZpZm8iKTsKKyAgICBleGl0ICgxKTsKKyAgfQogCi0gc29ja2V0ID0gb3BlbiAoZmlmbywgT19SRFdSIHwgT19OT05CTE9DSywgMCk7CisgIHNvY2tldCA9IG9wZW4gKGZpZm8sIE9fUkRXUiB8IE9fTk9OQkxPQ0ssIDApOwogCi0gaWYgKHNvY2tldCA9PSAtMSkgewotICBwZXJyb3IoIm9wZW4iKTsKLSAgZXhpdCAoMSk7Ci0gfQotIE1TR19PVVQoIk5vdywgcGlwZSBzb21lIFVSTCdzIGludG8gPiAlc1xuIiwgZmlmbyk7CisgIGlmKHNvY2tldCA9PSAtMSkgeworICAgIHBlcnJvcigib3BlbiIpOworICAgIGV4aXQgKDEpOworICB9CisgIE1TR19PVVQoIk5vdywgcGlwZSBzb21lIFVSTCdzIGludG8gPiAlc1xuIiwgZmlmbyk7CiAKLSByZXR1cm4gc29ja2V0OwotCisgIHJldHVybiBzb2NrZXQ7CiB9CiAKLQotCi0KIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgR2xvYmFsSW5mbyAqZzsKQEAgLTQzNCw4ICs0MTAsOCBAQAogCiAgIGZkPWluaXRfZmlmbygpOwogICBjaD1nX2lvX2NoYW5uZWxfdW5peF9uZXcoZmQpOwotICBnX2lvX2FkZF93YXRjaChjaCxHX0lPX0lOLGZpZm9fY2IsZyk7Ci0gIGdtYWluPWdfbWFpbl9sb29wX25ldyhOVUxMLEZBTFNFKTsKKyAgZ19pb19hZGRfd2F0Y2goY2gsIEdfSU9fSU4sIGZpZm9fY2IsIGcpOworICBnbWFpbj1nX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpOwogICBnLT5tdWx0aSA9IGN1cmxfbXVsdGlfaW5pdCgpOwogICBjdXJsX211bHRpX3NldG9wdChnLT5tdWx0aSwgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04sIHNvY2tfY2IpOwogICBjdXJsX211bHRpX3NldG9wdChnLT5tdWx0aSwgQ1VSTE1PUFRfU09DS0VUREFUQSwgZyk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2hpcGVyZmlmby5jIGIvZG9jcy9leGFtcGxlcy9oaXBlcmZpZm8uYwppbmRleCA4NDAzNWFhLi45OGJjYWZlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2hpcGVyZmlmby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaGlwZXJmaWZvLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBtdWx0aSBzb2NrZXQgQVBJIHVzYWdlIHdpdGggbGliZXZlbnQgMgorICogPC9ERVNDPgorICovCiAvKiBFeGFtcGxlIGFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIHVzaW5nIHRoZSBtdWx0aSBzb2NrZXQgaW50ZXJmYWNlIHRvCiAgICBkb3dubG9hZCBtYW55IGZpbGVzIGF0IG9uY2UuCiAKQEAgLTEyMiw3ICsxMjYsNyBAQAogLyogRGllIGlmIHdlIGdldCBhIGJhZCBDVVJMTWNvZGUgc29tZXdoZXJlICovCiBzdGF0aWMgdm9pZCBtY29kZV9vcl9kaWUoY29uc3QgY2hhciAqd2hlcmUsIENVUkxNY29kZSBjb2RlKQogewotICBpZiAoIENVUkxNX09LICE9IGNvZGUgKSB7CisgIGlmKENVUkxNX09LICE9IGNvZGUpIHsKICAgICBjb25zdCBjaGFyICpzOwogICAgIHN3aXRjaCAoY29kZSkgewogICAgICAgY2FzZSAgICAgQ1VSTE1fQkFEX0hBTkRMRTogICAgICAgICBzPSJDVVJMTV9CQURfSEFORExFIjsgICAgICAgICBicmVhazsKQEAgLTE1Niw4ICsxNjAsOCBAQAogICBDVVJMY29kZSByZXM7CiAKICAgZnByaW50ZihNU0dfT1VULCAiUkVNQUlOSU5HOiAlZFxuIiwgZy0+c3RpbGxfcnVubmluZyk7Ci0gIHdoaWxlICgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZy0+bXVsdGksICZtc2dzX2xlZnQpKSkgewotICAgIGlmIChtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKKyAgd2hpbGUoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGctPm11bHRpLCAmbXNnc19sZWZ0KSkpIHsKKyAgICBpZihtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKICAgICAgIGVhc3kgPSBtc2ctPmVhc3lfaGFuZGxlOwogICAgICAgcmVzID0gbXNnLT5kYXRhLnJlc3VsdDsKICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGVhc3ksIENVUkxJTkZPX1BSSVZBVEUsICZjb25uKTsKQEAgLTE4Nyw5ICsxOTEsOSBAQAogICBtY29kZV9vcl9kaWUoImV2ZW50X2NiOiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24iLCByYyk7CiAKICAgY2hlY2tfbXVsdGlfaW5mbyhnKTsKLSAgaWYgKCBnLT5zdGlsbF9ydW5uaW5nIDw9IDAgKSB7CisgIGlmKGctPnN0aWxsX3J1bm5pbmcgPD0gMCkgewogICAgIGZwcmludGYoTVNHX09VVCwgImxhc3QgdHJhbnNmZXIgZG9uZSwga2lsbCB0aW1lb3V0XG4iKTsKLSAgICBpZiAoZXZ0aW1lcl9wZW5kaW5nKGctPnRpbWVyX2V2ZW50LCBOVUxMKSkgeworICAgIGlmKGV2dGltZXJfcGVuZGluZyhnLT50aW1lcl9ldmVudCwgTlVMTCkpIHsKICAgICAgIGV2dGltZXJfZGVsKGctPnRpbWVyX2V2ZW50KTsKICAgICB9CiAgIH0KQEAgLTIxNiw4ICsyMjAsOCBAQAogLyogQ2xlYW4gdXAgdGhlIFNvY2tJbmZvIHN0cnVjdHVyZSAqLwogc3RhdGljIHZvaWQgcmVtc29jayhTb2NrSW5mbyAqZikKIHsKLSAgaWYgKGYpIHsKLSAgICBpZiAoZi0+ZXZzZXQpCisgIGlmKGYpIHsKKyAgICBpZihmLT5ldnNldCkKICAgICAgIGV2ZW50X2ZyZWUoZi0+ZXYpOwogICAgIGZyZWUoZik7CiAgIH0KQEAgLTIzNCw3ICsyMzgsNyBAQAogICBmLT5zb2NrZmQgPSBzOwogICBmLT5hY3Rpb24gPSBhY3Q7CiAgIGYtPmVhc3kgPSBlOwotICBpZiAoZi0+ZXZzZXQpCisgIGlmKGYtPmV2c2V0KQogICAgIGV2ZW50X2ZyZWUoZi0+ZXYpOwogICBmLT5ldiA9IGV2ZW50X25ldyhnLT5ldmJhc2UsIGYtPnNvY2tmZCwga2luZCwgZXZlbnRfY2IsIGcpOwogICBmLT5ldnNldCA9IDE7CkBAIC0yNjIsMTIgKzI2NiwxMiBAQAogCiAgIGZwcmludGYoTVNHX09VVCwKICAgICAgICAgICAic29ja2V0IGNhbGxiYWNrOiBzPSVkIGU9JXAgd2hhdD0lcyAiLCBzLCBlLCB3aGF0c3RyW3doYXRdKTsKLSAgaWYgKHdoYXQgPT0gQ1VSTF9QT0xMX1JFTU9WRSkgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJcbiIpOwogICAgIHJlbXNvY2soZmRwKTsKICAgfQogICBlbHNlIHsKLSAgICBpZiAoIWZkcCkgeworICAgIGlmKCFmZHApIHsKICAgICAgIGZwcmludGYoTVNHX09VVCwgIkFkZGluZyBkYXRhOiAlc1xuIiwgd2hhdHN0clt3aGF0XSk7CiAgICAgICBhZGRzb2NrKHMsIGUsIHdoYXQsIGcpOwogICAgIH0KQEAgLTMwOCw3ICszMTIsNyBAQAogCiAKIC8qIENyZWF0ZSBhIG5ldyBlYXN5IGhhbmRsZSwgYW5kIGFkZCBpdCB0byB0aGUgZ2xvYmFsIGN1cmxfbXVsdGkgKi8KLXN0YXRpYyB2b2lkIG5ld19jb25uKGNoYXIgKnVybCwgR2xvYmFsSW5mbyAqZyApCitzdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcpCiB7CiAgIENvbm5JbmZvICpjb25uOwogICBDVVJMTWNvZGUgcmM7CkBAIC0zMTgsNyArMzIyLDcgQEAKICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKIAogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCFjb25uLT5lYXN5KSB7CisgIGlmKCFjb25uLT5lYXN5KSB7CiAgICAgZnByaW50ZihNU0dfT1VULCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWQsIGV4aXRpbmchXG4iKTsKICAgICBleGl0KDIpOwogICB9CkBAIC0zMjYsNyArMzMwLDcgQEAKICAgY29ubi0+dXJsID0gc3RyZHVwKHVybCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9VUkwsIGNvbm4tPnVybCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZV9jYik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9XUklURURBVEEsICZjb25uKTsKKyAgY3VybF9lYXN5X3NldG9wdChjb25uLT5lYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgY29ubik7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgY29ubi0+ZXJyb3IpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfUFJJVkFURSwgY29ubik7CkBAIC0zNTYsMTAgKzM2MCwxMiBAQAogICAgIHNbMF09J1wwJzsKICAgICBydj1mc2NhbmYoZy0+aW5wdXQsICIlMTAyM3MlbiIsIHMsICZuKTsKICAgICBzW25dPSdcMCc7Ci0gICAgaWYgKCBuICYmIHNbMF0gKSB7Ci0gICAgICBuZXdfY29ubihzLGFyZyk7ICAvKiBpZiB3ZSByZWFkIGEgVVJMLCBnbyBnZXQgaXQhICovCi0gICAgfSBlbHNlIGJyZWFrOwotICB9IHdoaWxlICggcnYgIT0gRU9GKTsKKyAgICBpZihuICYmIHNbMF0pIHsKKyAgICAgIG5ld19jb25uKHMsIGFyZyk7ICAvKiBpZiB3ZSByZWFkIGEgVVJMLCBnbyBnZXQgaXQhICovCisgICAgfQorICAgIGVsc2UKKyAgICAgIGJyZWFrOworICB9IHdoaWxlKHJ2ICE9IEVPRik7CiB9CiAKIC8qIENyZWF0ZSBhIG5hbWVkIHBpcGUgYW5kIHRlbGwgbGliZXZlbnQgdG8gbW9uaXRvciBpdCAqLwpAQCAtMzcwLDIwICszNzYsMjAgQEAKICAgY3VybF9zb2NrZXRfdCBzb2NrZmQ7CiAKICAgZnByaW50ZihNU0dfT1VULCAiQ3JlYXRpbmcgbmFtZWQgcGlwZSBcIiVzXCJcbiIsIGZpZm8pOwotICBpZiAobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgewotICAgIGlmICgoc3Quc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykgeworICBpZihsc3RhdCAoZmlmbywgJnN0KSA9PSAwKSB7CisgICAgaWYoKHN0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpIHsKICAgICAgIGVycm5vID0gRUVYSVNUOwogICAgICAgcGVycm9yKCJsc3RhdCIpOwogICAgICAgZXhpdCAoMSk7CiAgICAgfQogICB9CiAgIHVubGluayhmaWZvKTsKLSAgaWYgKG1rZmlmbyAoZmlmbywgMDYwMCkgPT0gLTEpIHsKKyAgaWYobWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSkgewogICAgIHBlcnJvcigibWtmaWZvIik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgc29ja2ZkID0gb3BlbihmaWZvLCBPX1JEV1IgfCBPX05PTkJMT0NLLCAwKTsKLSAgaWYgKHNvY2tmZCA9PSAtMSkgeworICBpZihzb2NrZmQgPT0gLTEpIHsKICAgICBwZXJyb3IoIm9wZW4iKTsKICAgICBleGl0ICgxKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9ocmVmX2V4dHJhY3Rvci5jIGIvZG9jcy9leGFtcGxlcy9ocmVmX2V4dHJhY3Rvci5jCmluZGV4IGMxMTMyNWQuLjE2ZjUwYzAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHJlZl9leHRyYWN0b3IuYworKysgYi9kb2NzL2V4YW1wbGVzL2hyZWZfZXh0cmFjdG9yLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDEzICsyMCwxMyBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogVXNlcyB0aGUgIlN0cmVhbWluZyBIVE1MIHBhcnNlciIgdG8gZXh0cmFjdCB0aGUgaHJlZiBwaWVjZXMgaW4gYSBzdHJlYW1pbmcKKyAqIG1hbm5lciBmcm9tIGEgZG93bmxvYWRlZCBIVE1MLgorICogPC9ERVNDPgorICovCiAvKgotICogVGhpcyBleGFtcGxlIHVzZXMgdGhlICJTdHJlYW1pbmcgSFRNTCBwYXJzZXIiIHRvIGV4dHJhY3QgdGhlIGhyZWYgcGllY2VzIGluCi0gKiBhIHN0cmVhbWluZyBtYW5uZXIgZnJvbSBhIGRvd25sb2FkZWQgSFRNTC4gS2luZGx5IGRvbmF0ZWQgYnkgTWljaGHFggotICogS293YWxjenlrLgotICoKLSAqIFRoZSBwYXJzZXIgaXMgZm91bmQgYXQKLSAqIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9odG1sc3RyZWFtcGFyc2VyLworICogVGhlIEhUTUwgcGFyc2VyIGlzIGZvdW5kIGF0IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9odG1sc3RyZWFtcGFyc2VyLwogICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzgsMTEgKzM4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmhzcCkKIHsKICAgc2l6ZV90IHJlYWxzaXplID0gc2l6ZSAqIG5tZW1iLCBwOwotICBmb3IgKHAgPSAwOyBwIDwgcmVhbHNpemU7IHArKykgeworICBmb3IocCA9IDA7IHAgPCByZWFsc2l6ZTsgcCsrKSB7CiAgICAgaHRtbF9wYXJzZXJfY2hhcl9wYXJzZShoc3AsICgoY2hhciAqKWJ1ZmZlcilbcF0pOwotICAgIGlmIChodG1sX3BhcnNlcl9jbXBfdGFnKGhzcCwgImEiLCAxKSkKLSAgICAgIGlmIChodG1sX3BhcnNlcl9jbXBfYXR0cihoc3AsICJocmVmIiwgNCkpCi0gICAgICAgIGlmIChodG1sX3BhcnNlcl9pc19pbihoc3AsIEhUTUxfVkFMVUVfRU5ERUQpKSB7CisgICAgaWYoaHRtbF9wYXJzZXJfY21wX3RhZyhoc3AsICJhIiwgMSkpCisgICAgICBpZihodG1sX3BhcnNlcl9jbXBfYXR0cihoc3AsICJocmVmIiwgNCkpCisgICAgICAgIGlmKGh0bWxfcGFyc2VyX2lzX2luKGhzcCwgSFRNTF9WQUxVRV9FTkRFRCkpIHsKICAgICAgICAgICBodG1sX3BhcnNlcl92YWwoaHNwKVtodG1sX3BhcnNlcl92YWxfbGVuZ3RoKGhzcCldID0gJ1wwJzsKICAgICAgICAgICBwcmludGYoIiVzXG4iLCBodG1sX3BhcnNlcl92YWwoaHNwKSk7CiAgICAgICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAKICAgQ1VSTCAqY3VybDsKICAgSFRNTFNUUkVBTVBBUlNFUiAqaHNwOwogCi0gIGlmIChhcmdjICE9IDIpIHsKKyAgaWYoYXJnYyAhPSAyKSB7CiAgICAgcHJpbnRmKCJVc2FnZTogJXMgVVJMXG4iLCBhcmd2WzBdKTsKICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0bWx0aWR5LmMgYi9kb2NzL2V4YW1wbGVzL2h0bWx0aWR5LmMKaW5kZXggYTM2ZTMzMS4uNjg3ZTNmMyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odG1sdGlkeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHRtbHRpZHkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDEzICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogRG93bmxvYWQgYSBkb2N1bWVudCBhbmQgdXNlIGxpYnRpZHkgdG8gcGFyc2UgdGhlIEhUTUwuCi0gKiBXcml0dGVuIGJ5IEplZmYgUG9obG1leWVyCi0gKgorLyogPERFU0M+CisgKiBEb3dubG9hZCBhIGRvY3VtZW50IGFuZCB1c2UgbGlidGlkeSB0byBwYXJzZSB0aGUgSFRNTC4KKyAqIDwvREVTQz4KKyAqLworLyoKICAqIExpYlRpZHkgPT4gaHR0cDovL3RpZHkuc291cmNlZm9yZ2UubmV0Ci0gKgotICogZ2NjIC1XYWxsIC1JL3Vzci9sb2NhbC9pbmNsdWRlIHRpZHljdXJsLmMgLWxjdXJsIC1sdGlkeSAtbyB0aWR5Y3VybAotICoKICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTM4LDI5ICszNywyNyBAQAogewogICB1aW50IHI7CiAgIHIgPSBzaXplICogbm1lbWI7Ci0gIHRpZHlCdWZBcHBlbmQoIG91dCwgaW4sIHIgKTsKLSAgcmV0dXJuKHIpOworICB0aWR5QnVmQXBwZW5kKG91dCwgaW4sIHIpOworICByZXR1cm4gcjsKIH0KIAogLyogVHJhdmVyc2UgdGhlIGRvY3VtZW50IHRyZWUgKi8KLXZvaWQgZHVtcE5vZGUoVGlkeURvYyBkb2MsIFRpZHlOb2RlIHRub2QsIGludCBpbmRlbnQgKQordm9pZCBkdW1wTm9kZShUaWR5RG9jIGRvYywgVGlkeU5vZGUgdG5vZCwgaW50IGluZGVudCkKIHsKICAgVGlkeU5vZGUgY2hpbGQ7Ci0gIGZvciAoIGNoaWxkID0gdGlkeUdldENoaWxkKHRub2QpOyBjaGlsZDsgY2hpbGQgPSB0aWR5R2V0TmV4dChjaGlsZCkgKQotICB7Ci0gICAgY3RtYnN0ciBuYW1lID0gdGlkeU5vZGVHZXROYW1lKCBjaGlsZCApOwotICAgIGlmICggbmFtZSApCi0gICAgeworICBmb3IoY2hpbGQgPSB0aWR5R2V0Q2hpbGQodG5vZCk7IGNoaWxkOyBjaGlsZCA9IHRpZHlHZXROZXh0KGNoaWxkKSApIHsKKyAgICBjdG1ic3RyIG5hbWUgPSB0aWR5Tm9kZUdldE5hbWUoY2hpbGQpOworICAgIGlmKG5hbWUpIHsKICAgICAgIC8qIGlmIGl0IGhhcyBhIG5hbWUsIHRoZW4gaXQncyBhbiBIVE1MIHRhZyAuLi4gKi8KICAgICAgIFRpZHlBdHRyIGF0dHI7Ci0gICAgICBwcmludGYoICIlKi4qcyVzICIsIGluZGVudCwgaW5kZW50LCAiPCIsIG5hbWUpOworICAgICAgcHJpbnRmKCIlKi4qcyVzICIsIGluZGVudCwgaW5kZW50LCAiPCIsIG5hbWUpOwogICAgICAgLyogd2FsayB0aGUgYXR0cmlidXRlIGxpc3QgKi8KLSAgICAgIGZvciAoIGF0dHI9dGlkeUF0dHJGaXJzdChjaGlsZCk7IGF0dHI7IGF0dHI9dGlkeUF0dHJOZXh0KGF0dHIpICkgeworICAgICAgZm9yKGF0dHI9dGlkeUF0dHJGaXJzdChjaGlsZCk7IGF0dHI7IGF0dHI9dGlkeUF0dHJOZXh0KGF0dHIpICkgewogICAgICAgICBwcmludGYodGlkeUF0dHJOYW1lKGF0dHIpKTsKICAgICAgICAgdGlkeUF0dHJWYWx1ZShhdHRyKT9wcmludGYoIj1cIiVzXCIgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkeUF0dHJWYWx1ZShhdHRyKSk6cHJpbnRmKCIgIik7CiAgICAgICB9Ci0gICAgICBwcmludGYoICI+XG4iKTsKKyAgICAgIHByaW50ZigiPlxuIik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgLyogaWYgaXQgZG9lc24ndCBoYXZlIGEgbmFtZSwgdGhlbiBpdCdzIHByb2JhYmx5IHRleHQsIGNkYXRhLCBldGMuLi4gKi8KQEAgLTcwLDEyICs2NywxMiBAQAogICAgICAgcHJpbnRmKCIlKi4qc1xuIiwgaW5kZW50LCBpbmRlbnQsIGJ1Zi5icD8oY2hhciAqKWJ1Zi5icDoiIik7CiAgICAgICB0aWR5QnVmRnJlZSgmYnVmKTsKICAgICB9Ci0gICAgZHVtcE5vZGUoIGRvYywgY2hpbGQsIGluZGVudCArIDQgKTsgLyogcmVjdXJzaXZlICovCisgICAgZHVtcE5vZGUoZG9jLCBjaGlsZCwgaW5kZW50ICsgNCk7IC8qIHJlY3Vyc2l2ZSAqLwogICB9CiB9CiAKIAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgQ1VSTCAqY3VybDsKICAgY2hhciBjdXJsX2VycmJ1ZltDVVJMX0VSUk9SX1NJWkVdOwpAQCAtODMsNyArODAsNyBAQAogICBUaWR5QnVmZmVyIGRvY2J1ZiA9IHswfTsKICAgVGlkeUJ1ZmZlciB0aWR5X2VycmJ1ZiA9IHswfTsKICAgaW50IGVycjsKLSAgaWYgKCBhcmdjID09IDIpIHsKKyAgaWYoYXJnYyA9PSAyKSB7CiAgICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgYXJndlsxXSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBjdXJsX2VycmJ1Zik7CkBAIC05NCwxOSArOTEsMTkgQEAKICAgICB0ZG9jID0gdGlkeUNyZWF0ZSgpOwogICAgIHRpZHlPcHRTZXRCb29sKHRkb2MsIFRpZHlGb3JjZU91dHB1dCwgeWVzKTsgLyogdHJ5IGhhcmRlciAqLwogICAgIHRpZHlPcHRTZXRJbnQodGRvYywgVGlkeVdyYXBMZW4sIDQwOTYpOwotICAgIHRpZHlTZXRFcnJvckJ1ZmZlciggdGRvYywgJnRpZHlfZXJyYnVmICk7CisgICAgdGlkeVNldEVycm9yQnVmZmVyKHRkb2MsICZ0aWR5X2VycmJ1Zik7CiAgICAgdGlkeUJ1ZkluaXQoJmRvY2J1Zik7CiAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfV1JJVEVEQVRBLCAmZG9jYnVmKTsKICAgICBlcnI9Y3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gICAgaWYgKCAhZXJyICkgeworICAgIGlmKCFlcnIpIHsKICAgICAgIGVyciA9IHRpZHlQYXJzZUJ1ZmZlcih0ZG9jLCAmZG9jYnVmKTsgLyogcGFyc2UgdGhlIGlucHV0ICovCi0gICAgICBpZiAoIGVyciA+PSAwICkgeworICAgICAgaWYoZXJyID49IDApIHsKICAgICAgICAgZXJyID0gdGlkeUNsZWFuQW5kUmVwYWlyKHRkb2MpOyAvKiBmaXggYW55IHByb2JsZW1zICovCi0gICAgICAgIGlmICggZXJyID49IDAgKSB7CisgICAgICAgIGlmKGVyciA+PSAwKSB7CiAgICAgICAgICAgZXJyID0gdGlkeVJ1bkRpYWdub3N0aWNzKHRkb2MpOyAvKiBsb2FkIHRpZHkgZXJyb3IgYnVmZmVyICovCi0gICAgICAgICAgaWYgKCBlcnIgPj0gMCApIHsKLSAgICAgICAgICAgIGR1bXBOb2RlKCB0ZG9jLCB0aWR5R2V0Um9vdCh0ZG9jKSwgMCApOyAvKiB3YWxrIHRoZSB0cmVlICovCisgICAgICAgICAgaWYoZXJyID49IDApIHsKKyAgICAgICAgICAgIGR1bXBOb2RlKHRkb2MsIHRpZHlHZXRSb290KHRkb2MpLCAwKTsgLyogd2FsayB0aGUgdHJlZSAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGlkeV9lcnJidWYuYnApOyAvKiBzaG93IGVycm9ycyAqLwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTIwLDExICsxMTcsMTEgQEAKICAgICB0aWR5QnVmRnJlZSgmZG9jYnVmKTsKICAgICB0aWR5QnVmRnJlZSgmdGlkeV9lcnJidWYpOwogICAgIHRpZHlSZWxlYXNlKHRkb2MpOwotICAgIHJldHVybihlcnIpOworICAgIHJldHVybiBlcnI7CiAKICAgfQogICBlbHNlCi0gICAgcHJpbnRmKCAidXNhZ2U6ICVzIDx1cmw+XG4iLCBhcmd2WzBdICk7CisgICAgcHJpbnRmKCJ1c2FnZTogJXMgPHVybD5cbiIsIGFyZ3ZbMF0pOwogCi0gIHJldHVybigwKTsKKyAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0bWx0aXRsZS5jcHAgYi9kb2NzL2V4YW1wbGVzL2h0bWx0aXRsZS5jcHAKaW5kZXggYWI4OWJiNi4uNWU2YjRhMCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odG1sdGl0bGUuY3BwCisrKyBiL2RvY3MvZXhhbXBsZXMvaHRtbHRpdGxlLmNwcApAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vLyBHZXQgYSB3ZWIgcGFnZSwgcGFyc2UgaXQgd2l0aCBsaWJ4bWwuCi0vLworLyogPERFU0M+CisgKiBHZXQgYSB3ZWIgcGFnZSwgZXh0cmFjdCB0aGUgdGl0bGUgd2l0aCBsaWJ4bWwuCisgKiA8L0RFU0M+CisgKi8KIC8vIFdyaXR0ZW4gYnkgTGFycyBOaWxzc29uCiAvLwogLy8gR05VIEMrKyBjb21waWxlIGNvbW1hbmQgbGluZSBzdWdnZXN0aW9uIChlZGl0IHBhdGhzIGFjY29yZGluZ2x5KToKQEAgLTQwLDcgKzQyLDcgQEAKIC8vCiAKICNpZmRlZiBfTVNDX1ZFUgotI2RlZmluZSBDT01QQVJFKGEsIGIpICghc3RyaWNtcCgoYSksIChiKSkpCisjZGVmaW5lIENPTVBBUkUoYSwgYikgKCFfc3RyaWNtcCgoYSksIChiKSkpCiAjZWxzZQogI2RlZmluZSBDT01QQVJFKGEsIGIpICghc3RyY2FzZWNtcCgoYSksIChiKSkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cC1wb3N0LmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAtcG9zdC5jCmluZGV4IGYxOTc1YjEuLjAxNzU0NTIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHR0cC1wb3N0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwLXBvc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIHNpbXBsZSBIVFRQIFBPU1QgdXNpbmcgdGhlIGVhc3kgaW50ZXJmYWNlCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0dHAyLWRvd25sb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAyLWRvd25sb2FkLmMKaW5kZXggM2I3Y2E4MS4uOWU4N2EwNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwMi1kb3dubG9hZC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cDItZG93bmxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEzIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE11bHRpcGxleGVkIEhUVFAvMiBkb3dubG9hZHMgb3ZlciBhIHNpbmdsZSBjb25uZWN0aW9uCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAvKiBzb21ld2hhdCB1bml4LXNwZWNpZmljICovCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTg0LDE0ICs4OSwxNCBAQAogCiAgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgewogICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgewogICAgICAgICBpKz0oYysyLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwKICAgICAgICAgICAgICAgKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nKTsKICAgICAgIC8qIGNoZWNrIGFnYWluIGZvciAwRDBBLCB0byBhdm9pZCBhbiBleHRyYSBcbiBpZiBpdCdzIGF0IHdpZHRoICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMy13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTQ0LDcgKzE0OSw3IEBACiAgIEZJTEUgKm91dDsKICAgY2hhciBmaWxlbmFtZVsxMjhdOwogCi0gIHNwcmludGYoZmlsZW5hbWUsICJkbC0lZCIsIG51bSk7CisgIHNucHJpbnRmKGZpbGVuYW1lLCAxMjgsICJkbC0lZCIsIG51bSk7CiAKICAgb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwogCkBAIC0yMzksOCArMjQ0LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cDItc2VydmVycHVzaC5jIGIvZG9jcy9leGFtcGxlcy9odHRwMi1zZXJ2ZXJwdXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE4YzY5YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cDItc2VydmVycHVzaC5jCkBAIC0wLDAgKzEsMzIwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIEhUVFAvMiBzZXJ2ZXIgcHVzaAorICogPC9ERVNDPgorICovCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyogc29tZXdoYXQgdW5peC1zcGVjaWZpYyAqLworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIGN1cmwgc3R1ZmYgKi8KKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2lmbmRlZiBDVVJMUElQRV9NVUxUSVBMRVgKKyNlcnJvciAidG9vIG9sZCBsaWJjdXJsLCBjYW4ndCBkbyBIVFRQLzIgc2VydmVyIHB1c2ghIgorI2VuZGlmCisKK3N0YXRpYwordm9pZCBkdW1wKGNvbnN0IGNoYXIgKnRleHQsIHVuc2lnbmVkIGNoYXIgKnB0ciwgc2l6ZV90IHNpemUsCisgICAgICAgICAgY2hhciBub2hleCkKK3sKKyAgc2l6ZV90IGk7CisgIHNpemVfdCBjOworCisgIHVuc2lnbmVkIGludCB3aWR0aD0weDEwOworCisgIGlmKG5vaGV4KQorICAgIC8qIHdpdGhvdXQgdGhlIGhleCBvdXRwdXQsIHdlIGNhbiBmaXQgbW9yZSBvbiBzY3JlZW4gKi8KKyAgICB3aWR0aCA9IDB4NDA7CisKKyAgZnByaW50ZihzdGRlcnIsICIlcywgJWxkIGJ5dGVzICgweCVseClcbiIsCisgICAgICAgICAgdGV4dCwgKGxvbmcpc2l6ZSwgKGxvbmcpc2l6ZSk7CisKKyAgZm9yKGk9MDsgaTxzaXplOyBpKz0gd2lkdGgpIHsKKworICAgIGZwcmludGYoc3RkZXJyLCAiJTQuNGx4OiAiLCAobG9uZylpKTsKKworICAgIGlmKCFub2hleCkgeworICAgICAgLyogaGV4IG5vdCBkaXNhYmxlZCwgc2hvdyBpdCAqLworICAgICAgZm9yKGMgPSAwOyBjIDwgd2lkdGg7IGMrKykKKyAgICAgICAgaWYoaStjIDwgc2l6ZSkKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUwMnggIiwgcHRyW2krY10pOworICAgICAgICBlbHNlCisgICAgICAgICAgZnB1dHMoIiAgICIsIHN0ZGVycik7CisgICAgfQorCisgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgeworICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCisgICAgICBpZihub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CisgICAgICAgIGkrPShjKzItd2lkdGgpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMiLAorICAgICAgICAgICAgICAocHRyW2krY10+PTB4MjApICYmIChwdHJbaStjXTwweDgwKT9wdHJbaStjXTonLicpOworICAgICAgLyogY2hlY2sgYWdhaW4gZm9yIDBEMEEsIHRvIGF2b2lkIGFuIGV4dHJhIFxuIGlmIGl0J3MgYXQgd2lkdGggKi8KKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgeworICAgICAgICBpKz0oYyszLXdpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGZwdXRjKCdcbicsIHN0ZGVycik7IC8qIG5ld2xpbmUgKi8KKyAgfQorfQorCitzdGF0aWMKK2ludCBteV90cmFjZShDVVJMICpoYW5kbGUsIGN1cmxfaW5mb3R5cGUgdHlwZSwKKyAgICAgICAgICAgICBjaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY29uc3QgY2hhciAqdGV4dDsKKyAgKHZvaWQpaGFuZGxlOyAvKiBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcgKi8KKyAgKHZvaWQpdXNlcnA7CisgIHN3aXRjaCAodHlwZSkgeworICBjYXNlIENVUkxJTkZPX1RFWFQ6CisgICAgZnByaW50ZihzdGRlcnIsICI9PSBJbmZvOiAlcyIsIGRhdGEpOworICBkZWZhdWx0OiAvKiBpbiBjYXNlIGEgbmV3IG9uZSBpcyBpbnRyb2R1Y2VkIHRvIHNob2NrIHVzICovCisgICAgcmV0dXJuIDA7CisKKyAgY2FzZSBDVVJMSU5GT19IRUFERVJfT1VUOgorICAgIHRleHQgPSAiPT4gU2VuZCBoZWFkZXIiOworICAgIGJyZWFrOworICBjYXNlIENVUkxJTkZPX0RBVEFfT1VUOgorICAgIHRleHQgPSAiPT4gU2VuZCBkYXRhIjsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMSU5GT19TU0xfREFUQV9PVVQ6CisgICAgdGV4dCA9ICI9PiBTZW5kIFNTTCBkYXRhIjsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMSU5GT19IRUFERVJfSU46CisgICAgdGV4dCA9ICI8PSBSZWN2IGhlYWRlciI7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTElORk9fREFUQV9JTjoKKyAgICB0ZXh0ID0gIjw9IFJlY3YgZGF0YSI7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTElORk9fU1NMX0RBVEFfSU46CisgICAgdGV4dCA9ICI8PSBSZWN2IFNTTCBkYXRhIjsKKyAgICBicmVhazsKKyAgfQorCisgIGR1bXAodGV4dCwgKHVuc2lnbmVkIGNoYXIgKilkYXRhLCBzaXplLCAxKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgT1VUUFVURklMRSAiZGwiCisKK3N0YXRpYyB2b2lkIHNldHVwKENVUkwgKmhuZCkKK3sKKyAgRklMRSAqb3V0ID0gZm9wZW4oT1VUUFVURklMRSwgIndiIik7CisKKyAgLyogd3JpdGUgdG8gdGhpcyBmaWxlICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICAvKiBzZXQgdGhlIHNhbWUgVVJMICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvaW5kZXguaHRtbCIpOworCisgIC8qIHNlbmQgaXQgdmVyYm9zZSBmb3IgbWF4IGRlYnVnZ2FpbGl0eSAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX0RFQlVHRlVOQ1RJT04sIG15X3RyYWNlKTsKKworICAvKiBIVFRQLzIgcGxlYXNlICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wKTsKKworICAvKiB3ZSB1c2UgYSBzZWxmLXNpZ25lZCB0ZXN0IHNlcnZlciwgc2tpcCB2ZXJpZmljYXRpb24gZHVyaW5nIGRlYnVnZ2luZyAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMEwpOworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOworCisjaWYgKENVUkxQSVBFX01VTFRJUExFWCA+IDApCisgIC8qIHdhaXQgZm9yIHBpcGUgY29ubmVjdGlvbiB0byBjb25maXJtICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1BJUEVXQUlULCAxTCk7CisjZW5kaWYKKworfQorCisvKiBjYWxsZWQgd2hlbiB0aGVyZSdzIGFuIGluY29taW5nIHB1c2ggKi8KK3N0YXRpYyBpbnQgc2VydmVyX3B1c2hfY2FsbGJhY2soQ1VSTCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2hlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY2hhciAqaGVhZHA7CisgIHNpemVfdCBpOworICBpbnQgKnRyYW5zZmVycyA9IChpbnQgKil1c2VycDsKKyAgY2hhciBmaWxlbmFtZVsxMjhdOworICBGSUxFICpvdXQ7CisgIHN0YXRpYyB1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCisgICh2b2lkKXBhcmVudDsgLyogd2UgaGF2ZSBubyB1c2UgZm9yIHRoaXMgKi8KKworICBzbnByaW50ZihmaWxlbmFtZSwgMTI4LCAicHVzaCV1IiwgY291bnQrKyk7CisKKyAgLyogaGVyZSdzIGEgbmV3IHN0cmVhbSwgc2F2ZSBpdCBpbiBhIG5ldyBmaWxlIGZvciBlYWNoIG5ldyBwdXNoICovCisgIG91dCA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKworICAvKiB3cml0ZSB0byB0aGlzIGZpbGUgKi8KKyAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICBmcHJpbnRmKHN0ZGVyciwgIioqKiogcHVzaCBjYWxsYmFjayBhcHByb3ZlcyBzdHJlYW0gJXUsIGdvdCAlZCBoZWFkZXJzIVxuIiwKKyAgICAgICAgICBjb3VudCwgKGludCludW1faGVhZGVycyk7CisKKyAgZm9yKGk9MDsgaTxudW1faGVhZGVyczsgaSsrKSB7CisgICAgaGVhZHAgPSBjdXJsX3B1c2hoZWFkZXJfYnludW0oaGVhZGVycywgaSk7CisgICAgZnByaW50ZihzdGRlcnIsICIqKioqIGhlYWRlciAldTogJXNcbiIsIChpbnQpaSwgaGVhZHApOworICB9CisKKyAgaGVhZHAgPSBjdXJsX3B1c2hoZWFkZXJfYnluYW1lKGhlYWRlcnMsICI6cGF0aCIpOworICBpZihoZWFkcCkgeworICAgIGZwcmludGYoc3RkZXJyLCAiKioqKiBUaGUgUEFUSCBpcyAlc1xuIiwgaGVhZHAgLyogc2tpcCA6cGF0aCArIGNvbG9uICovKTsKKyAgfQorCisgICgqdHJhbnNmZXJzKSsrOyAvKiBvbmUgbW9yZSAqLworICByZXR1cm4gQ1VSTF9QVVNIX09LOworfQorCisKKy8qCisgKiBEb3dubG9hZCBhIGZpbGUgb3ZlciBIVFRQLzIsIHRha2UgY2FyZSBvZiBzZXJ2ZXIgcHVzaC4KKyAqLworaW50IG1haW4odm9pZCkKK3sKKyAgQ1VSTCAqZWFzeTsKKyAgQ1VSTE0gKm11bHRpX2hhbmRsZTsKKyAgaW50IHN0aWxsX3J1bm5pbmc7IC8qIGtlZXAgbnVtYmVyIG9mIHJ1bm5pbmcgaGFuZGxlcyAqLworICBpbnQgdHJhbnNmZXJzPTE7IC8qIHdlIHN0YXJ0IHdpdGggb25lICovCisgIHN0cnVjdCBDVVJMTXNnICptOworCisgIC8qIGluaXQgYSBtdWx0aSBzdGFjayAqLworICBtdWx0aV9oYW5kbGUgPSBjdXJsX211bHRpX2luaXQoKTsKKworICBlYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKKworICAvKiBzZXQgb3B0aW9ucyAqLworICBzZXR1cChlYXN5KTsKKworICAvKiBhZGQgdGhlIGVhc3kgdHJhbnNmZXIgKi8KKyAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgZWFzeSk7CisKKyAgY3VybF9tdWx0aV9zZXRvcHQobXVsdGlfaGFuZGxlLCBDVVJMTU9QVF9QSVBFTElOSU5HLCBDVVJMUElQRV9NVUxUSVBMRVgpOworICBjdXJsX211bHRpX3NldG9wdChtdWx0aV9oYW5kbGUsIENVUkxNT1BUX1BVU0hGVU5DVElPTiwgc2VydmVyX3B1c2hfY2FsbGJhY2spOworICBjdXJsX211bHRpX3NldG9wdChtdWx0aV9oYW5kbGUsIENVUkxNT1BUX1BVU0hEQVRBLCAmdHJhbnNmZXJzKTsKKworICAvKiB3ZSBzdGFydCBzb21lIGFjdGlvbiBieSBjYWxsaW5nIHBlcmZvcm0gcmlnaHQgYXdheSAqLworICBjdXJsX211bHRpX3BlcmZvcm0obXVsdGlfaGFuZGxlLCAmc3RpbGxfcnVubmluZyk7CisKKyAgZG8geworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisgICAgaW50IHJjOyAvKiBzZWxlY3QoKSByZXR1cm4gY29kZSAqLworICAgIENVUkxNY29kZSBtYzsgLyogY3VybF9tdWx0aV9mZHNldCgpIHJldHVybiBjb2RlICovCisKKyAgICBmZF9zZXQgZmRyZWFkOworICAgIGZkX3NldCBmZHdyaXRlOworICAgIGZkX3NldCBmZGV4Y2VwOworICAgIGludCBtYXhmZCA9IC0xOworCisgICAgbG9uZyBjdXJsX3RpbWVvID0gLTE7CisKKyAgICBGRF9aRVJPKCZmZHJlYWQpOworICAgIEZEX1pFUk8oJmZkd3JpdGUpOworICAgIEZEX1pFUk8oJmZkZXhjZXApOworCisgICAgLyogc2V0IGEgc3VpdGFibGUgdGltZW91dCB0byBwbGF5IGFyb3VuZCB3aXRoICovCisgICAgdGltZW91dC50dl9zZWMgPSAxOworICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisKKyAgICBjdXJsX211bHRpX3RpbWVvdXQobXVsdGlfaGFuZGxlLCAmY3VybF90aW1lbyk7CisgICAgaWYoY3VybF90aW1lbyA+PSAwKSB7CisgICAgICB0aW1lb3V0LnR2X3NlYyA9IGN1cmxfdGltZW8gLyAxMDAwOworICAgICAgaWYodGltZW91dC50dl9zZWMgPiAxKQorICAgICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CisgICAgICBlbHNlCisgICAgICAgIHRpbWVvdXQudHZfdXNlYyA9IChjdXJsX3RpbWVvICUgMTAwMCkgKiAxMDAwOworICAgIH0KKworICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLworICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKKworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBPbiBzdWNjZXNzIHRoZSB2YWx1ZSBvZiBtYXhmZCBpcyBndWFyYW50ZWVkIHRvIGJlID49IC0xLiBXZSBjYWxsCisgICAgICAgc2VsZWN0KG1heGZkICsgMSwgLi4uKTsgc3BlY2lhbGx5IGluIGNhc2Ugb2YgKG1heGZkID09IC0xKSB0aGVyZSBhcmUKKyAgICAgICBubyBmZHMgcmVhZHkgeWV0IHNvIHdlIGNhbGwgc2VsZWN0KDAsIC4uLikgLS1vciBTbGVlcCgpIG9uIFdpbmRvd3MtLQorICAgICAgIHRvIHNsZWVwIDEwMG1zLCB3aGljaCBpcyB0aGUgbWluaW11bSBzdWdnZXN0ZWQgdmFsdWUgaW4gdGhlCisgICAgICAgY3VybF9tdWx0aV9mZHNldCgpIGRvYy4gKi8KKworICAgIGlmKG1heGZkID09IC0xKSB7CisjaWZkZWYgX1dJTjMyCisgICAgICBTbGVlcCgxMDApOworICAgICAgcmMgPSAwOworI2Vsc2UKKyAgICAgIC8qIFBvcnRhYmxlIHNsZWVwIGZvciBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBXaW5kb3dzLiAqLworICAgICAgc3RydWN0IHRpbWV2YWwgd2FpdCA9IHsgMCwgMTAwICogMTAwMCB9OyAvKiAxMDBtcyAqLworICAgICAgcmMgPSBzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJndhaXQpOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogTm90ZSB0aGF0IG9uIHNvbWUgcGxhdGZvcm1zICd0aW1lb3V0JyBtYXkgYmUgbW9kaWZpZWQgYnkgc2VsZWN0KCkuCisgICAgICAgICBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIHNhdmUgYSBjb3B5IGJlZm9yZWhhbmQuICovCisgICAgICByYyA9IHNlbGVjdChtYXhmZCsxLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZ0aW1lb3V0KTsKKyAgICB9CisKKyAgICBzd2l0Y2gocmMpIHsKKyAgICBjYXNlIC0xOgorICAgICAgLyogc2VsZWN0IGVycm9yICovCisgICAgICBicmVhazsKKyAgICBjYXNlIDA6CisgICAgZGVmYXVsdDoKKyAgICAgIC8qIHRpbWVvdXQgb3IgcmVhZGFibGUvd3JpdGFibGUgc29ja2V0cyAqLworICAgICAgY3VybF9tdWx0aV9wZXJmb3JtKG11bHRpX2hhbmRsZSwgJnN0aWxsX3J1bm5pbmcpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBIGxpdHRsZSBjYXV0aW9uIHdoZW4gZG9pbmcgc2VydmVyIHB1c2ggaXMgdGhhdCBsaWJjdXJsIGl0c2VsZiBoYXMKKyAgICAgKiBjcmVhdGVkIGFuZCBhZGRlZCBvbmUgb3IgbW9yZSBlYXN5IGhhbmRsZXMgYnV0IHdlIG5lZWQgdG8gY2xlYW4gdGhlbSB1cAorICAgICAqIHdoZW4gd2UgYXJlIGRvbmUuCisgICAgICovCisKKyAgICBkbyB7CisgICAgICBpbnQgbXNncSA9IDA7OworICAgICAgbSA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG11bHRpX2hhbmRsZSwgJm1zZ3EpOworICAgICAgaWYobSAmJiAobS0+bXNnID09IENVUkxNU0dfRE9ORSkpIHsKKyAgICAgICAgQ1VSTCAqZSA9IG0tPmVhc3lfaGFuZGxlOworICAgICAgICB0cmFuc2ZlcnMtLTsKKyAgICAgICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKG11bHRpX2hhbmRsZSwgZSk7CisgICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGUpOworICAgICAgfQorICAgIH0gd2hpbGUobSk7CisKKyAgfSB3aGlsZSh0cmFuc2ZlcnMpOyAvKiBhcyBsb25nIGFzIHdlIGhhdmUgdHJhbnNmZXJzIGdvaW5nICovCisKKyAgY3VybF9tdWx0aV9jbGVhbnVwKG11bHRpX2hhbmRsZSk7CisKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cDItdXBsb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAyLXVwbG9hZC5jCmluZGV4IGJjYTE2YzAuLmI2MzUzNzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHR0cDItdXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwMi11cGxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEzIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE11bHRpcGxleGVkIEhUVFAvMiB1cGxvYWRzIG92ZXIgYSBzaW5nbGUgY29ubmVjdGlvbgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKQEAgLTg1LDE0ICs5MCwxNCBAQAogCiAgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgewogICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgewogICAgICAgICBpKz0oYysyLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwKICAgICAgICAgICAgICAgKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nKTsKICAgICAgIC8qIGNoZWNrIGFnYWluIGZvciAwRDBBLCB0byBhdm9pZCBhbiBleHRyYSBcbiBpZiBpdCdzIGF0IHdpZHRoICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMy13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTgyLDEwICsxODcsMTAgQEAKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogICBjdXJsX29mZl90IHVwbG9hZHNpemU7CiAKLSAgc3ByaW50ZihmaWxlbmFtZSwgImRsLSVkIiwgbnVtKTsKKyAgc25wcmludGYoZmlsZW5hbWUsIDEyOCwgImRsLSVkIiwgbnVtKTsKICAgb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwogCi0gIHNwcmludGYodXJsLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My91cGxvYWQtJWQiLCBudW0pOworICBzbnByaW50Zih1cmwsIDI1NiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvdXBsb2FkLSVkIiwgbnVtKTsKIAogICAvKiBnZXQgdGhlIGZpbGUgc2l6ZSBvZiB0aGUgbG9jYWwgZmlsZSAqLwogICBzdGF0KHVwbG9hZCwgJmZpbGVfaW5mbyk7CkBAIC0zMDMsOCArMzA4LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cGN1c3RvbWhlYWRlci5jIGIvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKaW5kZXggODU0MmVhZC4uZDIyYjdiYyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBIVFRQIHJlcXVlc3Qgd2l0aCBjdXN0b20gbW9kaWZpZWQsIHJlbW92ZWQgYW5kIGFkZGVkIGhlYWRlcnMKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cHB1dC5jIGIvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKaW5kZXggMmU5ZGMyMS4uNGY4YWVjZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBIVFRQIFBVVCB3aXRoIGVhc3kgaW50ZXJmYWNlIGFuZCByZWFkIGNhbGxiYWNrCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTU2LDcgKzYwLDcgQEAKIHsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwotICBGSUxFICogaGRfc3JjIDsKKyAgRklMRSAqIGhkX3NyYzsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogCiAgIGNoYXIgKmZpbGU7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0dHBzLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHBzLmMKaW5kZXggYmQ5YTMzYi4uY2NhODNmZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwcy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFNpbXBsZSBIVFRQUyBHRVQKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1hcHBlbmQuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1hcHBlbmQuYwppbmRleCBmYTUzMWE4Li4zZjgzMjg5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtYXBwZW5kLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWFwcGVuZC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gc2VuZCBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC0zOCw3ICs0NCw4IEBACiAgICJUbzogIiBUTyAiXHJcbiIsCiAgICJGcm9tOiAiIEZST00gIihFeGFtcGxlIFVzZXIpXHJcbiIsCiAgICJDYzogIiBDQyAiKEFub3RoZXIgZXhhbXBsZSBVc2VyKVxyXG4iLAotICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEByZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCisgICJNZXNzYWdlLUlEOiAiCisgICI8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKICAgIlN1YmplY3Q6IElNQVAgZXhhbXBsZSBtZXNzYWdlXHJcbiIsCiAgICJcclxuIiwgLyogZW1wdHkgbGluZSB0byBkaXZpZGUgaGVhZGVycyBmcm9tIGJvZHksIHNlZSBSRkM1MzIyICovCiAgICJUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSBzdGFydHMgaGVyZS5cclxuIiwKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jb3B5LmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtY29weS5jCmluZGV4IGZlMmQ5MWMuLjRjM2I2NDAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jb3B5LmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWNvcHkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNvcHkgYW4gZS1tYWlsIGZyb20gb25lIGZvbGRlciB0byBhbm90aGVyCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jcmVhdGUuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1jcmVhdGUuYwppbmRleCA2NWRkZWRlLi44ZjcyY2I4IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtY3JlYXRlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWNyZWF0ZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gY3JlYXRlIGEgbmV3IGZvbGRlcgorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtZGVsZXRlLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZGVsZXRlLmMKaW5kZXggNTExM2JlOS4uYmQ5ZDFhNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLWRlbGV0ZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1kZWxldGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRlbGV0ZSBhIGZvbGRlcgorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtZXhhbWluZS5jIGIvZG9jcy9leGFtcGxlcy9pbWFwLWV4YW1pbmUuYwppbmRleCBhN2I0MWM1Li40Mjg3ZjhhIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtZXhhbWluZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1leGFtaW5lLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIElNQVAgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgYSBmb2xkZXIKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9pbWFwLWZldGNoLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYwppbmRleCA4MzFkMGRjLi4xOTJkMmU5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYworKysgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJlaWV2ZSBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQwLDcgKzQ2LDggQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUEFTU1dPUkQsICJzZWNyZXQiKTsKIAogICAgIC8qIFRoaXMgd2lsbCBmZXRjaCBtZXNzYWdlIDEgZnJvbSB0aGUgdXNlcidzIGluYm94ICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImltYXA6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcDovL2ltYXAuZXhhbXBsZS5jb20vSU5CT1gvO1VJRD0xIik7CiAKICAgICAvKiBQZXJmb3JtIHRoZSBmZXRjaCAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9pbWFwLWxpc3QuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1saXN0LmMKaW5kZXggNDIyMzA1Mi4uMjkxZTFlNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLWxpc3QuYworKysgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbGlzdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdG8gbGlzdCB0aGUgZm9sZGVycyB3aXRoaW4gYSBtYWlsYm94CisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1sc3ViLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbHN1Yi5jCmluZGV4IDg5NjBiNjIuLmQxMzBjM2QgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1sc3ViLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWxzdWIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHRvIGxpc3QgdGhlIHN1YnNjcmliZWQgZm9sZGVycworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtbXVsdGkuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCmluZGV4IGM3ZGMxMzAuLjhjZDQ4NTggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTQgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiAvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZmV0Y2ggbWFpbCB1c2luZyBsaWJjdXJsJ3MgSU1BUApAQCAtMTEzLDggKzEyMCw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1ub29wLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbm9vcC5jCmluZGV4IDcxYTU1NzIuLjU2Njg5MGUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1ub29wLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLW5vb3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBlcmZvcm0gYSBub29wCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1zZWFyY2guYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1zZWFyY2guYwppbmRleCAwYzFkMjY3Li5mMTI2MWUxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtc2VhcmNoLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXNlYXJjaC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gc2VhcmNoIGZvciBuZXcgZS1tYWlscworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtc3NsLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtc3NsLmMKaW5kZXggZWVjOWIwZS4uNjk4MzlhZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLXNzbC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1zc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHVzaW5nIFNTTAorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC00Miw3ICs0OCw4IEBACiAKICAgICAvKiBUaGlzIHdpbGwgZmV0Y2ggbWVzc2FnZSAxIGZyb20gdGhlIHVzZXIncyBpbmJveC4gTm90ZSB0aGUgdXNlIG9mCiAgICAgKiBpbWFwczovLyByYXRoZXIgdGhhbiBpbWFwOi8vIHRvIHJlcXVlc3QgYSBTU0wgYmFzZWQgY29ubmVjdGlvbi4gKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaW1hcHM6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcHM6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOwogCiAgICAgLyogSWYgeW91IHdhbnQgdG8gY29ubmVjdCB0byBhIHNpdGUgd2hvIGlzbid0IHVzaW5nIGEgY2VydGlmaWNhdGUgdGhhdCBpcwogICAgICAqIHNpZ25lZCBieSBvbmUgb2YgdGhlIGNlcnRzIGluIHRoZSBDQSBidW5kbGUgeW91IGhhdmUsIHlvdSBjYW4gc2tpcCB0aGUKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1zdG9yZS5jIGIvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKaW5kZXggOGY1ZTdkNS4uODQ3OTQ1NyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIElNQVAgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBtb2RpZnkgdGhlIHByb3BlcnRpZXMgb2YgYW4gZS1tYWlsCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC10bHMuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC10bHMuYwppbmRleCBjNDM5ODY0Li43ZGFhMGJmIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtdGxzLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXRscy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdXNpbmcgVExTCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQxLDcgKzQ3LDggQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUEFTU1dPUkQsICJzZWNyZXQiKTsKIAogICAgIC8qIFRoaXMgd2lsbCBmZXRjaCBtZXNzYWdlIDEgZnJvbSB0aGUgdXNlcidzIGluYm94ICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImltYXA6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcDovL2ltYXAuZXhhbXBsZS5jb20vSU5CT1gvO1VJRD0xIik7CiAKICAgICAvKiBJbiB0aGlzIGV4YW1wbGUsIHdlJ2xsIHN0YXJ0IHdpdGggYSBwbGFpbiB0ZXh0IGNvbm5lY3Rpb24sIGFuZCB1cGdyYWRlCiAgICAgICogdG8gVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIHVzaW5nIHRoZSBTVEFSVFRMUyBjb21tYW5kLiBCZSBjYXJlZnVsCkBAIC01NSwxMiArNjIsMTMgQEAKICAgICAgKiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIG9wdGlvbnMgdG8gMCAoZmFsc2UpLgogICAgICAqICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7CiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKKyAgICAgKgogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAogICAgIC8qIFNpbmNlIHRoZSB0cmFmZmljIHdpbGwgYmUgZW5jcnlwdGVkLCBpdCBpcyB2ZXJ5IHVzZWZ1bCB0byB0dXJuIG9uIGRlYnVnCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL21ha2VmaWxlLmRqIGIvZG9jcy9leGFtcGxlcy9tYWtlZmlsZS5kagppbmRleCBjMThlZjhhLi5hZjc2MTEzIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL21ha2VmaWxlLmRqCisrKyBiL2RvY3MvZXhhbXBsZXMvbWFrZWZpbGUuZGoKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDEwICsxOSw2IEBACiAjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgIEFkYXB0ZWQgZm9yIGRqZ3BwIC8gV2F0dC0zMiAvIERPUyBieQotIyAgR2lzbGUgVmFuZW0gPGd2YW5lbUBicm9hZHBhcmsubm8+Ci0jCiAKIFRPUERJUiA9IC4uLy4uCiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvbXVsdGktYXBwLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLWFwcC5jCmluZGV4IGI4MjU4OTcuLmY4NDQ3OTMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktYXBwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9tdWx0aS1hcHAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDcgKzE5LDExIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZS4gKi8KKy8qIDxERVNDPgorICogQSBiYXNpYyBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZSB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIGRvaW5nIHR3bworICogdHJhbnNmZXJzIGluIHBhcmFsbGVsLgorICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNTEsOCArNTUsOCBAQAogICBpbnQgbXNnc19sZWZ0OyAvKiBob3cgbWFueSBtZXNzYWdlcyBhcmUgbGVmdCAqLwogCiAgIC8qIEFsbG9jYXRlIG9uZSBDVVJMIGhhbmRsZSBwZXIgdHJhbnNmZXIgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGhhbmRsZXNbaV0gPSBjdXJsX2Vhc3lfaW5pdCgpOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgaGFuZGxlc1tpXSA9IGN1cmxfZWFzeV9pbml0KCk7CiAKICAgLyogc2V0IHRoZSBvcHRpb25zIChJIGxlZnQgb3V0IGEgZmV3LCB5b3UnbGwgZ2V0IHRoZSBwb2ludCBhbnl3YXkpICovCiAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlc1tIVFRQX0hBTkRMRV0sIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CkBAIC02NCw4ICs2OCw4IEBACiAgIG11bHRpX2hhbmRsZSA9IGN1cmxfbXVsdGlfaW5pdCgpOwogCiAgIC8qIGFkZCB0aGUgaW5kaXZpZHVhbCB0cmFuc2ZlcnMgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtdWx0aV9oYW5kbGUsIGhhbmRsZXNbaV0pOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgaGFuZGxlc1tpXSk7CiAKICAgLyogd2Ugc3RhcnQgc29tZSBhY3Rpb24gYnkgY2FsbGluZyBwZXJmb3JtIHJpZ2h0IGF3YXkgKi8KICAgY3VybF9tdWx0aV9wZXJmb3JtKG11bHRpX2hhbmRsZSwgJnN0aWxsX3J1bm5pbmcpOwpAQCAtMTAyLDggKzEwNiw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG11bHRpX2hhbmRsZSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAmbWF4ZmQpOwogCi0gICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgeworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDIsMTIgKzE0NSwxMiBAQAogICB9IHdoaWxlKHN0aWxsX3J1bm5pbmcpOwogCiAgIC8qIFNlZSBob3cgdGhlIHRyYW5zZmVycyB3ZW50ICovCi0gIHdoaWxlICgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQobXVsdGlfaGFuZGxlLCAmbXNnc19sZWZ0KSkpIHsKLSAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtdWx0aV9oYW5kbGUsICZtc2dzX2xlZnQpKSkgeworICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgewogICAgICAgaW50IGlkeCwgZm91bmQgPSAwOwogCiAgICAgICAvKiBGaW5kIG91dCB3aGljaCBoYW5kbGUgdGhpcyBtZXNzYWdlIGlzIGFib3V0ICovCi0gICAgICBmb3IgKGlkeD0wOyBpZHg8SEFORExFQ09VTlQ7IGlkeCsrKSB7CisgICAgICBmb3IoaWR4PTA7IGlkeDxIQU5ETEVDT1VOVDsgaWR4KyspIHsKICAgICAgICAgZm91bmQgPSAobXNnLT5lYXN5X2hhbmRsZSA9PSBoYW5kbGVzW2lkeF0pOwogICAgICAgICBpZihmb3VuZCkKICAgICAgICAgICBicmVhazsKQEAgLTE2Nyw4ICsxNzAsOCBAQAogICBjdXJsX211bHRpX2NsZWFudXAobXVsdGlfaGFuZGxlKTsKIAogICAvKiBGcmVlIHRoZSBDVVJMIGhhbmRsZXMgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGhhbmRsZXNbaV0pOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgY3VybF9lYXN5X2NsZWFudXAoaGFuZGxlc1tpXSk7CiAKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL211bHRpLWRlYnVnY2FsbGJhY2suYyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCmluZGV4IDVmYjg2YmUuLmQwN2NjM2IgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCisrKyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgaXMgYW4gZXhhbXBsZSBzaG93aW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgYW5kIHRoZSBkZWJ1ZyBjYWxsYmFjay4gKi8KKy8qIDxERVNDPgorICogbXVsdGkgaW50ZXJmYWNlIGFuZCBkZWJ1ZyBjYWxsYmFjaworICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNjYsMTQgKzY5LDE0IEBACiAKICAgICBmb3IoYyA9IDA7IChjIDwgd2lkdGgpICYmIChpK2MgPCBzaXplKTsgYysrKSB7CiAgICAgICAvKiBjaGVjayBmb3IgMEQwQTsgaWYgZm91bmQsIHNraXAgcGFzdCBhbmQgc3RhcnQgYSBuZXcgbGluZSBvZiBvdXRwdXQgKi8KLSAgICAgIGlmIChub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CiAgICAgICAgIGkrPShjKzItd2lkdGgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGZwcmludGYoc3RyZWFtLCAiJWMiLAogICAgICAgICAgICAgICAocHRyW2krY10+PTB4MjApICYmIChwdHJbaStjXTwweDgwKT9wdHJbaStjXTonLicpOwogICAgICAgLyogY2hlY2sgYWdhaW4gZm9yIDBEMEEsIHRvIGF2b2lkIGFuIGV4dHJhIFxuIGlmIGl0J3MgYXQgd2lkdGggKi8KLSAgICAgIGlmIChub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgewogICAgICAgICBpKz0oYyszLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC0xNzYsOCArMTc5LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZG91YmxlLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLWRvdWJsZS5jCmluZGV4IDBkOGQwZGUuLjRlNTBjNzYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZG91YmxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9tdWx0aS1kb3VibGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIG11bHRpIGludGVyZmFjZSBjb2RlIGRvaW5nIHR3byBwYXJhbGxlbCBIVFRQIHRyYW5zZmVycworICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtOTEsOCArOTUsNyBAQAogICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLwogICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgIGlmKG1jICE9IENVUkxNX09LKQotICAgIHsKKyAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOwogICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS1wb3N0LmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYwppbmRleCA1YmZkY2ZkLi41ZDlhYmMxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDExIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQotICogdG8gZG8gYSBtdWx0aXBhcnQgZm9ybXBvc3Qgd2l0aG91dCAiYmxvY2tpbmciLiAqLworLyogPERFU0M+CisgKiB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIHRvIGRvIGEgbXVsdGlwYXJ0IGZvcm1wb3N0IHdpdGhvdXQgYmxvY2tpbmcKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtMTEyLDggKzExNSw3IEBACiAgICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgICB7CisgICAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS1zaW5nbGUuYyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktc2luZ2xlLmMKaW5kZXggYTQzYTlmNS4uNzBiNmQyNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9tdWx0aS1zaW5nbGUuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXNpbmdsZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBleGFtcGxlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UuICovCisvKiA8REVTQz4KKyAqIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZG8gYSBzaW5nbGUgZG93bmxvYWQKKyAqIDwvREVTQz4KKyAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTc0LDkgKzc3LDggQEAKICAgICAvKiB3YWl0IGZvciBhY3Rpdml0eSwgdGltZW91dCBvciAibm90aGluZyIgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aV9oYW5kbGUsIE5VTEwsIDAsIDEwMDAsICZudW1mZHMpOwogCi0gICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgewotICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfd2FpdCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS11di5jIGIvZG9jcy9leGFtcGxlcy9tdWx0aS11di5jCmluZGV4IDBjMGY4YTIuLjUxNTI2YzggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktdXYuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXV2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMCw2ICsyMCwxMCBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogbXVsdGlfc29ja2V0IEFQSSB1c2luZyBsaWJ1dgorICogPC9ERVNDPgorICovCiAvKiBFeGFtcGxlIGFwcGxpY2F0aW9uIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8gZG93bmxvYWQKICAgIG11bHRpcGxlIGZpbGVzIGF0IG9uY2UsIGJ1dCBpbnN0ZWFkIG9mIHVzaW5nIGN1cmxfbXVsdGlfcGVyZm9ybSBhbmQKICAgIGN1cmxfbXVsdGlfd2FpdCwgd2hpY2ggdXNlcyBzZWxlY3QoKSwgd2UgdXNlIGxpYnV2LgpAQCAtODAsOSArODQsOSBAQAogICBGSUxFICpmaWxlOwogICBDVVJMICpoYW5kbGU7CiAKLSAgc3ByaW50ZihmaWxlbmFtZSwgIiVkLmRvd25sb2FkIiwgbnVtKTsKKyAgc25wcmludGYoZmlsZW5hbWUsIDUwLCAiJWQuZG93bmxvYWQiLCBudW0pOwogCi0gIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKKyAgZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKICAgaWYoIWZpbGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgJXNcbiIsIGZpbGVuYW1lKTsKICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL211bHRpdGhyZWFkLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpdGhyZWFkLmMKaW5kZXggODMxYTA3NC4uNDc1ZThmYyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9tdWx0aXRocmVhZC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvbXVsdGl0aHJlYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBBIG11bHRpLXRocmVhZGVkIGV4YW1wbGUgdGhhdCB1c2VzIHB0aHJlYWRzIGV4dGVuc2l2ZWx5IHRvIGZldGNoCi0gKiBYIHJlbW90ZSBmaWxlcyBhdCBvbmNlICovCisvKiA8REVTQz4KKyAqIEEgbXVsdGktdGhyZWFkZWQgZXhhbXBsZSB0aGF0IHVzZXMgcHRocmVhZHMgdG8gZmV0Y2ggc2V2ZXJhbCBmaWxlcyBhdCBvbmNlCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgpAQCAtMzQsMTEgKzM2LDExIEBACiAgIElmIHlvdSBpbnRlbmQgdG8gdXNlIGEgU1NMLWJhc2VkIHByb3RvY29sIGhlcmUgeW91IE1VU1Qgc2V0dXAgdGhlIE9wZW5TU0wKICAgY2FsbGJhY2sgZnVuY3Rpb25zIGFzIGRlc2NyaWJlZCBoZXJlOgogCi0gIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vdGhyZWFkcy5odG1sI0RFU0NSSVBUSU9OCisgIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL3RocmVhZHMuaHRtbCNERVNDUklQVElPTgogCiAqLwogY29uc3QgY2hhciAqIGNvbnN0IHVybHNbTlVNVF09IHsKLSAgImh0dHA6Ly9jdXJsLmhheHguc2UvIiwKKyAgImh0dHBzOi8vY3VybC5oYXh4LnNlLyIsCiAgICJmdHA6Ly9jb29sLmhheHguc2UvIiwKICAgImh0dHA6Ly93d3cuY29udGFjdG9yLnNlLyIsCiAgICJ3d3cuaGF4eC5zZSIKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvb3BlbnNzbHRocmVhZGxvY2suYyBiL2RvY3MvZXhhbXBsZXMvb3BlbnNzbHRocmVhZGxvY2suYwppbmRleCBhZDU0ZjA4Li5lZWJjNDJlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL29wZW5zc2x0aHJlYWRsb2NrLmMKKysrIGIvZG9jcy9leGFtcGxlcy9vcGVuc3NsdGhyZWFkbG9jay5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTYgKzE5LDE3IEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBFeGFtcGxlIHNvdXJjZSBjb2RlIHRvIHNob3cgb25lIHdheSB0byBzZXQgdGhlIG5lY2Vzc2FyeSBPcGVuU1NMIGxvY2tpbmcKLSAqIGNhbGxiYWNrcyBpZiB5b3Ugd2FudCB0byBkbyBtdWx0aS10aHJlYWRlZCB0cmFuc2ZlcnMgd2l0aCBIVFRQUy9GVFBTIHdpdGgKLSAqIGxpYmN1cmwgYnVpbHQgdG8gdXNlIE9wZW5TU0wuCi0gKgorLyogPERFU0M+CisgKiBvbmUgd2F5IHRvIHNldCB0aGUgbmVjZXNzYXJ5IE9wZW5TU0wgbG9ja2luZyBjYWxsYmFja3MgaWYgeW91IHdhbnQgdG8gZG8KKyAqIG11bHRpLXRocmVhZGVkIHRyYW5zZmVycyB3aXRoIEhUVFBTL0ZUUFMgd2l0aCBsaWJjdXJsIGJ1aWx0IHRvIHVzZSBPcGVuU1NMLgorICogPC9ERVNDPgorICovCisvKgogICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBzdGFuZC1hbG9uZSBleGFtcGxlLgogICoKICAqIEF1dGhvcjogSmVyZW15IEJyb3duCiAgKi8KIAotCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KQEAgLTM4LDIyICszOSwyMiBAQAogI2RlZmluZSBNVVRFWF9DTEVBTlVQKHgpIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmKHgpKQogI2RlZmluZSBNVVRFWF9MT0NLKHgpICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmKHgpKQogI2RlZmluZSBNVVRFWF9VTkxPQ0soeCkgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCYoeCkpCi0jZGVmaW5lIFRIUkVBRF9JRCAgICAgICAgcHRocmVhZF9zZWxmKCAgKQorI2RlZmluZSBUSFJFQURfSUQgICAgICAgIHB0aHJlYWRfc2VsZigpCiAKIAotdm9pZCBoYW5kbGVfZXJyb3IoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmVubywgY29uc3QgY2hhciAqbXNnKXsKLSAgICAgZnByaW50ZihzdGRlcnIsICIqKiAlczolZCAlc1xuIiwgZmlsZSwgbGluZW5vLCBtc2cpOwotICAgICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7Ci0gICAgIC8qIGV4aXQoLTEpOyAqLwotIH0KK3ZvaWQgaGFuZGxlX2Vycm9yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgZnByaW50ZihzdGRlcnIsICIqKiAlczolZCAlc1xuIiwgZmlsZSwgbGluZW5vLCBtc2cpOworICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7CisgIC8qIGV4aXQoLTEpOyAqLworfQogCiAvKiBUaGlzIGFycmF5IHdpbGwgc3RvcmUgYWxsIG9mIHRoZSBtdXRleGVzIGF2YWlsYWJsZSB0byBPcGVuU1NMLiAqLwogc3RhdGljIE1VVEVYX1RZUEUgKm11dGV4X2J1Zj0gTlVMTDsKIAotCiBzdGF0aWMgdm9pZCBsb2NraW5nX2Z1bmN0aW9uKGludCBtb2RlLCBpbnQgbiwgY29uc3QgY2hhciAqIGZpbGUsIGludCBsaW5lKQogewotICBpZiAobW9kZSAmIENSWVBUT19MT0NLKQorICBpZihtb2RlICYgQ1JZUFRPX0xPQ0spCiAgICAgTVVURVhfTE9DSyhtdXRleF9idWZbbl0pOwogICBlbHNlCiAgICAgTVVURVhfVU5MT0NLKG11dGV4X2J1ZltuXSk7CkBAIC02OCwxMCArNjksMTAgQEAKIHsKICAgaW50IGk7CiAKLSAgbXV0ZXhfYnVmID0gbWFsbG9jKENSWVBUT19udW1fbG9ja3MoICApICogc2l6ZW9mKE1VVEVYX1RZUEUpKTsKLSAgaWYgKCFtdXRleF9idWYpCisgIG11dGV4X2J1ZiA9IG1hbGxvYyhDUllQVE9fbnVtX2xvY2tzKCkgKiBzaXplb2YoTVVURVhfVFlQRSkpOworICBpZighbXV0ZXhfYnVmKQogICAgIHJldHVybiAwOwotICBmb3IgKGkgPSAwOyAgaSA8IENSWVBUT19udW1fbG9ja3MoICApOyAgaSsrKQorICBmb3IoaSA9IDA7ICBpIDwgQ1JZUFRPX251bV9sb2NrcygpOyAgaSsrKQogICAgIE1VVEVYX1NFVFVQKG11dGV4X2J1ZltpXSk7CiAgIENSWVBUT19zZXRfaWRfY2FsbGJhY2soaWRfZnVuY3Rpb24pOwogICBDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2sobG9ja2luZ19mdW5jdGlvbik7CkBAIC04MiwxMSArODMsMTEgQEAKIHsKICAgaW50IGk7CiAKLSAgaWYgKCFtdXRleF9idWYpCisgIGlmKCFtdXRleF9idWYpCiAgICAgcmV0dXJuIDA7CiAgIENSWVBUT19zZXRfaWRfY2FsbGJhY2soTlVMTCk7CiAgIENSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjayhOVUxMKTsKLSAgZm9yIChpID0gMDsgIGkgPCBDUllQVE9fbnVtX2xvY2tzKCAgKTsgIGkrKykKKyAgZm9yKGkgPSAwOyAgaSA8IENSWVBUT19udW1fbG9ja3MoKTsgIGkrKykKICAgICBNVVRFWF9DTEVBTlVQKG11dGV4X2J1ZltpXSk7CiAgIGZyZWUobXV0ZXhfYnVmKTsKICAgbXV0ZXhfYnVmID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcGVyc2lzdGFudC5jIGIvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKaW5kZXggMDkxN2RmZC4uYTFlNjE0YiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiByZS11c2luZyBoYW5kbGVzIHRvIGRvIEhUVFAgcGVyc2lzdGVudCBjb25uZWN0aW9ucworICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1kZWxlLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtZGVsZS5jCmluZGV4IGZhYjU5OGYuLjE0NDk3ODMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1kZWxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLWRlbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRlbGV0ZSBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1saXN0LmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtbGlzdC5jCmluZGV4IGFlYmNlYTYuLmI1MzBhMDQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1saXN0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLWxpc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgbWFpbGJveAorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtbXVsdGkuYyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCmluZGV4IDZkZjA5YTIuLmY5MzI5MTggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTQgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBQT1AzIGV4YW1wbGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiAvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gcmV0cmlldmUgbWFpbCB1c2luZyBsaWJjdXJsJ3MgUE9QMwpAQCAtMTEzLDggKzEyMCw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1ub29wLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtbm9vcC5jCmluZGV4IDRlZmU2NzEuLmJjMTYyZDAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1ub29wLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLW5vb3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBlcmZvcm0gYSBub29wCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1yZXRyLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtcmV0ci5jCmluZGV4IGI1MTEzZmEuLmIzNmRkYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1yZXRyLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLXJldHIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJpZXZlIGUtbWFpbHMKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3AzLXNzbC5jIGIvZG9jcy9leGFtcGxlcy9wb3AzLXNzbC5jCmluZGV4IDBiYmVjOGQuLmYwZDRlMjYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1zc2wuYworKysgYi9kb2NzL2V4YW1wbGVzL3BvcDMtc3NsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIFBPUDMgZXhhbXBsZSB1c2luZyBTU0wKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3AzLXN0YXQuYyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1zdGF0LmMKaW5kZXggN2IzMThmYy4uNDZhMGE0NSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXN0YXQuYworKysgYi9kb2NzL2V4YW1wbGVzL3BvcDMtc3RhdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBQT1AzIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gb2J0YWluIG1lc3NhZ2Ugc3RhdGlzdGljcworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtdGxzLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdGxzLmMKaW5kZXggNTgyNzhhMS4uMWE2YzQ0NyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXRscy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy10bHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHVzaW5nIFRMUworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC01NSwxMiArNjEsMTMgQEAKICAgICAgKiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIG9wdGlvbnMgdG8gMCAoZmFsc2UpLgogICAgICAqICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7CiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKKyAgICAgKgogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAogICAgIC8qIFNpbmNlIHRoZSB0cmFmZmljIHdpbGwgYmUgZW5jcnlwdGVkLCBpdCBpcyB2ZXJ5IHVzZWZ1bCB0byB0dXJuIG9uIGRlYnVnCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtdG9wLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdG9wLmMKaW5kZXggMjFjZWU4OC4uZjQ1MmI0MSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXRvcC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy10b3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJlaXZlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYW4gZS1tYWlsCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy11aWRsLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdWlkbC5jCmluZGV4IGRlYmIxNzkuLmYxMjcxMjAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy11aWRsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLXVpZGwuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgbWFpbGJveCBieSB1bmlxdWUgSUQKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3N0LWNhbGxiYWNrLmMgYi9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYwppbmRleCAzZTFjZmIwLi5mNGNkNTBjIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYworKysgYi9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBBbiBleGFtcGxlIHNvdXJjZSBjb2RlIHRoYXQgaXNzdWVzIGEgSFRUUCBQT1NUIGFuZCB3ZSBwcm92aWRlIHRoZSBhY3R1YWwKKy8qIDxERVNDPgorICogQW4gZXhhbXBsZSBzb3VyY2UgY29kZSB0aGF0IGlzc3VlcyBhIEhUVFAgUE9TVCBhbmQgd2UgcHJvdmlkZSB0aGUgYWN0dWFsCiAgKiBkYXRhIHRocm91Z2ggYSByZWFkIGNhbGxiYWNrLgorICogPC9ERVNDPgogICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9zdGlubWVtb3J5LmMgYi9kb2NzL2V4YW1wbGVzL3Bvc3Rpbm1lbW9yeS5jCmluZGV4IDNhZmFjNGIuLjlkZDRjYjYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9zdGlubWVtb3J5LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3N0aW5tZW1vcnkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE1ha2UgYSBIVFRQIFBPU1Qgd2l0aCBkYXRhIGZyb20gbWVtb3J5IGFuZCByZWNlaXZlIHJlc3BvbnNlIGluIG1lbW9yeS4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Bvc3RpdDIuYyBiL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCmluZGV4IDg4ZWE3OGMuLjY3ZTY4NWYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogSFRUUCBNdWx0aXBhcnQgZm9ybXBvc3Qgd2l0aCBmaWxlIHVwbG9hZCBhbmQgdHdvIGFkZGl0aW9uYWwgcGFydHMuCisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgY29kZSB0aGF0IHVwbG9hZHMgYSBmaWxlIG5hbWUgJ2ZvbycgdG8gYSByZW1vdGUgc2NyaXB0IHRoYXQgYWNjZXB0cwogICogIkhUTUwgZm9ybSBiYXNlZCIgKGFzIGRlc2NyaWJlZCBpbiBSRkMxNzM4KSB1cGxvYWRzIHVzaW5nIEhUVFAgUE9TVC4KICAqCkBAIC03OSw3ICs4Myw3IEBACiAgIGlmKGN1cmwpIHsKICAgICAvKiB3aGF0IFVSTCB0aGF0IHJlY2VpdmVzIHRoaXMgUE9TVCAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20vZXhhbXBsZXBvc3QuY2dpIik7Ci0gICAgaWYgKCAoYXJnYyA9PSAyKSAmJiAoIXN0cmNtcChhcmd2WzFdLCAibm9leHBlY3RoZWFkZXIiKSkgKQorICAgIGlmKChhcmdjID09IDIpICYmICghc3RyY21wKGFyZ3ZbMV0sICJub2V4cGVjdGhlYWRlciIpKSkKICAgICAgIC8qIG9ubHkgZGlzYWJsZSAxMDAtY29udGludWUgaGVhZGVyIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkICovCiAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVybGlzdCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0hUVFBQT1NULCBmb3JtcG9zdCk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Byb2dyZXNzZnVuYy5jIGIvZG9jcy9leGFtcGxlcy9wcm9ncmVzc2Z1bmMuYwppbmRleCBiMjYzNWJjLi5hYjM0ZWY5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3Byb2dyZXNzZnVuYy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcHJvZ3Jlc3NmdW5jLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVc2UgdGhlIHByb2dyZXNzIGNhbGxiYWNrcywgb2xkIGFuZC9vciBuZXcgb25lIGRlcGVuZGluZyBvbiBhdmFpbGFibGUKKyAqIGxpYmN1cmwgdmVyc2lvbi4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcmVzb2x2ZS5jIGIvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKaW5kZXggN2IzZTU2NS4uMTVlMzQzZiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVc2UgQ1VSTE9QVF9SRVNPTFZFIHRvIGZlZWQgY3VzdG9tIElQIGFkZHJlc3NlcyBmb3IgZ2l2ZW4gaG9zdCBuYW1lICsgcG9ydAorICogbnVtYmVyIGNvbWJpbmF0aW9ucy4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcnRzcC5jIGIvZG9jcy9leGFtcGxlcy9ydHNwLmMKaW5kZXggZmVkMzQzZC4uNjNjNDZlMSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9ydHNwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9ydHNwLmMKQEAgLTI3LDYgKzI3LDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLworLyogPERFU0M+CisgKiBBIGJhc2ljIFJUU1AgdHJhbnNmZXIKKyAqIDwvREVTQz4KKyAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQyLDEyICs0NiwxMiBAQAogewogICBzdHJ1Y3QgdGVybWlvcyBvbGR0LCBuZXd0OwogICBpbnQgY2g7Ci0gIHRjZ2V0YXR0ciggU1RESU5fRklMRU5PLCAmb2xkdCApOworICB0Y2dldGF0dHIoU1RESU5fRklMRU5PLCAmb2xkdCk7CiAgIG5ld3QgPSBvbGR0OwotICBuZXd0LmNfbGZsYWcgJj0gfiggSUNBTk9OIHwgRUNITyApOwotICB0Y3NldGF0dHIoIFNURElOX0ZJTEVOTywgVENTQU5PVywgJm5ld3QgKTsKKyAgbmV3dC5jX2xmbGFnICY9IH4oIElDQU5PTiB8IEVDSE8pOworICB0Y3NldGF0dHIoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbmV3dCk7CiAgIGNoID0gZ2V0Y2hhcigpOwotICB0Y3NldGF0dHIoIFNURElOX0ZJTEVOTywgVENTQU5PVywgJm9sZHQgKTsKKyAgdGNzZXRhdHRyKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm9sZHQpOwogICByZXR1cm4gY2g7CiB9CiAjZW5kaWYKQEAgLTU4LDEyICs2MiwxMiBAQAogCiAvKiBlcnJvciBoYW5kbGluZyBtYWNyb3MgKi8KICNkZWZpbmUgbXlfY3VybF9lYXN5X3NldG9wdChBLCBCLCBDKSBcCi0gIGlmICgocmVzID0gY3VybF9lYXN5X3NldG9wdCgoQSksIChCKSwgKEMpKSkgIT0gQ1VSTEVfT0spIFwKKyAgaWYoKHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxFX09LKSBcCiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfc2V0b3B0KCVzLCAlcywgJXMpIGZhaWxlZDogJWRcbiIsIFwKICAgICAgICAgICAgICNBLCAjQiwgI0MsIHJlcyk7CiAKICNkZWZpbmUgbXlfY3VybF9lYXN5X3BlcmZvcm0oQSkgXAotICBpZiAoKHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKChBKSkpICE9IENVUkxFX09LKSBcCisgIGlmKChyZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybSgoQSkpKSAhPSBDVVJMRV9PSykgXAogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X3BlcmZvcm0oJXMpIGZhaWxlZDogJWRcbiIsICNBLCByZXMpOwogCiAKQEAgLTgzLDkgKzg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2RwX2ZpbGVuYW1lKQogewogICBDVVJMY29kZSByZXMgPSBDVVJMRV9PSzsKLSAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAid3QiKTsKKyAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAid2IiKTsKICAgcHJpbnRmKCJcblJUU1A6IERFU0NSSUJFICVzXG4iLCB1cmkpOwotICBpZiAoc2RwX2ZwID09IE5VTEwpIHsKKyAgaWYoc2RwX2ZwID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmdcbiIsIHNkcF9maWxlbmFtZSk7CiAgICAgc2RwX2ZwID0gc3Rkb3V0OwogICB9CkBAIC05Niw3ICsxMDAsNyBAQAogICBteV9jdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUlRTUF9SRVFVRVNULCAobG9uZylDVVJMX1JUU1BSRVFfREVTQ1JJQkUpOwogICBteV9jdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKICAgbXlfY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKLSAgaWYgKHNkcF9mcCAhPSBzdGRvdXQpIHsKKyAgaWYoc2RwX2ZwICE9IHN0ZG91dCkgewogICAgIGZjbG9zZShzZHBfZnApOwogICB9CiB9CkBAIC0xMzcsMTQgKzE0MSwxNSBAQAogCiAKIC8qIGNvbnZlcnQgdXJsIGludG8gYW4gc2RwIGZpbGVuYW1lICovCi1zdGF0aWMgdm9pZCBnZXRfc2RwX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnVybCwgY2hhciAqc2RwX2ZpbGVuYW1lKQorc3RhdGljIHZvaWQgZ2V0X3NkcF9maWxlbmFtZShjb25zdCBjaGFyICp1cmwsIGNoYXIgKnNkcF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW4pCiB7CiAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHVybCwgJy8nKTsKICAgc3RyY3B5KHNkcF9maWxlbmFtZSwgInZpZGVvLnNkcCIpOwotICBpZiAocyAhPSBOVUxMKSB7CisgIGlmKHMgIT0gTlVMTCkgewogICAgIHMrKzsKLSAgICBpZiAoc1swXSAhPSAnXDAnKSB7Ci0gICAgICBzcHJpbnRmKHNkcF9maWxlbmFtZSwgIiVzLnNkcCIsIHMpOworICAgIGlmKHNbMF0gIT0gJ1wwJykgeworICAgICAgc25wcmludGYoc2RwX2ZpbGVuYW1lLCBuYW1lbGVuLCAiJXMuc2RwIiwgcyk7CiAgICAgfQogICB9CiB9CkBAIC0xNTYsMTAgKzE2MSwxMCBAQAogewogICBpbnQgbWF4X2xlbiA9IDI1NjsKICAgY2hhciAqcyA9IG1hbGxvYyhtYXhfbGVuKTsKLSAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAicnQiKTsKKyAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAicmIiKTsKICAgY29udHJvbFswXSA9ICdcMCc7Ci0gIGlmIChzZHBfZnAgIT0gTlVMTCkgewotICAgIHdoaWxlIChmZ2V0cyhzLCBtYXhfbGVuIC0gMiwgc2RwX2ZwKSAhPSBOVUxMKSB7CisgIGlmKHNkcF9mcCAhPSBOVUxMKSB7CisgICAgd2hpbGUoZmdldHMocywgbWF4X2xlbiAtIDIsIHNkcF9mcCkgIT0gTlVMTCkgewogICAgICAgc3NjYW5mKHMsICIgYSA9IGNvbnRyb2w6ICVzIiwgY29udHJvbCk7CiAgICAgfQogICAgIGZjbG9zZShzZHBfZnApOwpAQCAtMTc0LDcgKzE3OSw4IEBACiAjaWYgMQogICBjb25zdCBjaGFyICp0cmFuc3BvcnQgPSAiUlRQL0FWUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7ICAvKiBVRFAgKi8KICNlbHNlCi0gIGNvbnN0IGNoYXIgKnRyYW5zcG9ydCA9ICJSVFAvQVZQL1RDUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7ICAvKiBUQ1AgKi8KKyAgLyogVENQICovCisgIGNvbnN0IGNoYXIgKnRyYW5zcG9ydCA9ICJSVFAvQVZQL1RDUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7CiAjZW5kaWYKICAgY29uc3QgY2hhciAqcmFuZ2UgPSAiMC4wMDAtIjsKICAgaW50IHJjID0gRVhJVF9TVUNDRVNTOwpAQCAtMTg1LDUwICsxOTEsNTMgQEAKICAgcHJpbnRmKCIgICAgUmVxdWlyZXMgY1VSTCBWNy4yMCBvciBncmVhdGVyXG5cbiIpOwogCiAgIC8qIGNoZWNrIGNvbW1hbmQgbGluZSAqLwotICBpZiAoKGFyZ2MgIT0gMikgJiYgKGFyZ2MgIT0gMykpIHsKKyAgaWYoKGFyZ2MgIT0gMikgJiYgKGFyZ2MgIT0gMykpIHsKICAgICBiYXNlX25hbWUgPSBzdHJyY2hyKGFyZ3ZbMF0sICcvJyk7Ci0gICAgaWYgKGJhc2VfbmFtZSA9PSBOVUxMKSB7CisgICAgaWYoYmFzZV9uYW1lID09IE5VTEwpIHsKICAgICAgIGJhc2VfbmFtZSA9IHN0cnJjaHIoYXJndlswXSwgJ1xcJyk7CiAgICAgfQotICAgIGlmIChiYXNlX25hbWUgPT0gTlVMTCkgeworICAgIGlmKGJhc2VfbmFtZSA9PSBOVUxMKSB7CiAgICAgICBiYXNlX25hbWUgPSBhcmd2WzBdOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgYmFzZV9uYW1lKys7CiAgICAgfQogICAgIHByaW50ZigiVXNhZ2U6ICAgJXMgdXJsIFt0cmFuc3BvcnRdXG4iLCBiYXNlX25hbWUpOwogICAgIHByaW50ZigiICAgICAgICAgdXJsIG9mIHZpZGVvIHNlcnZlclxuIik7Ci0gICAgcHJpbnRmKCIgICAgICAgICB0cmFuc3BvcnQgKG9wdGlvbmFsKSBzcGVjaWZpZXIgZm9yIG1lZGlhIHN0cmVhbSBwcm90b2NvbFxuIik7CisgICAgcHJpbnRmKCIgICAgICAgICB0cmFuc3BvcnQgKG9wdGlvbmFsKSBzcGVjaWZpZXIgZm9yIG1lZGlhIHN0cmVhbSIKKyAgICAgICAgICAgIiBwcm90b2NvbFxuIik7CiAgICAgcHJpbnRmKCIgICAgICAgICBkZWZhdWx0IHRyYW5zcG9ydDogJXNcbiIsIHRyYW5zcG9ydCk7CiAgICAgcHJpbnRmKCJFeGFtcGxlOiAlcyBydHNwOi8vMTkyLjE2OC4wLjIvbWVkaWEvdmlkZW8xXG5cbiIsIGJhc2VfbmFtZSk7CiAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZSB7CiAgICAgY29uc3QgY2hhciAqdXJsID0gYXJndlsxXTsKICAgICBjaGFyICp1cmkgPSBtYWxsb2Moc3RybGVuKHVybCkgKyAzMik7CiAgICAgY2hhciAqc2RwX2ZpbGVuYW1lID0gbWFsbG9jKHN0cmxlbih1cmwpICsgMzIpOwogICAgIGNoYXIgKmNvbnRyb2wgPSBtYWxsb2Moc3RybGVuKHVybCkgKyAzMik7CiAgICAgQ1VSTGNvZGUgcmVzOwotICAgIGdldF9zZHBfZmlsZW5hbWUodXJsLCBzZHBfZmlsZW5hbWUpOwotICAgIGlmIChhcmdjID09IDMpIHsKKyAgICBnZXRfc2RwX2ZpbGVuYW1lKHVybCwgc2RwX2ZpbGVuYW1lLCBzdHJsZW4odXJsKSArIDMyKTsKKyAgICBpZihhcmdjID09IDMpIHsKICAgICAgIHRyYW5zcG9ydCA9IGFyZ3ZbMl07CiAgICAgfQogCiAgICAgLyogaW5pdGlhbGl6ZSBjdXJsICovCiAgICAgcmVzID0gY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwotICAgIGlmIChyZXMgPT0gQ1VSTEVfT0spIHsKKyAgICBpZihyZXMgPT0gQ1VSTEVfT0spIHsKICAgICAgIGN1cmxfdmVyc2lvbl9pbmZvX2RhdGEgKmRhdGEgPSBjdXJsX3ZlcnNpb25faW5mbyhDVVJMVkVSU0lPTl9OT1cpOwogICAgICAgQ1VSTCAqY3VybDsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgIGNVUkwgViVzIGxvYWRlZFxuIiwgZGF0YS0+dmVyc2lvbik7CiAKICAgICAgIC8qIGluaXRpYWxpemUgdGhpcyBjdXJsIHNlc3Npb24gKi8KICAgICAgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwotICAgICAgaWYgKGN1cmwgIT0gTlVMTCkgeworICAgICAgaWYoY3VybCAhPSBOVUxMKSB7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9OT1BST0dSRVNTLCAxTCk7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IRUFERVJEQVRBLCBzdGRvdXQpOwogICAgICAgICBteV9jdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCB1cmwpOwogCiAgICAgICAgIC8qIHJlcXVlc3Qgc2VydmVyIG9wdGlvbnMgKi8KLSAgICAgICAgc3ByaW50Zih1cmksICIlcyIsIHVybCk7CisgICAgICAgIHNucHJpbnRmKHVyaSwgc3RybGVuKHVybCkgKyAzMiwgIiVzIiwgdXJsKTsKICAgICAgICAgcnRzcF9vcHRpb25zKGN1cmwsIHVyaSk7CiAKICAgICAgICAgLyogcmVxdWVzdCBzZXNzaW9uIGRlc2NyaXB0aW9uIGFuZCB3cml0ZSByZXNwb25zZSB0byBzZHAgZmlsZSAqLwpAQCAtMjM4LDExICsyNDcsMTEgQEAKICAgICAgICAgZ2V0X21lZGlhX2NvbnRyb2xfYXR0cmlidXRlKHNkcF9maWxlbmFtZSwgY29udHJvbCk7CiAKICAgICAgICAgLyogc2V0dXAgbWVkaWEgc3RyZWFtICovCi0gICAgICAgIHNwcmludGYodXJpLCAiJXMvJXMiLCB1cmwsIGNvbnRyb2wpOworICAgICAgICBzbnByaW50Zih1cmksIHN0cmxlbih1cmwpICsgMzIsICIlcy8lcyIsIHVybCwgY29udHJvbCk7CiAgICAgICAgIHJ0c3Bfc2V0dXAoY3VybCwgdXJpLCB0cmFuc3BvcnQpOwogCiAgICAgICAgIC8qIHN0YXJ0IHBsYXlpbmcgbWVkaWEgc3RyZWFtICovCi0gICAgICAgIHNwcmludGYodXJpLCAiJXMvIiwgdXJsKTsKKyAgICAgICAgc25wcmludGYodXJpLCBzdHJsZW4odXJsKSArIDMyLCAiJXMvIiwgdXJsKTsKICAgICAgICAgcnRzcF9wbGF5KGN1cmwsIHVyaSwgcmFuZ2UpOwogICAgICAgICBwcmludGYoIlBsYXlpbmcgdmlkZW8sIHByZXNzIGFueSBrZXkgdG8gc3RvcCAuLi4iKTsKICAgICAgICAgX2dldGNoKCk7CkBAIC0yNTQsMTEgKzI2MywxMyBAQAogICAgICAgICAvKiBjbGVhbnVwICovCiAgICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgICAgICBjdXJsID0gTlVMTDsKLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBlbHNlIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgICB9CiAgICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoJXMpIGZhaWxlZDogJWRcbiIsCiAgICAgICAgICAgICAgICJDVVJMX0dMT0JBTF9BTEwiLCByZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc2FtcGxlY29udi5jIGIvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKaW5kZXggM2RiMzE2MC4uZWVjZTZhYSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKKysrIGIvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMCArMTksMTMgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IGEgcHJvZ3JhbSBvbiBhIG5vbi1BU0NJSSBwbGF0Zm9ybQorICogd291bGQgaW52b2tlIGNhbGxiYWNrcyB0byBkbyBpdHMgb3duIGNvZGVzZXQgY29udmVyc2lvbnMgaW5zdGVhZCBvZgorICogdXNpbmcgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsLgorICogPC9ERVNDPgorICovCiAvKgotICAgVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IGEgcHJvZ3JhbSBvbiBhIG5vbi1BU0NJSSBwbGF0Zm9ybQotICAgd291bGQgaW52b2tlIGNhbGxiYWNrcyB0byBkbyBpdHMgb3duIGNvZGVzZXQgY29udmVyc2lvbnMgaW5zdGVhZCBvZgotICAgdXNpbmcgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsLgogCiAgICBUaGUgSUJNLTEwNDcgRUJDRElDIGNvZGVzZXQgaXMgdXNlZCBmb3IgdGhpcyBleGFtcGxlIGJ1dCB0aGUgY29kZQogICAgd291bGQgYmUgc2ltaWxhciBmb3Igb3RoZXIgbm9uLUFTQ0lJIGNvZGVzZXRzLgpAQCAtNDYsMTAgKzQ5LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV9hMmUoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApAQCAtNjAsMTAgKzY0LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV9lMmEoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApAQCAtNzQsMTAgKzc5LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV91MmUoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zZW5kcmVjdi5jIGIvZG9jcy9leGFtcGxlcy9zZW5kcmVjdi5jCmluZGV4IDg4ZmRkZjUuLjQxZTI4M2MgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2VuZHJlY3YuYworKysgYi9kb2NzL2V4YW1wbGVzL3NlbmRyZWN2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw3ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogQW4gZXhhbXBsZSBvZiBjdXJsX2Vhc3lfc2VuZCgpIGFuZCBjdXJsX2Vhc3lfcmVjdigpIHVzYWdlLiAqLworLyogPERFU0M+CisgKiBBbiBleGFtcGxlIG9mIGN1cmxfZWFzeV9zZW5kKCkgYW5kIGN1cmxfZWFzeV9yZWN2KCkgdXNhZ2UuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00MSwxMiArNDQsMTAgQEAKIAogICBGRF9TRVQoc29ja2ZkLCAmZXJyZmQpOyAvKiBhbHdheXMgY2hlY2sgZm9yIGVycm9yICovCiAKLSAgaWYoZm9yX3JlY3YpCi0gIHsKKyAgaWYoZm9yX3JlY3YpIHsKICAgICBGRF9TRVQoc29ja2ZkLCAmaW5mZCk7CiAgIH0KLSAgZWxzZQotICB7CisgIGVsc2UgewogICAgIEZEX1NFVChzb2NrZmQsICZvdXRmZCk7CiAgIH0KIApAQCAtNjYsNiArNjcsMTQgQEAKICAgc2l6ZV90IGlvbGVuOwogICBjdXJsX29mZl90IG5yZWFkOwogCisgIC8qIEEgZ2VuZXJhbCBub3RlIG9mIGNhdXRpb24gaGVyZTogaWYgeW91J3JlIHVzaW5nIGN1cmxfZWFzeV9yZWN2KCkgb3IKKyAgICAgY3VybF9lYXN5X3NlbmQoKSB0byBpbXBsZW1lbnQgSFRUUCBvciBfYW55XyBvdGhlciBwcm90b2NvbCBsaWJjdXJsCisgICAgIHN1cHBvcnRzICJuYXRpdmVseSIsIHlvdSdyZSBkb2luZyBpdCB3cm9uZyBhbmQgeW91IHNob3VsZCBzdG9wLgorCisgICAgIFRoaXMgZXhhbXBsZSB1c2VzIEhUVFAgb25seSB0byBzaG93IGhvdyB0byB1c2UgdGhpcyBBUEksIGl0IGRvZXMgbm90CisgICAgIHN1Z2dlc3QgdGhhdCB3cml0aW5nIGFuIGFwcGxpY2F0aW9uIGRvaW5nIHRoaXMgaXMgc2Vuc2libGUuCisgICovCisKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CkBAIC03Myw4ICs4Miw3IEBACiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPTk5FQ1RfT05MWSwgMUwpOwogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogCi0gICAgaWYoQ1VSTEVfT0sgIT0gcmVzKQotICAgIHsKKyAgICBpZihDVVJMRV9PSyAhPSByZXMpIHsKICAgICAgIHByaW50ZigiRXJyb3I6ICVzXG4iLCBzdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTg1LDE3ICs5MywxNSBAQAogICAgICAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0xBU1RTT0NLRVQsICZzb2NrZXh0cik7CiAKLSAgICBpZihDVVJMRV9PSyAhPSByZXMpCi0gICAgeworICAgIGlmKENVUkxFX09LICE9IHJlcykgewogICAgICAgcHJpbnRmKCJFcnJvcjogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHNvY2tmZCA9IHNvY2tleHRyOworICAgIHNvY2tmZCA9IChjdXJsX3NvY2tldF90KXNvY2tleHRyOwogCiAgICAgLyogd2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZHkgZm9yIHNlbmRpbmcgKi8KLSAgICBpZighd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAwLCA2MDAwMEwpKQotICAgIHsKKyAgICBpZighd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAwLCA2MDAwMEwpKSB7CiAgICAgICBwcmludGYoIkVycm9yOiB0aW1lb3V0LlxuIik7CiAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xMDUsMTYgKzExMSwxNCBAQAogICAgICAqIHRvIHNlZSBpZiBhbGwgdGhlIHJlcXVlc3QgaGFzIGJlZW4gc2VudCAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9zZW5kKGN1cmwsIHJlcXVlc3QsIHN0cmxlbihyZXF1ZXN0KSwgJmlvbGVuKTsKIAotICAgIGlmKENVUkxFX09LICE9IHJlcykKLSAgICB7CisgICAgaWYoQ1VSTEVfT0sgIT0gcmVzKSB7CiAgICAgICBwcmludGYoIkVycm9yOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIHB1dHMoIlJlYWRpbmcgcmVzcG9uc2UuIik7CiAKICAgICAvKiByZWFkIHRoZSByZXNwb25zZSAqLwotICAgIGZvcig7OykKLSAgICB7CisgICAgZm9yKDs7KSB7CiAgICAgICBjaGFyIGJ1ZlsxMDI0XTsKIAogICAgICAgd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAxLCA2MDAwMEwpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zZXBoZWFkZXJzLmMgYi9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYwppbmRleCA3NDAyZTM1Li5hODY1ZDU3IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYworKysgYi9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFNpbXBsZSBIVFRQIEdFVCB0aGF0IHN0b3JlcyB0aGUgaGVhZGVycyBpbiBhIHNlcGFyYXRlIGZpbGUKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0yNyw3ICszMSw3IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgaW50IHdyaXR0ZW4gPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilzdHJlYW0pOworICBzaXplX3Qgd3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCAoRklMRSAqKXN0cmVhbSk7CiAgIHJldHVybiB3cml0dGVuOwogfQogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Nlc3Npb25pbmZvLmMgYi9kb2NzL2V4YW1wbGVzL3Nlc3Npb25pbmZvLmMKaW5kZXggMjY0MWM3MS4uMTFjODdjZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zZXNzaW9uaW5mby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2Vzc2lvbmluZm8uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFVzZXMgdGhlIENVUkxJTkZPX1RMU19TRVNTSU9OIGRhdGEuCisgKiA8L0RFU0M+CisgKi8KIAogLyogTm90ZSB0aGF0IHRoaXMgZXhhbXBsZSBjdXJyZW50bHkgcmVxdWlyZXMgY1VSTCB0byBiZSBsaW5rZWQgYWdhaW5zdAogICAgR251VExTIChhbmQgdGhpcyBwcm9ncmFtIG11c3QgYWxzbyBiZSBsaW5rZWQgYWdhaW5zdCAtbGdudXRscykuICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NmdHBnZXQuYyBiL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCmluZGV4IDQzNDI5OWQuLjFjYTc0NDggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogR2V0cyBhIGZpbGUgdXNpbmcgYW4gU0ZUUCBVUkwuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlLmMgYi9kb2NzL2V4YW1wbGVzL3NpbXBsZS5jCmluZGV4IDE5MTJjZTYuLjcyMjZmNGIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zaW1wbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFZlcnkgc2ltcGxlIEhUVFAgR0VUCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NpbXBsZXBvc3QuYyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCmluZGV4IDg2NTc3NzEuLjk5ZGYwNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVmVyeSBzaW1wbGUgSFRUUCBQT1NUCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zaW1wbGVzc2wuYyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlc3NsLmMKaW5kZXggYWVmYjc5Zi4uODE3MTNhYiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zaW1wbGVzc2wuYworKysgYi9kb2NzL2V4YW1wbGVzL3NpbXBsZXNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogU2hvd3MgSFRUUFMgdXNhZ2Ugd2l0aCBjbGllbnQgY2VydHMgYW5kIG9wdGlvbmFsIHNzbCBlbmdpbmUgdXNlLgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpAQCAtNDMsNyArNDcsNiBAQAogCiBpbnQgbWFpbih2b2lkKQogewotICBpbnQgaTsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwogICBGSUxFICpoZWFkZXJmaWxlOwpAQCAtNTEsNiArNTQsNyBAQAogCiAgIHN0YXRpYyBjb25zdCBjaGFyICpwQ2VydEZpbGUgPSAidGVzdGNlcnQucGVtIjsKICAgc3RhdGljIGNvbnN0IGNoYXIgKnBDQUNlcnRGaWxlPSJjYWNlcnQucGVtIjsKKyAgc3RhdGljIGNvbnN0IGNoYXIgKnBIZWFkZXJGaWxlID0gImR1bXBpdCI7CiAKICAgY29uc3QgY2hhciAqcEtleU5hbWU7CiAgIGNvbnN0IGNoYXIgKnBLZXlUeXBlOwpAQCAtNjcsNyArNzEsNyBAQAogICBwRW5naW5lICAgPSBOVUxMOwogI2VuZGlmCiAKLSAgaGVhZGVyZmlsZSA9IGZvcGVuKCJkdW1waXQiLCAidyIpOworICBoZWFkZXJmaWxlID0gZm9wZW4ocEhlYWRlckZpbGUsICJ3YiIpOwogCiAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfREVGQVVMVCk7CiAKQEAgLTc3LDQ3ICs4MSw0NiBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJIVFRQUzovL3lvdXIuZmF2b3VyaXRlLnNzbC5zaXRlIik7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0hFQURFUkRBVEEsIGhlYWRlcmZpbGUpOwogCi0gICAgZm9yKGkgPSAwOyBpIDwgMTsgaSsrKSAvKiBzaW5nbGUtaXRlcmF0aW9uIGxvb3AsIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20gKi8KLSAgICB7Ci0gICAgICBpZiAocEVuZ2luZSkgICAgICAgICAgICAgLyogdXNlIGNyeXB0byBlbmdpbmUgKi8KLSAgICAgIHsKLSAgICAgICAgaWYgKGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xFTkdJTkUscEVuZ2luZSkgIT0gQ1VSTEVfT0spCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAvKiBsb2FkIHRoZSBjcnlwdG8gZW5naW5lICovCi0gICAgICAgICAgZnByaW50ZihzdGRlcnIsImNhbid0IHNldCBjcnlwdG8gZW5naW5lXG4iKTsKKyAgICBkbyB7IC8qIGR1bW15IGxvb3AsIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20gKi8KKyAgICAgIGlmKHBFbmdpbmUpIHsKKyAgICAgICAgLyogdXNlIGNyeXB0byBlbmdpbmUgKi8KKyAgICAgICAgaWYoY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTEVOR0lORSwgcEVuZ2luZSkgIT0gQ1VSTEVfT0spIHsKKyAgICAgICAgICAvKiBsb2FkIHRoZSBjcnlwdG8gZW5naW5lICovCisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW4ndCBzZXQgY3J5cHRvIGVuZ2luZVxuIik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCwxTCkgIT0gQ1VSTEVfT0spCi0gICAgICAgIHsgLyogc2V0IHRoZSBjcnlwdG8gZW5naW5lIGFzIGRlZmF1bHQgKi8KKyAgICAgICAgaWYoY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULCAxTCkgIT0gQ1VSTEVfT0spIHsKKyAgICAgICAgICAvKiBzZXQgdGhlIGNyeXB0byBlbmdpbmUgYXMgZGVmYXVsdCAqLwogICAgICAgICAgIC8qIG9ubHkgbmVlZGVkIGZvciB0aGUgZmlyc3QgdGltZSB5b3UgbG9hZAogICAgICAgICAgICAgIGEgZW5naW5lIGluIGEgY3VybCBvYmplY3QuLi4gKi8KLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiY2FuJ3Qgc2V0IGNyeXB0byBlbmdpbmUgYXMgZGVmYXVsdFxuIik7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW4ndCBzZXQgY3J5cHRvIGVuZ2luZSBhcyBkZWZhdWx0XG4iKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQogICAgICAgLyogY2VydCBpcyBzdG9yZWQgUEVNIGNvZGVkIGluIGZpbGUuLi4gKi8KICAgICAgIC8qIHNpbmNlIFBFTSBpcyBkZWZhdWx0LCB3ZSBuZWVkbid0IHNldCBpdCBmb3IgUEVNICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xDRVJUVFlQRSwiUEVNIik7CisgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKIAogICAgICAgLyogc2V0IHRoZSBjZXJ0IGZvciBjbGllbnQgYXV0aGVudGljYXRpb24gKi8KLSAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1NTTENFUlQscENlcnRGaWxlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xDRVJULCBwQ2VydEZpbGUpOwogCiAgICAgICAvKiBzb3JyeSwgZm9yIGVuZ2luZSB3ZSBtdXN0IHNldCB0aGUgcGFzc3BocmFzZQogICAgICAgICAgKGlmIHRoZSBrZXkgaGFzIG9uZS4uLikgKi8KLSAgICAgIGlmIChwUGFzc3BocmFzZSkKLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfS0VZUEFTU1dELHBQYXNzcGhyYXNlKTsKKyAgICAgIGlmKHBQYXNzcGhyYXNlKQorICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfS0VZUEFTU1dELCBwUGFzc3BocmFzZSk7CiAKICAgICAgIC8qIGlmIHdlIHVzZSBhIGtleSBzdG9yZWQgaW4gYSBjcnlwdG8gZW5naW5lLAogICAgICAgICAgd2UgbXVzdCBzZXQgdGhlIGtleSB0eXBlIHRvICJFTkciICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xLRVlUWVBFLHBLZXlUeXBlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xLRVlUWVBFLCBwS2V5VHlwZSk7CiAKICAgICAgIC8qIHNldCB0aGUgcHJpdmF0ZSBrZXkgKGZpbGUgb3IgSUQgaW4gZW5naW5lKSAqLwotICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfU1NMS0VZLHBLZXlOYW1lKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xLRVksIHBLZXlOYW1lKTsKIAogICAgICAgLyogc2V0IHRoZSBmaWxlIHdpdGggdGhlIGNlcnRzIHZhaWxkYXRpbmcgdGhlIHNlcnZlciAqLwotICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfQ0FJTkZPLHBDQUNlcnRGaWxlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sIHBDQUNlcnRGaWxlKTsKIAogICAgICAgLyogZGlzY29ubmVjdCBpZiB3ZSBjYW4ndCB2YWxpZGF0ZSBzZXJ2ZXIncyBjZXJ0ICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwxTCk7CisgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKIAogICAgICAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCwgcmVzIHdpbGwgZ2V0IHRoZSByZXR1cm4gY29kZSAqLwogICAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CkBAIC0xMjcsNyArMTMwLDcgQEAKICAgICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAKICAgICAgIC8qIHdlIGFyZSBkb25lLi4uICovCi0gICAgfQorICAgIH0gd2hpbGUoMCk7CiAgICAgLyogYWx3YXlzIGNsZWFudXAgKi8KICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbW9vdGgtZ3RrLXRocmVhZC5jIGIvZG9jcy9leGFtcGxlcy9zbW9vdGgtZ3RrLXRocmVhZC5jCmluZGV4IDkzMmY2ZTMuLjU0N2NjMGYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc21vb3RoLWd0ay10aHJlYWQuYworKysgYi9kb2NzL2V4YW1wbGVzL3Ntb290aC1ndGstdGhyZWFkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw5ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogVGhpcyBpcyBhIG11bHRpIHRocmVhZGVkIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyBhIHByb2dyZXNzIGJhciB0byBzaG93CisvKiA8REVTQz4KKyAqIEEgbXVsdGkgdGhyZWFkZWQgYXBwbGljYXRpb24gdGhhdCB1c2VzIGEgcHJvZ3Jlc3MgYmFyIHRvIHNob3cKICAqIHN0YXR1cy4gIEl0IHVzZXMgR3RrKyB0byBtYWtlIGEgc21vb3RoIHB1bHNlLgotICoKKyAqIDwvREVTQz4KKyAqLworLyoKICAqIFdyaXR0ZW4gYnkgSnVkIEJpc2hvcCBhZnRlciBzdHVkeWluZyB0aGUgb3RoZXIgZXhhbXBsZXMgcHJvdmlkZWQgd2l0aAogICogbGliY3VybC4KICAqCkBAIC03MSwyMiArNzQsMTkgQEAKIAogICAvKiBTdG9wIHRocmVhZHMgZnJvbSBlbnRlcmluZyB1bmxlc3MgaiBpcyBpbmNyZW1lbnRlZCAqLwogICBwdGhyZWFkX211dGV4X2xvY2soJmxvY2spOwotICB3aGlsZSAoIGogPCBudW1fdXJscyApCi0gIHsKKyAgd2hpbGUoaiA8IG51bV91cmxzKSB7CiAgICAgcHJpbnRmKCJqID0gJWRcbiIsIGopOwogCiAgICAgaHR0cCA9CiAgICAgICBnX3N0cmR1cF9wcmludGYoInhvYXAud2VhdGhlci5jb20vd2VhdGhlci9sb2NhbC8lcz9jYz0qJmRheWY9NSZ1bml0PWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgdXJsc1tqXSk7CiAKLSAgICBwcmludGYoICJodHRwICVzIiwgaHR0cCApOworICAgIHByaW50ZigiaHR0cCAlcyIsIGh0dHApOwogCiAgICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gICAgaWYoY3VybCkKLSAgICB7CisgICAgaWYoY3VybCkgewogCi0gICAgICBvdXRmaWxlID0gZm9wZW4odXJsc1tqXSwgInciKTsKLSAgICAgIC8qIHByaW50ZigiZm9wZW5cbiIpOyAqLworICAgICAgb3V0ZmlsZSA9IGZvcGVuKHVybHNbal0sICJ3YiIpOwogCiAgICAgICAvKiBTZXQgdGhlIFVSTCBhbmQgdHJhbnNmZXIgdHlwZSAqLwogICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgaHR0cCk7CkBAIC0yMTYsNyArMjE2LDcgQEAKICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVCAodG9wX3dpbmRvdyksICJkZWxldGUtZXZlbnQiLAogICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2JfZGVsZXRlKSwgTlVMTCk7CiAKLSAgaWYgKCFnX3RocmVhZF9jcmVhdGUoJmNyZWF0ZV90aHJlYWQsIHByb2dyZXNzX2JhciwgRkFMU0UsIE5VTEwpICE9IDApCisgIGlmKCFnX3RocmVhZF9jcmVhdGUoJmNyZWF0ZV90aHJlYWQsIHByb2dyZXNzX2JhciwgRkFMU0UsIE5VTEwpICE9IDApCiAgICAgZ193YXJuaW5nKCJjYW4ndCBjcmVhdGUgdGhlIHRocmVhZCIpOwogCiAgIGd0a19tYWluKCk7CkBAIC0yMjUsNCArMjI1LDMgQEAKIAogICByZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLWV4cG4uYyBiL2RvY3MvZXhhbXBsZXMvc210cC1leHBuLmMKaW5kZXggMDMyMmQyZi4uZmIwZWQxZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zbXRwLWV4cG4uYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtZXhwbi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTEgKzE5LDE3IEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGV4cGFuZCBhbiBlLW1haWwgbWFpbGluZyBsaXN0CisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qIFRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBleHBhbmQgYW4gZW1haWwgbWFpbGluZyBsaXN0LgorLyogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IHRvIGV4cGFuZCBhbiBlLW1haWwgbWFpbGluZyBsaXN0LgogICoKICAqIE5vdGVzOgogICoKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc210cC1tYWlsLmMgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbWFpbC5jCmluZGV4IGVlYTkwYjguLjMxNWJiMmMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc210cC1tYWlsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zbXRwLW1haWwuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHNlbmQgZS1tYWlscworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpAQCAtMzksNyArNDUsOCBAQAogICAiVG86ICIgVE8gIlxyXG4iLAogICAiRnJvbTogIiBGUk9NICIoRXhhbXBsZSBVc2VyKVxyXG4iLAogICAiQ2M6ICIgQ0MgIihBbm90aGVyIGV4YW1wbGUgVXNlcilcclxuIiwKLSAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAcmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAorICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEAiCisgICJyZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCiAgICJTdWJqZWN0OiBTTVRQIGV4YW1wbGUgbWVzc2FnZVxyXG4iLAogICAiXHJcbiIsIC8qIGVtcHR5IGxpbmUgdG8gZGl2aWRlIGhlYWRlcnMgZnJvbSBib2R5LCBzZWUgUkZDNTMyMiAqLwogICAiVGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2Ugc3RhcnRzIGhlcmUuXHJcbiIsCkBAIC04OSwxMSArOTYsMTIgQEAKICAgICAvKiBUaGlzIGlzIHRoZSBVUkwgZm9yIHlvdXIgbWFpbHNlcnZlciAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJzbXRwOi8vbWFpbC5leGFtcGxlLmNvbSIpOwogCi0gICAgLyogTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzbid0IHN0cmljdGx5IHJlcXVpcmVkLCBvbWl0dGluZyBpdCB3aWxsIHJlc3VsdCBpbgotICAgICAqIGxpYmN1cmwgc2VuZGluZyB0aGUgTUFJTCBGUk9NIGNvbW1hbmQgd2l0aCBlbXB0eSBzZW5kZXIgZGF0YS4gQWxsCisgICAgLyogTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzbid0IHN0cmljdGx5IHJlcXVpcmVkLCBvbWl0dGluZyBpdCB3aWxsIHJlc3VsdAorICAgICAqIGluIGxpYmN1cmwgc2VuZGluZyB0aGUgTUFJTCBGUk9NIGNvbW1hbmQgd2l0aCBlbXB0eSBzZW5kZXIgZGF0YS4gQWxsCiAgICAgICogYXV0b3Jlc3BvbnNlcyBzaG91bGQgaGF2ZSBhbiBlbXB0eSByZXZlcnNlLXBhdGgsIGFuZCBzaG91bGQgYmUgZGlyZWN0ZWQKLSAgICAgKiB0byB0aGUgYWRkcmVzcyBpbiB0aGUgcmV2ZXJzZS1wYXRoIHdoaWNoIHRyaWdnZXJlZCB0aGVtLiBPdGhlcndpc2UsIHRoZXkKLSAgICAgKiBjb3VsZCBjYXVzZSBhbiBlbmRsZXNzIGxvb3AuIFNlZSBSRkMgNTMyMSBTZWN0aW9uIDQuNS41IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogdG8gdGhlIGFkZHJlc3MgaW4gdGhlIHJldmVyc2UtcGF0aCB3aGljaCB0cmlnZ2VyZWQgdGhlbS4gT3RoZXJ3aXNlLAorICAgICAqIHRoZXkgY291bGQgY2F1c2UgYW4gZW5kbGVzcyBsb29wLiBTZWUgUkZDIDUzMjEgU2VjdGlvbiA0LjUuNSBmb3IgbW9yZQorICAgICAqIGRldGFpbHMuCiAgICAgICovCiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX01BSUxfRlJPTSwgRlJPTSk7CiAKQEAgLTEyMiwxMyArMTMwLDEzIEBACiAgICAgLyogRnJlZSB0aGUgbGlzdCBvZiByZWNpcGllbnRzICovCiAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChyZWNpcGllbnRzKTsKIAotICAgIC8qIGN1cmwgd29uJ3Qgc2VuZCB0aGUgUVVJVCBjb21tYW5kIHVudGlsIHlvdSBjYWxsIGNsZWFudXAsIHNvIHlvdSBzaG91bGQgYmUKLSAgICAgKiBhYmxlIHRvIHJlLXVzZSB0aGlzIGNvbm5lY3Rpb24gZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgKHNldHRpbmcKKyAgICAvKiBjdXJsIHdvbid0IHNlbmQgdGhlIFFVSVQgY29tbWFuZCB1bnRpbCB5b3UgY2FsbCBjbGVhbnVwLCBzbyB5b3Ugc2hvdWxkCisgICAgICogYmUgYWJsZSB0byByZS11c2UgdGhpcyBjb25uZWN0aW9uIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIChzZXR0aW5nCiAgICAgICogQ1VSTE9QVF9NQUlMX0ZST00gYW5kIENVUkxPUFRfTUFJTF9SQ1BUIGFzIHJlcXVpcmVkLCBhbmQgY2FsbGluZwogICAgICAqIGN1cmxfZWFzeV9wZXJmb3JtKCkgYWdhaW4uIEl0IG1heSBub3QgYmUgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGUKLSAgICAgKiBjb25uZWN0aW9uIG9wZW4gZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhvdWdoIChtb3JlIHRoYW4gYSBmZXcgbWludXRlcyBtYXkKLSAgICAgKiByZXN1bHQgaW4gdGhlIHNlcnZlciB0aW1pbmcgb3V0IHRoZSBjb25uZWN0aW9uKSwgYW5kIHlvdSBkbyB3YW50IHRvIGNsZWFuCi0gICAgICogdXAgaW4gdGhlIGVuZC4KKyAgICAgKiBjb25uZWN0aW9uIG9wZW4gZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhvdWdoIChtb3JlIHRoYW4gYSBmZXcgbWludXRlcworICAgICAqIG1heSByZXN1bHQgaW4gdGhlIHNlcnZlciB0aW1pbmcgb3V0IHRoZSBjb25uZWN0aW9uKSwgYW5kIHlvdSBkbyB3YW50IHRvCisgICAgICogY2xlYW4gdXAgaW4gdGhlIGVuZC4KICAgICAgKi8KICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLW11bHRpLmMgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYwppbmRleCA0MDk4YzdkLi44OWUxZDk0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQwLDcgKzQ2LDggQEAKICAgIlRvOiAiIFRPICJcclxuIiwKICAgIkZyb206ICIgRlJPTSAiKEV4YW1wbGUgVXNlcilcclxuIiwKICAgIkNjOiAiIENDICIoQW5vdGhlciBleGFtcGxlIFVzZXIpXHJcbiIsCi0gICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKKyAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAIgorICAicmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAogICAiU3ViamVjdDogU01UUCBtdWx0aSBleGFtcGxlIG1lc3NhZ2VcclxuIiwKICAgIlxyXG4iLCAvKiBlbXB0eSBsaW5lIHRvIGRpdmlkZSBoZWFkZXJzIGZyb20gYm9keSwgc2VlIFJGQzUzMjIgKi8KICAgIlRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIHN0YXJ0cyBoZXJlLlxyXG4iLApAQCAtMTgwLDggKzE4Nyw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc210cC1zc2wuYyBiL2RvY3MvZXhhbXBsZXMvc210cC1zc2wuYwppbmRleCBhNzc0NDAzLi5mMDEyMzQwIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtc3NsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zbXRwLXNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBTTVRQIGV4YW1wbGUgdXNpbmcgU1NMCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC00MCw3ICs0Niw4IEBACiAgICJUbzogIiBUTyAiXHJcbiIsCiAgICJGcm9tOiAiIEZST00gIihFeGFtcGxlIFVzZXIpXHJcbiIsCiAgICJDYzogIiBDQyAiKEFub3RoZXIgZXhhbXBsZSBVc2VyKVxyXG4iLAotICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEByZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCisgICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQCIKKyAgInJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKICAgIlN1YmplY3Q6IFNNVFAgU1NMIGV4YW1wbGUgbWVzc2FnZVxyXG4iLAogICAiXHJcbiIsIC8qIGVtcHR5IGxpbmUgdG8gZGl2aWRlIGhlYWRlcnMgZnJvbSBib2R5LCBzZWUgUkZDNTMyMiAqLwogICAiVGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2Ugc3RhcnRzIGhlcmUuXHJcbiIsCkBAIC0xMTUsMTEgKzEyMiwxMiBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOwogI2VuZGlmCiAKLSAgICAvKiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXNuJ3Qgc3RyaWN0bHkgcmVxdWlyZWQsIG9taXR0aW5nIGl0IHdpbGwgcmVzdWx0IGluCi0gICAgICogbGliY3VybCBzZW5kaW5nIHRoZSBNQUlMIEZST00gY29tbWFuZCB3aXRoIGVtcHR5IHNlbmRlciBkYXRhLiBBbGwKKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXNuJ3Qgc3RyaWN0bHkgcmVxdWlyZWQsIG9taXR0aW5nIGl0IHdpbGwgcmVzdWx0CisgICAgICogaW4gbGliY3VybCBzZW5kaW5nIHRoZSBNQUlMIEZST00gY29tbWFuZCB3aXRoIGVtcHR5IHNlbmRlciBkYXRhLiBBbGwKICAgICAgKiBhdXRvcmVzcG9uc2VzIHNob3VsZCBoYXZlIGFuIGVtcHR5IHJldmVyc2UtcGF0aCwgYW5kIHNob3VsZCBiZSBkaXJlY3RlZAotICAgICAqIHRvIHRoZSBhZGRyZXNzIGluIHRoZSByZXZlcnNlLXBhdGggd2hpY2ggdHJpZ2dlcmVkIHRoZW0uIE90aGVyd2lzZSwgdGhleQotICAgICAqIGNvdWxkIGNhdXNlIGFuIGVuZGxlc3MgbG9vcC4gU2VlIFJGQyA1MzIxIFNlY3Rpb24gNC41LjUgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiB0byB0aGUgYWRkcmVzcyBpbiB0aGUgcmV2ZXJzZS1wYXRoIHdoaWNoIHRyaWdnZXJlZCB0aGVtLiBPdGhlcndpc2UsCisgICAgICogdGhleSBjb3VsZCBjYXVzZSBhbiBlbmRsZXNzIGxvb3AuIFNlZSBSRkMgNTMyMSBTZWN0aW9uIDQuNS41IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfTUFJTF9GUk9NLCBGUk9NKTsKIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLXRscy5jIGIvZG9jcy9leGFtcGxlcy9zbXRwLXRscy5jCmluZGV4IDQ4NzJkYmQuLmM4NjNlMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc210cC10bHMuYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtdGxzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIFNNVFAgZXhhbXBsZSB1c2luZyBUTFMKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KQEAgLTQwLDcgKzQ2LDggQEAKICAgIlRvOiAiIFRPICJcclxuIiwKICAgIkZyb206ICIgRlJPTSAiKEV4YW1wbGUgVXNlcilcclxuIiwKICAgIkNjOiAiIENDICIoQW5vdGhlciBleGFtcGxlIFVzZXIpXHJcbiIsCi0gICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKKyAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAIgorICAicmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAogICAiU3ViamVjdDogU01UUCBUTFMgZXhhbXBsZSBtZXNzYWdlXHJcbiIsCiAgICJcclxuIiwgLyogZW1wdHkgbGluZSB0byBkaXZpZGUgaGVhZGVycyBmcm9tIGJvZHksIHNlZSBSRkM1MzIyICovCiAgICJUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSBzdGFydHMgaGVyZS5cclxuIiwKQEAgLTExMCwxOCArMTE3LDE5IEBACiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDBMKTsKICAgICAgKiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOwogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAotICAgIC8qIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpc24ndCBzdHJpY3RseSByZXF1aXJlZCwgb21pdHRpbmcgaXQgd2lsbCByZXN1bHQgaW4KLSAgICAgKiBsaWJjdXJsIHNlbmRpbmcgdGhlIE1BSUwgRlJPTSBjb21tYW5kIHdpdGggZW1wdHkgc2VuZGVyIGRhdGEuIEFsbAorICAgIC8qIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpc24ndCBzdHJpY3RseSByZXF1aXJlZCwgb21pdHRpbmcgaXQgd2lsbCByZXN1bHQKKyAgICAgKiBpbiBsaWJjdXJsIHNlbmRpbmcgdGhlIE1BSUwgRlJPTSBjb21tYW5kIHdpdGggZW1wdHkgc2VuZGVyIGRhdGEuIEFsbAogICAgICAqIGF1dG9yZXNwb25zZXMgc2hvdWxkIGhhdmUgYW4gZW1wdHkgcmV2ZXJzZS1wYXRoLCBhbmQgc2hvdWxkIGJlIGRpcmVjdGVkCi0gICAgICogdG8gdGhlIGFkZHJlc3MgaW4gdGhlIHJldmVyc2UtcGF0aCB3aGljaCB0cmlnZ2VyZWQgdGhlbS4gT3RoZXJ3aXNlLCB0aGV5Ci0gICAgICogY291bGQgY2F1c2UgYW4gZW5kbGVzcyBsb29wLiBTZWUgUkZDIDUzMjEgU2VjdGlvbiA0LjUuNSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIHRvIHRoZSBhZGRyZXNzIGluIHRoZSByZXZlcnNlLXBhdGggd2hpY2ggdHJpZ2dlcmVkIHRoZW0uIE90aGVyd2lzZSwKKyAgICAgKiB0aGV5IGNvdWxkIGNhdXNlIGFuIGVuZGxlc3MgbG9vcC4gU2VlIFJGQyA1MzIxIFNlY3Rpb24gNC41LjUgZm9yIG1vcmUKKyAgICAgKiBkZXRhaWxzLgogICAgICAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9NQUlMX0ZST00sIEZST00pOwogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NtdHAtdnJmeS5jIGIvZG9jcy9leGFtcGxlcy9zbXRwLXZyZnkuYwppbmRleCA0ZTQ0Y2VhLi40ZTA2MjNmIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtdnJmeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc210cC12cmZ5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMSArMTksMTcgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBTTVRQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gdmVyaWZ5IGFuIGUtbWFpbCBhZGRyZXNzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qIFRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSBzaG93aW5nIGhvdyB0byB2ZXJpZnkgYW4gZW1haWwgYWRkcmVzcyBmcm9tIGFuCisvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gdmVyaWZ5IGFuIGUtbWFpbCBhZGRyZXNzIGZyb20gYW4KICAqIFNNVFAgc2VydmVyLgogICoKICAqIE5vdGVzOgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zeW5jdGltZS5jIGIvZG9jcy9leGFtcGxlcy9zeW5jdGltZS5jCmluZGV4IGNkN2QwNzMuLjFjNzg3YmIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc3luY3RpbWUuYworKysgYi9kb2NzL2V4YW1wbGVzL3N5bmN0aW1lLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTZXQgeW91ciBzeXN0ZW0gdGltZSBmcm9tIGEgcmVtb3RlIEhUVFAgc2VydmVyJ3MgRGF0ZTogaGVhZGVyLgorICogPC9ERVNDPgorICovCiAvKiBUaGlzIGV4YW1wbGUgY29kZSBvbmx5IGJ1aWxkcyBhcy1pcyBvbiBXaW5kb3dzLgogICoKICAqIFdoaWxlIFVuaXgvTGludXggdXNlciwgeW91IGRvIG5vdCBuZWVkIHRoaXMgc29mdHdhcmUuCkBAIC0xMjUsNyArMTI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbSkKIHsKICAgZndyaXRlKHB0ciwgc2l6ZSwgbm1lbWIsIHN0cmVhbSk7Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgcmV0dXJuIChubWVtYipzaXplKTsKIH0KIAogc2l6ZV90IFN5bmNUaW1lX0NVUkxfV3JpdGVIZWFkZXIodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLApAQCAtMTM0LDE3ICsxMzgsMTcgQEAKICAgaW50ICAgaSwgUmV0VmFsOwogICBjaGFyICBUbXBTdHIxWzI2XSwgVG1wU3RyMlsyNl07CiAKLSAgaWYgKFNob3dBbGxIZWFkZXIgPT0gMSkKKyAgaWYoU2hvd0FsbEhlYWRlciA9PSAxKQogICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCAoY2hhciAqKShwdHIpKTsKIAotICBpZiAoc3RybmNtcCgoY2hhciAqKShwdHIpLCAiRGF0ZToiLCA1KSA9PSAwKSB7Ci0gICAgaWYgKFNob3dBbGxIZWFkZXIgPT0gMCkKKyAgaWYoc3RybmNtcCgoY2hhciAqKShwdHIpLCAiRGF0ZToiLCA1KSA9PSAwKSB7CisgICAgaWYoU2hvd0FsbEhlYWRlciA9PSAwKQogICAgICAgZnByaW50ZihzdGRlcnIsICJIVFRQIFNlcnZlci4gJXMiLCAoY2hhciAqKShwdHIpKTsKIAotICAgIGlmIChBdXRvU3luY1RpbWUgPT0gMSkgeworICAgIGlmKEF1dG9TeW5jVGltZSA9PSAxKSB7CiAgICAgICAqVG1wU3RyMSA9IDA7CiAgICAgICAqVG1wU3RyMiA9IDA7Ci0gICAgICBpZiAoc3RybGVuKChjaGFyICopKHB0cikpID4gNTApIC8qIENhbiBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyB0bworICAgICAgaWYoc3RybGVuKChjaGFyICopKHB0cikpID4gNTApIC8qIENhbiBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBTdHIxICYgMj8gKi8KICAgICAgICAgQXV0b1N5bmNUaW1lID0gMDsKICAgICAgIGVsc2UgewpAQCAtMTUyLDExICsxNTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBTdHIxLCAmU1lTVGltZS53RGF5LCBUbXBTdHIyLCAmU1lTVGltZS53WWVhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAmU1lTVGltZS53SG91ciwgJlNZU1RpbWUud01pbnV0ZSwgJlNZU1RpbWUud1NlY29uZCk7CiAKLSAgICAgICAgaWYgKFJldFZhbCA9PSA3KSB7Ci0KKyAgICAgICAgaWYoUmV0VmFsID09IDcpIHsKICAgICAgICAgICBTWVNUaW1lLndNaWxsaXNlY29uZHMgPSA1MDA7ICAgIC8qIGFkanVzdCB0byBtaWRwb2ludCwgMC41IHNlYyAqLwotICAgICAgICAgIGZvciAoaT0wOyBpPDEyOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChzdHJjbXAoTXRoU3RyW2ldLCBUbXBTdHIyKSA9PSAwKSB7CisgICAgICAgICAgZm9yKGk9MDsgaTwxMjsgaSsrKSB7CisgICAgICAgICAgICBpZihzdHJjbXAoTXRoU3RyW2ldLCBUbXBTdHIyKSA9PSAwKSB7CiAgICAgICAgICAgICAgIFNZU1RpbWUud01vbnRoID0gaSsxOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE3MCwyMSArMTczLDIxIEBACiAgICAgfQogICB9CiAKLSAgaWYgKHN0cm5jbXAoKGNoYXIgKikocHRyKSwgIlgtQ2FjaGU6IEhJVCIsIDEyKSA9PSAwKSB7CisgIGlmKHN0cm5jbXAoKGNoYXIgKikocHRyKSwgIlgtQ2FjaGU6IEhJVCIsIDEyKSA9PSAwKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogSFRUUCBTZXJ2ZXIgZGF0YSBpcyBjYWNoZWQuIgogICAgICAgICAgICAgIiBTZXJ2ZXIgRGF0ZSBpcyBubyBsb25nZXIgdmFsaWQuXG4iKTsKICAgICBBdXRvU3luY1RpbWUgPSAwOwogICB9Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgcmV0dXJuIChubWVtYipzaXplKTsKIH0KIAogdm9pZCBTeW5jVGltZV9DVVJMX0luaXQoQ1VSTCAqY3VybCwgY2hhciAqcHJveHlfcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnByb3h5X3VzZXJfcGFzc3dvcmQpCiB7Ci0gIGlmIChzdHJsZW4ocHJveHlfcG9ydCkgPiAwKQorICBpZihzdHJsZW4ocHJveHlfcG9ydCkgPiAwKQogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QUk9YWSwgcHJveHlfcG9ydCk7CiAKLSAgaWYgKHN0cmxlbihwcm94eV91c2VyX3Bhc3N3b3JkKSA+IDApCisgIGlmKHN0cmxlbihwcm94eV91c2VyX3Bhc3N3b3JkKSA+IDApCiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1BST1hZVVNFUlBXRCwgcHJveHlfdXNlcl9wYXNzd29yZCk7CiAKICNpZmRlZiBTWU5DVElNRV9VQQpAQCAtMjAxLDcgKzIwNCw3IEBACiAgIENVUkxjb2RlIHJlczsKIAogICBvdXRmaWxlID0gTlVMTDsKLSAgaWYgKEh0dHBHZXRCb2R5ID09IEhUVFBfQ09NTUFORF9IRUFEKQorICBpZihIdHRwR2V0Qm9keSA9PSBIVFRQX0NPTU1BTkRfSEVBRCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfTk9CT0RZLCAxTCk7CiAgIGVsc2UgewogICAgIG91dGZpbGUgPSBmb3BlbihPdXRGaWxlTmFtZSwgIndiIik7CkBAIC0yMTAsNyArMjEzLDcgQEAKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkxfU3RyKTsKICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gIGlmIChvdXRmaWxlICE9IE5VTEwpCisgIGlmKG91dGZpbGUgIT0gTlVMTCkKICAgICBmY2xvc2Uob3V0ZmlsZSk7CiAgIHJldHVybiByZXM7ICAvKiAoQ1VSTEVfT0spICovCiB9CkBAIC0yNDAsNyArMjQzLDcgQEAKICAgaW50IGk7CiAKICAgKmNvbmYtPmh0dHBfcHJveHkgICAgICAgPSAwOwotICBmb3IgKGk9MDsgaTxNQVhfU1RSSU5HMTsgaSsrKQorICBmb3IoaT0wOyBpPE1BWF9TVFJJTkcxOyBpKyspCiAgICAgY29uZi0+cHJveHlfdXNlcltpXSAgICAgPSAwOyAgICAvKiBDbGVhbiB1cCBwYXNzd29yZCBmcm9tIG1lbW9yeSAqLwogICAqY29uZi0+dGltZXNlcnZlciAgICAgICA9IDA7CiAgIHJldHVybiAxOwpAQCAtMjY4LDI0ICsyNzEsMjQgQEAKICAgUmV0VmFsdWUgICAgICAgID0gMDsgICAgLyogU3VjY2Vzc2Z1bCBFeGl0ICovCiAgIGNvbmZfaW5pdChjb25mKTsKIAotICBpZiAoYXJnYyA+IDEpIHsKLSAgICB3aGlsZSAoT3B0aW9uSW5kZXggPCBhcmdjKSB7Ci0gICAgICBpZiAoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc2VydmVyPSIsIDkpID09IDApCisgIGlmKGFyZ2MgPiAxKSB7CisgICAgd2hpbGUoT3B0aW9uSW5kZXggPCBhcmdjKSB7CisgICAgICBpZihzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1zZXJ2ZXI9IiwgOSkgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+dGltZXNlcnZlciwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzldKTsKIAotICAgICAgaWYgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc2hvd2FsbCIpID09IDApCisgICAgICBpZihzdHJjbXAoYXJndltPcHRpb25JbmRleF0sICItLXNob3dhbGwiKSA9PSAwKQogICAgICAgICBTaG93QWxsSGVhZGVyID0gMTsKIAotICAgICAgaWYgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc3luY3RpbWUiKSA9PSAwKQorICAgICAgaWYoc3RyY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1zeW5jdGltZSIpID09IDApCiAgICAgICAgIEF1dG9TeW5jVGltZSA9IDE7CiAKLSAgICAgIGlmIChzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1wcm94eS11c2VyPSIsIDEzKSA9PSAwKQorICAgICAgaWYoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tcHJveHktdXNlcj0iLCAxMykgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+cHJveHlfdXNlciwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzEzXSk7CiAKLSAgICAgIGlmIChzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1wcm94eT0iLCA4KSA9PSAwKQorICAgICAgaWYoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tcHJveHk9IiwgOCkgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+aHR0cF9wcm94eSwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzhdKTsKIAotICAgICAgaWYgKChzdHJjbXAoYXJndltPcHRpb25JbmRleF0sICItLWhlbHAiKSA9PSAwKSB8fAorICAgICAgaWYoKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0taGVscCIpID09IDApIHx8CiAgICAgICAgICAgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi8/IikgPT0gMCkpIHsKICAgICAgICAgc2hvd1VzYWdlKCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjk0LDEzICsyOTcsMTMgQEAKICAgICB9CiAgIH0KIAotICBpZiAoKmNvbmYtPnRpbWVzZXJ2ZXIgPT0gMCkgICAgIC8qIFVzZSBkZWZhdWx0IHNlcnZlciBmb3IgdGltZSBpbmZvcm1hdGlvbiAqLworICBpZigqY29uZi0+dGltZXNlcnZlciA9PSAwKSAgICAgLyogVXNlIGRlZmF1bHQgc2VydmVyIGZvciB0aW1lIGluZm9ybWF0aW9uICovCiAgICAgc25wcmludGYoY29uZi0+dGltZXNlcnZlciwgTUFYX1NUUklORywgIiVzIiwgRGVmYXVsdFRpbWVTZXJ2ZXJbMF0pOwogCiAgIC8qIEluaXQgQ1VSTCBiZWZvcmUgdXNhZ2UgKi8KICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwogICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKGN1cmwpIHsKKyAgaWYoY3VybCkgewogICAgIFN5bmNUaW1lX0NVUkxfSW5pdChjdXJsLCBjb25mLT5odHRwX3Byb3h5LCBjb25mLT5wcm94eV91c2VyKTsKIAogICAgIC8qIENhbGN1bGF0aW5nIHRpbWUgZGlmZiBiZXR3ZWVuIEdNVCBhbmQgbG9jYWx0aW1lICovCkBAIC0zMTIsNyArMzE1LDcgQEAKICAgICB0em9uZWRpZmZGbG9hdCA9IGRpZmZ0aW1lKHR0X2xvY2FsLCB0dF9nbXQpOwogICAgIHR6b25lZGlmZldvcmQgID0gKGludCkodHpvbmVkaWZmRmxvYXQvMzYwMC4wKTsKIAotICAgIGlmICgoZG91YmxlKSh0em9uZWRpZmZXb3JkICogMzYwMCkgPT0gdHpvbmVkaWZmRmxvYXQpCisgICAgaWYoKGRvdWJsZSkodHpvbmVkaWZmV29yZCAqIDM2MDApID09IHR6b25lZGlmZkZsb2F0KQogICAgICAgc25wcmludGYodHpvbmVCdWYsIDE1LCAiJSswM2QnMDAnIiwgdHpvbmVkaWZmV29yZCk7CiAgICAgZWxzZQogICAgICAgc25wcmludGYodHpvbmVCdWYsIDE1LCAiJSswM2QnMzAnIiwgdHpvbmVkaWZmV29yZCk7CkBAIC0zNDEsOSArMzQ0LDkgQEAKICAgICAgICAgICAgICBMT0NBTFRpbWUud01pbGxpc2Vjb25kcyk7CiAgICAgZnByaW50ZihzdGRlcnIsICJcbkFmdGVyICBIVFRQLiBEYXRlOiAlcyVzXG4iLCB0aW1lQnVmLCB0em9uZUJ1Zik7CiAKLSAgICBpZiAoQXV0b1N5bmNUaW1lID09IDMpIHsKKyAgICBpZihBdXRvU3luY1RpbWUgPT0gMykgewogICAgICAgLyogU3luY2hyb25pc2luZyBjb21wdXRlciBjbG9jayAqLwotICAgICAgaWYgKCFTZXRTeXN0ZW1UaW1lKCZTWVNUaW1lKSkgeyAgLyogU2V0IHN5c3RlbSB0aW1lICovCisgICAgICBpZighU2V0U3lzdGVtVGltZSgmU1lTVGltZSkpIHsgIC8qIFNldCBzeXN0ZW0gdGltZSAqLwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBVbmFibGUgdG8gc2V0IHN5c3RlbSB0aW1lLlxuIik7CiAgICAgICAgIFJldFZhbHVlID0gMTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvdGhyZWFkZWQtc3NsLmMgYi9kb2NzL2V4YW1wbGVzL3RocmVhZGVkLXNzbC5jCmluZGV4IGE3ZTljMmQuLjVmMWQ5YjkgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdGhyZWFkZWQtc3NsLmMKKysrIGIvZG9jcy9leGFtcGxlcy90aHJlYWRlZC1zc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDE0ICsxOSwxOSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IHRoZSByZXF1aXJlZCBtdXRleCBjYWxsYmFjayBzZXR1cHMgZm9yIEdudVRMUyBhbmQgT3BlblNTTCB3aGVuIHVzaW5nCisgKiBsaWJjdXJsIG11bHRpLXRocmVhZGVkLgorICogPC9ERVNDPgorICovCiAvKiBBIG11bHRpLXRocmVhZGVkIGV4YW1wbGUgdGhhdCB1c2VzIHB0aHJlYWRzIGFuZCBmZXRjaGVzIDQgcmVtb3RlIGZpbGVzIGF0CiAgKiBvbmNlIG92ZXIgSFRUUFMuIFRoZSBsb2NrIGNhbGxiYWNrcyBhbmQgc3R1ZmYgYXNzdW1lIE9wZW5TU0wgb3IgR251VExTCiAgKiAobGliZ2NyeXB0KSBzbyBmYXIuCiAgKgogICogT3BlblNTTCBkb2NzIGZvciB0aGlzOgotICogICBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL3RocmVhZHMuaHRtbAorICogICBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwKICAqIGdjcnlwdCBkb2NzIGZvciB0aGlzOgotICogICBodHRwOi8vZ251cGcub3JnL2RvY3VtZW50YXRpb24vbWFudWFscy9nY3J5cHQvTXVsdGlfMDAyZFRocmVhZGluZy5odG1sCisgKiAgIGh0dHBzOi8vZ251cGcub3JnL2RvY3VtZW50YXRpb24vbWFudWFscy9nY3J5cHQvTXVsdGlfMDAyZFRocmVhZGluZy5odG1sCiAgKi8KIAogI2RlZmluZSBVU0VfT1BFTlNTTCAvKiBvciBVU0VfR05VVExTIGFjY29yZGluZ2x5ICovCkBAIC00Niw3ICs1MSw3IEBACiB7CiAgICh2b2lkKWZpbGU7CiAgICh2b2lkKWxpbmU7Ci0gIGlmIChtb2RlICYgQ1JZUFRPX0xPQ0spIHsKKyAgaWYobW9kZSAmIENSWVBUT19MT0NLKSB7CiAgICAgcHRocmVhZF9tdXRleF9sb2NrKCYobG9ja2FycmF5W3R5cGVdKSk7CiAgIH0KICAgZWxzZSB7CkBAIC01OSw3ICs2NCw3IEBACiAgIHVuc2lnbmVkIGxvbmcgcmV0OwogCiAgIHJldD0odW5zaWduZWQgbG9uZylwdGhyZWFkX3NlbGYoKTsKLSAgcmV0dXJuKHJldCk7CisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRfbG9ja3Modm9pZCkKQEAgLTY4LDggKzczLDggQEAKIAogICBsb2NrYXJyYXk9KHB0aHJlYWRfbXV0ZXhfdCAqKU9QRU5TU0xfbWFsbG9jKENSWVBUT19udW1fbG9ja3MoKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwdGhyZWFkX211dGV4X3QpKTsKLSAgZm9yIChpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspIHsKLSAgICBwdGhyZWFkX211dGV4X2luaXQoJihsb2NrYXJyYXlbaV0pLE5VTEwpOworICBmb3IoaT0wOyBpPENSWVBUT19udW1fbG9ja3MoKTsgaSsrKSB7CisgICAgcHRocmVhZF9tdXRleF9pbml0KCYobG9ja2FycmF5W2ldKSwgTlVMTCk7CiAgIH0KIAogICBDUllQVE9fc2V0X2lkX2NhbGxiYWNrKCh1bnNpZ25lZCBsb25nICgqKSgpKXRocmVhZF9pZCk7CkBAIC04MSw3ICs4Niw3IEBACiAgIGludCBpOwogCiAgIENSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjayhOVUxMKTsKLSAgZm9yIChpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspCisgIGZvcihpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspCiAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCYobG9ja2FycmF5W2ldKSk7CiAKICAgT1BFTlNTTF9mcmVlKGxvY2thcnJheSk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3VybDJmaWxlLmMgYi9kb2NzL2V4YW1wbGVzL3VybDJmaWxlLmMKaW5kZXggYWRmNjk2Yy4uMzlmODRkNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy91cmwyZmlsZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvdXJsMmZpbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIERvd25sb2FkIGEgZ2l2ZW4gVVJMIGludG8gYSBsb2NhbCBmaWxlIG5hbWVkIHBhZ2Uub3V0LgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTM3LDcgKzQxLDcgQEAKICAgc3RhdGljIGNvbnN0IGNoYXIgKnBhZ2VmaWxlbmFtZSA9ICJwYWdlLm91dCI7CiAgIEZJTEUgKnBhZ2VmaWxlOwogCi0gIGlmKGFyZ2MgPCAyICkgeworICBpZihhcmdjIDwgMikgewogICAgIHByaW50ZigiVXNhZ2U6ICVzIDxVUkw+XG4iLCBhcmd2WzBdKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtNjEsNyArNjUsNyBAQAogCiAgIC8qIG9wZW4gdGhlIGZpbGUgKi8KICAgcGFnZWZpbGUgPSBmb3BlbihwYWdlZmlsZW5hbWUsICJ3YiIpOwotICBpZiAocGFnZWZpbGUpIHsKKyAgaWYocGFnZWZpbGUpIHsKIAogICAgIC8qIHdyaXRlIHRoZSBwYWdlIGJvZHkgdG8gdGhpcyBmaWxlIGhhbmRsZSAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBwYWdlZmlsZSk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3VzZXJjZXJ0aW5tZW0uYyBiL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCmluZGV4IGRkNTZjNjEuLjQ3NTczZWIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMCArMTksMTMgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgogLyogRXhhbXBsZSB1c2luZyBhbiBpbiBtZW1vcnkgUEVNIHVzZXIgY2VydGlmaWNhdGUgYW5kIFJTQSBrZXkgdG8gcmV0cmlldmUgYW4KICAqIGh0dHBzIHBhZ2UuCi0gKiBXcml0dGVuIGJ5IElzaGFuIFNpbmdoTGV2ZXR0LCBiYXNlZCBvbiBUaGVvIEJvcm0ncyBjYWNlcnRpbm1lbS5jLgotICogTm90ZSB0aGF0IHRvIG1haW50YWluIHNpbXBsaWNpdHkgdGhpcyBleGFtcGxlIGRvZXMgbm90IHVzZSBhIENBIGNlcnRpZmljYXRlIAorICogPC9ERVNDPgorICovCisvKiBXcml0dGVuIGJ5IElzaGFuIFNpbmdoTGV2ZXR0LCBiYXNlZCBvbiBUaGVvIEJvcm0ncyBjYWNlcnRpbm1lbS5jLgorICogTm90ZSB0aGF0IHRvIG1haW50YWluIHNpbXBsaWNpdHkgdGhpcyBleGFtcGxlIGRvZXMgbm90IHVzZSBhIENBIGNlcnRpZmljYXRlCiAgKiBmb3IgcGVlciB2ZXJpZmljYXRpb24uICBIb3dldmVyLCBzb21lIGZvcm0gb2YgcGVlciB2ZXJpZmljYXRpb24KICAqIG11c3QgYmUgdXNlZCBpbiByZWFsIGNpcmN1bXN0YW5jZXMgd2hlbiBhIHNlY3VyZSBjb25uZWN0aW9uIGlzIHJlcXVpcmVkLgogICovCkBAIC0zNSw4ICszOCw4IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVmdW5jdGlvbih2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgZndyaXRlKHB0cixzaXplLG5tZW1iLHN0cmVhbSk7Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgZndyaXRlKHB0ciwgc2l6ZSwgbm1lbWIsIHN0cmVhbSk7CisgIHJldHVybiAobm1lbWIqc2l6ZSk7CiB9CiAKIHN0YXRpYyBDVVJMY29kZSBzc2xjdHhfZnVuY3Rpb24oQ1VSTCAqY3VybCwgdm9pZCAqc3NsY3R4LCB2b2lkICpwYXJtKQpAQCAtMTE3LDcgKzEyMCw3IEBACiAgIC8qIGdldCBhIEJJTyAqLwogICBiaW8gPSBCSU9fbmV3X21lbV9idWYoKGNoYXIgKilteXBlbSwgLTEpOwogCi0gIGlmIChiaW8gPT0gTlVMTCkgeworICBpZihiaW8gPT0gTlVMTCkgewogICAgIHByaW50ZigiQklPX25ld19tZW1fYnVmIGZhaWxlZFxuIik7CiAgIH0KIApAQCAtMTI1LDQ5ICsxMjgsNDkgQEAKICAgICogc3RydWN0dXJlIHRoYXQgU1NMIGNhbiB1c2UKICAgICovCiAgIGNlcnQgPSBQRU1fcmVhZF9iaW9fWDUwOShiaW8sIE5VTEwsIDAsIE5VTEwpOwotICBpZiAoY2VydCA9PSBOVUxMKSB7CisgIGlmKGNlcnQgPT0gTlVMTCkgewogICAgIHByaW50ZigiUEVNX3JlYWRfYmlvX1g1MDkgZmFpbGVkLi4uXG4iKTsKICAgfQogCiAgIC8qdGVsbCBTU0wgdG8gdXNlIHRoZSBYNTA5IGNlcnRpZmljYXRlKi8KICAgcmV0ID0gU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoKFNTTF9DVFgqKXNzbGN0eCwgY2VydCk7Ci0gIGlmIChyZXQgIT0gMSkgeworICBpZihyZXQgIT0gMSkgewogICAgIHByaW50ZigiVXNlIGNlcnRpZmljYXRlIGZhaWxlZFxuIik7CiAgIH0KIAogICAvKmNyZWF0ZSBhIGJpbyBmb3IgdGhlIFJTQSBrZXkqLwogICBrYmlvID0gQklPX25ld19tZW1fYnVmKChjaGFyICopbXlrZXksIC0xKTsKLSAgaWYgKGtiaW8gPT0gTlVMTCkgeworICBpZihrYmlvID09IE5VTEwpIHsKICAgICBwcmludGYoIkJJT19uZXdfbWVtX2J1ZiBmYWlsZWRcbiIpOwogICB9CiAKICAgLypyZWFkIHRoZSBrZXkgYmlvIGludG8gYW4gUlNBIG9iamVjdCovCiAgIHJzYSA9IFBFTV9yZWFkX2Jpb19SU0FQcml2YXRlS2V5KGtiaW8sIE5VTEwsIDAsIE5VTEwpOwotICBpZiAocnNhID09IE5VTEwpIHsKKyAgaWYocnNhID09IE5VTEwpIHsKICAgICBwcmludGYoIkZhaWxlZCB0byBjcmVhdGUga2V5IGJpb1xuIik7CiAgIH0KIAogICAvKnRlbGwgU1NMIHRvIHVzZSB0aGUgUlNBIGtleSBmcm9tIG1lbW9yeSovCiAgIHJldCA9IFNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXkoKFNTTF9DVFgqKXNzbGN0eCwgcnNhKTsKLSAgaWYgKHJldCAhPSAxKSB7CisgIGlmKHJldCAhPSAxKSB7CiAgICAgcHJpbnRmKCJVc2UgS2V5IGZhaWxlZFxuIik7CiAgIH0KIAogICAvKiBmcmVlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYnkgb3BlbnNzbCBmdW5jdGlvbnMgKi8KLSAgaWYgKGJpbykKKyAgaWYoYmlvKQogICAgIEJJT19mcmVlKGJpbyk7CiAKLSAgaWYgKGtiaW8pCisgIGlmKGtiaW8pCiAgICAgQklPX2ZyZWUoa2Jpbyk7CiAKLSAgaWYgKHJzYSkKKyAgaWYocnNhKQogICAgIFJTQV9mcmVlKHJzYSk7CiAKLSAgaWYgKGNlcnQpCisgIGlmKGNlcnQpCiAgICAgWDUwOV9mcmVlKGNlcnQpOwogCiAgIC8qIGFsbCBzZXQgdG8gZ28gKi8KLSAgcmV0dXJuIENVUkxFX09LIDsKKyAgcmV0dXJuIENVUkxFX09LOwogfQogCiBpbnQgbWFpbih2b2lkKQpAQCAtMTc3LDI4ICsxODAsMjggQEAKIAogICBydiA9IGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKTsKICAgY2ggPSBjdXJsX2Vhc3lfaW5pdCgpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9WRVJCT1NFLCAwTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX0hFQURFUiwgMEwpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9OT1BST0dSRVNTLCAxTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PU0lHTkFMLCAxTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1dSSVRFRlVOQ1RJT04sICp3cml0ZWZ1bmN0aW9uKTsKLSAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLENVUkxPUFRfV1JJVEVEQVRBLCBzdGRvdXQpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJEQVRBLCBzdGRlcnIpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9TU0xDRVJUVFlQRSwiUEVNIik7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9IRUFERVIsIDBMKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PUFJPR1JFU1MsIDFMKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PU0lHTkFMLCAxTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZWZ1bmN0aW9uKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCB3cml0ZWZ1bmN0aW9uKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkRBVEEsIHN0ZGVycik7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xDRVJUVFlQRSwgIlBFTSIpOwogCiAgIC8qIGJvdGggVkVSSUZZUEVFUiBhbmQgVkVSSUZZSE9TVCBhcmUgc2V0IHRvIDAgaW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhlcmUgaXMKICAgICAgbm8gQ0EgY2VydGlmaWNhdGUqLwogCi0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMEwpOworICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKICAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOwogICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMS0VZVFlQRSwgIlBFTSIpOwogCiAgIC8qIGZpcnN0IHRyeTogcmV0cmlldmUgcGFnZSB3aXRob3V0IHVzZXIgY2VydGlmaWNhdGUgYW5kIGtleSAtPiB3aWxsIGZhaWwKICAgICovCiAgIHJ2ID0gY3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKSB7CisgIGlmKHJ2PT1DVVJMRV9PSykgewogICAgIHByaW50ZigiKioqIHRyYW5zZmVyIHN1Y2NlZWRlZCAqKipcbiIpOwogICB9CiAgIGVsc2UgewpAQCAtMjA5LDkgKzIxMiw5IEBACiAgICAqIGxvYWQgdGhlIGNlcnRpZmljYXRlIGFuZCBrZXkgYnkgaW5zdGFsbGluZyBhIGZ1bmN0aW9uIGRvaW5nIHRoZSBuZWNlc3NhcnkKICAgICogIm1vZGlmaWNhdGlvbnMiIHRvIHRoZSBTU0wgQ09OVEVYVCBqdXN0IGJlZm9yZSBsaW5rIGluaXQKICAgICovCi0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sICpzc2xjdHhfZnVuY3Rpb24pOworICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgKnNzbGN0eF9mdW5jdGlvbik7CiAgIHJ2ID0gY3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKSB7CisgIGlmKHJ2PT1DVVJMRV9PSykgewogICAgIHByaW50ZigiKioqIHRyYW5zZmVyIHN1Y2NlZWRlZCAqKipcbiIpOwogICB9CiAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy92ZXJzaW9uLWNoZWNrLnBsIGIvZG9jcy9leGFtcGxlcy92ZXJzaW9uLWNoZWNrLnBsCmluZGV4IDkyZjA4MDguLjA3NGU1MGQgMTAwNzU1Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdmVyc2lvbi1jaGVjay5wbAorKysgYi9kb2NzL2V4YW1wbGVzL3ZlcnNpb24tY2hlY2sucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy94bWxzdHJlYW0uYyBiL2RvY3MvZXhhbXBsZXMveG1sc3RyZWFtLmMKaW5kZXggODE5MzQ0NS4uODA2NjgyOCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy94bWxzdHJlYW0uYworKysgYi9kb2NzL2V4YW1wbGVzL3htbHN0cmVhbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOCArMTksMTEgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFN0cmVhbS1wYXJzZSBhIGRvY3VtZW50IHVzaW5nIHRoZSBzdHJlYW1pbmcgRXhwYXQgcGFyc2VyLgotICogV3JpdHRlbiBieSBEYXZpZCBTdHJhdXNzCisvKiA8REVTQz4KKyAqIFN0cmVhbS1wYXJzZSBhIGRvY3VtZW50IHVzaW5nIHRoZSBzdHJlYW1pbmcgRXhwYXQgcGFyc2VyLgorICogPC9ERVNDPgorICovCisvKiBXcml0dGVuIGJ5IERhdmlkIFN0cmF1c3MKICAqCiAgKiBFeHBhdCA9PiBodHRwOi8vd3d3LmxpYmV4cGF0Lm9yZy8KICAqCkBAIC00OCw3ICs1MSw4IEBACiAgIHN0cnVjdCBNZW1vcnlTdHJ1Y3QgY2hhcmFjdGVyczsKIH07CiAKLXN0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudCh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cykKK3N0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudCh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKiphdHRzKQogewogICBzdHJ1Y3QgUGFyc2VyU3RydWN0ICpzdGF0ZSA9IChzdHJ1Y3QgUGFyc2VyU3RydWN0ICopIHVzZXJEYXRhOwogICBzdGF0ZS0+dGFncysrOwpAQCAtODYsMTYgKzkwLDE4IEBACiAgIHByaW50ZigiJTVsdSAgICUxMGx1ICAgJXNcbiIsIHN0YXRlLT5kZXB0aCwgc3RhdGUtPmNoYXJhY3RlcnMuc2l6ZSwgbmFtZSk7CiB9CiAKLXN0YXRpYyBzaXplX3QgcGFyc2VTdHJlYW1DYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IG5tZW1iLCB2b2lkICp1c2VycCkKK3N0YXRpYyBzaXplX3QgcGFyc2VTdHJlYW1DYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IG5tZW1iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewogICBYTUxfUGFyc2VyIHBhcnNlciA9IChYTUxfUGFyc2VyKSB1c2VycDsKICAgc2l6ZV90IHJlYWxfc2l6ZSA9IGxlbmd0aCAqIG5tZW1iOwogICBzdHJ1Y3QgUGFyc2VyU3RydWN0ICpzdGF0ZSA9IChzdHJ1Y3QgUGFyc2VyU3RydWN0ICopIFhNTF9HZXRVc2VyRGF0YShwYXJzZXIpOwogCiAgIC8qIE9ubHkgcGFyc2UgaWYgd2UncmUgbm90IGFscmVhZHkgaW4gYSBmYWlsdXJlIHN0YXRlLiAqLwotICBpZiAoc3RhdGUtPm9rICYmIFhNTF9QYXJzZShwYXJzZXIsIGNvbnRlbnRzLCByZWFsX3NpemUsIDApID09IDApIHsKKyAgaWYoc3RhdGUtPm9rICYmIFhNTF9QYXJzZShwYXJzZXIsIGNvbnRlbnRzLCByZWFsX3NpemUsIDApID09IDApIHsKICAgICBpbnQgZXJyb3JfY29kZSA9IFhNTF9HZXRFcnJvckNvZGUocGFyc2VyKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNpbmcgcmVzcG9uc2UgYnVmZmVyIG9mIGxlbmd0aCAlbHUgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlZCAoJXMpLlxuIiwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNpbmcgcmVzcG9uc2UgYnVmZmVyIG9mIGxlbmd0aCAlbHUgZmFpbGVkIgorICAgICAgICAgICAgIiB3aXRoIGVycm9yIGNvZGUgJWQgKCVzKS5cbiIsCiAgICAgICAgICAgICByZWFsX3NpemUsIGVycm9yX2NvZGUsIFhNTF9FcnJvclN0cmluZyhlcnJvcl9jb2RlKSk7CiAgICAgc3RhdGUtPm9rID0gMDsKICAgfQpAQCAtMTIzLDcgKzEyOSw4IEBACiAgIC8qIEluaXRpYWxpemUgYSBsaWJjdXJsIGhhbmRsZS4gKi8KICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwgXiBDVVJMX0dMT0JBTF9TU0wpOwogICBjdXJsX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfVVJMLCAiaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3htbC9zaW1wbGUueG1sIik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfVVJMLAorICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3Lnczc2Nob29scy5jb20veG1sL3NpbXBsZS54bWwiKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsX2hhbmRsZSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBwYXJzZVN0cmVhbUNhbGxiYWNrKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsX2hhbmRsZSwgQ1VSTE9QVF9XUklURURBVEEsICh2b2lkICopcGFyc2VyKTsKIApAQCAtMTM1LDkgKzE0Miw5IEBACiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcbiIsCiAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgIH0KLSAgZWxzZSBpZiAoc3RhdGUub2spIHsKKyAgZWxzZSBpZihzdGF0ZS5vaykgewogICAgIC8qIEV4cGF0IHJlcXVpcmVzIG9uZSBmaW5hbCBjYWxsIHRvIGZpbmFsaXplIHBhcnNpbmcuICovCi0gICAgaWYgKFhNTF9QYXJzZShwYXJzZXIsIE5VTEwsIDAsIDEpID09IDApIHsKKyAgICBpZihYTUxfUGFyc2UocGFyc2VyLCBOVUxMLCAwLCAxKSA9PSAwKSB7CiAgICAgICBpbnQgZXJyb3JfY29kZSA9IFhNTF9HZXRFcnJvckNvZGUocGFyc2VyKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmluYWxpemluZyBwYXJzaW5nIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWQgKCVzKS5cbiIsCiAgICAgICAgICAgICAgIGVycm9yX2NvZGUsIFhNTF9FcnJvclN0cmluZyhlcnJvcl9jb2RlKSk7CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvQUJJIGIvZG9jcy9saWJjdXJsL0FCSQppbmRleCBlZjBjYWE2Li5jN2M5MTQyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvQUJJCisrKyBiL2RvY3MvbGliY3VybC9BQkkKQEAgLTEsNjMgKzEsNTUgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGliY3VybCdzIGJpbmFyeSBpbnRlcmZhY2UKLQogQUJJIC0gQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0gICJBQkkiIGRlc2NyaWJlcyB0aGUgbG93LWxldmVsIGludGVyZmFjZSBiZXR3ZWVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gYW5kIGEKLSAgbGlicmFyeS4gQ2FsbGluZyBjb252ZW50aW9ucywgZnVuY3Rpb24gYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBzdHJ1Y3QKLSAgc2l6ZXMvZGVmaW5lcyBhbmQgbW9yZS4KKyAiQUJJIiBkZXNjcmliZXMgdGhlIGxvdy1sZXZlbCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIGFuZCBhCisgbGlicmFyeS4gQ2FsbGluZyBjb252ZW50aW9ucywgZnVuY3Rpb24gYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBzdHJ1Y3QKKyBzaXplcy9kZWZpbmVzIGFuZCBtb3JlLgogCi0gIFtXaWtpcGVkaWEgaGFzIGEgbG9uZ2VyIGRlc2NyaXB0aW9uXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uX2JpbmFyeV9pbnRlcmZhY2UpCisgW1dpa2lwZWRpYSBoYXMgYSBsb25nZXIgZGVzY3JpcHRpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uX2JpbmFyeV9pbnRlcmZhY2UpCiAKIFVwZ3JhZGVzCiAtLS0tLS0tLQogCi0gIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGFsbCBjYXNlcywgYSB0eXBpY2FsIGxpYmN1cmwgdXBncmFkZSBkb2VzIG5vdCBicmVhawotICB0aGUgQUJJIGF0IGFsbC4gWW91ciBhcHBsaWNhdGlvbiBjYW4gcmVtYWluIHVzaW5nIGxpYmN1cmwganVzdCBhcyBiZWZvcmUsCi0gIG9ubHkgd2l0aCBsZXNzIGJ1Z3MgYW5kIHBvc3NpYmx5IHdpdGggYWRkZWQgbmV3IGZlYXR1cmVzLiBZb3UgbmVlZCB0byByZWFkCi0gIHRoZSByZWxlYXNlIG5vdGVzLCBhbmQgaWYgdGhleSBtZW50aW9uIGFuIEFCSSBicmVhay9zb25hbWUgYnVtcCwgeW91IG1heQotICBoYXZlIHRvIHZlcmlmeSB0aGF0IHlvdXIgYXBwbGljYXRpb24gc3RpbGwgYnVpbGRzIGZpbmUgYW5kIHVzZXMgbGliY3VybCBhcwotICBpdCBub3cgaXMgZGVmaW5lZCB0byB3b3JrLgorIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGFsbCBjYXNlcywgYSB0eXBpY2FsIGxpYmN1cmwgdXBncmFkZSBkb2VzIG5vdCBicmVhaworIHRoZSBBQkkgYXQgYWxsLiBZb3VyIGFwcGxpY2F0aW9uIGNhbiByZW1haW4gdXNpbmcgbGliY3VybCBqdXN0IGFzIGJlZm9yZSwKKyBvbmx5IHdpdGggbGVzcyBidWdzIGFuZCBwb3NzaWJseSB3aXRoIGFkZGVkIG5ldyBmZWF0dXJlcy4gWW91IG5lZWQgdG8gcmVhZAorIHRoZSByZWxlYXNlIG5vdGVzLCBhbmQgaWYgdGhleSBtZW50aW9uIGFuIEFCSSBicmVhay9zb25hbWUgYnVtcCwgeW91IG1heSBoYXZlCisgdG8gdmVyaWZ5IHRoYXQgeW91ciBhcHBsaWNhdGlvbiBzdGlsbCBidWlsZHMgZmluZSBhbmQgdXNlcyBsaWJjdXJsIGFzIGl0IG5vdworIGlzIGRlZmluZWQgdG8gd29yay4KIAogVmVyc2lvbiBOdW1iZXJzCiAtLS0tLS0tLS0tLS0tLS0KIAotICBJbiBsaWJjdXJsIGxhbmQsIHlvdSByZWFsbHkgY2FuJ3QgdGVsbCBieSB0aGUgbGliY3VybCB2ZXJzaW9uIG51bWJlciBpZiB0aGF0Ci0gIGxpYmN1cmwgaXMgYmluYXJ5IGNvbXBhdGlibGUgb3Igbm90IHdpdGggYW5vdGhlciBsaWJjdXJsIHZlcnNpb24uCisgSW4gbGliY3VybCBsYW5kLCB5b3UgcmVhbGx5IGNhbid0IHRlbGwgYnkgdGhlIGxpYmN1cmwgdmVyc2lvbiBudW1iZXIgaWYgdGhhdAorIGxpYmN1cmwgaXMgYmluYXJ5IGNvbXBhdGlibGUgb3Igbm90IHdpdGggYW5vdGhlciBsaWJjdXJsIHZlcnNpb24uCiAKIFNvbmFtZSBCdW1wcwogLS0tLS0tLS0tLS0tCiAKLSAgV2hlbmV2ZXIgdGhlcmUgYXJlIGNoYW5nZXMgZG9uZSB0byB0aGUgbGlicmFyeSB0aGF0IHdpbGwgY2F1c2UgYW4gQUJJCi0gIGJyZWFrYWdlLCB0aGF0IG1heSByZXF1aXJlIHlvdXIgYXBwbGljYXRpb24gdG8gZ2V0IGF0dGVudGlvbiBvciBwb3NzaWJseSBiZQotICBjaGFuZ2VkIHRvIGFkaGVyZSB0byBuZXcgdGhpbmdzLCB3ZSB3aWxsIGJ1bXAgdGhlIHNvbmFtZS4gVGhlbiB0aGUgbGlicmFyeQotICB3aWxsIGdldCBhIGRpZmZlcmVudCBvdXRwdXQgbmFtZSBhbmQgdGh1cyBjYW4gaW4gZmFjdCBiZSBpbnN0YWxsZWQgaW4KLSAgcGFyYWxsZWwgd2l0aCBhbiBvbGRlciBpbnN0YWxsZWQgbGliIChvbiBtb3N0IHN5c3RlbXMpLiBUaHVzLCBvbGQKLSAgYXBwbGljYXRpb25zIGJ1aWx0IGFnYWluc3QgdGhlIHByZXZpb3VzIEFCSSB2ZXJzaW9uIHdpbGwgcmVtYWluIHdvcmtpbmcgYW5kCi0gIHVzaW5nIHRoZSBvbGRlciBsaWIsIHdoaWxlIG5ld2VyIGFwcGxpY2F0aW9ucyBidWlsZCBhbmQgdXNlIHRoZSBuZXdlciBvbmUuCisgV2hlbmV2ZXIgdGhlcmUgYXJlIGNoYW5nZXMgZG9uZSB0byB0aGUgbGlicmFyeSB0aGF0IHdpbGwgY2F1c2UgYW4gQUJJCisgYnJlYWthZ2UsIHRoYXQgbWF5IHJlcXVpcmUgeW91ciBhcHBsaWNhdGlvbiB0byBnZXQgYXR0ZW50aW9uIG9yIHBvc3NpYmx5IGJlCisgY2hhbmdlZCB0byBhZGhlcmUgdG8gbmV3IHRoaW5ncywgd2Ugd2lsbCBidW1wIHRoZSBzb25hbWUuIFRoZW4gdGhlIGxpYnJhcnkKKyB3aWxsIGdldCBhIGRpZmZlcmVudCBvdXRwdXQgbmFtZSBhbmQgdGh1cyBjYW4gaW4gZmFjdCBiZSBpbnN0YWxsZWQgaW4KKyBwYXJhbGxlbCB3aXRoIGFuIG9sZGVyIGluc3RhbGxlZCBsaWIgKG9uIG1vc3Qgc3lzdGVtcykuIFRodXMsIG9sZAorIGFwcGxpY2F0aW9ucyBidWlsdCBhZ2FpbnN0IHRoZSBwcmV2aW91cyBBQkkgdmVyc2lvbiB3aWxsIHJlbWFpbiB3b3JraW5nIGFuZAorIHVzaW5nIHRoZSBvbGRlciBsaWIsIHdoaWxlIG5ld2VyIGFwcGxpY2F0aW9ucyBidWlsZCBhbmQgdXNlIHRoZSBuZXdlciBvbmUuCiAKLSAgRHVyaW5nIHRoZSBmaXJzdCBzZXZlbiB5ZWFycyBvZiBsaWJjdXJsIHJlbGVhc2VzLCB0aGVyZSBoYXZlIG9ubHkgYmVlbiBmb3VyCi0gIEFCSSBicmVha2FnZXMuCisgRHVyaW5nIHRoZSBmaXJzdCBzZXZlbiB5ZWFycyBvZiBsaWJjdXJsIHJlbGVhc2VzLCB0aGVyZSBoYXZlIG9ubHkgYmVlbiBmb3VyCisgQUJJIGJyZWFrYWdlcy4KIAotICBXZSBhcmUgZGV0ZXJtaW5lZCB0byBidW1wIHRoZSBTT05BTUUgYXMgcmFyZWx5IGFzIHBvc3NpYmxlLiAgSWRlYWxseSwgd2UKLSAgbmV2ZXIgZG8gaXQgYWdhaW4uCisgV2UgYXJlIGRldGVybWluZWQgdG8gYnVtcCB0aGUgU09OQU1FIGFzIHJhcmVseSBhcyBwb3NzaWJsZS4gIElkZWFsbHksIHdlCisgbmV2ZXIgZG8gaXQgYWdhaW4uCiAKIERvd25ncmFkZXMKIC0tLS0tLS0tLS0KIAotICBHb2luZyB0byBhbiBvbGRlciBsaWJjdXJsIHZlcnNpb24gZnJvbSBvbmUgeW91J3JlIGN1cnJlbnRseSB1c2luZyBjYW4gYmUgYQotICB0cmlja3kgdGhpbmcuIE1vc3RseSB3ZSBhZGQgZmVhdHVyZXMgYW5kIG9wdGlvbnMgdG8gbmV3ZXIgbGliY3VybHMgYXMgdGhhdAotICB3b24ndCBicmVhayBBQkkgb3IgaGFtcGVyIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBoYXMgdGhlIGltcGxpY2F0aW9uCi0gIHRoYXQgZ29pbmcgYmFja3dhcmRzIG1heSBnZXQgeW91IGluIGEgc2l0dWF0aW9uIHdoZXJlIHlvdSBwaWNrIGEgbGliY3VybAotICB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgb3B0aW9ucyB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzLiBPciBwb3NzaWJseSB5b3UKLSAgZXZlbiBkb3duZ3JhZGUgc28gZmFyIHNvIHlvdSBjcm9zcyBhbiBBQkkgYnJlYWsgYm9yZGVyIGFuZCB0aHVzIGEgZGlmZmVyZW50Ci0gIHNvbmFtZSwgYW5kIHRoZW4geW91ciBhcHBsaWNhdGlvbiBtYXkgbmVlZCB0byBhZGFwdCB0byB0aGUgbW9kaWZpZWQgQUJJLgorIEdvaW5nIHRvIGFuIG9sZGVyIGxpYmN1cmwgdmVyc2lvbiBmcm9tIG9uZSB5b3UncmUgY3VycmVudGx5IHVzaW5nIGNhbiBiZSBhCisgdHJpY2t5IHRoaW5nLiBNb3N0bHkgd2UgYWRkIGZlYXR1cmVzIGFuZCBvcHRpb25zIHRvIG5ld2VyIGxpYmN1cmxzIGFzIHRoYXQKKyB3b24ndCBicmVhayBBQkkgb3IgaGFtcGVyIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBoYXMgdGhlIGltcGxpY2F0aW9uCisgdGhhdCBnb2luZyBiYWNrd2FyZHMgbWF5IGdldCB5b3UgaW4gYSBzaXR1YXRpb24gd2hlcmUgeW91IHBpY2sgYSBsaWJjdXJsIHRoYXQKKyBkb2Vzbid0IHN1cHBvcnQgdGhlIG9wdGlvbnMgeW91ciBhcHBsaWNhdGlvbiBuZWVkcy4gT3IgcG9zc2libHkgeW91IGV2ZW4KKyBkb3duZ3JhZGUgc28gZmFyIHNvIHlvdSBjcm9zcyBhbiBBQkkgYnJlYWsgYm9yZGVyIGFuZCB0aHVzIGEgZGlmZmVyZW50Cisgc29uYW1lLCBhbmQgdGhlbiB5b3VyIGFwcGxpY2F0aW9uIG1heSBuZWVkIHRvIGFkYXB0IHRvIHRoZSBtb2RpZmllZCBBQkkuCiAKIEhpc3RvcnkKIC0tLS0tLS0KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9NYWtlZmlsZS5hbSBiL2RvY3MvbGliY3VybC9NYWtlZmlsZS5hbQppbmRleCAzOTI3MmFjLi40OWFjZDk3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9saWJjdXJsL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOSwxOCArMjksMTkgQEAKICBjdXJsX2Zvcm1hZGQuMyBjdXJsX2Zvcm1mcmVlLjMgY3VybF9nZXRkYXRlLjMgY3VybF9nZXRlbnYuMwkJIFwKICBjdXJsX3NsaXN0X2FwcGVuZC4zIGN1cmxfc2xpc3RfZnJlZV9hbGwuMyBjdXJsX3ZlcnNpb24uMwkJIFwKICBjdXJsX3ZlcnNpb25faW5mby4zIGN1cmxfZXNjYXBlLjMgY3VybF91bmVzY2FwZS4zIGN1cmxfZnJlZS4zCQkgXAotIGN1cmxfc3RyZXF1YWwuMyBjdXJsX21wcmludGYuMyBjdXJsX2dsb2JhbF9pbml0LjMgY3VybF9nbG9iYWxfY2xlYW51cC4zIFwKLSBjdXJsX211bHRpX2FkZF9oYW5kbGUuMyBjdXJsX211bHRpX2NsZWFudXAuMyBjdXJsX211bHRpX2Zkc2V0LjMJIFwKLSBjdXJsX211bHRpX2luZm9fcmVhZC4zIGN1cmxfbXVsdGlfaW5pdC4zIGN1cmxfbXVsdGlfcGVyZm9ybS4zCQkgXAotIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZS4zIGN1cmxfc2hhcmVfY2xlYW51cC4zIGN1cmxfc2hhcmVfaW5pdC4zCSBcCi0gY3VybF9zaGFyZV9zZXRvcHQuMyBsaWJjdXJsLjMgbGliY3VybC1lYXN5LjMgbGliY3VybC1tdWx0aS4zCQkgXAotIGxpYmN1cmwtc2hhcmUuMyBsaWJjdXJsLWVycm9ycy4zIGN1cmxfZWFzeV9zdHJlcnJvci4zCQkJIFwKKyBjdXJsX3N0cmVxdWFsLjMgY3VybF9tcHJpbnRmLjMgY3VybF9nbG9iYWxfaW5pdC4zCQkJIFwKKyBjdXJsX2dsb2JhbF9jbGVhbnVwLjMgY3VybF9tdWx0aV9hZGRfaGFuZGxlLjMgY3VybF9tdWx0aV9jbGVhbnVwLjMJIFwKKyBjdXJsX211bHRpX2Zkc2V0LjMgY3VybF9tdWx0aV9pbmZvX3JlYWQuMyBjdXJsX211bHRpX2luaXQuMwkJIFwKKyBjdXJsX211bHRpX3BlcmZvcm0uMyBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMyBjdXJsX3NoYXJlX2NsZWFudXAuMwkgXAorIGN1cmxfc2hhcmVfaW5pdC4zIGN1cmxfc2hhcmVfc2V0b3B0LjMgbGliY3VybC4zIGxpYmN1cmwtZWFzeS4zIAkgXAorIGxpYmN1cmwtbXVsdGkuMyBsaWJjdXJsLXNoYXJlLjMgbGliY3VybC1lcnJvcnMuMyBjdXJsX2Vhc3lfc3RyZXJyb3IuMwkgXAogIGN1cmxfbXVsdGlfc3RyZXJyb3IuMyBjdXJsX3NoYXJlX3N0cmVycm9yLjMgY3VybF9nbG9iYWxfaW5pdF9tZW0uMwkgXAogIGxpYmN1cmwtdHV0b3JpYWwuMyBjdXJsX2Vhc3lfcmVzZXQuMyBjdXJsX2Vhc3lfZXNjYXBlLjMJCSBcCiAgY3VybF9lYXN5X3VuZXNjYXBlLjMgY3VybF9tdWx0aV9zZXRvcHQuMyBjdXJsX211bHRpX3NvY2tldC4zCQkgXAogIGN1cmxfbXVsdGlfdGltZW91dC4zIGN1cmxfZm9ybWdldC4zIGN1cmxfbXVsdGlfYXNzaWduLjMJCSBcCiAgY3VybF9lYXN5X3BhdXNlLjMgY3VybF9lYXN5X3JlY3YuMyBjdXJsX2Vhc3lfc2VuZC4zCQkJIFwKLSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24uMyBjdXJsX211bHRpX3dhaXQuMyBsaWJjdXJsLXN5bWJvbHMuMworIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zIGN1cmxfbXVsdGlfd2FpdC4zIGxpYmN1cmwtc3ltYm9scy4zIAkgXAorIGxpYmN1cmwtdGhyZWFkLjMgY3VybF9tdWx0aV9zb2NrZXRfYWxsLjMKIAogSFRNTFBBR0VTID0gY3VybF9lYXN5X2NsZWFudXAuaHRtbCBjdXJsX2Vhc3lfZ2V0aW5mby5odG1sCQlcCiAgY3VybF9lYXN5X2luaXQuaHRtbCBjdXJsX2Vhc3lfcGVyZm9ybS5odG1sIGN1cmxfZWFzeV9zZXRvcHQuaHRtbAlcCkBAIC02MCwyNyArNjEsMjkgQEAKICBjdXJsX2Vhc3lfdW5lc2NhcGUuaHRtbCBjdXJsX211bHRpX3NldG9wdC5odG1sIGN1cmxfbXVsdGlfc29ja2V0Lmh0bWwJXAogIGN1cmxfbXVsdGlfdGltZW91dC5odG1sIGN1cmxfZm9ybWdldC5odG1sIGN1cmxfbXVsdGlfYXNzaWduLmh0bWwJXAogIGN1cmxfZWFzeV9wYXVzZS5odG1sIGN1cmxfZWFzeV9yZWN2Lmh0bWwgY3VybF9lYXN5X3NlbmQuaHRtbAkJXAotIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi5odG1sIGN1cmxfbXVsdGlfd2FpdC5odG1sIGxpYmN1cmwtc3ltYm9scy5odG1sCisgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLmh0bWwgY3VybF9tdWx0aV93YWl0Lmh0bWwJCQlcCisgbGliY3VybC1zeW1ib2xzLmh0bWwgbGliY3VybC10aHJlYWQuaHRtbCBjdXJsX211bHRpX3NvY2tldF9hbGwuaHRtbAogCiBQREZQQUdFUyA9IGN1cmxfZWFzeV9jbGVhbnVwLnBkZiBjdXJsX2Vhc3lfZ2V0aW5mby5wZGYJCQkgXAogIGN1cmxfZWFzeV9pbml0LnBkZiBjdXJsX2Vhc3lfcGVyZm9ybS5wZGYgY3VybF9lYXN5X3NldG9wdC5wZGYJCSBcCiAgY3VybF9lYXN5X2R1cGhhbmRsZS5wZGYgY3VybF9mb3JtYWRkLnBkZiBjdXJsX2Zvcm1mcmVlLnBkZgkJIFwKLSBjdXJsX2dldGRhdGUucGRmIGN1cmxfZ2V0ZW52LnBkZiBjdXJsX3NsaXN0X2FwcGVuZC5wZGYJCQkgXAotIGN1cmxfc2xpc3RfZnJlZV9hbGwucGRmIGN1cmxfdmVyc2lvbi5wZGYgY3VybF92ZXJzaW9uX2luZm8ucGRmCQkgXAorIGN1cmxfZ2V0ZGF0ZS5wZGYgY3VybF9nZXRlbnYucGRmIGN1cmxfc2xpc3RfYXBwZW5kLnBkZiAJCSBcCisgY3VybF9zbGlzdF9mcmVlX2FsbC5wZGYgY3VybF92ZXJzaW9uLnBkZiBjdXJsX3ZlcnNpb25faW5mby5wZGYgCSBcCiAgY3VybF9lc2NhcGUucGRmIGN1cmxfdW5lc2NhcGUucGRmIGN1cmxfZnJlZS5wZGYgY3VybF9zdHJlcXVhbC5wZGYJIFwKICBjdXJsX21wcmludGYucGRmIGN1cmxfZ2xvYmFsX2luaXQucGRmIGN1cmxfZ2xvYmFsX2NsZWFudXAucGRmCQkgXAogIGN1cmxfbXVsdGlfYWRkX2hhbmRsZS5wZGYgY3VybF9tdWx0aV9jbGVhbnVwLnBkZiBjdXJsX211bHRpX2Zkc2V0LnBkZgkgXAogIGN1cmxfbXVsdGlfaW5mb19yZWFkLnBkZiBjdXJsX211bHRpX2luaXQucGRmIGN1cmxfbXVsdGlfcGVyZm9ybS5wZGYJIFwKLSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUucGRmIGN1cmxfc2hhcmVfY2xlYW51cC5wZGYgY3VybF9zaGFyZV9pbml0LnBkZiBcCi0gY3VybF9zaGFyZV9zZXRvcHQucGRmIGxpYmN1cmwucGRmIGxpYmN1cmwtbXVsdGkucGRmIGxpYmN1cmwtZWFzeS5wZGYJIFwKLSBsaWJjdXJsLXNoYXJlLnBkZiBsaWJjdXJsLWVycm9ycy5wZGYgY3VybF9lYXN5X3N0cmVycm9yLnBkZgkJIFwKLSBjdXJsX211bHRpX3N0cmVycm9yLnBkZiBjdXJsX3NoYXJlX3N0cmVycm9yLnBkZgkJCSBcCi0gY3VybF9nbG9iYWxfaW5pdF9tZW0ucGRmIGxpYmN1cmwtdHV0b3JpYWwucGRmIGN1cmxfZWFzeV9yZXNldC5wZGYJIFwKLSBjdXJsX2Vhc3lfZXNjYXBlLnBkZiBjdXJsX2Vhc3lfdW5lc2NhcGUucGRmIGN1cmxfbXVsdGlfc2V0b3B0LnBkZgkgXAotIGN1cmxfbXVsdGlfc29ja2V0LnBkZiBjdXJsX211bHRpX3RpbWVvdXQucGRmIGN1cmxfZm9ybWdldC5wZGYJCSBcCi0gY3VybF9tdWx0aV9hc3NpZ24ucGRmIGN1cmxfZWFzeV9wYXVzZS5wZGYgY3VybF9lYXN5X3JlY3YucGRmCQkgXAotIGN1cmxfZWFzeV9zZW5kLnBkZiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24ucGRmIGN1cmxfbXVsdGlfd2FpdC5wZGYgICAgIFwKLSBsaWJjdXJsLXN5bWJvbHMucGRmCisgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlLnBkZiBjdXJsX3NoYXJlX2NsZWFudXAucGRmCQkJIFwKKyBjdXJsX3NoYXJlX2luaXQucGRmIGN1cmxfc2hhcmVfc2V0b3B0LnBkZiBsaWJjdXJsLnBkZgkJCSBcCisgbGliY3VybC1tdWx0aS5wZGYgbGliY3VybC1lYXN5LnBkZiBsaWJjdXJsLXNoYXJlLnBkZgkJCSBcCisgbGliY3VybC1lcnJvcnMucGRmIGN1cmxfZWFzeV9zdHJlcnJvci5wZGYgY3VybF9tdWx0aV9zdHJlcnJvci5wZGYJIFwKKyBjdXJsX3NoYXJlX3N0cmVycm9yLnBkZiBjdXJsX2dsb2JhbF9pbml0X21lbS5wZGYgbGliY3VybC10dXRvcmlhbC5wZGYJIFwKKyBjdXJsX2Vhc3lfcmVzZXQucGRmIGN1cmxfZWFzeV9lc2NhcGUucGRmIGN1cmxfZWFzeV91bmVzY2FwZS5wZGYJIFwKKyBjdXJsX211bHRpX3NldG9wdC5wZGYgY3VybF9tdWx0aV9zb2NrZXQucGRmIGN1cmxfbXVsdGlfdGltZW91dC5wZGYJIFwKKyBjdXJsX2Zvcm1nZXQucGRmIGN1cmxfbXVsdGlfYXNzaWduLnBkZiBjdXJsX2Vhc3lfcGF1c2UucGRmCQkgXAorIGN1cmxfZWFzeV9yZWN2LnBkZiBjdXJsX2Vhc3lfc2VuZC5wZGYgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLnBkZiAJIFwKKyBjdXJsX211bHRpX3dhaXQucGRmIGxpYmN1cmwtc3ltYm9scy5wZGYgbGliY3VybC10aHJlYWQucGRmCQkgXAorIGN1cmxfbXVsdGlfc29ja2V0X2FsbC5wZGYKIAogbTRtYWNyb2RpciA9ICQoZGF0YWRpcikvYWNsb2NhbAogZGlzdF9tNG1hY3JvX0RBVEEgPSBsaWJjdXJsLm00CkBAIC04OSw3ICs5Miw3IEBACiAKIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKSAkKEhUTUxQQUdFUykgaW5kZXguaHRtbCAkKFBERlBBR0VTKSBBQkkgXAogICBzeW1ib2xzLWluLXZlcnNpb25zIHN5bWJvbHMucGwgbWtzeW1ib2xzbWFucGFnZS5wbAotTUFOMkhUTUw9IHJvZmZpdCAtLW1hbmRpcj0uIDwgJDwgPiRACitNQU4ySFRNTD0gcm9mZml0IC0tbWFuZGlyPS4gJDwgPiRACiAKIFNVRkZJWEVTID0gLjMgLmh0bWwKIApAQCAtOTcsMTMgKzEwMCwxMyBAQAogCXBlcmwgJChzcmNkaXIpL21rc3ltYm9sc21hbnBhZ2UucGwgPCAkKHNyY2Rpcikvc3ltYm9scy1pbi12ZXJzaW9ucyA+ICRACiAKIGh0bWw6ICQoSFRNTFBBR0VTKQotCWNkIG9wdHM7IG1ha2UgaHRtbAorCWNkIG9wdHMgJiYgbWFrZSBodG1sCiAKIC4zLmh0bWw6CiAJJChNQU4ySFRNTCkKIAogcGRmOiAkKFBERlBBR0VTKQotCWNkIG9wdHM7IG1ha2UgcGRmCisJY2Qgb3B0cyAmJiBtYWtlIHBkZgogCiAuMy5wZGY6CiAJQChmb289YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5bMC05XSQkLy9nJ2A7IFwKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfY2xlYW51cC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKaW5kZXggZThjZDU1MC4uY2M1OTkwZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9kdXBoYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZHVwaGFuZGxlLjMKaW5kZXggMzRjYmE1OC4uMjYyY2ViZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9kdXBoYW5kbGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2R1cGhhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2VzY2FwZS4zCmluZGV4IGRhMmIzODIuLmQyYjZjZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZXNjYXBlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiw3ICsyNiw4IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX2Vhc3lfZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY2hhciAqIiBzdHJpbmcgIiwgaW50ICJsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lYXN5X2VzY2FwZSggQ1VSTCAqIiBjdXJsICIsIGNvbnN0IGNoYXIgKiIgc3RyaW5nCisuQkkgIiwgaW50ICJsZW5ndGggIiApOyIKIC5hZAogLlNIIERFU0NSSVBUSU9OCiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBnaXZlbiBpbnB1dCBcZklzdHJpbmdcZlAgdG8gYSBVUkwgZW5jb2RlZCBzdHJpbmcKQEAgLTQ4LDEwICs0OSwxMCBAQAogaWYoY3VybCkgewogICBjaGFyICpvdXRwdXQgPSBjdXJsX2Vhc3lfZXNjYXBlKGN1cmwsICJkYXRhIHRvIGNvbnZlcnQiLCAxNSk7CiAgIGlmKG91dHB1dCkgewotICAgIHByaW50ZigiRW5jb2RlZDogJXNcbiIsIG91dHB1dCk7CisgICAgcHJpbnRmKCJFbmNvZGVkOiAlc1xcbiIsIG91dHB1dCk7CiAgICAgY3VybF9mcmVlKG91dHB1dCk7CiAgIH0KLX19Cit9CiAuZmkKIC5TSCAiU0VFIEFMU08iCiAuQlIgY3VybF9lYXN5X3VuZXNjYXBlICIoMyksICIgY3VybF9mcmVlICIoMyksICIgUkZDIDM5ODYKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZ2V0aW5mby4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKaW5kZXggZDQ4Y2EwNC4uMmI0YzdmZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiBwb2ludGVyIHRvIGEgc3RydWN0IGN1cmxfc2xpc3QgKiBvciBhIHBvaW50ZXIgdG8gYSBkb3VibGUgKGFzIHRoaXMKIGRvY3VtZW50YXRpb24gZGVzY3JpYmVzIGZ1cnRoZXIgZG93bikuICBUaGUgZGF0YSBwb2ludGVkLXRvIHdpbGwgYmUgZmlsbGVkIGluCiBhY2NvcmRpbmdseSBhbmQgY2FuIGJlIHJlbGllZCB1cG9uIG9ubHkgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgQ1VSTEVfT0suICBVc2UKLXRoaXMgZnVuY3Rpb24gQUZURVIgYSBwZXJmb3JtZWQgdHJhbnNmZXIgaWYgeW91IHdhbnQgdG8gZ2V0IHRyYW5zZmVyLSBvcmllbnRlZAordGhpcyBmdW5jdGlvbiBBRlRFUiBhIHBlcmZvcm1lZCB0cmFuc2ZlciBpZiB5b3Ugd2FudCB0byBnZXQgdHJhbnNmZXIgcmVsYXRlZAogZGF0YS4KIAogWW91IHNob3VsZCBub3QgZnJlZSB0aGUgbWVtb3J5IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gdW5sZXNzIGl0IGlzCkBAIC00MiwyNDggKzQyLDE0MSBAQAogLlNIIEFWQUlMQUJMRSBJTkZPUk1BVElPTgogVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBjYW4gYmUgZXh0cmFjdGVkOgogLklQIENVUkxJTkZPX0VGRkVDVElWRV9VUkwKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIGxhc3QgdXNlZCBlZmZlY3RpdmUgVVJMLgorTGFzdCB1c2VkIFVSTC4KK1NlZSBcZklDVVJMSU5GT19FRkZFQ1RJVkVfVVJMKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVTUE9OU0VfQ09ERQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgSFRUUCwgRlRQIG9yIFNNVFAKLXJlc3BvbnNlIGNvZGUuIFRoaXMgb3B0aW9uIHdhcyBwcmV2aW91c2x5IGtub3duIGFzIENVUkxJTkZPX0hUVFBfQ09ERSBpbgotbGliY3VybCA3LjEwLjcgYW5kIGVhcmxpZXIuIFRoZSB2YWx1ZSB3aWxsIGJlIHplcm8gaWYgbm8gc2VydmVyIHJlc3BvbnNlIGNvZGUKLWhhcyBiZWVuIHJlY2VpdmVkLiBOb3RlIHRoYXQgYSBwcm94eSdzIENPTk5FQ1QgcmVzcG9uc2Ugc2hvdWxkIGJlIHJlYWQgd2l0aAotXGZJQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERVxmUCBhbmQgbm90IHRoaXMuCi0KLVN1cHBvcnQgZm9yIFNNVFAgcmVzcG9uc2VzIGFkZGVkIGluIDcuMjUuMC4KK0xhc3QgcmVjZWl2ZWQgcmVzcG9uc2UgY29kZS4KK1NlZSBcZklDVVJMSU5GT19SRVNQT05TRV9DT0RFKDMpXGZQCiAuSVAgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgcHJveHkgcmVzcG9uc2UgY29kZSB0byBhCi1DT05ORUNUIHJlcXVlc3QuCitMYXN0IHByb3h5IENPTk5FQ1QgcmVzcG9uc2UgY29kZS4KK1NlZSBcZklDVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFKDMpXGZQCiAuSVAgQ1VSTElORk9fRklMRVRJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSByZW1vdGUgdGltZSBvZiB0aGUgcmV0cmlldmVkIGRvY3VtZW50Ci0oaW4gbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMSBqYW4gMTk3MCBpbiB0aGUgR01UL1VUQyB0aW1lIHpvbmUpLiBJZiB5b3UgZ2V0Ci0tMSwgaXQgY2FuIGJlIGJlY2F1c2Ugb2YgbWFueSByZWFzb25zICh1bmtub3duLCB0aGUgc2VydmVyIGhpZGVzIGl0IG9yIHRoZQotc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29tbWFuZCB0aGF0IHRlbGxzIGRvY3VtZW50IHRpbWUgZXRjKSBhbmQgdGhlIHRpbWUKLW9mIHRoZSBkb2N1bWVudCBpcyB1bmtub3duLiBOb3RlIHRoYXQgeW91IG11c3QgdGVsbCB0aGUgc2VydmVyIHRvIGNvbGxlY3QgdGhpcwotaW5mb3JtYXRpb24gYmVmb3JlIHRoZSB0cmFuc2ZlciBpcyBtYWRlLCBieSB1c2luZyB0aGUKLVxmSUNVUkxPUFRfRklMRVRJTUUoMylcZlAgb3B0aW9uIHRvIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgb3IgeW91IHdpbGwKLXVuY29uZGl0aW9uYWxseSBnZXQgYSAtMSBiYWNrLiAoQWRkZWQgaW4gNy41KQorUmVtb3RlIHRpbWUgb2YgdGhlIHJldHJpZXZlZCBkb2N1bWVudC4KK1NlZSBcZklDVVJMSU5GT19GSUxFVElNRSgzKVxmUAogLklQIENVUkxJTkZPX1RPVEFMX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmb3IgdGhlCi1wcmV2aW91cyB0cmFuc2ZlciwgaW5jbHVkaW5nIG5hbWUgcmVzb2x2aW5nLCBUQ1AgY29ubmVjdCBldGMuCitUb3RhbCB0aW1lIG9mIHByZXZpb3VzIHRyYW5zZmVyLgorU2VlIFxmSUNVUkxJTkZPX1RPVEFMX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGUKLXN0YXJ0IHVudGlsIHRoZSBuYW1lIHJlc29sdmluZyB3YXMgY29tcGxldGVkLgorVGltZSBmcm9tIHN0YXJ0IHVudGlsIG5hbWUgcmVzb2x2aW5nIGNvbXBsZXRlZC4KK1NlZSBcZklDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19DT05ORUNUX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGUKLXN0YXJ0IHVudGlsIHRoZSBjb25uZWN0IHRvIHRoZSByZW1vdGUgaG9zdCAob3IgcHJveHkpIHdhcyBjb21wbGV0ZWQuCitUaW1lIGZyb20gc3RhcnQgdW50aWwgcmVtb3RlIGhvc3Qgb3IgcHJveHkgY29tcGxldGVkLgorU2VlIFxmSUNVUkxJTkZPX0NPTk5FQ1RfVElNRSgzKVxmUAogLklQIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQotc3RhcnQgdW50aWwgdGhlIFNTTC9TU0ggY29ubmVjdC9oYW5kc2hha2UgdG8gdGhlIHJlbW90ZSBob3N0IHdhcyBjb21wbGV0ZWQuCi1UaGlzIHRpbWUgaXMgbW9zdCBvZnRlbiB2ZXJ5IG5lYXIgdG8gdGhlIFBSRVRSQU5TRkVSIHRpbWUsIGV4Y2VwdCBmb3IgY2FzZXMKLXN1Y2ggYXMgSFRUUCBwaXBlbGluaW5nIHdoZXJlIHRoZSBwcmV0cmFuc2ZlciB0aW1lIGNhbiBiZSBkZWxheWVkIGR1ZSB0byB3YWl0cwotaW4gbGluZSBmb3IgdGhlIHBpcGVsaW5lIGFuZCBtb3JlLiAoQWRkZWQgaW4gNy4xOS4wKQorVGltZSBmcm9tIHN0YXJ0IHVudGlsIFNTTC9TU0ggaGFuZHNoYWtlIGNvbXBsZXRlZC4KK1NlZSBcZklDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19QUkVUUkFOU0ZFUl9USU1FCi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rIGZyb20gdGhlCi1zdGFydCB1bnRpbCB0aGUgZmlsZSB0cmFuc2ZlciBpcyBqdXN0IGFib3V0IHRvIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbAotcHJlLXRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKLXByb3RvY29sKHMpIGludm9sdmVkLiBJdCBkb2VzIFxmSW5vdFxmUCBpbnZvbHZlIHRoZSBzZW5kaW5nIG9mIHRoZSBwcm90b2NvbC0KLXNwZWNpZmljIHJlcXVlc3QgdGhhdCB0cmlnZ2VycyBhIHRyYW5zZmVyLgorVGltZSBmcm9tIHN0YXJ0IHVudGlsIGp1c3QgYmVmb3JlIHRoZSB0cmFuc2ZlciBiZWdpbnMuCitTZWUgXGZJQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSgzKVxmUAogLklQIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQotc3RhcnQgdW50aWwgdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQgYnkgbGliY3VybC4gVGhpcyBpbmNsdWRlcwotQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBhbmQgYWxzbyB0aGUgdGltZSB0aGUgc2VydmVyIG5lZWRzIHRvIGNhbGN1bGF0ZSB0aGUKLXJlc3VsdC4KK1RpbWUgZnJvbSBzdGFydCB1bnRpbCBqdXN0IHdoZW4gdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQuCitTZWUgXGZJQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVESVJFQ1RfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmb3IKLWFsbCByZWRpcmVjdGlvbiBzdGVwcyBpbmNsdWRlIG5hbWUgbG9va3VwLCBjb25uZWN0LCBwcmV0cmFuc2ZlciBhbmQgdHJhbnNmZXIKLWJlZm9yZSBmaW5hbCB0cmFuc2FjdGlvbiB3YXMgc3RhcnRlZC4gQ1VSTElORk9fUkVESVJFQ1RfVElNRSBjb250YWlucyB0aGUKLWNvbXBsZXRlIGV4ZWN1dGlvbiB0aW1lIGZvciBtdWx0aXBsZSByZWRpcmVjdGlvbnMuICAoQWRkZWQgaW4gNy45LjcpCitUaW1lIHRha2VuIGZvciBhbGwgcmVkaXJlY3Qgc3RlcHMgYmVmb3JlIHRoZSBmaW5hbCB0cmFuc2Zlci4KK1NlZSBcZklDVVJMSU5GT19SRURJUkVDVF9USU1FKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVkaXJlY3Rpb25zIHRoYXQgd2VyZQotYWN0dWFsbHkgZm9sbG93ZWQuICAoQWRkZWQgaW4gNy45LjcpCitUb3RhbCBudW1iZXIgb2YgcmVkaXJlY3RzIHRoYXQgd2VyZSBmb2xsb3dlZC4KK1NlZSBcZklDVVJMSU5GT19SRURJUkVDVF9DT1VOVCgzKVxmUAogLklQIENVUkxJTkZPX1JFRElSRUNUX1VSTAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgVVJMIGEgcmVkaXJlY3QgXGZJd291bGRcZlAKLXRha2UgeW91IHRvIGlmIHlvdSB3b3VsZCBlbmFibGUgXGZJQ1VSTE9QVF9GT0xMT1dMT0NBVElPTigzKVxmUC4gVGhpcyBjYW4gY29tZQotdmVyeSBoYW5keSBpZiB5b3UgdGhpbmsgdXNpbmcgdGhlIGJ1aWx0LWluIGxpYmN1cmwgcmVkaXJlY3QgbG9naWMgaXNuJ3QgZ29vZAotZW5vdWdoIGZvciB5b3UgYnV0IHlvdSB3b3VsZCBzdGlsbCBwcmVmZXIgdG8gYXZvaWQgaW1wbGVtZW50aW5nIGFsbCB0aGUgbWFnaWMKLW9mIGZpZ3VyaW5nIG91dCB0aGUgbmV3IFVSTC4gKEFkZGVkIGluIDcuMTguMikKK1VSTCBhIHJlZGlyZWN0IHdvdWxkIHRha2UgeW91IHRvLCBoYWQgeW91IGVuYWJsZWQgcmVkaXJlY3RzLgorU2VlIFxmSUNVUkxJTkZPX1JFRElSRUNUX1VSTCgzKVxmUAogLklQIENVUkxJTkZPX1NJWkVfVVBMT0FECi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0b3RhbCBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlCi11cGxvYWRlZC4KK051bWJlciBvZiBieXRlcyB1cGxvYWRlZC4KK1NlZSBcZklDVVJMSU5GT19TSVpFX1VQTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyB0aGF0IHdlcmUKLWRvd25sb2FkZWQuIFRoZSBhbW91bnQgaXMgb25seSBmb3IgdGhlIGxhdGVzdCB0cmFuc2ZlciBhbmQgd2lsbCBiZSByZXNldCBhZ2FpbgotZm9yIGVhY2ggbmV3IHRyYW5zZmVyLiBUaGlzIGNvdW50cyBhY3R1YWwgcGF5bG9hZCBkYXRhLCB3aGF0J3MgYWxzbyBjb21tb25seQotY2FsbGVkIGJvZHkuIEFsbCBtZXRhIGFuZCBoZWFkZXIgZGF0YSBhcmUgZXhjbHVkZWQgYW5kIHdpbGwgbm90IGJlIGNvdW50ZWQgaW4KLXRoaXMgbnVtYmVyLgorTnVtYmVyIG9mIGJ5dGVzIGRvd25sb2FkZWQuCitTZWUgXGZJQ1VSTElORk9fU0laRV9ET1dOTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NQRUVEX0RPV05MT0FECi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBhdmVyYWdlIGRvd25sb2FkIHNwZWVkIHRoYXQgY3VybAotbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC4gTWVhc3VyZWQgaW4gYnl0ZXMvc2Vjb25kLgorQXZlcmFnZSBkb3dubG9hZCBzcGVlZC4KK1NlZSBcZklDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NQRUVEX1VQTE9BRAotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgYXZlcmFnZSB1cGxvYWQgc3BlZWQgdGhhdCBjdXJsCi1tZWFzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIHVwbG9hZC4gTWVhc3VyZWQgaW4gYnl0ZXMvc2Vjb25kLgorQXZlcmFnZSB1cGxvYWQgc3BlZWQuCitTZWUgXGZJQ1VSTElORk9fU1BFRURfVVBMT0FEKDMpXGZQCiAuSVAgQ1VSTElORk9fSEVBREVSX1NJWkUKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCB0aGUgaGVhZGVycwotcmVjZWl2ZWQuIE1lYXN1cmVkIGluIG51bWJlciBvZiBieXRlcy4KK051bWJlciBvZiBieXRlcyBvZiBhbGwgaGVhZGVycyByZWNlaXZlZC4KK1NlZSBcZklDVVJMSU5GT19IRUFERVJfU0laRSgzKVxmUAogLklQIENVUkxJTkZPX1JFUVVFU1RfU0laRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGlzc3VlZAotcmVxdWVzdHMuIFRoaXMgaXMgc28gZmFyIG9ubHkgZm9yIEhUVFAgcmVxdWVzdHMuIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBtb3JlCi10aGFuIG9uZSByZXF1ZXN0IGlmIEZPTExPV0xPQ0FUSU9OIGlzIHRydWUuCitOdW1iZXIgb2YgYnl0ZXMgc2VudCBpbiB0aGUgaXNzdWVkIEhUVFAgcmVxdWVzdHMuCitTZWUgXGZJQ1VSTElORk9fUkVRVUVTVF9TSVpFKDMpXGZQCiAuSVAgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVAotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHJlc3VsdCBvZiB0aGUgY2VydGlmaWNhdGlvbgotdmVyaWZpY2F0aW9uIHRoYXQgd2FzIHJlcXVlc3RlZCAodXNpbmcgdGhlIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVBFRVIoMylcZlAKLW9wdGlvbiB0byBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQKS4KK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiByZXN1bHQuCitTZWUgXGZJQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCgzKVxmUAogLklQIENVUkxJTkZPX1NTTF9FTkdJTkVTCi1QYXNzIHRoZSBhZGRyZXNzIG9mIGEgJ3N0cnVjdCBjdXJsX3NsaXN0IConIHRvIHJlY2VpdmUgYSBsaW5rZWQtbGlzdCBvZgotT3BlblNTTCBjcnlwdG8tZW5naW5lcyBzdXBwb3J0ZWQuIE5vdGUgdGhhdCBlbmdpbmVzIGFyZSBub3JtYWxseSBpbXBsZW1lbnRlZAotaW4gc2VwYXJhdGUgZHluYW1pYyBsaWJyYXJpZXMuIEhlbmNlIG5vdCBhbGwgdGhlIHJldHVybmVkIGVuZ2luZXMgbWF5IGJlCi1hdmFpbGFibGUgYXQgcnVuLXRpbWUuIFxmQk5PVEU6XGZQIHlvdSBtdXN0IGNhbGwgXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUAotb24gdGhlIGxpc3QgcG9pbnRlciBvbmNlIHlvdSdyZSBkb25lIHdpdGggaXQsIGFzIGxpYmN1cmwgd2lsbCBub3QgZnJlZSB0aGUKLWRhdGEgZm9yIHlvdS4gKEFkZGVkIGluIDcuMTIuMykKK0EgbGlzdCBvZiBPcGVuU1NMIGNyeXB0byBlbmdpbmVzLgorU2VlIFxmSUNVUkxJTkZPX1NTTF9FTkdJTkVTKDMpXGZQCiAuSVAgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtbGVuZ3RoIG9mIHRoZSBkb3dubG9hZC4gVGhpcwotaXMgdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgQ29udGVudC1MZW5ndGg6IGZpZWxkLiBTaW5jZSA3LjE5LjQsIHRoaXMgcmV0dXJucyAtMQotaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCitDb250ZW50IGxlbmd0aCBmcm9tIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCitTZWUgXGZJQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQoMylcZlAKIC5JUCBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9VUExPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHNwZWNpZmllZCBzaXplIG9mIHRoZSB1cGxvYWQuICBTaW5jZQotNy4xOS40LCB0aGlzIHJldHVybnMgLTEgaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCitVcGxvYWQgc2l6ZS4KK1NlZSBcZklDVVJMSU5GT19DT05URU5UX0xFTkdUSF9VUExPQUQoMylcZlAKIC5JUCBDVVJMSU5GT19DT05URU5UX1RZUEUKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtdHlwZSBvZiB0aGUgZG93bmxvYWRlZAotb2JqZWN0LiBUaGlzIGlzIHRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIENvbnRlbnQtVHlwZTogZmllbGQuIElmIHlvdSBnZXQgTlVMTCwKLWl0IG1lYW5zIHRoYXQgdGhlIHNlcnZlciBkaWRuJ3Qgc2VuZCBhIHZhbGlkIENvbnRlbnQtVHlwZSBoZWFkZXIgb3IgdGhhdCB0aGUKLXByb3RvY29sIHVzZWQgZG9lc24ndCBzdXBwb3J0IHRoaXMuCitDb250ZW50IHR5cGUgZnJvbSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KK1NlZSBcZklDVVJMSU5GT19DT05URU5UX1RZUEUoMylcZlAKIC5JUCBDVVJMSU5GT19QUklWQVRFCi1QYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEKLWFzc29jaWF0ZWQgd2l0aCB0aGUgY3VybCBoYW5kbGUgKHNldCB3aXRoIHRoZSBcZklDVVJMT1BUX1BSSVZBVEUoMylcZlAgb3B0aW9uCi10byBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQKS4gUGxlYXNlIG5vdGUgdGhhdCBmb3IgaW50ZXJuYWwgcmVhc29ucywgdGhlCi12YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNoYXIgcG9pbnRlciwgYWx0aG91Z2ggZWZmZWN0aXZlbHkgYmVpbmcgYSAndm9pZCAqJy4KLShBZGRlZCBpbiA3LjEwLjMpCitVc2VyJ3MgcHJpdmF0ZSBkYXRhIHBvaW50ZXIuCitTZWUgXGZJQ1VSTElORk9fUFJJVkFURSgzKVxmUAogLklQIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KLW1ldGhvZChzKSBhdmFpbGFibGUuIFRoZSBtZWFuaW5nIG9mIHRoZSBiaXRzIGlzIGV4cGxhaW5lZCBpbiB0aGUKLVxmSUNVUkxPUFRfSFRUUEFVVEgoMylcZlAgb3B0aW9uIGZvciBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQLiAgKEFkZGVkIGluCi03LjEwLjgpCitBdmFpbGFibGUgSFRUUCBhdXRoZW50aWNhdGlvbiBtZXRob2RzLgorU2VlIFxmSUNVUkxJTkZPX0hUVFBBVVRIX0FWQUlMKDMpXGZQCiAuSVAgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KLW1ldGhvZChzKSBhdmFpbGFibGUgZm9yIHlvdXIgcHJveHkgYXV0aGVudGljYXRpb24uICAoQWRkZWQgaW4gNy4xMC44KQorQXZhaWxhYmxlIEhUVFAgcHJveHkgYXV0aGVudGljYXRpb24gbWV0aG9kcy4KK1NlZSBcZklDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwoMylcZlAKIC5JUCBDVVJMSU5GT19PU19FUlJOTwotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGVycm5vIHZhcmlhYmxlIGZyb20gYSBjb25uZWN0IGZhaWx1cmUuCi1Ob3RlIHRoYXQgdGhlIHZhbHVlIGlzIG9ubHkgc2V0IG9uIGZhaWx1cmUsIGl0IGlzIG5vdCByZXNldCB1cG9uIGEKLXN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiAgKEFkZGVkIGluIDcuMTIuMikKK1RoZSBlcnJubyBmcm9tIHRoZSBsYXN0IGZhaWx1cmUgdG8gY29ubmVjdC4KK1NlZSBcZklDVVJMSU5GT19PU19FUlJOTygzKVxmUAogLklQIENVUkxJTkZPX05VTV9DT05ORUNUUwotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgaG93IG1hbnkgbmV3IGNvbm5lY3Rpb25zIGxpYmN1cmwgaGFkIHRvCi1jcmVhdGUgdG8gYWNoaWV2ZSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgKG9ubHkgdGhlIHN1Y2Nlc3NmdWwgY29ubmVjdHMgYXJlCi1jb3VudGVkKS4gIENvbWJpbmVkIHdpdGggXGZJQ1VSTElORk9fUkVESVJFQ1RfQ09VTlRcZlAgeW91IGFyZSBhYmxlIHRvIGtub3cKLWhvdyBtYW55IHRpbWVzIGxpYmN1cmwgc3VjY2Vzc2Z1bGx5IHJldXNlZCBleGlzdGluZyBjb25uZWN0aW9uKHMpIG9yIG5vdC4gIFNlZQotdGhlIENvbm5lY3Rpb24gT3B0aW9ucyBvZiBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQIHRvIHNlZSBob3cgbGliY3VybCB0cmllcwotdG8gbWFrZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIHRvIHNhdmUgdGltZS4gIChBZGRlZCBpbiA3LjEyLjMpCitOdW1iZXIgb2YgbmV3IHN1Y2Nlc3NmdWwgY29ubmVjdGlvbnMgdXNlZCBmb3IgcHJldmlvdXMgdHJhbnNmZXIuCitTZWUgXGZJQ1VSTElORk9fTlVNX0NPTk5FQ1RTKDMpXGZQCiAuSVAgQ1VSTElORk9fUFJJTUFSWV9JUAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAotc3RyaW5nIGhvbGRpbmcgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIG1vc3QgcmVjZW50IGNvbm5lY3Rpb24gZG9uZSB3aXRoIHRoaXMKLVxmQmN1cmxcZlAgaGFuZGxlLiBUaGlzIHN0cmluZyBtYXkgYmUgSVB2NiBpZiB0aGF0J3MgZW5hYmxlZC4gTm90ZSB0aGF0IHlvdQotZ2V0IGEgcG9pbnRlciB0byBhIG1lbW9yeSBhcmVhIHRoYXQgd2lsbCBiZSByZS11c2VkIGF0IG5leHQgcmVxdWVzdCBzbyB5b3UKLW5lZWQgdG8gY29weSB0aGUgc3RyaW5nIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlIGluZm9ybWF0aW9uLiAoQWRkZWQgaW4gNy4xOS4wKQorSVAgYWRkcmVzcyBvZiB0aGUgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX1BSSU1BUllfSVAoMylcZlAKIC5JUCBDVVJMSU5GT19QUklNQVJZX1BPUlQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBkZXN0aW5hdGlvbiBwb3J0IG9mIHRoZSBtb3N0IHJlY2VudAotY29ubmVjdGlvbiBkb25lIHdpdGggdGhpcyBcZkJjdXJsXGZQIGhhbmRsZS4gKEFkZGVkIGluIDcuMjEuMCkKK1BvcnQgb2YgdGhlIGxhc3QgY29ubmVjdGlvbi4KK1NlZSBcZklDVVJMSU5GT19QUklNQVJZX1BPUlQoMylcZlAKIC5JUCBDVVJMSU5GT19MT0NBTF9JUAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAotc3RyaW5nIGhvbGRpbmcgdGhlIGxvY2FsIChzb3VyY2UpIElQIGFkZHJlc3Mgb2YgdGhlIG1vc3QgcmVjZW50IGNvbm5lY3Rpb24gZG9uZQotd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLiBUaGlzIHN0cmluZyBtYXkgYmUgSVB2NiBpZiB0aGF0J3MgZW5hYmxlZC4gVGhlCi1zYW1lIHJlc3RyaWN0aW9ucyBhcHBseSBhcyB0byBcZklDVVJMSU5GT19QUklNQVJZX0lQXGZQLiAoQWRkZWQgaW4gNy4yMS4wKQorTG9jYWwtZW5kIElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX0xPQ0FMX0lQKDMpXGZQCiAuSVAgQ1VSTElORk9fTE9DQUxfUE9SVAotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxvY2FsIChzb3VyY2UpIHBvcnQgb2YgdGhlIG1vc3QgcmVjZW50Ci1jb25uZWN0aW9uIGRvbmUgd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLiAoQWRkZWQgaW4gNy4yMS4wKQorTG9jYWwtZW5kIHBvcnQgb2YgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX0xPQ0FMX1BPUlQoMylcZlAKIC5JUCBDVVJMSU5GT19DT09LSUVMSVNUCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB0byByZWNlaXZlIGEgbGlua2VkLWxpc3Qgb2YgYWxsCi1jb29raWVzIGNVUkwga25vd3MgKGV4cGlyZWQgb25lcywgdG9vKS4gRG9uJ3QgZm9yZ2V0IHRvCi1cZkljdXJsX3NsaXN0X2ZyZWVfYWxsKDMpXGZQIHRoZSBsaXN0IGFmdGVyIGl0IGhhcyBiZWVuIHVzZWQuICBJZiB0aGVyZSBhcmUgbm8KLWNvb2tpZXMgKGNvb2tpZXMgZm9yIHRoZSBoYW5kbGUgaGF2ZSBub3QgYmVlbiBlbmFibGVkIG9yIHNpbXBseSBub25lIGhhdmUgYmVlbgotcmVjZWl2ZWQpICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB3aWxsIGJlIHNldCB0byBwb2ludCB0byBOVUxMLiAoQWRkZWQgaW4KLTcuMTQuMSkKK0xpc3Qgb2YgYWxsIGtub3duIGNvb2tpZXMuCitTZWUgXGZJQ1VSTElORk9fQ09PS0lFTElTVCgzKVxmUAogLklQIENVUkxJTkZPX0xBU1RTT0NLRVQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBsYXN0IHNvY2tldCB1c2VkIGJ5IHRoaXMgY3VybAotc2Vzc2lvbi4gSWYgdGhlIHNvY2tldCBpcyBubyBsb25nZXIgdmFsaWQsIC0xIGlzIHJldHVybmVkLiBXaGVuIHlvdSBmaW5pc2gKLXdvcmtpbmcgd2l0aCB0aGUgc29ja2V0LCB5b3UgbXVzdCBjYWxsIGN1cmxfZWFzeV9jbGVhbnVwKCkgYXMgdXN1YWwgYW5kIGxldAotbGliY3VybCBjbG9zZSB0aGUgc29ja2V0IGFuZCBjbGVhbnVwIG90aGVyIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlCi1oYW5kbGUuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aAotXGZJQ1VSTE9QVF9DT05ORUNUX09OTFkoMylcZlAuICAoQWRkZWQgaW4gNy4xNS4yKQotCi1OT1RFOiB0aGlzIEFQSSBpcyBub3QgcmVhbGx5IHdvcmtpbmcgb24gd2luNjQsIHNpbmNlIHRoZSBTT0NLRVQgdHlwZSBvbiB3aW42NAotaXMgNjQgYml0IGxhcmdlIHdoaWxlIGl0cyAnbG9uZycgaXMgb25seSAzMiBiaXRzLgorTGFzdCBzb2NrZXQgdXNlZC4KK1NlZSBcZklDVVJMSU5GT19MQVNUU09DS0VUKDMpXGZQCisuSVAgQ1VSTElORk9fQUNUSVZFU09DS0VUCitUaGUgc2Vzc2lvbidzIGFjdGl2ZSBzb2NrZXQuCitTZWUgXGZJQ1VSTElORk9fQUNUSVZFU09DS0VUKDMpXGZQCiAuSVAgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEgKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCi1wYXRoIG9mIHRoZSBlbnRyeSBwYXRoLiBUaGF0IGlzIHRoZSBpbml0aWFsIHBhdGggbGliY3VybCBlbmRlZCB1cCBpbiB3aGVuCi1sb2dnaW5nIG9uIHRvIHRoZSByZW1vdGUgRlRQIHNlcnZlci4gVGhpcyBzdG9yZXMgYSBOVUxMIGFzIHBvaW50ZXIgaWYKLXNvbWV0aGluZyBpcyB3cm9uZy4gKEFkZGVkIGluIDcuMTUuNCkKLQotQWxzbyB3b3JrcyBmb3IgU0ZUUCBzaW5jZSA3LjIxLjQKK1RoZSBlbnRyeSBwYXRoIGFmdGVyIGxvZ2dpbmcgaW4gdG8gYW4gRlRQIHNlcnZlci4KK1NlZSBcZklDVVJMSU5GT19GVFBfRU5UUllfUEFUSCgzKVxmUAogLklQIENVUkxJTkZPX0NFUlRJTkZPCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqJyBhbmQgeW91J2xsIGdldCBpdCBzZXQgdG8gcG9pbnQgdG8KLXN0cnVjdCB0aGF0IGhvbGRzIGEgbnVtYmVyIG9mIGxpbmtlZCBsaXN0cyB3aXRoIGluZm8gYWJvdXQgdGhlIGNlcnRpZmljYXRlCi1jaGFpbiwgYXNzdW1pbmcgeW91IGhhZCBcZklDVVJMT1BUX0NFUlRJTkZPKDMpXGZQIGVuYWJsZWQgd2hlbiB0aGUgcHJldmlvdXMKLXJlcXVlc3Qgd2FzIGRvbmUuIFRoZSBzdHJ1Y3QgcmVwb3J0cyBob3cgbWFueSBjZXJ0cyBpdCBmb3VuZCBhbmQgdGhlbiB5b3UgY2FuCi1leHRyYWN0IGluZm8gZm9yIGVhY2ggb2YgdGhvc2UgY2VydHMgYnkgZm9sbG93aW5nIHRoZSBsaW5rZWQgbGlzdHMuIFRoZSBpbmZvCi1jaGFpbiBpcyBwcm92aWRlZCBpbiBhIHNlcmllcyBvZiBkYXRhIGluIHRoZSBmb3JtYXQgIm5hbWU6Y29udGVudCIgd2hlcmUgdGhlCi1jb250ZW50IGlzIGZvciB0aGUgc3BlY2lmaWMgbmFtZWQgZGF0YS4gU2VlIGFsc28gdGhlIGNlcnRpbmZvLmMgZXhhbXBsZS4gTk9URToKLXRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGluIGxpYmN1cmwgYnVpbHQgd2l0aCBPcGVuU1NMLCBOU1Mgb3IgR1NLaXQKLXN1cHBvcnQuIChBZGRlZCBpbiA3LjE5LjEpCitDZXJ0aWZpY2F0ZSBjaGFpbi4KK1NlZSBcZklDVVJMSU5GT19DRVJUSU5GTygzKVxmUAorLklQIENVUkxJTkZPX1RMU19TU0xfUFRSCitUTFMgc2Vzc2lvbiBpbmZvIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4KK1NlZSBcZklDVVJMSU5GT19UTFNfU1NMX1BUUigzKVxmUAogLklQIENVUkxJTkZPX1RMU19TRVNTSU9OCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqJy4gIFRoZSBwb2ludGVyIHdpbGwgYmUKLWluaXRpYWxpemVkIHRvIHJlZmVyIHRvIGEgJ3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIConIHRoYXQgd2lsbCBjb250YWluIGFuCi1lbnVtIGluZGljYXRpbmcgdGhlIFNTTCBsaWJyYXJ5IHVzZWQgZm9yIHRoZSBoYW5kc2hha2UgYW5kIHRoZSByZXNwZWN0aXZlCi1pbnRlcm5hbCBUTFMgc2Vzc2lvbiBzdHJ1Y3R1cmUgb2YgdGhpcyB1bmRlcmx5aW5nIFNTTCBsaWJyYXJ5LgotCi1UaGlzIG1heSB0aGVuIGJlIHVzZWQgdG8gZXh0cmFjdCBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdAotY29udmVuaWVudCBmb3IgZnVydGhlciBwcm9jZXNzaW5nLCBzdWNoIGFzIG1hbnVhbCB2YWxpZGF0aW9uLiBOT1RFOiB0aGlzCi1vcHRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgZm9yIGFsbCBTU0wgYmFja2VuZHM7IHVuc3VwcG9ydGVkIFNTTCBiYWNrZW5kcwotd2lsbCByZXR1cm4gJ0NVUkxTU0xCQUNLRU5EX05PTkUnIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgbm90IHN1cHBvcnRlZDsKLXRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IG5vIFNTTCBiYWNrZW5kIHdhcyB1c2VkLiAoQWRkZWQgaW4gNy4zNC4wKQotCi0ubmYKLXN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKLSAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7Ci0gIHZvaWQgKmludGVybmFsczsKLX07Ci0uZmkKLQotVGhlIFxmSWludGVybmFsc1xmUCBzdHJ1Y3QgbWVtYmVyIHdpbGwgcG9pbnQgdG8gYSBUTFMgbGlicmFyeSBzcGVjaWZpYyBwb2ludGVyCi13aXRoIHRoZSBmb2xsb3dpbmcgdW5kZXJseWluZyB0eXBlczoKLS5SUwotLklQIE9wZW5TU0wKLVNTTF9DVFggKgotLklQIEdudVRMUwotZ251dGxzX3Nlc3Npb25fdAotLklQIE5TUwotUFJGaWxlRGVzYyAqCi0uSVAgZ3NraXQKLWdza19oYW5kbGUKLS5SRQotCitUTFMgc2Vzc2lvbiBpbmZvIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gIFNlZQorXGZJQ1VSTElORk9fVExTX1NFU1NJT04oMylcZlAuIERlcHJlY2F0ZWQgb3B0aW9uLCB1c2UKK1xmSUNVUkxJTkZPX1RMU19TU0xfUFRSKDMpXGZQIGluc3RlYWQhCiAuSVAgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVUCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIDEgaWYgdGhlIGNvbmRpdGlvbiBwcm92aWRlZCBpbgotdGhlIHByZXZpb3VzIHJlcXVlc3QgZGlkbid0IG1hdGNoIChzZWUgXGZJQ1VSTE9QVF9USU1FQ09ORElUSU9OKDMpXGZQKS4gQWxhcywKLWlmIHRoaXMgcmV0dXJucyBhIDEgeW91IGtub3cgdGhhdCB0aGUgcmVhc29uIHlvdSBkaWRuJ3QgZ2V0IGRhdGEgaW4gcmV0dXJuIGlzCi1iZWNhdXNlIGl0IGRpZG4ndCBmdWxmaWxsIHRoZSBjb25kaXRpb24uIFRoZSBsb25nIHRocyBhcmd1bWVudCBwb2ludHMgdG8gd2lsbAotZ2V0IGEgemVybyBzdG9yZWQgaWYgdGhlIGNvbmRpdGlvbiBpbnN0ZWFkIHdhcyBtZXQuIChBZGRlZCBpbiA3LjE5LjQpCitXaGV0aGVyIG9yIG5vdCBhIHRpbWUgY29uZGl0aW9uYWwgd2FzIG1ldC4KK1NlZSBcZklDVVJMSU5GT19DT05ESVRJT05fVU5NRVQoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCi1tb3N0IHJlY2VudCBSVFNQIFNlc3Npb24gSUQuCi0KLUFwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIHJlc3VtZSBhbiBSVFNQIHNlc3Npb24gb24gYW5vdGhlciBjb25uZWN0aW9uIHNob3VsZAotcmV0cmlldmUgdGhpcyBpbmZvIGJlZm9yZSBjbG9zaW5nIHRoZSBhY3RpdmUgY29ubmVjdGlvbi4KK1JUU1Agc2Vzc2lvbiBJRC4KK1NlZSBcZklDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBDU2VxIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZQotYXBwbGljYXRpb24uCitSVFNQIENTZXEgdGhhdCB3aWxsIG5leHQgYmUgdXNlZC4KK1NlZSBcZklDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRKDMpXGZQCiAuSVAgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG5leHQgc2VydmVyIENTZXEgdGhhdCB3aWxsIGJlIGV4cGVjdGVkCi1ieSB0aGUgYXBwbGljYXRpb24uCi0KLVxmSShOT1RFOiBsaXN0ZW5pbmcgZm9yIHNlcnZlciBpbml0aWF0ZWQgcmVxdWVzdHMgaXMgY3VycmVudGx5Ci11bmltcGxlbWVudGVkKS5cZlAKLQotQXBwbGljYXRpb25zIHdpc2hpbmcgdG8gcmVzdW1lIGFuIFJUU1Agc2Vzc2lvbiBvbiBhbm90aGVyIGNvbm5lY3Rpb24gc2hvdWxkCi1yZXRyaWV2ZSB0aGlzIGluZm8gYmVmb3JlIGNsb3NpbmcgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLgorUlRTUCBDU2VxIHRoYXQgd2lsbCBuZXh0IGJlIGV4cGVjdGVkLgorU2VlIFxmSUNVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX0NTRVFfUkVDVgotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50bHkgcmVjZWl2ZWQgQ1NlcSBmcm9tIHRoZQotc2VydmVyLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGVuY291bnRlcnMgYSBcZklDVVJMRV9SVFNQX0NTRVFfRVJST1JcZlAgdGhlbiB5b3UKLW1heSB3aXNoIHRvIHRyb3VibGVzaG9vdCBhbmQvb3IgZml4IHRoZSBDU2VxIG1pc21hdGNoIGJ5IHBlZWtpbmcgYXQgdGhpcyB2YWx1ZS4KK1JUU1AgQ1NlcSBsYXN0IHJlY2VpdmVkLgorU2VlIFxmSUNVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWKDMpXGZQCiAuU0ggVElNRVMKIC5uZgogQW4gb3ZlcnZpZXcgb2YgdGhlIHNpeCB0aW1lIHZhbHVlcyBhdmFpbGFibGUgZnJvbSBjdXJsX2Vhc3lfZ2V0aW5mbygpCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCmluZGV4IDRmN2YwMDQuLjM3MWEzYjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGF1c2UuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGF1c2UuMwppbmRleCAwZjZhZDVhLi4xMzFmYTc3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3BhdXNlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9wYXVzZS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjIsNyArNjIsNyBAQAogLklQIENVUkxQQVVTRV9BTEwKIENvbnZlbmllbmNlIGRlZmluZSB0aGF0IHBhdXNlcyBib3RoIGRpcmVjdGlvbnMuCiAuSVAgQ1VSTFBBVVNFX0NPTlQKLUNvbnZlbmllbmNlIGRlZmluZSB0aGF0IHVucGF1c2VzIGJvdGggZGlyZWN0aW9ucworQ29udmVuaWVuY2UgZGVmaW5lIHRoYXQgdW5wYXVzZXMgYm90aCBkaXJlY3Rpb25zLgogLlNIIFJFVFVSTiBWQUxVRQogQ1VSTEVfT0sgKHplcm8pIG1lYW5zIHRoYXQgdGhlIG9wdGlvbiB3YXMgc2V0IHByb3Blcmx5LCBhbmQgYSBub24temVybyByZXR1cm4KIGNvZGUgbWVhbnMgc29tZXRoaW5nIHdyb25nIG9jY3VycmVkIGFmdGVyIHRoZSBuZXcgc3RhdGUgd2FzIHNldC4gIFNlZSB0aGUKQEAgLTc5LDcgKzc5LDcgQEAKIHRoZXJlIHdhcyBubyBwYXJ0aWN1bGFyIGZvcmNlZCByZWNoZWNraW5nIG9yIHNpbWlsYXIgb2YgdGhlIHNvY2tldCdzIHN0YXRlLAogd2hpY2ggbWFkZSB0aGUgY29udGludWF0aW9uIG9mIHRoZSB0cmFuc2ZlciBnZXQgZGVsYXllZCB1bnRpbCBuZXh0CiBtdWx0aS1zb2NrZXQgY2FsbCBpbnZva2Ugb3IgZXZlbiBsb25nZXIuIEFsdGVybmF0aXZlbHksIHRoZSB1c2VyIGNvdWxkCi1mb3JjaWJseSBjYWxsIGZvciBleGFtcGxlIGN1cmxfbXVsdGlfc29ja2V0X2FsbCgzKSAtIHdpdGggYSByYXRoZXIgaGVmdHkKK2ZvcmNpYmx5IGNhbGwgZm9yIGV4YW1wbGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQIC0gd2l0aCBhIHJhdGhlciBoZWZ0eQogcGVyZm9ybWFuY2UgcGVuYWx0eS4KIAogU3RhcnRpbmcgaW4gbGliY3VybCA3LjMyLjAsIHVucGF1c2luZyBhIHRyYW5zZmVyIHdpbGwgc2NoZWR1bGUgYSB0aW1lb3V0CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3BlcmZvcm0uMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCmluZGV4IGZjOGM1OWUuLjQ4YzFmMzEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTUsNyArNTUsNyBAQAogLlNIIFJFVFVSTiBWQUxVRQogQ1VSTEVfT0sgKDApIG1lYW5zIGV2ZXJ5dGhpbmcgd2FzIG9rLCBub24temVybyBtZWFucyBhbiBlcnJvciBvY2N1cnJlZCBhcwogLkkgPGN1cmwvY3VybC5oPgotZGVmaW5lcyAtIHNlZSBcZklsaWJjdXJsLWVycm9ycygzKVxmUC4gSWYgdGhlIFxmQkNVUkxPUFRfRVJST1JCVUZGRVIoMylcZlAgd2FzCitkZWZpbmVzIC0gc2VlIFxmSWxpYmN1cmwtZXJyb3JzKDMpXGZQLiBJZiB0aGUgXGZJQ1VSTE9QVF9FUlJPUkJVRkZFUigzKVxmUCB3YXMKIHNldCB3aXRoIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgdGhlcmUgd2lsbCBiZSBhIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgaW4KIHRoZSBlcnJvciBidWZmZXIgd2hlbiBub24temVybyBpcyByZXR1cm5lZC4KIC5TSCBFWEFNUExFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3JlY3YuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCmluZGV4IDlkZTYzNjQuLjM1NjBjYzUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDEsMTUgKzQxLDE1IEBACiBidWZmZXIuIFRoZSB2YXJpYWJsZSBcZkJuXGZQIHBvaW50cyB0byB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZiByZWNlaXZlZAogYnl0ZXMuCiAKLVRvIGVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiwgc2V0IFxmQkNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQIG9wdGlvbiBiZWZvcmUKLWNhbGxpbmcgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb3IgXGNJY3VybF9tdWx0aV9wZXJmb3JtKDMpXGZQLiBOb3RlIHRoYXQKK1RvIGVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiwgc2V0IFxmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQIG9wdGlvbiBiZWZvcmUKK2NhbGxpbmcgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb3IgXGZJY3VybF9tdWx0aV9wZXJmb3JtKDMpXGZQLiBOb3RlIHRoYXQKIFxmSWN1cmxfZWFzeV9yZWN2KDMpXGZQIGRvZXMgbm90IHdvcmsgb24gY29ubmVjdGlvbnMgdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aG91dAogdGhpcyBvcHRpb24uCiAKIFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBzb2NrZXQgaGFzIGRhdGEgdG8gcmVhZCBiZWZvcmUgY2FsbGluZwogXGZJY3VybF9lYXN5X3JlY3YoMylcZlAsIG90aGVyd2lzZSB0aGUgY2FsbCB3aWxsIHJldHVybiBcZkJDVVJMRV9BR0FJTlxmUCAtCiB0aGUgc29ja2V0IGlzIHVzZWQgaW4gbm9uLWJsb2NraW5nIG1vZGUgaW50ZXJuYWxseS4gVXNlCi1cZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCB3aXRoIFxmQkNVUkxJTkZPX0xBU1RTT0NLRVRcZlAgdG8gb2J0YWluIHRoZQorXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgd2l0aCBcZklDVVJMSU5GT19BQ1RJVkVTT0NLRVQoMylcZlAgdG8gb2J0YWluIHRoZQogc29ja2V0OyB1c2UgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGZhY2lsaXRpZXMgbGlrZSBcZklzZWxlY3QoMilcZlAgdG8gY2hlY2sgaWYKIGl0IGhhcyBhbnkgZGF0YSB5b3UgY2FuIHJlYWQuCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3Jlc2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3Jlc2V0LjMKaW5kZXggY2I2OWJkZC4uMGJhZmI2NCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9yZXNldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVzZXQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NlbmQuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCmluZGV4IDZmNWE2ZWEuLjJhNzQ0MzkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzksNyArMzksNyBAQAogXGZCYnVmZmVyXGZQIGlzIGEgcG9pbnRlciB0byB0aGUgZGF0YSBvZiBsZW5ndGggXGZCYnVmbGVuXGZQIHRoYXQgeW91IHdhbnQgc2VudC4KIFRoZSB2YXJpYWJsZSBcZkJuXGZQIHBvaW50cyB0byB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZiBzZW50IGJ5dGVzLgogCi1UbyBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24sIHNldCBcZkJDVVJMT1BUX0NPTk5FQ1RfT05MWSgzKVxmUCBvcHRpb24gYmVmb3JlCitUbyBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24sIHNldCBcZklDVVJMT1BUX0NPTk5FQ1RfT05MWSgzKVxmUCBvcHRpb24gYmVmb3JlCiBjYWxsaW5nIFxmSWN1cmxfZWFzeV9wZXJmb3JtKDMpXGZQIG9yIFxmSWN1cmxfbXVsdGlfcGVyZm9ybSgpXGZQLiBOb3RlIHRoYXQKIFxmSWN1cmxfZWFzeV9zZW5kKDMpXGZQIHdpbGwgbm90IHdvcmsgb24gY29ubmVjdGlvbnMgdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aG91dAogdGhpcyBvcHRpb24uCkBAIC00Nyw3ICs0Nyw3IEBACiBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgc29ja2V0IGlzIHdyaXRhYmxlIGJlZm9yZSBjYWxsaW5nCiBcZkljdXJsX2Vhc3lfc2VuZCgzKVxmUCwgb3RoZXJ3aXNlIHRoZSBjYWxsIHdpbGwgcmV0dXJuIFxmQkNVUkxFX0FHQUlOXGZQIC0KIHRoZSBzb2NrZXQgaXMgdXNlZCBpbiBub24tYmxvY2tpbmcgbW9kZSBpbnRlcm5hbGx5LiBVc2UKLVxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIHdpdGggXGZCQ1VSTElORk9fTEFTVFNPQ0tFVFxmUCB0byBvYnRhaW4gdGhlCitcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCB3aXRoIFxmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCB0byBvYnRhaW4gdGhlCiBzb2NrZXQ7IHVzZSB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gZmFjaWxpdGllcyBsaWtlIFxmSXNlbGVjdCgyKVxmUCB0byBjaGVjayBpZgogaXQgY2FuIGJlIHdyaXR0ZW4gdG8uCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zZXRvcHQuMwppbmRleCA0ZTViOGRlLi43NWYxY2U0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NldG9wdC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2V0b3B0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCw2ICs1MCw4IEBACiBcZklDVVJMT1BUX0NPUFlQT1NURklFTERTKDMpXGZQIGhhcyBzb21lIHVzYWdlIGNoYXJhY3RlcmlzdGljcyB5b3UgbmVlZCB0bwogcmVhZCB1cCBvbi4KIAorVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBvcHRpb25zIGFyZSBzZXQgZG9lcyBub3QgbWF0dGVyLgorCiBCZWZvcmUgdmVyc2lvbiA3LjE3LjAsIHN0cmluZ3Mgd2VyZSBub3QgY29waWVkLiBJbnN0ZWFkIHRoZSB1c2VyIHdhcyBmb3JjZWQKIGtlZXAgdGhlbSBhdmFpbGFibGUgdW50aWwgbGliY3VybCBubyBsb25nZXIgbmVlZGVkIHRoZW0uCiAKQEAgLTE1MSw2ICsxNTMsOCBAQAogQWxsb3dlZCBwcm90b2NvbHMuIFNlZSBcZklDVVJMT1BUX1BST1RPQ09MUygzKVxmUAogLklQIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTCiBQcm90b2NvbHMgdG8gYWxsb3cgcmVkaXJlY3RzIHRvLiBTZWUgXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAKKy5JUCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wKK0RlZmF1bHQgcHJvdG9jb2wuIFNlZSBcZklDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0woMylcZlAKIC5JUCBDVVJMT1BUX1BST1hZCiBQcm94eSB0byB1c2UuIFNlZSBcZklDVVJMT1BUX1BST1hZKDMpXGZQCiAuSVAgQ1VSTE9QVF9QUk9YWVBPUlQKQEAgLTE2MSwxNCArMTY1LDE2IEBACiBGaWx0ZXIgb3V0IGhvc3RzIGZyb20gcHJveHkgdXNlLiBcZklDVVJMT1BUX05PUFJPWFkoMylcZlAKIC5JUCBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTAogVHVubmVsIHRocm91Z2ggdGhlIEhUVFAgcHJveHkuIFxmSUNVUkxPUFRfSFRUUFBST1hZVFVOTkVMKDMpXGZQCisuSVAgQ1VSTE9QVF9DT05ORUNUX1RPCitDb25uZWN0IHRvIGEgc3BlY2lmaWMgaG9zdCBhbmQgcG9ydC4gU2VlIFxmSUNVUkxPUFRfQ09OTkVDVF9UTygzKVxmUAogLklQIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFCiBTb2NrczUgR1NTQVBJIHNlcnZpY2UgbmFtZS4gXGZJQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UoMylcZlAKIC5JUCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDCiBTb2NrczUgR1NTQVBJIE5FQyBtb2RlLiBTZWUgXGZJQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQygzKVxmUAogLklQIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FCi1Qcm94eSBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FKDMpXGZQCitQcm94eSBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FKDMpXGZQCiAuSVAgQ1VSTE9QVF9TRVJWSUNFX05BTUUKLVNQTkVHTyBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfU0VSVklDRV9OQU1FKDMpXGZQCitBdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfU0VSVklDRV9OQU1FKDMpXGZQCiAuSVAgQ1VSTE9QVF9JTlRFUkZBQ0UKIEJpbmQgY29ubmVjdGlvbiBsb2NhbGx5IHRvIHRoaXMuIFNlZSBcZklDVVJMT1BUX0lOVEVSRkFDRSgzKVxmUAogLklQIENVUkxPUFRfTE9DQUxQT1JUCkBAIC0xODMsNiArMTg5LDggQEAKIEFzayBmb3Igc21hbGxlciBidWZmZXIgc2l6ZS4gU2VlIFxmSUNVUkxPUFRfQlVGRkVSU0laRSgzKVxmUAogLklQIENVUkxPUFRfUE9SVAogUG9ydCBudW1iZXIgdG8gY29ubmVjdCB0by4gU2VlIFxmSUNVUkxPUFRfUE9SVCgzKVxmUAorLklQIENVUkxPUFRfVENQX0ZBU1RPUEVOCitFbmFibGUgVEZPLCBUQ1AgRmFzdCBPcGVuLiBTZWUgXGZJQ1VSTE9QVF9UQ1BfRkFTVE9QRU4oMylcZlAKIC5JUCBDVVJMT1BUX1RDUF9OT0RFTEFZCiBEaXNhYmxlIHRoZSBOYWdsZSBhbGdvcml0aG0uIFNlZSBcZklDVVJMT1BUX1RDUF9OT0RFTEFZKDMpXGZQCiAuSVAgQ1VSTE9QVF9BRERSRVNTX1NDT1BFCkBAIC0yOTEsNiArMjk5LDE1IEBACiBEaXNhYmxlIFRyYW5zZmVyIGRlY29kaW5nLiBTZWUgXGZJQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HKDMpXGZQCiAuSVAgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMKIDEwMC1jb250aW51ZSB0aW1lb3V0LiBTZWUgXGZJQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMoMylcZlAKKy5JUCBDVVJMT1BUX1BJUEVXQUlUCitXYWl0IG9uIGNvbm5lY3Rpb24gdG8gcGlwZWxpbmUgb24gaXQuIFNlZSBcZklDVVJMT1BUX1BJUEVXQUlUKDMpXGZQCisuSVAgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUworVGhpcyBIVFRQLzIgc3RyZWFtIGRlcGVuZHMgb24gYW5vdGhlci4gU2VlIFxmSUNVUkxPUFRfU1RSRUFNX0RFUEVORFMoMylcZlAKKy5JUCBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UKK1RoaXMgSFRUUC8yIHN0cmVhbSBkZXBlbmRzIG9uIGFub3RoZXIgZXhjbHVzaXZlbHkuIFNlZQorXGZJQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FKDMpXGZQCisuSVAgQ1VSTE9QVF9TVFJFQU1fV0VJR0hUCitTZXQgdGhpcyBIVFRQLzIgc3RyZWFtJ3Mgd2VpZ2h0LiBTZWUgXGZJQ1VSTE9QVF9TVFJFQU1fV0VJR0hUKDMpXGZQCiAuU0ggU01UUCBPUFRJT05TCiAuSVAgQ1VSTE9QVF9NQUlMX0ZST00KIEFkZHJlc3Mgb2YgdGhlIHNlbmRlci4gU2VlIFxmSUNVUkxPUFRfTUFJTF9GUk9NKDMpXGZQCkBAIC0zMDEsNiArMzE4LDggQEAKIC5TSCBURlRQIE9QVElPTlMKIC5JUCBDVVJMT1BUX1RGVFBfQkxLU0laRQogVEZUUCBibG9jayBzaXplLiBTZWUgXGZJQ1VSTE9QVF9URlRQX0JMS1NJWkUoMylcZlAKKy5JUCBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUworRG8gbm90IHNlbmQgVEZUUCBvcHRpb25zIHJlcXVlc3RzLiBTZWUgXGZJQ1VSTE9QVF9URlRQX05PX09QVElPTlMoMylcZlAKIC5TSCBGVFAgT1BUSU9OUwogLklQIENVUkxPUFRfRlRQUE9SVAogVXNlIGFjdGl2ZSBGVFAuIFNlZSBcZklDVVJMT1BUX0ZUUFBPUlQoMylcZlAKQEAgLTUyMyw4ICs1NDIsOCBAQAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKLX19Cit9CiAuZmkKIC5TSCAiU0VFIEFMU08iCiAuQlIgY3VybF9lYXN5X2luaXQgIigzKSwgIiBjdXJsX2Vhc3lfY2xlYW51cCAiKDMpLCAiIGN1cmxfZWFzeV9yZXNldCAiKDMpLCAiCi0uQlIgY3VybF9tdWx0aV9zZXRvcHQgIigzKSwgIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9tdWx0aV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zdHJlcnJvci4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zdHJlcnJvci4zCmluZGV4IDU1N2Q0NjcuLmFjOTQxMjIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc3RyZXJyb3IuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3N0cmVycm9yLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV91bmVzY2FwZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV91bmVzY2FwZS4zCmluZGV4IDIzY2U5YzMuLjA2ZmQ2ZmMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfdW5lc2NhcGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3VuZXNjYXBlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsOCArMjYsOCBAQAogLlNIIFNZTk9QU0lTCiAuQiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAuc3AKLS5CSSAiY2hhciAqY3VybF9lYXN5X3VuZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY2hhciAqIiB1cmwgIiwgaW50ICJpbmxlbmd0aAotLkJJICIsIGludCAqIiBvdXRsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lYXN5X3VuZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY29uc3QgY2hhciAqIiB1cmwKKy5CSSAiLCBpbnQgImlubGVuZ3RoICIsIGludCAqIiBvdXRsZW5ndGggIiApOyIKIC5hZAogLlNIIERFU0NSSVBUSU9OCiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBnaXZlbiBVUkwgZW5jb2RlZCBpbnB1dCBzdHJpbmcgdG8gYSAicGxhaW4gc3RyaW5nIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMwppbmRleCA3NWZkNTFmLi4wM2YwMmQzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw3ICsyNSw3IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX2VzY2FwZSggY2hhciAqIiB1cmwgIiwgaW50ICJsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lc2NhcGUoIGNvbnN0IGNoYXIgKiIgdXJsICIsIGludCAibGVuZ3RoICIgKTsiCiAuYWQKIC5TSCBERVNDUklQVElPTgogT2Jzb2xldGUgZnVuY3Rpb24uIFVzZSBcZkljdXJsX2Vhc3lfZXNjYXBlKDMpXGZQIGluc3RlYWQhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9mb3JtYWRkLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtYWRkLjMKaW5kZXggM2U0ODE0OS4uNjkyMzkxMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWFkZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1hZGQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDcgKzMyLDcgQEAKIGN1cmxfZm9ybWFkZCgpIGlzIHVzZWQgdG8gYXBwZW5kIHNlY3Rpb25zIHdoZW4gYnVpbGRpbmcgYSBtdWx0aXBhcnQvZm9ybWRhdGEKIEhUVFAgUE9TVCAoc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFJGQzIzODgtc3R5bGUgcG9zdHMpLiBBcHBlbmQgb25lIHNlY3Rpb24KIGF0IGEgdGltZSB1bnRpbCB5b3UndmUgYWRkZWQgYWxsIHRoZSBzZWN0aW9ucyB5b3Ugd2FudCBpbmNsdWRlZCBhbmQgdGhlbiB5b3UKLXBhc3MgdGhlIFxmSWZpcnN0aXRlbVxmUCBwb2ludGVyIGFzIHBhcmFtZXRlciB0byBcZkJDVVJMT1BUX0hUVFBQT1NUKDMpXGZQLgorcGFzcyB0aGUgXGZJZmlyc3RpdGVtXGZQIHBvaW50ZXIgYXMgcGFyYW1ldGVyIHRvIFxmSUNVUkxPUFRfSFRUUFBPU1QoMylcZlAuCiBcZklsYXN0aXRlbVxmUCBpcyBzZXQgYWZ0ZXIgZWFjaCBcZkljdXJsX2Zvcm1hZGQoMylcZlAgY2FsbCBhbmQgb24gcmVwZWF0ZWQKIGludm9rZXMgaXQgc2hvdWxkIGJlIGxlZnQgYXMgc2V0IHRvIGFsbG93IHJlcGVhdGVkIGludm9rZXMgdG8gZmluZCB0aGUgZW5kIG9mCiB0aGUgbGlzdCBmYXN0ZXIuCkBAIC04Myw3ICs4MywxOCBAQAogYXBwbGljYXRpb24sIHNvIHlvdSBtdXN0IG1ha2Ugc3VyZSBpdCByZW1haW5zIHVudGlsIGN1cmwgbm8gbG9uZ2VyIG5lZWRzIGl0LgogSWYgdGhlIGRhdGEgaXNuJ3QgTlVMLXRlcm1pbmF0ZWQsIG9yIGlmIHlvdSdkIGxpa2UgaXQgdG8gY29udGFpbiB6ZXJvIGJ5dGVzLAogeW91IG11c3Qgc2V0IGl0cyBsZW5ndGggIHdpdGggXGZCQ1VSTEZPUk1fQ09OVEVOVFNMRU5HVEhcZlAuCisuSVAgQ1VSTEZPUk1fQ09OVEVOVExFTgorZm9sbG93ZWQgYnkgYSBjdXJsX29mZl90IHZhbHVlIGdpdmluZyB0aGUgbGVuZ3RoIG9mIHRoZSBjb250ZW50cy4gTm90ZSB0aGF0Citmb3IgXGZJQ1VSTEZPUk1fU1RSRUFNXGZQIGNvbnRlbnRzLCB0aGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuCisKK0lmIHlvdSBwYXNzIGEgMCAoemVybykgZm9yIHRoaXMgb3B0aW9uLCBsaWJjdXJsIHdpbGwgaW5zdGVhZCBkbyBhIHN0cmxlbigpIG9uCit0aGUgY29udGVudHMgdG8gZmlndXJlIG91dCB0aGUgc2l6ZS4gSWYgeW91IHJlYWxseSB3YW50IHRvIHNlbmQgYSB6ZXJvIGJ5dGUKK2NvbnRlbnQgdGhlbiB5b3UgbXVzdCBtYWtlIHN1cmUgc3RybGVuKCkgb24gdGhlIGRhdGEgcG9pbnRlciByZXR1cm5zIHplcm8uCisKKyhPcHRpb24gYWRkZWQgaW4gNy40Ni4wKQogLklQIENVUkxGT1JNX0NPTlRFTlRTTEVOR1RICisoVGhpcyBvcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIFxmSUNVUkxGT1JNX0NPTlRFTlRMRU5cZlAgaW5zdGVhZCEpCisKIGZvbGxvd2VkIGJ5IGEgbG9uZyBnaXZpbmcgdGhlIGxlbmd0aCBvZiB0aGUgY29udGVudHMuIE5vdGUgdGhhdCBmb3IKIFxmSUNVUkxGT1JNX1NUUkVBTVxmUCBjb250ZW50cywgdGhpcyBvcHRpb24gaXMgbWFuZGF0b3J5LgogCkBAIC0xMDMsNiArMTE0LDkgQEAKIHByb3ZpZGluZyBtdWx0aXBsZSBcZkJDVVJMRk9STV9GSUxFXGZQIGFyZ3VtZW50cyBlYWNoIGZvbGxvd2VkIGJ5IHRoZSBmaWxlbmFtZQogKGFuZCBlYWNoIFxmSUNVUkxGT1JNX0ZJTEVcZlAgaXMgYWxsb3dlZCB0byBoYXZlIGEKIFxmSUNVUkxGT1JNX0NPTlRFTlRUWVBFXGZQKS4KKworVGhlIGdpdmVuIHVwbG9hZCBmaWxlIGhhcyB0byBleGlzdCBpbiBpdHMgZnVsbCBpbiB0aGUgZmlsZSBzeXN0ZW0gYWxyZWFkeSB3aGVuCit0aGUgdXBsb2FkIHN0YXJ0cywgYXMgbGliY3VybCBuZWVkcyB0byByZWFkIHRoZSBjb3JyZWN0IGZpbGUgc2l6ZSBiZWZvcmVoYW5kLgogLklQIENVUkxGT1JNX0NPTlRFTlRUWVBFCiBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggXGZJQ1VSTEZPUk1fRklMRVxmUC4gRm9sbG93ZWQgYnkgYSBwb2ludGVyIHRvIGEKIHN0cmluZyB3aGljaCBwcm92aWRlcyB0aGUgY29udGVudC10eXBlIGZvciB0aGlzIHBhcnQsIHBvc3NpYmx5IGluc3RlYWQgb2YgYW4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1mcmVlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZnJlZS4zCmluZGV4IGZkMTk0OTEuLmEyNTM2Y2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1mcmVlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWZyZWUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGljYWxseSBtZWFucyBhZnRlciBcZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBoYXMgYmVlbiBjYWxsZWQuCiAKIFRoZSBwb2ludGVyIHRvIGZyZWUgaXMgdGhlIHNhbWUgcG9pbnRlciB5b3UgcGFzc2VkIHRvIHRoZQotXGZCQ1VSTE9QVF9IVFRQUE9TVCgzKVxmUCBvcHRpb24sIHdoaWNoIGlzIHRoZSBcZklmaXJzdGl0ZW1cZlAgcG9pbnRlciBmcm9tCitcZklDVVJMT1BUX0hUVFBQT1NUKDMpXGZQIG9wdGlvbiwgd2hpY2ggaXMgdGhlIFxmSWZpcnN0aXRlbVxmUCBwb2ludGVyIGZyb20KIHRoZSBcZkljdXJsX2Zvcm1hZGQoMylcZlAgaW52b2tlKHMpLgogCiBcZkJmb3JtXGZQIGlzIHRoZSBwb2ludGVyIGFzIHJldHVybmVkIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZ2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZ2V0LjMKaW5kZXggYjUyNjIyMS4uNjM1YzQ4NyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWdldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1nZXQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDcgKzI2LDcgQEAKIC5uZgogLkIgI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi12b2lkIGN1cmxfZm9ybWdldChzdHJ1Y3QgY3VybF9odHRwcG9zdCAqIGZvcm0sIHZvaWQgKnVzZXJwLAoraW50IGN1cmxfZm9ybWdldChzdHJ1Y3QgY3VybF9odHRwcG9zdCAqIGZvcm0sIHZvaWQgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgY3VybF9mb3JtZ2V0X2NhbGxiYWNrIGFwcGVuZCApOwogLlNIIERFU0NSSVBUSU9OCiBjdXJsX2Zvcm1nZXQoKSBpcyB1c2VkIHRvIHNlcmlhbGl6ZSBkYXRhIHByZXZpb3VzbHkgYnVpbHQvYXBwZW5kZWQgd2l0aApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZnJlZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZnJlZS4zCmluZGV4IDllNTU3MGYuLjViYmY3NDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2ZyZWUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9mcmVlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZGF0ZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZGF0ZS4zCmluZGV4IDJlN2Q3YWEuLmQwOTk4MGQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2dldGRhdGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRkYXRlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZW52LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMwppbmRleCAzMzU1NDQ3Li5jNmJlZTk4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfY2xlYW51cC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2NsZWFudXAuMwppbmRleCA4M2E1NGU0Li4yZTNmZjAzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfY2xlYW51cC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9jbGVhbnVwLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw3IEBACiAuQkkgInZvaWQgY3VybF9nbG9iYWxfY2xlYW51cCh2b2lkKTsiCiAuYWQKIC5TSCBERVNDUklQVElPTgotVGhpcyBmdW5jdGlvbiByZWxlYXNlcyByZXNvdXJjZXMgYWNxdWlyZWQgYnkgXGZCY3VybF9nbG9iYWxfaW5pdCgzKVxmUC4KK1RoaXMgZnVuY3Rpb24gcmVsZWFzZXMgcmVzb3VyY2VzIGFjcXVpcmVkIGJ5IFxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAuCiAKIFlvdSBzaG91bGQgY2FsbCBcZkljdXJsX2dsb2JhbF9jbGVhbnVwKDMpXGZQIG9uY2UgZm9yIGVhY2ggY2FsbCB5b3UgbWFrZSB0bwogXGZJY3VybF9nbG9iYWxfaW5pdCgzKVxmUCwgYWZ0ZXIgeW91IGFyZSBkb25lIHVzaW5nIGxpYmN1cmwuCkBAIC0zNiwxMSArMzYsMTEgQEAKIFxmQlRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLlxmUCBZb3UgbXVzdCBub3QgY2FsbCBpdCB3aGVuIGFueSBvdGhlcgogdGhyZWFkIGluIHRoZSBwcm9ncmFtIChpLmUuIGEgdGhyZWFkIHNoYXJpbmcgdGhlIHNhbWUgbWVtb3J5KSBpcyBydW5uaW5nLgogVGhpcyBkb2Vzbid0IGp1c3QgbWVhbiBubyBvdGhlciB0aHJlYWQgdGhhdCBpcyB1c2luZyBsaWJjdXJsLiAgQmVjYXVzZQotXGZCY3VybF9nbG9iYWxfY2xlYW51cCgzKVxmUCBjYWxscyBmdW5jdGlvbnMgb2Ygb3RoZXIgbGlicmFyaWVzIHRoYXQgYXJlCitcZkljdXJsX2dsb2JhbF9jbGVhbnVwKDMpXGZQIGNhbGxzIGZ1bmN0aW9ucyBvZiBvdGhlciBsaWJyYXJpZXMgdGhhdCBhcmUKIHNpbWlsYXJseSB0aHJlYWQgdW5zYWZlLCBpdCBjb3VsZCBjb25mbGljdCB3aXRoIGFueSBvdGhlciB0aHJlYWQgdGhhdCB1c2VzCiB0aGVzZSBvdGhlciBsaWJyYXJpZXMuCiAKLVNlZSB0aGUgZGVzY3JpcHRpb24gaW4gXGZCbGliY3VybCgzKVxmUCBvZiBnbG9iYWwgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzIGZvcgorU2VlIHRoZSBkZXNjcmlwdGlvbiBpbiBcZklsaWJjdXJsKDMpXGZQIG9mIGdsb2JhbCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMgZm9yCiBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4KIAogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfaW5pdC4zCmluZGV4IDc3MTcyYmUuLmQ1NmRmNWIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUwLDcgKzUwLDExIEBACiBzaW1pbGFybHkgdGhyZWFkIHVuc2FmZSwgaXQgY291bGQgY29uZmxpY3Qgd2l0aCBhbnkgb3RoZXIgdGhyZWFkIHRoYXQgdXNlcwogdGhlc2Ugb3RoZXIgbGlicmFyaWVzLgogCi1TZWUgdGhlIGRlc2NyaXB0aW9uIGluIFxmQmxpYmN1cmwoMylcZlAgb2YgZ2xvYmFsIGVudmlyb25tZW50IHJlcXVpcmVtZW50cyBmb3IKK0lmIHlvdSBhcmUgaW5pdGlhbGl6aW5nIGxpYmN1cmwgZnJvbSBhIFdpbmRvd3MgRExMIHlvdSBzaG91bGQgbm90IGluaXRpYWxpemUgaXQKK2Zyb20gRGxsTWFpbiBvciBhIHN0YXRpYyBpbml0aWFsaXplciBiZWNhdXNlIFdpbmRvd3MgaG9sZHMgdGhlIGxvYWRlciBsb2NrCitkdXJpbmcgdGhhdCB0aW1lIGFuZCBpdCBjb3VsZCBjYXVzZSBhIGRlYWRsb2NrLgorCitTZWUgdGhlIGRlc2NyaXB0aW9uIGluIFxmSWxpYmN1cmwoMylcZlAgb2YgZ2xvYmFsIGVudmlyb25tZW50IHJlcXVpcmVtZW50cyBmb3IKIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLgogCiAuU0ggRkxBR1MKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0X21lbS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKaW5kZXggOWNkZGVmNy4uNzI1MmNmOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsMTEgKzM2LDEzIEBACiBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHNldCBjYWxsYmFja3MgdG8gcmVwbGFjZSB0aGUgb3RoZXJ3aXNlIHVzZWQgaW50ZXJuYWwKIG1lbW9yeSBmdW5jdGlvbnMuCiAKLVRoaXMgbWFuIHBhZ2Ugb25seSBhZGRzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjYWxsYmFja3MsIHNlZSB0aGUKLVxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAgbWFuIHBhZ2UgZm9yIGFsbCB0aGUgcmVzdC4gV2hlbiB5b3UgdXNlIHRoaXMKLWZ1bmN0aW9uLCBhbGwgY2FsbGJhY2sgYXJndW1lbnRzIG11c3QgYmUgc2V0IHRvIHZhbGlkIGZ1bmN0aW9uIHBvaW50ZXJzLgorSWYgeW91IGFyZSB1c2luZyBsaWJjdXJsIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBvciBsaWJjdXJsIHdhcyBidWlsdCB3aXRoIHRoZQordGhyZWFkZWQgcmVzb2x2ZXIgb3B0aW9uIHRoZW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBtdXN0IGJlIHRocmVhZCBzYWZlLiBUaGUKK3RocmVhZGVkIHJlc29sdmVyIGlzIGEgY29tbW9uIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgKGFuZCBpbiBzb21lIGNhc2VzIHRoZQorZGVmYXVsdCkgc28gd2Ugc3Ryb25nbHkgdXJnZSB5b3UgdG8gbWFrZSB5b3VyIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aHJlYWQgc2FmZS4KIAotVGhlIHByb3RvdHlwZXMgZm9yIHRoZSBnaXZlbiBjYWxsYmFja3Mgc2hvdWxkIG1hdGNoIHRoZXNlOgorQWxsIGNhbGxiYWNrIGFyZ3VtZW50cyBtdXN0IGJlIHNldCB0byB2YWxpZCBmdW5jdGlvbiBwb2ludGVycy4gVGhlCitwcm90b3R5cGVzIGZvciB0aGUgZ2l2ZW4gY2FsbGJhY2tzIG11c3QgbWF0Y2ggdGhlc2U6CiAuSVAgInZvaWQgKm1hbGxvY19jYWxsYmFjayhzaXplX3Qgc2l6ZSk7IgogVG8gcmVwbGFjZSBtYWxsb2MoKQogLklQICJ2b2lkIGZyZWVfY2FsbGJhY2sodm9pZCAqcHRyKTsiCkBAIC01MSw2ICs1Myw5IEBACiBUbyByZXBsYWNlIHN0cmR1cCgpCiAuSVAgInZvaWQgKmNhbGxvY19jYWxsYmFjayhzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsiCiBUbyByZXBsYWNlIGNhbGxvYygpCisuUkUKK1RoaXMgZnVuY3Rpb24gaXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIFxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAsIHBsZWFzZSByZWZlcgordG8gdGhhdCBtYW4gcGFnZSBmb3IgZG9jdW1lbnRhdGlvbi4KIC5TSCAiQ0FVVElPTiIKIE1hbmlwdWxhdGluZyB0aGVzZSBnaXZlcyBjb25zaWRlcmFibGUgcG93ZXJzIHRvIHRoZSBhcHBsaWNhdGlvbiB0byBzZXZlcmVseQogc2NyZXcgdGhpbmdzIHVwIGZvciBsaWJjdXJsLiBUYWtlIGNhcmUhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tcHJpbnRmLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9tcHJpbnRmLjMKaW5kZXggY2JmMTBlMS4uZTg2MWVkOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXByaW50Zi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX21wcmludGYuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTkxLDE1ICs5MSw5IEBACiBMaWtlIGN1cmxfbWFwcmludGYoKSBidXQgdGFrZXMgYSB2YV9saXN0IHBvaW50ZXIgYXJndW1lbnQgaW5zdGVhZCBvZiBhCiB2YXJpYWJsZSBhbW91bnQgb2YgYXJndW1lbnRzLgogLlJFCi0KLVRvIGVhc2lseSB1c2UgYWxsIHRoZXNlIGNsb25lZCBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG9uZXMsICNkZWZpbmUKLV9NUFJJTlRGX1JFUExBQ0UgYmVmb3JlIHlvdSBpbmNsdWRlIHRoZSA8Y3VybC9tcHJpbnRmLmg+IGZpbGUuIFRoZW4gYWxsIHRoZQotbm9ybWFsIG5hbWVzIGxpa2UgcHJpbnRmLCBmcHJpbnRmLCBzcHJpbnRmIGV0YyB3aWxsIHVzZSB0aGUgY3VybC1mdW5jdGlvbnMKLWluc3RlYWQuCiAuU0ggQVZBSUxBQklMSVRZCi1UaGVzZSBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljIGxpYmN1cmwgQVBJIGluIGEgbmVhcgotZnV0dXJlLiBUaGV5IHdpbGwgaW5zdGVhZCBiZSBtYWRlICJhdmFpbGFibGUiIGJ5IHNvdXJjZSBjb2RlIGFjY2VzcyBvbmx5LCBhbmQKLXRoZW4gYXMgY3VybHhfLXByZWZpeGVkIGZ1bmN0aW9ucy4gU2VlIGxpYi9SRUFETUUuY3VybHggZm9yIGZ1cnRoZXIgZGV0YWlscy4KK1RoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljIGxpYmN1cmwgQVBJIGluIHRoZSBmdXR1cmUuIERvCitub3QgdXNlIHRoZW0gaW4gYW55IG5ldyBwcm9ncmFtcyBvciBwcm9qZWN0cy4KIC5TSCBSRVRVUk4gVkFMVUUKIFRoZSBcZkJjdXJsX21hcHJpbnRmXGZQIGFuZCBcZkJjdXJsX212YXByaW50ZlxmUCBmdW5jdGlvbnMgcmV0dXJuIGEgcG9pbnRlciB0bwogYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nLCBvciBOVUxMIGlmIGl0IGZhaWxlZC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2FkZF9oYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2FkZF9oYW5kbGUuMwppbmRleCAyNTNiODY0Li40YzI5NGY1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9hZGRfaGFuZGxlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfYWRkX2hhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDcgKzMxLDcgQEAKIEFkZHMgYSBzdGFuZGFyZCBlYXN5IGhhbmRsZSB0byB0aGUgbXVsdGkgc3RhY2suIFRoaXMgZnVuY3Rpb24gY2FsbCB3aWxsIG1ha2UKIHRoaXMgXGZJbXVsdGlfaGFuZGxlXGZQIGNvbnRyb2wgdGhlIHNwZWNpZmllZCBcZkllYXN5X2hhbmRsZVxmUC4KIAotV2hpbGUgYW4gZWFzeSBoYW5kbGUgaXMgYWRkZWQgdG8gYSBtdWx0aSBzdGFjaywgeW91IGNhbiBub3QgYW5kIHlvdSBtdXN0IG5vdAorV2hpbGUgYW4gZWFzeSBoYW5kbGUgaXMgYWRkZWQgdG8gYSBtdWx0aSBzdGFjaywgeW91IGNhbm5vdCBhbmQgeW91IG11c3Qgbm90CiB1c2UgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb24gdGhhdCBoYW5kbGUuIEFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBlYXN5CiBoYW5kbGUgZnJvbSB0aGUgbXVsdGkgc3RhY2sgYWdhaW4sIGl0IGlzIHBlcmZlY3RseSBmaW5lIHRvIHVzZSBpdCB3aXRoIHRoZQogZWFzeSBpbnRlcmZhY2UgYWdhaW4uCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9hc3NpZ24uMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCmluZGV4IDBhMjM3OGQuLjc1Y2I4NmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2NsZWFudXAuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2NsZWFudXAuMwppbmRleCA1MGJjOGFkLi4wN2Q5MjE2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfY2xlYW51cC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Zkc2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9mZHNldC4zCmluZGV4IDkwOGVmNTUuLmJlZWY0ZGUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Zkc2V0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfZmRzZXQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9pbmZvX3JlYWQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCmluZGV4IDAzYmUzNDEuLjczNjE4M2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luaXQuMwppbmRleCBjYTkzNzRlLi5lODRlYjc2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3BlcmZvcm0uMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3BlcmZvcm0uMwppbmRleCAzZWMxZmFkLi5kMmFlNTQxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9wZXJmb3JtLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfcGVyZm9ybS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMwppbmRleCAxYzIxNjViLi5iOWRhYWU5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDcgKzI4LDcgQEAKIENVUkxNY29kZSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoQ1VSTE0gKm11bHRpX2hhbmRsZSwgQ1VSTCAqZWFzeV9oYW5kbGUpOwogLmFkCiAuU0ggREVTQ1JJUFRJT04KLVJlbW92ZXMgYSBnaXZlbiBcZkllYXN5X2hhbmRsZVxmSSBmcm9tIHRoZSBcZkltdWx0aV9oYW5kbGVcZkkuIFRoaXMgd2lsbCBtYWtlCitSZW1vdmVzIGEgZ2l2ZW4gXGZJZWFzeV9oYW5kbGVcZlAgZnJvbSB0aGUgXGZJbXVsdGlfaGFuZGxlXGZQLiBUaGlzIHdpbGwgbWFrZQogdGhlIHNwZWNpZmllZCBlYXN5IGhhbmRsZSBiZSByZW1vdmVkIGZyb20gdGhpcyBtdWx0aSBoYW5kbGUncyBjb250cm9sLgogCiBXaGVuIHRoZSBlYXN5IGhhbmRsZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBtdWx0aSBzdGFjaywgaXQgaXMgYWdhaW4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKaW5kZXggOTUxMzQ5Zi4uZDI3YzUyNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNywzMiArMzcsMzYgQEAKIGJlaGF2ZSBiYWRseSEgIFlvdSBjYW4gb25seSBzZXQgb25lIG9wdGlvbiBpbiBlYWNoIGZ1bmN0aW9uIGNhbGwuCiAKIC5TSCBPUFRJT05TCi0uSVAgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04KLVNlZSBcZklDVVJMTU9QVF9TT0NLRVRGVU5DVElPTigzKVxmUAotLklQIENVUkxNT1BUX1NPQ0tFVERBVEEKLVNlZSBcZklDVVJMTU9QVF9TT0NLRVREQVRBKDMpXGZQCi0uSVAgQ1VSTE1PUFRfUElQRUxJTklORwotU2VlIFxmSUNVUkxNT1BUX1BJUEVMSU5JTkcoMylcZlAKLS5JUCBDVVJMTU9QVF9USU1FUkZVTkNUSU9OCi1TZWUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUAotLklQIENVUkxNT1BUX1RJTUVSREFUQQotU2VlIFxmSUNVUkxNT1BUX1RJTUVSREFUQSgzKVxmUAotLklQIENVUkxNT1BUX01BWENPTk5FQ1RTCi1TZWUgXGZJQ1VSTE1PUFRfTUFYQ09OTkVDVFMoMylcZlAKKy5JUCBDVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFCitTZWUgXGZJQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAorLklQIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRQorU2VlIFxmSUNVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAogLklQIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TCiBTZWUgXGZJQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMoMylcZlAKIC5JUCBDVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RICiBTZWUgXGZJQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSCgzKVxmUAotLklQIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRQotU2VlIFxmSUNVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAotLklQIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUKLVNlZSBcZklDVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFKDMpXGZQCisuSVAgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TCitTZWUgXGZJQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TKDMpXGZQCisuSVAgQ1VSTE1PUFRfTUFYQ09OTkVDVFMKK1NlZSBcZklDVVJMTU9QVF9NQVhDT05ORUNUUygzKVxmUAorLklQIENVUkxNT1BUX1BJUEVMSU5JTkcKK1NlZSBcZklDVVJMTU9QVF9QSVBFTElOSU5HKDMpXGZQCiAuSVAgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMCiBTZWUgXGZJQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMKDMpXGZQCiAuSVAgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwKIFNlZSBcZklDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTCgzKVxmUAotLklQIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUwotU2VlIFxmSUNVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUygzKVxmUAorLklQIENVUkxNT1BUX1BVU0hGVU5DVElPTgorU2VlIFxmSUNVUkxNT1BUX1BVU0hGVU5DVElPTigzKVxmUAorLklQIENVUkxNT1BUX1BVU0hEQVRBCitTZWUgXGZJQ1VSTE1PUFRfUFVTSERBVEEoMylcZlAKKy5JUCBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTgorU2VlIFxmSUNVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OKDMpXGZQCisuSVAgQ1VSTE1PUFRfU09DS0VUREFUQQorU2VlIFxmSUNVUkxNT1BUX1NPQ0tFVERBVEEoMylcZlAKKy5JUCBDVVJMTU9QVF9USU1FUkZVTkNUSU9OCitTZWUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUAorLklQIENVUkxNT1BUX1RJTUVSREFUQQorU2VlIFxmSUNVUkxNT1BUX1RJTUVSREFUQSgzKVxmUAogLlNIIFJFVFVSTlMKIFRoZSBzdGFuZGFyZCBDVVJMTWNvZGUgZm9yIG11bHRpIGludGVyZmFjZSBlcnJvciBjb2Rlcy4gTm90ZSB0aGF0IGl0IHJldHVybnMgYQogQ1VSTE1fVU5LTk9XTl9PUFRJT04gaWYgeW91IHRyeSBzZXR0aW5nIGFuIG9wdGlvbiB0aGF0IHRoaXMgdmVyc2lvbiBvZiBsaWJjdXJsCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zb2NrZXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCmluZGV4IDZiMjYyZjIuLjUyYWJmMWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNyArNDMsNyBAQAogaXMgdGhlIG9uZSB0aGF0IGNvbXBsZXRlZC4gVXNlIFxmSWN1cmxfbXVsdGlfaW5mb19yZWFkKDMpXGZQIHRvIGZpZ3VyZSBvdXQKIHdoaWNoIGVhc3kgaGFuZGxlIHRoYXQgY29tcGxldGVkLgogCi1UaGUgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9ucyBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIGFib3V0CitUaGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9ucyBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIGFib3V0CiB1cGRhdGVzIGluIHRoZSBzb2NrZXQgKGZpbGUgZGVzY3JpcHRvcikgc3RhdHVzIGJ5IGRvaW5nIG5vbmUsIG9uZSwgb3IgbXVsdGlwbGUKIGNhbGxzIHRvIHRoZSBzb2NrZXQgY2FsbGJhY2sgZnVuY3Rpb24gc2V0IHdpdGggdGhlIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OCiBvcHRpb24gdG8gXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFRoZXkgdXBkYXRlIHRoZSBzdGF0dXMgd2l0aCBjaGFuZ2VzCkBAIC01Miw3ICs1Miw3IEBACiBHZXQgdGhlIHRpbWVvdXQgdGltZSBieSBzZXR0aW5nIHRoZSBcZklDVVJMTU9QVF9USU1FUkZVTkNUSU9OXGZQIG9wdGlvbiB3aXRoCiBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gWW91ciBhcHBsaWNhdGlvbiB3aWxsIHRoZW4gZ2V0IGNhbGxlZCB3aXRoCiBpbmZvcm1hdGlvbiBvbiBob3cgbG9uZyB0byB3YWl0IGZvciBzb2NrZXQgYWN0aW9ucyBhdCBtb3N0IGJlZm9yZSBkb2luZyB0aGUKLXRpbWVvdXQgYWN0aW9uOiBjYWxsIHRoZSBcZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUKK3RpbWVvdXQgYWN0aW9uOiBjYWxsIHRoZSBcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUKIFxmQnNvY2tmZFxmUCBhcmd1bWVudCBzZXQgdG8gQ1VSTF9TT0NLRVRfVElNRU9VVC4gWW91IGNhbiBhbHNvIHVzZSB0aGUKIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUCBmdW5jdGlvbiB0byBwb2xsIHRoZSB2YWx1ZSBhdCBhbnkgZ2l2ZW4gdGltZSwgYnV0CiBmb3IgYW4gZXZlbnQtYmFzZWQgc3lzdGVtIHVzaW5nIHRoZSBjYWxsYmFjayBpcyBmYXIgYmV0dGVyIHRoYW4gcmVseWluZyBvbgpAQCAtNjMsNyArNjMsNyBAQAogMC4KIAogRm9yY2UgbGliY3VybCB0byAocmUtKWNoZWNrIGFsbCBpdHMgaW50ZXJuYWwgc29ja2V0cyBhbmQgdHJhbnNmZXJzIGluc3RlYWQgb2YKLWp1c3QgYSBzaW5nbGUgb25lIGJ5IGNhbGxpbmcgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQLiBOb3RlIHRoYXQgdGhlcmUKK2p1c3QgYSBzaW5nbGUgb25lIGJ5IGNhbGxpbmcgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQLiBOb3RlIHRoYXQgdGhlcmUKIHNob3VsZCBub3QgYmUgYW55IHJlYXNvbiB0byB1c2UgdGhpcyBmdW5jdGlvbiEKIC5TSCAiQ0FMTEJBQ0sgREVUQUlMUyIKIApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zCmluZGV4IDQ1YjYxMDUuLjY1YTNmYjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldF9hY3Rpb24uMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKIENVUkxNY29kZSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oQ1VSTE0gKiBtdWx0aV9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLCBpbnQgZXZfYml0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBldl9iaXRtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJ1bm5pbmdfaGFuZGxlcyk7CiAuZmkKIC5TSCBERVNDUklQVElPTgpAQCAtNTAsMTYgKzUxLDE3IEBACiBpcyB0aGUgb25lIHRoYXQgY29tcGxldGVkLiBVc2UgXGZJY3VybF9tdWx0aV9pbmZvX3JlYWQoMylcZlAgdG8gZmlndXJlIG91dAogd2hpY2ggZWFzeSBoYW5kbGUgdGhhdCBjb21wbGV0ZWQuCiAKLVRoZSBcZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb25zIGluZm9ybSB0aGUgYXBwbGljYXRpb24gYWJvdXQKK1RoZSBcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb25zIGluZm9ybSB0aGUgYXBwbGljYXRpb24gYWJvdXQKIHVwZGF0ZXMgaW4gdGhlIHNvY2tldCAoZmlsZSBkZXNjcmlwdG9yKSBzdGF0dXMgYnkgZG9pbmcgbm9uZSwgb25lLCBvciBtdWx0aXBsZQotY2FsbHMgdG8gdGhlIHNvY2tldCBjYWxsYmFjayBmdW5jdGlvbiBzZXQgd2l0aCB0aGUgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04KLW9wdGlvbiB0byBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gVGhleSB1cGRhdGUgdGhlIHN0YXR1cyB3aXRoIGNoYW5nZXMKLXNpbmNlIHRoZSBwcmV2aW91cyB0aW1lIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLgorY2FsbHMgdG8gdGhlIHNvY2tldCBjYWxsYmFjayBmdW5jdGlvbiBzZXQgd2l0aCB0aGUKK1xmSUNVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OKDMpXGZQIG9wdGlvbiB0byBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gVGhleQordXBkYXRlIHRoZSBzdGF0dXMgd2l0aCBjaGFuZ2VzIHNpbmNlIHRoZSBwcmV2aW91cyB0aW1lIHRoZSBjYWxsYmFjayB3YXMKK2NhbGxlZC4KIAotR2V0IHRoZSB0aW1lb3V0IHRpbWUgYnkgc2V0dGluZyB0aGUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTlxmUCBvcHRpb24gd2l0aAotXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFlvdXIgYXBwbGljYXRpb24gd2lsbCB0aGVuIGdldCBjYWxsZWQgd2l0aAorR2V0IHRoZSB0aW1lb3V0IHRpbWUgYnkgc2V0dGluZyB0aGUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUCBvcHRpb24KK3dpdGggXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFlvdXIgYXBwbGljYXRpb24gd2lsbCB0aGVuIGdldCBjYWxsZWQgd2l0aAogaW5mb3JtYXRpb24gb24gaG93IGxvbmcgdG8gd2FpdCBmb3Igc29ja2V0IGFjdGlvbnMgYXQgbW9zdCBiZWZvcmUgZG9pbmcgdGhlCi10aW1lb3V0IGFjdGlvbjogY2FsbCB0aGUgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlCit0aW1lb3V0IGFjdGlvbjogY2FsbCB0aGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlCiBcZkJzb2NrZmRcZlAgYXJndW1lbnQgc2V0IHRvIENVUkxfU09DS0VUX1RJTUVPVVQuIFlvdSBjYW4gYWxzbyB1c2UgdGhlCiBcZkljdXJsX211bHRpX3RpbWVvdXQoMylcZlAgZnVuY3Rpb24gdG8gcG9sbCB0aGUgdmFsdWUgYXQgYW55IGdpdmVuIHRpbWUsIGJ1dAogZm9yIGFuIGV2ZW50LWJhc2VkIHN5c3RlbSB1c2luZyB0aGUgY2FsbGJhY2sgaXMgZmFyIGJldHRlciB0aGFuIHJlbHlpbmcgb24KQEAgLTc2LDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNvY2tldHApOyAvKiBwcml2YXRlIHNvY2tldCBwb2ludGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxmQk5VTExcZlAgaWYgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBhc3NpZ25lZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGZCY3VybF9tdWx0aV9hc3NpZ24oMylcZlAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZkljdXJsX211bHRpX2Fzc2lnbigzKVxmUCAqLwogCiAuZmkKIFRoZSBjYWxsYmFjayBNVVNUIHJldHVybiAwLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc3RyZXJyb3IuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3N0cmVycm9yLjMKaW5kZXggNDBkMDk3NC4uYjVhYTdhZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc3RyZXJyb3IuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zdHJlcnJvci4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3RpbWVvdXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3RpbWVvdXQuMwppbmRleCBmMGM5MDc5Li43MWIyYjMyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV90aW1lb3V0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfdGltZW91dC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjksMTIgKzI5LDEyIEBACiAuU0ggREVTQ1JJUFRJT04KIAogQW4gYXBwbGljYXRpb24gdXNpbmcgdGhlIGxpYmN1cmwgbXVsdGkgaW50ZXJmYWNlIHNob3VsZCBjYWxsCi1cZkJjdXJsX211bHRpX3RpbWVvdXQoMylcZlAgdG8gZmlndXJlIG91dCBob3cgbG9uZyBpdCBzaG91bGQgd2FpdCBmb3Igc29ja2V0CitcZkljdXJsX211bHRpX3RpbWVvdXQoMylcZlAgdG8gZmlndXJlIG91dCBob3cgbG9uZyBpdCBzaG91bGQgd2FpdCBmb3Igc29ja2V0CiBhY3Rpb25zIFwtIGF0IG1vc3QgXC0gYmVmb3JlIHByb2NlZWRpbmcuCiAKIFByb2NlZWRpbmcgbWVhbnMgZWl0aGVyIGRvaW5nIHRoZSBzb2NrZXQtc3R5bGUgdGltZW91dCBhY3Rpb246IGNhbGwgdGhlCi1cZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZCc29ja2ZkXGZQIGFyZ3VtZW50IHNldAotdG8gQ1VSTF9TT0NLRVRfVElNRU9VVCwgb3IgY2FsbCBcZkJjdXJsX211bHRpX3BlcmZvcm0oMylcZlAgaWYgeW91J3JlIHVzaW5nCitcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZCc29ja2ZkXGZQIGFyZ3VtZW50IHNldAordG8gQ1VSTF9TT0NLRVRfVElNRU9VVCwgb3IgY2FsbCBcZkljdXJsX211bHRpX3BlcmZvcm0oMylcZlAgaWYgeW91J3JlIHVzaW5nCiB0aGUgc2ltcGxlciBhbmQgb2xkZXIgbXVsdGkgaW50ZXJmYWNlIGFwcHJvYWNoLgogCiBUaGUgdGltZW91dCB2YWx1ZSByZXR1cm5lZCBpbiB0aGUgbG9uZyBcZkJ0aW1lb3V0XGZQIHBvaW50cyB0bywgaXMgaW4gbnVtYmVyCkBAIC02OCw5ICs2OCw5IEBACiAuU0ggIlJFVFVSTiBWQUxVRSIKIFRoZSBzdGFuZGFyZCBDVVJMTWNvZGUgZm9yIG11bHRpIGludGVyZmFjZSBlcnJvciBjb2Rlcy4KIC5TSCAiVFlQSUNBTCBVU0FHRSIKLUNhbGwgXGZCY3VybF9tdWx0aV90aW1lb3V0KDMpXGZQLCB0aGVuIHdhaXQgZm9yIGFjdGlvbiBvbiB0aGUgc29ja2V0cy4gWW91Ci1maWd1cmUgb3V0IHdoaWNoIHNvY2tldHMgdG8gd2FpdCBmb3IgYnkgY2FsbGluZyBcZkJjdXJsX211bHRpX2Zkc2V0KDMpXGZQIG9yCi1ieSBhIHByZXZpb3VzIGNhbGwgdG8gXGZCY3VybF9tdWx0aV9zb2NrZXQoMylcZlAuCitDYWxsIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUCwgdGhlbiB3YWl0IGZvciBhY3Rpb24gb24gdGhlIHNvY2tldHMuIFlvdQorZmlndXJlIG91dCB3aGljaCBzb2NrZXRzIHRvIHdhaXQgZm9yIGJ5IGNhbGxpbmcgXGZJY3VybF9tdWx0aV9mZHNldCgzKVxmUCBvcgorYnkgYSBwcmV2aW91cyBjYWxsIHRvIFxmSWN1cmxfbXVsdGlfc29ja2V0KDMpXGZQLgogLlNIIEFWQUlMQUJJTElUWQogVGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgaW4gbGliY3VybCA3LjE1LjQuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfd2FpdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfd2FpdC4zCmluZGV4IDQ1YzJlOGMuLjlmMTVjNWYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3dhaXQuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV93YWl0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03MSw2ICs3MSw0OCBAQAogLklQIENVUkxfV0FJVF9QT0xMT1VUCiBCaXQgZmxhZyB0byBjdXJsX3dhaXRmZC5ldmVudHMgaW5kaWNhdGluZyB0aGUgc29ja2V0IHNob3VsZCBwb2xsIG9uIHdyaXRlCiBldmVudHMgc3VjaCBhcyB0aGUgc29ja2V0IGJlaW5nIGNsZWFyIHRvIHdyaXRlIHdpdGhvdXQgYmxvY2tpbmcuCisuU0ggRVhBTVBMRQorLm5mCitDVVJMICplYXN5X2hhbmRsZTsKK0NVUkxNICptdWx0aV9oYW5kbGU7CisKKy8qIGFkZCB0aGUgaW5kaXZpZHVhbCBlYXN5IGhhbmRsZSAqLworY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgZWFzeV9oYW5kbGUpOworCitkbyB7CisgIENVUkxNY29kZSBtYzsKKyAgaW50IG51bWZkczsKKworICBtYyA9IGN1cmxfbXVsdGlfcGVyZm9ybShtdWx0aV9oYW5kbGUsICZzdGlsbF9ydW5uaW5nKTsKKworICBpZihtYyA9PSBDVVJMTV9PSyApIHsKKyAgICAvKiB3YWl0IGZvciBhY3Rpdml0eSwgdGltZW91dCBvciAibm90aGluZyIgKi8KKyAgICBtYyA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aV9oYW5kbGUsIE5VTEwsIDAsIDEwMDAsICZudW1mZHMpOworICB9CisKKyAgaWYobWMgIT0gQ1VSTE1fT0spIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOworICAgIGJyZWFrOworICB9CisKKyAgLyogJ251bWZkcycgYmVpbmcgemVybyBtZWFucyBlaXRoZXIgYSB0aW1lb3V0IG9yIG5vIGZpbGUgZGVzY3JpcHRvcnMgdG8KKyAgICAgd2FpdCBmb3IuIFRyeSB0aW1lb3V0IG9uIGZpcnN0IG9jY3VycmVuY2UsIHRoZW4gYXNzdW1lIG5vIGZpbGUKKyAgICAgZGVzY3JpcHRvcnMgYW5kIG5vIGZpbGUgZGVzY3JpcHRvcnMgdG8gd2FpdCBmb3IgbWVhbnMgd2FpdCBmb3IgMTAwCisgICAgIG1pbGxpc2Vjb25kcy4gKi8KKworICBpZighbnVtZmRzKSB7CisgICAgcmVwZWF0cysrOyAvKiBjb3VudCBudW1iZXIgb2YgcmVwZWF0ZWQgemVybyBudW1mZHMgKi8KKyAgICBpZihyZXBlYXRzID4gMSkgeworICAgICAgV0FJVE1TKDEwMCk7IC8qIHNsZWVwIDEwMCBtaWxsaXNlY29uZHMgKi8KKyAgICB9CisgIH0KKyAgZWxzZQorICAgIHJlcGVhdHMgPSAwOworCit9IHdoaWxlKHN0aWxsX3J1bm5pbmcpOworCitjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUobXVsdGlfaGFuZGxlLCBlYXN5X2hhbmRsZSk7CisuZmkKIC5TSCBSRVRVUk4gVkFMVUUKIENVUkxNY29kZSB0eXBlLCBnZW5lcmFsIGxpYmN1cmwgbXVsdGkgaW50ZXJmYWNlIGVycm9yIGNvZGUuIFNlZQogXGZJbGliY3VybC1lcnJvcnMoMylcZlAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2NsZWFudXAuMyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2NsZWFudXAuMwppbmRleCAzYWYxNzA3Li4wYjI2NWU4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfY2xlYW51cC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2luaXQuMwppbmRleCA0ODMzYThhLi41NDViYTAzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKaW5kZXggYzE5Njc0My4uNTVlMDZmMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjgsNyArNjgsOCBAQAogU1NMIHNlc3Npb24gSURzIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0aGUgZWFzeSBoYW5kbGVzIHVzaW5nIHRoaXMgc2hhcmVkCiBvYmplY3QuIFRoaXMgd2lsbCByZWR1Y2UgdGhlIHRpbWUgc3BlbnQgaW4gdGhlIFNTTCBoYW5kc2hha2Ugd2hlbiByZWNvbm5lY3RpbmcKIHRvIHRoZSBzYW1lIHNlcnZlci4gTm90ZSBTU0wgc2Vzc2lvbiBJRHMgYXJlIHJldXNlZCB3aXRoaW4gdGhlIHNhbWUgZWFzeSBoYW5kbGUKLWJ5IGRlZmF1bHQuCitieSBkZWZhdWx0LiBOb3RlIHRoaXMgc3ltYm9sIHdhcyBhZGRlZCBpbiA3LjEwLjMgYnV0IHdhcyBub3QgaW1wbGVtZW50ZWQgdW50aWwKKzcuMjMuMC4KIC5SRQogLklQIENVUkxTSE9QVF9VTlNIQVJFCiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBvcHBvc2l0ZSBvZiBcZklDVVJMU0hPUFRfU0hBUkVcZlAuIEl0IHNwZWNpZmllcyB0aGF0CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9zdHJlcnJvci4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc3RyZXJyb3IuMwppbmRleCBmMWJjMzk4Li5mYWE1Mjk5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9zdHJlcnJvci4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX3N0cmVycm9yLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfc2xpc3RfYXBwZW5kLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMwppbmRleCA1Mjk1NjBlLi5mZWQ4MDI5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDcgKzM2LDcgQEAKIHN0cmluZy4KIAogVGhlIGxpc3Qgc2hvdWxkIGJlIGZyZWVkIGFnYWluIChhZnRlciB1c2FnZSkgd2l0aAotXGZCY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUC4KK1xmSWN1cmxfc2xpc3RfZnJlZV9hbGwoMylcZlAuCiAuU0ggUkVUVVJOIFZBTFVFCiBBIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZCBpZiBhbnl0aGluZyB3ZW50IHdyb25nLCBvdGhlcndpc2UgdGhlIG5ldyBsaXN0CiBwb2ludGVyIGlzIHJldHVybmVkLgpAQCAtNDYsNiArNDYsMTAgQEAKICBzdHJ1Y3QgY3VybF9zbGlzdCAqc2xpc3Q9TlVMTDsKIAogIHNsaXN0ID0gY3VybF9zbGlzdF9hcHBlbmQoc2xpc3QsICJwcmFnbWE6Iik7CisKKyBpZiAoc2xpc3QgPT0gTlVMTCkKKyAgIHJldHVybiAtMTsKKwogIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIHNsaXN0KTsKIAogIGN1cmxfZWFzeV9wZXJmb3JtKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9mcmVlX2FsbC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2xpc3RfZnJlZV9hbGwuMwppbmRleCBmYWIzZDYwLi4zMWQ4MWRhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9mcmVlX2FsbC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3NsaXN0X2ZyZWVfYWxsLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfc3RyZXF1YWwuMyBiL2RvY3MvbGliY3VybC9jdXJsX3N0cmVxdWFsLjMKaW5kZXggY2U1NzVkNy4uYTc0NWY3ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfc3RyZXF1YWwuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9zdHJlcXVhbC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3VuZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF91bmVzY2FwZS4zCmluZGV4IDhkMTY4NTIuLjA2MWZiYmYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX3VuZXNjYXBlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfdW5lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw3ICsyNSw3IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX3VuZXNjYXBlKCBjaGFyICoiIHVybCAiLCBpbnQgImxlbmd0aCAiICk7IgorLkJJICJjaGFyICpjdXJsX3VuZXNjYXBlKCBjb25zdCBjaGFyICoiIHVybCAiLCBpbnQgImxlbmd0aCAiICk7IgogLmFkCiAuU0ggREVTQ1JJUFRJT04KIE9ic29sZXRlIGZ1bmN0aW9uLiBVc2UgXGZJY3VybF9lYXN5X3VuZXNjYXBlKDMpXGZQIGluc3RlYWQhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uLjMgYi9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uLjMKaW5kZXggMDM5MjJjOS4uNGFjZDczYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfdmVyc2lvbi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb24uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uX2luZm8uMyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCmluZGV4IGU5ZDVhYjcuLjUyNDRjMjEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc2LDkgKzc2LDkgQEAKIC5maQogCiBcZklhZ2VcZlAgZGVzY3JpYmVzIHdoYXQgdGhlIGFnZSBvZiB0aGlzIHN0cnVjdCBpcy4gVGhlIG51bWJlciBkZXBlbmRzIG9uIGhvdwotbmV3IHRoZSBsaWJjdXJsIHlvdSdyZSB1c2luZyBpcy4gWW91IGFyZSBob3dldmVyIGd1YXJhbnRlZWQgdG8gZ2V0IGEgc3RydWN0IHRoYXQgeW91Ci1oYXZlIGEgbWF0Y2hpbmcgc3RydWN0IGZvciBpbiB0aGUgaGVhZGVyLCBhcyB5b3UgdGVsbCBsaWJjdXJsIHlvdXIgImFnZSIgd2l0aAotdGhlIGlucHV0IGFyZ3VtZW50LgorbmV3IHRoZSBsaWJjdXJsIHlvdSdyZSB1c2luZyBpcy4gWW91IGFyZSBob3dldmVyIGd1YXJhbnRlZWQgdG8gZ2V0IGEgc3RydWN0Cit0aGF0IHlvdSBoYXZlIGEgbWF0Y2hpbmcgc3RydWN0IGZvciBpbiB0aGUgaGVhZGVyLCBhcyB5b3UgdGVsbCBsaWJjdXJsIHlvdXIKKyJhZ2UiIHdpdGggdGhlIGlucHV0IGFyZ3VtZW50LgogCiBcZkl2ZXJzaW9uXGZQIGlzIGp1c3QgYW4gYXNjaWkgc3RyaW5nIGZvciB0aGUgbGliY3VybCB2ZXJzaW9uLgogCkBAIC0xNDksNiArMTQ5LDEwIEBACiAuSVAgQ1VSTF9WRVJTSU9OX1VOSVhfU09DS0VUUwogbGliY3VybCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBVbml4IGRvbWFpbiBzb2NrZXRzLgogKEFkZGVkIGluIDcuNDAuMCkKKy5JUCBDVVJMX1ZFUlNJT05fUFNMCitsaWJjdXJsIHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIE1vemlsbGEncyBQdWJsaWMgU3VmZml4IExpc3QuIFRoaXMgbWFrZXMKK2xpYmN1cmwgaWdub3JlIGNvb2tpZXMgd2l0aCBhIGRvbWFpbiB0aGF0J3Mgb24gdGhlIGxpc3QuCisoQWRkZWQgaW4gNy40Ny4wKQogLlJFCiBcZklzc2xfdmVyc2lvblxmUCBpcyBhbiBBU0NJSSBzdHJpbmcgZm9yIHRoZSBPcGVuU1NMIHZlcnNpb24gdXNlZC4gSWYgbGliY3VybAogaGFzIG5vIFNTTCBzdXBwb3J0LCB0aGlzIGlzIE5VTEwuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvaW5kZXguaHRtbCBiL2RvY3MvbGliY3VybC9pbmRleC5odG1sCmluZGV4IGNhNzczMTMuLmY0NmNjODUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9pbmRleC5odG1sCisrKyBiL2RvY3MvbGliY3VybC9pbmRleC5odG1sCkBAIC0xNyw2ICsxNyw3IEBACiA8YnI+PGEgaHJlZj0ibGliY3VybC1zaGFyZS5odG1sIj5saWJjdXJsLXNoYXJlPC9hPgogPGJyPjxhIGhyZWY9ImxpYmN1cmwtZXJyb3JzLmh0bWwiPmxpYmN1cmwtZXJyb3JzPC9hPgogPGJyPjxhIGhyZWY9ImxpYmN1cmwtdHV0b3JpYWwuaHRtbCI+bGliY3VybC10dXRvcmlhbDwvYT4KKzxicj48YSBocmVmPSJsaWJjdXJsLXRocmVhZC5odG1sIj5saWJjdXJsLXRocmVhZDwvYT4KIAogPEgyPkxpYnJhcnkgRnVuY3Rpb25zIChBLVopPC9IMj4KIDxhIGhyZWY9ImN1cmxfZWFzeV9jbGVhbnVwLmh0bWwiPmN1cmxfZWFzeV9jbGVhbnVwPC9BPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtZWFzeS4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtZWFzeS4zCmluZGV4IGY4NTA2YTIuLmQxMTI2MzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9saWJjdXJsLWVhc3kuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lYXN5LjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtZXJyb3JzLjMgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMwppbmRleCAwNzA5MWI1Li4wYTIxYTc1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc0LDcgKzc0LDcgQEAKIHJlcGx5LiBUaGlzIGVycm9yIGNvZGUgaW5kaWNhdGVzIHRoYXQgYW4gdW5leHBlY3RlZCBjb2RlIHdhcyByZXR1cm5lZC4KIC5JUCAiQ1VSTEVfRlRQX0FDQ0VQVF9USU1FT1VUICgxMikiCiBEdXJpbmcgYW4gYWN0aXZlIEZUUCBzZXNzaW9uIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gY29ubmVjdCwgdGhlCi1cZklDVVJMT1BUX0FDQ0VQVFRJTU9VVF9NUygzKVxmUCAob3IgdGhlIGludGVybmFsIGRlZmF1bHQpIHRpbWVvdXQgZXhwaXJlZC4KK1xmSUNVUkxPUFRfQUNDRVBUVElNRU9VVF9NUygzKVxmUCAob3IgdGhlIGludGVybmFsIGRlZmF1bHQpIHRpbWVvdXQgZXhwaXJlZC4KIC5JUCAiQ1VSTEVfRlRQX1dFSVJEX1BBU1ZfUkVQTFkgKDEzKSIKIGxpYmN1cmwgZmFpbGVkIHRvIGdldCBhIHNlbnNpYmxlIHJlc3VsdCBiYWNrIGZyb20gdGhlIHNlcnZlciBhcyBhIHJlc3BvbnNlIHRvCiBlaXRoZXIgYSBQQVNWIG9yIGEgRVBTViBjb21tYW5kLiBUaGUgc2VydmVyIGlzIGZsYXdlZC4KQEAgLTI0Nyw2ICsyNDcsMTIgQEAKIC5JUCAiQ1VSTEVfTk9fQ09OTkVDVElPTl9BVkFJTEFCTEUgKDg5KSIKIChGb3IgaW50ZXJuYWwgdXNlIG9ubHksIHdpbGwgbmV2ZXIgYmUgcmV0dXJuZWQgYnkgbGliY3VybCkgTm8gY29ubmVjdGlvbgogYXZhaWxhYmxlLCB0aGUgc2Vzc2lvbiB3aWxsIGJlIHF1ZXVlZC4gKGFkZGVkIGluIDcuMzAuMCkKKy5JUCAiQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIICg5MCkiCitGYWlsZWQgdG8gbWF0Y2ggdGhlIHBpbm5lZCBrZXkgc3BlY2lmaWVkIHdpdGggXGZJQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkoMylcZlAuCisuSVAgIkNVUkxFX1NTTF9JTlZBTElEQ0VSVFNUQVRVUyAoOTEpIgorU3RhdHVzIHJldHVybmVkIGZhaWx1cmUgd2hlbiBhc2tlZCB3aXRoIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUygzKVxmUC4KKy5JUCAiQ1VSTEVfSFRUUDJfU1RSRUFNICg5MikiCitTdHJlYW0gZXJyb3IgaW4gdGhlIEhUVFAvMiBmcmFtaW5nIGxheWVyLgogLklQICJDVVJMRV9PQlNPTEVURSoiCiBUaGVzZSBlcnJvciBjb2RlcyB3aWxsIG5ldmVyIGJlIHJldHVybmVkLiBUaGV5IHdlcmUgdXNlZCBpbiBhbiBvbGQgbGliY3VybAogdmVyc2lvbiBhbmQgYXJlIGN1cnJlbnRseSB1bnVzZWQuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvbGliY3VybC1tdWx0aS4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtbXVsdGkuMwppbmRleCBmNzdjMzY2Li5hN2YzZGJiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC1tdWx0aS4zCisrKyBiL2RvY3MvbGliY3VybC9saWJjdXJsLW11bHRpLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MSwyOCArNTEsMjcgQEAKIFxmSWN1cmxfbXVsdGlfaW5pdCgzKVxmUC4gVGhpcyBoYW5kbGUgaXMgdGhlbiB1c2VkIGFzIGlucHV0IHRvIGFsbCBmdXJ0aGVyCiBjdXJsX211bHRpXyogZnVuY3Rpb25zLgogCi1XaXRoIGEgbXVsdGkgaGFuZGxlIGFuZCB0aGUgbXVsdGkgaW50ZXJmYWNlIHlvdSBjYW4gZG8gYW55IGFtb3VudCBvZgotc2ltdWx0YW5lb3VzIHRyYW5zZmVycyBpbiBwYXJhbGxlbC4gRWFjaCBzaW5nbGUgdHJhbnNmZXIgaXMgYnVpbHQgdXAgYXJvdW5kIGFuCi1lYXN5IGhhbmRsZS4gWW91IG11c3QgY3JlYXRlIHRoZSBlYXN5IGhhbmRsZXMgeW91IG5lZWQsIGFuZCBzZXR1cCB0aGUKLWFwcHJvcHJpYXRlIG9wdGlvbnMgZm9yIGVhY2ggZWFzeSBoYW5kbGUsIGFzIG91dGxpbmVkIGluIHRoZSBcZklsaWJjdXJsKDMpXGZQCi1tYW4gcGFnZSwgdXNpbmcgXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KK1dpdGggYSBtdWx0aSBoYW5kbGUgYW5kIHRoZSBtdWx0aSBpbnRlcmZhY2UgeW91IGNhbiBkbyBzZXZlcmFsIHNpbXVsdGFuZW91cwordHJhbnNmZXJzIGluIHBhcmFsbGVsLiBFYWNoIHNpbmdsZSB0cmFuc2ZlciBpcyBidWlsdCB1cCBhcm91bmQgYW4gZWFzeQoraGFuZGxlLiBZb3UgY3JlYXRlIGFsbCB0aGUgZWFzeSBoYW5kbGVzIHlvdSBuZWVkLCBhbmQgc2V0dXAgdGhlIGFwcHJvcHJpYXRlCitvcHRpb25zIGZvciBlYWNoIGVhc3kgaGFuZGxlIHVzaW5nIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAuCiAKIFRoZXJlIGFyZSB0d28gZmxhdm91cnMgb2YgdGhlIG11bHRpIGludGVyZmFjZSwgdGhlIHNlbGVjdCgpIG9yaWVudGVkIG9uZSBhbmQKLXRoZSBldmVudCBiYXNlZCBvbmUgd2UgY2FsbGVkIG11bHRpX3NvY2tldC4gWW91IHdpbGwgYmVuZWZpdCBmcm9tIHJlYWRpbmcKLXRocm91Z2ggdGhlIGRlc2NyaXB0aW9uIG9mIGJvdGggdmVyc2lvbnMgdG8gZnVsbCB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgYW5kCit0aGUgZXZlbnQgYmFzZWQgb25lIHdlIGNhbGwgbXVsdGlfc29ja2V0LiBZb3Ugd2lsbCBiZW5lZml0IGZyb20gcmVhZGluZwordGhyb3VnaCB0aGUgZGVzY3JpcHRpb24gb2YgYm90aCB2ZXJzaW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgYW5kCiBkaWZmZXJlbnRpYXRlLiBXZSBzdGFydCBvdXQgd2l0aCB0aGUgc2VsZWN0KCkgb3JpZW50ZWQgdmVyc2lvbi4KIAotV2hlbiBhbiBlYXN5IGhhbmRsZSBpcyBzZXR1cCBmb3IgYSB0cmFuc2ZlciwgdGhlbiBpbnN0ZWFkIG9mIHVzaW5nCitXaGVuIGFuIGVhc3kgaGFuZGxlIGlzIHNldHVwIGFuZCByZWFkeSBmb3IgdHJhbnNmZXIsIHRoZW4gaW5zdGVhZCBvZiB1c2luZwogXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgbGlrZSB3aGVuIHVzaW5nIHRoZSBlYXN5IGludGVyZmFjZSBmb3IgdHJhbnNmZXJzLAogeW91IHNob3VsZCBhZGQgdGhlIGVhc3kgaGFuZGxlIHRvIHRoZSBtdWx0aSBoYW5kbGUgd2l0aAotXGZJY3VybF9tdWx0aV9hZGRfaGFuZGxlKDMpXGZQLiBUaGUgbXVsdGkgaGFuZGxlIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhCi1cJ211bHRpIHN0YWNrXCcgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGF0IGl0IG1heSBob2xkIGEgbGFyZ2UgYW1vdW50IG9mIGVhc3kKLWhhbmRsZXMuCitcZkljdXJsX211bHRpX2FkZF9oYW5kbGUoMylcZlAuIFlvdSBjYW4gYWRkIG1vcmUgZWFzeSBoYW5kbGVzIHRvIGEgbXVsdGkKK2hhbmRsZSBhdCBhbnkgcG9pbnQsIGV2ZW4gaWYgb3RoZXIgdHJhbnNmZXJzIGFyZSBhbHJlYWR5IHJ1bm5pbmcuCiAKIFNob3VsZCB5b3UgY2hhbmdlIHlvdXIgbWluZCwgdGhlIGVhc3kgaGFuZGxlIGlzIGFnYWluIHJlbW92ZWQgZnJvbSB0aGUgbXVsdGkKIHN0YWNrIHVzaW5nIFxmSWN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgzKVxmUC4gT25jZSByZW1vdmVkIGZyb20gdGhlIG11bHRpCiBoYW5kbGUsIHlvdSBjYW4gYWdhaW4gdXNlIG90aGVyIGVhc3kgaW50ZXJmYWNlIGZ1bmN0aW9ucyBsaWtlCi1cZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBvbiB0aGUgaGFuZGxlIG9yIHdoYXRldmVyIHlvdSB0aGluayBpcyBuZWNlc3NhcnkuCitcZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBvbiB0aGUgaGFuZGxlIG9yIHdoYXRldmVyIHlvdSB0aGluayBpcworbmVjZXNzYXJ5LiBZb3UgY2FuIHJlbW92ZSBoYW5kbGVzIGF0IGFueSBwb2ludCBpbiB0aW1lIGR1cmluZyB0cmFuc2ZlcnMuCiAKIEFkZGluZyB0aGUgZWFzeSBoYW5kbGUgdG8gdGhlIG11bHRpIGhhbmRsZSBkb2VzIG5vdCBzdGFydCB0aGUgdHJhbnNmZXIuCiBSZW1lbWJlciB0aGF0IG9uZSBvZiB0aGUgbWFpbiBpZGVhcyB3aXRoIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGxldCB5b3VyCkBAIC04NCwxNiArODMsMTYgQEAKIG1heSBiZSBhbGwsIGl0IG1heSBiZSBub25lLiBXaGVuIHRoZXJlJ3Mgbm90aGluZyBtb3JlIHRvIGRvIGZvciBub3csIGl0CiByZXR1cm5zIGJhY2sgdG8gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uCiAKLVlvdXIgYXBwbGljYXRpb24gY2FuIGFjcXVpcmUga25vd2xlZGdlIGZyb20gbGliY3VybCB3aGVuIGl0IHdvdWxkIGxpa2UgdG8gZ2V0Ci1pbnZva2VkIHRvIHRyYW5zZmVyIGRhdGEsIHNvIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gYnVzeS1sb29wIGFuZCBjYWxsIHRoYXQKLVxmSWN1cmxfbXVsdGlfcGVyZm9ybSgzKVxmUCBsaWtlIGNyYXp5LiBcZkljdXJsX211bHRpX2Zkc2V0KDMpXGZQIG9mZmVycyBhbgotaW50ZXJmYWNlIHVzaW5nIHdoaWNoIHlvdSBjYW4gZXh0cmFjdCBmZF9zZXRzIGZyb20gbGliY3VybCB0byB1c2UgaW4gc2VsZWN0KCkKLW9yIHBvbGwoKSBjYWxscyBpbiBvcmRlciB0byBnZXQgdG8ga25vdyB3aGVuIHRoZSB0cmFuc2ZlcnMgaW4gdGhlIG11bHRpIHN0YWNrCi1taWdodCBuZWVkIGF0dGVudGlvbi4gVGhpcyBhbHNvIG1ha2VzIGl0IHZlcnkgZWFzeSBmb3IgeW91ciBwcm9ncmFtIHRvIHdhaXQKLWZvciBpbnB1dCBvbiB5b3VyIG93biBwcml2YXRlIGZpbGUgZGVzY3JpcHRvcnMgYXQgdGhlIHNhbWUgdGltZSBvciBwZXJoYXBzCi10aW1lb3V0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgc2hvdWxkIHlvdSB3YW50IHRoYXQuIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUAotYWxzbyBoZWxwcyB5b3Ugd2l0aCBwcm92aWRpbmcgYSBzdWl0YWJsZSB0aW1lb3V0IHBlcmlvZCBmb3IgeW91ciBzZWxlY3QoKQotY2FsbC4KK1lvdXIgYXBwbGljYXRpb24gZXh0cmFjdHMgaW5mbyBmcm9tIGxpYmN1cmwgYWJvdXQgd2hlbiBpdCB3b3VsZCBsaWtlIHRvIGdldAoraW52b2tlZCB0byB0cmFuc2ZlciBkYXRhIG9yIGRvIG90aGVyIHdvcmsuIFRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IGlzIHRvIHVzZQorXGZJY3VybF9tdWx0aV93YWl0KDMpXGZQIHRoYXQgd2lsbCBoZWxwIHlvdSB3YWl0IHVudGlsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQKK2NhbGwgbGliY3VybCBhZ2Fpbi4gVGhlIG9sZGVyIEFQSSB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGlzCitcZkljdXJsX211bHRpX2Zkc2V0KDMpXGZQIHRoYXQgZXh0cmFjdHMgZmRfc2V0cyBmcm9tIGxpYmN1cmwgdG8gdXNlIGluCitzZWxlY3QoKSBvciBwb2xsKCkgY2FsbHMgaW4gb3JkZXIgdG8gZ2V0IHRvIGtub3cgd2hlbiB0aGUgdHJhbnNmZXJzIGluIHRoZQorbXVsdGkgc3RhY2sgbWlnaHQgbmVlZCBhdHRlbnRpb24uIEJvdGggdGhlc2UgQVBJcyBhbGxvdyBmb3IgeW91ciBwcm9ncmFtIHRvCit3YWl0IGZvciBpbnB1dCBvbiB5b3VyIG93biBwcml2YXRlIGZpbGUgZGVzY3JpcHRvcnMgYXQgdGhlIHNhbWUgdGltZQorXGZJY3VybF9tdWx0aV90aW1lb3V0KDMpXGZQIGFsc28gaGVscHMgeW91IHdpdGggcHJvdmlkaW5nIGEgc3VpdGFibGUgdGltZW91dAorcGVyaW9kIGZvciB5b3VyIHNlbGVjdCgpIGNhbGxzLgogCiBcZkljdXJsX211bHRpX3BlcmZvcm0oMylcZlAgc3RvcmVzIHRoZSBudW1iZXIgb2Ygc3RpbGwgcnVubmluZyB0cmFuc2ZlcnMgaW4KIG9uZSBvZiBpdHMgaW5wdXQgYXJndW1lbnRzLCBhbmQgYnkgcmVhZGluZyB0aGF0IHlvdSBjYW4gZmlndXJlIG91dCB3aGVuIGFsbApAQCAtMTE0LDkgKzExMyw5IEBACiBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCwgb3IgcG9zc2libHkgc2V0IG5ldyBvcHRpb25zIHRvIGl0IGFuZCBhZGQgaXQgYWdhaW4KIHdpdGggXGZJY3VybF9tdWx0aV9hZGRfaGFuZGxlKDMpXGZQIHRvIHN0YXJ0IGFub3RoZXIgdHJhbnNmZXIuCiAKLVdoZW4gYWxsIHRyYW5zZmVycyBpbiB0aGUgbXVsdGkgc3RhY2sgYXJlIGRvbmUsIGNsZWFudXAgdGhlIG11bHRpIGhhbmRsZSB3aXRoCitXaGVuIGFsbCB0cmFuc2ZlcnMgaW4gdGhlIG11bHRpIHN0YWNrIGFyZSBkb25lLCBjbG9zZSB0aGUgbXVsdGkgaGFuZGxlIHdpdGgKIFxmSWN1cmxfbXVsdGlfY2xlYW51cCgzKVxmUC4gQmUgY2FyZWZ1bCBhbmQgcGxlYXNlIG5vdGUgdGhhdCB5b3UgXGZCTVVTVFxmUAotaW52b2tlIHNlcGFyYXRlIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGNhbGxzIG9uIGV2ZXJ5IHNpbmdsZSBlYXN5IGhhbmRsZQoraW52b2tlIHNlcGFyYXRlIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGNhbGxzIGZvciBldmVyeSBzaW5nbGUgZWFzeSBoYW5kbGUKIHRvIGNsZWFuIHRoZW0gdXAgcHJvcGVybHkuCiAKIElmIHlvdSB3YW50IHRvIHJlLXVzZSBhbiBlYXN5IGhhbmRsZSB0aGF0IHdhcyBhZGRlZCB0byB0aGUgbXVsdGkgaGFuZGxlIGZvcgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtc2hhcmUuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXNoYXJlLjMKaW5kZXggYjQ2ZWVkYS4uYzdjZDY1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtc2hhcmUuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1zaGFyZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9saWJjdXJsLXRocmVhZC4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtdGhyZWFkLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5Y2E4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXRocmVhZC4zCkBAIC0wLDAgKzEsMTA1IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBsaWJjdXJsLXRocmVhZCAzICIxMyBKdWwgMjAxNSIgImxpYmN1cmwiICJsaWJjdXJsIHRocmVhZCBzYWZldHkiCisuU0ggTkFNRQorbGliY3VybC10aHJlYWQgXC0gbGliY3VybCB0aHJlYWQgc2FmZXR5CisuU0ggIk11bHRpLXRocmVhZGluZyB3aXRoIGxpYmN1cmwiCitsaWJjdXJsIGlzIHRocmVhZCBzYWZlIGJ1dCBoYXMgbm8gaW50ZXJuYWwgdGhyZWFkIHN5bmNocm9uaXphdGlvbi4gWW91IG1heSBoYXZlCit0byBwcm92aWRlIHlvdXIgb3duIGxvY2tpbmcgc2hvdWxkIHlvdSBtZWV0IGFueSBvZiB0aGUgdGhyZWFkIHNhZmV0eSBleGNlcHRpb25zCitiZWxvdy4KKworXGZCSGFuZGxlcy5cZlAgWW91IG11c3QgXGZCbmV2ZXJcZlAgc2hhcmUgdGhlIHNhbWUgaGFuZGxlIGluIG11bHRpcGxlIHRocmVhZHMuCitZb3UgY2FuIHBhc3MgdGhlIGhhbmRsZXMgYXJvdW5kIGFtb25nIHRocmVhZHMsIGJ1dCB5b3UgbXVzdCBuZXZlciB1c2UgYSBzaW5nbGUKK2hhbmRsZSBmcm9tIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGF0IGFueSBnaXZlbiB0aW1lLgorCitcZkJTaGFyZWQgb2JqZWN0cy5cZlAgWW91IGNhbiBzaGFyZSBjZXJ0YWluIGRhdGEgYmV0d2VlbiBtdWx0aXBsZSBoYW5kbGVzIGJ5Cit1c2luZyB0aGUgc2hhcmUgaW50ZXJmYWNlIGJ1dCB5b3UgbXVzdCBwcm92aWRlIHlvdXIgb3duIGxvY2tpbmcgYW5kIHNldAorXGZJY3VybF9zaGFyZV9zZXRvcHQoMylcZlAgQ1VSTFNIT1BUX0xPQ0tGVU5DIGFuZCBDVVJMU0hPUFRfVU5MT0NLRlVOQy4KKy5TSCBUTFMKK0lmIHlvdSBhcmUgYWNjZXNzaW5nIEhUVFBTIG9yIEZUUFMgVVJMcyBpbiBhIG11bHRpLXRocmVhZGVkIG1hbm5lciwgeW91IGFyZQordGhlbiBvZiBjb3Vyc2UgdXNpbmcgdGhlIHVuZGVybHlpbmcgU1NMIGxpYnJhcnkgbXVsdGktdGhyZWFkZWQgYW5kIHRob3NlIGxpYnMKK21pZ2h0IGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cyBvbiB0aGlzIGlzc3VlLiAgWW91IG1heSBuZWVkIHRvIHByb3ZpZGUgb25lCitvciB0d28gZnVuY3Rpb25zIHRvIGFsbG93IGl0IHRvIGZ1bmN0aW9uIHByb3Blcmx5OgorLklQIE9wZW5TU0wKK09wZW5TU0wgMS4xLjAgImNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMgcHJvdmlkZWQgdGhhdAorc3VwcG9ydCBmb3IgdGhlIHVuZGVybHlpbmcgT1MgdGhyZWFkaW5nIEFQSSBpcyBidWlsdC1pbi4iCisKK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFubWFzdGVyL2NyeXB0by90aHJlYWRzLmh0bWwjREVTQ1JJUFRJT04KKworT3BlblNTTCA8PSAxLjAuMiB0aGUgdXNlciBtdXN0IHNldCBjYWxsYmFja3MuCisKK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFuMS4wLjIvY3J5cHRvL3RocmVhZHMuaHRtbCNERVNDUklQVElPTgorCitodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2Mvb3BlbnNzbHRocmVhZGxvY2suaHRtbAorCisuSVAgR251VExTCitodHRwOi8vZ251dGxzLm9yZy9tYW51YWwvaHRtbF9ub2RlL1RocmVhZC1zYWZldHkuaHRtbAorLklQIE5TUwordGhyZWFkLXNhZmUgYWxyZWFkeSB3aXRob3V0IGFueXRoaW5nIHJlcXVpcmVkLgorLklQIFBvbGFyU1NMCitSZXF1aXJlZCBhY3Rpb25zIHVua25vd24uCisuSVAgeWFzc2wKK1JlcXVpcmVkIGFjdGlvbnMgdW5rbm93bi4KKy5JUCBheFRMUworUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgorLklQIFNlY3VyZS1UcmFuc3BvcnQKK1RoZSBlbmdpbmUgaXMgdXNlZCBieSBsaWJjdXJsIGluIGEgd2F5IHRoYXQgaXMgZnVsbHkgdGhyZWFkLXNhZmUuCisuSVAgV2luU1NMCitUaGUgZW5naW5lIGlzIHVzZWQgYnkgbGliY3VybCBpbiBhIHdheSB0aGF0IGlzIGZ1bGx5IHRocmVhZC1zYWZlLgorLklQIHdvbGZTU0wKK1RoZSBlbmdpbmUgaXMgdXNlZCBieSBsaWJjdXJsIGluIGEgd2F5IHRoYXQgaXMgZnVsbHkgdGhyZWFkLXNhZmUuCisuSVAgQm9yaW5nU1NMCitUaGUgZW5naW5lIGlzIHVzZWQgYnkgbGliY3VybCBpbiBhIHdheSB0aGF0IGlzIGZ1bGx5IHRocmVhZC1zYWZlLgorLlNIICJPdGhlciBhcmVhcyBvZiBjYXV0aW9uIgorLklQIFNpZ25hbHMKK1NpZ25hbHMgYXJlIHVzZWQgZm9yIHRpbWluZyBvdXQgbmFtZSByZXNvbHZlcyAoZHVyaW5nIEROUyBsb29rdXApIC0gd2hlbiBidWlsdAord2l0aG91dCB1c2luZyBlaXRoZXIgdGhlIGMtYXJlcyBvciB0aHJlYWRlZCByZXNvbHZlciBiYWNrZW5kcy4gV2hlbiB1c2luZworbXVsdGlwbGUgdGhyZWFkcyB5b3Ugc2hvdWxkIHNldCB0aGUgXGZJQ1VSTE9QVF9OT1NJR05BTCgzKVxmUCBvcHRpb24gdG8gMUwgZm9yCithbGwgaGFuZGxlcy4gRXZlcnl0aGluZyB3aWxsIG9yIG1pZ2h0IHdvcmsgZmluZSBleGNlcHQgdGhhdCB0aW1lb3V0cyBhcmUgbm90Citob25vcmVkIGR1cmluZyB0aGUgRE5TIGxvb2t1cCAtIHdoaWNoIHlvdSBjYW4gd29yayBhcm91bmQgYnkgYnVpbGRpbmcgbGliY3VybAord2l0aCBjLWFyZXMgc3VwcG9ydC4gYy1hcmVzIGlzIGEgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFzeW5jaHJvbm91cyBuYW1lCityZXNvbHZlcy4gT24gc29tZSBwbGF0Zm9ybXMsIGxpYmN1cmwgc2ltcGx5IHdpbGwgbm90IGZ1bmN0aW9uIHByb3Blcmx5CittdWx0aS10aHJlYWRlZCB1bmxlc3MgdGhpcyBvcHRpb24gaXMgc2V0LgorLklQICJOYW1lIHJlc29sdmluZyIKK1xmQmdldGhvc3RieSogZnVuY3Rpb25zIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMuXGZQIFRoZXNlIGZ1bmN0aW9ucywgcHJvdmlkZWQKK2J5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwgbXVzdCBiZSB0aHJlYWQgc2FmZS4gSXQgaXMgdmVyeSBpbXBvcnRhbnQgdGhhdAorbGliY3VybCBjYW4gZmluZCBhbmQgdXNlIHRocmVhZCBzYWZlIHZlcnNpb25zIG9mIHRoZXNlIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMsCithcyBvdGhlcndpc2UgaXQgY2FuJ3QgZnVuY3Rpb24gZnVsbHkgdGhyZWFkIHNhZmUuIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgYXJlCitrbm93biB0byBoYXZlIGZhdWx0eSB0aHJlYWQgaW1wbGVtZW50YXRpb25zLiBXZSBoYXZlIHByZXZpb3VzbHkgcmVjZWl2ZWQKK3Byb2JsZW0gcmVwb3J0cyBvbiAqQlNEIChhdCBsZWFzdCBpbiB0aGUgcGFzdCwgdGhleSBtYXkgYmUgd29ya2luZyBmaW5lIHRoZXNlCitkYXlzKS4gIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBhcmUga25vd24gdG8gaGF2ZSBzb2xpZCBhbmQgd29ya2luZyB0aHJlYWQKK3N1cHBvcnQgYXJlIExpbnV4LCBTb2xhcmlzIGFuZCBXaW5kb3dzLgorLklQICJjdXJsX2dsb2JhbF8qIGZ1bmN0aW9ucyIKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHRocmVhZCBzYWZlLiBJZiB5b3UgYXJlIHVzaW5nIGxpYmN1cmwgd2l0aCBtdWx0aXBsZQordGhyZWFkcyBpdCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0aGF0IGJlZm9yZSB1c2UgeW91IGNhbGwKK1xmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAgb3IgXGZJY3VybF9nbG9iYWxfaW5pdF9tZW0oMylcZlAgdG8gZXhwbGljaXRseQoraW5pdGlhbGl6ZSB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVudHMsIHJhdGhlciB0aGFuIHJlbHkgb24gdGhlICJsYXp5IgorZmFpbC1zYWZlIGluaXRpYWxpemF0aW9uIHRoYXQgdGFrZXMgcGxhY2UgdGhlIGZpcnN0IHRpbWUKK1xmSWN1cmxfZWFzeV9pbml0KDMpXGZQIGlzIGNhbGxlZC4gRm9yIGFuIGluLWRlcHRoIGV4cGxhbmF0aW9uIHJlZmVyIHRvCitcZklsaWJjdXJsKDMpXGZQIHNlY3Rpb24gXGZCR0xPQkFMIENPTlNUQU5UU1xmUC4KKy5JUCAiTWVtb3J5IGZ1bmN0aW9ucyIKK1RoZXNlIGZ1bmN0aW9ucywgcHJvdmlkZWQgZWl0aGVyIGJ5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBvciB5b3VyIG93bgorcmVwbGFjZW1lbnRzLCBtdXN0IGJlIHRocmVhZCBzYWZlLiBZb3UgY2FuIHVzZSBcZkljdXJsX2dsb2JhbF9pbml0X21lbSgzKVxmUAordG8gc2V0IHlvdXIgb3duIHJlcGxhY2VtZW50IG1lbW9yeSBmdW5jdGlvbnMuCisuSVAgIk5vbi1zYWZlIGZ1bmN0aW9ucyIKK1xmSUNVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUoMylcZlAgaXMgbm90IHRocmVhZC1zYWZlLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtdHV0b3JpYWwuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXR1dG9yaWFsLjMKaW5kZXggMTFiMDE5MC4uMzE0NGRhMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtdHV0b3JpYWwuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC10dXRvcmlhbC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI1Niw1OCArMjU2LDggQEAKIG9mIGFsbCB0aGUgZGV0YWlscyBuZWVkZWQgdG8gZ2V0IHRoZSBmaWxlIG1vdmVkIGZyb20gb25lIG1hY2hpbmUgdG8gYW5vdGhlci4KIAogLlNIICJNdWx0aS10aHJlYWRpbmcgSXNzdWVzIgotVGhlIGZpcnN0IGJhc2ljIHJ1bGUgaXMgdGhhdCB5b3UgbXVzdCBcZkJuZXZlclxmUCBzaW11bHRhbmVvdXNseSBzaGFyZSBhCi1saWJjdXJsIGhhbmRsZSAoYmUgaXQgZWFzeSBvciBtdWx0aSBvciB3aGF0ZXZlcikgYmV0d2VlbiBtdWx0aXBsZQotdGhyZWFkcy4gT25seSB1c2Ugb25lIGhhbmRsZSBpbiBvbmUgdGhyZWFkIGF0IGFueSB0aW1lLiBZb3UgY2FuIHBhc3MgdGhlCi1oYW5kbGVzIGFyb3VuZCBhbW9uZyB0aHJlYWRzLCBidXQgeW91IG11c3QgbmV2ZXIgdXNlIGEgc2luZ2xlIGhhbmRsZSBmcm9tIG1vcmUKLXRoYW4gb25lIHRocmVhZCBhdCBhbnkgZ2l2ZW4gdGltZS4KLQotbGliY3VybCBpcyBjb21wbGV0ZWx5IHRocmVhZCBzYWZlLCBleGNlcHQgZm9yIHR3byBpc3N1ZXM6IHNpZ25hbHMgYW5kIFNTTC9UTFMKLWhhbmRsZXJzLiBTaWduYWxzIGFyZSB1c2VkIGZvciB0aW1pbmcgb3V0IG5hbWUgcmVzb2x2ZXMgKGR1cmluZyBETlMgbG9va3VwKSAtCi13aGVuIGJ1aWx0IHdpdGhvdXQgdXNpbmcgZWl0aGVyIHRoZSBjLWFyZXMgb3IgdGhyZWFkZWQgcmVzb2x2ZXIgYmFja2VuZHMuCi0KLUlmIHlvdSBhcmUgYWNjZXNzaW5nIEhUVFBTIG9yIEZUUFMgVVJMcyBpbiBhIG11bHRpLXRocmVhZGVkIG1hbm5lciwgeW91IGFyZQotdGhlbiBvZiBjb3Vyc2UgdXNpbmcgdGhlIHVuZGVybHlpbmcgU1NMIGxpYnJhcnkgbXVsdGktdGhyZWFkZWQgYW5kIHRob3NlIGxpYnMKLW1pZ2h0IGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cyBvbiB0aGlzIGlzc3VlLiBCYXNpY2FsbHksIHlvdSBuZWVkIHRvCi1wcm92aWRlIG9uZSBvciB0d28gZnVuY3Rpb25zIHRvIGFsbG93IGl0IHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBGb3IgYWxsCi1kZXRhaWxzLCBzZWUgdGhpczoKLQotT3BlblNTTAotCi0gaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwjREVTQ1JJUFRJT04KLQotR251VExTCi0KLSBodHRwOi8vZ251dGxzLm9yZy9tYW51YWwvaHRtbF9ub2RlL1RocmVhZC1zYWZldHkuaHRtbAotCi1OU1MKLQotIGlzIGNsYWltZWQgdG8gYmUgdGhyZWFkLXNhZmUgYWxyZWFkeSB3aXRob3V0IGFueXRoaW5nIHJlcXVpcmVkLgotCi1Qb2xhclNTTAotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi15YXNzbAotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi1heFRMUwotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi1TZWN1cmUgVHJhbnNwb3J0Ci0KLSBUaGUgZW5naW5lIGlzIGZ1bGx5IHRocmVhZC1zYWZlLCBhbmQgbm8gYWRkaXRpb25hbCBzdGVwcyBhcmUgcmVxdWlyZWQuCi0KLVdoZW4gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcyB5b3Ugc2hvdWxkIHNldCB0aGUgXGZJQ1VSTE9QVF9OT1NJR05BTCgzKVxmUAotb3B0aW9uIHRvIDEgZm9yIGFsbCBoYW5kbGVzLiBFdmVyeXRoaW5nIHdpbGwgb3IgbWlnaHQgd29yayBmaW5lIGV4Y2VwdCB0aGF0Ci10aW1lb3V0cyBhcmUgbm90IGhvbm9yZWQgZHVyaW5nIHRoZSBETlMgbG9va3VwIC0gd2hpY2ggeW91IGNhbiB3b3JrIGFyb3VuZCBieQotYnVpbGRpbmcgbGliY3VybCB3aXRoIGMtYXJlcyBzdXBwb3J0LiBjLWFyZXMgaXMgYSBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMKLWFzeW5jaHJvbm91cyBuYW1lIHJlc29sdmVzLiBPbiBzb21lIHBsYXRmb3JtcywgbGliY3VybCBzaW1wbHkgd2lsbCBub3QKLWZ1bmN0aW9uIHByb3Blcmx5IG11bHRpLXRocmVhZGVkIHVubGVzcyB0aGlzIG9wdGlvbiBpcyBzZXQuCi0KLUFsc28sIG5vdGUgdGhhdCBcZklDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFKDMpXGZQIGlzIG5vdCB0aHJlYWQtc2FmZS4KK2xpYmN1cmwgaXMgdGhyZWFkIHNhZmUgYnV0IHRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25zLiBSZWZlciB0bworXGZJbGliY3VybC10aHJlYWQoMylcZlAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIC5TSCAiV2hlbiBJdCBEb2Vzbid0IFdvcmsiCiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aW1lcyB3aGVuIHRoZSB0cmFuc2ZlciBmYWlscyBmb3Igc29tZSByZWFzb24uIFlvdSBtaWdodApAQCAtMTAwNSw3ICs5NTUsNyBAQAogdGhlIHBhcnNlciBpcyBlbmFibGVkIHRoZSBjb29raWVzIHdpbGwgYmUgdW5kZXJzdG9vZCBhbmQgdGhlIGNvb2tpZXMgd2lsbCBiZQoga2VwdCBpbiBtZW1vcnkgYW5kIHVzZWQgcHJvcGVybHkgaW4gc3Vic2VxdWVudCByZXF1ZXN0cyB3aGVuIHRoZSBzYW1lIGhhbmRsZQogaXMgdXNlZC4gTWFueSB0aW1lcyB0aGlzIGlzIGVub3VnaCwgYW5kIHlvdSBtYXkgbm90IGhhdmUgdG8gc2F2ZSB0aGUgY29va2llcwotdG8gZGlzayBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgZmlsZSB5b3Ugc3BlY2lmeSB0byBcSUNVUkxPUFRfQ09PS0lFRklMRSgzKVxmUAordG8gZGlzayBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgZmlsZSB5b3Ugc3BlY2lmeSB0byBcZklDVVJMT1BUX0NPT0tJRUZJTEUoMylcZlAKIGRvZXNuJ3QgaGF2ZSB0byBleGlzdCB0byBlbmFibGUgdGhlIHBhcnNlciwgc28gYSBjb21tb24gd2F5IHRvIGp1c3QgZW5hYmxlIHRoZQogcGFyc2VyIGFuZCBub3QgcmVhZCBhbnkgY29va2llcyBpcyB0byB1c2UgdGhlIG5hbWUgb2YgYSBmaWxlIHlvdSBrbm93IGRvZXNuJ3QKIGV4aXN0LgpAQCAtMTA5Niw3ICsxMDQ2LDcgQEAKIHNvbWUgcmlza3MgaW4gdGhlIHdheXMgaW4gd2hpY2ggYXBwbGljYXRpb25zIGNvbW1vbmx5IHVzZSBsaWJjdXJsIGFuZAogcG90ZW50aWFsIG1pdGlnYXRpb25zIG9mIHRob3NlIHJpc2tzLiBJdCBpcyBieSBubyBtZWFucyBjb21wcmVoZW5zaXZlLCBidXQKIHNob3dzIGNsYXNzZXMgb2YgYXR0YWNrcyB0aGF0IHJvYnVzdCBhcHBsaWNhdGlvbnMgc2hvdWxkIGNvbnNpZGVyLiBUaGUKLUNvbW1vbiBXZWFrbmVzcyBFbnVtZXJhdGlvbiBwcm9qZWN0IGF0IGh0dHA6Ly9jd2UubWl0cmUub3JnLyBpcyBhIGdvb2QKK0NvbW1vbiBXZWFrbmVzcyBFbnVtZXJhdGlvbiBwcm9qZWN0IGF0IGh0dHBzOi8vY3dlLm1pdHJlLm9yZy8gaXMgYSBnb29kCiByZWZlcmVuY2UgZm9yIG1hbnkgb2YgdGhlc2UgYW5kIHNpbWlsYXIgdHlwZXMgb2Ygd2Vha25lc3NlcyBvZiB3aGljaAogYXBwbGljYXRpb24gd3JpdGVycyBzaG91bGQgYmUgYXdhcmUuCiAKQEAgLTExMzYsMTEgKzEwODYsMTUgQEAKIC5JUCAiUmVkaXJlY3RzIgogVGhlIFxmSUNVUkxPUFRfRk9MTE9XTE9DQVRJT04oMylcZlAgb3B0aW9uIGF1dG9tYXRpY2FsbHkgZm9sbG93cyBIVFRQCiByZWRpcmVjdHMgc2VudCBieSBhIHJlbW90ZSBzZXJ2ZXIuICBUaGVzZSByZWRpcmVjdHMgY2FuIHJlZmVyIHRvIGFueSBraW5kIG9mCi1VUkwsIG5vdCBqdXN0IEhUVFAuICBBIHJlZGlyZWN0IHRvIGEgZmlsZTogVVJMIHdvdWxkIGNhdXNlIHRoZSBsaWJjdXJsIHRvIHJlYWQKLShvciB3cml0ZSkgYXJiaXRyYXJ5IGZpbGVzIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uICBJZiB0aGUgYXBwbGljYXRpb24KLXJldHVybnMgdGhlIGRhdGEgYmFjayB0byB0aGUgdXNlciAoYXMgd291bGQgaGFwcGVuIGluIHNvbWUga2luZHMgb2YgQ0dJCi1zY3JpcHRzKSwgYW4gYXR0YWNrZXIgY291bGQgbGV2ZXJhZ2UgdGhpcyB0byByZWFkIG90aGVyd2lzZSBmb3JiaWRkZW4gZGF0YQotKGUuZy4gIGZpbGU6Ly9sb2NhbGhvc3QvZXRjL3Bhc3N3ZCkuCitVUkwsIG5vdCBqdXN0IEhUVFAuIEJ5IGRlZmF1bHQgbGliY3VybCB3aWxsIGFsbG93IGFsbCBwcm90b2NvbHMgb24gcmVkaXJlY3QKK2V4Y2VwdCBzZXZlcmFsIGRpc2FibGVkIGZvciBzZWN1cml0eSByZWFzb25zOiBTaW5jZSA3LjE5LjQgRklMRSBhbmQgU0NQIGFyZQorZGlzYWJsZWQsIGFuZCBzaW5jZSA3LjQwLjAgU01CIGFuZCBTTUJTIGFyZSBhbHNvIGRpc2FibGVkLgorCitBIHJlZGlyZWN0IHRvIGEgZmlsZTogVVJMIHdvdWxkIGNhdXNlIHRoZSBsaWJjdXJsIHRvIHJlYWQgKG9yIHdyaXRlKSBhcmJpdHJhcnkKK2ZpbGVzIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uICBJZiB0aGUgYXBwbGljYXRpb24gcmV0dXJucyB0aGUgZGF0YSBiYWNrIHRvCit0aGUgdXNlciAoYXMgd291bGQgaGFwcGVuIGluIHNvbWUga2luZHMgb2YgQ0dJIHNjcmlwdHMpLCBhbiBhdHRhY2tlciBjb3VsZAorbGV2ZXJhZ2UgdGhpcyB0byByZWFkIG90aGVyd2lzZSBmb3JiaWRkZW4gZGF0YSAoZS5nLgorZmlsZTovL2xvY2FsaG9zdC9ldGMvcGFzc3dkKS4KIAogSWYgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgYXJlIHN0b3JlZCBpbiB0aGUgfi8ubmV0cmMgZmlsZSwgb3IgS2VyYmVyb3MKIGlzIGluIHVzZSwgYW55IG90aGVyIFVSTCB0eXBlIChub3QganVzdCBmaWxlOikgdGhhdCByZXF1aXJlcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLjMKaW5kZXggMzliY2NjZC4uNjYxODczNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtOTcsOCArOTcsOCBAQAogb2Z0ZW4gZG9uJ3QgcHJvdmlkZSB0aGUgY3VybC1jb25maWcgdG9vbCwgYnV0IHNpbXBseSBpbnN0YWxsIHRoZSBsaWJyYXJ5IGFuZAogaGVhZGVycyBpbiB0aGUgY29tbW9uIHBhdGggZm9yIHRoaXMgcHVycG9zZS4KIAotTWFueSBMaW51eCBhbmQgc2ltaWxhciBzeXRlbXMgdXNlIHBrZy1jb25maWcgdG8gcHJvdmlkZSBidWlsZCBhbmQgbGluayBvcHRpb25zCi1hYm91dCBsaWJyYXJpZXMgYW5kIGxpYmN1cmwgc3VwcG9ydHMgdGhhdCBhcyB3ZWxsLgorTWFueSBMaW51eCBhbmQgc2ltaWxhciBzeXN0ZW1zIHVzZSBwa2ctY29uZmlnIHRvIHByb3ZpZGUgYnVpbGQgYW5kIGxpbmsKK29wdGlvbnMgYWJvdXQgbGlicmFyaWVzIGFuZCBsaWJjdXJsIHN1cHBvcnRzIHRoYXQgYXMgd2VsbC4KIC5TSCAiTElCQ1VSTCBTWU1CT0wgTkFNRVMiCiBBbGwgcHVibGljIGZ1bmN0aW9ucyBpbiB0aGUgbGliY3VybCBpbnRlcmZhY2UgYXJlIHByZWZpeGVkIHdpdGggJ2N1cmxfJyAod2l0aAogYSBsb3dlcmNhc2UgYykuIFlvdSBjYW4gZmluZCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnkgc291cmNlIGNvZGUsIGJ1dApAQCAtMTExLDEzICsxMTEsOCBAQAogLkIgZXhhY3RseQogdGhlIHNhbWUsIG9uIGFueSBvZiB0aGUgcGxhdGZvcm1zIGl0IGNvbXBpbGVzIGFuZCBidWlsZHMgb24uCiAuU0ggIlRIUkVBRFMiCi1OZXZlciBldmVyIGNhbGwgY3VybC1mdW5jdGlvbnMgc2ltdWx0YW5lb3VzbHkgdXNpbmcgdGhlIHNhbWUgaGFuZGxlIGZyb20KLXNldmVyYWwgdGhyZWFkcy4gbGliY3VybCBpcyB0aHJlYWQtc2FmZSBhbmQgY2FuIGJlIHVzZWQgaW4gYW55IG51bWJlciBvZgotdGhyZWFkcywgYnV0IHlvdSBtdXN0IHVzZSBzZXBhcmF0ZSBjdXJsIGhhbmRsZXMgaWYgeW91IHdhbnQgdG8gdXNlIGxpYmN1cmwgaW4KLW1vcmUgdGhhbiBvbmUgdGhyZWFkIHNpbXVsdGFuZW91c2x5LgotCi1UaGUgZ2xvYmFsIGVudmlyb25tZW50IGZ1bmN0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLiAgU2VlIFxmQkdMT0JBTAotQ09OU1RBTlRTXGZQIGJlbG93IGZvciBkZXRhaWxzLgorbGliY3VybCBpcyB0aHJlYWQgc2FmZSBidXQgdGhlcmUgYXJlIGEgZmV3IGV4Y2VwdGlvbnMuIFJlZmVyIHRvCitcZklsaWJjdXJsLXRocmVhZCgzKVxmUCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogLlNIICJQRVJTSVNURU5UIENPTk5FQ1RJT05TIgogUGVyc2lzdGVudCBjb25uZWN0aW9ucyBtZWFucyB0aGF0IGxpYmN1cmwgY2FuIHJlLXVzZSB0aGUgc2FtZSBjb25uZWN0aW9uIGZvcgpAQCAtMTk5LDYgKzE5NCw5IEBACiBhdXRob3Igb2YgdGhpcyBsaWJjdXJsLXVzaW5nIG1vZHVsZSwgeW91IGNhbiBtYWtlIHRoZSBjb25zdHJ1Y3RvciBjYWxsCiBcZkljdXJsX2dsb2JhbF9pbml0KDMpXGZQIGFuZCB0aGUgZGVzdHJ1Y3RvciBjYWxsIFxmSWN1cmxfZ2xvYmFsX2NsZWFudXAoMylcZlAKIGFuZCBzYXRpc2Z5IGxpYmN1cmwncyByZXF1aXJlbWVudHMgd2l0aG91dCB5b3VyIHVzZXIgaGF2aW5nIHRvIHRoaW5rIGFib3V0IGl0LgorKENhdmVhdDogSWYgeW91IGFyZSBpbml0aWFsaXppbmcgbGliY3VybCBmcm9tIGEgV2luZG93cyBETEwgeW91IHNob3VsZCBub3QKK2luaXRpYWxpemUgaXQgZnJvbSBEbGxNYWluIG9yIGEgc3RhdGljIGluaXRpYWxpemVyIGJlY2F1c2UgV2luZG93cyBob2xkcyB0aGUKK2xvYWRlciBsb2NrIGR1cmluZyB0aGF0IHRpbWUgYW5kIGl0IGNvdWxkIGNhdXNlIGEgZGVhZGxvY2suKQogCiBcZkljdXJsX2dsb2JhbF9pbml0KDMpXGZQIGhhcyBhbiBhcmd1bWVudCB0aGF0IHRlbGxzIHdoYXQgcGFydGljdWxhciBwYXJ0cyBvZgogdGhlIGdsb2JhbCBjb25zdGFudCBlbnZpcm9ubWVudCB0byBzZXQgdXAuICBJbiBvcmRlciB0byBzdWNjZXNzZnVsbHkgdXNlIGFueQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwubTQgYi9kb2NzL2xpYmN1cmwvbGliY3VybC5tNAppbmRleCAyY2YzZWRkLi41M2Q2OTRkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC5tNAorKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODIsNyArODIsNyBAQAogICBBSF9URU1QTEFURShbTElCQ1VSTF9QUk9UT0NPTF9TTVRQXSxbRGVmaW5lZCBpZiBsaWJjdXJsIHN1cHBvcnRzIFNNVFBdKQogCiAgIEFDX0FSR19XSVRIKGxpYmN1cmwsCi0gICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliY3VybD1QUkVGSVhdLFtsb29rIGZvciB0aGUgY3VybCBsaWJyYXJ5IGluIFBSRUZJWC9saWIgYW5kIGhlYWRlcnMgaW4gUFJFRklYL2luY2x1ZGVdKSwKKyAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJjdXJsPVBSRUZJWF0sW2xvb2sgZm9yIHRoZSBjdXJsIGxpYnJhcnkgaW4gUFJFRklYL2xpYiBhbmQgaGVhZGVycyBpbiBQUkVGSVgvaW5jbHVkZV0pLAogICAgICBbX2xpYmN1cmxfd2l0aD0kd2l0aHZhbF0sW19saWJjdXJsX3dpdGg9aWZlbHNlKFskMV0sLFt5ZXNdLFskMV0pXSkKIAogICBpZiB0ZXN0ICIkX2xpYmN1cmxfd2l0aCIgIT0gIm5vIiA7IHRoZW4KQEAgLTE3OCw3ICsxNzgsNyBAQAogeD1DVVJMT1BUX0VSUk9SQlVGRkVSOwogeD1DVVJMT1BUX1NUREVSUjsKIHg9Q1VSTE9QVF9WRVJCT1NFOwotaWYgKHgpIDsKK2lmICh4KSB7O30KIF1dKV0sbGliY3VybF9jdl9saWJfY3VybF91c2FibGU9eWVzLGxpYmN1cmxfY3ZfbGliX2N1cmxfdXNhYmxlPW5vKQogCiAgICAgICAgICAgIENQUEZMQUdTPSRfbGliY3VybF9zYXZlX2NwcGZsYWdzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvbWtzeW1ib2xzbWFucGFnZS5wbCBiL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCmluZGV4IDFiY2E0ZDAuLjIxMDUzYzQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCisrKyBiL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw3ICszOSw3IEBACiAuXFwiICoKIC5cXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlxcIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlxcIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlxcIiAqCiAuXFwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXFwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BQ1RJVkVTT0NLRVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0FDVElWRVNPQ0tFVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OTZkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BQ1RJVkVTT0NLRVQuMwpAQCAtMCwwICsxLDUxIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fQUNUSVZFU09DS0VUIFwtIGdldCB0aGUgYWN0aXZlIHNvY2tldAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQUNUSVZFU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja2V0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjdXJsX3NvY2tldF90IHRvIHJlY2VpdmUgdGhlIGFjdGl2ZSBzb2NrZXQgdXNlZCBieSB0aGlzCitjdXJsIHNlc3Npb24uIElmIHRoZSBzb2NrZXQgaXMgbm8gbG9uZ2VyIHZhbGlkLCBcZklDVVJMX1NPQ0tFVF9CQURcZlAgaXMKK3JldHVybmVkLiBXaGVuIHlvdSBmaW5pc2ggd29ya2luZyB3aXRoIHRoZSBzb2NrZXQsIHlvdSBtdXN0IGNhbGwKK1xmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGFzIHVzdWFsIG9uIHRoZSBlYXN5IGhhbmRsZSBhbmQgbGV0IGxpYmN1cmwgY2xvc2UKK3RoZSBzb2NrZXQgYW5kIGNsZWFudXAgb3RoZXIgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlLiBUaGlzIGlzCit0eXBpY2FsbHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIFxmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQLgorCitUaGlzIG9wdGlvbiB3YXMgYWRkZWQgYXMgYSByZXBsYWNlbWVudCBmb3IgXGZJQ1VSTElORk9fTEFTVFNPQ0tFVCgzKVxmUCBzaW5jZQordGhhdCBvbmUgaXNuJ3Qgd29ya2luZyBvbiBhbGwgcGxhdGZvcm1zLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40NS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX0xBU1RTT0NLRVQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BUFBDT05ORUNUX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ViOThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSBcLSBnZXQgdGhlIHRpbWUgdW50aWwgdGhlIFNTTC9TU0ggaGFuZHNoYWtlIGlzIGNvbXBsZXRlZAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQorc3RhcnQgdW50aWwgdGhlIFNTTC9TU0ggY29ubmVjdC9oYW5kc2hha2UgdG8gdGhlIHJlbW90ZSBob3N0IHdhcyBjb21wbGV0ZWQuCitUaGlzIHRpbWUgaXMgbW9zdCBvZnRlbiB2ZXJ5IG5lYXIgdG8gdGhlIFxmSUNVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUoMylcZlAKK3RpbWUsIGV4Y2VwdCBmb3IgY2FzZXMgc3VjaCBhcyBIVFRQIHBpcGVsaW5pbmcgd2hlcmUgdGhlIHByZXRyYW5zZmVyIHRpbWUgY2FuCitiZSBkZWxheWVkIGR1ZSB0byB3YWl0cyBpbiBsaW5lIGZvciB0aGUgcGlwZWxpbmUgYW5kIG1vcmUuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjE5LjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DRVJUSU5GTy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ0VSVElORk8uMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzZkYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ0VSVElORk8uMwpAQCAtMCwwICsxLDUxIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19DRVJUSU5GTyAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DRVJUSU5GTyBcLSBnZXQgdGhlIFRMUyBjZXJ0aWZpY2F0ZSBjaGFpbgorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ0VSVElORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqY2hhaW5wKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSAnc3RydWN0IGN1cmxfY2VydGluZm8gKicgYW5kIHlvdSdsbCBnZXQgaXQgc2V0IHRvIHBvaW50IHRvCitzdHJ1Y3QgdGhhdCBob2xkcyBhIG51bWJlciBvZiBsaW5rZWQgbGlzdHMgd2l0aCBpbmZvIGFib3V0IHRoZSBjZXJ0aWZpY2F0ZQorY2hhaW4sIGFzc3VtaW5nIHlvdSBoYWQgXGZJQ1VSTE9QVF9DRVJUSU5GTygzKVxmUCBlbmFibGVkIHdoZW4gdGhlIHJlcXVlc3Qgd2FzCittYWRlLiBUaGUgc3RydWN0IHJlcG9ydHMgaG93IG1hbnkgY2VydHMgaXQgZm91bmQgYW5kIHRoZW4geW91IGNhbiBleHRyYWN0IGluZm8KK2ZvciBlYWNoIG9mIHRob3NlIGNlcnRzIGJ5IGZvbGxvd2luZyB0aGUgbGlua2VkIGxpc3RzLiBUaGUgaW5mbyBjaGFpbiBpcworcHJvdmlkZWQgaW4gYSBzZXJpZXMgb2YgZGF0YSBpbiB0aGUgZm9ybWF0ICJuYW1lOmNvbnRlbnQiIHdoZXJlIHRoZSBjb250ZW50IGlzCitmb3IgdGhlIHNwZWNpZmljIG5hbWVkIGRhdGEuIFNlZSBhbHNvIHRoZSBjZXJ0aW5mby5jIGV4YW1wbGUuCisuU0ggUFJPVE9DT0xTCitBbGwgVExTLWJhc2VkCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorVGhpcyBvcHRpb24gaXMgb25seSB3b3JraW5nIGluIGxpYmN1cmwgYnVpbHQgd2l0aCBPcGVuU1NMLCBOU1Mgb3IgR1NLaXQKK3N1cHBvcnQuCisKK0FkZGVkIGluIDcuMTkuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUyYzI2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC4zCkBAIC0wLDAgKzEsNDUgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTkRJVElPTl9VTk1FVCAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVCBcLSBnZXQgaW5mbyBvbiB1bm1ldCB0aW1lIGNvbmRpdGlvbmFsCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19DT05ESVRJT05fVU5NRVQsIGxvbmcgKnVubWV0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG51bWJlciAxIGlmIHRoZSBjb25kaXRpb24gcHJvdmlkZWQgaW4KK3RoZSBwcmV2aW91cyByZXF1ZXN0IGRpZG4ndCBtYXRjaCAoc2VlIFxmSUNVUkxPUFRfVElNRUNPTkRJVElPTigzKVxmUCkuIEFsYXMsCitpZiB0aGlzIHJldHVybnMgYSAxIHlvdSBrbm93IHRoYXQgdGhlIHJlYXNvbiB5b3UgZGlkbid0IGdldCBkYXRhIGluIHJldHVybiBpcworYmVjYXVzZSBpdCBkaWRuJ3QgZnVsZmlsbCB0aGUgY29uZGl0aW9uLiBUaGUgbG9uZyB0aHMgYXJndW1lbnQgcG9pbnRzIHRvIHdpbGwKK2dldCBhIHplcm8gc3RvcmVkIGlmIHRoZSBjb25kaXRpb24gaW5zdGVhZCB3YXMgbWV0LgorLlNIIFBST1RPQ09MUworSFRUUCBhbmQgc29tZQorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTkuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTk5FQ1RfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OTkVDVF9USU1FLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2M2UyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTk5FQ1RfVElNRS4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTk5FQ1RfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05ORUNUX1RJTUUgXC0gZ2V0IHRoZSB0aW1lIHVudGlsIGNvbm5lY3QKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTk5FQ1RfVElNRSwgZG91YmxlICp0aW1lcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmcm9tIHRoZSBzdGFydAordW50aWwgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC4KKworU2VlIGFsc28gdGhlIFRJTUVTIG92ZXJ2aWV3IGluIHRoZSBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBtYW4gcGFnZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExZjMxMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCBcLSBnZXQgY29udGVudC1sZW5ndGggb2YgZG93bmxvYWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpjb250ZW50X2xlbmd0aCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtbGVuZ3RoIG9mIHRoZSBkb3dubG9hZC4gVGhpcworaXMgdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgQ29udGVudC1MZW5ndGg6IGZpZWxkLiBTaW5jZSA3LjE5LjQsIHRoaXMgcmV0dXJucworLTEgaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy42LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FEICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwZDVlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC4zCkBAIC0wLDAgKzEsNDMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCBcLSBnZXQgdGhlIHNwZWNpZmllZCBzaXplIG9mIHRoZSB1cGxvYWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqY29udGVudF9sZW5ndGgpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBzcGVjaWZpZWQgc2l6ZSBvZiB0aGUgdXBsb2FkLiAgU2luY2UKKzcuMTkuNCwgdGhpcyByZXR1cm5zIC0xIGlmIHRoZSBzaXplIGlzbid0IGtub3duLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy42LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DT05URU5UX1RZUEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfVFlQRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MzYwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DT05URU5UX1RZUEUuMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19DT05URU5UX1RZUEUgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05URU5UX1RZUEUgXC0gZ2V0IENvbnRlbnQtVHlwZQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ09OVEVOVF9UWVBFLCBjaGFyICoqY3QpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBjb250ZW50LXR5cGUgb2YgdGhlIGRvd25sb2FkZWQKK29iamVjdC4gVGhpcyBpcyB0aGUgdmFsdWUgcmVhZCBmcm9tIHRoZSBDb250ZW50LVR5cGU6IGZpZWxkLiBJZiB5b3UgZ2V0IE5VTEwsCitpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgZGlkbid0IHNlbmQgYSB2YWxpZCBDb250ZW50LVR5cGUgaGVhZGVyIG9yIHRoYXQgdGhlCitwcm90b2NvbCB1c2VkIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzLgorCitUaGUgXGZCY3RcZlAgcG9pbnRlciB3aWxsIGJlIE5VTEwgb3IgcG9pbnRpbmcgdG8gcHJpdmF0ZSBtZW1vcnkgeW91IE1VU1QgTk9UCitmcmVlIGl0IC0gaXQgZ2V0cyBmcmVlZCB3aGVuIHlvdSBjYWxsIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIG9uIHRoZQorY29ycmVzcG9uZGluZyBDVVJMIGhhbmRsZS4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjkuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPT0tJRUxJU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPT0tJRUxJU1QuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFmZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09PS0lFTElTVC4zCkBAIC0wLDAgKzEsNTAgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPT0tJRUxJU1QgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT09LSUVMSVNUIFwtIGdldCBhbGwga25vd24gY29va2llcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ09PS0lFTElTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0ICoqY29va2llcyk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgJ3N0cnVjdCBjdXJsX3NsaXN0IConIHRvIHJlY2VpdmUgYSBsaW5rZWQtbGlzdCBvZiBhbGwKK2Nvb2tpZXMgY1VSTCBrbm93cyAoZXhwaXJlZCBvbmVzLCB0b28pLiBEb24ndCBmb3JnZXQgdG8gY2FsbAorXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUCBvbiB0aGUgbGlzdCBhZnRlciBpdCBoYXMgYmVlbiB1c2VkLiAgSWYgdGhlcmUgYXJlCitubyBjb29raWVzIChjb29raWVzIGZvciB0aGUgaGFuZGxlIGhhdmUgbm90IGJlZW4gZW5hYmxlZCBvciBzaW1wbHkgbm9uZSBoYXZlCitiZWVuIHJlY2VpdmVkKSAnc3RydWN0IGN1cmxfc2xpc3QgKicgd2lsbCBiZSBzZXQgdG8gcG9pbnQgdG8gTlVMTC4KKworU2luY2UgNy40My4wIGNvb2tpZXMgdGhhdCB3ZXJlIGltcG9ydGVkIGluIHRoZSBTZXQtQ29va2llIGZvcm1hdCB3aXRob3V0IGEKK2RvbWFpbiBuYW1lIGFyZSBub3QgZXhwb3J0ZWQgYnkgdGhpcyBvcHRpb24uCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxPUFRfQ09PS0lFTElTVCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19FRkZFQ1RJVkVfVVJMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19FRkZFQ1RJVkVfVVJMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyZmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0VGRkVDVElWRV9VUkwuMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0VGRkVDVElWRV9VUkwgXC0gZ2V0IHRoZSBsYXN0IHVzZWQgVVJMCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCBjaGFyICoqdXJscCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgaW4gYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIGFuZCBnZXQgdGhlIGxhc3QgdXNlZCBlZmZlY3RpdmUgVVJMLgorCitJbiBjYXNlcyB3aGVuIHlvdSd2ZSBhc2tlZCBsaWJjdXJsIHRvIGZvbGxvdyByZWRpcmVjdHMsIGl0IG1heSB2ZXJ5IHdlbGwgbm90CitiZSB0aGUgc2FtZSB2YWx1ZSB5b3Ugc2V0IHdpdGggXGZJQ1VSTE9QVF9VUkwoMylcZlAuCisKK1RoZSBcZkJ1cmxwXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40CisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRklMRVRJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0ZJTEVUSU1FLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwOTNlYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0ZJTEVUSU1FLjMKQEAgLTAsMCArMSw0OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fRklMRVRJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fRklMRVRJTUUgXC0gZ2V0IHRoZSByZW1vdGUgdGltZSBvZiB0aGUgcmV0cmlldmVkIGRvY3VtZW50CisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19GSUxFVElNRSwgbG9uZyAqdGltZXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgcmVtb3RlIHRpbWUgb2YgdGhlIHJldHJpZXZlZCBkb2N1bWVudAorKGluIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDEgamFuIDE5NzAgaW4gdGhlIEdNVC9VVEMgdGltZSB6b25lKS4gSWYgeW91IGdldAorLTEsIGl0IGNhbiBiZSBiZWNhdXNlIG9mIG1hbnkgcmVhc29ucyAoaXQgbWlnaHQgYmUgdW5rbm93biwgdGhlIHNlcnZlciBtaWdodAoraGlkZSBpdCBvciB0aGUgc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29tbWFuZCB0aGF0IHRlbGxzIGRvY3VtZW50IHRpbWUKK2V0YykgYW5kIHRoZSB0aW1lIG9mIHRoZSBkb2N1bWVudCBpcyB1bmtub3duLgorCitOb3RlIHRoYXQgeW91IG11c3QgdGVsbCB0aGUgc2VydmVyIHRvIGNvbGxlY3QgdGhpcyBpbmZvcm1hdGlvbiBiZWZvcmUgdGhlCit0cmFuc2ZlciBpcyBtYWRlLCBieSB1c2luZyB0aGUgXGZJQ1VSTE9QVF9GSUxFVElNRSgzKVxmUCBvcHRpb24gdG8KK1xmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgb3IgeW91IHdpbGwgdW5jb25kaXRpb25hbGx5IGdldCBhIC0xIGJhY2suCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpLCBGVFAoUyksIFNGVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjUKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19GVFBfRU5UUllfUEFUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Q3ZmNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19GVFBfRU5UUllfUEFUSCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19GVFBfRU5UUllfUEFUSCBcLSBnZXQgZW50cnkgcGF0aCBpbiBGVFAgc2VydmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19GVFBfRU5UUllfUEFUSCwgY2hhciAqKnBhdGgpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIGEgcG9pbnRlciB0byBhIHN0cmluZyBob2xkaW5nIHRoZQorcGF0aCBvZiB0aGUgZW50cnkgcGF0aC4gVGhhdCBpcyB0aGUgaW5pdGlhbCBwYXRoIGxpYmN1cmwgZW5kZWQgdXAgaW4gd2hlbgorbG9nZ2luZyBvbiB0byB0aGUgcmVtb3RlIEZUUCBzZXJ2ZXIuIFRoaXMgc3RvcmVzIGEgTlVMTCBhcyBwb2ludGVyIGlmCitzb21ldGhpbmcgaXMgd3JvbmcuCisKK1RoZSBcZkJwYXRoXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitGVFAoUykgYW5kIFNGVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjE1LjQuIFdvcmtzIGZvciBTRlRQIHNpbmNlIDcuMjEuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0hFQURFUl9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IRUFERVJfU0laRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjliNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IRUFERVJfU0laRS4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0hFQURFUl9TSVpFIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fSEVBREVSX1NJWkUgXC0gZ2V0IHNpemUgb2YgcmV0cmlldmVkIGhlYWRlcnMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0hFQURFUl9TSVpFLCBsb25nICpzaXplcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCB0aGUgaGVhZGVycworcmVjZWl2ZWQuIE1lYXN1cmVkIGluIG51bWJlciBvZiBieXRlcy4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX1JFUVVFU1RfU0laRSAiKDMpLCAiCisuQlIgQ1VSTElORk9fU0laRV9ET1dOTE9BRCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQQVVUSF9BVkFJTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQwZTcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCBcLSBnZXQgYXZhaWxhYmxlIEhUVFAgYXV0aGVudGljYXRpb24gbWV0aG9kcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwsIGxvbmcgKmF1dGhwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgYSBiaXRtYXNrIGluZGljYXRpbmcgdGhlIGF1dGhlbnRpY2F0aW9uCittZXRob2QocykgYXZhaWxhYmxlIGFjY29yZGluZyB0byB0aGUgcHJldmlvdXMgcmVzcG9uc2UuIFRoZSBtZWFuaW5nIG9mIHRoZQorYml0cyBpcyBleHBsYWluZWQgaW4gdGhlIFxmSUNVUkxPUFRfSFRUUEFVVEgoMylcZlAgb3B0aW9uIGZvcgorXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjgKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmZWY3NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUgXC0gZ2V0IHRoZSBDT05ORUNUIHJlc3BvbnNlIGNvZGUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUsIGxvbmcgKnApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbGFzdCByZWNlaXZlZCBIVFRQIHByb3h5IHJlc3BvbnNlIGNvZGUKK3RvIGEgQ09OTkVDVCByZXF1ZXN0LiBUaGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSB6ZXJvIGlmIG5vIHN1Y2ggcmVzcG9uc2UgY29kZQord2FzIGF2YWlsYWJsZS4KKy5TSCBQUk9UT0NPTFMKK0hUVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjcKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxJTkZPX1JFU1BPTlNFX0NPREUgIigzKSwgIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MQVNUU09DS0VULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MQVNUU09DS0VULjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU3MzQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xBU1RTT0NLRVQuMwpAQCAtMCwwICsxLDUzIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19MQVNUU09DS0VUIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0xBU1RTT0NLRVQgXC0gZ2V0IHRoZSBsYXN0IHNvY2tldCB1c2VkCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MQVNUU09DS0VULCBsb25nICpzb2NrZXQpOworLlNIIERFU0NSSVBUSU9OCitEZXByZWNhdGVkIHNpbmNlIDcuNDUuMC4gVXNlIFxmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCBpbnN0ZWFkLgorCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbGFzdCBzb2NrZXQgdXNlZCBieSB0aGlzIGN1cmwKK3Nlc3Npb24uIElmIHRoZSBzb2NrZXQgaXMgbm8gbG9uZ2VyIHZhbGlkLCAtMSBpcyByZXR1cm5lZC4gV2hlbiB5b3UgZmluaXNoCit3b3JraW5nIHdpdGggdGhlIHNvY2tldCwgeW91IG11c3QgY2FsbCBjdXJsX2Vhc3lfY2xlYW51cCgpIGFzIHVzdWFsIGFuZCBsZXQKK2xpYmN1cmwgY2xvc2UgdGhlIHNvY2tldCBhbmQgY2xlYW51cCBvdGhlciByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZQoraGFuZGxlLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgKK1xmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQLgorCitOT1RFOiB0aGlzIEFQSSBpcyBkZXByZWNhdGVkIHNpbmNlIGl0IGlzIG5vdCB3b3JraW5nIG9uIHdpbjY0IHdoZXJlIHRoZSBTT0NLRVQKK3R5cGUgaXMgNjQgYml0cyBsYXJnZSB3aGlsZSBpdHMgJ2xvbmcnIGlzIDMyIGJpdHMuIFVzZSB0aGUKK1xmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCBpbnN0ZWFkLCBpZiBwb3NzaWJsZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTUuMgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfSVAuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xPQ0FMX0lQLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyMjhlMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xPQ0FMX0lQLjMKQEAgLTAsMCArMSw1MSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTE9DQUxfSVAgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fTE9DQUxfSVAgXC0gZ2V0IGxvY2FsIElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MT0NBTF9JUCwgY2hhciAqKmlwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAorc3RyaW5nIGhvbGRpbmcgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGVuZCBvZiBtb3N0IHJlY2VudCBjb25uZWN0aW9uIGRvbmUKK3dpdGggdGhpcyBcZkJjdXJsXGZQIGhhbmRsZS4gVGhpcyBzdHJpbmcgbWF5IGJlIElQdjYgd2hlbiB0aGF0IGlzCitlbmFibGVkLiBOb3RlIHRoYXQgeW91IGdldCBhIHBvaW50ZXIgdG8gYSBtZW1vcnkgYXJlYSB0aGF0IHdpbGwgYmUgcmUtdXNlZCBhdAorbmV4dCByZXF1ZXN0IHNvIHlvdSBuZWVkIHRvIGNvcHkgdGhlIHN0cmluZyBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZQoraW5mb3JtYXRpb24uCisKK1RoZSBcZkJpcFxmUCBwb2ludGVyIHdpbGwgYmUgTlVMTCBvciBwb2ludGluZyB0byBwcml2YXRlIG1lbW9yeSB5b3UgTVVTVCBOT1QKK2ZyZWUgLSBpdCBnZXRzIGZyZWVkIHdoZW4geW91IGNhbGwgXGZJY3VybF9lYXN5X2NsZWFudXAoMylcZlAgb24gdGhlCitjb3JyZXNwb25kaW5nIENVUkwgaGFuZGxlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX1BSSU1BUllfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfUE9SVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhN2Y0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MT0NBTF9QT1JULjMKQEAgLTAsMCArMSw0MyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTE9DQUxfUE9SVCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19MT0NBTF9QT1JUIFwtIGdldCB0aGUgbGF0ZXN0IGxvY2FsIHBvcnQgbnVtYmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MT0NBTF9QT1JULCBsb25nICpwb3J0cCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBsb2NhbCBwb3J0IG51bWJlciBvZiB0aGUgbW9zdCByZWNlbnQKK2Nvbm5lY3Rpb24gZG9uZSB3aXRoIHRoaXMgXGZCY3VybFxmUCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjIxLjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fUFJJTUFSWV9QT1JUICIoMyksICIgQ1VSTElORk9fTE9DQUxfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODA1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMKQEAgLTAsMCArMSw0NCBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX05BTUVMT09LVVBfVElNRSBcLSBnZXQgdGhlIG5hbWUgbG9va3VwIHRpbWUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX05BTUVMT09LVVBfVElNRSwgZG91YmxlICp0aW1lcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmcm9tIHRoZSBzdGFydAordW50aWwgdGhlIG5hbWUgcmVzb2x2aW5nIHdhcyBjb21wbGV0ZWQuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX05VTV9DT05ORUNUUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTlVNX0NPTk5FQ1RTLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZmY1MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX05VTV9DT05ORUNUUy4zCkBAIC0wLDAgKzEsNDYgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX05VTV9DT05ORUNUUyAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19OVU1fQ09OTkVDVFMgXC0gZ2V0IG51bWJlciBvZiBjcmVhdGVkIGNvbm5lY3Rpb25zCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19OVU1fQ09OTkVDVFMsIGxvbmcgKm51bXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBob3cgbWFueSBuZXcgY29ubmVjdGlvbnMgbGliY3VybCBoYWQgdG8KK2NyZWF0ZSB0byBhY2hpZXZlIHRoZSBwcmV2aW91cyB0cmFuc2ZlciAob25seSB0aGUgc3VjY2Vzc2Z1bCBjb25uZWN0cyBhcmUKK2NvdW50ZWQpLiAgQ29tYmluZWQgd2l0aCBcZklDVVJMSU5GT19SRURJUkVDVF9DT1VOVCgzKVxmUCB5b3UgYXJlIGFibGUgdG8ga25vdworaG93IG1hbnkgdGltZXMgbGliY3VybCBzdWNjZXNzZnVsbHkgcmV1c2VkIGV4aXN0aW5nIGNvbm5lY3Rpb24ocykgb3Igbm90LiAgU2VlCit0aGUgY29ubmVjdGlvbiBvcHRpb25zIG9mIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgdG8gc2VlIGhvdyBsaWJjdXJsIHRyaWVzCit0byBtYWtlIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8gc2F2ZSB0aW1lLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xMi4zCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fT1NfRVJSTk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX09TX0VSUk5PLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2ZDQwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX09TX0VSUk5PLjMKQEAgLTAsMCArMSw0MyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fT1NfRVJSTk8gMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19PU19FUlJOTyBcLSBnZXQgZXJybm8gbnVtYmVyIGZyb20gbGFzdCBjb25uZWN0IGZhaWx1cmUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX09TX0VSUk5PLCBsb25nICplcnJub3ApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgZXJybm8gdmFyaWFibGUgZnJvbSBhIGNvbm5lY3QgZmFpbHVyZS4KK05vdGUgdGhhdCB0aGUgdmFsdWUgaXMgb25seSBzZXQgb24gZmFpbHVyZSwgaXQgaXMgbm90IHJlc2V0IHVwb24gYSBzdWNjZXNzZnVsCitvcGVyYXRpb24uIFRoZSBudW1iZXIgaXMgT1MgYW5kIHN5c3RlbSBzcGVjaWZpYy4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTIuMgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDQ1ZWEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS4zCkBAIC0wLDAgKzEsNDcgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBcLSBnZXQgdGhlIHRpbWUgdW50aWwgdGhlIGZpbGUgdHJhbnNmZXIgc3RhcnQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUsIGRvdWJsZSAqdGltZXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rIGZyb20gdGhlCitzdGFydCB1bnRpbCB0aGUgZmlsZSB0cmFuc2ZlciBpcyBqdXN0IGFib3V0IHRvIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbAorcHJlLXRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKK3Byb3RvY29sKHMpIGludm9sdmVkLiBJdCBkb2VzIFxmSW5vdFxmUCBpbnZvbHZlIHRoZSBzZW5kaW5nIG9mIHRoZSBwcm90b2NvbC0KK3NwZWNpZmljIHJlcXVlc3QgdGhhdCB0cmlnZ2VycyBhIHRyYW5zZmVyLgorCitTZWUgYWxzbyB0aGUgVElNRVMgb3ZlcnZpZXcgaW4gdGhlIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIG1hbiBwYWdlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX0lQLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX0lQLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyNzZlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSSU1BUllfSVAuMwpAQCAtMCwwICsxLDQ5IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19QUklNQVJZX0lQIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1BSSU1BUllfSVAgXC0gZ2V0IElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19QUklNQVJZX0lQLCBjaGFyICoqaXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBwb2ludGVyIHRvIGEgemVyby10ZXJtaW5hdGVkCitzdHJpbmcgaG9sZGluZyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgbW9zdCByZWNlbnQgY29ubmVjdGlvbiBkb25lIHdpdGggdGhpcworXGZCY3VybFxmUCBoYW5kbGUuIFRoaXMgc3RyaW5nIG1heSBiZSBJUHY2IHdoZW4gdGhhdCBpcyBlbmFibGVkLiBOb3RlIHRoYXQgeW91CitnZXQgYSBwb2ludGVyIHRvIGEgbWVtb3J5IGFyZWEgdGhhdCB3aWxsIGJlIHJlLXVzZWQgYXQgbmV4dCByZXF1ZXN0IHNvIHlvdQorbmVlZCB0byBjb3B5IHRoZSBzdHJpbmcgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgaW5mb3JtYXRpb24uCisKK1RoZSBcZkJpcFxmUCBwb2ludGVyIHdpbGwgYmUgTlVMTCBvciBwb2ludGluZyB0byBwcml2YXRlIG1lbW9yeSB5b3UgTVVTVCBOT1QKK2ZyZWUgLSBpdCBnZXRzIGZyZWVkIHdoZW4geW91IGNhbGwgXGZJY3VybF9lYXN5X2NsZWFudXAoMylcZlAgb24gdGhlCitjb3JyZXNwb25kaW5nIENVUkwgaGFuZGxlLgorLlNIIFBST1RPQ09MUworLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTkuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19QUklNQVJZX1BPUlQgIigzKSwgIiBDVVJMSU5GT19MT0NBTF9JUCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX1BPUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSSU1BUllfUE9SVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZWQ2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX1BPUlQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19QUklNQVJZX1BPUlQgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUFJJTUFSWV9QT1JUIFwtIGdldCB0aGUgbGF0ZXN0IGRlc3RpbmF0aW9uIHBvcnQgbnVtYmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19QUklNQVJZX1BPUlQsIGxvbmcgKnBvcnRwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGRlc3RpbmF0aW9uIHBvcnQgb2YgdGhlIG1vc3QgcmVjZW50Citjb25uZWN0aW9uIGRvbmUgd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJJVkFURS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJJVkFURS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZmU5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklWQVRFLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUFJJVkFURSAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1BSSVZBVEUgXC0gZ2V0IHRoZSBwcml2YXRlIHBvaW50ZXIKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BSSVZBVEUsIGNoYXIgKipwcml2YXRlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhCithc3NvY2lhdGVkIHdpdGggdGhlIGN1cmwgaGFuZGxlIChzZXQgd2l0aCB0aGUgXGZJQ1VSTE9QVF9QUklWQVRFKDMpXGZQKS4KK1BsZWFzZSBub3RlIHRoYXQgZm9yIGludGVybmFsIHJlYXNvbnMsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNoYXIKK3BvaW50ZXIsIGFsdGhvdWdoIGVmZmVjdGl2ZWx5IGJlaW5nIGEgJ3ZvaWQgKicuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjMKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTE9QVF9QUklWQVRFICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3YzViOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwgXC0gZ2V0IGF2YWlsYWJsZSBIVFRQIHByb3h5IGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTCwgbG9uZyAqYXV0aHApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KK21ldGhvZChzKSBhdmFpbGFibGUgYWNjb3JkaW5nIHRvIHRoZSBwcmV2aW91cyByZXNwb25zZS4gVGhlIG1lYW5pbmcgb2YgdGhlCitiaXRzIGlzIGV4cGxhaW5lZCBpbiB0aGUgXGZJQ1VSTE9QVF9QUk9YWUFVVEgoMylcZlAgb3B0aW9uIGZvcgorXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjgKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRURJUkVDVF9DT1VOVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTFlYmJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SRURJUkVDVF9DT1VOVCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9DT1VOVCBcLSBnZXQgdGhlIG51bWJlciBvZiByZWRpcmVjdHMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JFRElSRUNUX0NPVU5ULCBsb25nICpjb3VudHApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHJlZGlyZWN0aW9ucyB0aGF0IHdlcmUKK2FjdHVhbGx5IGZvbGxvd2VkLgorLlNIIFBST1RPQ09MUworSFRUUChTKQorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuOS43CisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWU2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRURJUkVDVF9USU1FLjMKQEAgLTAsMCArMSw0NiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUkVESVJFQ1RfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9USU1FIFwtIGdldCB0aGUgdGltZSBmb3IgYWxsIHJlZGlyZWN0aW9uIHN0ZXBzCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19SRURJUkVDVF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmb3IKK2FsbCByZWRpcmVjdGlvbiBzdGVwcyBpbmNsdWRlIG5hbWUgbG9va3VwLCBjb25uZWN0LCBwcmV0cmFuc2ZlciBhbmQgdHJhbnNmZXIKK2JlZm9yZSBmaW5hbCB0cmFuc2FjdGlvbiB3YXMgc3RhcnRlZC4gQ1VSTElORk9fUkVESVJFQ1RfVElNRSBjb250YWlucyB0aGUKK2NvbXBsZXRlIGV4ZWN1dGlvbiB0aW1lIGZvciBtdWx0aXBsZSByZWRpcmVjdGlvbnMuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjkuNworLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFRElSRUNUX1VSTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVVJMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiZjcyNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFRElSRUNUX1VSTC4zCkBAIC0wLDAgKzEsNDUgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1JFRElSRUNUX1VSTCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9VUkwgXC0gZ2V0IHRoZSBVUkwgYSByZWRpcmVjdCB3b3VsZCBnbyB0bworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUkVESVJFQ1RfVVJMLCBjaGFyICoqdXJscCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIFVSTCBhIHJlZGlyZWN0IFxmSXdvdWxkXGZQCit0YWtlIHlvdSB0byBpZiB5b3Ugd291bGQgZW5hYmxlIFxmSUNVUkxPUFRfRk9MTE9XTE9DQVRJT04oMylcZlAuIFRoaXMgY2FuIGNvbWUKK3ZlcnkgaGFuZHkgaWYgeW91IHRoaW5rIHVzaW5nIHRoZSBidWlsdC1pbiBsaWJjdXJsIHJlZGlyZWN0IGxvZ2ljIGlzbid0IGdvb2QKK2Vub3VnaCBmb3IgeW91IGJ1dCB5b3Ugd291bGQgc3RpbGwgcHJlZmVyIHRvIGF2b2lkIGltcGxlbWVudGluZyBhbGwgdGhlIG1hZ2ljCitvZiBmaWd1cmluZyBvdXQgdGhlIG5ldyBVUkwuCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xOC4yCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVFVRVNUX1NJWkUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg1NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUkVRVUVTVF9TSVpFIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUkVRVUVTVF9TSVpFIFwtIGdldCBzaXplIG9mIHNlbnQgcmVxdWVzdAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUkVRVUVTVF9TSVpFLCBsb25nICpzaXplcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpc3N1ZWQKK3JlcXVlc3RzLiBUaGlzIGlzIHNvIGZhciBvbmx5IGZvciBIVFRQIHJlcXVlc3RzLiBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgbW9yZQordGhhbiBvbmUgcmVxdWVzdCBpZiBcZklDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OKDMpXGZQIGlzIGVuYWJsZWQuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19IRUFERVJfU0laRSAiKDMpLCAiCisuQlIgQ1VSTElORk9fU0laRV9ET1dOTE9BRCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVNQT05TRV9DT0RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVNQT05TRV9DT0RFLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmNDg0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFU1BPTlNFX0NPREUuMwpAQCAtMCwwICsxLDYwIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SRVNQT05TRV9DT0RFIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JFU1BPTlNFX0NPREUgXC0gZ2V0IHRoZSBsYXN0IHJlc3BvbnNlIGNvZGUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsIGxvbmcgKmNvZGVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgSFRUUCwgRlRQIG9yIFNNVFAKK3Jlc3BvbnNlIGNvZGUuIFRoaXMgb3B0aW9uIHdhcyBwcmV2aW91c2x5IGtub3duIGFzIENVUkxJTkZPX0hUVFBfQ09ERSBpbgorbGliY3VybCA3LjEwLjcgYW5kIGVhcmxpZXIuIFRoZSBzdG9yZWQgdmFsdWUgd2lsbCBiZSB6ZXJvIGlmIG5vIHNlcnZlcgorcmVzcG9uc2UgY29kZSBoYXMgYmVlbiByZWNlaXZlZC4gTm90ZSB0aGF0IGEgcHJveHkncyBDT05ORUNUIHJlc3BvbnNlIHNob3VsZAorYmUgcmVhZCB3aXRoIFxmSUNVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUoMylcZlAgYW5kIG5vdCB0aGlzLgorCitTdXBwb3J0IGZvciBTTVRQIHJlc3BvbnNlcyBhZGRlZCBpbiA3LjI1LjAuCisuU0ggUFJPVE9DT0xTCitIVFRQLCBGVFAgYW5kIFNNVFAKKy5TSCBFWEFNUExFCisubmYKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBDVVJMY29kZSByZXM7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKyAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisgIGlmKHJlcyA9PSBDVVJMRV9PSykgeworICAgIGxvbmcgcmVzcG9uc2VfY29kZTsKKyAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9uc2VfY29kZSk7CisgIH0KKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7Cit9CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTAuOC4gQ1VSTElORk9fSFRUUF9DT0RFIHdhcyBhZGRlZCBpbiA3LjQuMS4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERSAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyZmRlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JUU1BfQ0xJRU5UX0NTRVEuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUSBcLSBnZXQgdGhlIG5leHQgUlRTUCBjbGllbnQgQ1NlcQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUSwgbG9uZyAqY3NlcSk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBuZXh0IENTZXEgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlCithcHBsaWNhdGlvbi4KKy5TSCBQUk9UT0NPTFMKK1JUU1AKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjIwLjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NTRVFfUkVDVi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2QxMzE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SVFNQX0NTRVFfUkVDViAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SVFNQX0NTRVFfUkVDViBcLSBnZXQgdGhlIHJlY2VudGx5IHJlY2VpdmVkIENTZXEKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWLCBsb25nICpjc2VxKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50bHkgcmVjZWl2ZWQgQ1NlcSBmcm9tIHRoZQorc2VydmVyLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGVuY291bnRlcnMgYSBcZklDVVJMRV9SVFNQX0NTRVFfRVJST1JcZlAgdGhlbiB5b3UKK21heSB3aXNoIHRvIHRyb3VibGVzaG9vdCBhbmQvb3IgZml4IHRoZSBDU2VxIG1pc21hdGNoIGJ5IHBlZWtpbmcgYXQgdGhpcwordmFsdWUuCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MWE5MTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX1NFUlZFUl9DU0VRLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUSAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEgXC0gZ2V0IHRoZSBuZXh0IFJUU1Agc2VydmVyIENTZXEKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEsIGxvbmcgKmNzZXEpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBDU2VxIHRoYXQgd2lsbCBiZSBleHBlY3RlZCBieSB0aGUKK2FwcGxpY2F0aW9uLgorCitMbGlzdGVuaW5nIGZvciBzZXJ2ZXIgaW5pdGlhdGVkIHJlcXVlc3RzIGlzIGN1cnJlbnRseSB1bmltcGxlbWVudGVkIQorCitBcHBsaWNhdGlvbnMgd2lzaGluZyB0byByZXN1bWUgYW4gUlRTUCBzZXNzaW9uIG9uIGFub3RoZXIgY29ubmVjdGlvbiBzaG91bGQKK3JldHJpZXZlIHRoaXMgaW5mbyBiZWZvcmUgY2xvc2luZyB0aGUgYWN0aXZlIGNvbm5lY3Rpb24uCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX1NFU1NJT05fSUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRkM2YxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMKQEAgLTAsMCArMSw0OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lEIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JUU1BfU0VTU0lPTl9JRCBcLSBnZXQgUlRTUCBzZXNzaW9uIElECisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQsIGNoYXIgKippZCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCittb3N0IHJlY2VudCBSVFNQIFNlc3Npb24gSUQuCisKK0FwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIHJlc3VtZSBhbiBSVFNQIHNlc3Npb24gb24gYW5vdGhlciBjb25uZWN0aW9uIHNob3VsZAorcmV0cmlldmUgdGhpcyBpbmZvIGJlZm9yZSBjbG9zaW5nIHRoZSBhY3RpdmUgY29ubmVjdGlvbi4KKworVGhlIFxmQmlkXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDM5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TSVpFX0RPV05MT0FELjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU0laRV9ET1dOTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TSVpFX0RPV05MT0FEIFwtIGdldCB0aGUgbnVtYmVyIG9mIGRvd25sb2FkZWQgYnl0ZXMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQsIGRvdWJsZSAqZGxwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZQorZG93bmxvYWRlZC4gIFRoZSBhbW91bnQgaXMgb25seSBmb3IgdGhlIGxhdGVzdCB0cmFuc2ZlciBhbmQgd2lsbCBiZSByZXNldAorYWdhaW4gZm9yIGVhY2ggbmV3IHRyYW5zZmVyLiBUaGlzIGNvdW50cyBhY3R1YWwgcGF5bG9hZCBkYXRhLCB3aGF0J3MgYWxzbworY29tbW9ubHkgY2FsbGVkIGJvZHkuIEFsbCBtZXRhIGFuZCBoZWFkZXIgZGF0YSBhcmUgZXhjbHVkZWQgYW5kIHdpbGwgbm90IGJlCitjb3VudGVkIGluIHRoaXMgbnVtYmVyLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TSVpFX1VQTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9VUExPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzRjNmRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9VUExPQUQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TSVpFX1VQTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TSVpFX1VQTE9BRCBcLSBnZXQgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBieXRlcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU0laRV9VUExPQUQsIGRvdWJsZSAqdXBsb2FkcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyB0aGF0IHdlcmUKK3VwbG9hZGVkLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TUEVFRF9ET1dOTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFjNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCBcLSBnZXQgZG93bmxvYWQgc3BlZWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1NQRUVEX0RPV05MT0FELCBkb3VibGUgKnNwZWVkKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgYXZlcmFnZSBkb3dubG9hZCBzcGVlZCB0aGF0IGN1cmwKK21lYXN1cmVkIGZvciB0aGUgY29tcGxldGUgZG93bmxvYWQuIE1lYXN1cmVkIGluIGJ5dGVzL3NlY29uZC4KKy5TSCBQUk9UT0NPTFMKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19TUEVFRF9VUExPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfVVBMT0FELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TUEVFRF9VUExPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzllYTFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfVVBMT0FELjMKQEAgLTAsMCArMSw0MiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU1BFRURfVVBMT0FEIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1NQRUVEX1VQTE9BRCBcLSBnZXQgdXBsb2FkIHNwZWVkCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19TUEVFRF9VUExPQUQsIGRvdWJsZSAqc3BlZWQpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwKK21lYXN1cmVkIGZvciB0aGUgY29tcGxldGUgdXBsb2FkLiBNZWFzdXJlZCBpbiBieXRlcy9zZWNvbmQuCisuU0ggUFJPVE9DT0xTCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1NMX0VOR0lORVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9FTkdJTkVTLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlYmZjOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9FTkdJTkVTLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU1NMX0VOR0lORVMgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TU0xfRU5HSU5FUyBcLSBnZXQgYW4gc2xpc3Qgb2YgT3BlblNTTCBjcnlwdG8tZW5naW5lcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1NMX0VOR0lORVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqKmVuZ2luZV9saXN0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyB0aGUgYWRkcmVzcyBvZiBhICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB0byByZWNlaXZlIGEgbGlua2VkLWxpc3Qgb2YKK09wZW5TU0wgY3J5cHRvLWVuZ2luZXMgc3VwcG9ydGVkLiBOb3RlIHRoYXQgZW5naW5lcyBhcmUgbm9ybWFsbHkgaW1wbGVtZW50ZWQKK2luIHNlcGFyYXRlIGR5bmFtaWMgbGlicmFyaWVzLiBIZW5jZSBub3QgYWxsIHRoZSByZXR1cm5lZCBlbmdpbmVzIG1heSBiZQorYXZhaWxhYmxlIGF0IHJ1bi10aW1lLiBcZkJOT1RFOlxmUCB5b3UgbXVzdCBjYWxsIFxmSWN1cmxfc2xpc3RfZnJlZV9hbGwoMylcZlAKK29uIHRoZSBsaXN0IHBvaW50ZXIgb25jZSB5b3UncmUgZG9uZSB3aXRoIGl0LCBhcyBsaWJjdXJsIHdpbGwgbm90IGZyZWUgdGhlCitkYXRhIGZvciB5b3UuCisuU0ggUFJPVE9DT0xTCitBbGwgVExTIGJhc2VkIG9uZXMuCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xMi4zLiBBdmFpbGFibGUgaW4gT3BlblNTTCBidWlsZHMgd2l0aCAiZW5naW5lIiBzdXBwb3J0LgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODdjY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC4zCkBAIC0wLDAgKzEsNDMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIFwtIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBjZXJ0aWZpY2F0aW9uIHZlcmlmaWNhdGlvbgorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCwgbG9uZyAqcmVzdWx0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHJlc3VsdCBvZiB0aGUgY2VydGlmaWNhdGlvbgordmVyaWZpY2F0aW9uIHRoYXQgd2FzIHJlcXVlc3RlZCAodXNpbmcgdGhlIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVBFRVIoMylcZlAKK29wdGlvbi4KKy5TSCBQUk9UT0NPTFMKK0FsbCB1c2luZyBUTFMKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjUKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NjQzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUuMwpAQCAtMCwwICsxLDQ2IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FIFwtIGdldCB0aGUgdGltZSB1bnRpbCB0aGUgZmlyc3QgYnl0ZSBpcyByZWNlaXZlZAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQorc3RhcnQgdW50aWwgdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQgYnkgbGliY3VybC4gVGhpcyBpbmNsdWRlcworXGZJQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSgzKVxmUCBhbmQgYWxzbyB0aGUgdGltZSB0aGUgc2VydmVyIG5lZWRzIHRvCitjYWxjdWxhdGUgdGhlIHJlc3VsdC4KKworU2VlIGFsc28gdGhlIFRJTUVTIG92ZXJ2aWV3IGluIHRoZSBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBtYW4gcGFnZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuOS4yCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVExTX1NFU1NJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TRVNTSU9OLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjM2I2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TRVNTSU9OLjMKQEAgLTAsMCArMSw2MCBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fVExTX1NFU1NJT04gMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fVExTX1NFU1NJT04gXC0gZ2V0IFRMUyBzZXNzaW9uIGluZm8KKy5TSCBTWU5PUFNJUworLm5mCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fVExTX1NFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqKnNlc3Npb24pOworLlNIIERFU0NSSVBUSU9OCitcZkJUaGlzIG9wdGlvbiBoYXMgYmVlbiBzdXBlcnNlZGVkXGZQIGJ5IFxmSUNVUkxJTkZPX1RMU19TU0xfUFRSKDMpXGZQIHdoaWNoCit3YXMgYWRkZWQgaW4gNy40OC4wLiBUaGUgb25seSByZWFzb24geW91IHdvdWxkIHVzZSB0aGlzIG9wdGlvbiBpbnN0ZWFkIGlzIGlmCit5b3UgY291bGQgYmUgdXNpbmcgYSB2ZXJzaW9uIG9mIGxpYmN1cmwgZWFybGllciB0aGFuIDcuNDguMC4KKworVGhpcyBvcHRpb24gaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBcZklDVVJMSU5GT19UTFNfU1NMX1BUUigzKVxmUCBleGNlcHQgaW4gdGhlCitjYXNlIG9mIE9wZW5TU0wuIElmIHRoZSBzZXNzaW9uIFxmSWJhY2tlbmRcZlAgaXMgQ1VSTFNTTEJBQ0tFTkRfT1BFTlNTTCB0aGUKK3Nlc3Npb24gXGZJaW50ZXJuYWxzXGZQIHBvaW50ZXIgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgb3B0aW9uOgorCitDVVJMSU5GT19UTFNfU0VTU0lPTiBPcGVuU1NMIHNlc3Npb24gXGZJaW50ZXJuYWxzXGZQIGlzIFNTTF9DVFggKi4KKworQ1VSTElORk9fVExTX1NTTF9QVFIgT3BlblNTTCBzZXNzaW9uIFxmSWludGVybmFsc1xmUCBpcyBTU0wgKi4KKworWW91IGNhbiBvYnRhaW4gYW4gU1NMX0NUWCBwb2ludGVyIGZyb20gYW4gU1NMIHBvaW50ZXIgdXNpbmcgT3BlblNTTCBmdW5jdGlvbgorU1NMX2dldF9TU0xfQ1RYLiBUaGVyZWZvcmUgdW5sZXNzIHlvdSBuZWVkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZgorbGliY3VybCB1c2UgXGZJQ1VSTElORk9fVExTX1NTTF9QVFIoMylcZlAuIFJlZmVyIHRvIHRoYXQgZG9jdW1lbnQgZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorLlNIIFBST1RPQ09MUworQWxsIFRMUy1iYXNlZAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMzQuMCwgYW5kIHN1cHBvcnRlZCBPcGVuU1NMLCBHbnVUTFMsIE5TUyBhbmQgZ3NraXQgb25seSB1cCB1bnRpbAorNy40OC4wIHdhcyByZWxlYXNlZC4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fVExTX1NTTF9QVFIgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVExTX1NTTF9QVFIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TU0xfUFRSLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjZjBmYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TU0xfUFRSLjMKQEAgLTAsMCArMSwxNDEgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1RMU19TU0xfUFRSIDMgIjIzIEZlYiAyMDE2IiAibGliY3VybCA3LjQ4LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1RMU19TRVNTSU9OLCBDVVJMSU5GT19UTFNfU1NMX1BUUiBcLSBnZXQgVExTIHNlc3Npb24gaW5mbworLlNIIFNZTk9QU0lTCisubmYKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UTFNfU1NMX1BUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICoqc2Vzc2lvbik7CisKKy8qIGlmIHlvdSBuZWVkIGNvbXBhdGliaWxpdHkgd2l0aCBsaWJjdXJsIDwgNy40OC4wIHVzZQorICAgQ1VSTElORk9fVExTX1NFU1NJT04gaW5zdGVhZDogKi8KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UTFNfU0VTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICoqc2Vzc2lvbik7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgJ3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIConLiAgVGhlIHBvaW50ZXIgd2lsbCBiZQoraW5pdGlhbGl6ZWQgdG8gcmVmZXIgdG8gYSAnc3RydWN0IGN1cmxfdGxzc2Vzc2lvbmluZm8gKicgdGhhdCB3aWxsIGNvbnRhaW4gYW4KK2VudW0gaW5kaWNhdGluZyB0aGUgU1NMIGxpYnJhcnkgdXNlZCBmb3IgdGhlIGhhbmRzaGFrZSBhbmQgYSBwb2ludGVyIHRvIHRoZQorcmVzcGVjdGl2ZSBpbnRlcm5hbCBUTFMgc2Vzc2lvbiBzdHJ1Y3R1cmUgb2YgdGhpcyB1bmRlcmx5aW5nIFNTTCBsaWJyYXJ5LgorCitUaGlzIG9wdGlvbiBtYXkgYmUgdXNlZnVsIGZvciBleGFtcGxlIHRvIGV4dHJhY3QgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gaW4gYQorZm9ybWF0IGNvbnZlbmllbnQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZywgc3VjaCBhcyBtYW51YWwgdmFsaWRhdGlvbi4gUmVmZXIgdG8KK3RoZSBcZkJMSU1JVEFUSU9OU1xmUCBzZWN0aW9uLgorCisubmYKK3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKKyAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7CisgIHZvaWQgKmludGVybmFsczsKK307CisuZmkKKworVGhlIFxmSWJhY2tlbmRcZlAgc3RydWN0IG1lbWJlciBpcyBvbmUgb2YgdGhlIGRlZmluZXMgaW4gdGhlIENVUkxTU0xCQUNLRU5EXyoKK3NlcmllczogQ1VSTFNTTEJBQ0tFTkRfTk9ORSAod2hlbiBidWlsdCB3aXRob3V0IFRMUyBzdXBwb3J0KSwKK0NVUkxTU0xCQUNLRU5EX0FYVExTLCBDVVJMU1NMQkFDS0VORF9DWUFTU0wsIENVUkxTU0xCQUNLRU5EX0RBUldJTlNTTCwKK0NVUkxTU0xCQUNLRU5EX0dOVVRMUywgQ1VSTFNTTEJBQ0tFTkRfR1NLSVQsIENVUkxTU0xCQUNLRU5EX01CRURUTFMsCitDVVJMU1NMQkFDS0VORF9OU1MsIENVUkxTU0xCQUNLRU5EX09QRU5TU0wsIENVUkxTU0xCQUNLRU5EX1BPTEFSU1NMIG9yCitDVVJMU1NMQkFDS0VORF9TQ0hBTk5FTC4gKE5vdGUgdGhhdCB0aGUgT3BlblNTTCBmb3JrcyBhcmUgYWxsIHJlcG9ydGVkIGFzIGp1c3QKK09wZW5TU0wgaGVyZS4pCisKK1RoZSBcZklpbnRlcm5hbHNcZlAgc3RydWN0IG1lbWJlciB3aWxsIHBvaW50IHRvIGEgVExTIGxpYnJhcnkgc3BlY2lmaWMgcG9pbnRlcgorZm9yIHRoZSBhY3RpdmUgKCJpbiB1c2UiKSBTU0wgY29ubmVjdGlvbiwgd2l0aCB0aGUgZm9sbG93aW5nIHVuZGVybHlpbmcgdHlwZXM6CisuUlMKKy5JUCBHbnVUTFMKK2dudXRsc19zZXNzaW9uX3QKKy5JUCBnc2tpdAorZ3NrX2hhbmRsZQorLklQIE5TUworUFJGaWxlRGVzYyAqCisuSVAgT3BlblNTTAorQ1VSTElORk9fVExTX1NFU1NJT046IFNTTF9DVFggKgorCitDVVJMSU5GT19UTFNfU1NMX1BUUjogU1NMICoKKy5SRQorU2luY2UgNy40OC4wIHRoZSBcZklpbnRlcm5hbHNcZlAgbWVtYmVyIGNhbiBwb2ludCB0byB0aGVzZSBvdGhlciBTU0wgYmFja2VuZHMKK2FzIHdlbGw6CisuUlMKKy5JUCBheFRMUworU1NMICoKKy5JUCBtYmVkVExTCittYmVkdGxzX3NzbF9jb250ZXh0ICoKKy5JUCBQb2xhclNTTAorc3NsX2NvbnRleHQgKgorLklQICJTZWN1cmUgQ2hhbm5lbCAoV2luU1NMKSIKK0N0eHRIYW5kbGUgKgorLklQICJTZWN1cmUgVHJhbnNwb3J0IChEYXJ3aW5TU0wpIgorU1NMQ29udGV4dCAqCisuSVAgIldvbGZTU0wgKGZvcm1lcmx5IEN5YVNTTCkiCitTU0wgKgorLlJFCisKK0lmIHRoZSBcZklpbnRlcm5hbHNcZlAgcG9pbnRlciBpcyBOVUxMIHRoZW4gZWl0aGVyIHRoZSBTU0wgYmFja2VuZCBpcyBub3QKK3N1cHBvcnRlZCwgYW4gU1NMIHNlc3Npb24gaGFzIG5vdCB5ZXQgYmVlbiBlc3RhYmxpc2hlZCBvciB0aGUgY29ubmVjdGlvbiBpcyBubworbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWFzeSBoYW5kbGUgKGVnIGN1cmxfZWFzeV9wZXJmb3JtIGhhcyByZXR1cm5lZCkuCisuU0ggTElNSVRBVElPTlMKK1xmQlRoaXMgb3B0aW9uIGhhcyBzb21lIGxpbWl0YXRpb25zIHRoYXQgY291bGQgbWFrZSBpdCB1bnNhZmUgd2hlbiBpdCBjb21lcyB0bwordGhlIG1hbnVhbCB2ZXJpZmljYXRpb24gb2YgY2VydGlmaWNhdGVzLlxmUAorCitUaGlzIG9wdGlvbiBvbmx5IHJldHJpZXZlcyB0aGUgZmlyc3QgaW4tdXNlIFNTTCBzZXNzaW9uIHBvaW50ZXIgZm9yIHlvdXIgZWFzeQoraGFuZGxlLCBob3dldmVyIHlvdXIgZWFzeSBoYW5kbGUgbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBpbi11c2UgU1NMIHNlc3Npb24gaWYKK3VzaW5nIEZUUCBvdmVyIFNTTC4gVGhhdCBpcyBiZWNhdXNlIHRoZSBGVFAgcHJvdG9jb2wgaGFzIGEgY29udHJvbCBjaGFubmVsIGFuZAorYSBkYXRhIGNoYW5uZWwgYW5kIG9uZSBvciBib3RoIG1heSBiZSBvdmVyIFNTTC4gXGZCQ3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0bworcmV0cmlldmUgYSBzZWNvbmQgaW4tdXNlIFNTTCBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCBhbiBlYXN5IGhhbmRsZS5cZlAKKworVGhpcyBvcHRpb24gaGFzIG5vdCBiZWVuIHRob3JvdWdobHkgdGVzdGVkIHdpdGggcGxhaW50ZXh0IHByb3RvY29scyB0aGF0IGNhbiBiZQordXBncmFkZWQvZG93bmdyYWRlZCB0by9mcm9tIFNTTDogRlRQLCBTTVRQLCBQT1AzLCBJTUFQIHdoZW4gdXNlZCB3aXRoCitcZklDVVJMT1BUX1VTRV9TU0woMylcZlAuIFRob3VnaCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHJldHJpZXZlIHRoZSBTU0wgcG9pbnRlciwKK2l0J3MgcG9zc2libGUgdGhhdCBiZWZvcmUgeW91IGNhbiBkbyB0aGF0IFxmQmRhdGEgKGluY2x1ZGluZyBhdXRoKSBtYXkgaGF2ZQorYWxyZWFkeSBiZWVuIHNlbnQgb3ZlciBhIGNvbm5lY3Rpb24gYWZ0ZXIgaXQgd2FzIHVwZ3JhZGVkLlxmUAorCitSZW5lZ290aWF0aW9uLiBJZiB1bnNhZmUgcmVuZWdvdGlhdGlvbiBvciByZW5lZ290aWF0aW9uIGluIGEgd2F5IHRoYXQgdGhlCitjZXJ0aWZpY2F0ZSBpcyBhbGxvd2VkIHRvIGNoYW5nZSBpcyBhbGxvd2VkIGJ5IHlvdXIgU1NMIGxpYnJhcnkgdGhpcyBtYXkgb2NjdXIKK2FuZCB0aGUgY2VydGlmaWNhdGUgbWF5IGNoYW5nZSwgYW5kIFxmQmRhdGEgbWF5IGNvbnRpbnVlIHRvIGJlIHNlbnQgb3IgcmVjZWl2ZWQKK2FmdGVyIHJlbmVnb3RpYXRpb24gYnV0IGJlZm9yZSB5b3UgYXJlIGFibGUgdG8gZ2V0IHRoZSAocG9zc2libHkpIGNoYW5nZWQgU1NMCitwb2ludGVyLFxmUCB3aXRoIHRoZSAocG9zc2libHkpIGNoYW5nZWQgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24uCisKK0lmIHlvdSBhcmUgdXNpbmcgT3BlblNTTCBvciB3b2xmU1NMIHRoZW4gXGZJQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OKDMpXGZQIGNhbgorYmUgdXNlZCB0byBzZXQgYSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gY2FsbGJhY2sgaW4gdGhlIENUWC4gVGhhdCBpcyBzYWZlcgordGhhbiB1c2luZyB0aGlzIG9wdGlvbiB0byBwb2xsIGZvciBjZXJ0aWZpY2F0ZSBjaGFuZ2VzIGFuZCBkb2Vzbid0IHN1ZmZlciBmcm9tCithbnkgb2YgdGhlIHByb2JsZW1zIGFib3ZlLiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IGluIGxpYmN1cmwgdG8gc2V0IGEKK3ZlcmlmaWNhdGlvbiBjYWxsYmFjayBmb3IgdGhlIG90aGVyIFNTTCBiYWNrZW5kcy4KKworSG93IGFyZSB5b3UgdXNpbmcgdGhpcyBvcHRpb24/IEFyZSB5b3UgYWZmZWN0ZWQgYnkgYW55IG9mIHRoZXNlIGxpbWl0YXRpb25zPworUGxlYXNlIGxldCB1cyBrbm93IGJ5IG1ha2luZyBhIGNvbW1lbnQgYXQKK2h0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzY4NQorLlNIIFBST1RPQ09MUworQWxsIFRMUy1iYXNlZAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDguMC4KKworVGhpcyBvcHRpb24gc3VwZXJzZWRlcyBcZklDVVJMSU5GT19UTFNfU0VTU0lPTigzKVxmUCB3aGljaCB3YXMgYWRkZWQgaW4gNy4zNC4wLgorVGhpcyBvcHRpb24gaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGF0IG9wdGlvbiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgT3BlblNTTC4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fVExTX1NFU1NJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVE9UQUxfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVE9UQUxfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNjhhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19UT1RBTF9USU1FLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fVE9UQUxfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19UT1RBTF9USU1FIFwtIGdldCB0b3RhbCB0aW1lIG9mIHByZXZpb3VzIHRyYW5zZmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UT1RBTF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSBpbiBzZWNvbmRzIGZvciB0aGUKK3ByZXZpb3VzIHRyYW5zZmVyLCBpbmNsdWRpbmcgbmFtZSByZXNvbHZpbmcsIFRDUCBjb25uZWN0IGV0Yy4gVGhlIGRvdWJsZQorcmVwcmVzZW50cyB0aGUgdGltZSBpbiBzZWNvbmRzLCBpbmNsdWRpbmcgZnJhY3Rpb25zLgorCitTZWUgYWxzbyB0aGUgVElNRVMgb3ZlcnZpZXcgaW4gdGhlIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIG1hbiBwYWdlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFLjMKaW5kZXggNjZjZWFiOC4uYWIyZDJmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DT05URU5UX0xFTkdUSF9QRU5BTFRZX1NJWkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCmluZGV4IDIwM2I2YWMuLjNiNGU4MWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWENPTk5FQ1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhDT05ORUNUUy4zCmluZGV4IDc1OWNlMDguLmVlOWJkY2EgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWENPTk5FQ1RTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYQ09OTkVDVFMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMuMwppbmRleCA3NTIyZDQzLi4yZTAzNTJmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zCmluZGV4IGMyYWRiNDUuLmNhYzNjNzEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMwppbmRleCAyNzgzYTdkLi44MzVjMmJkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HLjMKaW5kZXggYzc5NWM0OC4uNGM3OWIxYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1BJUEVMSU5JTkcuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuMwppbmRleCBlM2VhNGIxLi42NjBhZmVjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMwppbmRleCBjZjZlNmU3Li44YzVmNWQ0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QVVNIREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSERBVEEuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTlmZThhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSERBVEEuMwpAQCAtMCwwICsxLDQ5IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMTU9QVF9QVVNIREFUQSAzICIxIEp1biAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX211bHRpX3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxNT1BUX1BVU0hEQVRBIFwtIHBvaW50ZXIgdG8gcGFzcyB0byBwdXNoIGNhbGxiYWNrCisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMTWNvZGUgY3VybF9tdWx0aV9zZXRvcHQoQ1VSTE0gKmhhbmRsZSwgQ1VSTE1PUFRfUFVTSERBVEEsIHZvaWQgKnBvaW50ZXIpOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1NldCBcZklwb2ludGVyXGZQIHRvIHBhc3MgYXMgdGhlIGxhc3QgYXJndW1lbnQgdG8gdGhlCitcZklDVVJMTU9QVF9QVVNIRlVOQ1RJT04oMylcZlAgY2FsbGJhY2suIFRoZSBwb2ludGVyIHdpbGwgbm90IGJlIHRvdWNoZWQgb3IKK3VzZWQgYnkgbGliY3VybCBpdHNlbGYsIG9ubHkgcGFzc2VkIG9uIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KKy5TSCBERUZBVUxUCitOVUxMCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40NC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxNX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTE1fVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBDVVJMTU9QVF9QVVNIRlVOQ1RJT04gIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIKKy5CUiBDVVJMT1BUX1BJUEVXQUlUICIoMyksICIKKy5CUiBSRkMgNzU0MApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QVVNIRlVOQ1RJT04uMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmUwMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMKQEAgLTAsMCArMSwxMzMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxNT1BUX1BVU0hGVU5DVElPTiAzICIxIEp1biAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX211bHRpX3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxNT1BUX1BVU0hGVU5DVElPTiBcLSBjYWxsYmFjayB0aGF0IGFwcHJvdmVzIG9yIGRlbmllcyBzZXJ2ZXIgcHVzaGVzCisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW0oc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsIHNpemVfdCBudW0pOworY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bmFtZShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgY29uc3QgY2hhciAqbmFtZSk7CisKK2ludCBjdXJsX3B1c2hfY2FsbGJhY2soQ1VSTCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2hlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCk7CisKK0NVUkxNY29kZSBjdXJsX211bHRpX3NldG9wdChDVVJMTSAqaGFuZGxlLCBDVVJMTU9QVF9QVVNIRlVOQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9wdXNoX2NhbGxiYWNrIGZ1bmMpOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoaXMgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgd2hlbiBhIG5ldyBIVFRQLzIgc3RyZWFtIGlzIGJlaW5nIHB1c2hlZCBieSB0aGUKK3NlcnZlciAodXNpbmcgdGhlIFBVU0hfUFJPTUlTRSBmcmFtZSkuIElmIG5vIHB1c2ggY2FsbGJhY2sgaXMgc2V0LCBhbGwgb2ZmZXJlZAorcHVzaGVzIHdpbGwgYmUgZGVuaWVkIGF1dG9tYXRpY2FsbHkuCisuU0ggQ0FMTEJBQ0sgREVTQ1JJUFRJT04KK1RoZSBjYWxsYmFjayBnZXRzIGl0cyBhcmd1bWVudHMgbGlrZSB0aGlzOgorCitcZklwYXJlbnRcZlAgaXMgdGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIG9uIHdoaWNoIHRoaXMgcHVzaCBhcnJpdmVzLiBUaGUgbmV3CitoYW5kbGUgaGFzIGJlZW4gZHVwaGFuZGxlKClkIGZyb20gdGhlIHBhcmVudCwgbWVhbmluZyB0aGF0IGl0IGhhcyBnb3R0ZW4gYWxsCitpdHMgb3B0aW9ucyBpbmhlcml0ZWQuIEl0IGlzIHRoZW4gdXAgdG8gdGhlIGFwcGxpY2F0aW9uIHRvIGFsdGVyIGFueSBvcHRpb25zCitpZiBkZXNpcmVkLgorCitcZkllYXN5XGZQIGlzIGEgbmV3bHkgY3JlYXRlZCBoYW5kbGUgdGhhdCByZXByZXNlbnRzIHRoaXMgdXBjb21pbmcgdHJhbnNmZXIuCisKK1xmSW51bV9oZWFkZXJzXGZQIGlzIHRoZSBudW1iZXIgb2YgbmFtZSt2YWx1ZSBwYWlycyB0aGF0IHdhcyByZWNlaXZlZCBhbmQgY2FuCitiZSBhY2Nlc3NlZAorCitcZkloZWFkZXJzXGZQIGlzIGEgaGFuZGxlIHVzZWQgdG8gYWNjZXNzIHB1c2ggaGVhZGVycyB1c2luZyB0aGUgYWNjZXNzb3IKK2Z1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cuIFRoaXMgb25seSBhY2Nlc3NlcyBhbmQgcHJvdmlkZXMgdGhlIFBVU0hfUFJPTUlTRQoraGVhZGVycywgdGhlIG5vcm1hbCByZXNwb25zZSBoZWFkZXJzIHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIGhlYWRlciBjYWxsYmFjaworYXMgdXN1YWwuCisKK1xmSXVzZXJwXGZQIGlzIHRoZSBwb2ludGVyIHNldCB3aXRoIFxmSUNVUkxNT1BUX1BVU0hEQVRBKDMpXGZQCisKK0lmIHRoZSBjYWxsYmFjayByZXR1cm5zIENVUkxfUFVTSF9PSywgdGhlICdlYXN5JyBoYW5kbGUgd2lsbCBiZSBhZGRlZCB0byB0aGUKK211bHRpIGhhbmRsZSwgdGhlIGNhbGxiYWNrIG11c3Qgbm90IGRvIHRoYXQgYnkgaXRzZWxmLgorCitUaGUgY2FsbGJhY2sgY2FuIGFjY2VzcyBQVVNIX1BST01JU0UgaGVhZGVycyB3aXRoIHR3byBhY2Nlc3NvcgorZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBmcm9tIHdpdGhpbiB0aGlzIGNhbGxiYWNrIGFuZCB0aGV5CitjYW4gb25seSBhY2Nlc3MgdGhlIFBVU0hfUFJPTUlTRSBoZWFkZXJzLiBUaGUgbm9ybWFsIHJlc3BvbnNlIGhlYWRlcnMgd2lsbCBiZQorcGFzc2VkIHRvIHRoZSBoZWFkZXIgY2FsbGJhY2sgZm9yIHB1c2hlZCBzdHJlYW1zIGp1c3QgYXMgZm9yIG5vcm1hbCBzdHJlYW1zLgorLklQIGN1cmxfcHVzaGhlYWRlcl9ieW51bQorUmV0dXJucyB0aGUgaGVhZGVyIGF0IGluZGV4ICdudW0nIChvciBOVUxMKS4gVGhlIHJldHVybmVkIHBvaW50ZXIgcG9pbnRzIHRvIGEKKyJuYW1lOnZhbHVlIiBzdHJpbmcgdGhhdCB3aWxsIGJlIGZyZWVkIHdoZW4gdGhpcyBjYWxsYmFjayByZXR1cm5zLgorLklQIGN1cmxfcHVzaGhlYWRlcl9ieW5hbWUKK1JldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gaGVhZGVyIG5hbWUgKG9yIE5VTEwpLiBUaGlzIGlzIGEgc2hvcnRjdXQgc28KK3RoYXQgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaGF2ZSB0byBsb29wIHRocm91Z2ggYWxsIGhlYWRlcnMgdG8gZmluZCB0aGUgb25lCitpdCBpcyBpbnRlcmVzdGVkIGluLiBUaGUgZGF0YSBwb2ludGVkIHdpbGwgYmUgZnJlZWQgd2hlbiB0aGlzIGNhbGxiYWNrCityZXR1cm5zLiBJZiBtb3JlIHRoYW4gb25lIGhlYWRlciBmaWVsZCB1c2UgdGhlIHNhbWUgbmFtZSwgdGhpcyByZXR1cm5zIG9ubHkKK3RoZSBmaXJzdCBvbmUuCisuU0ggQ0FMTEJBQ0sgUkVUVVJOIFZBTFVFCisuSVAgIkNVUkxfUFVTSF9PSyAoMCkiCitUaGUgYXBwbGljYXRpb24gaGFzIGFjY2VwdGVkIHRoZSBzdHJlYW0gYW5kIGl0IGNhbiBub3cgc3RhcnQgcmVjZWl2aW5nIGRhdGEsCit0aGUgb3duZXJzaGlwIG9mIHRoZSBDVVJMIGhhbmRsZSBoYXMgYmVlbiB0YWtlbiBvdmVyIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKy5JUCAiQ1VSTF9QVVNIX0RFTlkgKDEpIgorVGhlIGNhbGxiYWNrIGRlbmllcyB0aGUgc3RyZWFtIGFuZCBubyBkYXRhIGZvciB0aGlzIHdpbGwgcmVhY2ggdGhlCithcHBsaWNhdGlvbiwgdGhlIGVhc3kgaGFuZGxlIHdpbGwgYmUgZGVzdHJveWVkIGJ5IGxpYmN1cmwuCisuSVAgKgorQWxsIG90aGVyIHJldHVybiBjb2RlcyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCisuU0ggREVGQVVMVAorTlVMTCwgbm8gY2FsbGJhY2sKKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykgKEhUVFAvMiBvbmx5KQorLlNIIEVYQU1QTEUKKy5uZgorLyogb25seSBhbGxvdyBwdXNoZXMgZm9yIGZpbGUgbmFtZXMgc3RhcnRpbmcgd2l0aCAicHVzaC0iICovCitpbnQgcHVzaF9jYWxsYmFjayhDVVJMICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmhlYWRlcnMsCisgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY2hhciAqaGVhZHA7CisgIGludCAqdHJhbnNmZXJzID0gKGludCAqKXVzZXJwOworICBGSUxFICpvdXQ7CisgIGhlYWRwID0gY3VybF9wdXNoaGVhZGVyX2J5bmFtZShoZWFkZXJzLCAiOnBhdGgiKTsKKyAgaWYoaGVhZHAgJiYgIXN0cm5jbXAoaGVhZHAsICIvcHVzaC0iLCA2KSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiVGhlIFBBVEggaXMgJXNcXG4iLCBoZWFkcCk7CisKKyAgICAvKiBzYXZlIHRoZSBwdXNoIGhlcmUgKi8KKyAgICBvdXQgPSBmb3BlbigicHVzaGVkLXN0cmVhbSIsICJ3YiIpOworCisgICAgLyogd3JpdGUgdG8gdGhpcyBmaWxlICovCisgICAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICAgICgqdHJhbnNmZXJzKSsrOyAvKiBvbmUgbW9yZSAqLworCisgICAgcmV0dXJuIENVUkxfUFVTSF9PSzsKKyAgfQorICByZXR1cm4gQ1VSTF9QVVNIX0RFTlk7Cit9CisKK2N1cmxfbXVsdGlfc2V0b3B0KG11bHRpLCBDVVJMTU9QVF9QVVNIRlVOQ1RJT04sIHB1c2hfY2FsbGJhY2spOworY3VybF9tdWx0aV9zZXRvcHQobXVsdGksIENVUkxNT1BUX1BVU0hEQVRBLCAmY291bnRlcik7CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDQuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMTV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxNX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE1PUFRfUFVTSERBVEEgIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIgQ1VSTE9QVF9QSVBFV0FJVCAiKDMpLCAiCisuQlIgUkZDIDc1NDAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVERBVEEuMwppbmRleCBiZjdlNmE3Li5iOWNkYzgzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9TT0NLRVREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfU09DS0VUREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9TT0NLRVRGVU5DVElPTi4zCmluZGV4IGQ2NGZlMTEuLjExMzAyMWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDcgKzIwLDcgQEAKIC5cIiAqCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlRIIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OIDMgIjMgTm92IDIwMTQiICJsaWJjdXJsIDcuMzkuMCIgImN1cmxfbXVsdGlfc2V0b3B0IG9wdGlvbnMiCisuVEggQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04gMyAiMyBOb3YgMjAxNiIgImxpYmN1cmwgNy4zOS4wIiAiY3VybF9tdWx0aV9zZXRvcHQgb3B0aW9ucyIKIC5TSCBOQU1FCiBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTiBcLSBjYWxsYmFjayBpbmZvcm1lZCBhYm91dCB3aGF0IHRvIHdhaXQgZm9yCiAuU0ggU1lOT1BTSVMKQEAgLTI5LDcgKzI5LDcgQEAKIAogaW50IHNvY2tldF9jYWxsYmFjayhDVVJMICplYXN5LCAgICAgIC8qIGVhc3kgaGFuZGxlICovCiAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgcywgLyogc29ja2V0ICovCi0gICAgICAgICAgICAgICAgICAgIGludCB3aGF0LCAgICAgICAgLyogc2VlIGFib3ZlICovCisgICAgICAgICAgICAgICAgICAgIGludCB3aGF0LCAgICAgICAgLyogZGVzY3JpYmVzIHRoZSBzb2NrZXQgKi8KICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcnAsICAgICAvKiBwcml2YXRlIGNhbGxiYWNrIHBvaW50ZXIgKi8KICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc29ja2V0cCk7ICAvKiBwcml2YXRlIHNvY2tldCBwb2ludGVyICovCiAKQEAgLTQ2LDYgKzQ2LDE4IEBACiBjYWxsYmFjaydzIFxmQnVzZXJwXGZQIGFyZ3VtZW50IHdpdGggXGZJQ1VSTE1PUFRfU09DS0VUREFUQSgzKVxmUC4gIFNlZQogXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZvciBtb3JlIGRldGFpbHMgb24gaG93IHRoZSBjYWxsYmFjayBpcyB1c2VkCiBhbmQgc2hvdWxkIHdvcmsuCisKK1RoZSBcZkJ3aGF0XGZQIHBhcmFtZXRlciBpbmZvcm1zIHRoZSBjYWxsYmFjayBvbiB0aGUgc3RhdHVzIG9mIHRoZSBnaXZlbgorc29ja2V0LiBJdCBjYW4gaG9sZCBvbmUgb2YgdGhlc2UgdmFsdWVzOgorLklQIENVUkxfUE9MTF9JTgorV2FpdCBmb3IgaW5jb21pbmcgZGF0YS4gRm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLgorLklQIENVUkxfUE9MTF9PVVQKK1dhaXQgZm9yIG91dGdvaW5nIGRhdGEuIEZvciB0aGUgc29ja2V0IHRvIGJlY29tZSB3cml0YWJsZS4KKy5JUCBDVVJMX1BPTExfSU5PVVQKK1dhaXQgZm9yIGluY29taW5nIGFiZCBvdXRnb2luZyBkYXRhLiBGb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUgb3IKK3dyaXRhYmxlLgorLklQIENVUkxfUE9MTF9SRU1PVkUKK1RoZSBzcGVjaWZpZWQgc29ja2V0L2ZpbGUgZGVzY3JpcHRvciBpcyBubyBsb25nZXIgdXNlZCBieSBsaWJjdXJsLgogLlNIIERFRkFVTFQKIE5VTEwgKG5vIGNhbGxiYWNrKQogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfVElNRVJEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMwppbmRleCA0MTYyN2RhLi45ZDJiNjZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkZVTkNUSU9OLjMKaW5kZXggZjUwOWI0NS4uN2ZjYjdhNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfVElNRVJGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1RJTUVSRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCmluZGV4IGE1MWM4NmEuLjcwMzI1ZmQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsMTEgKzMxLDIxIEBACiBQYXNzIGEgbG9uZyB0ZWxsaW5nIGxpYmN1cmwgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBhCiBzZXJ2ZXIgdG8gY29ubmVjdCBiYWNrIHRvIGxpYmN1cmwgd2hlbiBhbiBhY3RpdmUgRlRQIGNvbm5lY3Rpb24gaXMgdXNlZC4KIC5TSCBERUZBVUxUCi1JZiBubyB0aW1lb3V0IGlzIHNldCwgdGhlIGludGVybmFsIGRlZmF1bHQgb2YgNjAwMDAgKG9uZSBtaW51dGUpIHdpbGwgYmUgdXNlZC4KKzYwMDAwIG1pbGxpc2Vjb25kcwogLlNIIFBST1RPQ09MUwogRlRQCiAuU0ggRVhBTVBMRQotVE9ETworLm5mCitDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImZ0cDovL2V4YW1wbGUuY29tL3BhdGgvZmlsZSIpOworCisgIC8qIHdhaXQgbm8gbW9yZSB0aGFuIDUgc2Vjb25kcyBmb3IgRlRQIHNlcnZlciByZXNwb25zZXMgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMsIDUwMDBMKTsKKworICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKK30KKy5maQogLlNIIEFWQUlMQUJJTElUWQogQWRkZWQgaW4gNy4yNC4wCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVF9FTkNPRElORy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuMwppbmRleCAzNzY3OTlhLi5jMzEyNjMxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVF9FTkNPRElORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiwyNyArMzIsNDkgQEAKIAogU2V0cyB0aGUgY29udGVudHMgb2YgdGhlIEFjY2VwdC1FbmNvZGluZzogaGVhZGVyIHNlbnQgaW4gYSBIVFRQIHJlcXVlc3QsIGFuZAogZW5hYmxlcyBkZWNvZGluZyBvZiBhIHJlc3BvbnNlIHdoZW4gYSBDb250ZW50LUVuY29kaW5nOiBoZWFkZXIgaXMgcmVjZWl2ZWQuCi1UaHJlZSBlbmNvZGluZ3MgYXJlIHN1cHBvcnRlZDogXGZJaWRlbnRpdHlcZlAsIHdoaWNoIGRvZXMgbm90aGluZywKK1RocmVlIGVuY29kaW5ncyBhcmUgc3VwcG9ydGVkOiBcZklpZGVudGl0eVxmUCwgbWVhbmluZyBub24tY29tcHJlc3NlZCwKIFxmSWRlZmxhdGVcZlAgd2hpY2ggcmVxdWVzdHMgdGhlIHNlcnZlciB0byBjb21wcmVzcyBpdHMgcmVzcG9uc2UgdXNpbmcgdGhlCiB6bGliIGFsZ29yaXRobSwgYW5kIFxmSWd6aXBcZlAgd2hpY2ggcmVxdWVzdHMgdGhlIGd6aXAgYWxnb3JpdGhtLgogCiBJZiBhIHplcm8tbGVuZ3RoIHN0cmluZyBpcyBzZXQgbGlrZSAiIiwgdGhlbiBhbiBBY2NlcHQtRW5jb2Rpbmc6IGhlYWRlcgogY29udGFpbmluZyBhbGwgYnVpbHQtaW4gc3VwcG9ydGVkIGVuY29kaW5ncyBpcyBzZW50LgogCitTZXQgdGhpcyBvcHRpb24gdG8gTlVMTCB0byBleHBsaWNpdGx5IGRpc2FibGUgaXQsIHdoaWNoIG1ha2VzIGxpYmN1cmwgbm90IHNlbmQKK2FuIEFjY2VwdC1FbmNvZGluZzogaGVhZGVyIGFuZCBub3QgZGVjb21wcmVzcyBjb250ZW50cyBhdXRvbWF0aWNhbGx5LgorCiBZb3UgY2FuIGFsc28gb3B0IHRvIGp1c3QgaW5jbHVkZSB0aGUgQWNjZXB0LUVuY29kaW5nOiBoZWFkZXIgaW4geW91ciByZXF1ZXN0CiB3aXRoIFxmSUNVUkxPUFRfSFRUUEhFQURFUigzKVxmUCBidXQgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGF1dG9tYXRpYwogZGVjb21wcmVzc2luZyB3aGVuIHJlY2VpdmluZyBkYXRhLgogCiBUaGlzIGlzIGEgcmVxdWVzdCwgbm90IGFuIG9yZGVyOyB0aGUgc2VydmVyIG1heSBvciBtYXkgbm90IGRvIGl0LiAgVGhpcyBvcHRpb24KIG11c3QgYmUgc2V0ICh0byBhbnkgbm9uLU5VTEwgdmFsdWUpIG9yIGVsc2UgYW55IHVuc29saWNpdGVkIGVuY29kaW5nIGRvbmUgYnkKLXRoZSBzZXJ2ZXIgaXMgaWdub3JlZC4gU2VlIHRoZSBzcGVjaWFsIGZpbGUgbGliL1JFQURNRS5lbmNvZGluZyBmb3IgZnVydGhlcgotZGV0YWlscy4KK3RoZSBzZXJ2ZXIgaXMgaWdub3JlZC4KKworU2VydmVycyBtaWdodCByZXNwb25kIHdpdGggQ29udGVudC1FbmNvZGluZyBldmVuIHdpdGhvdXQgZ2V0dGluZyBhCitBY2NlcHQtRW5jb2Rpbmc6IGluIHRoZSByZXF1ZXN0LiBTZXJ2ZXJzIG1pZ2h0IHJlc3BvbmQgd2l0aCBhIGRpZmZlcmVudAorQ29udGVudC1FbmNvZGluZyB0aGFuIHdoYXQgd2FzIGFza2VkIGZvciBpbiB0aGUgcmVxdWVzdC4KKworVGhlIENvbnRlbnQtTGVuZ3RoOiBzZXJ2ZXJzIHNlbmQgZm9yIGEgY29tcHJlc3NlZCByZXNwb25zZSBpcyBzdXBwb3NlZCB0bworaW5kaWNhdGUgdGhlIGxlbmd0aCBvZiB0aGUgY29tcHJlc3NlZCBjb250ZW50IHNvIHdoZW4gYXV0byBkZWNvZGluZyBpcyBlbmFibGVkCitpdCBtYXkgbm90IG1hdGNoIHRoZSBzdW0gb2YgYnl0ZXMgcmVwb3J0ZWQgYnkgdGhlIHdyaXRlIGNhbGxiYWNrcyAoYWx0aG91Z2gsCitzZW5kaW5nIHRoZSBsZW5ndGggb2YgdGhlIG5vbi1jb21wcmVzc2VkIGNvbnRlbnQgaXMgYSBjb21tb24gc2VydmVyIG1pc3Rha2UpLgogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKIEhUVFAKIC5TSCBFWEFNUExFCi1UT0RPCisubmYKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgLyogZW5hYmxlIGFsbCBzdXBwb3J0ZWQgYnVpbHQtaW4gY29tcHJlc3Npb25zICovCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcsICIiKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBUaGlzIG9wdGlvbiB3YXMgY2FsbGVkIENVUkxPUFRfRU5DT0RJTkcgYmVmb3JlIDcuMjEuNgogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BRERSRVNTX1NDT1BFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMwppbmRleCA1MTBlM2IzLi5mMzIzMjc5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FQUEVORC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BUFBFTkQuMwppbmRleCAwMzUyMjk2Li5jMjJhY2Y3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FQUEVORC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQVBQRU5ELjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxNyArMjgsMjggQEAKIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfQVBQRU5ELCBsb25nIGFwcGVuZCk7CiAuU0ggREVTQ1JJUFRJT04KLUEgcGFyYW1ldGVyIHNldCB0byAxIHRlbGxzIHRoZSBsaWJyYXJ5IHRvIGFwcGVuZCB0byB0aGUgcmVtb3RlIGZpbGUgaW5zdGVhZCBvZgotb3ZlcndyaXRlIGl0LiBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXBsb2FkaW5nIHRvIGFuIEZUUCBzaXRlLgorQSBsb25nIHBhcmFtZXRlciBzZXQgdG8gMSB0ZWxscyB0aGUgbGlicmFyeSB0byBhcHBlbmQgdG8gdGhlIHJlbW90ZSBmaWxlCitpbnN0ZWFkIG9mIG92ZXJ3cml0ZSBpdC4gVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHVwbG9hZGluZyB0byBhbiBGVFAgc2l0ZS4KIC5TSCBERUZBVUxUCi0wCiswIChkaXNhYmxlZCkKIC5TSCBQUk9UT0NPTFMKIEZUUAogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImZ0cDovL2V4YW1wbGUuY29tL2Rpci90by9uZXdmaWxlIik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0FQUEVORCwgMUwpOworCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBUaGlzIG9wdGlvbiB3YXMga25vd24gYXMgQ1VSTE9QVF9GVFBBUFBFTkQgdXAgdG8gNy4xNi40CiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgogLlNIICJTRUUgQUxTTyIKIC5CUiBDVVJMT1BUX0RJUkxJU1RPTkxZICIoMyksICIgQ1VSTE9QVF9SRVNVTUVfRlJPTSAiKDMpLCAiCisuQlIgQ1VSTE9QVF9VUExPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BVVRPUkVGRVJFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BVVRPUkVGRVJFUi4zCmluZGV4IGY4ZDU2NjguLmU2YTNhMDggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQVVUT1JFRkVSRVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FVVE9SRUZFUkVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9CVUZGRVJTSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMwppbmRleCA5ZTMxYWU5Li4xMTMxMThlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDQgKzQ3LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRUQgIigzKSwgIiBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gIigzKSwgIgorLkJSIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UgIigzKSwgIiBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQUlORk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FJTkZPLjMKaW5kZXggODVjOWJhMy4uYTA1ZjVjMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQUlORk8uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NBSU5GTy4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsMTIgKzQzLDEyIEBACiAuU0ggREVGQVVMVAogQnVpbHQtaW4gc3lzdGVtIHNwZWNpZmljCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKIEZvciBTU0wgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgY2VydGlmaWNhdGUgZmlsZXMgdGhlIENVUkxPUFRfQ0FJTkZPIG9wdGlvbgotaXMgaWdub3JlZC4gUmVmZXIgdG8gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCitpcyBpZ25vcmVkLiBSZWZlciB0byBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FQQVRILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NBUEFUSC4zCmluZGV4IDY2OTVmOWYuLjAzNjlmODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FQQVRILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQVBBVEguMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM5LDcgKzM5LDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0VSVElORk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0VSVElORk8uMwppbmRleCBhNTA4Yjg2Li5lODM2ZTQwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NFUlRJTkZPLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DRVJUSU5GTy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDkgKzMwLDkgQEAKIC5TSCBERVNDUklQVElPTgogUGFzcyBhIGxvbmcgc2V0IHRvIDEgdG8gZW5hYmxlIGxpYmN1cmwncyBjZXJ0aWZpY2F0ZSBjaGFpbiBpbmZvIGdhdGhlcmVyLiBXaXRoCiB0aGlzIGVuYWJsZWQsIGxpYmN1cmwgd2lsbCBleHRyYWN0IGxvdHMgb2YgaW5mb3JtYXRpb24gYW5kIGRhdGEgYWJvdXQgdGhlCi1jZXJ0aWZpY2F0ZXMgaW4gdGhlIGNlcnRpZmljYXRlIGNoYWluIHVzZWQgaW4gdGhlIFNTTCBjb25uZWN0aW9uLiBUaGlzIGRhdGEgbWF5Ci10aGVuIGJlIHJldHJpZXZlZCBhZnRlciBhIHRyYW5zZmVyIHVzaW5nIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIGFuZCBpdHMKLW9wdGlvbiBcZklDVVJMSU5GT19DRVJUSU5GT1xmUC4KK2NlcnRpZmljYXRlcyBpbiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdXNlZCBpbiB0aGUgU1NMIGNvbm5lY3Rpb24uIFRoaXMgZGF0YQorbWF5IHRoZW4gYmUgcmV0cmlldmVkIGFmdGVyIGEgdHJhbnNmZXIgdXNpbmcgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgYW5kCitpdHMgb3B0aW9uIFxmSUNVUkxJTkZPX0NFUlRJTkZPKDMpXGZQLgogLlNIIERFRkFVTFQKIDAKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0JHTl9GVU5DVElPTi4zCmluZGV4IDRkZDc5MDcuLmQzMTQxMmQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0RBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCmluZGV4IDRkMGZmM2QuLjFjZWIyY2UgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjksOCArMjksOCBAQAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfQ0hVTktfREFUQSwgdm9pZCAqcG9pbnRlcik7CiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBcZklwb2ludGVyXGZQIHRoYXQgd2lsbCBiZSB1bnRvdWNoZWQgYnkgbGliY3VybCBhbmQgcGFzc2VkIGFzIHRoZSBwdHIKLWFyZ3VtZW50IHRvIHRoZSBcZklDVVJMX0NIVU5LX0JHTl9GVU5DVElPTigzKVxmUCBhbmQKLVxmSUNVUkxfQ0hVTktfRU5EX0ZVTkNUSU9OKDMpXGZQLgorYXJndW1lbnQgdG8gdGhlIFxmSUNVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OKDMpXGZQIGFuZAorXGZJQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04oMylcZlAuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLjMKaW5kZXggNjRmODI5Yy4uZDJiNmM1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0VORF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NMT1NFU09DS0VUREFUQS4zCmluZGV4IGI4YWYzNTMuLjFkNmNhMDYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NMT1NFU09DS0VURlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCmluZGV4IDI1OTRiMTYuLmY0ZThiZDkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVQuMwppbmRleCA3ZjI4ZTYzLi5mMTg2OTQ4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RUSU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMwppbmRleCBkODExMThlLi43YTI0YThiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RUSU1FT1VUX01TLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly9leGFtcGxlLmNvbSIpOwogCiAgIC8qIGNvbXBsZXRlIGNvbm5lY3Rpb24gd2l0aGluIDEwMDAwIG1pbGxpc2Vjb25kcyAqLwotICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDEwMDAwTCk7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUywgMTAwMDBMKTsKIAogICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIH0KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9PTkxZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfT05MWS4zCmluZGV4IGFmYjNjZmQuLjYxMjg5ZTggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9PTkxZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUX09OTFkuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMyw3ICszMyw3IEBACiBhbmQgdGhlbiByZXR1cm4uCiAKIFRoZSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc2ltcGx5IHRlc3QgYSBjb25uZWN0aW9uIHRvIGEgc2VydmVyLCBidXQgaXMgbW9yZQotdXNlZnVsIHdoZW4gdXNlZCB3aXRoIHRoZSBcZklDVVJMSU5GT19MQVNUU09DS0VUXGZQIG9wdGlvbiB0bwordXNlZnVsIHdoZW4gdXNlZCB3aXRoIHRoZSBcZklDVVJMSU5GT19BQ1RJVkVTT0NLRVQoMylcZlAgb3B0aW9uIHRvCiBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBhcyB0aGUgbGlicmFyeSBjYW4gc2V0IHVwIHRoZSBjb25uZWN0aW9uIGFuZCB0aGVuCiB0aGUgYXBwbGljYXRpb24gY2FuIG9idGFpbiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIHNvY2tldCBmb3Igc3BlY2lhbCBkYXRhCiB0cmFuc2ZlcnMuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfVE8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9UTy4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMjUwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfVE8uMwpAQCAtMCwwICsxLDExMSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMT1BUX0NPTk5FQ1RfVE8gMyAiMTAgQXByaWwgMjAxNiIgImxpYmN1cmwgNy40OS4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxPUFRfQ09OTkVDVF9UTyBcLSBDb25uZWN0IHRvIGEgc3BlY2lmaWMgaG9zdCBhbmQgcG9ydCBpbnN0ZWFkIG9mIHRoZSBVUkwncyBob3N0IGFuZCBwb3J0CisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9DT05ORUNUX1RPLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90byk7CisuZmkKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsaW5rZWQgbGlzdCBvZiBzdHJpbmdzIHdpdGggImNvbm5lY3QgdG8iIGluZm9ybWF0aW9uIHRvCit1c2UgZm9yIGVzdGFibGlzaGluZyBuZXR3b3JrIGNvbm5lY3Rpb25zIHdpdGggdGhpcyBoYW5kbGUuIFRoZSBsaW5rZWQgbGlzdAorc2hvdWxkIGJlIGEgZnVsbHkgdmFsaWQgbGlzdCBvZiBcZkJzdHJ1Y3QgY3VybF9zbGlzdFxmUCBzdHJ1Y3RzIHByb3Blcmx5CitmaWxsZWQgaW4uIFVzZSBcZkljdXJsX3NsaXN0X2FwcGVuZCgzKVxmUCB0byBjcmVhdGUgdGhlIGxpc3QgYW5kCitcZkljdXJsX3NsaXN0X2ZyZWVfYWxsKDMpXGZQIHRvIGNsZWFuIHVwIGFuIGVudGlyZSBsaXN0LgorCitFYWNoIHNpbmdsZSBzdHJpbmcgc2hvdWxkIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGZvcm1hdAorSE9TVDpQT1JUOkNPTk5FQ1QtVE8tSE9TVDpDT05ORUNULVRPLVBPUlQgd2hlcmUgSE9TVCBpcyB0aGUgaG9zdCBvZiB0aGUKK3JlcXVlc3QsIFBPUlQgaXMgdGhlIHBvcnQgb2YgdGhlIHJlcXVlc3QsIENPTk5FQ1QtVE8tSE9TVCBpcyB0aGUgaG9zdCBuYW1lIHRvCitjb25uZWN0IHRvLCBhbmQgQ09OTkVDVC1UTy1QT1JUIGlzIHRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uCisKK1RoZSBmaXJzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSByZXF1ZXN0J3MgaG9zdCBhbmQgcG9ydCBpcyB1c2VkLgorCitEb3R0ZWQgbnVtZXJpY2FsIElQIGFkZHJlc3NlcyBhcmUgc3VwcG9ydGVkIGZvciBIT1NUIGFuZCBDT05ORUNULVRPLUhPU1QuCitBIG51bWVyaWNhbCBJUHY2IGFkZHJlc3MgbXVzdCBiZSB3cml0dGVuIHdpdGhpbiBbYnJhY2tldHNdLgorCitBbnkgb2YgdGhlIGZvdXIgdmFsdWVzIG1heSBiZSBlbXB0eS4gV2hlbiB0aGUgSE9TVCBvciBQT1JUIGlzIGVtcHR5LCB0aGUgaG9zdAorb3IgcG9ydCB3aWxsIGFsd2F5cyBtYXRjaCAodGhlIHJlcXVlc3QncyBob3N0IG9yIHBvcnQgaXMgaWdub3JlZCkuCitXaGVuIENPTk5FQ1QtVE8tSE9TVCBvciBDT05ORUNULVRPLVBPUlQgaXMgZW1wdHksIHRoZSAiY29ubmVjdCB0byIgZmVhdHVyZQord2lsbCBiZSBkaXNhYmxlZCBmb3IgdGhlIGhvc3Qgb3IgcG9ydCwgYW5kIHRoZSByZXF1ZXN0J3MgaG9zdCBvciBwb3J0IHdpbGwgYmUKK3VzZWQgdG8gZXN0YWJsaXNoIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uCisKK1RoaXMgb3B0aW9uIGlzIHN1aXRhYmxlIHRvIGRpcmVjdCB0aGUgcmVxdWVzdCBhdCBhIHNwZWNpZmljIHNlcnZlciwgZS5nLiBhdCBhCitzcGVjaWZpYyBjbHVzdGVyIG5vZGUgaW4gYSBjbHVzdGVyIG9mIHNlcnZlcnMuCisKK1RoZSAiY29ubmVjdCB0byIgaG9zdCBhbmQgcG9ydCBhcmUgb25seSB1c2VkIHRvIGVzdGFibGlzaCB0aGUgbmV0d29yaworY29ubmVjdGlvbi4gVGhleSBkbyBOT1QgYWZmZWN0IHRoZSBob3N0IGFuZCBwb3J0IHRoYXQgYXJlIHVzZWQgZm9yIFRMUy9TU0wKKyhlLmcuIFNOSSwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uKSBvciBmb3IgdGhlIGFwcGxpY2F0aW9uIHByb3RvY29scy4KKworSW4gY29udHJhc3QgdG8gXGZJQ1VSTE9QVF9SRVNPTFZFKDMpXGZQLCB0aGUgb3B0aW9uCitcZklDVVJMT1BUX0NPTk5FQ1RfVE8oMylcZlAgZG9lcyBub3QgcHJlLXBvcHVsYXRlIHRoZSBETlMgY2FjaGUgYW5kIHRoZXJlZm9yZQoraXQgZG9lcyBub3QgYWZmZWN0IGZ1dHVyZSB0cmFuc2ZlcnMgb2Ygb3RoZXIgZWFzeSBoYW5kbGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkCit0byB0aGUgc2FtZSBtdWx0aSBoYW5kbGUuCisKK1RoZSAiY29ubmVjdCB0byIgaG9zdCBhbmQgcG9ydCBhcmUgaWdub3JlZCBpZiB0aGV5IGFyZSBlcXVhbCB0byB0aGUgaG9zdCBhbmQKK3RoZSBwb3J0IGluIHRoZSByZXF1ZXN0IFVSTCwgYmVjYXVzZSBjb25uZWN0aW5nIHRvIHRoZSBob3N0IGFuZCB0aGUgcG9ydCBpbgordGhlIHJlcXVlc3QgVVJMIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorCitJZiBhbiBIVFRQIHByb3h5IGlzIHVzZWQgZm9yIGEgcmVxdWVzdCBoYXZpbmcgYSBzcGVjaWFsICJjb25uZWN0IHRvIiBob3N0IG9yCitwb3J0LCBhbmQgdGhlICJjb25uZWN0IHRvIiBob3N0IG9yIHBvcnQgZGlmZmVycyBmcm9tIHRoZSByZXF1ZXN0cydzIGhvc3QgYW5kCitwb3J0LCB0aGUgSFRUUCBwcm94eSBpcyBhdXRvbWF0aWNhbGx5IHN3aXRjaGVkIHRvIHR1bm5lbCBtb2RlIGZvciB0aGlzCitzcGVjaWZpYyByZXF1ZXN0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjb25uZWN0IHRvIGEKK3NwZWNpZmljIGhvc3Qgb3IgcG9ydCBpbiBub3JtYWwgKG5vbi10dW5uZWwpIG1vZGUuCisKK1doZW4gdGhpcyBvcHRpb24gaXMgcGFzc2VkIHRvIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAsIGxpYmN1cmwgd2lsbCBub3QgY29weQordGhlIGVudGlyZSBsaXN0IHNvIHlvdSBcZkJtdXN0XGZQIGtlZXAgaXQgYXJvdW5kIHVudGlsIHlvdSBubyBsb25nZXIgdXNlIHRoaXMKK1xmSWhhbmRsZVxmUCBmb3IgYSB0cmFuc2ZlciBiZWZvcmUgeW91IGNhbGwgXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUCBvbgordGhlIGxpc3QuCisKKy5TSCBERUZBVUxUCitOVUxMCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCisubmYKK0NVUkwgKmN1cmw7CitzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90byA9IE5VTEw7Citjb25uZWN0X3RvID0gY3VybF9zbGlzdF9hcHBlbmQoTlVMTCwgImV4YW1wbGUuY29tOjpzZXJ2ZXIxLmV4YW1wbGUuY29tOiIpOworCitjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPTk5FQ1RfVE8sIGNvbm5lY3RfdG8pOworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisKKyAgLyogYWx3YXlzIGNsZWFudXAgKi8KKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7Cit9CisKK2N1cmxfc2xpc3RfZnJlZV9hbGwoY29ubmVjdF90byk7CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDkuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE9QVF9VUkwgIigzKSwgIiBDVVJMT1BUX1JFU09MVkUgIigzKSwgIiBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OICIoMyksICIgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwgICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uMwppbmRleCBlYmM0ZDc3Li4xZmYzMDBlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfRlJPTV9ORVRXT1JLX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uMwppbmRleCA2ODJlMWM1Li40ODc0OTJjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi4zCmluZGV4IGU4ODE3ZjguLmExZDZhMWEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc5LDQgKzc5LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04gIigzKSwgIiBDVVJMT1BUX0NPTlZfVE9fVVRGOF9GVU5DVElPTiAiKDMpLCAiCisuQlIgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTiAiKDMpLCAiIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFLjMKaW5kZXggYTM5MDEzNS4uMzJjMmZjMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFRklMRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKaW5kZXggYTRjM2IwMi4uMDA4MTZiMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzAsOCArMzAsOCBAQAogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgcG9pbnRlciB0byBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcgYXMgcGFyYW1ldGVyLiBJdCBzaG91bGQgcG9pbnQgdG8KIHRoZSBmaWxlIG5hbWUgb2YgeW91ciBmaWxlIGhvbGRpbmcgY29va2llIGRhdGEgdG8gcmVhZC4gVGhlIGNvb2tpZSBkYXRhIGNhbiBiZQotaW4gZWl0aGVyIHRoZSBvbGQgTmV0c2NhcGUgLyBNb3ppbGxhIGNvb2tpZSBkYXRhIGZvcm1hdCBvciBqdXN0IHJlZ3VsYXIKLUhUVFAtc3R5bGUgaGVhZGVycyBkdW1wZWQgdG8gYSBmaWxlLgoraW4gZWl0aGVyIHRoZSBvbGQgTmV0c2NhcGUgLyBNb3ppbGxhIGNvb2tpZSBkYXRhIGZvcm1hdCBvciBqdXN0IHJlZ3VsYXIgSFRUUAoraGVhZGVycyAoU2V0LUNvb2tpZSBzdHlsZSkgZHVtcGVkIHRvIGEgZmlsZS4KIAogSXQgYWxzbyBlbmFibGVzIHRoZSBjb29raWUgZW5naW5lLCBtYWtpbmcgbGliY3VybCBwYXJzZSBhbmQgc2VuZCBjb29raWVzIG9uCiBzdWJzZXF1ZW50IHJlcXVlc3RzIHdpdGggdGhpcyBoYW5kbGUuCkBAIC00Myw2ICs0MywxNCBAQAogVGhpcyBvcHRpb24gb25seSBcZkJyZWFkc1xmUCBjb29raWVzLiBUbyBtYWtlIGxpYmN1cmwgd3JpdGUgY29va2llcyB0byBmaWxlLAogc2VlIFxmSUNVUkxPUFRfQ09PS0lFSkFSKDMpXGZQLgogCitFeGVyY2lzZSBjYXV0aW9uIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBvcHRpb24gYW5kIG11bHRpcGxlIHRyYW5zZmVycyBtYXkgb2NjdXIuCitJZiB5b3UgdXNlIHRoZSBTZXQtQ29va2llIGZvcm1hdCBhbmQgZG9uJ3Qgc3BlY2lmeSBhIGRvbWFpbiB0aGVuIHRoZSBjb29raWUgaXMKK3NlbnQgZm9yIGFueSBkb21haW4gKGV2ZW4gYWZ0ZXIgcmVkaXJlY3RzIGFyZSBmb2xsb3dlZCkgYW5kIGNhbm5vdCBiZSBtb2RpZmllZAorYnkgYSBzZXJ2ZXItc2V0IGNvb2tpZS4gSWYgYSBzZXJ2ZXIgc2V0cyBhIGNvb2tpZSBvZiB0aGUgc2FtZSBuYW1lIHRoZW4gYm90aAord2lsbCBiZSBzZW50IG9uIGEgZnV0dXJlIHRyYW5zZmVyIHRvIHRoYXQgc2VydmVyLCBsaWtlbHkgbm90IHdoYXQgeW91IGludGVuZGVkLgorVG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgc2V0IGEgZG9tYWluIGluIFNldC1Db29raWUgKGRvaW5nIHRoYXQgd2lsbCBpbmNsdWRlCitzdWItZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQuCisKIElmIHlvdSB1c2UgdGhpcyBvcHRpb24gbXVsdGlwbGUgdGltZXMsIHlvdSBqdXN0IGFkZCBtb3JlIGZpbGVzIHRvIHJlYWQuCiBTdWJzZXF1ZW50IGZpbGVzIHdpbGwgYWRkIG1vcmUgY29va2llcy4KIC5TSCBERUZBVUxUCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRUpBUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVKQVIuMwppbmRleCA5MzZkNGQ4Li43OWEzNzIzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRUpBUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFSkFSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNiArNDMsOSBAQAogZXJyb3IgZm9yIHRoaXMuIFVzaW5nIFxmSUNVUkxPUFRfVkVSQk9TRSgzKVxmUCBvcgogXGZJQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OKDMpXGZQIHdpbGwgZ2V0IGEgd2FybmluZyB0byBkaXNwbGF5LCBidXQgdGhhdCBpcyB0aGUKIG9ubHkgdmlzaWJsZSBmZWVkYmFjayB5b3UgZ2V0IGFib3V0IHRoaXMgcG9zc2libHkgbGV0aGFsIHNpdHVhdGlvbi4KKworU2luY2UgNy40My4wIGNvb2tpZXMgdGhhdCB3ZXJlIGltcG9ydGVkIGluIHRoZSBTZXQtQ29va2llIGZvcm1hdCB3aXRob3V0IGEKK2RvbWFpbiBuYW1lIGFyZSBub3QgZXhwb3J0ZWQgYnkgdGhpcyBvcHRpb24uCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwpAQCAtNTUsNCArNTgsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiBIVFRQIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09PS0lFRklMRSAiKDMpLCAiIENVUkxPUFRfQ09PS0lFICIoMyksICIgQ1VSTE9QVF9DT09LSUVMSVNUICIoMyksICIKKy5CUiBDVVJMT1BUX0NPT0tJRUZJTEUgIigzKSwgIiBDVVJMT1BUX0NPT0tJRSAiKDMpLCAiCisuQlIgQ1VSTE9QVF9DT09LSUVMSVNUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFTElTVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKaW5kZXggOTM3Yzc5ZC4uN2RlNGRhOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiwxNiArMzYsMTUgQEAKIHJlZ3VsYXIgSFRUUC1zdHlsZSBoZWFkZXIgKFNldC1Db29raWU6IC4uLikgZm9ybWF0LiBUaGlzIHdpbGwgYWxzbyBlbmFibGUgdGhlCiBjb29raWUgZW5naW5lLiBUaGlzIGFkZHMgdGhhdCBzaW5nbGUgY29va2llIHRvIHRoZSBpbnRlcm5hbCBjb29raWUgc3RvcmUuCiAKLUlmIHlvdSB1c2UgdGhlIFNldC1Db29raWUgZm9ybWF0IGFuZCBkb24ndCBzcGVjaWZ5IGEgZG9tYWluIHRoZW4gdGhlIGNvb2tpZQotaXMgc2VudCBmb3IgYW55IGRvbWFpbiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuIElmIGEgc2VydmVyIHNldHMgYSBjb29raWUgb2YKLXRoZSBzYW1lIG5hbWUgKG9yIG1heWJlIHlvdSd2ZSBpbXBvcnRlZCBvbmUpIHRoZW4gYm90aCB3aWxsIGJlIHNlbnQgb24gYSBmdXR1cmUKLXRyYW5zZmVyIHRvIHRoYXQgc2VydmVyLCBsaWtlbHkgbm90IHdoYXQgeW91IGludGVuZGVkLiBFaXRoZXIgc2V0IGEgZG9tYWluIGluCi1TZXQtQ29va2llIChkb2luZyB0aGF0IHdpbGwgaW5jbHVkZSBzdWIgZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQgYXMKK0V4ZXJjaXNlIGNhdXRpb24gaWYgeW91IGFyZSB1c2luZyB0aGlzIG9wdGlvbiBhbmQgbXVsdGlwbGUgdHJhbnNmZXJzIG1heSBvY2N1ci4KK0lmIHlvdSB1c2UgdGhlIFNldC1Db29raWUgZm9ybWF0IGFuZCBkb24ndCBzcGVjaWZ5IGEgZG9tYWluIHRoZW4gdGhlIGNvb2tpZSBpcworc2VudCBmb3IgYW55IGRvbWFpbiAoZXZlbiBhZnRlciByZWRpcmVjdHMgYXJlIGZvbGxvd2VkKSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkCitieSBhIHNlcnZlci1zZXQgY29va2llLiBJZiBhIHNlcnZlciBzZXRzIGEgY29va2llIG9mIHRoZSBzYW1lIG5hbWUgKG9yIG1heWJlCit5b3UndmUgaW1wb3J0ZWQgb25lKSB0aGVuIGJvdGggd2lsbCBiZSBzZW50IG9uIGEgZnV0dXJlIHRyYW5zZmVyIHRvIHRoYXQKK3NlcnZlciwgbGlrZWx5IG5vdCB3aGF0IHlvdSBpbnRlbmRlZC4gVG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgc2V0IGEgZG9tYWluIGluCitTZXQtQ29va2llIChkb2luZyB0aGF0IHdpbGwgaW5jbHVkZSBzdWItZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQgYXMKIHNob3duIGluIEVYQU1QTEUuCiAKLVN0YXJ0aW5nIGluIDcuNDMuMCB0aGUgYWZvcmVtZW50aW9uZWQgYW55LWRvbWFpbiBjb29raWVzIHdpbGwgbm90IGFwcGVhciBpbiB0aGUKLWxpc3RzIGV4cG9ydGVkIGJ5IFxmSUNVUkxJTkZPX0NPT0tJRUxJU1QoMylcZlAgYW5kIFxmSUNVUkxPUFRfQ09PS0lFSkFSKDMpXGZQLgotCiBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBjb21tYW5kcyBhdmFpbGFibGUgdGhhdCBwZXJmb3JtIGFjdGlvbnMgaWYgeW91IHBhc3MgaW4KIHRoZXNlIGV4YWN0IHN0cmluZ3M6CiAuSVAgQUxMCkBAIC0xMDEsNyArMTAwLDcgQEAKICovCiBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFSkFSLCAiY29va2llcy50eHQiKTsgIC8qIGV4cG9ydCAqLwogCi1yZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsgIC8qIGNvb2tpZXMgaW1wb3J0ZWQgZnJvbSBjb29raWVzLnR4dCAqLworY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7ICAvKiBjb29raWVzIGltcG9ydGVkIGZyb20gY29va2llcy50eHQgKi8KIAogY3VybF9lYXN5X2NsZWFudXAoY3VybCk7ICAvKiBjb29raWVzIGV4cG9ydGVkIHRvIGNvb2tpZXMudHh0ICovCiAuZmkKQEAgLTExNyw0ICsxMTYsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09PS0lFRklMRSAiKDMpLCAiIENVUkxPUFRfQ09PS0lFSkFSICIoMyksICIgIENVUkxPUFRfQ09PS0lFICIoMyksICIKKy5CUiBDVVJMT1BUX0NPT0tJRUZJTEUgIigzKSwgIiBDVVJMT1BUX0NPT0tJRUpBUiAiKDMpLCAiIENVUkxPUFRfQ09PS0lFICIoMyksICIKKy5CUiBDVVJMSU5GT19DT09LSUVMSVNUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFU0VTU0lPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKaW5kZXggMGQ1NjA3Ni4uZWNjMzc1NyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zCmluZGV4IGQzNWFlYmQuLjAwMWQ2ZmUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09QWVBPU1RGSUVMRFMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPUFlQT1NURklFTERTLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DUkxGLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMwppbmRleCAzMmQ4Yjc5Li5iMTNhMDZlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCmluZGV4IGFkYzBlOTkuLjZiYjAzNWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1VTVE9NUkVRVUVTVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKaW5kZXggZmQzMzExOC4uNTUzZDQwOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCw3ICszMCw3IEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuCiAKLVdoZW4geW91IGNoYW5nZSB0aGUgcmVxdWVzdCBtZXRob2QgYnkgc2V0dGluZyBcZkJDVVJMT1BUX0NVU1RPTVJFUVVFU1QoMylcZlAKK1doZW4geW91IGNoYW5nZSB0aGUgcmVxdWVzdCBtZXRob2QgYnkgc2V0dGluZyBcZklDVVJMT1BUX0NVU1RPTVJFUVVFU1QoMylcZlAKIHRvIHNvbWV0aGluZywgeW91IGRvbid0IGFjdHVhbGx5IGNoYW5nZSBob3cgbGliY3VybCBiZWhhdmVzIG9yIGFjdHMgaW4gcmVnYXJkcwogdG8gdGhlIHBhcnRpY3VsYXIgcmVxdWVzdCBtZXRob2QsIGl0IHdpbGwgb25seSBjaGFuZ2UgdGhlIGFjdHVhbCBzdHJpbmcgc2VudAogaW4gdGhlIHJlcXVlc3QuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUJVR0RBVEEuMwppbmRleCBlYmRiMGM1Li4yN2I5Y2JiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfREVCVUdEQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsNyArMzYsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZGVidWcuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2RlYnVnLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFsd2F5cwogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMwppbmRleCA2YzQ3MjFiLi5iZjA3NDk5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04OCw3ICs4OCw3IEBACiAgIHNpemVfdCBjOwogICB1bnNpZ25lZCBpbnQgd2lkdGg9MHgxMDsKIAotICBmcHJpbnRmKHN0cmVhbSwgIiVzLCAlMTAuMTBsZCBieXRlcyAoMHglOC44bHgpXG4iLAorICBmcHJpbnRmKHN0cmVhbSwgIiVzLCAlMTAuMTBsZCBieXRlcyAoMHglOC44bHgpXFxuIiwKICAgICAgICAgICB0ZXh0LCAobG9uZylzaXplLCAobG9uZylzaXplKTsKIAogICBmb3IoaT0wOyBpPHNpemU7IGkrPSB3aWR0aCkgewpAQCAtMTAzLDEwICsxMDMsMTIgQEAKICAgICB9CiAKICAgICAvKiBzaG93IGRhdGEgb24gdGhlIHJpZ2h0ICovCi0gICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykKLSAgICAgIGZwdXRjKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nLCBzdHJlYW0pOworICAgIGZvcihjID0gMDsgKGMgPCB3aWR0aCkgJiYgKGkrYyA8IHNpemUpOyBjKyspIHsKKyAgICAgIGNoYXIgeCA9IChwdHJbaStjXSA+PSAweDIwICYmIHB0cltpK2NdIDwgMHg4MCkgPyBwdHJbaStjXSA6ICcuJzsKKyAgICAgIGZwdXRjKHgsIHN0cmVhbSk7CisgICAgfQogCi0gICAgZnB1dGMoJ1xuJywgc3RyZWFtKTsgLyogbmV3bGluZSAqLworICAgIGZwdXRjKCdcXG4nLCBzdHJlYW0pOyAvKiBuZXdsaW5lICovCiAgIH0KIH0KIApAQCAtMTY3LDcgKzE2OSw3IEBACiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAgICAgLyogQ2hlY2sgZm9yIGVycm9ycyAqLwogICAgIGlmKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X3BlcmZvcm0oKSBmYWlsZWQ6ICVzXG4iLAorICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcXG4iLAogICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAKICAgICAvKiBhbHdheXMgY2xlYW51cCAqLwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2Y4OTBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMKQEAgLTAsMCArMSw3OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MIDMgIjE4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ1LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MIFwtIGRlZmF1bHQgcHJvdG9jb2wgdG8gdXNlIGlmIHRoZSBVUkwgaXMgbWlzc2luZyBhCitzY2hlbWUgbmFtZQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsIGNoYXIKKypwcm90b2NvbCk7CisuU0ggREVTQ1JJUFRJT04KK1RoaXMgb3B0aW9uIHRlbGxzIGxpYmN1cmwgdG8gdXNlIFxmSXByb3RvY29sXGZQIGlmIHRoZSBVUkwgaXMgbWlzc2luZyBhIHNjaGVtZQorbmFtZS4KKworVXNlIG9uZSBvZiB0aGVzZSBwcm90b2NvbCAoc2NoZW1lKSBuYW1lczoKKworZGljdCwgZmlsZSwgZnRwLCBmdHBzLCBnb3BoZXIsIGh0dHAsIGh0dHBzLCBpbWFwLCBpbWFwcywgbGRhcCwgbGRhcHMsIHBvcDMsCitwb3AzcywgcnRzcCwgc2NwLCBzZnRwLCBzbWIsIHNtYnMsIHNtdHAsIHNtdHBzLCB0ZWxuZXQsIHRmdHAKKworQW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCBwcm90b2NvbCBjYXVzZXMgZXJyb3IKK1xmSUNVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MXGZQIHdoZW4gbGliY3VybCBwYXJzZXMgYSBzY2hlbWVsZXNzIFVSTC4gUGFyc2luZworaGFwcGVucyB3aGVuIFxmSWN1cmxfZWFzeV9wZXJmb3JtKDMpXGZQIG9yIFxmSWN1cmxfbXVsdGlfcGVyZm9ybSgzKVxmUCBpcworY2FsbGVkLiBUaGUgcHJvdG9jb2xzIHN1cHBvcnRlZCBieSBsaWJjdXJsIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcworYnVpbHQuIFVzZSBcZkljdXJsX3ZlcnNpb25faW5mbygzKVxmUCBpZiB5b3UgbmVlZCBhIGxpc3Qgb2YgcHJvdG9jb2wgbmFtZXMKK3N1cHBvcnRlZCBieSB0aGUgYnVpbGQgb2YgbGliY3VybCB0aGF0IHlvdSBhcmUgdXNpbmcuCisKK1RoaXMgb3B0aW9uIGRvZXMgbm90IGNoYW5nZSB0aGUgZGVmYXVsdCBwcm94eSBwcm90b2NvbCAoaHR0cCkuCisKK1dpdGhvdXQgdGhpcyBvcHRpb24gbGliY3VybCB3b3VsZCBtYWtlIGEgZ3Vlc3MgYmFzZWQgb24gdGhlIGhvc3QsIHNlZQorXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIGRldGFpbHMuCisuU0ggREVGQVVMVAorTlVMTCAobWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0KQorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorLm5mCitjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgLyogc2V0IGEgVVJMIHdpdGhvdXQgYSBzY2hlbWUgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImV4YW1wbGUuY29tIik7CisKKyAgLyogc2V0IHRoZSBkZWZhdWx0IHByb3RvY29sIChzY2hlbWUpIGZvciBzY2hlbWVsZXNzIFVSTHMgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsICJodHRwcyIpOworCisgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QgKi8KKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Cit9CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDUuMAorLlNIIFJFVFVSTiBWQUxVRQorQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQuCisKK0NVUkxFX09VVF9PRl9NRU1PUlkgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBoZWFwIHNwYWNlLgorCitDVVJMRV9VTktOT1dOX09QVElPTiBpZiB0aGUgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxPUFRfVVJMICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRElSTElTVE9OTFkuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRElSTElTVE9OTFkuMwppbmRleCBhODFmOTA3Li4wN2I4YWMzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RJUkxJU1RPTkxZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ESVJMSVNUT05MWS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuMwppbmRleCA5MzMyNzgwLi4wNjA3NDEwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0lOVEVSRkFDRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKaW5kZXggYzMzZDc5MS4uZjc2NDM5OCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMwppbmRleCBmNWRiNjQ1Li5lZjlmMWUyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDYuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCmluZGV4IDU2ODY1YmIuLjdkODJiZGYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1NFUlZFUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1NFUlZFUlMuMwppbmRleCA5ZjUxNzg4Li4xNGM5ZjliIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19TRVJWRVJTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfU0VSVkVSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuMwppbmRleCBkYjUzYzBiLi44N2Y2ODZhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRUdEU09DS0VULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VHRFNPQ0tFVC4zCmluZGV4IDJlNzJlY2MuLmFkOTFjM2YgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRUdEU09DS0VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FR0RTT0NLRVQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDcgKzMzLDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVJST1JCVUZGRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVJST1JCVUZGRVIuMwppbmRleCA1NzcyMDJjLi5iNjRhMmEzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VSUk9SQlVGRkVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FUlJPUkJVRkZFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDE1ICs1MSwzMyBAQAogLm5mCiBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKIGlmKGN1cmwpIHsKLSAgY2hhciBlcnJvcltDVVJMX0VSUk9SX1NJWkVdCisgIENVUkxjb2RlIHJlczsKKyAgY2hhciBlcnJidWZbQ1VSTF9FUlJPUl9TSVpFXTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CiAKICAgLyogcHJvdmlkZSBhIGJ1ZmZlciB0byBzdG9yZSBlcnJvcnMgaW4gKi8KLSAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBlcnJvcik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgZXJyYnVmKTsKIAotICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCi0gIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworICAvKiBzZXQgdGhlIGVycm9yIGJ1ZmZlciBhcyBlbXB0eSBiZWZvcmUgcGVyZm9ybWluZyBhIHJlcXVlc3QgKi8KKyAgZXJyYnVmWzBdID0gMDsKKworICAvKiBwZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworCisgIC8qIGlmIHRoZSByZXF1ZXN0IGRpZCBub3QgY29tcGxldGUgY29ycmVjdGx5LCBzaG93IHRoZSBlcnJvcgorICBpbmZvcm1hdGlvbi4gaWYgbm8gZGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gd2FzIHdyaXR0ZW4gdG8gZXJyYnVmCisgIHNob3cgdGhlIG1vcmUgZ2VuZXJpYyBpbmZvcm1hdGlvbiBmcm9tIGN1cmxfZWFzeV9zdHJlcnJvciBpbnN0ZWFkLgorICAqLworICBpZihyZXMgIT0gQ1VSTEVfT0spIHsKKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGVycmJ1Zik7CisgICAgZnByaW50ZihzdGRlcnIsICJcXG5saWJjdXJsOiAoJWQpICIsIHJlcyk7CisgICAgaWYobGVuKQorICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzIiwgZXJyYnVmLAorICAgICAgICAgICAgICAoKGVycmJ1ZltsZW4gLSAxXSAhPSAnXFxuJykgPyAiXFxuIiA6ICIiKSk7CisgICAgZWxzZQorICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgfQogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMuMwppbmRleCA4MWY0NTcxLi4xMGYzYzA2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GQUlMT05FUlJPUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GQUlMT05FUlJPUi4zCmluZGV4IGE4MjY3ZmQuLjc5NDc0Y2UgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRkFJTE9ORVJST1IuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZBSUxPTkVSUk9SLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw2ICszOSw5IEBACiBZb3UgbWlnaHQgZ2V0IHNvbWUgYW1vdW50cyBvZiBoZWFkZXJzIHRyYW5zZmVycmVkIGJlZm9yZSB0aGlzIHNpdHVhdGlvbiBpcwogZGV0ZWN0ZWQsIGxpa2Ugd2hlbiBhICIxMDAtY29udGludWUiIGlzIHJlY2VpdmVkIGFzIGEgcmVzcG9uc2UgdG8gYSBQT1NUL1BVVAogYW5kIGEgNDAxIG9yIDQwNyBpcyByZWNlaXZlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzLgorCitXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQgYW5kIGFuIGVycm9yIGlzIGRldGVjdGVkLCBpdCB3aWxsIGNhdXNlIHRoZQorY29ubmVjdGlvbiB0byBnZXQgY2xvc2VkLgogLlNIIERFRkFVTFQKIDAsIGRvIG5vdCBmYWlsIG9uIGVycm9yCiAuU0ggUFJPVE9DT0xTCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZJTEVUSU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZJTEVUSU1FLjMKaW5kZXggN2M1N2FmZi4uOTliYTdmNyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GSUxFVElNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRklMRVRJTUUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDggKzMxLDggQEAKIFBhc3MgYSBsb25nLiBJZiBpdCBpcyAxLCBsaWJjdXJsIHdpbGwgYXR0ZW1wdCB0byBnZXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mCiB0aGUgcmVtb3RlIGRvY3VtZW50IGluIHRoaXMgb3BlcmF0aW9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIHJlbW90ZSBzZXJ2ZXIKIHNlbmRzIHRoZSB0aW1lIG9yIHJlcGxpZXMgdG8gYSB0aW1lIHF1ZXJ5aW5nIGNvbW1hbmQuIFRoZQotXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZJQ1VSTElORk9fRklMRVRJTUVcZlAgYXJndW1lbnQKLWNhbiBiZSB1c2VkIGFmdGVyIGEgdHJhbnNmZXIgdG8gZXh0cmFjdCB0aGUgcmVjZWl2ZWQgdGltZSAoaWYgYW55KS4KK1xmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlIFxmSUNVUkxJTkZPX0ZJTEVUSU1FKDMpXGZQCithcmd1bWVudCBjYW4gYmUgdXNlZCBhZnRlciBhIHRyYW5zZmVyIHRvIGV4dHJhY3QgdGhlIHJlY2VpdmVkIHRpbWUgKGlmIGFueSkuCiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwpAQCAtNDAsNyArNDAsNyBAQAogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFsd2F5cworQWx3YXlzLCBmb3IgU0ZUUCBzaW5jZSA3LjQ5LjAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sKIC5TSCAiU0VFIEFMU08iCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GTk1BVENIX0RBVEEuMwppbmRleCBhMDQ2NmZlLi4yMzZjMTlkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9EQVRBLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBvaW50ZXIpOwogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgcG9pbnRlciB0aGF0IHdpbGwgYmUgdW50b3VjaGVkIGJ5IGxpYmN1cmwgYW5kIHBhc3NlZCBhcyB0aGUgcHRyCi1hcmd1bWVudCB0byB0aGUgXGZJQ1VSTF9GTk1BVENIX0ZVTkNUSU9OKDMpXGZQLgorYXJndW1lbnQgdG8gdGhlIFxmSUNVUkxPUFRfRk5NQVRDSF9GVU5DVElPTigzKVxmUC4KIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCmluZGV4IGZjMTE5YTkuLjA0OTY3YjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3LDcgKzM3LDcgQEAKIFBhc3MgYSBwb2ludGVyIHRvIHlvdXIgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBtYXRjaCB0aGUgcHJvdG90eXBlCiBzaG93biBhYm92ZS4KIAotVGhpcyBjYWxsYmFjayBzIHVzZWQgZm9yIHdpbGRjYXJkIG1hdGNoaW5nLgorVGhpcyBjYWxsYmFjayBpcyB1c2VkIGZvciB3aWxkY2FyZCBtYXRjaGluZy4KIAogUmV0dXJuIFxmSUNVUkxfRk5NQVRDSEZVTkNfTUFUQ0hcZlAgaWYgcGF0dGVybiBtYXRjaGVzIHRoZSBzdHJpbmcsCiBcZklDVVJMX0ZOTUFUQ0hGVU5DX05PTUFUQ0hcZlAgaWYgbm90IG9yIFxmSUNVUkxfRk5NQVRDSEZVTkNfRkFJTFxmUCBpZiBhbgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zCmluZGV4IDNhMzJjYWUuLjA5NGVlMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk9MTE9XTE9DQVRJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwyMiArMjgsMzEgQEAKIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIGxvbmcgZW5hYmxlKTsKIC5TSCBERVNDUklQVElPTgotQSBwYXJhbWV0ZXIgc2V0IHRvIDEgdGVsbHMgdGhlIGxpYnJhcnkgdG8gZm9sbG93IGFueSBMb2NhdGlvbjogaGVhZGVyIHRoYXQgdGhlCi1zZXJ2ZXIgc2VuZHMgYXMgcGFydCBvZiBhIEhUVFAgaGVhZGVyIGluIGEgM3h4IHJlc3BvbnNlLgorQSBsb25nIHBhcmFtZXRlciBzZXQgdG8gMSB0ZWxscyB0aGUgbGlicmFyeSB0byBmb2xsb3cgYW55IExvY2F0aW9uOiBoZWFkZXIKK3RoYXQgdGhlIHNlcnZlciBzZW5kcyBhcyBwYXJ0IG9mIGEgSFRUUCBoZWFkZXIgaW4gYSAzeHggcmVzcG9uc2UuIFRoZQorTG9jYXRpb246IGhlYWRlciBjYW4gc3BlY2lmeSBhIHJlbGF0aXZlIG9yIGFuIGFic29sdXRlIFVSTCB0byBmb2xsb3cuCiAKLVRoaXMgbWVhbnMgdGhhdCBsaWJjdXJsIHdpbGwgcmUtc2VuZCB0aGUgc2FtZSByZXF1ZXN0IG9uIHRoZSBuZXcgbG9jYXRpb24gYW5kCi1mb2xsb3cgbmV3IExvY2F0aW9uOiBoZWFkZXJzIGFsbCB0aGUgd2F5IHVudGlsIG5vIG1vcmUgc3VjaCBoZWFkZXJzIGFyZQotcmV0dXJuZWQuIFxmSUNVUkxPUFRfTUFYUkVESVJTKDMpXGZQIGNhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YKLXJlZGlyZWN0cyBsaWJjdXJsIHdpbGwgZm9sbG93LgorbGliY3VybCB3aWxsIGlzc3VlIGFub3RoZXIgcmVxdWVzdCBmb3IgdGhlIG5ldyBVUkwgYW5kIGZvbGxvdyBuZXcgTG9jYXRpb246CitoZWFkZXJzIGFsbCB0aGUgd2F5IHVudGlsIG5vIG1vcmUgc3VjaCBoZWFkZXJzIGFyZSByZXR1cm5lZC4KK1xmSUNVUkxPUFRfTUFYUkVESVJTKDMpXGZQIGNhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVkaXJlY3RzCitsaWJjdXJsIHdpbGwgZm9sbG93LgogCi1saWJjdXJsIGNhbiBsaW1pdCB0byB3aGF0IHByb3RvY29scyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93LiBUaGUgYWNjZXB0ZWQKLXByb3RvY29scyBhcmUgc2V0IHdpdGggXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAgYW5kIGl0IGV4Y2x1ZGVzIHRoZQotRklMRSBwcm90b2NvbCBieSBkZWZhdWx0LgorbGliY3VybCBsaW1pdHMgd2hhdCBwcm90b2NvbHMgaXQgYXV0b21hdGljYWxseSBmb2xsb3dzIHRvLiBUaGUgYWNjZXB0ZWQKK3Byb3RvY29scyBhcmUgc2V0IHdpdGggXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAuIEJ5IGRlZmF1bHQgbGliY3VybAord2lsbCBhbGxvdyBhbGwgcHJvdG9jb2xzIG9uIHJlZGlyZWN0IGV4Y2VwdCB0aG9zZSBkaXNhYmxlZCBmb3Igc2VjdXJpdHkKK3JlYXNvbnM6IFNpbmNlIDcuMTkuNCBGSUxFIGFuZCBTQ1AgYXJlIGRpc2FibGVkLCBhbmQgc2luY2UgNy40MC4wIFNNQiBhbmQgU01CUworYXJlIGFsc28gZGlzYWJsZWQuCisKK1doZW4gZm9sbG93aW5nIGEgTG9jYXRpb246LCB0aGUgM3h4IHJlc3BvbnNlIGNvZGUgdGhhdCByZWRpcmVjdGVkIGl0IGFsc28KK2RpY3RhdGVzIHdoaWNoIHJlcXVlc3QgbWV0aG9kIGl0IHdpbGwgdXNlIGluIHRoZSBzdWJzZXF1ZW50IHJlcXVlc3Q6IEZvciAzMDEsCiszMDIgYW5kIDMwMyByZXNwb25zZXMgbGliY3VybCB3aWxsIHN3aXRjaCBtZXRob2QgdG8gR0VUIHVubGVzcworXGZJQ1VSTE9QVF9QT1NUUkVESVIoMylcZlAgaW5zdHJ1Y3RzIGxpYmN1cmwgb3RoZXJ3aXNlLiBBbGwgb3RoZXIgM3h4IGNvZGVzCit3aWxsIG1ha2UgbGliY3VybCBzZW5kIHRoZSBzYW1lIG1ldGhvZCBhZ2Fpbi4KIAogRm9yIHVzZXJzIHdobyB0aGluayB0aGUgZXhpc3RpbmcgbG9jYXRpb24gZm9sbG93aW5nIGlzIHRvbyBuYWl2ZSwgdG9vIHNpbXBsZQogb3IganVzdCBsYWNrcyBmZWF0dXJlcywgaXQgaXMgdmVyeSBlYXN5IHRvIGluc3RlYWQgaW1wbGVtZW50IHlvdXIgb3duIHJlZGlyZWN0CiBmb2xsb3cgbG9naWMgd2l0aCB0aGUgdXNlIG9mIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQJ3MKLVxmSUNVUkxJTkZPX1JFRElSRUNUX1VSTFxmUCBvcHRpb24gaW5zdGVhZCBvZiB1c2luZworXGZJQ1VSTElORk9fUkVESVJFQ1RfVVJMKDMpXGZQIG9wdGlvbiBpbnN0ZWFkIG9mIHVzaW5nCiBcZklDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OKDMpXGZQLgogLlNIIERFRkFVTFQKIDAsIGRpc2FibGVkCkBAIC02OCwzICs3Nyw0IEBACiAuU0ggIlNFRSBBTFNPIgogLkJSIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTICIoMyksICIgQ1VSTE9QVF9QUk9UT0NPTFMgIigzKSwgIgogLkJSIENVUkxPUFRfUE9TVFJFRElSICIoMyksICIKKy5CUiBDVVJMSU5GT19SRURJUkVDVF9VUkwgIigzKSwgIiwgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk9SQklEX1JFVVNFLjMKaW5kZXggYzU4OGNhNS4uYjg0NjRkZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT1JCSURfUkVVU0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZPUkJJRF9SRVVTRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlJFU0hfQ09OTkVDVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKaW5kZXggMWNhYWY2MS4uY2U2ZTZmZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBQT1JULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMwppbmRleCBmZDg3YmIyLi44ZTMwMGJjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFNTTEFVVEguMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCmluZGV4IGJmYmVhOWMuLjU0MzdiMGMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FDQ09VTlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FDQ09VTlQuMwppbmRleCAzYzM0MjQ3Li4wZDc2OGQ3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9BQ0NPVU5ULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQUNDT1VOVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMwppbmRleCBiNTFlNGRkLi41NzU4MTA5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuMwppbmRleCBhNTI4NjNlLi5kMjhhNjQ2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMwppbmRleCA2MjM5NmI5Li4yODBlOGYxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9GSUxFTUVUSE9ELjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU5LDQgKzU5LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfRlRQTElTVE9OTFkgIigzKSwgIiBDVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAgIigzKSwgIgorLkJSIENVUkxPUFRfRElSTElTVE9OTFkgIigzKSwgIiBDVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zCmluZGV4IDE4ZGJjMmYuLjQ1ZWMzMDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9SRVNQT05TRV9USU1FT1VULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMwppbmRleCBiMTgwM2ZkLi5iNjBjM2IxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TU0xfQ0NDLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TU0xfQ0NDLjMKaW5kZXggNTM5MTI4NS4uNDczNzExNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfU1NMX0NDQy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1NTTF9DQ0MuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBSVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQUlQuMwppbmRleCBkMjZhZjBjLi4xODFmNWExIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9FUFJULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9FUFNWLjMKaW5kZXggMTcyOTg1YS4uYWY3YTQ1ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBTVi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9QUkVULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfUFJFVC4zCmluZGV4IGIyMGYzZmIuLjEwZjcxM2IgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9QUkVULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLjMKaW5kZXggMTNmM2NlYy4uNjVlYTZlYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVIuMwppbmRleCBmNWE0YmU4Li5iNjUwMTYzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMwppbmRleCBjMGE0NWYyLi5jODY1Yzg2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkZVTkNUSU9OLjMKaW5kZXggZjhlZDBhYi4uYjg1OTZkOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVSRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbml0ZW1zLCB2b2lkICp1c2VyZGF0YSkKIHsKICAgLyogcmVjZWl2ZWQgaGVhZGVyIGlzIG5pdGVtcyAqIHNpemUgbG9uZyBpbiAnYnVmZmVyJyBOT1QgWkVSTyBURVJNSU5BVEVEICovCi0gIC8qICd1c2VyZGF0YScgaXMgc2V0IHdpdGggQ1VSTE9QVF9XUklURURBVEEgKi8KKyAgLyogJ3VzZXJkYXRhJyBpcyBzZXQgd2l0aCBDVVJMT1BUX0hFQURFUkRBVEEgKi8KICAgcmV0dXJuIG5pdGVtcyAqIHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVST1BULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUk9QVC4zCmluZGV4IDc3NzZiOTIuLjcwNTNhM2EgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVST1BULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJPUFQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFAyMDBBTElBU0VTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFAyMDBBTElBU0VTLjMKaW5kZXggYjg3ZGI0Ni4uMTdmMWRkMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUDIwMEFMSUFTRVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBBVVRILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBBVVRILjMKaW5kZXggMzVkNzVhYS4uZmM3YTNhNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEFVVEguMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBHRVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCmluZGV4IGMxNGMzODcuLjAxZGUxZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEhFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKaW5kZXggY2Q1MDQzMS4uYzVjY2IxYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUE9TVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUE9TVC4zCmluZGV4IDBmMzViNjMuLjk3NGY5ZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUFBPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBQT1NULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw4ICszNCw4IEBACiBpbnN0cnVjdCB3aGF0IGRhdGEgdG8gcGFzcyBvbiB0byB0aGUgc2VydmVyIGluIHRoZSBcZklmb3JtcG9zdFxmUCBhcmd1bWVudC4KIFBhc3MgYSBwb2ludGVyIHRvIGEgbGlua2VkIGxpc3Qgb2YgY3VybF9odHRwcG9zdCBzdHJ1Y3RzIGFzIHBhcmFtZXRlci4gIFRoZQogZWFzaWVzdCB3YXkgdG8gY3JlYXRlIHN1Y2ggYSBsaXN0LCBpcyB0byB1c2UgXGZJY3VybF9mb3JtYWRkKDMpXGZQIGFzCi1kb2N1bWVudGVkLiBUaGUgZGF0YSBpbiB0aGlzIGxpc3QgbXVzdCByZW1haW4gaW50YWN0IHVudGlsIHlvdSBjbG9zZSB0aGlzIGN1cmwKLWhhbmRsZSBhZ2FpbiB3aXRoIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQLgorZG9jdW1lbnRlZC4gVGhlIGRhdGEgaW4gdGhpcyBsaXN0IG11c3QgcmVtYWluIGludGFjdCBhcyBsb25nIGFzIHRoZSBjdXJsCit0cmFuc2ZlciBpcyBhbGl2ZSBhbmQgaXMgdXNpbmcgaXQuCiAKIFVzaW5nIFBPU1Qgd2l0aCBIVFRQIDEuMSBpbXBsaWVzIHRoZSB1c2Ugb2YgYSAiRXhwZWN0OiAxMDAtY29udGludWUiIGhlYWRlci4KIFlvdSBjYW4gZGlzYWJsZSB0aGlzIGhlYWRlciB3aXRoIFxmSUNVUkxPUFRfSFRUUEhFQURFUigzKVxmUC4KQEAgLTc2LDMgKzc2LDQgQEAKIFJldHVybnMgQ1VSTEVfT0sgaWYgSFRUUCBpcyBlbmFibGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgogLlNIICJTRUUgQUxTTyIKIC5CUiBDVVJMT1BUX1BPU1RGSUVMRFMgIigzKSwgIiBDVVJMT1BUX1BPU1QgIigzKSwgIgorLkJSIGN1cmxfZm9ybWFkZCAiKDMpLCAiIGN1cmxfZm9ybWZyZWUgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUFBST1hZVFVOTkVMLjMKaW5kZXggZjg2MWFmYi4uNmI0OGEwNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBQUk9YWVRVTk5FTC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfQ09OVEVOVF9ERUNPRElORy4zCmluZGV4IDY1NDcyZWMuLjkzMzhiMjQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCmluZGV4IDI2NjYyZGIuLmRkZDU5ZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9WRVJTSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfVkVSU0lPTi4zCmluZGV4IGM4NWQxNDQuLjk2ZGQ0YjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9WRVJTSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQX1ZFUlNJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDExICsyOCwxNSBAQAogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04sIGxvbmcgdmVyc2lvbik7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgXGZJdmVyc2lvblxmUCBhIGxvbmcsIHNldCB0byBvbmUgb2YgdGhlIHZhbHVlcyBkZXNjcmliZWQgYmVsb3cuIFRoZXkKLWZvcmNlIGxpYmN1cmwgdG8gdXNlIHRoZSBzcGVjaWZpYyBIVFRQIHZlcnNpb25zLiBUaGlzIGlzIG5vdCBzZW5zaWJsZSB0byBkbwotdW5sZXNzIHlvdSBoYXZlIGEgZ29vZCByZWFzb24uIFlvdSBoYXZlIHRvIHNldCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UKK1Bhc3MgXGZJdmVyc2lvblxmUCBhIGxvbmcsIHNldCB0byBvbmUgb2YgdGhlIHZhbHVlcyBkZXNjcmliZWQgYmVsb3cuIFRoZXkgYXNrCitsaWJjdXJsIHRvIHVzZSB0aGUgc3BlY2lmaWMgSFRUUCB2ZXJzaW9ucy4gVGhpcyBpcyBub3Qgc2Vuc2libGUgdG8gZG8gdW5sZXNzCit5b3UgaGF2ZSBhIGdvb2QgcmVhc29uLiBZb3UgaGF2ZSB0byBzZXQgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlCiBsaWJjdXJsJ3MgSFRUUC8yIHN1cHBvcnQuCiAKK05vdGUgdGhhdCB0aGUgSFRUUCB2ZXJzaW9uIGlzIGp1c3QgYSByZXF1ZXN0LiBsaWJjdXJsIHdpbGwgc3RpbGwgcHJpb3JpdGl6ZSB0bworcmUtdXNlIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gc28gaXQgbWlnaHQgdGhlbiByZS11c2UgYSBjb25uZWN0aW9uIHVzaW5nIGEKK0hUVFAgdmVyc2lvbiB5b3UgaGF2ZW4ndCBhc2tlZCBmb3IuCisKIC5JUCBDVVJMX0hUVFBfVkVSU0lPTl9OT05FCiBXZSBkb24ndCBjYXJlIGFib3V0IHdoYXQgdmVyc2lvbiB0aGUgbGlicmFyeSB1c2VzLiBsaWJjdXJsIHdpbGwgdXNlIHdoYXRldmVyCiBpdCB0aGlua3MgZml0LgpAQCAtNDEsOCArNDUsMjAgQEAKIC5JUCBDVVJMX0hUVFBfVkVSU0lPTl8xXzEKIEVuZm9yY2UgSFRUUCAxLjEgcmVxdWVzdHMuCiAuSVAgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wCi1BdHRlbXB0IEhUVFAgMiByZXF1ZXN0cy4gbGliY3VybCB3aWxsIGZhbGwgYmFjayB0byBIVFRQIDEueCBpZiBIVFRQIDIgY2FuJ3QgYmUKK0F0dGVtcHQgSFRUUCAyIHJlcXVlc3RzLiBsaWJjdXJsIHdpbGwgZmFsbCBiYWNrIHRvIEhUVFAgMS4xIGlmIEhUVFAgMiBjYW4ndCBiZQogbmVnb3RpYXRlZCB3aXRoIHRoZSBzZXJ2ZXIuIChBZGRlZCBpbiA3LjMzLjApCisKK1RoZSBhbGlhcyBcZklDVVJMX0hUVFBfVkVSU0lPTl8yXGZQIHdhcyBhZGRlZCBpbiA3LjQzLjAgdG8gYmV0dGVyIHJlZmxlY3QgdGhlCithY3R1YWwgcHJvdG9jb2wgbmFtZS4KKy5JUCBDVVJMX0hUVFBfVkVSU0lPTl8yVExTCitBdHRlbXB0IEhUVFAgMiBvdmVyIFRMUyAoSFRUUFMpIG9ubHkuIGxpYmN1cmwgd2lsbCBmYWxsIGJhY2sgdG8gSFRUUCAxLjEgaWYKK0hUVFAgMiBjYW4ndCBiZSBuZWdvdGlhdGVkIHdpdGggdGhlIEhUVFBTIHNlcnZlci4gRm9yIGNsZWFyIHRleHQgSFRUUCBzZXJ2ZXJzLAorbGliY3VybCB3aWxsIHVzZSAxLjEuIChBZGRlZCBpbiA3LjQ3LjApCisuSVAgQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UKK0lzc3VlIG5vbi1UTFMgSFRUUCByZXF1ZXN0cyB1c2luZyBIVFRQLzIgd2l0aG91dCBIVFRQLzEuMSBVcGdyYWRlLiBJdCByZXF1aXJlcworcHJpb3Iga25vd2xlZGdlIHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0cyBIVFRQLzIgc3RyYWlnaHQgYXdheS4gSFRUUFMgcmVxdWVzdHMKK3dpbGwgc3RpbGwgZG8gSFRUUC8yIHRoZSBzdGFuZGFyZCB3YXkgd2l0aCBuZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gaW4gdGhlCitUTFMgaGFuZHNoYWtlLiAoQWRkZWQgaW4gNy40OS4wKQogLlNIIERFRkFVTFQKIENVUkxfSFRUUF9WRVJTSU9OX05PTkUKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSC4zCmluZGV4IDUxZmQ2YjAuLjQxM2VlNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw3ICsyMiw3IEBACiAuXCIKIC5USCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCAzICIxOSBKdW4gMjAxNCIgImxpYmN1cmwgNy4zNy4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgogLlNIIE5BTUUKLUNVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RIIFwtIGlnbm9yZSBDb250ZW50LUxlbmd0aCBpbiBIVFRQIHJlc3BvbnNlCitDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCBcLSBpZ25vcmUgY29udGVudCBsZW5ndGgKIC5TSCBTWU5PUFNJUwogLm5mCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC0zMCwxMiArMzAsMTggQEAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpZ25vcmUpOwogLlNIIERFU0NSSVBUSU9OCi1JZiBcZklpZ25vcmVcZlAgaXMgc2V0IHRvIDEsIGlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGluIHRoZSBIVFRQCi1yZXNwb25zZS4gVGhpcyBpcyB1c2VmdWwgZm9yIEFwYWNoZSAxLnggKGFuZCBzaW1pbGFyIHNlcnZlcnMpIHdoaWNoIHdpbGwKK0lmIFxmSWlnbm9yZVxmUCBpcyBzZXQgdG8gMUwsIGlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGluIHRoZSBIVFRQCityZXNwb25zZSBhbmQgaWdub3JlIGFza2luZyBmb3Igb3IgcmVseWluZyBvbiBpdCBmb3IgRlRQIHRyYW5zZmVycy4KKworVGhpcyBpcyB1c2VmdWwgZm9yIEhUVFAgd2l0aCBBcGFjaGUgMS54IChhbmQgc2ltaWxhciBzZXJ2ZXJzKSB3aGljaCB3aWxsCiByZXBvcnQgaW5jb3JyZWN0IGNvbnRlbnQgbGVuZ3RoIGZvciBmaWxlcyBvdmVyIDIgZ2lnYWJ5dGVzLiBJZiB0aGlzIG9wdGlvbiBpcwogdXNlZCwgY3VybCB3aWxsIG5vdCBiZSBhYmxlIHRvIGFjY3VyYXRlbHkgcmVwb3J0IHByb2dyZXNzLCBhbmQgd2lsbCBzaW1wbHkKIHN0b3AgdGhlIGRvd25sb2FkIHdoZW4gdGhlIHNlcnZlciBlbmRzIHRoZSBjb25uZWN0aW9uLgogCitJdCBpcyBhbHNvIHVzZWZ1bCB3aXRoIEZUUCB3aGVuIGZvciBleGFtcGxlIHRoZSBmaWxlIGlzIGdyb3dpbmcgd2hpbGUgdGhlCit0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyB3aGljaCBvdGhlcndpc2Ugd2lsbCB1bmNvbmRpdGlvbmFsbHkgY2F1c2UgbGliY3VybCB0bworcmVwb3J0IGVycm9yLgorCiBPbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiBzdHJpY3RseSBuZWNlc3NhcnkuCiAuU0ggREVGQVVMVAogMApAQCAtNTQsNyArNjAsNyBAQAogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1BZGRlZCBpbiA3LjE0LjEKK0FkZGVkIGluIDcuMTQuMS4gU3VwcG9ydCBmb3IgRlRQIGFkZGVkIGluIDcuNDYuMC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTkZJTEVTSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMwppbmRleCBmZDQ5ZTIxLi4wODhmNDVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkVfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCmluZGV4IDExNDY3NmQuLmY4NjZjZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJGQUNFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSRkFDRS4zCmluZGV4IDA4OTBlYjYuLjc3ZGIzNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJGQUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkZBQ0UuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMKaW5kZXggODM2ZGZhYy4uYjQ3ZDIxZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJMRUFWRURBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMwppbmRleCBiOTY1NTI5Li45NWU2ZmU1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJMRUFWRUZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU9DVExEQVRBLjMKaW5kZXggNDU2MDgwYy4uMGVmOTZlMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTERBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lPQ1RMREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU9DVExGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKaW5kZXggZWJmZThkZi4uZjJkZDQyZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JUFJFU09MVkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSVBSRVNPTFZFLjMKaW5kZXggYWQ5ODI3YS4uODE3ZjM0ZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JUFJFU09MVkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lQUkVTT0xWRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSVNTVUVSQ0VSVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKaW5kZXggMDhhZmIyOS4uNjExOThlYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LRVlQQVNTV0QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfS0VZUEFTU1dELjMKaW5kZXggMGVkMGM4Ny4uOWI4NWI4MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LRVlQQVNTV0QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0tFWVBBU1NXRC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LUkJMRVZFTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LUkJMRVZFTC4zCmluZGV4IDU3MWViYTMuLjZlYmQyZjIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfS1JCTEVWRUwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0tSQkxFVkVMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDUsNCArNDUsNCBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfS1JCTEVWRUwgIigzKSwgIiBDVVJMT1BUX0ZUUF9TU0wgIigzKSwgIgorLkJSIENVUkxPUFRfS1JCTEVWRUwgIigzKSwgIiBDVVJMT1BUX1VTRV9TU0wgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JULjMKaW5kZXggODhjYTFmOC4uZTU2ZjAxMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPQ0FMUE9SVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JUUkFOR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JUUkFOR0UuMwppbmRleCAzYTdjNzAxLi5lNTRhMWM4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPQ0FMUE9SVFJBTkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9HSU5fT1BUSU9OUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKaW5kZXggZGRlM2M2ZS4uYTljYTE5MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9naW4gb3B0aW9ucyBwbGVhc2Ugc2VlIFJGQzIzODQsIFJGQzUwOTIgYW5kCiBJRVRGIGRyYWZ0IGRyYWZ0LWVhcmhhcnQtdXJsLXNtdHAtMDAudHh0CiAKLVxmQkNVUkxPUFRfTE9HSU5fT1BUSU9OUygzKVxmUCBjYW4gYmUgdXNlZCB0byBzZXQgcHJvdG9jb2wgc3BlY2lmaWMgbG9naW4KK1xmSUNVUkxPUFRfTE9HSU5fT1BUSU9OUygzKVxmUCBjYW4gYmUgdXNlZCB0byBzZXQgcHJvdG9jb2wgc3BlY2lmaWMgbG9naW4KIG9wdGlvbnMsIHN1Y2ggYXMgdGhlIHByZWZlcnJlZCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gdmlhICJBVVRIPU5UTE0iIG9yCiAiQVVUSD0qIiwgYW5kIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFxmSUNVUkxPUFRfVVNFUk5BTUUoMylcZlAKIG9wdGlvbi4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9MSU1JVC4zCmluZGV4IDg5M2MxYjEuLjg5MGVhNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9USU1FLjMKaW5kZXggOTBiMTlmMi4uZWQzYjgyOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX1RJTUUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0FVVEguMwppbmRleCA0NTkxYTAxLi5iZDU4MWYwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9BVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0ZST00uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9GUk9NLjMKaW5kZXggYmY3MTYwZS4uMDQyMGQ0OSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0ZST00uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfRlJPTS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9SQ1BULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfUkNQVC4zCmluZGV4IDk1NjY1ZTcuLjAxZmE2MmEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9SQ1BULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX1JDUFQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWENPTk5FQ1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWENPTk5FQ1RTLjMKaW5kZXggMmE0MWIzNy4uOGU5MGE5ZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhDT05ORUNUUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYQ09OTkVDVFMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogSWYgeW91IGFkZCB0aGlzIGVhc3kgaGFuZGxlIHRvIGEgbXVsdGkgaGFuZGxlLCB0aGlzIHNldHRpbmcgaXMgbm90CiBhY2tub3dsZWRnZWQsIGFuZCB5b3UgbXVzdCBpbnN0ZWFkIHVzZSBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUCBhbmQgdGhlCi1cZklDVVJMTU9QVF9NQVhDT05ORUNUU1xmUCBvcHRpb24uCitcZklDVVJMTU9QVF9NQVhDT05ORUNUUygzKVxmUCBvcHRpb24uCiAuU0ggREVGQVVMVAogNQogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRS4zCmluZGV4IGUwY2UwNjYuLjVmNTk1OWEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYRklMRVNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWEZJTEVTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zCmluZGV4IGIzMTMwMDEuLjYzMGMwYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYRklMRVNJWkVfTEFSR0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWEZJTEVTSVpFX0xBUkdFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhSRURJUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYUkVESVJTLjMKaW5kZXggMzQ2MDhjMy4uY2U2MjU1MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhSRURJUlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWFJFRElSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMwppbmRleCBlNzNhZDIyLi4wMzFmMmNkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMwppbmRleCA0ODkzYjM5Li5jMmM2MzM2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkMuMwppbmRleCA5ZmIxM2IzLi5jNDUzZGQzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FVFJDLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkNfRklMRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKaW5kZXggNzI5MTk5OS4uZDNlY2M5NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMwppbmRleCAyZDIyNTk1Li5mMTk1ZmFiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19GSUxFX1BFUk1TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19GSUxFX1BFUk1TLjMKaW5kZXggZWI1MWY0Ni4uMmE0MWFiYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PQk9EWS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT0JPRFkuMwppbmRleCBiMzAzYjk1Li4zNDBiOWY0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PQk9EWS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTk9CT0RZLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1BST0dSRVNTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMwppbmRleCBlYmRlY2IwLi44MTk0YTVlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDYgKzM2LDIzIEBACiBhdCBhbGwuCiAuU0ggREVGQVVMVAogMSwgbWVhbmluZyBpdCBub3JtYWxseSBydW5zIHdpdGhvdXQgYSBwcm9ncmVzcyBtZXRlci4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKworICAvKiBlbmFibGUgcHJvZ3Jlc3MgbWV0ZXIgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX05PUFJPR1JFU1MsIDBMKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCisuU0ggQVZBSUxBQklMSVRZCitBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0suCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1BST1hZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMwppbmRleCA3ZTJlNzE5Li4yOTk4YTMwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PU0lHTkFMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PU0lHTkFMLjMKaW5kZXggMjdmZTE1OC4uZGFjMDcxMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1NJR05BTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTk9TSUdOQUwuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVREQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVREQVRBLjMKaW5kZXggYTM5N2MzZS4uODY5YjdmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9PUEVOU09DS0VUREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfT1BFTlNPQ0tFVERBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVRGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMwppbmRleCBkNWY0NjFkLi4zMTRlMGM0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVRGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVNTV09SRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVNTV09SRC4zCmluZGV4IGI0NjA2NTguLjA2ZWQ5ZTEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUEFTU1dPUkQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBU1NXT1JELjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVRIX0FTX0lTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMwppbmRleCA0OTBhY2EwLi45YjBkM2Q1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9QQVRIX0FTX0lTLCBsb25nIGxlYXZlaXQpOwogLlNIIERFU0NSSVBUSU9OCi1CeSBzZXR0aW5nIHRoZSBsb25nIFxmSWxlYXZpdFxmUCB0byAxLCB0byBleHBsaWNpdGx5IHRlbGwgbGliY3VybCB0byBub3QgYWx0ZXIKLXRoZSBnaXZlbiBwYXRoIGJlZm9yZSBwYXNzaW5nIGl0IG9uIHRvIHRoZSBzZXJ2ZXIuCitTZXQgdGhlIGxvbmcgXGZJbGVhdmVpdFxmUCB0byAxLCB0byBleHBsaWNpdGx5IHRlbGwgbGliY3VybCB0byBub3QgYWx0ZXIgdGhlCitnaXZlbiBwYXRoIGJlZm9yZSBwYXNzaW5nIGl0IG9uIHRvIHRoZSBzZXJ2ZXIuCiAKLVRoaXMgdGVsbHMgbGliY3VybCB0byBOT1Qgc3F1YXNoIHNlcXVlbmNlcyBvZiAiLy4uLyIgb3IgIi8uLyIgdGhhdCBtYXkgZXhpc3QKLWluIHRoZSBVUkwncyBwYXRoIHBhcnQgYW5kIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCBhY2NvcmRpbmcgdG8gUkZDCi0zOTg2IHNlY3Rpb24gNS4yLjQuCitUaGlzIGluc3RydWN0cyBsaWJjdXJsIHRvIE5PVCBzcXVhc2ggc2VxdWVuY2VzIG9mICIvLi4vIiBvciAiLy4vIiB0aGF0IG1heQorZXhpc3QgaW4gdGhlIFVSTCdzIHBhdGggcGFydCBhbmQgdGhhdCBpcyBzdXBwb3NlZCB0byBiZSByZW1vdmVkIGFjY29yZGluZyB0bworUkZDIDM5ODYgc2VjdGlvbiA1LjIuNC4KIAogU29tZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb25zIGFyZSBrbm93biB0byAoZXJyb25lb3VzbHkpIHJlcXVpcmUgdGhlIGRvdCBkb3QKIHNlcXVlbmNlcyB0byByZW1haW4gaW4gdGhlIHBhdGggYW5kIHNvbWUgY2xpZW50cyB3YW50IHRvIHBhc3MgdGhlc2Ugb24gaW4KQEAgLTQzLDcgKzQzLDcgQEAKIC5TSCBERUZBVUxUCiAwCiAuU0ggUFJPVE9DT0xTCi1BbGwgCitBbGwKIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpAQCAtNjEsMyArNjEsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9TVERFUlIgIigzKSwgIiBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gIigzKSwgIgorLkJSIENVUkxPUFRfVVJMICIoMyksICIKKwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUElOTkVEUFVCTElDS0VZLjMKaW5kZXggOTRjYWQzMS4uNGU2NzNiZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMjMgKzI4LDMwIEBACiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWSwgY2hhciAqcGlubmVkcHVia2V5KTsKIC5TSCBERVNDUklQVElPTgotUGFzcyBhIHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nIGFzIHBhcmFtZXRlci4gVGhlIHN0cmluZyBzaG91bGQgYmUKLXRoZSBmaWxlIG5hbWUgb2YgeW91ciBwaW5uZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCBleHBlY3RlZCBpcyAiUEVNIiBvciAiREVSIi4KK1Bhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuIFRoZSBzdHJpbmcgY2FuIGJlIHRoZQorZmlsZSBuYW1lIG9mIHlvdXIgcGlubmVkIHB1YmxpYyBrZXkuIFRoZSBmaWxlIGZvcm1hdCBleHBlY3RlZCBpcyAiUEVNIiBvciAiREVSIi4KK1RoZSBzdHJpbmcgY2FuIGFsc28gYmUgYW55IG51bWJlciBvZiBiYXNlNjQgZW5jb2RlZCBzaGEyNTYgaGFzaGVzIHByZWNlZGVkIGJ5Cisic2hhMjU2Ly8iIGFuZCBzZXBhcmF0ZWQgYnkgIjsiCiAKIFdoZW4gbmVnb3RpYXRpbmcgYSBUTFMgb3IgU1NMIGNvbm5lY3Rpb24sIHRoZSBzZXJ2ZXIgc2VuZHMgYSBjZXJ0aWZpY2F0ZQogaW5kaWNhdGluZyBpdHMgaWRlbnRpdHkuIEEgcHVibGljIGtleSBpcyBleHRyYWN0ZWQgZnJvbSB0aGlzIGNlcnRpZmljYXRlIGFuZAogaWYgaXQgZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgcHVibGljIGtleSBwcm92aWRlZCB0byB0aGlzIG9wdGlvbiwgY3VybCB3aWxsCiBhYm9ydCB0aGUgY29ubmVjdGlvbiBiZWZvcmUgc2VuZGluZyBvciByZWNlaXZpbmcgYW55IGRhdGEuCisKK09uIG1pc21hdGNoLCBcZklDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0hcZlAgaXMgcmV0dXJuZWQuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogaWYoY3VybCkgewogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUElOTkVEUFVCTElDS0VZLCAiL2V0Yy9wdWJsaWNrZXkuZGVyIik7CisgIC8qIE9SCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVksICJzaGEyNTYvL1loS0pLU3pvVHQyYjVGUDE4ZnZwSG83ZkpZcVFDakFhM0hXWTN0dlJNd0U9O3NoYTI1Ni8vdDYyQ2VVMnRRaXFrZXhVNzRHeGEyZWc3ZlJiRWdvQ2hUb2NpTWVlOXdubz0iKTsKKyAgKi8KIAogICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCiAgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpAQCAtNTQsOSArNjEsMjggQEAKIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgc2VydmVyJ3MgcHVibGljIGtleSBmaWxlIHlvdSBjYW4gZXh0cmFjdCBpdCBmcm9tIHRoZQogc2VydmVyJ3MgY2VydGlmaWNhdGUuCiAubmYKLW9wZW5zc2wgeDUwOSAtaW4gd3d3LnRlc3QuY29tLnBlbSAtcHVia2V5IC1ub291dCA+IHd3dy50ZXN0LmNvbS5wdWJrZXkucGVtCisjIHJldHJpZXZlIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSBpZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0CisjCisjIGJlIHN1cmUgdG8gZXhhbWluZSB0aGUgY2VydGlmaWNhdGUgdG8gc2VlIGlmIGl0IGlzIHdoYXQgeW91IGV4cGVjdGVkCisjCisjIFdpbmRvd3Mtc3BlY2lmaWM6CisjIC0gVXNlIE5VTCBpbnN0ZWFkIG9mIC9kZXYvbnVsbC4KKyMgLSBPcGVuU1NMIG1heSB3YWl0IGZvciBpbnB1dCBpbnN0ZWFkIG9mIGRpc2Nvbm5lY3RpbmcuIEhpdCBlbnRlci4KKyMgLSBJZiB5b3UgZG9uJ3QgaGF2ZSBzZWQsIHRoZW4ganVzdCBjb3B5IHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIGEgZmlsZToKKyMgICBMaW5lcyBmcm9tIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLSB0byAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLgorIworb3BlbnNzbCBzX2NsaWVudCAtc2VydmVybmFtZSB3d3cuZXhhbXBsZS5jb20gLWNvbm5lY3Qgd3d3LmV4YW1wbGUuY29tOjQ0MyA8IC9kZXYvbnVsbCB8IHNlZCAtbiAiLy0tLS0tQkVHSU4vLC8tLS0tLUVORC9wIiA+IHd3dy5leGFtcGxlLmNvbS5wZW0KKworIyBleHRyYWN0IHB1YmxpYyBrZXkgaW4gcGVtIGZvcm1hdCBmcm9tIGNlcnRpZmljYXRlCitvcGVuc3NsIHg1MDkgLWluIHd3dy5leGFtcGxlLmNvbS5wZW0gLXB1YmtleSAtbm9vdXQgPiB3d3cuZXhhbXBsZS5jb20ucHVia2V5LnBlbQorCisjIGNvbnZlcnQgcHVibGljIGtleSBmcm9tIHBlbSB0byBkZXIKK29wZW5zc2wgYXNuMXBhcnNlIC1ub291dCAtaW5mb3JtIHBlbSAtaW4gd3d3LmV4YW1wbGUuY29tLnB1YmtleS5wZW0gLW91dCB3d3cuZXhhbXBsZS5jb20ucHVia2V5LmRlcgorCisjIHNoYTI1NiBoYXNoIGFuZCBiYXNlNjQgZW5jb2RlIGRlciB0byBzdHJpbmcgZm9yIHVzZQorb3BlbnNzbCBkZ3N0IC1zaGEyNTYgLWJpbmFyeSB3d3cuZXhhbXBsZS5jb20ucHVia2V5LmRlciB8IG9wZW5zc2wgYmFzZTY0CiAuZmkKLVRoZSBwdWJsaWMga2V5IGlzIG91dHB1dCBpbiBQRU0gZm9ybWF0IGFuZCBjb250YWlucyBhIGhlYWRlciwgYmFzZTY0IGRhdGEgYW5kIGEKK1RoZSBwdWJsaWMga2V5IGluIFBFTSBmb3JtYXQgY29udGFpbnMgYSBoZWFkZXIsIGJhc2U2NCBkYXRhIGFuZCBhCiBmb290ZXI6CiAubmYKIC0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCkBAIC02NCw4ICs5MCwxNiBAQAogLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCiAuZmkKIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuMzkuMCBmb3IgT3BlblNTTCwgR251VExTIGFuZCBHU0tpdC4gQWRkZWQgaW4gNy40My4wIGZvcgotTlNTIGFuZCB3b2xmU1NML0N5YVNTTC4gT3RoZXIgU1NMIGJhY2tlbmRzIG5vdCBzdXBwb3J0ZWQuCitQRU0vREVSIHN1cHBvcnQ6CisgIDcuMzkuMDogT3BlblNTTCwgR251VExTIGFuZCBHU0tpdAorICA3LjQzLjA6IE5TUyBhbmQgd29sZlNTTC9DeWFTU0wKKyAgNy40Ny4wOiBtYmVkdGxzCisgIDcuNDkuMDogUG9sYXJTU0wKK3NoYTI1NiBzdXBwb3J0OgorICA3LjQ0LjA6IE9wZW5TU0wsIEdudVRMUywgTlNTIGFuZCB3b2xmU1NML0N5YVNTTC4KKyAgNy40Ny4wOiBtYmVkdGxzCisgIDcuNDkuMDogUG9sYXJTU0wKK090aGVyIFNTTCBiYWNrZW5kcyBub3Qgc3VwcG9ydGVkLgogLlNIIFJFVFVSTiBWQUxVRQogUmV0dXJucyBDVVJMRV9PSyBpZiBUTFMgZW5hYmxlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJUEVXQUlULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJUEVXQUlULjMKaW5kZXggNWY2NDE5NS4uNmQwZjE0ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSVBFV0FJVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUElQRVdBSVQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDEwICszNiwxMCBAQAogc3VjaCBjb25uZWN0aW9uIGV4aXN0cyBpdCB3aWxsIGltbWVkaWF0ZWx5IGNvbnRpbnVlIGFuZCBjcmVhdGUgYSBmcmVzaCBuZXcKIGNvbm5lY3Rpb24gdG8gdXNlLgogCi1CeSBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIDEgLSBhbmQgaGF2aW5nIFxmSUNVUkxNT1BUX1BJUEVMSU5FXGZQIGVuYWJsZWQgZm9yCi10aGUgbXVsdGkgaGFuZGxlIHRoaXMgdHJhbnNmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIC0gbGliY3VybCB3aWxsIGluc3RlYWQgd2FpdAotZm9yIHRoZSBjb25uZWN0aW9uIHRvIHJldmVhbCBpZiBpdCBpcyBwb3NzaWJsZSB0byBwaXBlbGluZS9tdWx0aXBsZXggb24gYmVmb3JlCi1pdCBjb250aW51ZXMuIFRoaXMgZW5hYmxlcyBsaWJjdXJsIHRvIG11Y2ggYmV0dGVyIGtlZXAgdGhlIG51bWJlciBvZgorQnkgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxIC0gYW5kIGhhdmluZyBcZklDVVJMTU9QVF9QSVBFTElOSU5HKDMpXGZQIGVuYWJsZWQKK2ZvciB0aGUgbXVsdGkgaGFuZGxlIHRoaXMgdHJhbnNmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIC0gbGliY3VybCB3aWxsIGluc3RlYWQKK3dhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIHJldmVhbCBpZiBpdCBpcyBwb3NzaWJsZSB0byBwaXBlbGluZS9tdWx0aXBsZXggb24KK2JlZm9yZSBpdCBjb250aW51ZXMuIFRoaXMgZW5hYmxlcyBsaWJjdXJsIHRvIG11Y2ggYmV0dGVyIGtlZXAgdGhlIG51bWJlciBvZgogY29ubmVjdGlvbnMgdG8gYSBtaW5pbXVtIHdoZW4gdXNpbmcgcGlwZWxpbmluZyBvciBtdWx0aXBsZXhpbmcgcHJvdG9jb2xzLgogCiBUaGUgZWZmZWN0IHRodXMgYmVjb21lcyB0aGF0IHdpdGggdGhpcyBvcHRpb24gc2V0LCBsaWJjdXJsIHByZWZlcnMgdG8gd2FpdCBhbmQKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKaW5kZXggNWZkMTljNy4uZjQ3YjI0MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMwppbmRleCBjZDZiNmQ0Li43NzU0YzdkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCmluZGV4IDI3ZTQ1MTAuLmY5ZjllYWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKaW5kZXggMDE2NjgwNS4uOGRiMDVjNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMwppbmRleCA1MGZjMzUxLi45ZDBjNDAxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RRVU9URS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUVVPVEUuMwppbmRleCA3MjY5MmZkLi4zMjgzYTFhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RRVU9URS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVFFVT1RFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUkVESVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVFJFRElSLjMKaW5kZXggYWEzNmJkMC4uMDdhZWE2ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUkVESVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RSRURJUi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsMTMgKzMyLDEzIEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBiaXRtYXNrIHRvIGNvbnRyb2wgaG93IGxpYmN1cmwgYWN0cyBvbiByZWRpcmVjdHMgYWZ0ZXIgUE9TVHMgdGhhdCBnZXQgYQogMzAxLCAzMDIgb3IgMzAzIHJlc3BvbnNlIGJhY2suICBBIHBhcmFtZXRlciB3aXRoIGJpdCAwIHNldCAodmFsdWUKLVxmQkNVUkxfUkVESVJfUE9TVF8zMDFcZlApIHRlbGxzIHRoZSBsaWJyYXJ5IHRvIHJlc3BlY3QgUkZDMjYxNi8xMC4zLjIgYW5kIG5vdAotY29udmVydCBQT1NUIHJlcXVlc3RzIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nIGEgMzAxIHJlZGlyZWN0aW9uLgotU2V0dGluZyBiaXQgMSAodmFsdWUgXGZCQ1VSTF9SRURJUl9QT1NUXzMwMlxmUCkgbWFrZXMgbGliY3VybCBtYWludGFpbiB0aGUKLXJlcXVlc3QgbWV0aG9kIGFmdGVyIGEgMzAyIHJlZGlyZWN0IHdoaWxzdCBzZXR0aW5nIGJpdCAyICh2YWx1ZQotXGZCQ1VSTF9SRURJUl9QT1NUXzMwM1xmUCkgbWFrZXMgbGliY3VybCBtYWludGFpbiB0aGUgcmVxdWVzdCBtZXRob2QgYWZ0ZXIgYQotMzAzIHJlZGlyZWN0LiBUaGUgdmFsdWUgXGZCQ1VSTF9SRURJUl9QT1NUX0FMTFxmUCBpcyBhIGNvbnZlbmllbmNlIGRlZmluZSB0aGF0Ci1zZXRzIGFsbCB0aHJlZSBiaXRzLgorXGZCQ1VSTF9SRURJUl9QT1NUXzMwMVxmUCkgdGVsbHMgdGhlIGxpYnJhcnkgdG8gcmVzcGVjdCBSRkMgNzIzMSAoc2VjdGlvbgorNi40LjIgdG8gNi40LjQpIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nCithIDMwMSByZWRpcmVjdGlvbi4gIFNldHRpbmcgYml0IDEgKHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF8zMDJcZlApIG1ha2VzCitsaWJjdXJsIG1haW50YWluIHRoZSByZXF1ZXN0IG1ldGhvZCBhZnRlciBhIDMwMiByZWRpcmVjdCB3aGlsc3Qgc2V0dGluZyBiaXQgMgorKHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF8zMDNcZlApIG1ha2VzIGxpYmN1cmwgbWFpbnRhaW4gdGhlIHJlcXVlc3QgbWV0aG9kCithZnRlciBhIDMwMyByZWRpcmVjdC4gVGhlIHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF9BTExcZlAgaXMgYSBjb252ZW5pZW5jZQorZGVmaW5lIHRoYXQgc2V0cyBhbGwgdGhyZWUgYml0cy4KIAogVGhlIG5vbi1SRkMgYmVoYXZpb3VyIGlzIHViaXF1aXRvdXMgaW4gd2ViIGJyb3dzZXJzLCBzbyB0aGUgbGlicmFyeSBkb2VzIHRoZQogY29udmVyc2lvbiBieSBkZWZhdWx0IHRvIG1haW50YWluIGNvbnNpc3RlbmN5LiBIb3dldmVyLCBhIHNlcnZlciBtYXkgcmVxdWlyZSBhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSRVFVT1RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSRVFVT1RFLjMKaW5kZXggZTQxNjNlOC4uNmI5NTI2NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUkVRVU9URS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJFUVVPVEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSSVZBVEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCmluZGV4IDk5MDdmOTcuLjgwZjJjNmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST0dSRVNTREFUQS4zCmluZGV4IGM0Nzg1ZGMuLjdkYzcwZjEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NEQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0RBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSw3ICszNSw3IEBACiAuU0ggUFJPVE9DT0xTCiBBbGwKIC5TSCBFWEFNUExFCi1odHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL3Byb2dyZXNzZnVuYy5odG1sCiAuU0ggQVZBSUxBQklMSVRZCiBBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKaW5kZXggZDhlN2E2Ni4uYjA3N2UzYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzUsNyArNzUsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQWx3YXlzCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1RPQ09MUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9UT0NPTFMuMwppbmRleCA5NThlZWViLi40ZmVjYjgxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1RPQ09MUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPVE9DT0xTLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjAsNiArNjAsNyBAQAogQ1VSTFBST1RPX1NDUAogQ1VSTFBST1RPX1NGVFAKIENVUkxQUk9UT19TTUIKK0NVUkxQUk9UT19TTUJTCiBDVVJMUFJPVE9fU01UUAogQ1VSTFBST1RPX1NNVFBTCiBDVVJMUFJPVE9fVEVMTkVUCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZLjMKaW5kZXggYjQxOWU1MS4uZjY5NzViYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDggKzI5LDggQEAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1BST1hZLCBjaGFyICpwcm94eSk7CiAuU0ggREVTQ1JJUFRJT04KIFNldCB0aGUgXGZJcHJveHlcZlAgdG8gdXNlIGZvciB0aGUgdXBjb21pbmcgcmVxdWVzdC4gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgYQotY2hhciAqIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBob2xkaW5nIHRoZSBob3N0IG5hbWUgb3IgZG90dGVkIElQCi1hZGRyZXNzLgorY2hhciAqIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBob2xkaW5nIHRoZSBob3N0IG5hbWUgb3IgZG90dGVkIG51bWVyaWNhbAorSVAgYWRkcmVzcy4gQSBudW1lcmljYWwgSVB2NiBhZGRyZXNzIG11c3QgYmUgd3JpdHRlbiB3aXRoaW4gW2JyYWNrZXRzXS4KIAogVG8gc3BlY2lmeSBwb3J0IG51bWJlciBpbiB0aGlzIHN0cmluZywgYXBwZW5kIDpbcG9ydF0gdG8gdGhlIGVuZCBvZiB0aGUgaG9zdAogbmFtZS4gVGhlIHByb3h5J3MgcG9ydCBudW1iZXIgbWF5IG9wdGlvbmFsbHkgYmUgc3BlY2lmaWVkIHdpdGggdGhlIHNlcGFyYXRlCkBAIC02MSw4ICs2MSw4IEBACiBTZXR0aW5nIHRoZSBwcm94eSBzdHJpbmcgdG8gIiIgKGFuIGVtcHR5IHN0cmluZykgd2lsbCBleHBsaWNpdGx5IGRpc2FibGUgdGhlCiB1c2Ugb2YgYSBwcm94eSwgZXZlbiBpZiB0aGVyZSBpcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXQgZm9yIGl0LgogCi1BIHByb3h5IGhvc3Qgc3RyaW5nIGdpdmVuIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBhbHNvIGluY2x1ZGUgcHJvdG9jb2wKLXNjaGVtZSAoaHR0cDovLykgYW5kIGVtYmVkZGVkIHVzZXIgKyBwYXNzd29yZC4KK0EgcHJveHkgaG9zdCBzdHJpbmcgY2FuIGFsc28gaW5jbHVkZSBwcm90b2NvbCBzY2hlbWUgKGh0dHA6Ly8pIGFuZCBlbWJlZGRlZAordXNlciArIHBhc3N3b3JkLgogLlNIIERFRkFVTFQKIERlZmF1bHQgaXMgTlVMTCwgbWVhbmluZyBubyBwcm94eSBpcyB1c2VkLgogCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUFVVEguMwppbmRleCBmZTc0MmMwLi4yNGRiY2E1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlBVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUhFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUhFQURFUi4zCmluZGV4IGJmYTdhN2EuLmJmZWM2MjkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlIRUFERVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVBBU1NXT1JELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMwppbmRleCA0MzUzNmNhLi4xODI3MmMzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVBPUlQuMwppbmRleCBkOGExYmIxLi4yMzgwZTA5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUE9SVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlQT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVRZUEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlUWVBFLjMKaW5kZXggMmNlMGNjMC4uZDJkOTI0MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVRZUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZVFlQRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogXGZJQ1VSTFBST1hZX1NPQ0tTNFxmUCwgXGZJQ1VSTFBST1hZX1NPQ0tTNVxmUCwgXGZJQ1VSTFBST1hZX1NPQ0tTNEFcZlAgYW5kCiBcZklDVVJMUFJPWFlfU09DS1M1X0hPU1ROQU1FXGZQLiBUaGUgSFRUUCB0eXBlIGlzIGRlZmF1bHQuCiAKLUlmIHlvdSBzZXQgXGZCQ1VSTE9QVF9QUk9YWVRZUEUoMylcZlAgdG8gXGZJQ1VSTFBST1hZX0hUVFBfMV8wXGZQLCBpdCB3aWxsCitJZiB5b3Ugc2V0IFxmSUNVUkxPUFRfUFJPWFlUWVBFKDMpXGZQIHRvIFxmSUNVUkxQUk9YWV9IVFRQXzFfMFxmUCwgaXQgd2lsbAogb25seSBhZmZlY3QgaG93IGxpYmN1cmwgc3BlYWtzIHRvIGEgcHJveHkgd2hlbiBDT05ORUNUIGlzIHVzZWQuIFRoZSBIVFRQCiB2ZXJzaW9uIHVzZWQgZm9yICJyZWd1bGFyIiBIVFRQIHJlcXVlc3RzIGlzIGluc3RlYWQgY29udHJvbGxlZCB3aXRoCiBcZklDVVJMT1BUX0hUVFBfVkVSU0lPTigzKVxmUC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSTkFNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKaW5kZXggYzM0MmVjNC4uMGQ3YTI0MSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMyw3ICszMyw3IEBACiBQYXNzIGEgY2hhciAqIGFzIHBhcmFtZXRlciwgd2hpY2ggc2hvdWxkIGJlIHBvaW50aW5nIHRvIHRoZSB6ZXJvIHRlcm1pbmF0ZWQKIHVzZXIgbmFtZSB0byB1c2UgZm9yIHRoZSB0cmFuc2Zlci4KIAotXGZCQ1VSTE9QVF9QUk9YWVVTRVJOQU1FKDMpXGZQIHNldHMgdGhlIHVzZXIgbmFtZSB0byBiZSB1c2VkIGluIHByb3RvY29sCitcZklDVVJMT1BUX1BST1hZVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHByb3h5LgogCiBUbyBzcGVjaWZ5IHRoZSBwcm94eSBwYXNzd29yZCB1c2UgdGhlIFxmSUNVUkxPUFRfUFJPWFlQQVNTV09SRCgzKVxmUC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSUFdELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZVVNFUlBXRC4zCmluZGV4IGJiZjBkYTUuLjFiNDdiODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSUFdELjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJQV0QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuMwppbmRleCBhNjIyNGZiLi5hMDEwMzgyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiwyMiArMjIsMjMgQEAKIC5cIgogLlRIIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FIDMgIjE3IEp1biAyMDE1IiAibGliY3VybCA3LjQzLjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCiAuU0ggTkFNRQotQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUgXC0gcHJveHkgc2VydmljZSBuYW1lCitDVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRSBcLSBwcm94eSBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUKIC5TSCBTWU5PUFNJUwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUsIGNoYXIgKm5hbWUpOwogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgY2hhciAqIGFzIHBhcmFtZXRlciB0byBhIHN0cmluZyBob2xkaW5nIHRoZSBcZkluYW1lXGZQIG9mIHRoZQotc2VydmljZS4gVGhlIGRlZmF1bHQgc2VydmljZSBuYW1lIGlzICJIVFRQIi4gVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaGFuZ2UgaXQuCi0uLlNIIERFRkFVTFQKK3NlcnZpY2UuIFRoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBpcyAiSFRUUCIgZm9yIEhUVFAgYmFzZWQgcHJveGllcyBhbmQgInJjbWQiCitmb3IgU09DS1M1LiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNoYW5nZSBpdC4KKy5TSCBERUZBVUxUCiBTZWUgYWJvdmUKIC5TSCBQUk9UT0NPTFMKLU1vc3QKK0FsbCBuZXR3b3JrIHByb3RvY29scwogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuNDMuMAorQWRkZWQgaW4gNy40My4wIGZvciBIVFRQIHByb3hpZXMsIDcuNDkuMCBmb3IgU09DS1M1IHByb3hpZXMuCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKaW5kZXggYWU1ZWRlNy4uMmU1YzMzYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFVULjMKaW5kZXggYmQ0MGI3Zi4uODdjNmUwNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QVVQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BVVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUVVPVEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUVVPVEUuMwppbmRleCA4YmYzYzE0Li40ZGNlNzZkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1FVT1RFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9RVU9URS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjksNiArNjksOSBAQAogLklQICJybWRpciBkaXJlY3RvcnkiCiBUaGUgcm1kaXIgY29tbWFuZCByZW1vdmVzIHRoZSBkaXJlY3RvcnkgZW50cnkgc3BlY2lmaWVkIGJ5IHRoZSBkaXJlY3RvcnkKIG9wZXJhbmQsIHByb3ZpZGVkIGl0IGlzIGVtcHR5LgorLklQICJzdGF0dmZzIGZpbGUiCitUaGUgc3RhdHZmcyBjb21tYW5kIHJldHVybnMgc3RhdGlzdGljcyBvbiB0aGUgZmlsZSBzeXN0ZW0gaW4gd2hpY2ggc3BlY2lmaWVkCitmaWxlIHJlc2lkZXMuIChBZGRlZCBpbiA3LjQ5LjApCiAuSVAgInN5bWxpbmsgc291cmNlX2ZpbGUgdGFyZ2V0X2ZpbGUiCiBTZWUgbG4uCiAuUkUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFORE9NX0ZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFORE9NX0ZJTEUuMwppbmRleCAwYzJkNjg4Li5jODIyMzI1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JBTkRPTV9GSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SQU5ET01fRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFOR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFOR0UuMwppbmRleCBmNWRkNTU1Li4zNzVhOTQ0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JBTkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SQU5HRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsOSArMzUsMTMgQEAKIEhUVFAgdHJhbnNmZXJzIGFsc28gc3VwcG9ydCBzZXZlcmFsIGludGVydmFscywgc2VwYXJhdGVkIHdpdGggY29tbWFzIGFzIGluCiBcZkkiWC1ZLE4tTSJcZlAuIFVzaW5nIHRoaXMga2luZCBvZiBtdWx0aXBsZSBpbnRlcnZhbHMgd2lsbCBjYXVzZSB0aGUgSFRUUAogc2VydmVyIHRvIHNlbmQgdGhlIHJlc3BvbnNlIGRvY3VtZW50IGluIHBpZWNlcyAodXNpbmcgc3RhbmRhcmQgTUlNRSBzZXBhcmF0aW9uCi10ZWNobmlxdWVzKS4gRm9yIFJUU1AsIHRoZSBmb3JtYXR0aW5nIG9mIGEgcmFuZ2Ugc2hvdWxkIGZvbGxvdyBSRkMyMzI2IFNlY3Rpb24KLTEyLjI5LiBGb3IgUlRTUCwgYnl0ZSByYW5nZXMgYXJlIFxmQm5vdFxmUCBwZXJtaXR0ZWQuIEluc3RlYWQsIHJhbmdlcyBzaG91bGQKLWJlIGdpdmVuIGluIG5wdCwgdXRjLCBvciBzbXB0ZSBmb3JtYXRzLgordGVjaG5pcXVlcykuIFVuZm9ydHVuYXRlbHksIHRoZSBIVFRQIHN0YW5kYXJkIChSRkMgNzIzMyBzZWN0aW9uIDMuMSkgYWxsb3dzCitzZXJ2ZXJzIHRvIGlnbm9yZSByYW5nZSByZXF1ZXN0cyBzbyBldmVuIHdoZW4geW91IHNldCBcZklDVVJMT1BUX1JBTkdFKDMpXGZQCitmb3IgYSByZXF1ZXN0LCB5b3UgbWF5IGVuZCB1cCBnZXR0aW5nIHRoZSBmdWxsIHJlc3BvbnNlIHNlbnQgYmFjay4KKworRm9yIFJUU1AsIHRoZSBmb3JtYXR0aW5nIG9mIGEgcmFuZ2Ugc2hvdWxkIGZvbGxvdyBSRkMyMzI2IFNlY3Rpb24gMTIuMjkuIEZvcgorUlRTUCwgYnl0ZSByYW5nZXMgYXJlIFxmQm5vdFxmUCBwZXJtaXR0ZWQuIEluc3RlYWQsIHJhbmdlcyBzaG91bGQgYmUgZ2l2ZW4gaW4KK25wdCwgdXRjLCBvciBzbXB0ZSBmb3JtYXRzLgogCiBQYXNzIGEgTlVMTCB0byB0aGlzIG9wdGlvbiB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgcmFuZ2VzLgogLlNIIERFRkFVTFQKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBRERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBRERBVEEuMwppbmRleCBhNjdmNDE1Li5lZjUxMjY0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFQUREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUFEREFUQS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTYsOCArNTYsOCBAQAogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1UaGlzIG9wdGlvbiB3YXMgb25jZSBrbm93biBieSB0aGUgb2xkZXIgbmFtZSBcZklDVVJMT1BUX0lORklMRVxmUCwgdGhlIG5hbWUKLVxmSUNVUkxPUFRfUkVBRERBVEFcZlAgd2FzIGludHJvZHVjZWQgaW4gNy45LjcuCitUaGlzIG9wdGlvbiB3YXMgb25jZSBrbm93biBieSB0aGUgb2xkZXIgbmFtZSBDVVJMT1BUX0lORklMRSwgdGhlIG5hbWUKK1xmSUNVUkxPUFRfUkVBRERBVEEoMylcZlAgd2FzIGludHJvZHVjZWQgaW4gNy45LjcuCiAuU0ggUkVUVVJOIFZBTFVFCiBUaGlzIHdpbGwgcmV0dXJuIENVUkxFX09LLgogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBREZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFQURGVU5DVElPTi4zCmluZGV4IGVkZDliZGIuLmE0M2U2OGIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBREZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUFERlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02OCw3ICs2OCw3IEBACiBUaGlzIGlzIHVzZWQgZm9yIGFsbCBwcm90b2NvbHMgd2hlbiBkb2luZyB1cGxvYWRzLgogLlNIIEVYQU1QTEUKIEhlcmUncyBhbiBleGFtcGxlIHNldHRpbmcgYSByZWFkIGNhbGxiYWNrIGZvciByZWFkaW5nIHRoYXQgdG8gdXBsb2FkIHRvIGFuIEZUUAotc2l0ZTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwdXBsb2FkLmh0bWwKK3NpdGU6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9mdHB1cGxvYWQuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQ1VSTF9SRUFERlVOQ19QQVVTRSByZXR1cm4gY29kZSB3YXMgYWRkZWQgaW4gNy4xOC4wIGFuZCBDVVJMX1JFQURGVU5DX0FCT1JUCiB3YXMgYWRkZWQgaW4gNy4xMi4xLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVESVJfUFJPVE9DT0xTLjMKaW5kZXggZmJlYzlmNS4uOGJkNzZmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRElSX1BST1RPQ09MUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDggKzMyLDEyIEBACiBsaW1pdHMgd2hhdCBwcm90b2NvbHMgbGliY3VybCBtYXkgdXNlIGluIGEgdHJhbnNmZXIgdGhhdCBpdCBmb2xsb3dzIHRvIGluIGEKIHJlZGlyZWN0IHdoZW4gXGZJQ1VSTE9QVF9GT0xMT1dMT0NBVElPTigzKVxmUCBpcyBlbmFibGVkLiBUaGlzIGFsbG93cyB5b3UgdG8KIGxpbWl0IHNwZWNpZmljIHRyYW5zZmVycyB0byBvbmx5IGJlIGFsbG93ZWQgdG8gdXNlIGEgc3Vic2V0IG9mIHByb3RvY29scyBpbgotcmVkaXJlY3Rpb25zLiBCeSBkZWZhdWx0IGxpYmN1cmwgd2lsbCBhbGxvdyBhbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSBhbmQKLVNDUC4KK3JlZGlyZWN0aW9ucy4KKworQnkgZGVmYXVsdCBsaWJjdXJsIHdpbGwgYWxsb3cgYWxsIHByb3RvY29scyBvbiByZWRpcmVjdCBleGNlcHQgc2V2ZXJhbCBkaXNhYmxlZAorZm9yIHNlY3VyaXR5IHJlYXNvbnM6IFNpbmNlIDcuMTkuNCBGSUxFIGFuZCBTQ1AgYXJlIGRpc2FibGVkLCBhbmQgc2luY2UgNy40MC4wCitTTUIgYW5kIFNNQlMgYXJlIGFsc28gZGlzYWJsZWQuIFxmSUNVUkxQUk9UT19BTExcZlAgZW5hYmxlcyBhbGwgcHJvdG9jb2xzIG9uCityZWRpcmVjdCwgaW5jbHVkaW5nIHRob3NlIGRpc2FibGVkIGZvciBzZWN1cml0eS4KIAogVGhlc2UgYXJlIHRoZSBhdmFpbGFibGUgcHJvdG9jb2wgZGVmaW5lczoKIC5uZgpAQCAtNjAsMTMgKzY0LDE0IEBACiBDVVJMUFJPVE9fU0NQCiBDVVJMUFJPVE9fU0ZUUAogQ1VSTFBST1RPX1NNQgorQ1VSTFBST1RPX1NNQlMKIENVUkxQUk9UT19TTVRQCiBDVVJMUFJPVE9fU01UUFMKIENVUkxQUk9UT19URUxORVQKIENVUkxQUk9UT19URlRQCiAuZmkKIC5TSCBERUZBVUxUCi1BbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSwgU0NQIGFuZCBTTUIuCitBbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSwgU0NQIGFuZCBzaW5jZSA3LjQwLjAgU01CIGFuZCBTTUJTLgogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUZFUkVSLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMwppbmRleCBiY2IxNjI1Li43MWFhZTgzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU09MVkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCmluZGV4IDA2YTM5M2EuLjIxMDI3ZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsMTIgKzQ0LDE1IEBACiAKIFRoaXMgb3B0aW9uIGVmZmVjdGl2ZWx5IHByZS1wb3B1bGF0ZXMgdGhlIEROUyBjYWNoZSB3aXRoIGVudHJpZXMgZm9yIHRoZQogaG9zdCtwb3J0IHBhaXIgc28gcmVkaXJlY3RzIGFuZCBldmVyeXRoaW5nIHRoYXQgb3BlcmF0aW9ucyBhZ2FpbnN0IHRoZQotSE9TVCtQT1JUIHdpbGwgaW5zdGVhZCB1c2UgeW91ciBwcm92aWRlZCBBRERSRVNTLiBBZGRyZXNzZXMgdG8gc2V0IHdpdGgKLVxmSUNVUkxfUkVTT0xWRVxmUCB3aWxsIG5vdCB0aW1lLW91dCBmcm9tIHRoZSBETlMgY2FjaGUgbGlrZSBvcmRpbmFyeQorSE9TVCtQT1JUIHdpbGwgaW5zdGVhZCB1c2UgeW91ciBwcm92aWRlZCBBRERSRVNTLiBBZGRyZXNzZXMgc2V0IHdpdGgKK1xmSUNVUkxPUFRfUkVTT0xWRSgzKVxmUCB3aWxsIG5vdCB0aW1lLW91dCBmcm9tIHRoZSBETlMgY2FjaGUgbGlrZSBvcmRpbmFyeQogZW50cmllcy4KIAotWW91IGNhbiByZW1vdmUgbmFtZXMgZnJvbSB0aGUgRE5TIGNhY2hlIGFnYWluLCB0byBzdG9wIHByb3ZpZGluZyB0aGVzZSBmYWtlCi1yZXNvbHZlcywgYnkgaW5jbHVkaW5nIGEgc3RyaW5nIGluIHRoZSBsaW5rZWQgbGlzdCB0aGF0IHVzZXMgdGhlIGZvcm1hdAorVGhlIHByb3ZpZGVkIEFERFJFU1Mgc2V0IGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgdXNlZCBldmVuIGlmCitcZklDVVJMT1BUX0lQUkVTT0xWRSgzKVxmUCBpcyBzZXQgdG8gbWFrZSBsaWJjdXJsIHVzZSBhbm90aGVyIElQIHZlcnNpb24uCisKK1JlbW92ZSBuYW1lcyBmcm9tIHRoZSBETlMgY2FjaGUgYWdhaW4sIHRvIHN0b3AgcHJvdmlkaW5nIHRoZXNlIGZha2UgcmVzb2x2ZXMsCitieSBpbmNsdWRpbmcgYSBzdHJpbmcgaW4gdGhlIGxpbmtlZCBsaXN0IHRoYXQgdXNlcyB0aGUgZm9ybWF0CiBcJiItSE9TVDpQT1JUIi4gVGhlIGhvc3QgbmFtZSBtdXN0IGJlIHByZWZpeGVkIHdpdGggYSBkYXNoLCBhbmQgdGhlIGhvc3QgbmFtZQogYW5kIHBvcnQgbnVtYmVyIG11c3QgZXhhY3RseSBtYXRjaCB3aGF0IHdhcyBhbHJlYWR5IGFkZGVkIHByZXZpb3VzbHkuCiAuU0ggREVGQVVMVApAQCAtNjYsNyArNjksOCBAQAogaWYoY3VybCkgewogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVTT0xWRSwgaG9zdCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKLSAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisKKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAKICAgLyogYWx3YXlzIGNsZWFudXAgKi8KICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CkBAIC03NSw4ICs3OSw4IEBACiBjdXJsX3NsaXN0X2ZyZWVfYWxsKGhvc3QpOwogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1BZGRlZCBpbiA3LjIxLjMKK0FkZGVkIGluIDcuMjEuMy4gUmVtb3ZhbCBzdXBwb3J0IGFkZGVkIGluIDcuNDIuMC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfSVBSRVNPTFZFICIoMyksICIgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCAiKDMpLCAiCisuQlIgQ1VSTE9QVF9JUFJFU09MVkUgIigzKSwgIiBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VUICIoMyksICIgQ1VSTE9QVF9DT05ORUNUX1RPICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST00uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST00uMwppbmRleCBjMjVjNjQ2Li5hYzY5ODZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU1VNRV9GUk9NLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRVNVTUVfRlJPTS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuMwppbmRleCBiY2IzMGFmLi40OTA1ZjM5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU1VNRV9GUk9NX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKaW5kZXggYzk1MTAxNi4uOTI1MzZiOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9SRVFVRVNULjMKaW5kZXggOWFiMTc1ZC4uNjBkMWQ4YiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfUkVRVUVTVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKaW5kZXggOWU3Y2YzYS4uNzBjNTA1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TRVNTSU9OX0lELjMKaW5kZXggZWMzZDM4Ny4uY2QzMTg5OSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfU1RSRUFNX1VSSS4zCmluZGV4IDZhMTBlYTAuLjFhYmI2MWYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM0LDEwICszNCwxMCBAQAogYXBwcm9wcmlhdGUgc3RyZWFtIHVzaW5nIHRoaXMgb3B0aW9uLiBJZiB1bnNldCwgbGliY3VybCB3aWxsIGRlZmF1bHQgdG8KIG9wZXJhdGluZyBvbiBnZW5lcmljIHNlcnZlciBvcHRpb25zIGJ5IHBhc3NpbmcgJyonIGluIHRoZSBwbGFjZSBvZiB0aGUgUlRTUAogU3RyZWFtIFVSSS4gVGhpcyBvcHRpb24gaXMgZGlzdGluY3QgZnJvbSBcZklDVVJMT1BUX1VSTCgzKVxmUC4gV2hlbiB3b3JraW5nCi13aXRoIFJUU1AsIHRoZSBcZklDVVJMT1BUX1NUUkVBTV9VUkkoMylcZlAgaW5kaWNhdGVzIHdoYXQgVVJMIHRvIHNlbmQgdG8gdGhlCi1zZXJ2ZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVyIHdoaWxlIHRoZSBcZklDVVJMT1BUX1VSTCgzKVxmUCBpbmRpY2F0ZXMgd2hlcmUgdG8KLW1ha2UgdGhlIGNvbm5lY3Rpb24gdG8uICAoZS5nLiB0aGUgXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIHRoZSBhYm92ZSBleGFtcGxlcwotbWlnaHQgYmUgc2V0IHRvIFxmSXJ0c3A6Ly9mb28vdHdpc3RlclxmUAord2l0aCBSVFNQLCB0aGUgXGZJQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkoMylcZlAgaW5kaWNhdGVzIHdoYXQgVVJMIHRvIHNlbmQgdG8KK3RoZSBzZXJ2ZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVyIHdoaWxlIHRoZSBcZklDVVJMT1BUX1VSTCgzKVxmUCBpbmRpY2F0ZXMKK3doZXJlIHRvIG1ha2UgdGhlIGNvbm5lY3Rpb24gdG8uICAoZS5nLiB0aGUgXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIHRoZSBhYm92ZQorZXhhbXBsZXMgbWlnaHQgYmUgc2V0IHRvIFxmSXJ0c3A6Ly9mb28vdHdpc3RlclxmUAogLlNIIERFRkFVTFQKICcqJwogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zCmluZGV4IDRkMGE0YzAuLjM2NzIzNmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9UUkFOU1BPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfVFJBTlNQT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TQVNMX0lSLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMwppbmRleCA3NzE0MjE3Li44ZmU0ZWU2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtEQVRBLjMKaW5kZXggODMwZjA5OS4uZDQzMzllYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRUVLREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VFS0RBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRUVLRlVOQ1RJT04uMwppbmRleCBiZjdlMzA0Li4xNzlmMGQyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VFS0ZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRVJWSUNFX05BTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VSVklDRV9OQU1FLjMKaW5kZXggMTE2ZmRiZS4uYjlmNDkxYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRVJWSUNFX05BTUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFUlZJQ0VfTkFNRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsMjMgKzIyLDI0IEBACiAuXCIKIC5USCBDVVJMT1BUX1NFUlZJQ0VfTkFNRSAzICIxNyBKdW4gMjAxNSIgImxpYmN1cmwgNy40My4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgogLlNIIE5BTUUKLUNVUkxPUFRfU0VSVklDRV9OQU1FIFwtIFNQTkVHTyBzZXJ2aWNlIG5hbWUKK0NVUkxPUFRfU0VSVklDRV9OQU1FIFwtIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZQogLlNIIFNZTk9QU0lTCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NFUlZJQ0VfTkFNRSwgY2hhciAqbmFtZSk7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgYSBjaGFyICogYXMgcGFyYW1ldGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlIFxmSW5hbWVcZlAgb2YgdGhlCi1zZXJ2aWNlLiBUaGUgZGVmYXVsdCBzZXJ2aWNlIG5hbWUgaXMgIkhUVFAiLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvCi1jaGFuZ2UgaXQuCi0uLlNIIERFRkFVTFQKK1Bhc3MgYSBjaGFyICogYXMgcGFyYW1ldGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlIFxmSW5hbWVcZlAgb2YgdGhlIHNlcnZpY2UKK2ZvciBESUdFU1QtTUQ1LCBTUE5FR08gYW5kIEtlcmJlcm9zIDUgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcy4gVGhlIGRlZmF1bHQKK3NlcnZpY2UgbmFtZXMgYXJlICJmdHAiLCAiSFRUUCIsICJpbWFwIiwgInBvcCIgYW5kICJzbXRwIi4gVGhpcyBvcHRpb24gYWxsb3dzCit5b3UgdG8gY2hhbmdlIHRoZW0uCisuU0ggREVGQVVMVAogU2VlIGFib3ZlCiAuU0ggUFJPVE9DT0xTCi1Nb3N0CitIVFRQLCBGVFAsIElNQVAsIFBPUCBhbmQgU01UUAogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuNDMuMAorQWRkZWQgaW4gNy40My4wIGZvciBIVFRQLCA3LjQ5LjAgZm9yIEZUUCwgSU1BUCwgUE9QMyBhbmQgU01UUC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdCwgb3IKIENVUkxFX09VVF9PRl9NRU1PUlkgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBoZWFwIHNwYWNlLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TSEFSRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TSEFSRS4zCmluZGV4IGE0ODM1NDAuLjZhMGM3YjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0hBUkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NIQVJFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BUREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BUREFUQS4zCmluZGV4IDYxYzJiNWUuLjAwZGQzMTYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS09QVERBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tPUFREQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS09QVEZVTkNUSU9OLjMKaW5kZXggZTk5ZmI3OS4uNjI2MmRjNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tPUFRGVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuMwppbmRleCBjYjMxOGZjLi5hZDA4NjNiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS4zCmluZGV4IGQxOGVhOWYuLjQ0MGYwODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDIzICsyMiwyNSBAQAogLlwiCiAuVEggQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgMyAiMTkgSnVuIDIwMTQiICJsaWJjdXJsIDcuMzcuMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKIC5TSCBOQU1FCi1DVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRSBcLSBwcm94eSBzb2NrcyBnc3NhcGkgc2VydmljZSBuYW1lCitDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRSBcLSBTT0NLUzUgcHJveHkgYXV0aGVudGljYXRpb24gc2VydmljZSBuYW1lCiAuU0ggU1lOT1BTSVMKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBjaGFyICpuYW1lKTsKIC5TSCBERVNDUklQVElPTgotUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIgdG8gYSBzdHJpbmcgaG9sZGluZyB0aGUgXGZJbmFtZVxmUCBvZiB0aGUKLXNlcnZpY2UuIFRoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBmb3IgYSBTT0NLUzUgc2VydmVyIGlzCi1yY21kL3NlcnZlci1mcWRuLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNoYW5nZSBpdC4KK0RlcHJlY2F0ZWQgc2luY2UgNy40OS4wLiBVc2UgXGZJQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUoMylcZlAgaW5zdGVhZC4KKworUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIgdG8gYSBzdHJpbmcgaG9sZGluZyB0aGUgXGZJbmFtZVxmUCBvZiB0aGUgc2VydmljZS4KK1RoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBmb3IgYSBTT0NLUzUgc2VydmVyIGlzICJyY21kIi4gVGhpcyBvcHRpb24gYWxsb3dzIHlvdQordG8gY2hhbmdlIGl0LgogLlNIIERFRkFVTFQKIFNlZSBhYm92ZQogLlNIIFBST1RPQ09MUwotTW9zdAorQWxsIG5ldHdvcmsgcHJvdG9jb2xzCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQotQWRkZWQgaW4gNy4xOS40CitBZGRlZCBpbiA3LjE5LjQsIGRlcHJlY2F0ZWQgaW4gNy40OS4wCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0FVVEhfVFlQRVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0FVVEhfVFlQRVMuMwppbmRleCA5NjZmNzQ2Li4yZWNjYTEyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9BVVRIX1RZUEVTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuMwppbmRleCAxMmU3NzIwLi4yZWEyMzYwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWURBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWURBVEEuMwppbmRleCA0NWU3ZDdhLi42N2MzNjczIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LRVlEQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS0VZREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LRVlGVU5DVElPTi4zCmluZGV4IDRhZjlhM2IuLjIxYmMwZTUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLjMKaW5kZXggODU1NzRjZS4uOWVhMGM4NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCmluZGV4IGYzNTdmMmMuLjBjMzVlZDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9QVUJMSUNfS0VZRklMRS4zCmluZGV4IDM1ZjJhMTkuLmY5YWFlYWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSwxMSArMzUsMTEgQEAKIHZhcmlhYmxlIGlzIHNldCwgYW5kIGp1c3QgImlkX2RzYS5wdWIiIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpZiBIT01FIGlzIG5vdAogc2V0LgogCi1JZiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkLCBsaWJjdXJsIHdpbGwgcGFzcyBubyBwdWJsaWMga2V5IHRvIGxpYnNzaDIgd2hpY2gKLXRoZW4gdHJpZXMgdG8gY29tcHV0ZSBpdCBmcm9tIHRoZSBwcml2YXRlIGtleSwgdGhpcyBpcyBrbm93biB0byB3b3JrIHdoZW4KLWxpYnNzaDIgMS40LjArIGlzIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuCitJZiBOVUxMIChvciBhbiBlbXB0eSBzdHJpbmcpIGlzIHBhc3NlZCwgbGliY3VybCB3aWxsIHBhc3Mgbm8gcHVibGljIGtleSB0bworbGlic3NoMiwgd2hpY2ggdGhlbiB0cmllcyB0byBjb21wdXRlIGl0IGZyb20gdGhlIHByaXZhdGUga2V5LiAgVGhpcyBpcyBrbm93bgordG8gd29yayB3aXRoIGxpYnNzaDIgMS40LjArIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuCiAuU0ggREVGQVVMVAotQXMgZXhwbGFpbmVkIGFib3ZlCitOVUxMCiAuU0ggUFJPVE9DT0xTCiBTRlRQIGFuZCBTQ1AKIC5TSCBFWEFNUExFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTENFUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCmluZGV4IDdhZTU0ZjEuLmI1ZDY4Y2YgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNyArNDMsNyBAQAogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xDRVJUVFlQRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xDRVJUVFlQRS4zCmluZGV4IGIxOWQ1MTcuLjk4ZGYzOWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVFRZUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTENFUlRUWVBFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiw3IEBACiAuU0ggREVGQVVMVAogIlBFTSIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FLjMKaW5kZXggYTg4YTVhNy4uZDBjNDhhNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEVOR0lORS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzAsMTkgKzMwLDI2IEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuIEl0IHdpbGwgYmUgdXNlZCBhcwogdGhlIGlkZW50aWZpZXIgZm9yIHRoZSBjcnlwdG8gZW5naW5lIHlvdSB3YW50IHRvIHVzZSBmb3IgeW91ciBwcml2YXRlIGtleS4KLQotSWYgdGhlIGNyeXB0byBkZXZpY2UgY2Fubm90IGJlIGxvYWRlZCwgXGZJQ1VSTEVfU1NMX0VOR0lORV9OT1RGT1VORFxmUCBpcwotcmV0dXJuZWQuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCi1JZiBidWlsdCBUTFMgZW5hYmxlZC4KK09ubHkgaWYgdGhlIFNTTCBiYWNrZW5kIGlzIE9wZW5TU0wgYnVpbHQgd2l0aCBlbmdpbmUgc3VwcG9ydC4KIC5TSCBSRVRVUk4gVkFMVUUKLVJldHVybnMgQ1VSTEVfT0sgaWYgVExTIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgotQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCitDVVJMRV9PSyAtIEVuZ2luZSBmb3VuZC4KKworQ1VSTEVfU1NMX0VOR0lORV9OT1RGT1VORCAtIEVuZ2luZSBub3QgZm91bmQsIG9yIE9wZW5TU0wgd2FzIG5vdCBidWlsdCB3aXRoCitlbmdpbmUgc3VwcG9ydC4KKworQ1VSTEVfU1NMX0VOR0lORV9JTklURkFJTEVEIC0gRW5naW5lIGZvdW5kIGJ1dCBpbml0aWFsaXphdGlvbiBmYWlsZWQuCisKK0NVUkxFX05PVF9CVUlMVF9JTiAtIE9wdGlvbiBub3QgYnVpbHQgaW4sIE9wZW5TU0wgaXMgbm90IHRoZSBTU0wgYmFja2VuZC4KKworQ1VSTEVfVU5LTk9XTl9PUFRJT04gLSBPcHRpb24gbm90IHJlY29nbml6ZWQuCisKK0NVUkxFX09VVF9PRl9NRU1PUlkgLSBJbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCAiKDMpLCAiIENVUkxPUFRfU1NMS0VZICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuMwppbmRleCA2NTcwZGYxLi4wY2Q4ZDIyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMjEgKzI4LDI3IEBACiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULCBsb25nIHZhbCk7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgYSBsb25nIHNldCB0byAxIGFzIHBhcmFtZXRlci4gU2V0cyB0aGUgYWN0dWFsIGNyeXB0byBlbmdpbmUgYXMgdGhlCi1kZWZhdWx0IGZvciAoYXN5bW1ldHJpYykgY3J5cHRvIG9wZXJhdGlvbnMuCitQYXNzIGEgbG9uZyBzZXQgdG8gMSB0byBtYWtlIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBjcnlwdG8gZW5naW5lIHRoZSBkZWZhdWx0Citmb3IgKGFzeW1tZXRyaWMpIGNyeXB0byBvcGVyYXRpb25zLgogCi1JZiB0aGUgY3J5cHRvIGRldmljZSBjYW5ub3QgYmUgc2V0LCBcZklDVVJMRV9TU0xfRU5HSU5FX1NFVEZBSUxFRFxmUCBpcwotcmV0dXJuZWQuCitUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IHVubGVzcyBzZXQgYWZ0ZXIgXGZJQ1VSTE9QVF9TU0xFTkdJTkUoMylcZlAuCiAuU0ggREVGQVVMVAogTm9uZQogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCi1JZiBidWlsdCBUTFMgZW5hYmxlZC4KK09ubHkgaWYgdGhlIFNTTCBiYWNrZW5kIGlzIE9wZW5TU0wgYnVpbHQgd2l0aCBlbmdpbmUgc3VwcG9ydC4KIC5TSCBSRVRVUk4gVkFMVUUKLVJldHVybnMgQ1VSTEVfT0sgaWYgVExTIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgotQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCitDVVJMRV9PSyAtIEVuZ2luZSBzZXQgYXMgZGVmYXVsdC4KKworQ1VSTEVfU1NMX0VOR0lORV9TRVRGQUlMRUQgLSBFbmdpbmUgY291bGQgbm90IGJlIHNldCBhcyBkZWZhdWx0LgorCitDVVJMRV9OT1RfQlVJTFRfSU4gLSBPcHRpb24gbm90IGJ1aWx0IGluLCBPcGVuU1NMIGlzIG5vdCB0aGUgU1NMIGJhY2tlbmQuCisKK0NVUkxFX1VOS05PV05fT1BUSU9OIC0gT3B0aW9uIG5vdCByZWNvZ25pemVkLgorCitDVVJMRV9PVVRfT0ZfTUVNT1JZIC0gSW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgogLkJSIENVUkxPUFRfU1NMRU5HSU5FICIoMyksICIgQ1VSTE9QVF9TU0xDRVJUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEtFWS4zCmluZGV4IGFkZDY5ZDguLjhiYzgyMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM4LDcgKzM4LDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZVFlQRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKaW5kZXggZDQ5MTYzNC4uNzYxNmEzZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOCw3ICszOCw3IEBACiAuU0ggREVGQVVMVAogIlBFTSIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xWRVJTSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMwppbmRleCBhMTBkYWJkLi4yZjQwZTQ2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUyLDcgKzUyLDcgQEAKIC5TSCBERUZBVUxUCiBDVVJMX1NTTFZFUlNJT05fREVGQVVMVAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NJUEhFUl9MSVNULjMKaW5kZXggN2UwNWE1OS4uNzE4MzNiNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DSVBIRVJfTElTVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsNyArNDAsNyBAQAogCiBZb3UnbGwgZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgY2lwaGVyIGxpc3RzIG9uIHRoaXMgVVJMOgogCi0gaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2FwcHMvY2lwaGVycy5odG1sCisgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9hcHBzL2NpcGhlcnMuaHRtbAogCiBGb3IgTlNTLCB2YWxpZCBleGFtcGxlcyBvZiBjaXBoZXIgbGlzdHMgaW5jbHVkZSAncnNhX3JjNF8xMjhfbWQ1JywKIFwncnNhX2Flc18xMjhfc2hhXCcsIGV0Yy4gV2l0aCBOU1MgeW91IGRvbid0IGFkZC9yZW1vdmUgY2lwaGVycy4gSWYgb25lIHVzZXMKQEAgLTUzLDcgKzUzLDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMLCB1c2UgaW50ZXJuYWwgZGVmYXVsdAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMwppbmRleCA5NzdjYzEyLi5iZTJjZjM0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9EQVRBLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCmluZGV4IGUzZTAxNzAuLjE3Nzk0N2IgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTAsMTggKzUwLDg4IEBACiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGNhbGxlZCBvbiBhbGwgbmV3IGNvbm5lY3Rpb25zIG1hZGUgdG8gYSBzZXJ2ZXIsIGR1cmluZwogdGhlIFNTTCBuZWdvdGlhdGlvbi4gVGhlIFNTTF9DVFggcG9pbnRlciB3aWxsIGJlIGEgbmV3IG9uZSBldmVyeSB0aW1lLgogCi1UbyB1c2UgdGhpcyBwcm9wZXJseSwgYSBub24tdHJpdmlhbCBhbW91bnQgb2Yga25vd2xlZGdlIG9mIHlvdXIgU1NMIGxpYnJhcnkKLWlzIG5lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBsaWJyYXJ5LXNwZWNpZmljCitUbyB1c2UgdGhpcyBwcm9wZXJseSwgYSBub24tdHJpdmlhbCBhbW91bnQgb2Yga25vd2xlZGdlIG9mIHlvdXIgU1NMIGxpYnJhcnkgaXMKK25lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBsaWJyYXJ5LXNwZWNpZmljCiBjYWxsYmFja3MgdG8gYWRkIGFkZGl0aW9uYWwgdmFsaWRhdGlvbiBjb2RlIGZvciBjZXJ0aWZpY2F0ZXMsIGFuZCBldmVuIHRvCi1jaGFuZ2UgdGhlIGFjdHVhbCBVUkkgb2YgYSBIVFRQUyByZXF1ZXN0IChleGFtcGxlIHVzZWQgaW4gdGhlIGxpYjUwOSB0ZXN0Ci1jYXNlKS4gIFNlZSBhbHNvIHRoZSBleGFtcGxlIHNlY3Rpb24gZm9yIGEgcmVwbGFjZW1lbnQgb2YgdGhlIGtleSwgY2VydGlmaWNhdGUKLWFuZCB0cnVzdCBmaWxlIHNldHRpbmdzLgorY2hhbmdlIHRoZSBhY3R1YWwgVVJJIG9mIGEgSFRUUFMgcmVxdWVzdC4KIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorLyogT3BlblNTTCBzcGVjaWZpYyAqLworCisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4X2Z1bmN0aW9uKENVUkwgKmN1cmwsIHZvaWQgKnNzbGN0eCwgdm9pZCAqcGFybSkKK3sKKyAgWDUwOV9TVE9SRSAqc3RvcmU7CisgIFg1MDkgKmNlcnQ9TlVMTDsKKyAgQklPICpiaW87CisgIGNoYXIgKm15cGVtID0gLyogZXhhbXBsZSBDQSBjZXJ0IFBFTSAtIHNob3J0ZW5lZCAqLworICAgICItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS1cbiIKKyAgICAiTUlJSFBUQ0NCU1dnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFRRkFEQjVNUkF3RGdZRFZRUUtFd2RTYjI5MFxuIgorICAgICJJRU5CTVI0d0hBWURWUVFMRXhWb2RIUndPaTh2ZDNkM0xtTmhZMlZ5ZEM1dmNtY3hJakFnQmdOVkJBTVRHVU5CXG4iCisgICAgIklFTmxjblFnVTJsbmJtbHVaeUJCZFhSb2IzSnBkSGt4SVRBZkJna3Foa2lHOXcwQkNRRVdFbk4xY0hCdmNuUkFcbiIKKyAgICAiWTJGalpYSjBMbTl5WnpBZUZ3MHdNekF6TXpBeE1qSTVORGxhRncwek16QXpNamt4TWpJNU5EbGFNSGt4RURBT1xuIgorICAgICJHQ1NOZTlGSU5Ta1lRS3lUWU9HV2hsQzBlbG5ZanlFTG44K0NrY1k3djJ2Y0I1RzVsMVlqcXJac2xNWklCanprXG4iCisgICAgInprNnE1UFl2Q2R4VGJ5NzhkT3M2WTVuQ3BxeUp2S2V5UktBTmloRGpiUElreS9xYm4zQkhMdDRVaTlTeUlBbVdcbiIKKyAgICAib21UeEpCemNvVFdjRmJMVXZGVXVmUWIxbkE1VjlGcldrOXAyclNWelRNVkRcbiJcCisgICAgIi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS1cbiI7CisgIC8qIGdldCBhIEJJTyAqLworICBiaW89QklPX25ld19tZW1fYnVmKG15cGVtLCAtMSk7CisgIC8qIHVzZSBpdCB0byByZWFkIHRoZSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGZyb20gbWVtb3J5IGludG8gYW4gWDUwOQorICAgKiBzdHJ1Y3R1cmUgdGhhdCBTU0wgY2FuIHVzZQorICAgKi8KKyAgUEVNX3JlYWRfYmlvX1g1MDkoYmlvLCAmY2VydCwgMCwgTlVMTCk7CisgIGlmKGNlcnQgPT0gTlVMTCkKKyAgICBwcmludGYoIlBFTV9yZWFkX2Jpb19YNTA5IGZhaWxlZC4uLlxuIik7CisKKyAgLyogZ2V0IGEgcG9pbnRlciB0byB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBzdG9yZSAod2hpY2ggbWF5IGJlIGVtcHR5ISkgKi8KKyAgc3RvcmU9U1NMX0NUWF9nZXRfY2VydF9zdG9yZSgoU1NMX0NUWCAqKXNzbGN0eCk7CisKKyAgLyogYWRkIG91ciBjZXJ0aWZpY2F0ZSB0byB0aGlzIHN0b3JlICovCisgIGlmKFg1MDlfU1RPUkVfYWRkX2NlcnQoc3RvcmUsIGNlcnQpPT0wKQorICAgIHByaW50ZigiZXJyb3IgYWRkaW5nIGNlcnRpZmljYXRlXG4iKTsKKworICAvKiBkZWNyZWFzZSByZWZlcmVuY2UgY291bnRzICovCisgIFg1MDlfZnJlZShjZXJ0KTsKKyAgQklPX2ZyZWUoYmlvKTsKKworICAvKiBhbGwgc2V0IHRvIGdvICovCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworaW50IG1haW4odm9pZCkKK3sKKyAgQ1VSTCAqIGNoOworICBDVVJMY29kZSBydjsKKworICBydj1jdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCk7CisgIGNoPWN1cmxfZWFzeV9pbml0KCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOworCisgIC8qIFJldHJpZXZlIHBhZ2UgdXNpbmcgY2FjZXJ0cycgY2VydGlmaWNhdGUgLT4gd2lsbCBzdWNjZWVkCisgICAqIGxvYWQgdGhlIGNlcnRpZmljYXRlIGJ5IGluc3RhbGxpbmcgYSBmdW5jdGlvbiBkb2luZyB0aGUgbmVzY2Vzc2FyeQorICAgKiAibW9kaWZpY2F0aW9ucyIgdG8gdGhlIFNTTCBDT05URVhUIGp1c3QgYmVmb3JlIGxpbmsgaW5pdAorICAgKi8KKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKKyAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOworICBpZihydj09Q1VSTEVfT0spCisgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CisgIGVsc2UKKyAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKKworICBjdXJsX2Vhc3lfY2xlYW51cChjaCk7CisgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKKyAgcmV0dXJuIHJ2OworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBBZGRlZCBpbiA3LjExLjAgZm9yIE9wZW5TU0wuIEFkZGVkIGluIDcuNDIuMCBmb3Igd29sZlNTTC9DeWFTU0wuIE90aGVyIFNTTAogYmFja2VuZHMgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi4zCmluZGV4IDY3MTZmNzIuLjYxODYzYzggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfTlBOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfTlBOLjMKaW5kZXggNWRiOWI1MS4uNjdmMGViZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9OUE4uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9GQUxTRVNUQVJULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9GQUxTRVNUQVJULjMKaW5kZXggMzFhMDVlNi4uMzA3M2RhZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0ZBTFNFU1RBUlQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNyw3ICszNyw3IEBACiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9PUFRJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9PUFRJT05TLjMKaW5kZXggMDliY2I5Ni4uNDk0MzIzMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfT1BUSU9OUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX09QVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCwxMyArMzAsMjUgQEAKIC5TSCBERVNDUklQVElPTgogUGFzcyBhIGxvbmcgd2l0aCBhIGJpdG1hc2sgdG8gdGVsbCBsaWJjdXJsIGFib3V0IHNwZWNpZmljIFNTTCBiZWhhdmlvcnMuCiAKLVxmSUNVUkxTU0xPUFRfQUxMT1dfQkVBU1RcZlAgaXMgdGhlIG9ubHkgc3VwcG9ydGVkIGJpdCBhbmQgYnkgc2V0dGluZyB0aGlzIHRoZQotdXNlciB3aWxsIHRlbGwgbGliY3VybCB0byBub3QgYXR0ZW1wdCB0byB1c2UgYW55IHdvcmthcm91bmRzIGZvciBhIHNlY3VyaXR5Ci1mbGF3IGluIHRoZSBTU0wzIGFuZCBUTFMxLjAgcHJvdG9jb2xzLiAgSWYgdGhpcyBvcHRpb24gaXNuJ3QgdXNlZCBvciB0aGlzIGJpdAotaXMgc2V0IHRvIDAsIHRoZSBTU0wgbGF5ZXIgbGliY3VybCB1c2VzIG1heSB1c2UgYSB3b3JrLWFyb3VuZCBmb3IgdGhpcyBmbGF3Ci1hbHRob3VnaCBpdCBtaWdodCBjYXVzZSBpbnRlcm9wZXJhYmlsaXR5IHByb2JsZW1zIHdpdGggc29tZSAob2xkZXIpIFNTTAotaW1wbGVtZW50YXRpb25zLiBXQVJOSU5HOiBhdm9pZGluZyB0aGlzIHdvcmstYXJvdW5kIGxlc3NlbnMgdGhlIHNlY3VyaXR5LCBhbmQKLWJ5IHNldHRpbmcgdGhpcyBvcHRpb24gdG8gMSB5b3UgYXNrIGZvciBleGFjdGx5IHRoYXQuCitcZklDVVJMU1NMT1BUX0FMTE9XX0JFQVNUXGZQIHRlbGxzIGxpYmN1cmwgdG8gbm90IGF0dGVtcHQgdG8gdXNlIGFueQord29ya2Fyb3VuZHMgZm9yIGEgc2VjdXJpdHkgZmxhdyBpbiB0aGUgU1NMMyBhbmQgVExTMS4wIHByb3RvY29scy4gIElmIHRoaXMKK29wdGlvbiBpc24ndCB1c2VkIG9yIHRoaXMgYml0IGlzIHNldCB0byAwLCB0aGUgU1NMIGxheWVyIGxpYmN1cmwgdXNlcyBtYXkgdXNlIGEKK3dvcmstYXJvdW5kIGZvciB0aGlzIGZsYXcgYWx0aG91Z2ggaXQgbWlnaHQgY2F1c2UgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcword2l0aCBzb21lIChvbGRlcikgU1NMIGltcGxlbWVudGF0aW9ucy4gV0FSTklORzogYXZvaWRpbmcgdGhpcyB3b3JrLWFyb3VuZAorbGVzc2VucyB0aGUgc2VjdXJpdHksIGFuZCBieSBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIDEgeW91IGFzayBmb3IgZXhhY3RseSB0aGF0LgorVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgZm9yIERhcndpblNTTCwgTlNTIGFuZCBPcGVuU1NMLgorCitBZGRlZCBpbiA3LjQ0LjA6CisKK1xmSUNVUkxTU0xPUFRfTk9fUkVWT0tFXGZQIHRlbGxzIGxpYmN1cmwgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uCitjaGVja3MgZm9yIHRob3NlIFNTTCBiYWNrZW5kcyB3aGVyZSBzdWNoIGJlaGF2aW9yIGlzIHByZXNlbnQuIFxmQkN1cnJlbnRseSB0aGlzCitvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdpblNTTCAodGhlIG5hdGl2ZSBXaW5kb3dzIFNTTCBsaWJyYXJ5KSwgd2l0aCBhbgorZXhjZXB0aW9uIGluIHRoZSBjYXNlIG9mIFdpbmRvd3MnIFVudHJ1c3RlZCBQdWJsaXNoZXJzIGJsYWNrbGlzdCB3aGljaCBpdCBzZWVtcworY2FuJ3QgYmUgYnlwYXNzZWQuXGZQIFRoaXMgb3B0aW9uIG1heSBoYXZlIGJyb2FkZXIgc3VwcG9ydCB0byBhY2NvbW1vZGF0ZSBvdGhlcgorU1NMIGJhY2tlbmRzIGluIHRoZSBmdXR1cmUuCitodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCisKKwogLlNIIERFRkFVTFQKIDAKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKaW5kZXggNGJhYTA2MS4uYzkzOTQ2NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zCmluZGV4IGZiZjIwNDIuLjE1OTE0NzMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWUhPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllIT1NULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNyBAQAogLlNIIERFRkFVTFQKIDIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogLm5mCiBDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMwppbmRleCA4MWJiNTkzLi41YTYzNDgxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYwLDcgKzYwLDcgQEAKIC5TSCBERUZBVUxUCiBCeSBkZWZhdWx0LCBjdXJsIGFzc3VtZXMgYSB2YWx1ZSBvZiAxLgogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwppbmRleCBkN2YwMTFhLi4zMDIxMjI1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOCw3ICszOCw3IEBACiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUREVSUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVERFUlIuMwppbmRleCA4ZWYxYTMyLi43ZGZlMzcxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUREVSUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1RERVJSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMWQyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9ERVBFTkRTLjMKQEAgLTAsMCArMSw1NiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9TVFJFQU1fREVQRU5EUyAzICIxMyBTZXAgMjAxNSIgImxpYmN1cmwgNy40Ni4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxPUFRfU1RSRUFNX0RFUEVORFMgXC0gc2V0IHN0cmVhbSB0aGlzIHRyYW5zZmVyIGRlcGVuZHMgb24KKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUywgQ1VSTCAqZGVwaGFuZGxlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIENVUkwgKiBwb2ludGVyIGluIFxmSWRlcGhhbmRsZVxmUCB0byBpZGVudGlmeSB0aGUgc3RyZWFtIHdpdGhpbiB0aGUKK3NhbWUgY29ubmVjdGlvbiB0aGF0IHRoaXMgc3RyZWFtIGlzIGRlcGVuZGluZyB1cG9uLiBUaGlzIG9wdGlvbiBjbGVhcnMgdGhlCitleGNsdXNpdmUgaXQgYW5kIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byB0aGUKK1xmSUNVUkxPUFRfU1RSRUFNX0RFUEVORFNfRSgzKVxmUCBvcHRpb24uCisKK1RoZSBzcGVjIHNheXMgIkluY2x1ZGluZyBhIGRlcGVuZGVuY3kgZXhwcmVzc2VzIGEgcHJlZmVyZW5jZSB0byBhbGxvY2F0ZQorcmVzb3VyY2VzIHRvIHRoZSBpZGVudGlmaWVkIHN0cmVhbSByYXRoZXIgdGhhbiB0byB0aGUgZGVwZW5kZW50IHN0cmVhbS4iCisKK1RoaXMgb3B0aW9uIGNhbiBiZSBzZXQgZHVyaW5nIHRyYW5zZmVyLgorCitcZklkZXBoYW5kbGVcZlAgbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgXGZJaGFuZGxlXGZQLCB0aGF0IHdpbGwgY2F1c2UgdGhpcworZnVuY3Rpb24gdG8gcmV0dXJuIGFuIGVycm9yLiBJdCBtdXN0IGJlIGFub3RoZXIgZWFzeSBoYW5kbGUsIGFuZCBpdCBhbHNvIG5lZWRzCit0byBiZSBhIGhhbmRsZSBvZiBhIHRyYW5zZmVyIHRoYXQgd2lsbCBiZSBzZW50IG92ZXIgdGhlIHNhbWUgSFRUUC8yIGNvbm5lY3Rpb24KK2ZvciB0aGlzIG9wdGlvbiB0byBoYXZlIGFuIGFjdHVhbCBlZmZlY3QuCisuU0ggREVGQVVMVAorTlVMTAorLlNIIFBST1RPQ09MUworSFRUUC8yCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40Ni4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBDVVJMT1BUX1NUUkVBTV9XRUlHSFQgIigzKSwgIiBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ5ZmQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMKQEAgLTAsMCArMSw1OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FIDMgIjEzIFNlcCAyMDE1IiAibGliY3VybCA3LjQ2LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FIFwtIHNldCBzdHJlYW0gdGhpcyB0cmFuc2ZlciBkZXBlbmRzIG9uIGV4ZWNsdXNpdmVseQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UsIENVUkwgKmRlcGhhbmRsZSk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBDVVJMICogcG9pbnRlciBpbiBcZklkZXBoYW5kbGVcZlAgdG8gaWRlbnRpZnkgdGhlIHN0cmVhbSB3aXRoaW4gdGhlCitzYW1lIGNvbm5lY3Rpb24gdGhhdCB0aGlzIHN0cmVhbSBpcyBkZXBlbmRpbmcgdXBvbiBleGNsdXNpdmVseS4gVGhhdCBtZWFucyBpdAorZGVwZW5kcyBvbiBpdCBhbmQgc2V0cyB0aGUgRXhjbHVzaXZlIGJpdC4KKworVGhlIHNwZWMgc2F5cyAiSW5jbHVkaW5nIGEgZGVwZW5kZW5jeSBleHByZXNzZXMgYSBwcmVmZXJlbmNlIHRvIGFsbG9jYXRlCityZXNvdXJjZXMgdG8gdGhlIGlkZW50aWZpZWQgc3RyZWFtIHJhdGhlciB0aGFuIHRvIHRoZSBkZXBlbmRlbnQgc3RyZWFtLiIKKworU2V0dGluZyBhIGRlcGVuZGVuY3kgd2l0aCB0aGUgZXhjbHVzaXZlIGZsYWcgZm9yIGEgcmVwcmlvcml0aXplZCBzdHJlYW0gY2F1c2VzCithbGwgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbmV3IHBhcmVudCBzdHJlYW0gdG8gYmVjb21lIGRlcGVuZGVudCBvbiB0aGUKK3JlcHJpb3JpdGl6ZWQgc3RyZWFtLgorCitUaGlzIG9wdGlvbiBjYW4gYmUgc2V0IGR1cmluZyB0cmFuc2Zlci4KKworXGZJZGVwaGFuZGxlXGZQIG11c3Qgbm90IGJlIHRoZSBzYW1lIGFzIFxmSWhhbmRsZVxmUCwgdGhhdCB3aWxsIGNhdXNlIHRoaXMKK2Z1bmN0aW9uIHRvIHJldHVybiBhbiBlcnJvci4gSXQgbXVzdCBiZSBhbm90aGVyIGVhc3kgaGFuZGxlLCBhbmQgaXQgYWxzbyBuZWVkcwordG8gYmUgYSBoYW5kbGUgb2YgYSB0cmFuc2ZlciB0aGF0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSBzYW1lIEhUVFAvMiBjb25uZWN0aW9uCitmb3IgdGhpcyBvcHRpb24gdG8gaGF2ZSBhbiBhY3R1YWwgZWZmZWN0LgorLlNIIERFRkFVTFQKK05VTEwKKy5TSCBQUk9UT0NPTFMKK0hUVFAvMgorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDYuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE9QVF9TVFJFQU1fV0VJR0hUICIoMyksICIgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUyAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9XRUlHSFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1RSRUFNX1dFSUdIVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYjI0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9XRUlHSFQuMwpAQCAtMCwwICsxLDYzIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMT1BUX1NUUkVBTV9XRUlHSFQgMyAiMTMgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDYuMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMT1BUX1NUUkVBTV9XRUlHSFQgXC0gc2V0IG51bWVyaWNhbCBzdHJlYW0gd2VpZ2h0CisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfU1RSRUFNX1dFSUdIVCwgbG9uZyB3ZWlnaHQpOworLlNIIERFU0NSSVBUSU9OCitTZXQgdGhlIGxvbmcgXGZJd2VpZ2h0XGZQIHRvIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMjU2LgorCitXaGVuIHVzaW5nIEhUVFAvMiwgdGhpcyBvcHRpb24gc2V0cyB0aGUgaW5kaXZpZHVhbCB3ZWlnaHQgZm9yIHRoaXMgcGFydGljdWxhcgorc3RyZWFtIHVzZWQgYnkgdGhlIGVhc3kgXGZJaGFuZGxlXGZQLiBTZXR0aW5nIGFuZCB1c2luZyB3ZWlnaHRzIG9ubHkgbWFrZXMKK3NlbnNlIGFuZCBpcyBvbmx5IHVzYWJsZSB3aGVuIGRvaW5nIG11bHRpcGxlIHN0cmVhbXMgb3ZlciB0aGUgc2FtZQorY29ubmVjdGlvbnMsIHdoaWNoIHRodXMgaW1wbGllcyB0aGF0IHlvdSB1c2UgXGZJQ1VSTE1PUFRfUElQRUxJTklORygzKVxmUC4KKworVGhpcyBvcHRpb24gY2FuIGJlIHNldCBkdXJpbmcgdHJhbnNmZXIgYW5kIHdpbGwgdGhlbiBjYXVzZSB0aGUgdXBkYXRlZCB3ZWlnaHQKK2luZm8gZ2V0IHNlbnQgdG8gdGhlIHNlcnZlciB0aGUgbmV4dCB0aW1lIGEgSFRUUC8yIGZyYW1lIGlzIHNlbnQgdG8gdGhlCitzZXJ2ZXIuCisKK1NlZSBzZWN0aW9uIDUuMyBvZiBSRkMgNzU0MCBmb3IgcHJvdG9jb2wgZGV0YWlsczoKK2h0dHBzOi8vaHR0cHdnLmdpdGh1Yi5pby9zcGVjcy9yZmM3NTQwLmh0bWwjU3RyZWFtUHJpb3JpdHkKKworU3RyZWFtcyB3aXRoIHRoZSBzYW1lIHBhcmVudCBzaG91bGQgYmUgYWxsb2NhdGVkIHJlc291cmNlcyBwcm9wb3J0aW9uYWxseQorYmFzZWQgb24gdGhlaXIgd2VpZ2h0LiBTbyBpZiB5b3UgaGF2ZSB0d28gc3RyZWFtcyBnb2luZywgc3RyZWFtIEEgd2l0aCB3ZWlnaHQKKzE2IGFuZCBzdHJlYW0gQiB3aXRoIHdlaWdodCAzMiwgc3RyZWFtIEIgd2lsbCBnZXQgdHdvIHRoaXJkcyAoMzIvNDgpIG9mIHRoZQorYXZhaWxhYmxlIGJhbmR3aWR0aCAoYXNzdW1pbmcgdGhlIHNlcnZlciBjYW4gc2VuZCBvZmYgdGhlIGRhdGEgZXF1YWxseSBmb3IKK2JvdGggc3RyZWFtcykuCisuU0ggREVGQVVMVAorSWYgbm90aGluZyBpcyBzZXQsIHRoZSBIVFRQLzIgcHJvdG9jb2wgaXRzZWxmIHdpbGwgdXNlIGl0cyBvd24gZGVmYXVsdCB3aGljaAoraXMgMTYuCisuU0ggUFJPVE9DT0xTCitIVFRQLzIKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQ2LjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxPUFRfU1RSRUFNX0RFUEVORFMgIigzKSwgIiBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgIigzKSwgIgorLkJSIENVUkxPUFRfUElQRVdBSVQgIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0ZBU1RPUEVOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9GQVNUT1BFTi4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZjkzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9GQVNUT1BFTi4zCkBAIC0wLDAgKzEsNDcgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxPUFRfVENQX0ZBU1RPUEVOIDMgIjE2IEZlYiAyMDE2IiAibGliY3VybCA3LjQ5LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9UQ1BfRkFTVE9QRU4gXC0gZW5hYmxlIFRDUCBGYXN0IE9wZW4KKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4sIGxvbmcgZW5hYmxlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIGxvbmcgYXMgcGFyYW1ldGVyIHNldCB0byAxIHRvIGVuYWJsZSBvciAwIHRvIGRpc2FibGUuCisKK1RDUCBGYXN0IE9wZW4gKFJGQzc0MTMpIGlzIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGRhdGEgdG8gYmUgY2FycmllZCBpbiB0aGUKK1NZTiBhbmQgU1lOLUFDSyBwYWNrZXRzIGFuZCBjb25zdW1lZCBieSB0aGUgcmVjZWl2aW5nIGVuZCBkdXJpbmcgdGhlIGluaXRpYWwKK2Nvbm5lY3Rpb24gaGFuZHNoYWtlLCBzYXZpbmcgdXAgdG8gb25lIGZ1bGwgcm91bmQtdHJpcCB0aW1lIChSVFQpLgorLlNIIERFRkFVTFQKKzAKKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDkuMC4gVGhpcyBvcHRpb24gaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IGFuZCAgT1MgWAorRWwgQ2FwaXRhbi4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgZmFzdCBvcGVuIGlzIHN1cHBvcnRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgb3RoZXJ3aXNlCityZXR1cm5zIENVUkxFX05PVF9CVUlMVF9JTi4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBBTElWRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKaW5kZXggOTQxY2M0OC4uY2MzNjQyZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBJRExFLjMKaW5kZXggZDYwYTNkZi4uZjVmNTc2MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElETEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9LRUVQSURMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBJTlRWTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKaW5kZXggNDJiYzBiNC4uZjMzMmE4ZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zCmluZGV4IGJkMTM1MTYuLmVmYjI1ODYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX05PREVMQVkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9OT0RFTEFZLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URUxORVRPUFRJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMwppbmRleCBmNWE5YmM1Li43YTE4MWVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RGVFBfQkxLU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URlRQX0JMS1NJWkUuMwppbmRleCAwNWJjNjM5Li42YWFmYmQxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RGVFBfQkxLU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9CTEtTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URlRQX05PX09QVElPTlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9OT19PUFRJT05TLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NDBmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9OT19PUFRJT05TLjMKQEAgLTAsMCArMSw3MSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9URlRQX05PX09QVElPTlMgMyAiMjMgRmViIDIwMTYiICJsaWJjdXJsIDcuNDguMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUyBcLSBEbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMuCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfVEZUUF9OT19PUFRJT05TLCBsb25nIG9ub2ZmKTsKKy5TSCBERVNDUklQVElPTgorU2V0IFxmSW9ub2ZmXGZQIHRvIDFMIHRvIGV4Y2x1ZGUgYWxsIFRGVFAgb3B0aW9ucyBkZWZpbmVkIGluIFJGQzIzNDcsIFJGQzIzNDgKK2FuZCBSRkMyMzQ5IGZyb20gcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgKFJSUXMvV1JRcykuCisKK1RoaXMgb3B0aW9uIGltcHJvdmVzIGludGVyb3Agd2l0aCBzb21lIGxlZ2FjeSBzZXJ2ZXJzIHRoYXQgZG8gbm90IGFja25vd2xlZGdlCitvciBwcm9wZXJseSBpbXBsZW1lbnQgVEZUUCBvcHRpb25zLiBXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQKK1xmSUNVUkxPUFRfVEZUUF9CTEtTSVpFKDMpXGZQIGlzIGlnbm9yZWQuCisuU0ggREVGQVVMVAorMAorLlNIIFBST1RPQ09MUworVEZUUAorLlNIIEVYQU1QTEUKKy5uZgorc2l6ZV90IHdyaXRlX2NhbGxiYWNrKGNoYXIgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqZnApCit7CisgIHJldHVybiBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilmcCk7Cit9CisKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBGSUxFICpmcCA9IGZvcGVuKCJmb28uYmluIiwgIndiIik7CisgIGlmKGZwKSB7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgKHZvaWQgKilmcCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlX2NhbGxiYWNrKTsKKworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJ0ZnRwOi8vZXhhbXBsZS5jb20vZm9vLmJpbiIpOworCisgICAgLyogZG8gbm90IHNlbmQgVEZUUCBvcHRpb25zIHJlcXVlc3RzICovCisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUywgMUwpOworCisgICAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCAqLworICAgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworCisgICAgZmNsb3NlKGZwKTsKKyAgfQorICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKK30KKy5maQorLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40OC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMwppbmRleCA2NmMzNGZmLi5hOGZjZWE3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQyLDcgKzQyLDIxIEBACiAuU0ggUFJPVE9DT0xTCiBIVFRQLCBGVFAsIFJUU1AsIGFuZCBGSUxFCiAuU0ggRVhBTVBMRQotVE9ETworLm5mCitDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly9leGFtcGxlLmNvbSIpOworCisgIC8qIEphbnVhcnkgMSwgMjAyMCBpcyAxNTc3ODMzMjAwICovCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9USU1FVkFMVUUsIDE1Nzc4MzMyMDBMKTsKKworICAvKiBJZi1Nb2RpZmllZC1TaW5jZSB0aGUgYWJvdmUgdGltZSBzdGFtcCAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVElNRUNPTkRJVElPTiwgQ1VSTF9USU1FQ09ORF9JRk1PRFNJTkNFKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVElNRU9VVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKaW5kZXggNjQ0MGZmZS4uNDVlNjliNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VUX01TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMwppbmRleCAzNzI3MTMzLi4yYTdhZmIxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVWQUxVRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FVkFMVUUuMwppbmRleCA0M2EzODcxLi5jZDc0NWZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVWQUxVRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVElNRVZBTFVFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiwyMSBAQAogLlNIIFBST1RPQ09MUwogSFRUUCwgRlRQLCBSVFNQLCBhbmQgRklMRQogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKworICAvKiBKYW51YXJ5IDEsIDIwMjAgaXMgMTU3NzgzMzIwMCAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVElNRVZBTFVFLCAxNTc3ODMzMjAwTCk7CisKKyAgLyogSWYtTW9kaWZpZWQtU2luY2UgdGhlIGFib3ZlIHRpbWUgc3RhbXAgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1RJTUVDT05ESVRJT04sIENVUkxfVElNRUNPTkRfSUZNT0RTSU5DRSk7CisKKyAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCAqLworICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKK30KKy5maQogLlNIIEFWQUlMQUJJTElUWQogQWx3YXlzCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCmluZGV4IDFjODY5N2YuLjc4ZmFkMGUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9UWVBFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVFlQRS4zCmluZGV4IGI1Y2RkNWIuLjU2NTVlN2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9UWVBFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UTFNBVVRIX1RZUEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiwxOSArMjYsMTkgQEAKIC5TSCBTWU5PUFNJUwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi1DVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUsIGxvbmcgYml0bWFzayk7CitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUsIGNoYXIgKnR5cGUpOwogLlNIIERFU0NSSVBUSU9OCi1QYXNzIGEgbG9uZyBhcyBwYXJhbWV0ZXIsIHdoaWNoIGlzIHNldCB0byBhIGJpdG1hc2ssIHRvIHRlbGwgbGliY3VybCB3aGljaAotYXV0aGVudGljYXRpb24gbWV0aG9kKHMpIHlvdSB3YW50IGl0IHRvIHVzZSBmb3IgVExTIGF1dGhlbnRpY2F0aW9uLgorUGFzcyBhIHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nIGFzIHBhcmFtZXRlci4gVGhlIHN0cmluZworc2hvdWxkIGJlIHRoZSBtZXRob2Qgb2YgdGhlIFRMUyBhdXRoZW50aWNhdGlvbi4gU3VwcG9ydGVkIG1ldGhvZCBpcyAiU1JQIi4KIAotLklQIENVUkxfVExTQVVUSF9TUlAKKy5JUCBTUlAKIFRMUy1TUlAgYXV0aGVudGljYXRpb24uIFNlY3VyZSBSZW1vdGUgUGFzc3dvcmQgYXV0aGVudGljYXRpb24gZm9yIFRMUyBpcwogZGVmaW5lZCBpbiBSRkM1MDU0IGFuZCBwcm92aWRlcyBtdXR1YWwgYXV0aGVudGljYXRpb24gaWYgYm90aCBzaWRlcyBoYXZlIGEKIHNoYXJlZCBzZWNyZXQuIFRvIHVzZSBUTFMtU1JQLCB5b3UgbXVzdCBhbHNvIHNldCB0aGUKIFxmSUNVUkxPUFRfVExTQVVUSF9VU0VSTkFNRSgzKVxmUCBhbmQgXGZJQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JEKDMpXGZQCiBvcHRpb25zLgogLlNIIERFRkFVTFQKLUNVUkxfVExTQVVUSF9OT05FICgwKQorYmxhbmsKIC5TSCBQUk9UT0NPTFMKIEFsbCBUTFMtYmFzZWQgcHJvdG9jb2xzCiAuU0ggRVhBTVBMRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMwppbmRleCBjNWJiMmRmLi41MDIyZTRlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSVEVYVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUlRFWFQuMwppbmRleCA2ZTYyNDEzLi5hYTE3NTljIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSVEVYVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVFJBTlNGRVJURVhULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zCmluZGV4IDdmMmExMWMuLjI0MmRhMTMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSX0VOQ09ESU5HLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiw3IEBACiBhdXRvbWF0aWNhbGx5IHVuY29tcHJlc3NlZCBieSBsaWJjdXJsIG9uIHJlY2VwdGlvbi4KIAogVHJhbnNmZXItRW5jb2RpbmcgZGlmZmVycyBzbGlnaHRseSBmcm9tIHRoZSBDb250ZW50LUVuY29kaW5nIHlvdSBhc2sgZm9yIHdpdGgKLVxmQkNVUkxPUFRfQUNDRVBUX0VOQ09ESU5HKDMpXGZQIGluIHRoYXQgYSBUcmFuc2Zlci1FbmNvZGluZyBpcyBzdHJpY3RseSBtZWFudAorXGZJQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcoMylcZlAgaW4gdGhhdCBhIFRyYW5zZmVyLUVuY29kaW5nIGlzIHN0cmljdGx5IG1lYW50CiB0byBiZSBmb3IgdGhlIHRyYW5zZmVyIGFuZCB0aHVzIE1VU1QgYmUgZGVjb2RlZCBiZWZvcmUgdGhlIGRhdGEgYXJyaXZlcyBpbiB0aGUKIGNsaWVudC4gVHJhZGl0aW9uYWxseSwgVHJhbnNmZXItRW5jb2RpbmcgaGFzIGJlZW4gbXVjaCBsZXNzIHVzZWQgYW5kIHN1cHBvcnRlZAogYnkgYm90aCBIVFRQIGNsaWVudHMgYW5kIEhUVFAgc2VydmVycy4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKaW5kZXggYTY1OWNkMi4uMjk5YzNjYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zCmluZGV4IDY4YzM4NjAuLjllNGNmMjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VOUkVTVFJJQ1RFRF9BVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUExPQUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVBMT0FELjMKaW5kZXggZDI0YmQyOC4uMGFkMjAxYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUExPQUQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VQTE9BRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVJMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VSTC4zCmluZGV4IDZlNDgyNGEuLmE3ZDgxZGYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVJMLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUkwuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDkgKzQwLDExIEBACiBpc3N1ZWQuIEV2ZW4gaWYgeW91IHNldCBhIGNyYXp5IHZhbHVlIGhlcmUsIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgd2lsbAogc3RpbGwgcmV0dXJuIFxmSUNVUkxFX09LXGZQLgogCi1JZiB0aGUgZ2l2ZW4gVVJMIGxhY2tzIHRoZSBzY2hlbWUgKHN1Y2ggYXMgImh0dHA6Ly8iIG9yICJmdHA6Ly8iIGV0YykgdGhlbgotbGliY3VybCB3aWxsIGF0dGVtcHQgdG8gcmVzb2x2ZSB0aGUgcHJvdG9jb2wgYmFzZWQgb24gb25lIG9mIHRoZSBmb2xsb3dpbmcKLWdpdmVuIGhvc3QgbmFtZXM6IEhUVFAsIEZUUCwgRElDVCwgTERBUCwgSU1BUCwgUE9QMyBvciBTTVRQCitJZiB0aGUgZ2l2ZW4gVVJMIGlzIG1pc3NpbmcgYSBzY2hlbWUgbmFtZSAoc3VjaCBhcyAiaHR0cDovLyIgb3IgImZ0cDovLyIgZXRjKQordGhlbiBsaWJjdXJsIHdpbGwgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LiBJZiB0aGUgb3V0ZXJtb3N0IHN1Yi1kb21haW4KK25hbWUgbWF0Y2hlcyBESUNULCBGVFAsIElNQVAsIExEQVAsIFBPUDMgb3IgU01UUCB0aGVuIHRoYXQgcHJvdG9jb2wgd2lsbCBiZQordXNlZCwgb3RoZXJ3aXNlIEhUVFAgd2lsbCBiZSB1c2VkLiBTaW5jZSA3LjQ1LjAgZ3Vlc3NpbmcgY2FuIGJlIGRpc2FibGVkIGJ5CitzZXR0aW5nIGEgZGVmYXVsdCBwcm90b2NvbCwgc2VlIFxmSUNVUkxPUFRfREVGQVVMVF9QUk9UT0NPTCgzKVxmUCBmb3IgZGV0YWlscy4KIAogU2hvdWxkIHRoZSBwcm90b2NvbCwgZWl0aGVyIHRoYXQgc3BlY2lmaWVkIGJ5IHRoZSBzY2hlbWUgb3IgZGVkdWNlZCBieSBsaWJjdXJsCiBmcm9tIHRoZSBob3N0IG5hbWUsIG5vdCBiZSBzdXBwb3J0ZWQgYnkgbGliY3VybCB0aGVuCkBAIC0zMzAsNCArMzMyLDUgQEAKIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9WRVJCT1NFICIoMyksICIgQ1VSTE9QVF9QUk9UT0NPTFMgIigzKSwgIgogLkJSIENVUkxPUFRfRk9SQklEX1JFVVNFICIoMyksICIgQ1VSTE9QVF9GUkVTSF9DT05ORUNUICIoMyksICIKLS5CUiBjdXJsX2Vhc3lfcGVyZm9ybSAiKDMpIgorLkJSIGN1cmxfZWFzeV9wZXJmb3JtICIoMyksICIKKy5CUiBDVVJMSU5GT19SRURJUkVDVF9VUkwgIigzKSwgIiBDVVJMT1BUX1BBVEhfQVNfSVMgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSQUdFTlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUkFHRU5ULjMKaW5kZXggNGQ3MDM2ZC4uYzc2OWU5NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSQUdFTlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJBR0VOVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUk5BTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUk5BTUUuMwppbmRleCA3NTQ2Zjc0Li5lYzYwMDEwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJOQU1FLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSTkFNRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIsIHdoaWNoIHNob3VsZCBiZSBwb2ludGluZyB0byB0aGUgemVybyB0ZXJtaW5hdGVkCiB1c2VyIG5hbWUgdG8gdXNlIGZvciB0aGUgdHJhbnNmZXIuCiAKLVxmQkNVUkxPUFRfVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKK1xmSUNVUkxPUFRfVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKIGF1dGhlbnRpY2F0aW9uLiBZb3Ugc2hvdWxkIG5vdCB1c2UgdGhpcyBvcHRpb24gdG9nZXRoZXIgd2l0aCB0aGUgKG9sZGVyKQogXGZJQ1VSTE9QVF9VU0VSUFdEKDMpXGZQIG9wdGlvbi4KIApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSUFdELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMwppbmRleCAyMmU5MjBmLi4xOTQwNGY2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRV9TU0wuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCmluZGV4IDM0OGYxYjAuLjM3YTIyNGQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVkVSQk9TRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKaW5kZXggNzMyYjhjNC4uZTZhNmZkMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XSUxEQ0FSRE1BVENILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMwppbmRleCBiNTY3MDQ1Li4xY2ExYmVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03OCw3ICs3OCw3IEBACiAuU0ggUFJPVE9DT0xTCiBUaGlzIGZlYXR1cmUgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEZUUCBkb3dubG9hZC4KIC5TSCBFWEFNUExFCi1TZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwLXdpbGRjYXJkLmh0bWwKK1NlZSBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwLXdpbGRjYXJkLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFkZGVkIGluIDcuMjEuMAogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURURBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfV1JJVEVEQVRBLjMKaW5kZXggMGI3YTUwMi4uZmRiNTg4NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURURBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5LDcgKzQ5LDcgQEAKIGludG8gYSBkeW5hbWljYWxseSBncm93aW5nIGFsbG9jYXRlZCBidWZmZXIsIGFuZCB0aGVuIHRoaXMKIFxmSUNVUkxPUFRfV1JJVEVEQVRBKDMpXGZQIGlzIHVzZWQgdG8gcG9pbnQgdG8gYSBzdHJ1Y3Qgb3IgdGhlIGJ1ZmZlciB0byBzdG9yZQogZGF0YSBpbi4gTGlrZSBpbiB0aGUgZ2V0aW5tZW1vcnkgZXhhbXBsZToKLWh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2dldGlubWVtb3J5Lmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9nZXRpbm1lbW9yeS5odG1sCiAuU0ggQVZBSUxBQklMSVRZCiBBdmFpbGFibGUgaW4gYWxsIGxpYmN1cmwgdmVyc2lvbnMuIFRoaXMgb3B0aW9uIHdhcyBmb3JtZXJseSBrbm93biBhcwogXGZJQ1VSTE9QVF9GSUxFXGZQLCB0aGUgbmFtZSBcZklDVVJMT1BUX1dSSVRFREFUQSgzKVxmUCB3YXMgaW50cm9kdWNlZCBpbgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMwppbmRleCBmNWE0NWEzLi4yYzc3YTRjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03Niw2ICs3Niw2IEBACiAuU0ggRVhBTVBMRQogQSBjb21tb24gdGVjaG5pcXVlIGlzIHRvIHVzZSB0aGlzIGNhbGxiYWNrIHRvIHN0b3JlIHRoZSBpbmNvbWluZyBkYXRhIGludG8gYQogZHluYW1pY2FsbHkgZ3Jvd2luZyBhbGxvY2F0ZWQgYnVmZmVyLiBMaWtlIGluIHRoZSBnZXRpbm1lbW9yeSBleGFtcGxlOgotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZ2V0aW5tZW1vcnkuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2dldGlubWVtb3J5Lmh0bWwKIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9XUklURURBVEEgIigzKSwgIiBDVVJMT1BUX1JFQURGVU5DVElPTiAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMwppbmRleCBiMmMxNzBmLi5mYzFkZThjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9EQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzcsNyArMzcsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQWRkZWQgaW4gNy4zMi4wCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCmluZGV4IGNhZDgxMTguLjliZDg5ZGIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTcyLDcgKzcyLDcgQEAKIC5TSCBQUk9UT0NPTFMKIEFsbAogLlNIIEVYQU1QTEUKLWh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL3Byb2dyZXNzZnVuYy5odG1sCitodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFkZGVkIGluIDcuMzIuMC4gVGhpcyBjYWxsYmFjayByZXBsYWNlcyBcZklDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04oMylcZlAKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWE9BVVRIMl9CRUFSRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWE9BVVRIMl9CRUFSRVIuMwppbmRleCAyNjQ0Yzg4Li5iNmMxZmVlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hPQVVUSDJfQkVBUkVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL01ha2VmaWxlLmFtIGIvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KaW5kZXggNTUxNzgxMS4uNDk2NzRkNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDMxOCArMjIsODcxIEBACiAKIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduIG5vLWRlcGVuZGVuY2llcwogCi1tYW5fTUFOUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLjMgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLjMJCVwKLSBDVVJMT1BUX0FERFJFU1NfU0NPUEUuMyBDVVJMT1BUX0FQUEVORC4zIENVUkxPUFRfQVVUT1JFRkVSRVIuMwkJXAotIENVUkxPUFRfQlVGRkVSU0laRS4zIENVUkxPUFRfQ0FJTkZPLjMgQ1VSTE9QVF9DQVBBVEguMwkJCVwKLSBDVVJMT1BUX0NFUlRJTkZPLjMgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMyBDVVJMT1BUX0NIVU5LX0RBVEEuMwlcCi0gQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyBDVVJMT1BUX0NMT1NFU09DS0VUREFUQS4zCQkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zIENVUkxPUFRfQ09OTkVDVF9PTkxZLjMJCQlcCi0gQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMwkJCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9ORVRXT1JLX0ZVTkNUSU9OLjMgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zCVwKLSBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi4zIENVUkxPUFRfQ09PS0lFLjMJCQlcCi0gQ1VSTE9QVF9DT09LSUVGSUxFLjMgQ1VSTE9QVF9DT09LSUVKQVIuMyBDVVJMT1BUX0NPT0tJRUxJU1QuMwkJXAotIENVUkxPUFRfQ09PS0lFU0VTU0lPTi4zIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMuMyBDVVJMT1BUX0NSTEYuMwlcCi0gQ1VSTE9QVF9DUkxGSUxFLjMgQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMgQ1VSTE9QVF9ERUJVR0RBVEEuMwkJXAotIENVUkxPUFRfREVCVUdGVU5DVElPTi4zIENVUkxPUFRfRElSTElTVE9OTFkuMwkJCQlcCi0gQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zIENVUkxPUFRfRE5TX0lOVEVSRkFDRS4zCQkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC4zIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zIENVUkxPUFRfRE5TX1NFUlZFUlMuMwlcCi0gQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zIENVUkxPUFRfRUdEU09DS0VULjMJCQlcCi0gQ1VSTE9QVF9FUlJPUkJVRkZFUi4zIENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLjMJCQlcCi0gQ1VSTE9QVF9GQUlMT05FUlJPUi4zIENVUkxPUFRfRklMRVRJTUUuMyBDVVJMT1BUX0ZOTUFUQ0hfREFUQS4zCVwKLSBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uMyBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLjMJCQlcCi0gQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyBDVVJMT1BUX0ZSRVNIX0NPTk5FQ1QuMyBDVVJMT1BUX0ZUUF9BQ0NPVU5ULjMJXAotIENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMyBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLjMJXAotIENVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMyBDVVJMT1BUX0ZUUFBPUlQuMwkJCQlcCi0gQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUC4zCQlcCi0gQ1VSTE9QVF9GVFBTU0xBVVRILjMgQ1VSTE9QVF9GVFBfU1NMX0NDQy4zIENVUkxPUFRfRlRQX1VTRV9FUFJULjMJXAotIENVUkxPUFRfRlRQX1VTRV9FUFNWLjMgQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMwkJCQlcCi0gQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zIENVUkxPUFRfSEVBREVSLjMgQ1VSTE9QVF9IRUFERVJEQVRBLjMJXAotIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uMyBDVVJMT1BUX0hFQURFUk9QVC4zIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuMwlcCi0gQ1VSTE9QVF9IVFRQQVVUSC4zIENVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMgQ1VSTE9QVF9IVFRQR0VULjMJXAotIENVUkxPUFRfSFRUUEhFQURFUi4zIENVUkxPUFRfSFRUUFBPU1QuMyBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTC4zCVwKLSBDVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuMyBDVVJMT1BUX0hUVFBfVkVSU0lPTi4zCQlcCi0gQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMyBDVVJMT1BUX0lORklMRVNJWkUuMwkJCVwKLSBDVVJMT1BUX0lORklMRVNJWkVfTEFSR0UuMyBDVVJMT1BUX0lOVEVSRkFDRS4zCQkJCVwKLSBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMwkJCVwKLSBDVVJMT1BUX0lPQ1RMREFUQS4zIENVUkxPUFRfSU9DVExGVU5DVElPTi4zIENVUkxPUFRfSVBSRVNPTFZFLjMJXAotIENVUkxPUFRfSVNTVUVSQ0VSVC4zIENVUkxPUFRfS0VZUEFTU1dELjMgQ1VSTE9QVF9LUkJMRVZFTC4zCQlcCi0gQ1VSTE9QVF9MT0NBTFBPUlQuMyBDVVJMT1BUX0xPQ0FMUE9SVFJBTkdFLjMgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMJXAotIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zIENVUkxPUFRfTUFJTF9BVVRILjMJXAotIENVUkxPUFRfTUFJTF9GUk9NLjMgQ1VSTE9QVF9NQUlMX1JDUFQuMyBDVVJMT1BUX01BWENPTk5FQ1RTLjMJCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFLjMgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zCQkJXAotIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMyBDVVJMT1BUX01BWFJFRElSUy4zCQkJXAotIENVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMyBDVVJMT1BUX05FVFJDLjMgQ1VSTE9QVF9ORVRSQ19GSUxFLjMJXAotIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy4zIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuMwkJCVwKLSBDVVJMT1BUX05PQk9EWS4zIENVUkxPUFRfTk9QUk9HUkVTUy4zIENVUkxPUFRfTk9QUk9YWS4zCQlcCi0gQ1VSTE9QVF9OT1NJR05BTC4zIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEuMwkJCQlcCi0gQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMyBDVVJMT1BUX1BBU1NXT1JELjMJCQlcCi0gQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyBDVVJMT1BUX1BPUlQuMyBDVVJMT1BUX1BPU1QuMwkJXAotIENVUkxPUFRfUE9TVEZJRUxEUy4zIENVUkxPUFRfUE9TVEZJRUxEU0laRS4zCQkJCVwKLSBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMyBDVVJMT1BUX1BPU1RRVU9URS4zIENVUkxPUFRfUE9TVFJFRElSLjMJXAotIENVUkxPUFRfUFJFUVVPVEUuMyBDVVJMT1BUX1BSSVZBVEUuMyBDVVJMT1BUX1BST0dSRVNTREFUQS4zCQlcCi0gQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMgQ1VSTE9QVF9QUk9UT0NPTFMuMyBDVVJMT1BUX1BST1hZLjMJCVwKLSBDVVJMT1BUX1BST1hZQVVUSC4zIENVUkxPUFRfUFJPWFlIRUFERVIuMyBDVVJMT1BUX1BST1hZUEFTU1dPUkQuMwlcCi0gQ1VSTE9QVF9QUk9YWVBPUlQuMyBDVVJMT1BUX1BST1hZX1RSQU5TRkVSX01PREUuMyBDVVJMT1BUX1BST1hZVFlQRS4zCVwKLSBDVVJMT1BUX1BST1hZVVNFUk5BTUUuMyBDVVJMT1BUX1BST1hZVVNFUlBXRC4zIENVUkxPUFRfUFVULjMJCVwKLSBDVVJMT1BUX1FVT1RFLjMgQ1VSTE9QVF9SQU5ET01fRklMRS4zIENVUkxPUFRfUkFOR0UuMwkJCVwKLSBDVVJMT1BUX1JFQUREQVRBLjMgQ1VSTE9QVF9SRUFERlVOQ1RJT04uMyBDVVJMT1BUX1JFRElSX1BST1RPQ09MUy4zCVwKLSBDVVJMT1BUX1JFRkVSRVIuMyBDVVJMT1BUX1JFU09MVkUuMyBDVVJMT1BUX1JFU1VNRV9GUk9NLjMJCVwKLSBDVVJMT1BUX1JFU1VNRV9GUk9NX0xBUkdFLjMgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMJCQlcCi0gQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyBDVVJMT1BUX1JUU1BfU0VSVkVSX0NTRVEuMwkJCVwKLSBDVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC4zIENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMJCQlcCi0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zIENVUkxPUFRfU0FTTF9JUi4zIENVUkxPUFRfU0VFS0RBVEEuMwkJXAotIENVUkxPUFRfU0VFS0ZVTkNUSU9OLjMgQ1VSTE9QVF9TSEFSRS4zIENVUkxPUFRfU09DS09QVERBVEEuMwkJXAotIENVUkxPUFRfU09DS09QVEZVTkNUSU9OLjMgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zCQkJXAotIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zCQlcCi0gQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zIENVUkxPUFRfU1NIX0tFWURBVEEuMwkJXAotIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zCQkJXAotIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMJCVwKLSBDVVJMT1BUX1NTTENFUlQuMyBDVVJMT1BUX1NTTENFUlRUWVBFLjMgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMwlcCi0gQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMyBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uMwkJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi4zIENVUkxPUFRfU1NMX0VOQUJMRV9OUE4uMyBDVVJMT1BUX1NTTEVOR0lORS4zCVwKLSBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULjMgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zIENVUkxPUFRfU1NMS0VZLjMJXAotIENVUkxPUFRfU1NMS0VZVFlQRS4zIENVUkxPUFRfU1NMX09QVElPTlMuMwkJCQlcCi0gQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zCQkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMyBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwkJCVwKLSBDVVJMT1BUX1NTTFZFUlNJT04uMyBDVVJMT1BUX1NUREVSUi4zIENVUkxPUFRfVENQX0tFRVBBTElWRS4zCQlcCi0gQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyBDVVJMT1BUX1RDUF9LRUVQSU5UVkwuMyBDVVJMT1BUX1RDUF9OT0RFTEFZLjMJXAotIENVUkxPUFRfVEVMTkVUT1BUSU9OUy4zIENVUkxPUFRfVEZUUF9CTEtTSVpFLjMgQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMJXAotIENVUkxPUFRfVElNRU9VVC4zIENVUkxPUFRfVElNRU9VVF9NUy4zIENVUkxPUFRfVElNRVZBTFVFLjMJCVwKLSBDVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQuMyBDVVJMT1BUX1RMU0FVVEhfVFlQRS4zCQkJXAotIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS4zIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuMwkJCVwKLSBDVVJMT1BUX1RSQU5TRkVSVEVYVC4zIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguMyBDVVJMT1BUX1VQTE9BRC4zCVwKLSBDVVJMT1BUX1VSTC4zIENVUkxPUFRfVVNFUkFHRU5ULjMgQ1VSTE9QVF9VU0VSTkFNRS4zIENVUkxPUFRfVVNFUlBXRC4zCVwKLSBDVVJMT1BUX1VTRV9TU0wuMyBDVVJMT1BUX1ZFUkJPU0UuMyBDVVJMT1BUX1dJTERDQVJETUFUQ0guMwkJXAotIENVUkxPUFRfV1JJVEVEQVRBLjMgQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMwlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLjMgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCQkJXAotIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuMwkJCQkJXAotIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zIENVUkxNT1BUX01BWENPTk5FQ1RTLjMJCVwKLSBDVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguMwkJXAotIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUy4zIENVUkxNT1BUX1BJUEVMSU5JTkcuMwkJCVwKLSBDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zIENVUkxNT1BUX1BJUEVMSU5JTkdfU0lURV9CTC4zCQlcCi0gQ1VSTE1PUFRfU09DS0VUREFUQS4zIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMgQ1VSTE1PUFRfVElNRVJEQVRBLjMJXAotIENVUkxNT1BUX1RJTUVSRlVOQ1RJT04uMyBDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEguMwkJCVwKLSBDVVJMT1BUX1BBVEhfQVNfSVMuMyBDVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zCQkJXAotIENVUkxPUFRfU0VSVklDRV9OQU1FLjMgQ1VSTE9QVF9QSVBFV0FJVC4zCittYW5fTUFOUyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQUNUSVZFU09DS0VULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ0VSVElORk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OTkVDVF9USU1FLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQuMyAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELjMgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9UWVBFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09PS0lFTElTVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRUZGRUNUSVZFX1VSTC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRklMRVRJTUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSEVBREVSX1NJWkUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTEFTVFNPQ0tFVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfSVAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfUE9SVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTlVNX0NPTk5FQ1RTLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fT1NfRVJSTk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9JUC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9QT1JULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJVkFURS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVVJMLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVTUE9OU0VfQ09ERS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9VUExPQUQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfVVBMT0FELjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX0VOR0lORVMuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NFU1NJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NTTF9QVFIuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVE9UQUxfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS4zICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLjMgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYQ09OTkVDVFMuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLjMgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklORy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSERBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJEQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BRERSRVNTX1NDT1BFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BUFBFTkQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BVVRPUkVGRVJFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9CVUZGRVJTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQUlORk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQVBBVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DRVJUSU5GTy4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19EQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX09OTFkuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX1RPLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi4zICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04uMyAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVGSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVKQVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVMSVNULjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ESVJMSVNUT05MWS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfU0VSVkVSUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FR0RTT0NLRVQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FUlJPUkJVRkZFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GQUlMT05FUlJPUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GSUxFVElNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBQT1JULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBTU0xBVVRILjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUNDT1VOVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU1NMX0NDQy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJEQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJGVU5DVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJPUFQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQQVVUSC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQR0VULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQSEVBREVSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUE9TVC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HLjMgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1ZFUlNJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkZBQ0UuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTERBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JUFJFU09MVkUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JU1NVRVJDRVJULjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LRVlQQVNTV0QuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LUkJMRVZFTC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0FVVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0ZST00uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX1JDUFQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhDT05ORUNUUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhSRURJUlMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQy4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQ19GSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT0JPRFkuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST0dSRVNTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST1hZLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1NJR05BTC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVNTV09SRC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVRIX0FTX0lTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSVBFV0FJVC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1JULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUVVPVEUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUkVESVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUkVRVU9URS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUklWQVRFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9UT0NPTFMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUFVVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUhFQURFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBBU1NXT1JELjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBPUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVRZUEUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJQV0QuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QVVQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9RVU9URS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5ET01fRklMRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5HRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFEREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFERlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUZFUkVSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNPTFZFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TQVNMX0lSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRVJWSUNFX05BTUUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TSEFSRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUuMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJUVFlQRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVkuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVlUWVBFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xWRVJTSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfT1BUSU9OUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVERFUlIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fV0VJR0hULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URUxORVRPUFRJT05TLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX0JMS1NJWkUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX05PX09QVElPTlMuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VUX01TLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FVkFMVUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1RZUEUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUExPQUQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUkwuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSQUdFTlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSTkFNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSUFdELjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VfU1NMLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9WRVJCT1NFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XSUxEQ0FSRE1BVENILjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURURBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCiAKLUhUTUxQQUdFUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLmh0bWwJXAotIENVUkxPUFRfQUREUkVTU19TQ09QRS5odG1sIENVUkxPUFRfQVBQRU5ELmh0bWwJCQkJXAotIENVUkxPUFRfQVVUT1JFRkVSRVIuaHRtbCBDVVJMT1BUX0JVRkZFUlNJWkUuaHRtbCBDVVJMT1BUX0NBSU5GTy5odG1sCVwKLSBDVVJMT1BUX0NBUEFUSC5odG1sIENVUkxPUFRfQ0VSVElORk8uaHRtbAkJCQlcCi0gQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uaHRtbCBDVVJMT1BUX0NIVU5LX0RBVEEuaHRtbAkJXAotIENVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuaHRtbAkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi5odG1sIENVUkxPUFRfQ09OTkVDVF9PTkxZLmh0bWwJCVwKLSBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULmh0bWwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy5odG1sCQlcCi0gQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi5odG1sCQkJCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLmh0bWwJCQkJCVwKLSBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi5odG1sIENVUkxPUFRfQ09PS0lFLmh0bWwJCVwKLSBDVVJMT1BUX0NPT0tJRUZJTEUuaHRtbCBDVVJMT1BUX0NPT0tJRUpBUi5odG1sIENVUkxPUFRfQ09PS0lFTElTVC5odG1sCVwKLSBDVVJMT1BUX0NPT0tJRVNFU1NJT04uaHRtbCBDVVJMT1BUX0NPUFlQT1NURklFTERTLmh0bWwJCQlcCi0gQ1VSTE9QVF9DUkxGLmh0bWwgQ1VSTE9QVF9DUkxGSUxFLmh0bWwgQ1VSTE9QVF9DVVNUT01SRVFVRVNULmh0bWwJXAotIENVUkxPUFRfREVCVUdEQVRBLmh0bWwgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLmh0bWwJCQlcCi0gQ1VSTE9QVF9ESVJMSVNUT05MWS5odG1sIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuaHRtbAkJXAotIENVUkxPUFRfRE5TX0lOVEVSRkFDRS5odG1sIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5odG1sCQkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi5odG1sIENVUkxPUFRfRE5TX1NFUlZFUlMuaHRtbAkJCVwKLSBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLmh0bWwgQ1VSTE9QVF9FR0RTT0NLRVQuaHRtbAkJXAotIENVUkxPUFRfRVJST1JCVUZGRVIuaHRtbCBDVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy5odG1sCQlcCi0gQ1VSTE9QVF9GQUlMT05FUlJPUi5odG1sIENVUkxPUFRfRklMRVRJTUUuaHRtbAkJCQlcCi0gQ1VSTE9QVF9GTk1BVENIX0RBVEEuaHRtbCBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uaHRtbAkJXAotIENVUkxPUFRfRk9MTE9XTE9DQVRJT04uaHRtbCBDVVJMT1BUX0ZPUkJJRF9SRVVTRS5odG1sCQkJXAotIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5odG1sIENVUkxPUFRfRlRQX0FDQ09VTlQuaHRtbAkJCVwKLSBDVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSLmh0bWwJCQkJCVwKLSBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLmh0bWwgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC5odG1sCVwKLSBDVVJMT1BUX0ZUUFBPUlQuaHRtbCBDVVJMT1BUX0ZUUF9SRVNQT05TRV9USU1FT1VULmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLmh0bWwgQ1VSTE9QVF9GVFBTU0xBVVRILmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfU1NMX0NDQy5odG1sIENVUkxPUFRfRlRQX1VTRV9FUFJULmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfVVNFX0VQU1YuaHRtbCBDVVJMT1BUX0ZUUF9VU0VfUFJFVC5odG1sCQkJXAotIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uaHRtbCBDVVJMT1BUX0hFQURFUi5odG1sCQkJXAotIENVUkxPUFRfSEVBREVSREFUQS5odG1sIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uaHRtbAkJCVwKLSBDVVJMT1BUX0hFQURFUk9QVC5odG1sIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuaHRtbAkJCVwKLSBDVVJMT1BUX0hUVFBBVVRILmh0bWwgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuaHRtbAkJXAotIENVUkxPUFRfSFRUUEdFVC5odG1sIENVUkxPUFRfSFRUUEhFQURFUi5odG1sIENVUkxPUFRfSFRUUFBPU1QuaHRtbAlcCi0gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuaHRtbCBDVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuaHRtbAlcCi0gQ1VSTE9QVF9IVFRQX1ZFUlNJT04uaHRtbCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSC5odG1sCQlcCi0gQ1VSTE9QVF9JTkZJTEVTSVpFLmh0bWwgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLmh0bWwJCQlcCi0gQ1VSTE9QVF9JTlRFUkZBQ0UuaHRtbCBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLmh0bWwJCQlcCi0gQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uaHRtbCBDVVJMT1BUX0lPQ1RMREFUQS5odG1sCQkJXAotIENVUkxPUFRfSU9DVExGVU5DVElPTi5odG1sIENVUkxPUFRfSVBSRVNPTFZFLmh0bWwJCQlcCi0gQ1VSTE9QVF9JU1NVRVJDRVJULmh0bWwgQ1VSTE9QVF9LRVlQQVNTV0QuaHRtbCBDVVJMT1BUX0tSQkxFVkVMLmh0bWwJXAotIENVUkxPUFRfTE9DQUxQT1JULmh0bWwgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS5odG1sCQkJXAotIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5odG1sIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULmh0bWwJCVwKLSBDVVJMT1BUX0xPV19TUEVFRF9USU1FLmh0bWwgQ1VSTE9QVF9NQUlMX0FVVEguaHRtbAkJCVwKLSBDVVJMT1BUX01BSUxfRlJPTS5odG1sIENVUkxPUFRfTUFJTF9SQ1BULmh0bWwgQ1VSTE9QVF9NQVhDT05ORUNUUy5odG1sCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFLmh0bWwgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS5odG1sCQlcCi0gQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS5odG1sIENVUkxPUFRfTUFYUkVESVJTLmh0bWwJCVwKLSBDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLmh0bWwgQ1VSTE9QVF9ORVRSQy5odG1sCQkJXAotIENVUkxPUFRfTkVUUkNfRklMRS5odG1sIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy5odG1sCQlcCi0gQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy5odG1sIENVUkxPUFRfTk9CT0RZLmh0bWwJCQlcCi0gQ1VSTE9QVF9OT1BST0dSRVNTLmh0bWwgQ1VSTE9QVF9OT1BST1hZLmh0bWwgQ1VSTE9QVF9OT1NJR05BTC5odG1sCVwKLSBDVVJMT1BUX09QRU5TT0NLRVREQVRBLmh0bWwgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uaHRtbAkJXAotIENVUkxPUFRfUEFTU1dPUkQuaHRtbCBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS5odG1sIENVUkxPUFRfUE9SVC5odG1sCVwKLSBDVVJMT1BUX1BPU1QuaHRtbCBDVVJMT1BUX1BPU1RGSUVMRFMuaHRtbCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUuaHRtbAlcCi0gQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLmh0bWwgQ1VSTE9QVF9QT1NUUVVPVEUuaHRtbAkJXAotIENVUkxPUFRfUE9TVFJFRElSLmh0bWwgQ1VSTE9QVF9QUkVRVU9URS5odG1sIENVUkxPUFRfUFJJVkFURS5odG1sCVwKLSBDVVJMT1BUX1BST0dSRVNTREFUQS5odG1sIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5odG1sCQlcCi0gQ1VSTE9QVF9QUk9UT0NPTFMuaHRtbCBDVVJMT1BUX1BST1hZLmh0bWwgQ1VSTE9QVF9QUk9YWUFVVEguaHRtbAlcCi0gQ1VSTE9QVF9QUk9YWUhFQURFUi5odG1sIENVUkxPUFRfUFJPWFlQQVNTV09SRC5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlQT1JULmh0bWwgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLmh0bWwJCVwKLSBDVVJMT1BUX1BST1hZVFlQRS5odG1sIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlVU0VSUFdELmh0bWwgQ1VSTE9QVF9QVVQuaHRtbCBDVVJMT1BUX1FVT1RFLmh0bWwJCVwKLSBDVVJMT1BUX1JBTkRPTV9GSUxFLmh0bWwgQ1VSTE9QVF9SQU5HRS5odG1sIENVUkxPUFRfUkVBRERBVEEuaHRtbAlcCi0gQ1VSTE9QVF9SRUFERlVOQ1RJT04uaHRtbCBDVVJMT1BUX1JFRElSX1BST1RPQ09MUy5odG1sCQkJXAotIENVUkxPUFRfUkVGRVJFUi5odG1sIENVUkxPUFRfUkVTT0xWRS5odG1sIENVUkxPUFRfUkVTVU1FX0ZST00uaHRtbAlcCi0gQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS5odG1sIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5odG1sCQlcCi0gQ1VSTE9QVF9SVFNQX1JFUVVFU1QuaHRtbCBDVVJMT1BUX1JUU1BfU0VSVkVSX0NTRVEuaHRtbAkJXAotIENVUkxPUFRfUlRTUF9TRVNTSU9OX0lELmh0bWwgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuaHRtbAkJXAotIENVUkxPUFRfUlRTUF9UUkFOU1BPUlQuaHRtbCBDVVJMT1BUX1NBU0xfSVIuaHRtbCBDVVJMT1BUX1NFRUtEQVRBLmh0bWwJXAotIENVUkxPUFRfU0VFS0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9TSEFSRS5odG1sIENVUkxPUFRfU09DS09QVERBVEEuaHRtbAlcCi0gQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uaHRtbCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLmh0bWwJCVwKLSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS5odG1sIENVUkxPUFRfU1NIX0FVVEhfVFlQRVMuaHRtbAkJXAotIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuaHRtbCBDVVJMT1BUX1NTSF9LRVlEQVRBLmh0bWwJCVwKLSBDVVJMT1BUX1NTSF9LRVlGVU5DVElPTi5odG1sIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMuaHRtbAkJXAotIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS5odG1sIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLmh0bWwJXAotIENVUkxPUFRfU1NMQ0VSVC5odG1sIENVUkxPUFRfU1NMQ0VSVFRZUEUuaHRtbAkJCQlcCi0gQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuaHRtbCBDVVJMT1BUX1NTTF9DVFhfREFUQS5odG1sCQkJXAotIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi5odG1sIENVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLmh0bWwJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfTlBOLmh0bWwgQ1VSTE9QVF9TU0xFTkdJTkUuaHRtbAkJCVwKLSBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULmh0bWwgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5odG1sCQlcCi0gQ1VSTE9QVF9TU0xLRVkuaHRtbCBDVVJMT1BUX1NTTEtFWVRZUEUuaHRtbCBDVVJMT1BUX1NTTF9PUFRJT05TLmh0bWwJXAotIENVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS5odG1sIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QuaHRtbAkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuaHRtbCBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuaHRtbAkJXAotIENVUkxPUFRfU1NMVkVSU0lPTi5odG1sIENVUkxPUFRfU1RERVJSLmh0bWwgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLmh0bWwJXAotIENVUkxPUFRfVENQX0tFRVBJRExFLmh0bWwgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLmh0bWwJCQlcCi0gQ1VSTE9QVF9UQ1BfTk9ERUxBWS5odG1sIENVUkxPUFRfVEVMTkVUT1BUSU9OUy5odG1sCQkJXAotIENVUkxPUFRfVEZUUF9CTEtTSVpFLmh0bWwgQ1VSTE9QVF9USU1FQ09ORElUSU9OLmh0bWwJCQlcCi0gQ1VSTE9QVF9USU1FT1VULmh0bWwgQ1VSTE9QVF9USU1FT1VUX01TLmh0bWwgQ1VSTE9QVF9USU1FVkFMVUUuaHRtbAlcCi0gQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELmh0bWwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUuaHRtbAkJXAotIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS5odG1sIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuaHRtbAkJXAotIENVUkxPUFRfVFJBTlNGRVJURVhULmh0bWwgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC5odG1sCQlcCi0gQ1VSTE9QVF9VUExPQUQuaHRtbCBDVVJMT1BUX1VSTC5odG1sIENVUkxPUFRfVVNFUkFHRU5ULmh0bWwJCVwKLSBDVVJMT1BUX1VTRVJOQU1FLmh0bWwgQ1VSTE9QVF9VU0VSUFdELmh0bWwgQ1VSTE9QVF9VU0VfU1NMLmh0bWwJXAotIENVUkxPUFRfVkVSQk9TRS5odG1sIENVUkxPUFRfV0lMRENBUkRNQVRDSC5odG1sIENVUkxPUFRfV1JJVEVEQVRBLmh0bWwJXAotIENVUkxPUFRfV1JJVEVGVU5DVElPTi5odG1sIENVUkxPUFRfWEZFUklORk9EQVRBLmh0bWwJCQlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi5odG1sCQlcCi0gQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS5odG1sCQkJCVwKLSBDVVJMTU9QVF9DT05URU5UX0xFTkdUSF9QRU5BTFRZX1NJWkUuaHRtbCBDVVJMTU9QVF9NQVhDT05ORUNUUy5odG1sCVwKLSBDVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy5odG1sIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguaHRtbAlcCi0gQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLmh0bWwgQ1VSTE1PUFRfUElQRUxJTklORy5odG1sCQlcCi0gQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuaHRtbCBDVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuaHRtbAlcCi0gQ1VSTE1PUFRfU09DS0VUREFUQS5odG1sIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLmh0bWwJCQlcCi0gQ1VSTE1PUFRfVElNRVJEQVRBLmh0bWwgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5odG1sCQkJXAotIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC5odG1sIENVUkxPUFRfUEFUSF9BU19JUy5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLmh0bWwgQ1VSTE9QVF9TRVJWSUNFX05BTUUuaHRtbAkJXAotIENVUkxPUFRfUElQRVdBSVQuaHRtbAorSFRNTFBBR0VTID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0FDVElWRVNPQ0tFVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NFUlRJTkZPLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTk5FQ1RfVElNRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELmh0bWwgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC5odG1sICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfVFlQRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPT0tJRUxJU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0VGRkVDVElWRV9VUkwuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0ZJTEVUSU1FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0ZUUF9FTlRSWV9QQVRILmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hFQURFUl9TSVpFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xBU1RTT0NLRVQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xPQ0FMX0lQLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xPQ0FMX1BPUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX05BTUVMT09LVVBfVElNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX05VTV9DT05ORUNUUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX09TX0VSUk5PLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSU1BUllfSVAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSU1BUllfUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSVZBVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX0NPVU5ULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX1VSTC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFUVVFU1RfU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFU1BPTlNFX0NPREUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfQ0xJRU5UX0NTRVEuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfU0VTU0lPTl9JRC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NJWkVfVVBMT0FELmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NQRUVEX0RPV05MT0FELmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NQRUVEX1VQTE9BRC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NTTF9FTkdJTkVTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RMU19TRVNTSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RMU19TU0xfUFRSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RPVEFMX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuaHRtbCAgICAgICAgXAorIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS5odG1sICAgICAgXAorIENVUkxNT1BUX01BWENPTk5FQ1RTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLmh0bWwgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguaHRtbCAgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUy5odG1sICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkcuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLmh0bWwgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkdfU0lURV9CTC5odG1sICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BVU0hEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BVU0hGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1NPQ0tFVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1RJTUVSREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1RJTUVSRlVOQ1RJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUREUkVTU19TQ09QRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQVBQRU5ELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQVVUT1JFRkVSRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQlVGRkVSU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0FJTkZPLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0FQQVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0VSVElORk8uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVF9PTkxZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVF9UTy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uaHRtbCAgICAgICAgXAorIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFSkFSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFTElTVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFU0VTU0lPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1JMRi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1JMRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1VTVE9NUkVRVUVTVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVCVUdEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVCVUdGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVGQVVMVF9QUk9UT0NPTC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRElSTElTVE9OTFkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0lOVEVSRkFDRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX1NFUlZFUlMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfRUdEU09DS0VULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRVJST1JCVUZGRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfRkFJTE9ORVJST1IuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRklMRVRJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk5NQVRDSF9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk9MTE9XTE9DQVRJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk9SQklEX1JFVVNFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQU1NMQVVUSC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0FDQ09VTlQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1NTTF9DQ0MuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9FUFJULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9FUFNWLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9QUkVULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVST1BULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEFVVEguaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEdFVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEhFQURFUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUFBPU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUFBST1hZVFVOTkVMLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy5odG1sICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9WRVJTSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5GSUxFU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJGQUNFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJMRUFWRURBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJMRUFWRUZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU9DVExEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU9DVExGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSVBSRVNPTFZFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSVNTVUVSQ0VSVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfS0VZUEFTU1dELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfS1JCTEVWRUwuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9DQUxQT1JULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9DQUxQT1JUUkFOR0UuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9XX1NQRUVEX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9BVVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9GUk9NLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9SQ1BULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYQ09OTkVDVFMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYRklMRVNJWkUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYRklMRVNJWkVfTEFSR0UuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYUkVESVJTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVUUkMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVUUkNfRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9CT0RZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9QUk9HUkVTUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9QUk9YWS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9TSUdOQUwuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUEFTU1dPUkQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUEFUSF9BU19JUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUElOTkVEUFVCTElDS0VZLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUElQRVdBSVQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVFFVT1RFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVFJFRElSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJFUVVPVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJJVkFURS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPR1JFU1NEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPVE9DT0xTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlBVVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlIRUFERVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlQQVNTV09SRC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlQT1JULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlUWVBFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlVU0VSUFdELmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFVULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUVVPVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkFORE9NX0ZJTEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkFOR0UuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVBRERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVBREZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVGRVJFUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTT0xWRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTVU1FX0ZST00uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9SRVFVRVNULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TRVNTSU9OX0lELmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9UUkFOU1BPUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0FTTF9JUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VFS0RBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VFS0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VSVklDRV9OQU1FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0hBUkUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS09QVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS09QVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0FVVEhfVFlQRVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tFWURBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMQ0VSVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMQ0VSVFRZUEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMRU5HSU5FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMS0VZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMS0VZVFlQRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMVkVSU0lPTi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NUWF9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0VOQUJMRV9OUE4uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0ZBTFNFU1RBUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX09QVElPTlMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUy5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RERVJSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX0RFUEVORFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX0RFUEVORFNfRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX1dFSUdIVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0ZBU1RPUEVOLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBBTElWRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBJRExFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBJTlRWTC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX05PREVMQVkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEVMTkVUT1BUSU9OUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEZUUF9CTEtTSVpFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEZUUF9OT19PUFRJT05TLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRUNPTkRJVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRU9VVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRU9VVF9NUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRVZBTFVFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9QQVNTV09SRC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9UWVBFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVFJBTlNGRVJURVhULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVBMT0FELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVJMLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUkFHRU5ULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUk5BTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUlBXRC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFX1NTTC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVkVSQk9TRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV0lMRENBUkRNQVRDSC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV1JJVEVEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV1JJVEVGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWEZFUklORk9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWEZFUklORk9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWE9BVVRIMl9CRUFSRVIuaHRtbAogCi1QREZQQUdFUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLnBkZiBDVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMucGRmCVwKLSBDVVJMT1BUX0FERFJFU1NfU0NPUEUucGRmIENVUkxPUFRfQVBQRU5ELnBkZiBDVVJMT1BUX0FVVE9SRUZFUkVSLnBkZglcCi0gQ1VSTE9QVF9CVUZGRVJTSVpFLnBkZiBDVVJMT1BUX0NBSU5GTy5wZGYgQ1VSTE9QVF9DQVBBVEgucGRmCQlcCi0gQ1VSTE9QVF9DRVJUSU5GTy5wZGYgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfQ0hVTktfREFUQS5wZGYgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLnBkZiBDVVJMT1BUX0NMT1NFU09DS0VURlVOQ1RJT04ucGRmCQlcCi0gQ1VSTE9QVF9DT05ORUNUX09OTFkucGRmIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQucGRmCQkJXAotIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMucGRmIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04ucGRmCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLnBkZgkJCQkJXAotIENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLnBkZiBDVVJMT1BUX0NPT0tJRS5wZGYJCVwKLSBDVVJMT1BUX0NPT0tJRUZJTEUucGRmIENVUkxPUFRfQ09PS0lFSkFSLnBkZiBDVVJMT1BUX0NPT0tJRUxJU1QucGRmCVwKLSBDVVJMT1BUX0NPT0tJRVNFU1NJT04ucGRmIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMucGRmIENVUkxPUFRfQ1JMRi5wZGYJXAotIENVUkxPUFRfQ1JMRklMRS5wZGYgQ1VSTE9QVF9DVVNUT01SRVFVRVNULnBkZiBDVVJMT1BUX0RFQlVHREFUQS5wZGYJXAotIENVUkxPUFRfREVCVUdGVU5DVElPTi5wZGYgQ1VSTE9QVF9ESVJMSVNUT05MWS5wZGYJCQlcCi0gQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC5wZGYgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLnBkZgkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5wZGYgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LnBkZgkJCVwKLSBDVVJMT1BUX0ROU19TRVJWRVJTLnBkZiBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLnBkZgkJXAotIENVUkxPUFRfRUdEU09DS0VULnBkZiBDVVJMT1BUX0VSUk9SQlVGRkVSLnBkZgkJCQlcCi0gQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMucGRmIENVUkxPUFRfRkFJTE9ORVJST1IucGRmCQlcCi0gQ1VSTE9QVF9GSUxFVElNRS5wZGYgQ1VSTE9QVF9GTk1BVENIX0RBVEEucGRmCQkJCVwKLSBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04ucGRmIENVUkxPUFRfRk9MTE9XTE9DQVRJT04ucGRmCQlcCi0gQ1VSTE9QVF9GT1JCSURfUkVVU0UucGRmIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5wZGYJCQlcCi0gQ1VSTE9QVF9GVFBfQUNDT1VOVC5wZGYgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi5wZGYJCVwKLSBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLnBkZiBDVVJMT1BUX0ZUUF9GSUxFTUVUSE9ELnBkZgkJXAotIENVUkxPUFRfRlRQUE9SVC5wZGYgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC5wZGYJCQlcCi0gQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLnBkZiBDVVJMT1BUX0ZUUFNTTEFVVEgucGRmCQkJXAotIENVUkxPUFRfRlRQX1NTTF9DQ0MucGRmIENVUkxPUFRfRlRQX1VTRV9FUFJULnBkZgkJCVwKLSBDVVJMT1BUX0ZUUF9VU0VfRVBTVi5wZGYgQ1VSTE9QVF9GVFBfVVNFX1BSRVQucGRmCQkJXAotIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04ucGRmIENVUkxPUFRfSEVBREVSLnBkZgkJCVwKLSBDVVJMT1BUX0hFQURFUkRBVEEucGRmIENVUkxPUFRfSEVBREVSRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfSEVBREVST1BULnBkZiBDVVJMT1BUX0hUVFAyMDBBTElBU0VTLnBkZiBDVVJMT1BUX0hUVFBBVVRILnBkZglcCi0gQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcucGRmIENVUkxPUFRfSFRUUEdFVC5wZGYJCQlcCi0gQ1VSTE9QVF9IVFRQSEVBREVSLnBkZiBDVVJMT1BUX0hUVFBQT1NULnBkZgkJCQlcCi0gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwucGRmIENVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy5wZGYJCVwKLSBDVVJMT1BUX0hUVFBfVkVSU0lPTi5wZGYgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEgucGRmCQlcCi0gQ1VSTE9QVF9JTkZJTEVTSVpFLnBkZiBDVVJMT1BUX0lORklMRVNJWkVfTEFSR0UucGRmCQkJXAotIENVUkxPUFRfSU5URVJGQUNFLnBkZiBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLnBkZgkJCVwKLSBDVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi5wZGYgQ1VSTE9QVF9JT0NUTERBVEEucGRmCQkJXAotIENVUkxPUFRfSU9DVExGVU5DVElPTi5wZGYgQ1VSTE9QVF9JUFJFU09MVkUucGRmIENVUkxPUFRfSVNTVUVSQ0VSVC5wZGYJXAotIENVUkxPUFRfS0VZUEFTU1dELnBkZiBDVVJMT1BUX0tSQkxFVkVMLnBkZiBDVVJMT1BUX0xPQ0FMUE9SVC5wZGYJXAotIENVUkxPUFRfTE9DQUxQT1JUUkFOR0UucGRmIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5wZGYJCQlcCi0gQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQucGRmIENVUkxPUFRfTE9XX1NQRUVEX1RJTUUucGRmCQkJXAotIENVUkxPUFRfTUFJTF9BVVRILnBkZiBDVVJMT1BUX01BSUxfRlJPTS5wZGYgQ1VSTE9QVF9NQUlMX1JDUFQucGRmCVwKLSBDVVJMT1BUX01BWENPTk5FQ1RTLnBkZiBDVVJMT1BUX01BWEZJTEVTSVpFLnBkZgkJCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFX0xBUkdFLnBkZiBDVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFLnBkZgkJXAotIENVUkxPUFRfTUFYUkVESVJTLnBkZiBDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLnBkZgkJCVwKLSBDVVJMT1BUX05FVFJDLnBkZiBDVVJMT1BUX05FVFJDX0ZJTEUucGRmCQkJCVwKLSBDVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMucGRmIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMucGRmCQlcCi0gQ1VSTE9QVF9OT0JPRFkucGRmIENVUkxPUFRfTk9QUk9HUkVTUy5wZGYgQ1VSTE9QVF9OT1BST1hZLnBkZgkJXAotIENVUkxPUFRfTk9TSUdOQUwucGRmIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEucGRmCQkJXAotIENVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLnBkZiBDVVJMT1BUX1BBU1NXT1JELnBkZgkJCVwKLSBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS5wZGYgQ1VSTE9QVF9QT1JULnBkZiBDVVJMT1BUX1BPU1QucGRmCQlcCi0gQ1VSTE9QVF9QT1NURklFTERTLnBkZiBDVVJMT1BUX1BPU1RGSUVMRFNJWkUucGRmCQkJXAotIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRS5wZGYgQ1VSTE9QVF9QT1NUUVVPVEUucGRmCQkJXAotIENVUkxPUFRfUE9TVFJFRElSLnBkZiBDVVJMT1BUX1BSRVFVT1RFLnBkZiBDVVJMT1BUX1BSSVZBVEUucGRmCQlcCi0gQ1VSTE9QVF9QUk9HUkVTU0RBVEEucGRmIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9UT0NPTFMucGRmIENVUkxPUFRfUFJPWFkucGRmIENVUkxPUFRfUFJPWFlBVVRILnBkZgkJXAotIENVUkxPUFRfUFJPWFlIRUFERVIucGRmIENVUkxPUFRfUFJPWFlQQVNTV09SRC5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVBPUlQucGRmIENVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVRZUEUucGRmIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVVTRVJQV0QucGRmIENVUkxPUFRfUFVULnBkZiBDVVJMT1BUX1FVT1RFLnBkZgkJXAotIENVUkxPUFRfUkFORE9NX0ZJTEUucGRmIENVUkxPUFRfUkFOR0UucGRmIENVUkxPUFRfUkVBRERBVEEucGRmCQlcCi0gQ1VSTE9QVF9SRUFERlVOQ1RJT04ucGRmIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLnBkZgkJCVwKLSBDVVJMT1BUX1JFRkVSRVIucGRmIENVUkxPUFRfUkVTT0xWRS5wZGYgQ1VSTE9QVF9SRVNVTUVfRlJPTS5wZGYJXAotIENVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UucGRmIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5wZGYJCVwKLSBDVVJMT1BUX1JUU1BfUkVRVUVTVC5wZGYgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLnBkZgkJCVwKLSBDVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC5wZGYgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkucGRmCQlcCi0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC5wZGYgQ1VSTE9QVF9TQVNMX0lSLnBkZiBDVVJMT1BUX1NFRUtEQVRBLnBkZglcCi0gQ1VSTE9QVF9TRUVLRlVOQ1RJT04ucGRmIENVUkxPUFRfU0hBUkUucGRmIENVUkxPUFRfU09DS09QVERBVEEucGRmCVwKLSBDVVJMT1BUX1NPQ0tPUFRGVU5DVElPTi5wZGYgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy5wZGYJCVwKLSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS5wZGYgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy5wZGYJCVwKLSBDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LnBkZiBDVVJMT1BUX1NTSF9LRVlEQVRBLnBkZgkJXAotIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLnBkZiBDVVJMT1BUX1NTSF9LTk9XTkhPU1RTLnBkZgkJCVwKLSBDVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUucGRmIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLnBkZgkJXAotIENVUkxPUFRfU1NMQ0VSVC5wZGYgQ1VSTE9QVF9TU0xDRVJUVFlQRS5wZGYJCQkJXAotIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNULnBkZiBDVVJMT1BUX1NTTF9DVFhfREFUQS5wZGYJCQlcCi0gQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLnBkZiBDVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi5wZGYJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfTlBOLnBkZiBDVVJMT1BUX1NTTEVOR0lORS5wZGYJCQlcCi0gQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC5wZGYgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5wZGYJCVwKLSBDVVJMT1BUX1NTTEtFWS5wZGYgQ1VSTE9QVF9TU0xLRVlUWVBFLnBkZiBDVVJMT1BUX1NTTF9PUFRJT05TLnBkZglcCi0gQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLnBkZiBDVVJMT1BUX1NTTF9WRVJJRllIT1NULnBkZgkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIucGRmIENVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUy5wZGYJCVwKLSBDVVJMT1BUX1NTTFZFUlNJT04ucGRmIENVUkxPUFRfU1RERVJSLnBkZiBDVVJMT1BUX1RDUF9LRUVQQUxJVkUucGRmCVwKLSBDVVJMT1BUX1RDUF9LRUVQSURMRS5wZGYgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLnBkZgkJCVwKLSBDVVJMT1BUX1RDUF9OT0RFTEFZLnBkZiBDVVJMT1BUX1RFTE5FVE9QVElPTlMucGRmCQkJXAotIENVUkxPUFRfVEZUUF9CTEtTSVpFLnBkZiBDVVJMT1BUX1RJTUVDT05ESVRJT04ucGRmIENVUkxPUFRfVElNRU9VVC5wZGYJXAotIENVUkxPUFRfVElNRU9VVF9NUy5wZGYgQ1VSTE9QVF9USU1FVkFMVUUucGRmCQkJCVwKLSBDVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQucGRmIENVUkxPUFRfVExTQVVUSF9UWVBFLnBkZgkJCVwKLSBDVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUucGRmIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcucGRmCQlcCi0gQ1VSTE9QVF9UUkFOU0ZFUlRFWFQucGRmIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEgucGRmCQkJXAotIENVUkxPUFRfVVBMT0FELnBkZiBDVVJMT1BUX1VSTC5wZGYgQ1VSTE9QVF9VU0VSQUdFTlQucGRmCQlcCi0gQ1VSTE9QVF9VU0VSTkFNRS5wZGYgQ1VSTE9QVF9VU0VSUFdELnBkZiBDVVJMT1BUX1VTRV9TU0wucGRmCQlcCi0gQ1VSTE9QVF9WRVJCT1NFLnBkZiBDVVJMT1BUX1dJTERDQVJETUFUQ0gucGRmIENVUkxPUFRfV1JJVEVEQVRBLnBkZglcCi0gQ1VSTE9QVF9XUklURUZVTkNUSU9OLnBkZiBDVVJMT1BUX1hGRVJJTkZPREFUQS5wZGYJCQlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLnBkZiBDVVJMT1BUX1hPQVVUSDJfQkVBUkVSLnBkZgkJXAotIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUucGRmCQkJCQlcCi0gQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLnBkZiBDVVJMTU9QVF9NQVhDT05ORUNUUy5wZGYJXAotIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLnBkZiBDVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RILnBkZglcCi0gQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLnBkZiBDVVJMTU9QVF9QSVBFTElOSU5HLnBkZgkJXAotIENVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLnBkZiBDVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwucGRmCVwKLSBDVVJMTU9QVF9TT0NLRVREQVRBLnBkZiBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTi5wZGYJCQlcCi0gQ1VSTE1PUFRfVElNRVJEQVRBLnBkZiBDVVJMTU9QVF9USU1FUkZVTkNUSU9OLnBkZgkJCVwKLSBDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEgucGRmIENVUkxPUFRfUEFUSF9BU19JUy5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUucGRmIENVUkxPUFRfU0VSVklDRV9OQU1FLnBkZgkJXAotIENVUkxPUFRfUElQRVdBSVQucGRmCitQREZQQUdFUyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQUNUSVZFU09DS0VULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ0VSVElORk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OTkVDVF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQucGRmICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELnBkZiAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9UWVBFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09PS0lFTElTVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRUZGRUNUSVZFX1VSTC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRklMRVRJTUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEgucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSEVBREVSX1NJWkUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTEFTVFNPQ0tFVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfSVAucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfUE9SVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTlVNX0NPTk5FQ1RTLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fT1NfRVJSTk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9JUC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9QT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJVkFURS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVVJMLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVRVUVTVF9TSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVTUE9OU0VfQ09ERS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9ET1dOTE9BRC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9VUExPQUQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfVVBMT0FELnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX0VOR0lORVMucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NFU1NJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NTTF9QVFIucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVE9UQUxfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS5wZGYgICAgICAgICBcCisgQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLnBkZiAgICAgICBcCisgQ1VSTE1PUFRfTUFYQ09OTkVDVFMucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMucGRmICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLnBkZiAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklORy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwucGRmICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSERBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJEQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BRERSRVNTX1NDT1BFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BUFBFTkQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BVVRPUkVGRVJFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9CVUZGRVJTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQUlORk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQVBBVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DRVJUSU5GTy5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19EQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX09OTFkucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX1RPLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi5wZGYgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04ucGRmICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVGSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVKQVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVMSVNULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DVVNUT01SRVFVRVNULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ESVJMSVNUT05MWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfU0VSVkVSUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FR0RTT0NLRVQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FUlJPUkJVRkZFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GQUlMT05FUlJPUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GSUxFVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT1JCSURfUkVVU0UucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GUkVTSF9DT05ORUNULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBQT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBTU0xBVVRILnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUNDT1VOVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU1NMX0NDQy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQUlQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQU1YucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX1BSRVQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJEQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJGVU5DVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJPUFQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQQVVUSC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQR0VULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQSEVBREVSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUE9TVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HLnBkZiAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1ZFUlNJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEgucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkZBQ0UucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTERBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JUFJFU09MVkUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JU1NVRVJDRVJULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LRVlQQVNTV0QucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LUkJMRVZFTC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0FVVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0ZST00ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX1JDUFQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhDT05ORUNUUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhSRURJUlMucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQy5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQ19GSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT0JPRFkucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST0dSRVNTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST1hZLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1NJR05BTC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVNTV09SRC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVRIX0FTX0lTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSVBFV0FJVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUVVPVEUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUkVESVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUkVRVU9URS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUklWQVRFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9UT0NPTFMucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUFVVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUhFQURFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBBU1NXT1JELnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBPUlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVRZUEUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJQV0QucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QVVQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9RVU9URS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5ET01fRklMRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5HRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFEREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFERlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUZFUkVSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNPTFZFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1JFUVVFU1QucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TQVNMX0lSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRVJWSUNFX05BTUUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TSEFSRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJUVFlQRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVkucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVlUWVBFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xWRVJTSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfT1BUSU9OUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVERFUlIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fV0VJR0hULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElETEUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfTk9ERUxBWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URUxORVRPUFRJT05TLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX0JMS1NJWkUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX05PX09QVElPTlMucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FQ09ORElUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VUX01TLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FVkFMVUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1RZUEUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUExPQUQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUkwucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSQUdFTlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSTkFNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSUFdELnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VfU1NMLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9WRVJCT1NFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XSUxEQ0FSRE1BVENILnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURURBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURUZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi5wZGYKIAogQ0xFQU5GSUxFUyA9ICQoSFRNTFBBR0VTKSAkKFBERlBBR0VTKQogCiBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykgJChIVE1MUEFHRVMpICQoUERGUEFHRVMpCi1NQU4ySFRNTD0gcm9mZml0IC0tbWFuZGlyPS4gPCAkPCA+JEAKK01BTjJIVE1MPSByb2ZmaXQgLS1tYW5kaXI9LiAkPCA+JEAKIAogU1VGRklYRVMgPSAuMyAuaHRtbAogCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy90ZW1wbGF0ZS4zIGIvZG9jcy9saWJjdXJsL29wdHMvdGVtcGxhdGUuMwppbmRleCAxODRlNDcxLi43YmEyMjBlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy90ZW1wbGF0ZS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL3RlbXBsYXRlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL3N5bWJvbHMtaW4tdmVyc2lvbnMgYi9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucwppbmRleCA4Mjk5YTUxLi5mYTI2ZWZiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucworKysgYi9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucwpAQCAtNzUsNiArNzUsNyBAQAogQ1VSTEVfRlVOQ1RJT05fTk9UX0ZPVU5EICAgICAgICA3LjEKIENVUkxFX0dPVF9OT1RISU5HICAgICAgICAgICAgICAgNy45LjEKIENVUkxFX0hUVFAyICAgICAgICAgICAgICAgICAgICAgNy4zOC4wCitDVVJMRV9IVFRQMl9TVFJFQU0gICAgICAgICAgICAgIDcuNDkuMAogQ1VSTEVfSFRUUF9OT1RfRk9VTkQgICAgICAgICAgICA3LjEKIENVUkxFX0hUVFBfUE9SVF9GQUlMRUQgICAgICAgICAgNy4zICAgICAgICAgICA3LjEyLjAKIENVUkxFX0hUVFBfUE9TVF9FUlJPUiAgICAgICAgICAgNy4xCkBAIC0xNjQsNiArMTY1LDcgQEAKIENVUkxGT1JNX0JVRkZFUkxFTkdUSCAgICAgICAgICAgNy45LjgKIENVUkxGT1JNX0JVRkZFUlBUUiAgICAgICAgICAgICAgNy45LjgKIENVUkxGT1JNX0NPTlRFTlRIRUFERVIgICAgICAgICAgNy45LjMKK0NVUkxGT1JNX0NPTlRFTlRMRU4gICAgICAgICAgICAgNy40Ni4wCiBDVVJMRk9STV9DT05URU5UU0xFTkdUSCAgICAgICAgIDcuOQogQ1VSTEZPUk1fQ09OVEVOVFRZUEUgICAgICAgICAgICA3LjkKIENVUkxGT1JNX0NPUFlDT05URU5UUyAgICAgICAgICAgNy45CkBAIC0xOTksNiArMjAxLDcgQEAKIENVUkxHU1NBUElfREVMRUdBVElPTl9QT0xJQ1lfRkxBRyA3LjIyLjAKIENVUkxIRUFERVJfU0VQQVJBVEUgICAgICAgICAgICAgNy4zNy4wCiBDVVJMSEVBREVSX1VOSUZJRUQgICAgICAgICAgICAgIDcuMzcuMAorQ1VSTElORk9fQUNUSVZFU09DS0VUICAgICAgICAgICA3LjQ1LjAKIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSAgICAgICAgNy4xOS4wCiBDVVJMSU5GT19DRVJUSU5GTyAgICAgICAgICAgICAgIDcuMTkuMQogQ1VSTElORk9fQ09ORElUSU9OX1VOTUVUICAgICAgICA3LjE5LjQKQEAgLTI0Nyw2ICsyNTAsNyBAQAogQ1VSTElORk9fU0laRV9ET1dOTE9BRCAgICAgICAgICA3LjQuMQogQ1VSTElORk9fU0laRV9VUExPQUQgICAgICAgICAgICA3LjQuMQogQ1VSTElORk9fU0xJU1QgICAgICAgICAgICAgICAgICA3LjEyLjMKK0NVUkxJTkZPX1NPQ0tFVCAgICAgICAgICAgICAgICAgNy40NS4wCiBDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19TUEVFRF9VUExPQUQgICAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19TU0xfREFUQV9JTiAgICAgICAgICAgIDcuMTIuMQpAQCAtMjU2LDcgKzI2MCw4IEBACiBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgICAgIDcuOS4yCiBDVVJMSU5GT19TVFJJTkcgICAgICAgICAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19URVhUICAgICAgICAgICAgICAgICAgIDcuOS42Ci1DVVJMSU5GT19UTFNfU0VTU0lPTiAgICAgICAgICAgIDcuMzQuMAorQ1VSTElORk9fVExTX1NFU1NJT04gICAgICAgICAgICA3LjM0LjAgICAgICAgIDcuNDguMAorQ1VSTElORk9fVExTX1NTTF9QVFIgICAgICAgICAgICA3LjQ4LjAKIENVUkxJTkZPX1RPVEFMX1RJTUUgICAgICAgICAgICAgNy40LjEKIENVUkxJTkZPX1RZUEVNQVNLICAgICAgICAgICAgICAgNy40LjEKIENVUkxJT0NNRF9OT1AgICAgICAgICAgICAgICAgICAgNy4xMi4zCkBAIC0yODQsNiArMjg5LDggQEAKIENVUkxNT1BUX1BJUEVMSU5JTkcgICAgICAgICAgICAgNy4xNi4wCiBDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTCAgIDcuMzAuMAogQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMICAgICA3LjMwLjAKK0NVUkxNT1BUX1BVU0hEQVRBICAgICAgICAgICAgICAgNy40NC4wCitDVVJMTU9QVF9QVVNIRlVOQ1RJT04gICAgICAgICAgIDcuNDQuMAogQ1VSTE1PUFRfU09DS0VUREFUQSAgICAgICAgICAgICA3LjE1LjQKIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OICAgICAgICAgNy4xNS40CiBDVVJMTU9QVF9USU1FUkRBVEEgICAgICAgICAgICAgIDcuMTYuMApAQCAtMzA0LDYgKzMxMSw3IEBACiBDVVJMT1BUVFlQRV9MT05HICAgICAgICAgICAgICAgIDcuMQogQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQgICAgICAgICA3LjEKIENVUkxPUFRUWVBFX09GRl9UICAgICAgICAgICAgICAgNy4xMS4wCitDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCAgICAgICAgIDcuNDYuMAogQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TICAgICAgICA3LjI0LjAKIENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HICAgICAgICAgNy4yMS42CiBDVVJMT1BUX0FERFJFU1NfU0NPUEUgICAgICAgICAgIDcuMTkuMApAQCAtMzIzLDYgKzMzMSw3IEBACiBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUICAgICAgICAgIDcuNwogQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUyAgICAgICA3LjE2LjIKIENVUkxPUFRfQ09OTkVDVF9PTkxZICAgICAgICAgICAgNy4xNS4yCitDVVJMT1BUX0NPTk5FQ1RfVE8gICAgICAgICAgICAgIDcuNDkuMAogQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTiA3LjE1LjQKIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04gNy4xNS40CiBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTiA3LjE1LjQKQEAgLTMzNyw2ICszNDYsNyBAQAogQ1VSTE9QVF9DVVNUT01SRVFVRVNUICAgICAgICAgICA3LjEKIENVUkxPUFRfREVCVUdEQVRBICAgICAgICAgICAgICAgNy45LjYKIENVUkxPUFRfREVCVUdGVU5DVElPTiAgICAgICAgICAgNy45LjYKK0NVUkxPUFRfREVGQVVMVF9QUk9UT0NPTCAgICAgICAgNy40NS4wCiBDVVJMT1BUX0RJUkxJU1RPTkxZICAgICAgICAgICAgIDcuMTcuMAogQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCAgICAgICA3LjkuMwogQ1VSTE9QVF9ETlNfSU5URVJGQUNFICAgICAgICAgICA3LjMzLjAKQEAgLTQ4NCw3ICs0OTQsNyBAQAogQ1VSTE9QVF9TT0NLT1BUREFUQSAgICAgICAgICAgICA3LjE2LjAKIENVUkxPUFRfU09DS09QVEZVTkNUSU9OICAgICAgICAgNy4xNi4wCiBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDICAgICAgIDcuMTkuNAotQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgICA3LjE5LjQKK0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFICAgNy4xOS40ICAgICAgICA3LjQ5LjAKIENVUkxPUFRfU09VUkNFX0hPU1QgICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKIENVUkxPUFRfU09VUkNFX1BBVEggICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKIENVUkxPUFRfU09VUkNFX1BPUlQgICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKQEAgLTUyMSwxMiArNTMxLDE3IEBACiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSICAgICAgICAgIDcuNC4yCiBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMgICAgICAgIDcuNDEuMAogQ1VSTE9QVF9TVERFUlIgICAgICAgICAgICAgICAgICA3LjEKK0NVUkxPUFRfU1RSRUFNX0RFUEVORFMgICAgICAgICAgNy40Ni4wCitDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgICAgICAgIDcuNDYuMAorQ1VSTE9QVF9TVFJFQU1fV0VJR0hUICAgICAgICAgICA3LjQ2LjAKIENVUkxPUFRfVENQX0tFRVBBTElWRSAgICAgICAgICAgNy4yNS4wCiBDVVJMT1BUX1RDUF9LRUVQSURMRSAgICAgICAgICAgIDcuMjUuMAogQ1VSTE9QVF9UQ1BfS0VFUElOVFZMICAgICAgICAgICA3LjI1LjAKIENVUkxPUFRfVENQX05PREVMQVkgICAgICAgICAgICAgNy4xMS4yCitDVVJMT1BUX1RDUF9GQVNUT1BFTiAgICAgICAgICAgIDcuNDkuMAogQ1VSTE9QVF9URUxORVRPUFRJT05TICAgICAgICAgICA3LjcKIENVUkxPUFRfVEZUUF9CTEtTSVpFICAgICAgICAgICAgNy4xOS40CitDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUyAgICAgICAgIDcuNDguMAogQ1VSTE9QVF9USU1FQ09ORElUSU9OICAgICAgICAgICA3LjEKIENVUkxPUFRfVElNRU9VVCAgICAgICAgICAgICAgICAgNy4xCiBDVVJMT1BUX1RJTUVPVVRfTVMgICAgICAgICAgICAgIDcuMTYuMgpAQCAtNjIwLDE3ICs2MzUsMjIgQEAKIENVUkxTU0hfQVVUSF9QQVNTV09SRCAgICAgICAgICAgNy4xNi4xCiBDVVJMU1NIX0FVVEhfUFVCTElDS0VZICAgICAgICAgIDcuMTYuMQogQ1VSTFNTTEJBQ0tFTkRfQVhUTFMgICAgICAgICAgICA3LjM4LjAKK0NVUkxTU0xCQUNLRU5EX0JPUklOR1NTTCAgICAgICAgNy40OS4wCiBDVVJMU1NMQkFDS0VORF9DWUFTU0wgICAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfREFSV0lOU1NMICAgICAgICA3LjM0LjAKIENVUkxTU0xCQUNLRU5EX0dOVVRMUyAgICAgICAgICAgNy4zNC4wCiBDVVJMU1NMQkFDS0VORF9HU0tJVCAgICAgICAgICAgIDcuMzQuMAorQ1VSTFNTTEJBQ0tFTkRfTElCUkVTU0wgICAgICAgICA3LjQ5LjAKK0NVUkxTU0xCQUNLRU5EX01CRURUTFMgICAgICAgICAgNy40Ni4wCiBDVVJMU1NMQkFDS0VORF9OT05FICAgICAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfTlNTICAgICAgICAgICAgICA3LjM0LjAKIENVUkxTU0xCQUNLRU5EX09QRU5TU0wgICAgICAgICAgNy4zNC4wCiBDVVJMU1NMQkFDS0VORF9QT0xBUlNTTCAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfUVNPU1NMICAgICAgICAgICA3LjM0LjAgICAgICAgIC0gICAgICAgICAgIDcuMzguMQogQ1VSTFNTTEJBQ0tFTkRfU0NIQU5ORUwgICAgICAgICA3LjM0LjAKK0NVUkxTU0xCQUNLRU5EX1dPTEZTU0wgICAgICAgICAgNy40OS4wCiBDVVJMU1NMT1BUX0FMTE9XX0JFQVNUICAgICAgICAgIDcuMjUuMAorQ1VSTFNTTE9QVF9OT19SRVZPS0UgICAgICAgICAgICA3LjQ0LjAKIENVUkxVU0VTU0xfQUxMICAgICAgICAgICAgICAgICAgNy4xNy4wCiBDVVJMVVNFU1NMX0NPTlRST0wgICAgICAgICAgICAgIDcuMTcuMAogQ1VSTFVTRVNTTF9OT05FICAgICAgICAgICAgICAgICA3LjE3LjAKQEAgLTY0OCw2ICs2NjgsNyBAQAogQ1VSTF9DU0VMRUNUX0VSUiAgICAgICAgICAgICAgICA3LjE2LjMKIENVUkxfQ1NFTEVDVF9JTiAgICAgICAgICAgICAgICAgNy4xNi4zCiBDVVJMX0NTRUxFQ1RfT1VUICAgICAgICAgICAgICAgIDcuMTYuMworQ1VSTF9ESURfTUVNT1JZX0ZVTkNfVFlQRURFRlMgICA3LjQ5LjAKIENVUkxfRUFTWV9OT05FICAgICAgICAgICAgICAgICAgNy4xNC4wICAgICAgICAtICAgICAgICAgICA3LjE1LjQKIENVUkxfRUFTWV9USU1FT1VUICAgICAgICAgICAgICAgNy4xNC4wICAgICAgICAtICAgICAgICAgICA3LjE1LjQKIENVUkxfRVJST1JfU0laRSAgICAgICAgICAgICAgICAgNy4xCkBAIC02NjgsMTAgKzY4OSwyMCBAQAogQ1VSTF9HTE9CQUxfTk9USElORyAgICAgICAgICAgICA3LjgKIENVUkxfR0xPQkFMX1NTTCAgICAgICAgICAgICAgICAgNy44CiBDVVJMX0dMT0JBTF9XSU4zMiAgICAgICAgICAgICAgIDcuOC4xCitDVVJMX0hUVFBQT1NUX0JVRkZFUiAgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9DQUxMQkFDSyAgICAgICAgICA3LjQ2LjAKK0NVUkxfSFRUUFBPU1RfRklMRU5BTUUgICAgICAgICAgNy40Ni4wCitDVVJMX0hUVFBQT1NUX0xBUkdFICAgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9QVFJCVUZGRVIgICAgICAgICA3LjQ2LjAKK0NVUkxfSFRUUFBPU1RfUFRSQ09OVEVOVFMgICAgICAgNy40Ni4wCitDVVJMX0hUVFBQT1NUX1BUUk5BTUUgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9SRUFERklMRSAgICAgICAgICA3LjQ2LjAKIENVUkxfSFRUUF9WRVJTSU9OXzFfMCAgICAgICAgICAgNy45LjEKIENVUkxfSFRUUF9WRVJTSU9OXzFfMSAgICAgICAgICAgNy45LjEKLUNVUkxfSFRUUF9WRVJTSU9OXzJfMCAgICAgICAgICAgNy4zMy4wCiBDVVJMX0hUVFBfVkVSU0lPTl8yICAgICAgICAgICAgIDcuNDMuMAorQ1VSTF9IVFRQX1ZFUlNJT05fMl8wICAgICAgICAgICA3LjMzLjAKK0NVUkxfSFRUUF9WRVJTSU9OXzJUTFMgICAgICAgICAgNy40Ny4wCitDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRSA3LjQ5LjAKIENVUkxfSFRUUF9WRVJTSU9OX05PTkUgICAgICAgICAgNy45LjEKIENVUkxfSVBSRVNPTFZFX1Y0ICAgICAgICAgICAgICAgNy4xMC44CiBDVVJMX0lQUkVTT0xWRV9WNiAgICAgICAgICAgICAgIDcuMTAuOApAQCAtNzAyLDYgKzczMyw4IEBACiBDVVJMX1BPTExfUkVNT1ZFICAgICAgICAgICAgICAgIDcuMTQuMAogQ1VSTF9QUk9HUkVTU19CQVIgICAgICAgICAgICAgICA3LjEuMSAgICAgICAgIC0gICAgICAgICAgIDcuNC4xCiBDVVJMX1BST0dSRVNTX1NUQVRTICAgICAgICAgICAgIDcuMS4xICAgICAgICAgLSAgICAgICAgICAgNy40LjEKK0NVUkxfUFVTSF9ERU5ZICAgICAgICAgICAgICAgICAgNy40NC4wCitDVVJMX1BVU0hfT0sgICAgICAgICAgICAgICAgICAgIDcuNDQuMAogQ1VSTF9SRUFERlVOQ19BQk9SVCAgICAgICAgICAgICA3LjEyLjEKIENVUkxfUkVBREZVTkNfUEFVU0UgICAgICAgICAgICAgNy4xOC4wCiBDVVJMX1JFRElSX0dFVF9BTEwgICAgICAgICAgICAgIDcuMTkuMQpAQCAtNzU3LDYgKzc5MCw3IEBACiBDVVJMX1ZFUlNJT05fTElCWiAgICAgICAgICAgICAgIDcuMTAKIENVUkxfVkVSU0lPTl9OVExNICAgICAgICAgICAgICAgNy4xMC42CiBDVVJMX1ZFUlNJT05fTlRMTV9XQiAgICAgICAgICAgIDcuMjIuMAorQ1VSTF9WRVJTSU9OX1BTTCAgICAgICAgICAgICAgICA3LjQ3LjAKIENVUkxfVkVSU0lPTl9TUE5FR08gICAgICAgICAgICAgNy4xMC44CiBDVVJMX1ZFUlNJT05fU1NMICAgICAgICAgICAgICAgIDcuMTAKIENVUkxfVkVSU0lPTl9TU1BJICAgICAgICAgICAgICAgNy4xMy4yCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvc3ltYm9scy5wbCBiL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCmluZGV4IGE3Yjc2ZTIuLmNmY2VjZDAgMTAwNzU1Ci0tLSBhL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCisrKyBiL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbWstY2EtYnVuZGxlLjEgYi9kb2NzL21rLWNhLWJ1bmRsZS4xCmluZGV4IDE2NGM5YzMuLjAxN2JiODIgMTAwNjQ0Ci0tLSBhL2RvY3MvbWstY2EtYnVuZGxlLjEKKysrIGIvZG9jcy9tay1jYS1idW5kbGUuMQpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMDQsNyArMTA0LDcgQEAKIC5CUiBjdXJsICgxKQogLlNIIEhJU1RPUlkKIFxmQm1rLWNhLWJ1bmRsZVxmUCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIHRoYXQgaXMgc2hpcHBlZCBhcyBwYXJ0IG9mIGV2ZXJ5Ci1jdXJsIGFuZCBsaWJjdXJsIHJlbGVhc2UgKHNlZSBodHRwOi8vY3VybC5oYXh4LnNlLykuIEl0IHdhcyBvcmlnaW5hbGx5IGJhc2VkCitjdXJsIGFuZCBsaWJjdXJsIHJlbGVhc2UgKHNlZSBodHRwczovL2N1cmwuaGF4eC5zZS8pLiBJdCB3YXMgb3JpZ2luYWxseSBiYXNlZAogb24gdGhlIHBhcnNlLWNlcnRzIHNjcmlwdCB3cml0dGVuIGJ5IFJvbGFuZCBLcmlrYXZhIGFuZCB3YXMgbGF0ZXIgbXVjaAogaW1wcm92ZWQgYnkgR3VlbnRlciBLbmF1Zi4gIFRoaXMgbWFudWFsIHBhZ2Ugd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IEphbgogU2NoYXVtYW5uIFwmPGpzY2hhdW1hQG5ldG1laXN0ZXIub3JnPi4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC8uZ2l0aWdub3JlIGIvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKaW5kZXggNWYzYmMzYy4uMjI4YTk2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKKysrIGIvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKQEAgLTEsMyArMSw0IEBACitjdXJsYnVpbGQuaAorY3VybHZlci5oLmRpc3QKIHN0YW1wLWgyCiBzdGFtcC1oMwotY3VybHZlci5oLmRpc3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9NYWtlZmlsZS5hbSBiL2luY2x1ZGUvY3VybC9NYWtlZmlsZS5hbQppbmRleCA4NmU4Yjc4Li43YzkyNGZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvTWFrZWZpbGUuYW0KKysrIGIvaW5jbHVkZS9jdXJsL01ha2VmaWxlLmFtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvY3VybC5oIGIvaW5jbHVkZS9jdXJsL2N1cmwuaAppbmRleCBlYWIyZjZlLi41N2U3MTZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybC5oCisrKyBiL2luY2x1ZGUvY3VybC9jdXJsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMCArMjQsMTAgQEAKIAogLyoKICAqIElmIHlvdSBoYXZlIGxpYmN1cmwgcHJvYmxlbXMsIGFsbCBkb2NzIGFuZCBkZXRhaWxzIGFyZSBmb3VuZCBoZXJlOgotICogICBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCisgKiAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCiAgKgogICogY3VybC1saWJyYXJ5IG1haWxpbmcgbGlzdCBzdWJzY3JpcHRpb24gYW5kIHVuc3Vic2NyaXB0aW9uIHdlYiBpbnRlcmZhY2U6Ci0gKiAgIGh0dHA6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCisgKiAgIGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogICovCiAKICNpbmNsdWRlICJjdXJsdmVyLmgiICAgICAgICAgLyogbGliY3VybCB2ZXJzaW9uIGRlZmluZXMgICAqLwpAQCAtNTYsNyArNTYsOCBAQAogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCi0jaWYgIShkZWZpbmVkKF9XSU5TT0NLQVBJXykgfHwgZGVmaW5lZChfV0lOU09DS19IKSB8fCBkZWZpbmVkKF9fTFdJUF9PUFRfSF9fKSkKKyNpZiAhKGRlZmluZWQoX1dJTlNPQ0tBUElfKSB8fCBkZWZpbmVkKF9XSU5TT0NLX0gpIHx8IFwKKyAgICAgIGRlZmluZWQoX19MV0lQX09QVF9IX18pIHx8IGRlZmluZWQoTFdJUF9IRFJfT1BUX0gpKQogLyogVGhlIGNoZWNrIGFib3ZlIHByZXZlbnRzIHRoZSB3aW5zb2NrMiBpbmNsdXNpb24gaWYgd2luc29jay5oIGFscmVhZHkgd2FzCiAgICBpbmNsdWRlZCwgc2luY2UgdGhleSBjYW4ndCBjby1leGlzdCB3aXRob3V0IHByb2JsZW1zICovCiAjaW5jbHVkZSA8d2luc29jazIuaD4KQEAgLTExMiw3ICsxMTMsNyBAQAogCiAjaWZuZGVmIGN1cmxfc29ja2V0X3R5cGVkZWYKIC8qIHNvY2tldCB0eXBlZGVmICovCi0jaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pCisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pICYmICFkZWZpbmVkKExXSVBfSERSX09QVF9IKQogdHlwZWRlZiBTT0NLRVQgY3VybF9zb2NrZXRfdDsKICNkZWZpbmUgQ1VSTF9TT0NLRVRfQkFEIElOVkFMSURfU09DS0VUCiAjZWxzZQpAQCAtMTI3LDcgKzEyOCw4IEBACiAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBwb2ludGVyIHRvIGFsbG9jYXRlZCBuYW1lICovCiAgIGxvbmcgbmFtZWxlbmd0aDsgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgbmFtZSBsZW5ndGggKi8KICAgY2hhciAqY29udGVudHM7ICAgICAgICAgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gYWxsb2NhdGVkIGRhdGEgY29udGVudHMgKi8KLSAgbG9uZyBjb250ZW50c2xlbmd0aDsgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjb250ZW50cyBmaWVsZCAqLworICBsb25nIGNvbnRlbnRzbGVuZ3RoOyAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGNvbnRlbnRzIGZpZWxkLCBzZWUgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9IVFRQUE9TVF9MQVJHRSAqLwogICBjaGFyICpidWZmZXI7ICAgICAgICAgICAgICAgICAgICAgLyogcG9pbnRlciB0byBhbGxvY2F0ZWQgYnVmZmVyIGNvbnRlbnRzICovCiAgIGxvbmcgYnVmZmVybGVuZ3RoOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgYnVmZmVyIGZpZWxkICovCiAgIGNoYXIgKmNvbnRlbnR0eXBlOyAgICAgICAgICAgICAgICAvKiBDb250ZW50LVR5cGUgKi8KQEAgLTEzNiwyNCArMTM4LDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB0aGlzIGxpbmsgc2hvdWxkIGxpbmsgdG8gZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyAqLwogICBsb25nIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgICAgLyogYXMgZGVmaW5lZCBiZWxvdyAqLwotI2RlZmluZSBIVFRQUE9TVF9GSUxFTkFNRSAoMTw8MCkgICAgLyogc3BlY2lmaWVkIGNvbnRlbnQgaXMgYSBmaWxlIG5hbWUgKi8KLSNkZWZpbmUgSFRUUFBPU1RfUkVBREZJTEUgKDE8PDEpICAgIC8qIHNwZWNpZmllZCBjb250ZW50IGlzIGEgZmlsZSBuYW1lICovCi0jZGVmaW5lIEhUVFBQT1NUX1BUUk5BTUUgKDE8PDIpICAgICAvKiBuYW1lIGlzIG9ubHkgc3RvcmVkIHBvaW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBmcmVlIGluIGZvcm1mcmVlICovCi0jZGVmaW5lIEhUVFBQT1NUX1BUUkNPTlRFTlRTICgxPDwzKSAvKiBjb250ZW50cyBpcyBvbmx5IHN0b3JlZCBwb2ludGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgZnJlZSBpbiBmb3JtZnJlZSAqLwotI2RlZmluZSBIVFRQUE9TVF9CVUZGRVIgKDE8PDQpICAgICAgLyogdXBsb2FkIGZpbGUgZnJvbSBidWZmZXIgKi8KLSNkZWZpbmUgSFRUUFBPU1RfUFRSQlVGRkVSICgxPDw1KSAgIC8qIHVwbG9hZCBmaWxlIGZyb20gcG9pbnRlciBjb250ZW50cyAqLwotI2RlZmluZSBIVFRQUE9TVF9DQUxMQkFDSyAoMTw8NikgICAgLyogdXBsb2FkIGZpbGUgY29udGVudHMgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyIHJlYWQgY2FsbGJhY2sgdG8gZ2V0IHRoZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcGFzcyB0aGUgZ2l2ZW4gcG9pbnRlciBhcyBjdXN0b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgKi8KKworLyogc3BlY2lmaWVkIGNvbnRlbnQgaXMgYSBmaWxlIG5hbWUgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9GSUxFTkFNRSAoMTw8MCkKKy8qIHNwZWNpZmllZCBjb250ZW50IGlzIGEgZmlsZSBuYW1lICovCisjZGVmaW5lIENVUkxfSFRUUFBPU1RfUkVBREZJTEUgKDE8PDEpCisvKiBuYW1lIGlzIG9ubHkgc3RvcmVkIHBvaW50ZXIgZG8gbm90IGZyZWUgaW4gZm9ybWZyZWUgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9QVFJOQU1FICgxPDwyKQorLyogY29udGVudHMgaXMgb25seSBzdG9yZWQgcG9pbnRlciBkbyBub3QgZnJlZSBpbiBmb3JtZnJlZSAqLworI2RlZmluZSBDVVJMX0hUVFBQT1NUX1BUUkNPTlRFTlRTICgxPDwzKQorLyogdXBsb2FkIGZpbGUgZnJvbSBidWZmZXIgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9CVUZGRVIgKDE8PDQpCisvKiB1cGxvYWQgZmlsZSBmcm9tIHBvaW50ZXIgY29udGVudHMgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9QVFJCVUZGRVIgKDE8PDUpCisvKiB1cGxvYWQgZmlsZSBjb250ZW50cyBieSB1c2luZyB0aGUgcmVndWxhciByZWFkIGNhbGxiYWNrIHRvIGdldCB0aGUgZGF0YSBhbmQKKyAgIHBhc3MgdGhlIGdpdmVuIHBvaW50ZXIgYXMgY3VzdG9tIHBvaW50ZXIgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9DQUxMQkFDSyAoMTw8NikKKy8qIHVzZSBzaXplIGluICdjb250ZW50bGVuJywgYWRkZWQgaW4gNy40Ni4wICovCisjZGVmaW5lIENVUkxfSFRUUFBPU1RfTEFSR0UgKDE8PDcpCiAKICAgY2hhciAqc2hvd2ZpbGVuYW1lOyAgICAgICAgICAgICAgIC8qIFRoZSBmaWxlIG5hbWUgdG8gc2hvdy4gSWYgbm90IHNldCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgZmlsZSBuYW1lIHdpbGwgYmUgdXNlZCAoaWYgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBmaWxlIHBhcnQpICovCiAgIHZvaWQgKnVzZXJwOyAgICAgICAgICAgICAgICAgICAgICAvKiBjdXN0b20gcG9pbnRlciB1c2VkIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFBPU1RfQ0FMTEJBQ0sgcG9zdHMgKi8KKyAgY3VybF9vZmZfdCBjb250ZW50bGVuOyAgICAgICAgICAgIC8qIGFsdGVybmF0aXZlIGxlbmd0aCBvZiBjb250ZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuIFVzZWQgaWYgQ1VSTF9IVFRQUE9TVF9MQVJHRSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LiBBZGRlZCBpbiA3LjQ2LjAgKi8KIH07CiAKIC8qIFRoaXMgaXMgdGhlIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiBjYWxsYmFjayBwcm90by4gSXQgaXMgbm93IGNvbnNpZGVyZWQKQEAgLTM2Miw2ICszNzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRwKTsKIAorI2lmbmRlZiBDVVJMX0RJRF9NRU1PUllfRlVOQ19UWVBFREVGUwogLyoKICAqIFRoZSBmb2xsb3dpbmcgdHlwZWRlZidzIGFyZSBzaWduYXR1cmVzIG9mIG1hbGxvYywgZnJlZSwgcmVhbGxvYywgc3RyZHVwIGFuZAogICogY2FsbG9jIHJlc3BlY3RpdmVseS4gIEZ1bmN0aW9uIHBvaW50ZXJzIG9mIHRoZXNlIHR5cGVzIGNhbiBiZSBwYXNzZWQgdG8gdGhlCkBAIC0zNzQsNiArMzg2LDkgQEAKIHR5cGVkZWYgY2hhciAqKCpjdXJsX3N0cmR1cF9jYWxsYmFjaykoY29uc3QgY2hhciAqc3RyKTsKIHR5cGVkZWYgdm9pZCAqKCpjdXJsX2NhbGxvY19jYWxsYmFjaykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CiAKKyNkZWZpbmUgQ1VSTF9ESURfTUVNT1JZX0ZVTkNfVFlQRURFRlMKKyNlbmRpZgorCiAvKiB0aGUga2luZCBvZiBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIGluZm9ybWF0aW9uX2NhbGxiYWNrKi8KIHR5cGVkZWYgZW51bSB7CiAgIENVUkxJTkZPX1RFWFQgPSAwLApAQCAtNDYwLDkgKzQ3NSw5IEBACiAgIENVUkxFX09CU09MRVRFNDQsICAgICAgICAgICAgICAvKiA0NCAtIE5PVCBVU0VEICovCiAgIENVUkxFX0lOVEVSRkFDRV9GQUlMRUQsICAgICAgICAvKiA0NSAtIENVUkxPUFRfSU5URVJGQUNFIGZhaWxlZCAqLwogICBDVVJMRV9PQlNPTEVURTQ2LCAgICAgICAgICAgICAgLyogNDYgLSBOT1QgVVNFRCAqLwotICBDVVJMRV9UT09fTUFOWV9SRURJUkVDVFMgLCAgICAgLyogNDcgLSBjYXRjaCBlbmRsZXNzIHJlLWRpcmVjdCBsb29wcyAqLworICBDVVJMRV9UT09fTUFOWV9SRURJUkVDVFMsICAgICAgLyogNDcgLSBjYXRjaCBlbmRsZXNzIHJlLWRpcmVjdCBsb29wcyAqLwogICBDVVJMRV9VTktOT1dOX09QVElPTiwgICAgICAgICAgLyogNDggLSBVc2VyIHNwZWNpZmllZCBhbiB1bmtub3duIG9wdGlvbiAqLwotICBDVVJMRV9URUxORVRfT1BUSU9OX1NZTlRBWCAsICAgLyogNDkgLSBNYWxmb3JtZWQgdGVsbmV0IG9wdGlvbiAqLworICBDVVJMRV9URUxORVRfT1BUSU9OX1NZTlRBWCwgICAgLyogNDkgLSBNYWxmb3JtZWQgdGVsbmV0IG9wdGlvbiAqLwogICBDVVJMRV9PQlNPTEVURTUwLCAgICAgICAgICAgICAgLyogNTAgLSBOT1QgVVNFRCAqLwogICBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT04sIC8qIDUxIC0gcGVlcidzIGNlcnRpZmljYXRlIG9yIGZpbmdlcnByaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fzbid0IHZlcmlmaWVkIGZpbmUgKi8KQEAgLTUyNCw2ICs1MzksOCBAQAogICBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0gsIC8qIDkwIC0gc3BlY2lmaWVkIHBpbm5lZCBwdWJsaWMga2V5IGRpZCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCAqLwogICBDVVJMRV9TU0xfSU5WQUxJRENFUlRTVEFUVVMsICAgLyogOTEgLSBpbnZhbGlkIGNlcnRpZmljYXRlIHN0YXR1cyAqLworICBDVVJMRV9IVFRQMl9TVFJFQU0sICAgICAgICAgICAgLyogOTIgLSBzdHJlYW0gZXJyb3IgaW4gSFRUUC8yIGZyYW1pbmcgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIENVUkxfTEFTVCAvKiBuZXZlciB1c2UhICovCiB9IENVUkxjb2RlOwogCkBAIC03MjUsNiArNzQyLDEwIEBACiAgICBzZXJ2ZXJzLCBhIHVzZXIgY2FuIHRoaXMgd2F5IGFsbG93IHRoZSB2dWxuZXJhYmlsaXR5IGJhY2suICovCiAjZGVmaW5lIENVUkxTU0xPUFRfQUxMT1dfQkVBU1QgKDE8PDApCiAKKy8qIC0gTk9fUkVWT0tFIHRlbGxzIGxpYmN1cmwgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGNoZWNrcyBmb3IgdGhvc2UKKyAgIFNTTCBiYWNrZW5kcyB3aGVyZSBzdWNoIGJlaGF2aW9yIGlzIHByZXNlbnQuICovCisjZGVmaW5lIENVUkxTU0xPUFRfTk9fUkVWT0tFICgxPDwxKQorCiAjaWZuZGVmIENVUkxfTk9fT0xESUVTIC8qIGRlZmluZSB0aGlzIHRvIHRlc3QgaWYgeW91ciBhcHAgYnVpbGRzIHdpdGggYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvYnNvbGV0ZSBzdHVmZiByZW1vdmVkISAqLwogCkBAIC04MTQsOSArODM1LDEzIEBACiAgICBidXQgMzIgKi8KICNkZWZpbmUgQ1VSTE9QVFRZUEVfTE9ORyAgICAgICAgICAwCiAjZGVmaW5lIENVUkxPUFRUWVBFX09CSkVDVFBPSU5UICAgMTAwMDAKKyNkZWZpbmUgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQgICAxMDAwMAogI2RlZmluZSBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5UIDIwMDAwCiAjZGVmaW5lIENVUkxPUFRUWVBFX09GRl9UICAgICAgICAgMzAwMDAKIAorLyogKlNUUklOR1BPSU5UIGlzIGFuIGFsaWFzIGZvciBPQkpFQ1RQT0lOVCB0byBhbGxvdyB0b29scyB0byBleHRyYWN0IHRoZQorICAgc3RyaW5nIG9wdGlvbnMgZnJvbSB0aGUgaGVhZGVyIGZpbGUgKi8KKwogLyogbmFtZSBpcyB1cHBlcmNhc2UgQ1VSTE9QVF88bmFtZT4sCiAgICB0eXBlIGlzIG9uZSBvZiB0aGUgZGVmaW5lZCBDVVJMT1BUVFlQRV88dHlwZT4KICAgIG51bWJlciBpcyB1bmlxdWUgaWRlbnRpZmllciAqLwpAQCAtODMwLDYgKzg1NSw3IEBACiAvKiBUaGUgbWFjcm8gIiMjIiBpcyBJU08gQywgd2UgYXNzdW1lIHByZS1JU08gQyBkb2Vzbid0IHN1cHBvcnQgaXQuICovCiAjZGVmaW5lIExPTkcgICAgICAgICAgQ1VSTE9QVFRZUEVfTE9ORwogI2RlZmluZSBPQkpFQ1RQT0lOVCAgIENVUkxPUFRUWVBFX09CSkVDVFBPSU5UCisjZGVmaW5lIFNUUklOR1BPSU5UICAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKICNkZWZpbmUgRlVOQ1RJT05QT0lOVCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5UCiAjZGVmaW5lIE9GRl9UICAgICAgICAgQ1VSTE9QVFRZUEVfT0ZGX1QKICNkZWZpbmUgQ0lOSVQobmFtZSx0eXBlLG51bWJlcikgQ1VSTE9QVF8vKiovbmFtZSA9IHR5cGUgKyBudW1iZXIKQEAgLTg0NiwyMiArODcyLDIyIEBACiAgIENJTklUKFdSSVRFREFUQSwgT0JKRUNUUE9JTlQsIDEpLAogCiAgIC8qIFRoZSBmdWxsIFVSTCB0byBnZXQvcHV0ICovCi0gIENJTklUKFVSTCwgT0JKRUNUUE9JTlQsIDIpLAorICBDSU5JVChVUkwsIFNUUklOR1BPSU5ULCAyKSwKIAogICAvKiBQb3J0IG51bWJlciB0byBjb25uZWN0IHRvLCBpZiBvdGhlciB0aGFuIGRlZmF1bHQuICovCiAgIENJTklUKFBPUlQsIExPTkcsIDMpLAogCiAgIC8qIE5hbWUgb2YgcHJveHkgdG8gdXNlLiAqLwotICBDSU5JVChQUk9YWSwgT0JKRUNUUE9JTlQsIDQpLAorICBDSU5JVChQUk9YWSwgU1RSSU5HUE9JTlQsIDQpLAogCiAgIC8qICJ1c2VyOnBhc3N3b3JkO29wdGlvbnMiIHRvIHVzZSB3aGVuIGZldGNoaW5nLiAqLwotICBDSU5JVChVU0VSUFdELCBPQkpFQ1RQT0lOVCwgNSksCisgIENJTklUKFVTRVJQV0QsIFNUUklOR1BPSU5ULCA1KSwKIAogICAvKiAidXNlcjpwYXNzd29yZCIgdG8gdXNlIHdpdGggcHJveHkuICovCi0gIENJTklUKFBST1hZVVNFUlBXRCwgT0JKRUNUUE9JTlQsIDYpLAorICBDSU5JVChQUk9YWVVTRVJQV0QsIFNUUklOR1BPSU5ULCA2KSwKIAogICAvKiBSYW5nZSB0byBnZXQsIHNwZWNpZmllZCBhcyBhbiBBU0NJSSBzdHJpbmcuICovCi0gIENJTklUKFJBTkdFLCBPQkpFQ1RQT0lOVCwgNyksCisgIENJTklUKFJBTkdFLCBTVFJJTkdQT0lOVCwgNyksCiAKICAgLyogbm90IHVzZWQgKi8KIApAQCAtODk4LDE0ICs5MjQsMTQgQEAKICAgQ0lOSVQoUE9TVEZJRUxEUywgT0JKRUNUUE9JTlQsIDE1KSwKIAogICAvKiBTZXQgdGhlIHJlZmVycmVyIHBhZ2UgKG5lZWRlZCBieSBzb21lIENHSXMpICovCi0gIENJTklUKFJFRkVSRVIsIE9CSkVDVFBPSU5ULCAxNiksCisgIENJTklUKFJFRkVSRVIsIFNUUklOR1BPSU5ULCAxNiksCiAKICAgLyogU2V0IHRoZSBGVFAgUE9SVCBzdHJpbmcgKGludGVyZmFjZSBuYW1lLCBuYW1lZCBvciBudW1lcmljYWwgSVAgYWRkcmVzcykKICAgICAgVXNlIGkuZSAnLScgdG8gdXNlIGRlZmF1bHQgYWRkcmVzcy4gKi8KLSAgQ0lOSVQoRlRQUE9SVCwgT0JKRUNUUE9JTlQsIDE3KSwKKyAgQ0lOSVQoRlRQUE9SVCwgU1RSSU5HUE9JTlQsIDE3KSwKIAogICAvKiBTZXQgdGhlIFVzZXItQWdlbnQgc3RyaW5nIChleGFtaW5lZCBieSBzb21lIENHSXMpICovCi0gIENJTklUKFVTRVJBR0VOVCwgT0JKRUNUUE9JTlQsIDE4KSwKKyAgQ0lOSVQoVVNFUkFHRU5ULCBTVFJJTkdQT0lOVCwgMTgpLAogCiAgIC8qIElmIHRoZSBkb3dubG9hZCByZWNlaXZlcyBsZXNzIHRoYW4gImxvdyBzcGVlZCBsaW1pdCIgYnl0ZXMvc2Vjb25kCiAgICAqIGR1cmluZyAibG93IHNwZWVkIHRpbWUiIHNlY29uZHMsIHRoZSBvcGVyYXRpb25zIGlzIGFib3J0ZWQuCkBAIC05MjgsNyArOTU0LDcgQEAKICAgQ0lOSVQoUkVTVU1FX0ZST00sIExPTkcsIDIxKSwKIAogICAvKiBTZXQgY29va2llIGluIHJlcXVlc3Q6ICovCi0gIENJTklUKENPT0tJRSwgT0JKRUNUUE9JTlQsIDIyKSwKKyAgQ0lOSVQoQ09PS0lFLCBTVFJJTkdQT0lOVCwgMjIpLAogCiAgIC8qIFRoaXMgcG9pbnRzIHRvIGEgbGlua2VkIGxpc3Qgb2YgaGVhZGVycywgc3RydWN0IGN1cmxfc2xpc3Qga2luZC4gVGhpcwogICAgICBsaXN0IGlzIGFsc28gdXNlZCBmb3IgUlRTUCAoaW4gc3BpdGUgb2YgaXRzIG5hbWUpICovCkBAIC05MzgsMTAgKzk2NCwxMCBAQAogICBDSU5JVChIVFRQUE9TVCwgT0JKRUNUUE9JTlQsIDI0KSwKIAogICAvKiBuYW1lIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBwcml2YXRlIFNTTC1jZXJ0aWZpY2F0ZSAqLwotICBDSU5JVChTU0xDRVJULCBPQkpFQ1RQT0lOVCwgMjUpLAorICBDSU5JVChTU0xDRVJULCBTVFJJTkdQT0lOVCwgMjUpLAogCiAgIC8qIHBhc3N3b3JkIGZvciB0aGUgU1NMIG9yIFNTSCBwcml2YXRlIGtleSAqLwotICBDSU5JVChLRVlQQVNTV0QsIE9CSkVDVFBPSU5ULCAyNiksCisgIENJTklUKEtFWVBBU1NXRCwgU1RSSU5HUE9JTlQsIDI2KSwKIAogICAvKiBzZW5kIFRZUEUgcGFyYW1ldGVyPyAqLwogICBDSU5JVChDUkxGLCBMT05HLCAyNyksCkBAIC05NTUsNyArOTgxLDcgQEAKIAogICAvKiBwb2ludCB0byBhIGZpbGUgdG8gcmVhZCB0aGUgaW5pdGlhbCBjb29raWVzIGZyb20sIGFsc28gZW5hYmxlcwogICAgICAiY29va2llIGF3YXJlbmVzcyIgKi8KLSAgQ0lOSVQoQ09PS0lFRklMRSwgT0JKRUNUUE9JTlQsIDMxKSwKKyAgQ0lOSVQoQ09PS0lFRklMRSwgU1RSSU5HUE9JTlQsIDMxKSwKIAogICAvKiBXaGF0IHZlcnNpb24gdG8gc3BlY2lmaWNhbGx5IHRyeSB0byB1c2UuCiAgICAgIFNlZSBDVVJMX1NTTFZFUlNJT04gZGVmaW5lcyBiZWxvdy4gKi8KQEAgLTk3NCw5ICsxMDAwLDkgQEAKICAgICAgSFRUUDogREVMRVRFLCBUUkFDRSBhbmQgb3RoZXJzCiAgICAgIEZUUDogdG8gdXNlIGEgZGlmZmVyZW50IGxpc3QgY29tbWFuZAogICAgICAqLwotICBDSU5JVChDVVNUT01SRVFVRVNULCBPQkpFQ1RQT0lOVCwgMzYpLAorICBDSU5JVChDVVNUT01SRVFVRVNULCBTVFJJTkdQT0lOVCwgMzYpLAogCi0gIC8qIEhUVFAgcmVxdWVzdCwgZm9yIG9kZCBjb21tYW5kcyBsaWtlIERFTEVURSwgVFJBQ0UgYW5kIG90aGVycyAqLworICAvKiBGSUxFIGhhbmRsZSB0byB1c2UgaW5zdGVhZCBvZiBzdGRlcnIgKi8KICAgQ0lOSVQoU1RERVJSLCBPQkpFQ1RQT0lOVCwgMzcpLAogCiAgIC8qIDM4IGlzIG5vdCB1c2VkICovCkBAIC0xMDMzLDE5ICsxMDU5LDE5IEBACiAgIENJTklUKEhUVFBQUk9YWVRVTk5FTCwgTE9ORywgNjEpLAogCiAgIC8qIFNldCB0aGUgaW50ZXJmYWNlIHN0cmluZyB0byB1c2UgYXMgb3V0Z29pbmcgbmV0d29yayBpbnRlcmZhY2UgKi8KLSAgQ0lOSVQoSU5URVJGQUNFLCBPQkpFQ1RQT0lOVCwgNjIpLAorICBDSU5JVChJTlRFUkZBQ0UsIFNUUklOR1BPSU5ULCA2MiksCiAKICAgLyogU2V0IHRoZSBrcmI0LzUgc2VjdXJpdHkgbGV2ZWwsIHRoaXMgYWxzbyBlbmFibGVzIGtyYjQvNSBhd2FyZW5lc3MuICBUaGlzCiAgICAqIGlzIGEgc3RyaW5nLCAnY2xlYXInLCAnc2FmZScsICdjb25maWRlbnRpYWwnIG9yICdwcml2YXRlJy4gIElmIHRoZSBzdHJpbmcKICAgICogaXMgc2V0IGJ1dCBkb2Vzbid0IG1hdGNoIG9uZSBvZiB0aGVzZSwgJ3ByaXZhdGUnIHdpbGwgYmUgdXNlZC4gICovCi0gIENJTklUKEtSQkxFVkVMLCBPQkpFQ1RQT0lOVCwgNjMpLAorICBDSU5JVChLUkJMRVZFTCwgU1RSSU5HUE9JTlQsIDYzKSwKIAogICAvKiBTZXQgaWYgd2Ugc2hvdWxkIHZlcmlmeSB0aGUgcGVlciBpbiBzc2wgaGFuZHNoYWtlLCBzZXQgMSB0byB2ZXJpZnkuICovCiAgIENJTklUKFNTTF9WRVJJRllQRUVSLCBMT05HLCA2NCksCiAKICAgLyogVGhlIENBcGF0aCBvciBDQWZpbGUgdXNlZCB0byB2YWxpZGF0ZSB0aGUgcGVlciBjZXJ0aWZpY2F0ZQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChDQUlORk8sIE9CSkVDVFBPSU5ULCA2NSksCisgIENJTklUKENBSU5GTywgU1RSSU5HUE9JTlQsIDY1KSwKIAogICAvKiA2NiA9IE9CU09MRVRFICovCiAgIC8qIDY3ID0gT0JTT0xFVEUgKi8KQEAgLTEwNzksMTAgKzExMDUsMTAgQEAKIAogICAvKiBTZXQgdG8gYSBmaWxlIG5hbWUgdGhhdCBjb250YWlucyByYW5kb20gZGF0YSBmb3IgbGliY3VybCB0byB1c2UgdG8KICAgICAgc2VlZCB0aGUgcmFuZG9tIGVuZ2luZSB3aGVuIGRvaW5nIFNTTCBjb25uZWN0cy4gKi8KLSAgQ0lOSVQoUkFORE9NX0ZJTEUsIE9CSkVDVFBPSU5ULCA3NiksCisgIENJTklUKFJBTkRPTV9GSUxFLCBTVFJJTkdQT0lOVCwgNzYpLAogCiAgIC8qIFNldCB0byB0aGUgRW50cm9weSBHYXRoZXJpbmcgRGFlbW9uIHNvY2tldCBwYXRobmFtZSAqLwotICBDSU5JVChFR0RTT0NLRVQsIE9CSkVDVFBPSU5ULCA3NyksCisgIENJTklUKEVHRFNPQ0tFVCwgU1RSSU5HUE9JTlQsIDc3KSwKIAogICAvKiBUaW1lLW91dCBjb25uZWN0IG9wZXJhdGlvbnMgYWZ0ZXIgdGhpcyBhbW91bnQgb2Ygc2Vjb25kcywgaWYgY29ubmVjdHMgYXJlCiAgICAgIE9LIHdpdGhpbiB0aGlzIHRpbWUsIHRoZW4gZmluZS4uLiBUaGlzIG9ubHkgYWJvcnRzIHRoZSBjb25uZWN0IHBoYXNlLiAqLwpAQCAtMTEwNCwxMCArMTEzMCwxMCBAQAogCiAgIC8qIFNwZWNpZnkgd2hpY2ggZmlsZSBuYW1lIHRvIHdyaXRlIGFsbCBrbm93biBjb29raWVzIGluIGFmdGVyIGNvbXBsZXRlZAogICAgICBvcGVyYXRpb24uIFNldCBmaWxlIG5hbWUgdG8gIi0iIChkYXNoKSB0byBtYWtlIGl0IGdvIHRvIHN0ZG91dC4gKi8KLSAgQ0lOSVQoQ09PS0lFSkFSLCBPQkpFQ1RQT0lOVCwgODIpLAorICBDSU5JVChDT09LSUVKQVIsIFNUUklOR1BPSU5ULCA4MiksCiAKICAgLyogU3BlY2lmeSB3aGljaCBTU0wgY2lwaGVycyB0byB1c2UgKi8KLSAgQ0lOSVQoU1NMX0NJUEhFUl9MSVNULCBPQkpFQ1RQT0lOVCwgODMpLAorICBDSU5JVChTU0xfQ0lQSEVSX0xJU1QsIFNUUklOR1BPSU5ULCA4MyksCiAKICAgLyogU3BlY2lmeSB3aGljaCBIVFRQIHZlcnNpb24gdG8gdXNlISBUaGlzIG11c3QgYmUgc2V0IHRvIG9uZSBvZiB0aGUKICAgICAgQ1VSTF9IVFRQX1ZFUlNJT04qIGVudW1zIHNldCBiZWxvdy4gKi8KQEAgLTExMTksMTYgKzExNDUsMTYgQEAKICAgQ0lOSVQoRlRQX1VTRV9FUFNWLCBMT05HLCA4NSksCiAKICAgLyogdHlwZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgU1NMLWNlcnRpZmljYXRlICgiREVSIiwgIlBFTSIsICJFTkciKSAqLwotICBDSU5JVChTU0xDRVJUVFlQRSwgT0JKRUNUUE9JTlQsIDg2KSwKKyAgQ0lOSVQoU1NMQ0VSVFRZUEUsIFNUUklOR1BPSU5ULCA4NiksCiAKICAgLyogbmFtZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgcHJpdmF0ZSBTU0wta2V5ICovCi0gIENJTklUKFNTTEtFWSwgT0JKRUNUUE9JTlQsIDg3KSwKKyAgQ0lOSVQoU1NMS0VZLCBTVFJJTkdQT0lOVCwgODcpLAogCiAgIC8qIHR5cGUgb2YgdGhlIGZpbGUga2VlcGluZyB5b3VyIHByaXZhdGUgU1NMLWtleSAoIkRFUiIsICJQRU0iLCAiRU5HIikgKi8KLSAgQ0lOSVQoU1NMS0VZVFlQRSwgT0JKRUNUUE9JTlQsIDg4KSwKKyAgQ0lOSVQoU1NMS0VZVFlQRSwgU1RSSU5HUE9JTlQsIDg4KSwKIAogICAvKiBjcnlwdG8gZW5naW5lIGZvciB0aGUgU1NMLXN1YiBzeXN0ZW0gKi8KLSAgQ0lOSVQoU1NMRU5HSU5FLCBPQkpFQ1RQT0lOVCwgODkpLAorICBDSU5JVChTU0xFTkdJTkUsIFNUUklOR1BPSU5ULCA4OSksCiAKICAgLyogc2V0IHRoZSBjcnlwdG8gZW5naW5lIGZvciB0aGUgU1NMLXN1YiBzeXN0ZW0gYXMgZGVmYXVsdAogICAgICB0aGUgcGFyYW0gaGFzIG5vIG1lYW5pbmcuLi4KQEAgLTExNTUsNyArMTE4MSw3IEBACiAKICAgLyogVGhlIENBcGF0aCBkaXJlY3RvcnkgdXNlZCB0byB2YWxpZGF0ZSB0aGUgcGVlciBjZXJ0aWZpY2F0ZQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChDQVBBVEgsIE9CSkVDVFBPSU5ULCA5NyksCisgIENJTklUKENBUEFUSCwgU1RSSU5HUE9JTlQsIDk3KSwKIAogICAvKiBJbnN0cnVjdCBsaWJjdXJsIHRvIHVzZSBhIHNtYWxsZXIgcmVjZWl2ZSBidWZmZXIgKi8KICAgQ0lOSVQoQlVGRkVSU0laRSwgTE9ORywgOTgpLApAQCAtMTE3NSw3ICsxMjAxLDcgQEAKICAgLyogU2V0IHRoZSBBY2NlcHQtRW5jb2Rpbmcgc3RyaW5nLiBVc2UgdGhpcyB0byB0ZWxsIGEgc2VydmVyIHlvdSB3b3VsZCBsaWtlCiAgICAgIHRoZSByZXNwb25zZSB0byBiZSBjb21wcmVzc2VkLiBCZWZvcmUgNy4yMS42LCB0aGlzIHdhcyBrbm93biBhcwogICAgICBDVVJMT1BUX0VOQ09ESU5HICovCi0gIENJTklUKEFDQ0VQVF9FTkNPRElORywgT0JKRUNUUE9JTlQsIDEwMiksCisgIENJTklUKEFDQ0VQVF9FTkNPRElORywgU1RSSU5HUE9JTlQsIDEwMiksCiAKICAgLyogU2V0IHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhICovCiAgIENJTklUKFBSSVZBVEUsIE9CSkVDVFBPSU5ULCAxMDMpLApAQCAtMTI1Niw3ICsxMjgyLDcgQEAKICAgICAgdG8gcGFyc2UgKHVzaW5nIHRoZSBDVVJMT1BUX05FVFJDIG9wdGlvbikuIElmIG5vdCBzZXQsIGxpYmN1cmwgd2lsbCBkbwogICAgICBhIHBvb3IgYXR0ZW1wdCB0byBmaW5kIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgYW5kIGNoZWNrIGZvciBhIC5uZXRyYwogICAgICBmaWxlIGluIHRoZXJlLiAqLwotICBDSU5JVChORVRSQ19GSUxFLCBPQkpFQ1RQT0lOVCwgMTE4KSwKKyAgQ0lOSVQoTkVUUkNfRklMRSwgU1RSSU5HUE9JTlQsIDExOCksCiAKICAgLyogRW5hYmxlIFNTTC9UTFMgZm9yIEZUUCwgcGljayBvbmUgb2Y6CiAgICAgIENVUkxVU0VTU0xfVFJZICAgICAtIHRyeSB1c2luZyBTU0wsIHByb2NlZWQgYW55d2F5IG90aGVyd2lzZQpAQCAtMTI5OSwxMCArMTMyNSwxMCBAQAogCiAgIC8qIHplcm8gdGVybWluYXRlZCBzdHJpbmcgZm9yIHBhc3Mgb24gdG8gdGhlIEZUUCBzZXJ2ZXIgd2hlbiBhc2tlZCBmb3IKICAgICAgImFjY291bnQiIGluZm8gKi8KLSAgQ0lOSVQoRlRQX0FDQ09VTlQsIE9CSkVDVFBPSU5ULCAxMzQpLAorICBDSU5JVChGVFBfQUNDT1VOVCwgU1RSSU5HUE9JTlQsIDEzNCksCiAKLSAgLyogZmVlZCBjb29raWVzIGludG8gY29va2llIGVuZ2luZSAqLwotICBDSU5JVChDT09LSUVMSVNULCBPQkpFQ1RQT0lOVCwgMTM1KSwKKyAgLyogZmVlZCBjb29raWUgaW50byBjb29raWUgZW5naW5lICovCisgIENJTklUKENPT0tJRUxJU1QsIFNUUklOR1BPSU5ULCAxMzUpLAogCiAgIC8qIGlnbm9yZSBDb250ZW50LUxlbmd0aCAqLwogICBDSU5JVChJR05PUkVfQ09OVEVOVF9MRU5HVEgsIExPTkcsIDEzNiksCkBAIC0xMzQ4LDcgKzEzNzQsNyBAQAogICBDSU5JVChNQVhfUkVDVl9TUEVFRF9MQVJHRSwgT0ZGX1QsIDE0NiksCiAKICAgLyogUG9pbnRlciB0byBjb21tYW5kIHN0cmluZyB0byBzZW5kIGlmIFVTRVIvUEFTUyBmYWlscy4gKi8KLSAgQ0lOSVQoRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIsIE9CSkVDVFBPSU5ULCAxNDcpLAorICBDSU5JVChGVFBfQUxURVJOQVRJVkVfVE9fVVNFUiwgU1RSSU5HUE9JTlQsIDE0NyksCiAKICAgLyogY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHNldHRpbmcgc29ja2V0IG9wdGlvbnMgKi8KICAgQ0lOSVQoU09DS09QVEZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxNDgpLApAQCAtMTM2Miw4ICsxMzg4LDggQEAKICAgQ0lOSVQoU1NIX0FVVEhfVFlQRVMsIExPTkcsIDE1MSksCiAKICAgLyogVXNlZCBieSBzY3Avc2Z0cCB0byBkbyBwdWJsaWMvcHJpdmF0ZSBrZXkgYXV0aGVudGljYXRpb24gKi8KLSAgQ0lOSVQoU1NIX1BVQkxJQ19LRVlGSUxFLCBPQkpFQ1RQT0lOVCwgMTUyKSwKLSAgQ0lOSVQoU1NIX1BSSVZBVEVfS0VZRklMRSwgT0JKRUNUUE9JTlQsIDE1MyksCisgIENJTklUKFNTSF9QVUJMSUNfS0VZRklMRSwgU1RSSU5HUE9JTlQsIDE1MiksCisgIENJTklUKFNTSF9QUklWQVRFX0tFWUZJTEUsIFNUUklOR1BPSU5ULCAxNTMpLAogCiAgIC8qIFNlbmQgQ0NDIChDbGVhciBDb21tYW5kIENoYW5uZWwpIGFmdGVyIGF1dGhlbnRpY2F0aW9uICovCiAgIENJTklUKEZUUF9TU0xfQ0NDLCBMT05HLCAxNTQpLApAQCAtMTM4Nyw3ICsxNDEzLDcgQEAKICAgQ0lOSVQoUE9TVFJFRElSLCBMT05HLCAxNjEpLAogCiAgIC8qIHVzZWQgYnkgc2NwL3NmdHAgdG8gdmVyaWZ5IHRoZSBob3N0J3MgcHVibGljIGtleSAqLwotICBDSU5JVChTU0hfSE9TVF9QVUJMSUNfS0VZX01ENSwgT0JKRUNUUE9JTlQsIDE2MiksCisgIENJTklUKFNTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LCBTVFJJTkdQT0lOVCwgMTYyKSwKIAogICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igb3BlbmluZyBzb2NrZXQgKGluc3RlYWQgb2Ygc29ja2V0KDIpKS4gT3B0aW9uYWxseSwKICAgICAgY2FsbGJhY2sgaXMgYWJsZSBjaGFuZ2UgdGhlIGFkZHJlc3Mgb3IgcmVmdXNlIHRvIGNvbm5lY3QgcmV0dXJuaW5nCkBAIC0xNDA3LDEwICsxNDMzLDEwIEBACiAgIENJTklUKFNFRUtEQVRBLCBPQkpFQ1RQT0lOVCwgMTY4KSwKIAogICAvKiBDUkwgZmlsZSAqLwotICBDSU5JVChDUkxGSUxFLCBPQkpFQ1RQT0lOVCwgMTY5KSwKKyAgQ0lOSVQoQ1JMRklMRSwgU1RSSU5HUE9JTlQsIDE2OSksCiAKICAgLyogSXNzdWVyIGNlcnRpZmljYXRlICovCi0gIENJTklUKElTU1VFUkNFUlQsIE9CSkVDVFBPSU5ULCAxNzApLAorICBDSU5JVChJU1NVRVJDRVJULCBTVFJJTkdQT0lOVCwgMTcwKSwKIAogICAvKiAoSVB2NikgQWRkcmVzcyBzY29wZSAqLwogICBDSU5JVChBRERSRVNTX1NDT1BFLCBMT05HLCAxNzEpLApAQCAtMTQyMCwxMiArMTQ0NiwxMiBAQAogICBDSU5JVChDRVJUSU5GTywgTE9ORywgMTcyKSwKIAogICAvKiAibmFtZSIgYW5kICJwd2QiIHRvIHVzZSB3aGVuIGZldGNoaW5nLiAqLwotICBDSU5JVChVU0VSTkFNRSwgT0JKRUNUUE9JTlQsIDE3MyksCi0gIENJTklUKFBBU1NXT1JELCBPQkpFQ1RQT0lOVCwgMTc0KSwKKyAgQ0lOSVQoVVNFUk5BTUUsIFNUUklOR1BPSU5ULCAxNzMpLAorICBDSU5JVChQQVNTV09SRCwgU1RSSU5HUE9JTlQsIDE3NCksCiAKICAgICAvKiAibmFtZSIgYW5kICJwd2QiIHRvIHVzZSB3aXRoIFByb3h5IHdoZW4gZmV0Y2hpbmcuICovCi0gIENJTklUKFBST1hZVVNFUk5BTUUsIE9CSkVDVFBPSU5ULCAxNzUpLAotICBDSU5JVChQUk9YWVBBU1NXT1JELCBPQkpFQ1RQT0lOVCwgMTc2KSwKKyAgQ0lOSVQoUFJPWFlVU0VSTkFNRSwgU1RSSU5HUE9JTlQsIDE3NSksCisgIENJTklUKFBST1hZUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAxNzYpLAogCiAgIC8qIENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGhvc3RuYW1lcyBkZWZpbmluZyBuby1wcm94eSB6b25lcy4gVGhlc2Ugc2hvdWxkCiAgICAgIG1hdGNoIGJvdGggaG9zdG5hbWVzIGRpcmVjdGx5LCBhbmQgaG9zdG5hbWVzIHdpdGhpbiBhIGRvbWFpbi4gRm9yCkBAIC0xNDM0LDEzICsxNDYwLDEzIEBACiAgICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGlzLCAubG9jYWwuY29tIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSB0aGUgc2FtZSBhcwogICAgICBsb2NhbC5jb20uIEEgc2luZ2xlICogaXMgdGhlIG9ubHkgdmFsaWQgd2lsZGNhcmQsIGFuZCBlZmZlY3RpdmVseQogICAgICBkaXNhYmxlcyB0aGUgdXNlIG9mIHByb3h5LiAqLwotICBDSU5JVChOT1BST1hZLCBPQkpFQ1RQT0lOVCwgMTc3KSwKKyAgQ0lOSVQoTk9QUk9YWSwgU1RSSU5HUE9JTlQsIDE3NyksCiAKICAgLyogYmxvY2sgc2l6ZSBmb3IgVEZUUCB0cmFuc2ZlcnMgKi8KICAgQ0lOSVQoVEZUUF9CTEtTSVpFLCBMT05HLCAxNzgpLAogCiAgIC8qIFNvY2tzIFNlcnZpY2UgKi8KLSAgQ0lOSVQoU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBPQkpFQ1RQT0lOVCwgMTc5KSwKKyAgQ0lOSVQoU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBTVFJJTkdQT0lOVCwgMTc5KSwgLyogREVQUkVDQVRFRCwgZG8gbm90IHVzZSEgKi8KIAogICAvKiBTb2NrcyBTZXJ2aWNlICovCiAgIENJTklUKFNPQ0tTNV9HU1NBUElfTkVDLCBMT05HLCAxODApLApAQCAtMTQ1OCw3ICsxNDg0LDcgQEAKICAgQ0lOSVQoUkVESVJfUFJPVE9DT0xTLCBMT05HLCAxODIpLAogCiAgIC8qIHNldCB0aGUgU1NIIGtub3duaG9zdCBmaWxlIG5hbWUgdG8gdXNlICovCi0gIENJTklUKFNTSF9LTk9XTkhPU1RTLCBPQkpFQ1RQT0lOVCwgMTgzKSwKKyAgQ0lOSVQoU1NIX0tOT1dOSE9TVFMsIFNUUklOR1BPSU5ULCAxODMpLAogCiAgIC8qIHNldCB0aGUgU1NIIGhvc3Qga2V5IGNhbGxiYWNrLCBtdXN0IHBvaW50IHRvIGEgY3VybF9zc2hrZXljYWxsYmFjawogICAgICBmdW5jdGlvbiAqLwpAQCAtMTQ2OCw5ICsxNDk0LDkgQEAKICAgQ0lOSVQoU1NIX0tFWURBVEEsIE9CSkVDVFBPSU5ULCAxODUpLAogCiAgIC8qIHNldCB0aGUgU01UUCBtYWlsIG9yaWdpbmF0b3IgKi8KLSAgQ0lOSVQoTUFJTF9GUk9NLCBPQkpFQ1RQT0lOVCwgMTg2KSwKKyAgQ0lOSVQoTUFJTF9GUk9NLCBTVFJJTkdQT0lOVCwgMTg2KSwKIAotICAvKiBzZXQgdGhlIFNNVFAgbWFpbCByZWNlaXZlcihzKSAqLworICAvKiBzZXQgdGhlIGxpc3Qgb2YgU01UUCBtYWlsIHJlY2VpdmVyKHMpICovCiAgIENJTklUKE1BSUxfUkNQVCwgT0JKRUNUUE9JTlQsIDE4NyksCiAKICAgLyogRlRQOiBzZW5kIFBSRVQgYmVmb3JlIFBBU1YgKi8KQEAgLTE0ODAsMTMgKzE1MDYsMTMgQEAKICAgQ0lOSVQoUlRTUF9SRVFVRVNULCBMT05HLCAxODkpLAogCiAgIC8qIFRoZSBSVFNQIHNlc3Npb24gaWRlbnRpZmllciAqLwotICBDSU5JVChSVFNQX1NFU1NJT05fSUQsIE9CSkVDVFBPSU5ULCAxOTApLAorICBDSU5JVChSVFNQX1NFU1NJT05fSUQsIFNUUklOR1BPSU5ULCAxOTApLAogCiAgIC8qIFRoZSBSVFNQIHN0cmVhbSBVUkkgKi8KLSAgQ0lOSVQoUlRTUF9TVFJFQU1fVVJJLCBPQkpFQ1RQT0lOVCwgMTkxKSwKKyAgQ0lOSVQoUlRTUF9TVFJFQU1fVVJJLCBTVFJJTkdQT0lOVCwgMTkxKSwKIAogICAvKiBUaGUgVHJhbnNwb3J0OiBoZWFkZXIgdG8gdXNlIGluIFJUU1AgcmVxdWVzdHMgKi8KLSAgQ0lOSVQoUlRTUF9UUkFOU1BPUlQsIE9CSkVDVFBPSU5ULCAxOTIpLAorICBDSU5JVChSVFNQX1RSQU5TUE9SVCwgU1RSSU5HUE9JTlQsIDE5MiksCiAKICAgLyogTWFudWFsbHkgaW5pdGlhbGl6ZSB0aGUgY2xpZW50IFJUU1AgQ1NlcSBmb3IgdGhpcyBoYW5kbGUgKi8KICAgQ0lOSVQoUlRTUF9DTElFTlRfQ1NFUSwgTE9ORywgMTkzKSwKQEAgLTE1MjQsMTMgKzE1NTAsMTMgQEAKICAgQ0lOSVQoUkVTT0xWRSwgT0JKRUNUUE9JTlQsIDIwMyksCiAKICAgLyogU2V0IGEgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0ZWQgVExTICovCi0gIENJTklUKFRMU0FVVEhfVVNFUk5BTUUsIE9CSkVDVFBPSU5ULCAyMDQpLAorICBDSU5JVChUTFNBVVRIX1VTRVJOQU1FLCBTVFJJTkdQT0lOVCwgMjA0KSwKIAogICAvKiBTZXQgYSBwYXNzd29yZCBmb3IgYXV0aGVudGljYXRlZCBUTFMgKi8KLSAgQ0lOSVQoVExTQVVUSF9QQVNTV09SRCwgT0JKRUNUUE9JTlQsIDIwNSksCisgIENJTklUKFRMU0FVVEhfUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAyMDUpLAogCiAgIC8qIFNldCBhdXRoZW50aWNhdGlvbiB0eXBlIGZvciBhdXRoZW50aWNhdGVkIFRMUyAqLwotICBDSU5JVChUTFNBVVRIX1RZUEUsIE9CSkVDVFBPSU5ULCAyMDYpLAorICBDSU5JVChUTFNBVVRIX1RZUEUsIFNUUklOR1BPSU5ULCAyMDYpLAogCiAgIC8qIFNldCB0byAxIHRvIGVuYWJsZSB0aGUgIlRFOiIgaGVhZGVyIGluIEhUVFAgcmVxdWVzdHMgdG8gYXNrIGZvcgogICAgICBjb21wcmVzc2VkIHRyYW5zZmVyLWVuY29kZWQgcmVzcG9uc2VzLiBTZXQgdG8gMCB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgVEU6CkBAIC0xNTUzLDcgKzE1NzksNyBAQAogICBDSU5JVChHU1NBUElfREVMRUdBVElPTiwgTE9ORywgMjEwKSwKIAogICAvKiBTZXQgdGhlIG5hbWUgc2VydmVycyB0byB1c2UgZm9yIEROUyByZXNvbHV0aW9uICovCi0gIENJTklUKEROU19TRVJWRVJTLCBPQkpFQ1RQT0lOVCwgMjExKSwKKyAgQ0lOSVQoRE5TX1NFUlZFUlMsIFNUUklOR1BPSU5ULCAyMTEpLAogCiAgIC8qIFRpbWUtb3V0IGFjY2VwdCBvcGVyYXRpb25zIChjdXJyZW50bHkgZm9yIEZUUCBvbmx5KSBhZnRlciB0aGlzIGFtb3VudAogICAgICBvZiBtaWxpc2Vjb25kcy4gKi8KQEAgLTE1NzAsNyArMTU5Niw3IEBACiAgIENJTklUKFNTTF9PUFRJT05TLCBMT05HLCAyMTYpLAogCiAgIC8qIFNldCB0aGUgU01UUCBhdXRoIG9yaWdpbmF0b3IgKi8KLSAgQ0lOSVQoTUFJTF9BVVRILCBPQkpFQ1RQT0lOVCwgMjE3KSwKKyAgQ0lOSVQoTUFJTF9BVVRILCBTVFJJTkdQT0lOVCwgMjE3KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBTQVNMIGluaXRpYWwgcmVzcG9uc2UgKi8KICAgQ0lOSVQoU0FTTF9JUiwgTE9ORywgMjE4KSwKQEAgLTE1ODEsMjMgKzE2MDcsMjMgQEAKICAgQ0lOSVQoWEZFUklORk9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjE5KSwKIAogICAvKiBUaGUgWE9BVVRIMiBiZWFyZXIgdG9rZW4gKi8KLSAgQ0lOSVQoWE9BVVRIMl9CRUFSRVIsIE9CSkVDVFBPSU5ULCAyMjApLAorICBDSU5JVChYT0FVVEgyX0JFQVJFUiwgU1RSSU5HUE9JTlQsIDIyMCksCiAKICAgLyogU2V0IHRoZSBpbnRlcmZhY2Ugc3RyaW5nIHRvIHVzZSBhcyBvdXRnb2luZyBuZXR3b3JrCiAgICAqIGludGVyZmFjZSBmb3IgRE5TIHJlcXVlc3RzLgogICAgKiBPbmx5IHN1cHBvcnRlZCBieSB0aGUgYy1hcmVzIEROUyBiYWNrZW5kICovCi0gIENJTklUKEROU19JTlRFUkZBQ0UsIE9CSkVDVFBPSU5ULCAyMjEpLAorICBDSU5JVChETlNfSU5URVJGQUNFLCBTVFJJTkdQT0lOVCwgMjIxKSwKIAogICAvKiBTZXQgdGhlIGxvY2FsIElQdjQgYWRkcmVzcyB0byB1c2UgZm9yIG91dGdvaW5nIEROUyByZXF1ZXN0cy4KICAgICogT25seSBzdXBwb3J0ZWQgYnkgdGhlIGMtYXJlcyBETlMgYmFja2VuZCAqLwotICBDSU5JVChETlNfTE9DQUxfSVA0LCBPQkpFQ1RQT0lOVCwgMjIyKSwKKyAgQ0lOSVQoRE5TX0xPQ0FMX0lQNCwgU1RSSU5HUE9JTlQsIDIyMiksCiAKICAgLyogU2V0IHRoZSBsb2NhbCBJUHY0IGFkZHJlc3MgdG8gdXNlIGZvciBvdXRnb2luZyBETlMgcmVxdWVzdHMuCiAgICAqIE9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBjLWFyZXMgRE5TIGJhY2tlbmQgKi8KLSAgQ0lOSVQoRE5TX0xPQ0FMX0lQNiwgT0JKRUNUUE9JTlQsIDIyMyksCisgIENJTklUKEROU19MT0NBTF9JUDYsIFNUUklOR1BPSU5ULCAyMjMpLAogCiAgIC8qIFNldCBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGRpcmVjdGx5ICovCi0gIENJTklUKExPR0lOX09QVElPTlMsIE9CSkVDVFBPSU5ULCAyMjQpLAorICBDSU5JVChMT0dJTl9PUFRJT05TLCBTVFJJTkdQT0lOVCwgMjI0KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBUTFMgTlBOIGV4dGVuc2lvbiAoaHR0cDIgb3ZlciBzc2wgbWlnaHQgZmFpbCB3aXRob3V0KSAqLwogICBDSU5JVChTU0xfRU5BQkxFX05QTiwgTE9ORywgMjI1KSwKQEAgLTE2MTgsMTAgKzE2NDQsMTAgQEAKIAogICAvKiBUaGUgcHVibGljIGtleSBpbiBERVIgZm9ybSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBwZWVyIHB1YmxpYyBrZXkKICAgICAgdGhpcyBvcHRpb24gaXMgdXNlZCBvbmx5IGlmIFNTTF9WRVJJRllQRUVSIGlzIHRydWUgKi8KLSAgQ0lOSVQoUElOTkVEUFVCTElDS0VZLCBPQkpFQ1RQT0lOVCwgMjMwKSwKKyAgQ0lOSVQoUElOTkVEUFVCTElDS0VZLCBTVFJJTkdQT0lOVCwgMjMwKSwKIAogICAvKiBQYXRoIHRvIFVuaXggZG9tYWluIHNvY2tldCAqLwotICBDSU5JVChVTklYX1NPQ0tFVF9QQVRILCBPQkpFQ1RQT0lOVCwgMjMxKSwKKyAgQ0lOSVQoVU5JWF9TT0NLRVRfUEFUSCwgU1RSSU5HUE9JTlQsIDIzMSksCiAKICAgLyogU2V0IGlmIHdlIHNob3VsZCB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIHN0YXR1cy4gKi8KICAgQ0lOSVQoU1NMX1ZFUklGWVNUQVRVUywgTE9ORywgMjMyKSwKQEAgLTE2MzMsMTQgKzE2NTksMzYgQEAKICAgQ0lOSVQoUEFUSF9BU19JUywgTE9ORywgMjM0KSwKIAogICAvKiBQcm94eSBTZXJ2aWNlIE5hbWUgKi8KLSAgQ0lOSVQoUFJPWFlfU0VSVklDRV9OQU1FLCBPQkpFQ1RQT0lOVCwgMjM1KSwKKyAgQ0lOSVQoUFJPWFlfU0VSVklDRV9OQU1FLCBTVFJJTkdQT0lOVCwgMjM1KSwKIAogICAvKiBTZXJ2aWNlIE5hbWUgKi8KLSAgQ0lOSVQoU0VSVklDRV9OQU1FLCBPQkpFQ1RQT0lOVCwgMjM2KSwKKyAgQ0lOSVQoU0VSVklDRV9OQU1FLCBTVFJJTkdQT0lOVCwgMjM2KSwKIAogICAvKiBXYWl0L2Rvbid0IHdhaXQgZm9yIHBpcGUvbXV0ZXggdG8gY2xhcmlmeSAqLwogICBDSU5JVChQSVBFV0FJVCwgTE9ORywgMjM3KSwKIAorICAvKiBTZXQgdGhlIHByb3RvY29sIHVzZWQgd2hlbiBjdXJsIGlzIGdpdmVuIGEgVVJMIHdpdGhvdXQgYSBwcm90b2NvbCAqLworICBDSU5JVChERUZBVUxUX1BST1RPQ09MLCBTVFJJTkdQT0lOVCwgMjM4KSwKKworICAvKiBTZXQgc3RyZWFtIHdlaWdodCwgMSAtIDI1NiAoZGVmYXVsdCBpcyAxNikgKi8KKyAgQ0lOSVQoU1RSRUFNX1dFSUdIVCwgTE9ORywgMjM5KSwKKworICAvKiBTZXQgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLworICBDSU5JVChTVFJFQU1fREVQRU5EUywgT0JKRUNUUE9JTlQsIDI0MCksCisKKyAgLyogU2V0IEUteGNsdXNpdmUgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLworICBDSU5JVChTVFJFQU1fREVQRU5EU19FLCBPQkpFQ1RQT0lOVCwgMjQxKSwKKworICAvKiBEbyBub3Qgc2VuZCBhbnkgdGZ0cCBvcHRpb24gcmVxdWVzdHMgdG8gdGhlIHNlcnZlciAqLworICBDSU5JVChURlRQX05PX09QVElPTlMsIExPTkcsIDI0MiksCisKKyAgLyogTGlua2VkLWxpc3Qgb2YgaG9zdDpwb3J0OmNvbm5lY3QtdG8taG9zdDpjb25uZWN0LXRvLXBvcnQsCisgICAgIG92ZXJyaWRlcyB0aGUgVVJMJ3MgaG9zdDpwb3J0IChvbmx5IGZvciB0aGUgbmV0d29yayBsYXllcikgKi8KKyAgQ0lOSVQoQ09OTkVDVF9UTywgT0JKRUNUUE9JTlQsIDI0MyksCisKKyAgLyogU2V0IFRDUCBGYXN0IE9wZW4gKi8KKyAgQ0lOSVQoVENQX0ZBU1RPUEVOLCBMT05HLCAyNDQpLAorCiAgIENVUkxPUFRfTEFTVEVOVFJZIC8qIHRoZSBsYXN0IHVudXNlZCAqLwogfSBDVVJMb3B0aW9uOwogCkBAIC0xNjkwLDcgKzE3MzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHVzISAqLwogICBDVVJMX0hUVFBfVkVSU0lPTl8xXzAsICAvKiBwbGVhc2UgdXNlIEhUVFAgMS4wIGluIHRoZSByZXF1ZXN0ICovCiAgIENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgIC8qIHBsZWFzZSB1c2UgSFRUUCAxLjEgaW4gdGhlIHJlcXVlc3QgKi8KLSAgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wLCAgLyogcGxlYXNlIHVzZSBIVFRQIDIuMCBpbiB0aGUgcmVxdWVzdCAqLworICBDVVJMX0hUVFBfVkVSU0lPTl8yXzAsICAvKiBwbGVhc2UgdXNlIEhUVFAgMiBpbiB0aGUgcmVxdWVzdCAqLworICBDVVJMX0hUVFBfVkVSU0lPTl8yVExTLCAvKiB1c2UgdmVyc2lvbiAyIGZvciBIVFRQUywgdmVyc2lvbiAxLjEgZm9yIEhUVFAgKi8KKyAgQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UsICAvKiBwbGVhc2UgdXNlIEhUVFAgMiB3aXRob3V0IEhUVFAvMS4xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBncmFkZSAqLwogCiAgIENVUkxfSFRUUF9WRVJTSU9OX0xBU1QgLyogKklMTEVHQUwqIGh0dHAgdmVyc2lvbiAqLwogfTsKQEAgLTE4MTUsNiArMTg2Niw3IEBACiAgIENGSU5JVChPQlNPTEVURTIpLAogCiAgIENGSU5JVChTVFJFQU0pLAorICBDRklOSVQoQ09OVEVOVExFTiksIC8qIGFkZGVkIGluIDcuNDYuMCwgcHJvdmlkZSBhIGN1cmxfb2ZmX3QgbGVuZ3RoICovCiAKICAgQ1VSTEZPUk1fTEFTVEVOVFJZIC8qIHRoZSBsYXN0IHVudXNlZCAqLwogfSBDVVJMZm9ybW9wdGlvbjsKQEAgLTIwNjksMTIgKzIxMjEsMTggQEAKICAgQ1VSTFNTTEJBQ0tFTkRfQ1lBU1NMID0gNywKICAgQ1VSTFNTTEJBQ0tFTkRfU0NIQU5ORUwgPSA4LAogICBDVVJMU1NMQkFDS0VORF9EQVJXSU5TU0wgPSA5LAotICBDVVJMU1NMQkFDS0VORF9BWFRMUyA9IDEwCisgIENVUkxTU0xCQUNLRU5EX0FYVExTID0gMTAsCisgIENVUkxTU0xCQUNLRU5EX01CRURUTFMgPSAxMQogfSBjdXJsX3NzbGJhY2tlbmQ7CiAKKy8qIGFsaWFzZXMgZm9yIGxpYnJhcnkgY2xvbmVzIGFuZCByZW5hbWVzICovCisjZGVmaW5lIENVUkxTU0xCQUNLRU5EX0xJQlJFU1NMIDEKKyNkZWZpbmUgQ1VSTFNTTEJBQ0tFTkRfQk9SSU5HU1NMIDEKKyNkZWZpbmUgQ1VSTFNTTEJBQ0tFTkRfV09MRlNTTCA2CisKIC8qIEluZm9ybWF0aW9uIGFib3V0IHRoZSBTU0wgbGlicmFyeSB1c2VkIGFuZCB0aGUgcmVzcGVjdGl2ZSBpbnRlcm5hbCBTU0wKICAgIGhhbmRsZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gb2J0YWluIGZ1cnRoZXIgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZQotICAgY29ubmVjdGlvbi4gQXNrZWQgZm9yIHdpdGggQ1VSTElORk9fVExTX1NFU1NJT04uICovCisgICBjb25uZWN0aW9uLiBBc2tlZCBmb3Igd2l0aCBDVVJMSU5GT19UTFNfU1NMX1BUUiBvciBDVVJMSU5GT19UTFNfU0VTU0lPTi4gKi8KIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKICAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7CiAgIHZvaWQgKmludGVybmFsczsKQEAgLTIwODQsNiArMjE0Miw3IEBACiAjZGVmaW5lIENVUkxJTkZPX0xPTkcgICAgIDB4MjAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX0RPVUJMRSAgIDB4MzAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX1NMSVNUICAgIDB4NDAwMDAwCisjZGVmaW5lIENVUkxJTkZPX1NPQ0tFVCAgIDB4NTAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX01BU0sgICAgIDB4MGZmZmZmCiAjZGVmaW5lIENVUkxJTkZPX1RZUEVNQVNLIDB4ZjAwMDAwCiAKQEAgLTIxMzIsOSArMjE5MSwxMSBAQAogICBDVVJMSU5GT19MT0NBTF9JUCAgICAgICAgID0gQ1VSTElORk9fU1RSSU5HICsgNDEsCiAgIENVUkxJTkZPX0xPQ0FMX1BPUlQgICAgICAgPSBDVVJMSU5GT19MT05HICAgKyA0MiwKICAgQ1VSTElORk9fVExTX1NFU1NJT04gICAgICA9IENVUkxJTkZPX1NMSVNUICArIDQzLAorICBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgICAgID0gQ1VSTElORk9fU09DS0VUICsgNDQsCisgIENVUkxJTkZPX1RMU19TU0xfUFRSICAgICAgPSBDVVJMSU5GT19TTElTVCAgKyA0NSwKICAgLyogRmlsbCBpbiBuZXcgZW50cmllcyBiZWxvdyBoZXJlISAqLwogCi0gIENVUkxJTkZPX0xBU1RPTkUgICAgICAgICAgPSA0MworICBDVVJMSU5GT19MQVNUT05FICAgICAgICAgID0gNDUKIH0gQ1VSTElORk87CiAKIC8qIENVUkxJTkZPX1JFU1BPTlNFX0NPREUgaXMgdGhlIG5ldyBuYW1lIGZvciB0aGUgb3B0aW9uIHByZXZpb3VzbHkga25vd24gYXMKQEAgLTIyOTQsNiArMjM1NSw4IEBACiAjZGVmaW5lIENVUkxfVkVSU0lPTl9HU1NBUEkgICAgICAgKDE8PDE3KSAvKiBCdWlsdCBhZ2FpbnN0IGEgR1NTLUFQSSBsaWJyYXJ5ICovCiAjZGVmaW5lIENVUkxfVkVSU0lPTl9LRVJCRVJPUzUgICAgKDE8PDE4KSAvKiBLZXJiZXJvcyBWNSBhdXRoIGlzIHN1cHBvcnRlZCAqLwogI2RlZmluZSBDVVJMX1ZFUlNJT05fVU5JWF9TT0NLRVRTICgxPDwxOSkgLyogVW5peCBkb21haW4gc29ja2V0cyBzdXBwb3J0ICovCisjZGVmaW5lIENVUkxfVkVSU0lPTl9QU0wgICAgICAgICAgKDE8PDIwKSAvKiBNb3ppbGxhJ3MgUHVibGljIFN1ZmZpeCBMaXN0LCB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29va2llIGRvbWFpbiB2ZXJpZmljYXRpb24gKi8KIAogIC8qCiAgKiBOQU1FIGN1cmxfdmVyc2lvbl9pbmZvKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5jbWFrZSBiL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5jbWFrZQppbmRleCA2MGJjN2E3Li5iYmIzMWE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguY21ha2UKKysrIGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmNtYWtlCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogICoKICAqIElmIHlvdSB0aGluayB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBuZWVkcyB0byBiZSBjaGFuZ2VkLCBhZGp1c3RlZAogICogb3IgZml4ZWQgaW4gdGhpcyBmaWxlLCB0aGVuLCByZXBvcnQgaXQgb24gdGhlIGxpYmN1cmwgZGV2ZWxvcG1lbnQKLSAqIG1haWxpbmcgbGlzdDogaHR0cDovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KKyAqIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCiAgKgogICogVGhpcyBoZWFkZXIgZmlsZSBzaGFsbCBvbmx5IGV4cG9ydCBzeW1ib2xzIHdoaWNoIGFyZSAnY3VybCcgb3IgJ0NVUkwnCiAgKiBwcmVmaXhlZCwgb3RoZXJ3aXNlIHB1YmxpYyBuYW1lIHNwYWNlIHdvdWxkIGJlIHBvbGx1dGVkLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmRpc3QgYi9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguZGlzdAppbmRleCBmMDk0MTlhLi5hZTk1MDk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguZGlzdAorKysgYi9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguZGlzdApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5LDcgKzQ5LDcgQEAKICAqCiAgKiBJZiB5b3UgdGhpbmsgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgbmVlZHMgdG8gYmUgY2hhbmdlZCwgYWRqdXN0ZWQKICAqIG9yIGZpeGVkIGluIHRoaXMgZmlsZSwgdGhlbiwgcmVwb3J0IGl0IG9uIHRoZSBsaWJjdXJsIGRldmVsb3BtZW50Ci0gKiBtYWlsaW5nIGxpc3Q6IGh0dHA6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCisgKiBtYWlsaW5nIGxpc3Q6IGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogICoKICAqIFRyeSB0byBrZWVwIG9uZSBzZWN0aW9uIHBlciBwbGF0Zm9ybSwgY29tcGlsZXIgYW5kIGFyY2hpdGVjdHVyZSwKICAqIG90aGVyd2lzZSwgaWYgYW4gZXhpc3Rpbmcgc2VjdGlvbiBpcyByZXVzZWQgZm9yIGEgZGlmZmVyZW50IG9uZSBhbmQKQEAgLTUyNyw4ICs1MjcsOSBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCiAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pIHx8IFwKLSAgICAgIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykKKyMgIGlmICFkZWZpbmVkKF9fTFA2NF9fKSAmJiAoZGVmaW5lZChfX0lMUDMyX18pIHx8IFwKKyAgICAgIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCisgICAgICBkZWZpbmVkKF9fc3BhcmNfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3NoX18pKQogIyAgICBkZWZpbmUgQ1VSTF9TSVpFT0ZfTE9ORyAgICAgICAgICAgNAogIyAgICBkZWZpbmUgQ1VSTF9UWVBFT0ZfQ1VSTF9PRkZfVCAgICAgbG9uZyBsb25nCiAjICAgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICAgICAibGxkIgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmluIGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmluCmluZGV4IDdjYjJiNmUuLjc5MjQxOTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5pbgorKysgYi9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguaW4KQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSw3ICszNSw3IEBACiAgKgogICogSWYgeW91IHRoaW5rIHRoYXQgc29tZXRoaW5nIGFjdHVhbGx5IG5lZWRzIHRvIGJlIGNoYW5nZWQsIGFkanVzdGVkCiAgKiBvciBmaXhlZCBpbiB0aGlzIGZpbGUsIHRoZW4sIHJlcG9ydCBpdCBvbiB0aGUgbGliY3VybCBkZXZlbG9wbWVudAotICogbWFpbGluZyBsaXN0OiBodHRwOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LworICogbWFpbGluZyBsaXN0OiBodHRwczovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KICAqCiAgKiBUaGlzIGhlYWRlciBmaWxlIHNoYWxsIG9ubHkgZXhwb3J0IHN5bWJvbHMgd2hpY2ggYXJlICdjdXJsJyBvciAnQ1VSTCcKICAqIHByZWZpeGVkLCBvdGhlcndpc2UgcHVibGljIG5hbWUgc3BhY2Ugd291bGQgYmUgcG9sbHV0ZWQuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvY3VybHJ1bGVzLmggYi9pbmNsdWRlL2N1cmwvY3VybHJ1bGVzLmgKaW5kZXggMTE2M2U5NS4uOTBhOWVmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsL2N1cmxydWxlcy5oCisrKyBiL2luY2x1ZGUvY3VybC9jdXJscnVsZXMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAqIGxpYnJhcnkgaXMgcHJvcGVybHkgYnVpbHQgYW5kIHVzZWQuCiAgKgogICogWW91IGNhbiBmaW5kIGZ1cnRoZXIgaGVscCBvbiB0aGUgbGliY3VybCBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3Q6Ci0gKiBodHRwOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LworICogaHR0cHM6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCiAgKgogICogTk9URSAyCiAgKiAtLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9jdXJsdmVyLmggYi9pbmNsdWRlL2N1cmwvY3VybHZlci5oCmluZGV4IGJlNDQyZWYuLjdjZWE5OTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9jdXJsdmVyLmgKKysrIGIvaW5jbHVkZS9jdXJsL2N1cmx2ZXIuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDE3ICsyNiwxNyBAQAogICAgYSBzY3JpcHQgYXQgcmVsZWFzZS10aW1lLiBUaGlzIHdhcyBtYWRlIGl0cyBvd24gaGVhZGVyIGZpbGUgaW4gNy4xMS4yICovCiAKIC8qIFRoaXMgaXMgdGhlIGdsb2JhbCBwYWNrYWdlIGNvcHlyaWdodCAqLwotI2RlZmluZSBMSUJDVVJMX0NPUFlSSUdIVCAiMTk5NiAtIDIwMTUgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LiIKKyNkZWZpbmUgTElCQ1VSTF9DT1BZUklHSFQgIjE5OTYgLSAyMDE2IERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPi4iCiAKIC8qIFRoaXMgaXMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsaWJjdXJsIHBhY2thZ2UgZnJvbSB3aGljaCB0aGlzIGhlYWRlcgogICAgZmlsZSBvcmlnaW5zOiAqLwotI2RlZmluZSBMSUJDVVJMX1ZFUlNJT04gIjcuNDMuMC1ERVYiCisjZGVmaW5lIExJQkNVUkxfVkVSU0lPTiAiNy40OS4xLURFViIKIAogLyogVGhlIG51bWVyaWMgdmVyc2lvbiBudW1iZXIgaXMgYWxzbyBhdmFpbGFibGUgImluIHBhcnRzIiBieSB1c2luZyB0aGVzZQogICAgZGVmaW5lczogKi8KICNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX01BSk9SIDcKLSNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX01JTk9SIDQzCi0jZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9QQVRDSCAwCisjZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9NSU5PUiA0OQorI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fUEFUQ0ggMQogCiAvKiBUaGlzIGlzIHRoZSBudW1lcmljIHZlcnNpb24gb2YgdGhlIGxpYmN1cmwgdmVyc2lvbiBudW1iZXIsIG1lYW50IGZvciBlYXNpZXIKICAgIHBhcnNpbmcgYW5kIGNvbXBhcmlvbnMgYnkgcHJvZ3JhbXMuIFRoZSBMSUJDVVJMX1ZFUlNJT05fTlVNIGRlZmluZSB3aWxsCkBAIC01Nyw3ICs1Nyw3IEBACiAgICBDVVJMX1ZFUlNJT05fQklUUygpIG1hY3JvIHNpbmNlIGN1cmwncyBvd24gY29uZmlndXJlIHNjcmlwdCBncmVwcyBmb3IgaXQKICAgIGFuZCBuZWVkcyBpdCB0byBjb250YWluIHRoZSBmdWxsIG51bWJlci4KICovCi0jZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9OVU0gMHgwNzJCMDAKKyNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX05VTSAweDA3MzEwMQogCiAvKgogICogVGhpcyBpcyB0aGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBmdWxsIHNvdXJjZSBwYWNrYWdlIHdhcyBjcmVhdGVkLiBUaGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9lYXN5LmggYi9pbmNsdWRlL2N1cmwvZWFzeS5oCmluZGV4IGMxZTNlNzYuLmFmYzc2NmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9lYXN5LmgKKysrIGIvaW5jbHVkZS9jdXJsL2Vhc3kuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9tcHJpbnRmLmggYi9pbmNsdWRlL2N1cmwvbXByaW50Zi5oCmluZGV4IGM2YjBkNzYuLmUyMGY1NDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9tcHJpbnRmLmgKKysrIGIvaW5jbHVkZS9jdXJsL21wcmludGYuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDggKzI0LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+IC8qIG5lZWRlZCBmb3IgRklMRSAqLwotCi0jaW5jbHVkZSAiY3VybC5oIgorI2luY2x1ZGUgImN1cmwuaCIgIC8qIGZvciBDVVJMX0VYVEVSTiAqLwogCiAjaWZkZWYgIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTQ0LDI5ICs0Myw2IEBACiBDVVJMX0VYVEVSTiBjaGFyICpjdXJsX21hcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIENVUkxfRVhURVJOIGNoYXIgKmN1cmxfbXZhcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKIAotI2lmZGVmIF9NUFJJTlRGX1JFUExBQ0UKLSMgdW5kZWYgcHJpbnRmCi0jIHVuZGVmIGZwcmludGYKLSMgdW5kZWYgc3ByaW50ZgotIyB1bmRlZiB2c3ByaW50ZgotIyB1bmRlZiBzbnByaW50ZgotIyB1bmRlZiB2cHJpbnRmCi0jIHVuZGVmIHZmcHJpbnRmCi0jIHVuZGVmIHZzbnByaW50ZgotIyB1bmRlZiBhcHJpbnRmCi0jIHVuZGVmIHZhcHJpbnRmCi0jIGRlZmluZSBwcmludGYgY3VybF9tcHJpbnRmCi0jIGRlZmluZSBmcHJpbnRmIGN1cmxfbWZwcmludGYKLSMgZGVmaW5lIHNwcmludGYgY3VybF9tc3ByaW50ZgotIyBkZWZpbmUgdnNwcmludGYgY3VybF9tdnNwcmludGYKLSMgZGVmaW5lIHNucHJpbnRmIGN1cmxfbXNucHJpbnRmCi0jIGRlZmluZSB2cHJpbnRmIGN1cmxfbXZwcmludGYKLSMgZGVmaW5lIHZmcHJpbnRmIGN1cmxfbXZmcHJpbnRmCi0jIGRlZmluZSB2c25wcmludGYgY3VybF9tdnNucHJpbnRmCi0jIGRlZmluZSBhcHJpbnRmIGN1cmxfbWFwcmludGYKLSMgZGVmaW5lIHZhcHJpbnRmIGN1cmxfbXZhcHJpbnRmCi0jZW5kaWYKLQogI2lmZGVmICBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvbXVsdGkuaCBiL2luY2x1ZGUvY3VybC9tdWx0aS5oCmluZGV4IDBkODU5ZjguLjBmYmJkOTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9tdWx0aS5oCisrKyBiL2luY2x1ZGUvY3VybC9tdWx0aS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzcwLDYgKzM3MCwxMiBAQAogICAvKiBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGNvbm5lY3Rpb25zIGluIHRvdGFsICovCiAgIENJTklUKE1BWF9UT1RBTF9DT05ORUNUSU9OUywgTE9ORywgMTMpLAogCisgICAvKiBUaGlzIGlzIHRoZSBzZXJ2ZXIgcHVzaCBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyICovCisgIENJTklUKFBVU0hGVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMTQpLAorCisgIC8qIFRoaXMgaXMgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgc2VydmVyIHB1c2ggY2FsbGJhY2sgKi8KKyAgQ0lOSVQoUFVTSERBVEEsIE9CSkVDVFBPSU5ULCAxNSksCisKICAgQ1VSTE1PUFRfTEFTVEVOVFJZIC8qIHRoZSBsYXN0IHVudXNlZCAqLwogfSBDVVJMTW9wdGlvbjsKIApAQCAtMzk3LDYgKzQwMywzMSBAQAogQ1VSTF9FWFRFUk4gQ1VSTE1jb2RlIGN1cmxfbXVsdGlfYXNzaWduKENVUkxNICptdWx0aV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQsIHZvaWQgKnNvY2twKTsKIAorCisvKgorICogTmFtZTogY3VybF9wdXNoX2NhbGxiYWNrCisgKgorICogRGVzYzogVGhpcyBjYWxsYmFjayBnZXRzIGNhbGxlZCB3aGVuIGEgbmV3IHN0cmVhbSBpcyBiZWluZyBwdXNoZWQgYnkgdGhlCisgKiAgICAgICBzZXJ2ZXIuIEl0IGFwcHJvdmVzIG9yIGRlbmllcyB0aGUgbmV3IHN0cmVhbS4KKyAqCisgKiBSZXR1cm5zOiBDVVJMX1BVU0hfT0sgb3IgQ1VSTF9QVVNIX0RFTlkuCisgKi8KKyNkZWZpbmUgQ1VSTF9QVVNIX09LICAgMAorI2RlZmluZSBDVVJMX1BVU0hfREVOWSAxCisKK3N0cnVjdCBjdXJsX3B1c2hoZWFkZXJzOyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiBvbmx5ICovCisKK0NVUkxfRVhURVJOIGNoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW51bShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtKTsKK0NVUkxfRVhURVJOIGNoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW5hbWUoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOworCit0eXBlZGVmIGludCAoKmN1cmxfcHVzaF9jYWxsYmFjaykoQ1VSTCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkwgKmVhc3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8qIGVuZCBvZiBleHRlcm4gIkMiICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9zdGRjaGVhZGVycy5oIGIvaW5jbHVkZS9jdXJsL3N0ZGNoZWFkZXJzLmgKaW5kZXggYWQ4MmVmNi4uNmYwZjdmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsL3N0ZGNoZWFkZXJzLmgKKysrIGIvaW5jbHVkZS9jdXJsL3N0ZGNoZWFkZXJzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvdHlwZWNoZWNrLWdjYy5oIGIvaW5jbHVkZS9jdXJsL3R5cGVjaGVjay1nY2MuaAppbmRleCAxM2ZiMGZhLi42ZWM4YmNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvdHlwZWNoZWNrLWdjYy5oCisrKyBiL2luY2x1ZGUvY3VybC90eXBlY2hlY2stZ2NjLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMTgsNjAgKzIxOCw2NyBAQAogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBvcHRpb24gdGFrZXMgYSBjaGFyKiBhcmd1bWVudCAqLwogI2RlZmluZSBfY3VybF9pc19zdHJpbmdfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKG9wdGlvbikgPT0gQ1VSTE9QVF9VUkwgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JTlRFUkZBQ0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ORVRSQ19GSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSUFdEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSTkFNRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QQVNTV09SRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVVTRVJQV0QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVVTRVJOQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVBBU1NXT1JEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9OT1BST1hZIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRUZFUkVSIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSQUdFTlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKG9wdGlvbikgPT0gQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DQUlORk8gfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DQVBBVEggfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DT09LSUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DT09LSUVGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DT09LSUVKQVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DT09LSUVMSVNUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBQT1JUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBfQUNDT1VOVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5HRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DVVNUT01SRVFVRVNUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xDRVJUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xDRVJUVFlQRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xLRVkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xLRVlUWVBFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9LRVlQQVNTV0QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xFTkdJTkUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DQUlORk8gfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DQVBBVEggfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5ET01fRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9FR0RTT0NLRVQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9LUkJMRVZFTCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DUkxGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JU1NVRVJDRVJUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfS05PV05IT1NUUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9NQUlMX0ZST00gfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ETlNfU0VSVkVSUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DVVNUT01SRVFVRVNUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ETlNfSU5URVJGQUNFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ETlNfTE9DQUxfSVA0IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ETlNfTE9DQUxfSVA2IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ETlNfU0VSVkVSUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9FR0RTT0NLRVQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBQT1JUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBfQUNDT1VOVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JTlRFUkZBQ0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JU1NVRVJDRVJUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9LRVlQQVNTV0QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9LUkJMRVZFTCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9MT0dJTl9PUFRJT05TIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9NQUlMX0FVVEggfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9NQUlMX0ZST00gfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ORVRSQ19GSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9OT1BST1hZIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QQVNTV09SRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVBBU1NXT1JEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVVTRVJOQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWVVTRVJQV0QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5ET01fRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5HRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRUZFUkVSIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TRVJWSUNFX05BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfS05PV05IT1NUUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xDRVJUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xDRVJUVFlQRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xFTkdJTkUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xLRVkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xLRVlUWVBFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9UTFNBVVRIX1RZUEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRIIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VUkwgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSQUdFTlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSTkFNRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9VU0VSUFdEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgMCkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgY3VybF93cml0ZV9jYWxsYmFjayBhcmd1bWVudCAqLwpAQCAtMjg3LDIxICsyOTQsMjIgQEAKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgZGF0YSBhcmd1bWVudCB0byBwYXNzIHRvIGEgY2FsbGJhY2sgKi8KICNkZWZpbmUgX2N1cmxfaXNfY2JfZGF0YV9vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChvcHRpb24pID09IENVUkxPUFRfV1JJVEVEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUkVBRERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSU9DVExEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU09DS09QVERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfT1BFTlNPQ0tFVERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJPR1JFU1NEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSEVBREVSREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKG9wdGlvbikgPT0gQ1VSTE9QVF9DSFVOS19EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9ERUJVR0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xfQ1RYX0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TRUVLREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUklWQVRFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfS0VZREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JTlRFUkxFQVZFREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DSFVOS19EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9GTk1BVENIX0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9IRUFERVJEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JTlRFUkxFQVZFREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9JT0NUTERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9PUEVOU09DS0VUREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUklWQVRFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9HUkVTU0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRUFEREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TRUVLREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TT0NLT1BUREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfS0VZREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xfQ1RYX0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9XUklURURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgMCkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgUE9TVCBkYXRhIGFyZ3VtZW50ICh2b2lkKiBvciBjaGFyKikgKi8KQEAgLTMxMiwxMyArMzIwLDE1IEBACiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIHN0cnVjdCBjdXJsX3NsaXN0ICogYXJndW1lbnQgKi8KICNkZWZpbmUgX2N1cmxfaXNfc2xpc3Rfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChvcHRpb24pID09IENVUkxPUFRfSFRUUEhFQURFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSFRUUDIwMEFMSUFTRVMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUVVPVEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChvcHRpb24pID09IENVUkxPUFRfSFRUUDIwMEFMSUFTRVMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSFRUUEhFQURFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9SQ1BUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfUE9TVFFVT1RFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfUFJFUVVPVEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlIRUFERVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUVVPVEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUkVTT0xWRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfVEVMTkVUT1BUSU9OUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9SQ1BUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIDApCiAKIC8qIGdyb3VwcyBvZiBjdXJsX2Vhc3lfZ2V0aW5mbyBpbmZvcyB0aGF0IHRha2UgdGhlIHNhbWUgdHlwZSBvZiBhcmd1bWVudCAqLwpkaWZmIC0tZ2l0IGEvbGliLy5naXRpZ25vcmUgYi9saWIvLmdpdGlnbm9yZQppbmRleCBlMjg5NjQwLi5iMjNmMjY1IDEwMDY0NAotLS0gYS9saWIvLmdpdGlnbm9yZQorKysgYi9saWIvLmdpdGlnbm9yZQpAQCAtMSwxNSArMSwxMyBAQAotY3VybF9jb25maWcuaAotY3VybF9jb25maWcuaC5pbgotc3RhbXAtaDEKLSoub3JpZwotKi5yZWoKLVRBR1MKLU1ha2VmaWxlLnZjOC5kaXN0Ci1NYWtlZmlsZS52YzkuZGlzdAotbGliY3VybC5wbGlzdC5kaXN0Ci1NYWtlZmlsZS52YzEwLmRpc3QKLWxpYmN1cmwudmVycwogKi5hCi0qLnJlcwogKi5pbXAKICoubmxtCisqLm9yaWcKKyoucmVqCisqLnJlcworTWFrZWZpbGUudmMqLmRpc3QKK1RBR1MKK2N1cmxfY29uZmlnLmgKK2N1cmxfY29uZmlnLmguaW4KK2xpYmN1cmwucGxpc3QuZGlzdAorbGliY3VybC52ZXJzCitzdGFtcC1oMQpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLldhdGNvbSBiL2xpYi9NYWtlZmlsZS5XYXRjb20KaW5kZXggMGI3YmE1OS4uY2JjNTRjZiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLldhdGNvbQorKysgYi9saWIvTWFrZWZpbGUuV2F0Y29tCkBAIC0xLDYgKzEsMjggQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IC0gMjAwOSwgR2lzbGUgVmFuZW0gPGd2YW5lbUB5YWhvby5ubz4uCisjIENvcHlyaWdodCAoQykgMjAwNSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjCiAjICBXYXRjb20gLyBPcGVuV2F0Y29tIC8gV2luMzIgbWFrZWZpbGUgZm9yIGxpYmN1cmwuCi0jICBHLiBWYW5lbSA8Z3ZhbmVtQGJyb2FkcGFyay5ubz4KICMKIAogLkVSQVNFCkBAIC0xNjUsMTYgKzE4NywxNyBAQAogCiBPQkpTMSA9IC4vJChDU09VUkNFUzouYz0ub2JqKQogT0JKUzIgPSAkKE9CSlMxOnZ0bHMvPSkKLU9CSlMzID0gJChPQkpTMjogPSAuLykKLU9CSlNfU1RBVCA9ICQoT0JKUzM6Li89JChPQkpfU1RBVCkvKQotT0JKU19EWU4gID0gJChPQkpTMzouLz0kKE9CSl9EWU4pLykKK09CSlMzID0gJChPQkpTMjp2YXV0aC89KQorT0JKUzQgPSAkKE9CSlMzOiA9IC4vKQorT0JKU19TVEFUID0gJChPQkpTNDouLz0kKE9CSl9TVEFUKS8pCitPQkpTX0RZTiAgPSAkKE9CSlM0Oi4vPSQoT0JKX0RZTikvKQogCiBDVVJMQlVJTERIID0gLi4vaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oCiBSRVNPVVJDRSAgID0gJChPQkpfRFlOKS9saWJjdXJsLnJlcwogCiBESVJTID0gJChPQkpfQkFTRSkgJChPQkpfQkFTRSkvc3RhdCAkKE9CSl9CQVNFKS9keW4KIAotLmMgOiB2dGxzCisuYyA6IHZhdXRoIHZ0bHMKIAogYWxsOiAkKENVUkxCVUlMREgpICQoRElSUykgJChUQVJHRVRTKSAuU1lNQk9MSUMKIAlAZWNobyBXZWxjb21lIHRvIGxpYmN1cmwKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5hbSBiL2xpYi9NYWtlZmlsZS5hbQppbmRleCBhMmMzZGM1Li4xMmFhZjYxIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCw3ICszMCw3IEBACiAgY29uZmlnLW9zNDAwLmggc2V0dXAtb3M0MDAuaCBjb25maWctc3ltYmlhbi5oIE1ha2VmaWxlLldhdGNvbQkJXAogIGNvbmZpZy10cGYuaCBtay1jYS1idW5kbGUucGwgbWstY2EtYnVuZGxlLnZicyAkKENNQUtFX0RJU1QpCVwKICBmaXJlZm94LWRiMnBlbS5zaCBjb25maWctdnh3b3Jrcy5oIE1ha2VmaWxlLnZ4d29ya3MgY2hlY2tzcmMucGwJXAotIG9iam5hbWVzLXRlc3QwOC5zaCBvYmpuYW1lcy10ZXN0MTAuc2ggb2JqbmFtZXMuaW5jIGNoZWNrc3JjLndoaXRlbGlzdAorIG9iam5hbWVzLXRlc3QwOC5zaCBvYmpuYW1lcy10ZXN0MTAuc2ggb2JqbmFtZXMuaW5jCiAKIGxpYl9MVExJQlJBUklFUyA9IGxpYmN1cmwubGEKIApAQCAtODAsOSArODAsOSBAQAogIwogIyBUaGlzIGNvbmRpdGlvbmFsIHNvbmFtZSBidW1wIFNIT1VMRCBiZSByZW1vdmVkIGF0IG5leHQgInByb3BlciIgYnVtcC4KICMKLVZFUlNJT05JTkZPPS12ZXJzaW9uLWluZm8gODowOjMKK1ZFUlNJT05JTkZPPS12ZXJzaW9uLWluZm8gOTowOjQKIGVsc2UKLVZFUlNJT05JTkZPPS12ZXJzaW9uLWluZm8gNzowOjMKK1ZFUlNJT05JTkZPPS12ZXJzaW9uLWluZm8gODowOjQKIGVuZGlmCiAKICMgVGhpcyBmbGFnIGFjY2VwdHMgYW4gYXJndW1lbnQgb2YgdGhlIGZvcm0gY3VycmVudFs6cmV2aXNpb25bOmFnZV1dLiBTbywKQEAgLTE0Niw3ICsxNDYsOCBAQAogbGliY3VybHVfbGFfU09VUkNFUyA9ICQoQ1NPVVJDRVMpICQoSEhFQURFUlMpCiAKIGNoZWNrc3JjOgotCUBAUEVSTEAgJCh0b3Bfc3JjZGlyKS9saWIvY2hlY2tzcmMucGwgLUQkKHRvcF9zcmNkaXIpL2xpYiAkKENTT1VSQ0VTKSAkKEhIRUFERVJTKQorCUBQRVJMQCAkKHNyY2RpcikvY2hlY2tzcmMucGwgLUQkKHNyY2RpcikgLVckKHNyY2RpcikvY3VybF9jb25maWcuaCAgICAgIFwKKwkkKHNyY2RpcikvKi5bY2hdICQoc3JjZGlyKS92YXV0aC8qLltjaF0gJChzcmNkaXIpL3Z0bHMvKi5bY2hdCiAKIGlmIENVUkxERUJVRwogIyBmb3IgZGVidWcgYnVpbGRzLCB3ZSBzY2FuIHRoZSBzb3VyY2VzIG9uIGFsbCByZWd1bGFyIG1ha2UgaW52b2tlcwpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmIzMiBiL2xpYi9NYWtlZmlsZS5iMzIKaW5kZXggMzdjMjY0OC4uNDgxMzg2MSAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLmIzMgorKysgYi9saWIvTWFrZWZpbGUuYjMyCkBAIC0xLDEzICsxLDMzIEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAwMCwgSmFlcGlsIEtpbSwgPHBpdEBwYXJhZGlzZS5uZXQubno+LgorIyBDb3B5cmlnaHQgKEMpIDIwMDEgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjICBNYWtlZmlsZS5iMzIgLSBCb3JsYW5kJ3MgQysrIENvbXBpbGVyIDUuWAogIwotIyAgJ2xpYicgZGlyZWN0b3J5Ci0jCiAjICAnQkNDRElSJyBoYXMgdG8gYmUgc2V0IHVwIHRvIHBvaW50IHRvIHRoZSBiYXNlIGRpcmVjdG9yeQogIyAgb2YgdGhlIGNvbXBpbGVyLCBpLmUuIFNFVCBCQ0NESVIgPSBjOlxCb3JsYW5kXEJDQzU1CiAjCi0jICBJbml0aWFsbHkgd3JpdHRlbiBieSBKYWVwaWwgS2ltLCBwaXRAcGFyYWRpc2UubmV0Lm56CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIWlmICIkKF9fTUFLRV9fKSIgPT0gIiIKQEAgLTQ5LDcgKzY5LDcgQEAKIExJQkZMQUdTID0gL0MgL1AzMgogTERGTEFHUyAgPSAtcSAtbHEgLWxhYSAtdFdECiAKLVNSQ0RJUiAgID0gLjsuXHZ0bHMKK1NSQ0RJUiAgID0gLjsuXHZhdXRoOy5cdnRscwogT0JKRElSICAgPSAuXEJDQ19vYmpzCiBJTkNESVJTICA9IC1JLjsuXGxpYjsuLlxpbmNsdWRlCiBMSU5LTElCICA9ICQoQkNDRElSKVxsaWJcY3czMm10LmxpYiAkKEJDQ0RJUilcbGliXHdzMl8zMi5saWIKQEAgLTk1LDEwICsxMTUsMTEgQEAKICMgdXNpbmcgZXhwbGljaXQgY29tcGlsYXRpb24gYnVpbGQgcnVsZXMgaW5zdGVhZCBvZiBpbXBsaWNpdCBvbmVzLgogCiBOT0hZUEhFTjEgPSAkKENTT1VSQ0VTOi09XykKLU5PSFlQSEVOMiA9ICQoTk9IWVBIRU4xOnZ0bHMvPSkKK05PSFlQSEVOMiA9ICQoTk9IWVBIRU4xOnZhdXRoLz0pCitOT0hZUEhFTjMgPSAkKE5PSFlQSEVOMjp2dGxzLz0pCiAKLU9CSkVDVFMgPSAkKE5PSFlQSEVOMjouYz0ub2JqKQotUFJFUFJPQ0VTU0VEID0gJChOT0hZUEhFTjI6LmM9LmludCkKK09CSkVDVFMgPSAkKE5PSFlQSEVOMzouYz0ub2JqKQorUFJFUFJPQ0VTU0VEID0gJChOT0hZUEhFTjM6LmM9LmludCkKIAogIyBCb3JsYW5kJ3MgY29tbWFuZCBsaW5lIGNvbXBpbGVyIChCQ0MzMikgdmVyc2lvbiA1LjUuMSBpbnRlZ3JhdGVkCiAjIHByZXByb2Nlc3NvciBoYXMgYSBidWcgd2hpY2ggcmVzdWx0cyBpbiBzaWxlbnRseSBnZW5lcmF0aW5nIHdyb25nCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuaW5jIGIvbGliL01ha2VmaWxlLmluYwppbmRleCBkNDQ0YTZiLi4wZWQ5OThjIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUuaW5jCisrKyBiL2xpYi9NYWtlZmlsZS5pbmMKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDEzICsyMCwyMiBAQAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK0xJQl9WQVVUSF9DRklMRVMgPSB2YXV0aC92YXV0aC5jIHZhdXRoL2NsZWFydGV4dC5jIHZhdXRoL2NyYW0uYyAgICAgICAgIFwKKyAgdmF1dGgvZGlnZXN0LmMgdmF1dGgvZGlnZXN0X3NzcGkuYyB2YXV0aC9rcmI1X2dzc2FwaS5jICAgICAgICAgICAgICAgIFwKKyAgdmF1dGgva3JiNV9zc3BpLmMgdmF1dGgvbnRsbS5jIHZhdXRoL250bG1fc3NwaS5jIHZhdXRoL29hdXRoMi5jICAgICAgIFwKKyAgdmF1dGgvc3BuZWdvX2dzc2FwaS5jIHZhdXRoL3NwbmVnb19zc3BpLmMKKworTElCX1ZBVVRIX0hGSUxFUyA9IHZhdXRoL3ZhdXRoLmggdmF1dGgvZGlnZXN0LmggdmF1dGgvbnRsbS5oCisKIExJQl9WVExTX0NGSUxFUyA9IHZ0bHMvb3BlbnNzbC5jIHZ0bHMvZ3Rscy5jIHZ0bHMvdnRscy5jIHZ0bHMvbnNzLmMgICAgIFwKICAgdnRscy9wb2xhcnNzbC5jIHZ0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5jIHZ0bHMvYXh0bHMuYyAgICAgICAgICAgICAgIFwKLSAgdnRscy9jeWFzc2wuYyB2dGxzL3NjaGFubmVsLmMgdnRscy9kYXJ3aW5zc2wuYyB2dGxzL2dza2l0LmMKKyAgdnRscy9jeWFzc2wuYyB2dGxzL3NjaGFubmVsLmMgdnRscy9kYXJ3aW5zc2wuYyB2dGxzL2dza2l0LmMgICAgICAgICAgIFwKKyAgdnRscy9tYmVkdGxzLmMKIAogTElCX1ZUTFNfSEZJTEVTID0gdnRscy9vcGVuc3NsLmggdnRscy92dGxzLmggdnRscy9ndGxzLmggICAgICAgICAgICAgICAgXAogICB2dGxzL25zc2cuaCB2dGxzL3BvbGFyc3NsLmggdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmggdnRscy9heHRscy5oICAgXAotICB2dGxzL2N5YXNzbC5oIHZ0bHMvc2NoYW5uZWwuaCB2dGxzL2RhcndpbnNzbC5oIHZ0bHMvZ3NraXQuaAorICB2dGxzL2N5YXNzbC5oIHZ0bHMvc2NoYW5uZWwuaCB2dGxzL2RhcndpbnNzbC5oIHZ0bHMvZ3NraXQuaCAgICAgICAgICAgXAorICB2dGxzL21iZWR0bHMuaAogCiBMSUJfQ0ZJTEVTID0gZmlsZS5jIHRpbWV2YWwuYyBiYXNlNjQuYyBob3N0aXAuYyBwcm9ncmVzcy5jIGZvcm1kYXRhLmMgICBcCiAgIGNvb2tpZS5jIGh0dHAuYyBzZW5kZi5jIGZ0cC5jIHVybC5jIGRpY3QuYyBpZjJpcC5jIHNwZWVkY2hlY2suYyAgICAgICBcCkBAIC00MSwxMiArNTAsMTAgQEAKICAgY3VybF9zc3BpLmMgc2xpc3QuYyBub25ibG9jay5jIGN1cmxfbWVtcmNoci5jIGltYXAuYyBwb3AzLmMgc210cC5jICAgIFwKICAgcGluZ3BvbmcuYyBydHNwLmMgY3VybF90aHJlYWRzLmMgd2Fybmxlc3MuYyBobWFjLmMgY3VybF9ydG1wLmMgICAgICAgIFwKICAgb3BlbmxkYXAuYyBjdXJsX2dldGhvc3RuYW1lLmMgZ29waGVyLmMgaWRuX3dpbjMyLmMgICAgICAgICAgICAgICAgICAgIFwKLSAgaHR0cF9uZWdvdGlhdGVfc3NwaS5jIGh0dHBfcHJveHkuYyBub24tYXNjaWkuYyBhc3luLWFyZXMuYyAgICAgICAgICAgIFwKLSAgYXN5bi10aHJlYWQuYyBjdXJsX2dzc2FwaS5jIGN1cmxfbnRsbS5jIGN1cmxfbnRsbV93Yi5jICAgICAgICAgICAgICAgIFwKLSAgY3VybF9udGxtX2NvcmUuYyBjdXJsX250bG1fbXNncy5jIGN1cmxfc2FzbC5jIGN1cmxfbXVsdGlieXRlLmMgICAgICAgIFwKLSAgaG9zdGNoZWNrLmMgY29ubmNhY2hlLmMgcGlwZWxpbmUuYyBkb3Rkb3QuYyB4NTA5YXNuMS5jICAgICAgICAgICAgICAgIFwKLSAgaHR0cDIuYyBjdXJsX3Nhc2xfc3NwaS5jIHNtYi5jIGN1cmxfc2FzbF9nc3NhcGkuYyBjdXJsX2VuZGlhbi5jICAgICAgIFwKLSAgY3VybF9kZXMuYworICBodHRwX3Byb3h5LmMgbm9uLWFzY2lpLmMgYXN5bi1hcmVzLmMgYXN5bi10aHJlYWQuYyBjdXJsX2dzc2FwaS5jICAgICAgXAorICBodHRwX250bG0uYyBjdXJsX250bG1fd2IuYyBjdXJsX250bG1fY29yZS5jIGN1cmxfc2FzbC5jICAgICAgICAgICAgICAgXAorICBjdXJsX211bHRpYnl0ZS5jIGhvc3RjaGVjay5jIGNvbm5jYWNoZS5jIHBpcGVsaW5lLmMgZG90ZG90LmMgICAgICAgICAgXAorICB4NTA5YXNuMS5jIGh0dHAyLmMgc21iLmMgY3VybF9lbmRpYW4uYyBjdXJsX2Rlcy5jIHN5c3RlbV93aW4zMi5jCiAKIExJQl9IRklMRVMgPSBhcnBhX3RlbG5ldC5oIG5ldHJjLmggZmlsZS5oIHRpbWV2YWwuaCBob3N0aXAuaCBwcm9ncmVzcy5oIFwKICAgZm9ybWRhdGEuaCBjb29raWUuaCBodHRwLmggc2VuZGYuaCBmdHAuaCB1cmwuaCBkaWN0LmggaWYyaXAuaCAgICAgICAgIFwKQEAgLTYxLDEzICs2OCwxMyBAQAogICBzbGlzdC5oIG5vbmJsb2NrLmggY3VybF9tZW1yY2hyLmggaW1hcC5oIHBvcDMuaCBzbXRwLmggcGluZ3BvbmcuaCAgICAgXAogICBydHNwLmggY3VybF90aHJlYWRzLmggd2Fybmxlc3MuaCBjdXJsX2htYWMuaCBjdXJsX3J0bXAuaCAgICAgICAgICAgICAgXAogICBjdXJsX2dldGhvc3RuYW1lLmggZ29waGVyLmggaHR0cF9wcm94eS5oIG5vbi1hc2NpaS5oIGFzeW4uaCAgICAgICAgICAgXAotICBjdXJsX250bG0uaCBjdXJsX2dzc2FwaS5oIGN1cmxfbnRsbV93Yi5oIGN1cmxfbnRsbV9jb3JlLmggICAgICAgICAgICAgXAotICBjdXJsX250bG1fbXNncy5oIGN1cmxfc2FzbC5oIGN1cmxfbXVsdGlieXRlLmggaG9zdGNoZWNrLmggICAgICAgICAgICAgXAotICBjb25uY2FjaGUuaCBjdXJsX3NldHVwX29uY2UuaCBtdWx0aWhhbmRsZS5oIHNldHVwLXZtcy5oIHBpcGVsaW5lLmggICAgXAotICBkb3Rkb3QuaCB4NTA5YXNuMS5oIGh0dHAyLmggc2lncGlwZS5oIHNtYi5oIGN1cmxfZW5kaWFuLmggY3VybF9kZXMuaCAgXAotICBjdXJsX3ByaW50Zi5oCisgIGh0dHBfbnRsbS5oIGN1cmxfZ3NzYXBpLmggY3VybF9udGxtX3diLmggY3VybF9udGxtX2NvcmUuaCAgICAgICAgICAgICBcCisgIGN1cmxfc2FzbC5oIGN1cmxfbXVsdGlieXRlLmggaG9zdGNoZWNrLmggY29ubmNhY2hlLmggICAgICAgICAgICAgICAgICBcCisgIGN1cmxfc2V0dXBfb25jZS5oIG11bHRpaGFuZGxlLmggc2V0dXAtdm1zLmggcGlwZWxpbmUuaCBkb3Rkb3QuaCAgICAgICBcCisgIHg1MDlhc24xLmggaHR0cDIuaCBzaWdwaXBlLmggc21iLmggY3VybF9lbmRpYW4uaCBjdXJsX2Rlcy5oICAgICAgICAgICBcCisgIGN1cmxfcHJpbnRmLmggc3lzdGVtX3dpbjMyLmgKIAogTElCX1JDRklMRVMgPSBsaWJjdXJsLnJjCiAKLUNTT1VSQ0VTID0gJChMSUJfQ0ZJTEVTKSAkKExJQl9WVExTX0NGSUxFUykKLUhIRUFERVJTID0gJChMSUJfSEZJTEVTKSAkKExJQl9WVExTX0hGSUxFUykKK0NTT1VSQ0VTID0gJChMSUJfQ0ZJTEVTKSAkKExJQl9WQVVUSF9DRklMRVMpICQoTElCX1ZUTFNfQ0ZJTEVTKQorSEhFQURFUlMgPSAkKExJQl9IRklMRVMpICQoTElCX1ZBVVRIX0hGSUxFUykgJChMSUJfVlRMU19IRklMRVMpCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUubTMyIGIvbGliL01ha2VmaWxlLm0zMgppbmRleCBlZTQ3ZDY3Li4yMTQyYmZjIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUubTMyCisrKyBiL2xpYi9NYWtlZmlsZS5tMzIKQEAgLTEsMyArMSwyNSBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDE5OTkgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjIyBNYWtlZmlsZSBmb3IgYnVpbGRpbmcgbGliY3VybC5hIHdpdGggTWluZ1cgKEdDQy0zLjIgb3IgbGF0ZXIpCkBAIC0zMCw3ICs1Miw3IEBACiBlbmRpZgogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGliaWRuIHBhY2thZ2UuCiBpZm5kZWYgTElCSUROX1BBVEgKLUxJQklETl9QQVRIID0gLi4vLi4vbGliaWRuLTEuMzAKK0xJQklETl9QQVRIID0gLi4vLi4vbGliaWRuLTEuMzIKIGVuZGlmCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBNUyBJRE4gcGFja2FnZS4KICMgTWljcm9zb2Z0IEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSBNaXRpZ2F0aW9uIEFQSXMgMS4xCkBAIC01OCw3ICs4MCw3IEBACiBDRkxBR1MJPSAkKENVUkxfQ0ZMQUdfRVhUUkFTKSAtZyAtTzIgLVdhbGwKIENGTEFHUwkrPSAtZm5vLXN0cmljdC1hbGlhc2luZwogIyBjb21tZW50IExERkxBR1MgYmVsb3cgdG8ga2VlcCBkZWJ1ZyBpbmZvCi1MREZMQUdTCT0gLXMKK0xERkxBR1MJPSAkKENVUkxfTERGTEFHX0VYVFJBUykgJChDVVJMX0xERkxBR19FWFRSQVNfRExMKSAtcwogQVIJPSAkKENST1NTUFJFRklYKWFyCiBSQU5MSUIJPSAkKENST1NTUFJFRklYKXJhbmxpYgogUkMJPSAkKENST1NTUFJFRklYKXdpbmRyZXMKQEAgLTEzMSw3ICsxNTMsOSBAQAogZW5kaWYKIGlmZXEgKCQoZmluZHN0cmluZyAtc3NoMiwkKENGRykpLC1zc2gyKQogU1NIMiA9IDEKK2lmbmVxICgkKGZpbmRzdHJpbmcgLXdpbnNzbCwkKENGRykpLC13aW5zc2wpCiBTU0wgPSAxCitlbmRpZgogWkxJQiA9IDEKIGVuZGlmCiBpZmVxICgkKGZpbmRzdHJpbmcgLXNzbCwkKENGRykpLC1zc2wpCkBAIC0xOTMsNiArMjE3LDExIEBACiAgIElOQ0xVREVTICs9IC1JIiQoTElCU1NIMl9QQVRIKS9pbmNsdWRlIiAtSSIkKExJQlNTSDJfUEFUSCkvd2luMzIiCiAgIENGTEFHUyArPSAtRFVTRV9MSUJTU0gyIC1ESEFWRV9MSUJTU0gyX0gKICAgRExMX0xJQlMgKz0gLUwiJChMSUJTU0gyX1BBVEgpL3dpbjMyIiAtbHNzaDIKKyAgaWZkZWYgV0lOU1NMCisgICAgaWZuZGVmIERZTgorICAgICAgRExMX0xJQlMgKz0gLWxiY3J5cHQgLWxjcnlwdDMyCisgICAgZW5kaWYKKyAgZW5kaWYKIGVuZGlmCiBpZmRlZiBTU0wKICAgaWZuZGVmIE9QRU5TU0xfSU5DTFVERQpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLm5ldHdhcmUgYi9saWIvTWFrZWZpbGUubmV0d2FyZQppbmRleCA1YTk1NWY4Li5lZTdlODdjIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUubmV0d2FyZQorKysgYi9saWIvTWFrZWZpbGUubmV0d2FyZQpAQCAtMSw5ICsxLDMxIEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMTUsIEd1ZW50ZXIgS25hdWYsIDxodHRwOi8vd3d3LmdrbncubmV0L3BocGJiPi4KKyMgQ29weXJpZ2h0IChDKSAyMDAxIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjIyBNYWtlZmlsZSBmb3IgYnVpbGRpbmcgbGliY3VybC5ubG0gKE5ldFdhcmUgdmVyc2lvbiAtIGdudSBtYWtlKQotIyMgVXNlOiBtYWtlIC1mIE1ha2VmaWxlLm5ldHdhcmUKICMjCi0jIyBDb21tZW50cyB0bzogR3VlbnRlciBLbmF1ZiBodHRwOi8vd3d3LmdrbncubmV0L3BocGJiCisjIyBVc2U6IG1ha2UgLWYgTWFrZWZpbGUubmV0d2FyZQogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtNjUsNyArODcsNyBAQAogVEFSR0VUICA9IGxpYmN1cmwKIFZFUlNJT04JPSAkKExJQkNVUkxfVkVSU0lPTikKIENPUFlSCT0gQ29weXJpZ2h0IChDKSAkKExJQkNVUkxfQ09QWVJJR0hUX1NUUikKLURFU0NSCT0gY1VSTCBsaWJjdXJsICQoTElCQ1VSTF9WRVJTSU9OX1NUUikgKCQoTElCQVJDSCkpIC0gaHR0cDovL2N1cmwuaGF4eC5zZQorREVTQ1IJPSBjVVJMIGxpYmN1cmwgJChMSUJDVVJMX1ZFUlNJT05fU1RSKSAoJChMSUJBUkNIKSkgLSBodHRwczovL2N1cmwuaGF4eC5zZQogTVRTQUZFCT0gWUVTCiBTVEFDSwk9IDY0MDAwCiBTQ1JFRU4JPSBub25lCkBAIC0zMjksNyArMzUxLDcgQEAKIAogT0JKTAk9ICQoT0JKUykgJChPQkpESVIpL253bGliLm8gJChMRExJQlMpCiAKLXZwYXRoICUuYyAuIHZ0bHMKK3ZwYXRoICUuYyAuIHZhdXRoIHZ0bHMKIAogYWxsOiBsaWIgbmxtCiAKQEAgLTQ3OSw3ICs1MDEsNyBAQAogCUBlY2hvICQoREwpI2Vycm9yIFRoaXMgJChub3RkaXIgJEApIGlzIGNyZWF0ZWQgZm9yIE5ldFdhcmUgcGxhdGZvcm0hJChETCkgPj4gJEAKIAlAZWNobyAkKERMKSNlbmRpZiQoREwpID4+ICRACiAJQGVjaG8gJChETCkjZGVmaW5lIFZFUlNJT04gIiQoTElCQ1VSTF9WRVJTSU9OX1NUUikiJChETCkgPj4gJEAKLQlAZWNobyAkKERMKSNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsLyIkKERMKSA+PiAkQAorCUBlY2hvICQoREwpI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIkKERMKSA+PiAkQAogaWZlcSAoJChMSUJBUkNIKSxDTElCKQogCUBlY2hvICQoREwpI2RlZmluZSBPUyAiaTU4Ni1wYy1jbGliLU5ldFdhcmUiJChETCkgPj4gJEAKIAlAZWNobyAkKERMKSNkZWZpbmUgTkVUREJfVVNFX0lOVEVSTkVUIDEkKERMKSA+PiAkQApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnZjNiBiL2xpYi9NYWtlZmlsZS52YzYKaW5kZXggYzM0YzNkYi4uYjRjYjIyOSAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnZjNgorKysgYi9saWIvTWFrZWZpbGUudmM2CkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fDQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wNCiAjDQotIyBDb3B5cmlnaHQgKEMpIDE5OTkgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLg0KKyMgQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4NCiAjDQogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaA0KICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcw0KLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KICMNCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbA0KICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpAQCAtNTQwLDE0ICs1NDAsMTAgQEAKIAkkKERJUk9CSilcY3VybF9nc3NhcGkub2JqIFwNCiAJJChESVJPQkopXGN1cmxfbWVtcmNoci5vYmogXA0KIAkkKERJUk9CSilcY3VybF9tdWx0aWJ5dGUub2JqIFwNCi0JJChESVJPQkopXGN1cmxfbnRsbS5vYmogXA0KIAkkKERJUk9CSilcY3VybF9udGxtX2NvcmUub2JqIFwNCi0JJChESVJPQkopXGN1cmxfbnRsbV9tc2dzLm9iaiBcDQogCSQoRElST0JKKVxjdXJsX250bG1fd2Iub2JqIFwNCiAJJChESVJPQkopXGN1cmxfcnRtcC5vYmogXA0KIAkkKERJUk9CSilcY3VybF9zYXNsLm9iaiBcDQotCSQoRElST0JKKVxjdXJsX3Nhc2xfZ3NzYXBpLm9iaiBcDQotCSQoRElST0JKKVxjdXJsX3Nhc2xfc3NwaS5vYmogXA0KIAkkKERJUk9CSilcY3VybF9zc3BpLm9iaiBcDQogCSQoRElST0JKKVxjdXJsX3RocmVhZHMub2JqIFwNCiAJJChESVJPQkopXGN5YXNzbC5vYmogXA0KQEAgLTU3Nyw3ICs1NzMsNyBAQAogCSQoRElST0JKKVxodHRwX2NodW5rcy5vYmogXA0KIAkkKERJUk9CSilcaHR0cF9kaWdlc3Qub2JqIFwNCiAJJChESVJPQkopXGh0dHBfbmVnb3RpYXRlLm9iaiBcDQotCSQoRElST0JKKVxodHRwX25lZ290aWF0ZV9zc3BpLm9iaiBcDQorCSQoRElST0JKKVxodHRwX250bG0ub2JqIFwNCiAJJChESVJPQkopXGh0dHBfcHJveHkub2JqIFwNCiAJJChESVJPQkopXGlkbl93aW4zMi5vYmogXA0KIAkkKERJUk9CSilcaWYyaXAub2JqIFwNCkBAIC02MjAsNiArNjE2LDE5IEBACiAJJChESVJPQkopXHNwZWVkY2hlY2sub2JqIFwNCiAJJChESVJPQkopXHNwbGF5Lm9iaiBcDQogCSQoRElST0JKKVxzc2gub2JqIFwNCisJJChESVJPQkopXHN5c3RlbV93aW4zMi5vYmogXA0KKwkkKERJUk9CSilcdmF1dGgub2JqIFwNCisJJChESVJPQkopXGNsZWFydGV4dC5vYmogXA0KKwkkKERJUk9CSilcY3JhbS5vYmogXA0KKwkkKERJUk9CSilcZGlnZXN0Lm9iaiBcDQorCSQoRElST0JKKVxkaWdlc3Rfc3NwaS5vYmogXA0KKwkkKERJUk9CSilca3JiNV9nc3NhcGkub2JqIFwNCisJJChESVJPQkopXGtyYjVfc3NwaS5vYmogXA0KKwkkKERJUk9CSilcbnRsbS5vYmogXA0KKwkkKERJUk9CSilcbnRsbV9zc3BpLm9iaiBcDQorCSQoRElST0JKKVxvYXV0aDIub2JqIFwNCisJJChESVJPQkopXHNwbmVnb19nc3NhcGkub2JqIFwNCisJJChESVJPQkopXHNwbmVnb19zc3BpLm9iaiBcDQogCSQoRElST0JKKVx2dGxzLm9iaiBcDQogCSQoRElST0JKKVxvcGVuc3NsLm9iaiBcDQogCSQoRElST0JKKVxzdHJkdXAub2JqIFwNCkBAIC02NjAsNiArNjY5LDkgQEAKIHsuXH0uY3skKERJUk9CSilcfS5vYmo6DQogCSQoQ0MpICQoQ0ZMQUdTKSAvRm8iJEAiICAkPA0KIA0KK3suXHZhdXRoXH0uY3skKERJUk9CSilcfS5vYmo6DQorCSQoQ0MpICQoQ0ZMQUdTKSAvRm8iJEAiICAkPA0KKw0KIHsuXHZ0bHNcfS5jeyQoRElST0JKKVx9Lm9iajoNCiAJJChDQykgJChDRkxBR1MpIC9GbyIkQCIgICQ8DQogDQpkaWZmIC0tZ2l0IGEvbGliL2FtaWdhb3MuYyBiL2xpYi9hbWlnYW9zLmMKaW5kZXggZTNmZjg1Zi4uNTU5MWQyMiAxMDA2NDQKLS0tIGEvbGliL2FtaWdhb3MuYworKysgYi9saWIvYW1pZ2Fvcy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHN0YWJzLmg+CiB2b2lkIF9fcmVxdWVzdChjb25zdCBjaGFyICptc2cpOwogI2Vsc2UKLSMgZGVmaW5lIF9fcmVxdWVzdCggbXNnICkgICAgICAgUHJpbnRmKCBtc2cgIlxuXGEiKQorIyBkZWZpbmUgX19yZXF1ZXN0KG1zZykgICAgICAgUHJpbnRmKG1zZyAiXG5cYSIpCiAjZW5kaWYKIAogdm9pZCBDdXJsX2FtaWdhX2NsZWFudXAoKQpkaWZmIC0tZ2l0IGEvbGliL2FtaWdhb3MuaCBiL2xpYi9hbWlnYW9zLmgKaW5kZXggNzY1NzhiZS4uMDJiZWUxNiAxMDA2NDQKLS0tIGEvbGliL2FtaWdhb3MuaAorKysgYi9saWIvYW1pZ2Fvcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2FycGFfdGVsbmV0LmggYi9saWIvYXJwYV90ZWxuZXQuaAppbmRleCAwOThkOWE5Li5lYzIzODcyIDEwMDY0NAotLS0gYS9saWIvYXJwYV90ZWxuZXQuaAorKysgYi9saWIvYXJwYV90ZWxuZXQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9hc3luLWFyZXMuYyBiL2xpYi9hc3luLWFyZXMuYwppbmRleCA5OGVjZGZkLi41MWY2MWRlIDEwMDY0NAotLS0gYS9saWIvYXN5bi1hcmVzLmMKKysrIGIvbGliL2FzeW4tYXJlcy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUgImNvbm5lY3QuaCIKICNpbmNsdWRlICJzZWxlY3QuaCIKICNpbmNsdWRlICJwcm9ncmVzcy5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKICMgIGlmIGRlZmluZWQoQ1VSTF9TVEFUSUNMSUIpICYmICFkZWZpbmVkKENBUkVTX1NUQVRJQ0xJQikgJiYgXAogICAgICAoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19TWU1CSUFOMzJfXykpCkBAIC04Myw4ICs4Miw5IEBACiAjZGVmaW5lIEhBVkVfQ0FSRVNfQ0FMTEJBQ0tfVElNRU9VVFMgMQogI2VuZGlmCiAKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiBzdHJ1Y3QgUmVzb2x2ZXJSZXN1bHRzIHsKZGlmZiAtLWdpdCBhL2xpYi9hc3luLXRocmVhZC5jIGIvbGliL2FzeW4tdGhyZWFkLmMKaW5kZXggYmQ0N2Q1YS4uODFjYWVkYiAxMDA2NDQKLS0tIGEvbGliL2FzeW4tdGhyZWFkLmMKKysrIGIvbGliL2FzeW4tdGhyZWFkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02OSwxMCArNjksOSBAQAogI2luY2x1ZGUgImluZXRfbnRvcC5oIgogI2luY2x1ZGUgImN1cmxfdGhyZWFkcy5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvbGliL2FzeW4uaCBiL2xpYi9hc3luLmgKaW5kZXggMWI2ODFlYS4uNDE2NTEwZiAxMDA2NDQKLS0tIGEvbGliL2FzeW4uaAorKysgYi9saWIvYXN5bi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Jhc2U2NC5jIGIvbGliL2Jhc2U2NC5jCmluZGV4IDZiODdlZWQuLjBlZjI0ZDUgMTAwNjQ0Ci0tLSBhL2xpYi9iYXNlNjQuYworKysgYi9saWIvYmFzZTY0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxMyArMjMsMTMgQEAKIC8qIEJhc2U2NCBlbmNvZGluZy9kZWNvZGluZyAqLwogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAidXJsZGF0YS5oIiAvKiBmb3IgdGhlIFNlc3Npb25IYW5kbGUgZGVmaW5pdGlvbiAqLwogI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0xNzMsNyArMTczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0YnVmZiwgc2l6ZV90IGluc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQogewotICBDVVJMY29kZSBlcnJvcjsKKyAgQ1VSTGNvZGUgcmVzdWx0OwogICB1bnNpZ25lZCBjaGFyIGlidWZbM107CiAgIHVuc2lnbmVkIGNoYXIgb2J1Zls0XTsKICAgaW50IGk7CkBAIC0xODcsMTEgKzE4NywxMSBAQAogICAqb3V0cHRyID0gTlVMTDsKICAgKm91dGxlbiA9IDA7CiAKLSAgaWYoMCA9PSBpbnNpemUpCisgIGlmKCFpbnNpemUpCiAgICAgaW5zaXplID0gc3RybGVuKGluZGF0YSk7CiAKLSAgYmFzZTY0ZGF0YSA9IG91dHB1dCA9IG1hbGxvYyhpbnNpemUqNC8zKzQpOwotICBpZihOVUxMID09IG91dHB1dCkKKyAgYmFzZTY0ZGF0YSA9IG91dHB1dCA9IG1hbGxvYyhpbnNpemUgKiA0IC8gMyArIDQpOworICBpZighb3V0cHV0KQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIC8qCkBAIC0xOTksMTAgKzE5OSwxMCBAQAogICAgKiBub3QgdGhlIGhvc3QgZW5jb2RpbmcuICBBbmQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBhY3R1YWwgaW5wdXQKICAgICogc28gd2UgY29weSBpdCB0byBhIGJ1ZmZlciwgdHJhbnNsYXRlIGl0LCBhbmQgdXNlIHRoYXQgaW5zdGVhZC4KICAgICovCi0gIGVycm9yID0gQ3VybF9jb252ZXJ0X2Nsb25lKGRhdGEsIGluZGF0YSwgaW5zaXplLCAmY29udmJ1Zik7Ci0gIGlmKGVycm9yKSB7CisgIHJlc3VsdCA9IEN1cmxfY29udmVydF9jbG9uZShkYXRhLCBpbmRhdGEsIGluc2l6ZSwgJmNvbnZidWYpOworICBpZihyZXN1bHQpIHsKICAgICBmcmVlKG91dHB1dCk7Ci0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CiAgIH0KIAogICBpZihjb252YnVmKQpAQCAtMjMzLDI4ICsyMzMsMzUgQEAKICAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlswXV0sCiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMV1dKTsKICAgICAgIGJyZWFrOworCiAgICAgY2FzZSAyOiAvKiB0d28gYnl0ZXMgcmVhZCAqLwogICAgICAgc25wcmludGYob3V0cHV0LCA1LCAiJWMlYyVjPSIsCiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMF1dLAogICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzFdXSwKICAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlsyXV0pOwogICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgc25wcmludGYob3V0cHV0LCA1LCAiJWMlYyVjJWMiLAogICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzBdXSwKICAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlsxXV0sCiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMl1dLAotICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzNdXSApOworICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzNdXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgb3V0cHV0ICs9IDQ7CiAgIH0KKworICAvKiBaZXJvIHRlcm1pbmF0ZSAqLwogICAqb3V0cHV0ID0gJ1wwJzsKLSAgKm91dHB0ciA9IGJhc2U2NGRhdGE7IC8qIHJldHVybiBwb2ludGVyIHRvIG5ldyBkYXRhLCBhbGxvY2F0ZWQgbWVtb3J5ICovCisKKyAgLyogUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXcgZGF0YSAoYWxsb2NhdGVkIG1lbW9yeSkgKi8KKyAgKm91dHB0ciA9IGJhc2U2NGRhdGE7CiAKICAgZnJlZShjb252YnVmKTsKIAotICAqb3V0bGVuID0gc3RybGVuKGJhc2U2NGRhdGEpOyAvKiByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGRhdGEgKi8KKyAgLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIG5ldyBkYXRhICovCisgICpvdXRsZW4gPSBzdHJsZW4oYmFzZTY0ZGF0YSk7CiAKICAgcmV0dXJuIENVUkxFX09LOwogfQpAQCAtMzA2LDQgKzMxMywzIEBACiB7CiAgIHJldHVybiBiYXNlNjRfZW5jb2RlKGJhc2U2NHVybCwgZGF0YSwgaW5wdXRidWZmLCBpbnNpemUsIG91dHB0ciwgb3V0bGVuKTsKIH0KLS8qIC0tLS0gRW5kIG9mIEJhc2U2NCBFbmNvZGluZyAtLS0tICovCmRpZmYgLS1naXQgYS9saWIvY2hlY2tzcmMucGwgYi9saWIvY2hlY2tzcmMucGwKaW5kZXggOGZhZDJjZi4uYWFjYjI0MiAxMDA3NTUKLS0tIGEvbGliL2NoZWNrc3JjLnBsCisrKyBiL2xpYi9jaGVja3NyYy5wbApAQCAtNiwxMSArNiwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsOSArMzEsMzMgQEAKIG15ICRkaXI9Ii4iOwogbXkgJHdsaXN0OwogbXkgJHdpbmRvd3Nfb3MgPSAkXk8gZXEgJ01TV2luMzInIHx8ICReTyBlcSAnbXN5cycgfHwgJF5PIGVxICdjeWd3aW4nOwotCitteSAkdmVyYm9zZTsKIG15ICV3aGl0ZWxpc3Q7CiAKK215ICV3YXJuaW5ncyA9ICgKKyAgICAnTE9OR0xJTkUnID0+ICAgICAgICAgIkxpbmUgbG9uZ2VyIHRoYW4gJG1heF9jb2x1bW4iLAorICAgICdUQUJTJyA9PiAgICAgICAgICAgICAnVEFCIGNoYXJhY3RlcnMgbm90IGFsbG93ZWQnLAorICAgICdUUkFJTElOR1NQQUNFJyA9PiAgICAnVHJhaWxpbmcgd2hpdGUgc3BhY2Ugb24gdGhlIGxpbmUnLAorICAgICdDUFBDT01NRU5UUycgPT4gICAgICAnLy8gY29tbWVudCBkZXRlY3RlZCcsCisgICAgJ1NQQUNFQkVGT1JFUEFSRU4nID0+ICdzcGFjZSBiZWZvcmUgYW4gb3BlbiBwYXJlbnRoZXNpcycsCisgICAgJ1NQQUNFQUZURVJQQVJFTicgID0+ICdzcGFjZSBhZnRlciBvcGVuIHBhcmVudGhlc2lzJywKKyAgICAnU1BBQ0VCRUZPUkVDTE9TRScgPT4gJ3NwYWNlIGJlZm9yZSBhIGNsb3NlIHBhcmVudGhlc2lzJywKKyAgICAnU1BBQ0VCRUZPUkVDT01NQScgPT4gJ3NwYWNlIGJlZm9yZSBhIGNvbW1hJywKKyAgICAnUkVUVVJOTk9TUEFDRScgICAgPT4gJ3JldHVybiB3aXRob3V0IHNwYWNlJywKKyAgICAnQ09NTUFOT1NQQUNFJyAgICAgPT4gJ2NvbW1hIHdpdGhvdXQgZm9sbG93aW5nIHNwYWNlJywKKyAgICAnQlJBQ0VFTFNFJyAgICAgICAgPT4gJ30gZWxzZSBvbiB0aGUgc2FtZSBsaW5lJywKKyAgICAnUEFSRU5CUkFDRScgICAgICAgPT4gJyl7IHdpdGhvdXQgc3VmZmljaWVudCBzcGFjZScsCisgICAgJ1NQQUNFU0VNSUxDT0xPTicgID0+ICdzcGFjZSBiZWZvcmUgc2VtaWNvbG9uJywKKyAgICAnQkFOTkVERlVOQycgICAgICAgPT4gJ2EgYmFubmVkIGZ1bmN0aW9uIHdhcyB1c2VkJywKKyAgICAnRk9QRU5NT0RFJyAgICAgICAgPT4gJ2ZvcGVuIG5lZWRzIGEgbWFjcm8gZm9yIHRoZSBtb2RlIHN0cmluZycsCisgICAgJ0JSQUNFUE9TJyAgICAgICAgID0+ICd3cm9uZyBwb3NpdGlvbiBmb3IgYW4gb3BlbiBicmFjZScsCisgICAgJ0lOREVOVEFUSU9OJyAgICAgID0+ICd3cm9uZyBzdGFydCBjb2x1bW4gZm9yIGNvZGUnLAorICAgICdDT1BZUklHSFQnICAgICAgICA9PiAnZmlsZSBtaXNzaW5nIGEgY29weXJpZ2h0IHN0YXRlbWVudCcsCisgICAgJ0JBRENPTU1BTkQnICAgICAgID0+ICdiYWQgIWNoZWNrc3JjISBpbnN0cnVjdGlvbicsCisgICAgJ1VOVVNFRElHTk9SRScgICAgID0+ICdhIHdhcm5pbmcgaWdub3JlIHdhcyBub3QgdXNlZCcsCisgICAgJ09QRU5DT01NRU5UJyAgICAgID0+ICdmaWxlIGVuZGVkIHdpdGggYSAvKiBjb21tZW50IHN0aWxsICJvcGVuIicKKyAgICApOworCiBzdWIgcmVhZHdoaXRlbGlzdCB7CiAgICAgb3BlbihXLCAiPCRkaXIvY2hlY2tzcmMud2hpdGVsaXN0Iik7CiAgICAgbXkgQGFsbD08Vz47CkBAIC00NSwxNCArNjksNDAgQEAKIH0KIAogc3ViIGNoZWNrd2FybiB7Ci0gICAgbXkgKCRudW0sICRjb2wsICRmaWxlLCAkbGluZSwgJG1zZywgJGVycm9yKSA9IEBfOworICAgIG15ICgkbmFtZSwgJG51bSwgJGNvbCwgJGZpbGUsICRsaW5lLCAkbXNnLCAkZXJyb3IpID0gQF87CiAKKyAgICBteSAkdz0kZXJyb3I/ImVycm9yIjoid2FybmluZyI7CisgICAgbXkgJG5vd2Fybj0wOworCisgICAgI2lmKCEkd2FybmluZ3N7JG5hbWV9KSB7CisgICAgIyAgICBwcmludCBTVERFUlIgIkRldiEgdGhlcmUncyBubyBkZXNjcmlwdGlvbiBmb3IgJG5hbWUhXG4iOworICAgICN9CisKKyAgICAjIGNoZWNrc3JjLndoaXRlbGlzdAogICAgIGlmKCR3aGl0ZWxpc3R7JGxpbmV9KSB7CisgICAgICAgICRub3dhcm4gPSAxOworICAgIH0KKyAgICAjICFjaGVja3NyYyEgY29udHJvbGxlZAorICAgIGVsc2lmKCRpZ25vcmV7JG5hbWV9KSB7CisgICAgICAgICRpZ25vcmV7JG5hbWV9LS07CisgICAgICAgICRpZ25vcmVfdXNlZHskbmFtZX0rKzsKKyAgICAgICAgJG5vd2FybiA9IDE7CisgICAgICAgIGlmKCEkaWdub3JleyRuYW1lfSkgeworICAgICAgICAgICAgIyByZWFjaGVkIHplcm8sIGVuYWJsZSBhZ2FpbgorICAgICAgICAgICAgZW5hYmxlX3dhcm4oJG5hbWUsICRsaW5lLCAkZmlsZSwgJGwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYoJG5vd2FybikgewogICAgICAgICAkc3VwcmVzc2VkKys7CisgICAgICAgIGlmKCR3KSB7CisgICAgICAgICAgICAkc3dhcm5pbmdzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkc2Vycm9ycysrOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgbXkgJHc9JGVycm9yPyJlcnJvciI6Indhcm5pbmciOwogCiAgICAgaWYoJHcpIHsKICAgICAgICAgJHdhcm5pbmdzKys7CkBAIC02Miw3ICsxMTIsNyBAQAogICAgIH0KIAogICAgICRjb2wrKzsKLSAgICBwcmludCAiJGZpbGU6JG51bTokY29sOiAkdzogJG1zZ1xuIjsKKyAgICBwcmludCAiJGZpbGU6JG51bTokY29sOiAkdzogJG1zZyAoJG5hbWUpXG4iOwogICAgIHByaW50ICIgJGxpbmVcbiI7CiAKICAgICBpZigkY29sIDwgODApIHsKQEAgLTg1LDYgKzEzNSwxMCBAQAogICAgICAgICAkZmlsZSA9IHNoaWZ0IEBBUkdWOwogICAgICAgICBuZXh0OwogICAgIH0KKyAgICBlbHNpZigkZmlsZSA9fiAvXigtaHwtLWhlbHApLykgeworICAgICAgICB1bmRlZiAkZmlsZTsKKyAgICAgICAgbGFzdDsKKyAgICB9CiAKICAgICBsYXN0OwogfQpAQCAtOTMsNyArMTQ3LDEyIEBACiAgICAgcHJpbnQgImNoZWNrc3JjLnBsIFtvcHRpb25dIDxmaWxlMT4gW2ZpbGUyXSAuLi5cbiI7CiAgICAgcHJpbnQgIiBPcHRpb25zOlxuIjsKICAgICBwcmludCAiICAtRFtESVJdICAgRGlyZWN0b3J5IHRvIHByZXBlbmQgZmlsZSBuYW1lc1xuIjsKKyAgICBwcmludCAiICAtaCAgICAgICAgU2hvdyBoZWxwIG91dHB1dFxuIjsKICAgICBwcmludCAiICAtV1tmaWxlXSAgV2hpdGVsaXN0IHRoZSBnaXZlbiBmaWxlIC0gaWdub3JlIGFsbCBpdHMgZmxhd3NcbiI7CisgICAgcHJpbnQgIlxuRGV0ZWN0cyBhbmQgd2FybnMgZm9yIHRoZXNlIHByb2JsZW1zOlxuIjsKKyAgICBmb3Ioc29ydCBrZXlzICV3YXJuaW5ncykgeworICAgICAgICBwcmludGYgKCIgJS0xOHM6ICVzXG4iLCAkXywgJHdhcm5pbmdzeyRffSk7CisgICAgfQogICAgIGV4aXQ7CiB9CiAKQEAgLTEwOSw2ICsxNjgsNzggQEAKIAogfSB3aGlsZSgkZmlsZSk7CiAKK3N1YiBjaGVja3NyY19jbGVhciB7CisgICAgdW5kZWYgJWlnbm9yZTsKKyAgICB1bmRlZiAlaWdub3JlX3NldDsKKyAgICB1bmRlZiBAaWdub3JlX2xpbmU7Cit9CisKK3N1YiBjaGVja3NyY19lbmRvZmZpbGUgeworICAgIG15ICgkZmlsZSkgPSBAXzsKKyAgICBmb3Ioa2V5cyAlaWdub3JlX3NldCkgeworICAgICAgICBpZigkaWdub3JlX3NldHskX30gJiYgISRpZ25vcmVfdXNlZHskX30pIHsKKyAgICAgICAgICAgIGNoZWNrd2FybigiVU5VU0VESUdOT1JFIiwgJGlnbm9yZV9zZXR7JF99LAorICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCgkXykrMTEsICRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmVfbGluZVskaWdub3JlX3NldHskX31dLAorICAgICAgICAgICAgICAgICAgICAgICJVbnVzZWQgaWdub3JlOiAkXyIpOworICAgICAgICB9CisgICAgfQorfQorCitzdWIgZW5hYmxlX3dhcm4geworICAgIG15ICgkd2hhdCwgJGxpbmUsICRmaWxlLCAkbCkgPSBAXzsKKworICAgICMgc3dpdGNoIGl0IGJhY2sgb24sIGJ1dCB3YXJuIGlmIG5vdCB0cmlnZ2VyZWQhCisgICAgaWYoISRpZ25vcmVfdXNlZHskd2hhdH0pIHsKKyAgICAgICAgY2hlY2t3YXJuKCJVTlVTRURJR05PUkUiLAorICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkd2hhdCkgKyAxMSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgIk5vIHdhcm5pbmcgd2FzIGluaGliaXRlZCEiKTsKKyAgICB9CisgICAgJGlnbm9yZV9zZXR7JHdoYXR9PTA7CisgICAgJGlnbm9yZV91c2VkeyR3aGF0fT0wOworICAgICRpZ25vcmV7JHdoYXR9PTA7Cit9CitzdWIgY2hlY2tzcmMgeworICAgIG15ICgkY21kLCAkbGluZSwgJGZpbGUsICRsKSA9IEBfOworICAgIGlmKCRjbWQgPX4gLyAqKFteIF0qKSAqKC4qKS8pIHsKKyAgICAgICAgbXkgKCRlbmFibGUsICR3aGF0KSA9ICgkMSwgJDIpOworICAgICAgICAkd2hhdCA9fiBzOiAqXCovJDo6OyAjIGN1dCBvZmYgZW5kIG9mIEMgY29tbWVudAorICAgICAgICAjIHByaW50ICJFTkFCTEUgJGVuYWJsZSBXSEFUICR3aGF0XG4iOworICAgICAgICBpZigkZW5hYmxlIGVxICJkaXNhYmxlIikgeworICAgICAgICAgICAgbXkgKCR3YXJuLCAkc2NvcGUpPSgkMSwgJDIpOworICAgICAgICAgICAgaWYoJHdoYXQgPX4gLyhbXiBdKikgKyguKikvKSB7CisgICAgICAgICAgICAgICAgKCR3YXJuLCAkc2NvcGUpPSgkMSwgJDIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgJHdhcm4gPSAkd2hhdDsKKyAgICAgICAgICAgICAgICAkc2NvcGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIyBwcmludCAiSUdOT1JFICR3YXJuIGZvciBTQ09QRSAkc2NvcGVcbiI7CisgICAgICAgICAgICBpZigkc2NvcGUgZXEgImFsbCIpIHsKKyAgICAgICAgICAgICAgICAkc2NvcGU9OTk5OTk5OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZigkaWdub3JlX3NldHskd2Fybn0pIHsKKyAgICAgICAgICAgICAgICBjaGVja3dhcm4oIkJBRENPTU1BTkQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgMCwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJHdhcm4gYWxyZWFkeSBkaXNhYmxlZCBmcm9tIGxpbmUgJGlnbm9yZV9zZXR7JHdhcm59Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAkaWdub3JleyR3YXJufT0kc2NvcGU7CisgICAgICAgICAgICAgICAgJGlnbm9yZV9zZXR7JHdhcm59PSRsaW5lOworICAgICAgICAgICAgICAgICRpZ25vcmVfbGluZVskbGluZV09JGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoJGVuYWJsZSBlcSAiZW5hYmxlIikgeworICAgICAgICAgICAgZW5hYmxlX3dhcm4oJHdoYXQsICRsaW5lLCAkZmlsZSwgJGwpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hlY2t3YXJuKCJCQURDT01NQU5EIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgMCwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsICFjaGVja3NyYyEgY29tbWFuZCIpOworICAgICAgICB9CisgICAgfQorfQogCiBzdWIgc2NhbmZpbGUgewogICAgIG15ICgkZmlsZSkgPSBAXzsKQEAgLTExOCwxMyArMjQ5LDIyIEBACiAgICAgbXkgJGw7CiAgICAgb3BlbihSLCAiPCRmaWxlIikgfHwgZGllICJmYWlsZWQgdG8gb3BlbiAkZmlsZSI7CiAKKyAgICBteSAkaW5jb21tZW50PTA7CiAgICAgbXkgJGNvcHlyaWdodD0wOworICAgIGNoZWNrc3JjX2NsZWFyKCk7ICMgZm9yIGZpbGUgYmFzZWQgaWdub3JlcwogCiAgICAgd2hpbGUoPFI+KSB7CiAgICAgICAgICR3aW5kb3dzX29zID8gJF8gPX4gcy9ccj9cbiQvLyA6IGNob21wOwogICAgICAgICBteSAkbCA9ICRfOworICAgICAgICBteSAkb2wgPSAkbDsgIyBrZWVwIHRoZSB1bm1vZGlmaWVkIGxpbmUgZm9yIGVycm9yIHJlcG9ydGluZwogICAgICAgICBteSAkY29sdW1uID0gMDsKIAorICAgICAgICAjIGNoZWNrIGZvciAhY2hlY2tzcmMhIGNvbW1hbmRzCisgICAgICAgIGlmKCRsID1+IC9cIWNoZWNrc3JjXCEgKC4qKS8pIHsKKyAgICAgICAgICAgIG15ICRjbWQgPSAkMTsKKyAgICAgICAgICAgIGNoZWNrc3JjKCRjbWQsICRsaW5lLCAkZmlsZSwgJGwpCisgICAgICAgIH0KKwogICAgICAgICAjIGNoZWNrIGZvciBhIGNvcHlyaWdodCBzdGF0ZW1lbnQKICAgICAgICAgaWYoISRjb3B5cmlnaHQgJiYgKCRsID1+IC9jb3B5cmlnaHQgLiogXGRcZFxkXGQvaSkpIHsKICAgICAgICAgICAgICRjb3B5cmlnaHQ9MTsKQEAgLTEzMiwxNSArMjcyLDU5IEBACiAKICAgICAgICAgIyBkZXRlY3QgbG9uZyBsaW5lcwogICAgICAgICBpZihsZW5ndGgoJGwpID4gJG1heF9jb2x1bW4pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCRsKSwgJGZpbGUsICRsLCAiTG9uZ2VyIHRoYW4gJG1heF9jb2x1bW4gY29sdW1ucyIpOworICAgICAgICAgICAgY2hlY2t3YXJuKCJMT05HTElORSIsICRsaW5lLCBsZW5ndGgoJGwpLCAkZmlsZSwgJGwsCisgICAgICAgICAgICAgICAgICAgICAgIkxvbmdlciB0aGFuICRtYXhfY29sdW1uIGNvbHVtbnMiKTsKICAgICAgICAgfQogICAgICAgICAjIGRldGVjdCBUQUIgY2hhcmFjdGVycwogICAgICAgICBpZigkbCA9fiAvXiguKilcdC8pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiQ29udGFpbnMgVEFCIGNoYXJhY3RlciIsIDEpOworICAgICAgICAgICAgY2hlY2t3YXJuKCJUQUJTIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiQ29udGFpbnMgVEFCIGNoYXJhY3RlciIsIDEpOwogICAgICAgICB9CiAgICAgICAgICMgZGV0ZWN0IHRyYWlsaW5nIHdoaXRlIHNwYWNlCiAgICAgICAgIGlmKCRsID1+IC9eKC4qKVsgXHRdK1x6LykgewotICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsICJUcmFpbGluZyB3aGl0ZXNwYWNlIik7CisgICAgICAgICAgICBjaGVja3dhcm4oIlRSQUlMSU5HU1BBQ0UiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsICJUcmFpbGluZyB3aGl0ZXNwYWNlIik7CisgICAgICAgIH0KKworICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIEFib3ZlIHRoaXMgbWFya2VyLCB0aGUgY2hlY2tzIHdlcmUgZG9uZSBvbiBsaW5lcyAqaW5jbHVkaW5nKgorICAgICAgICAjIGNvbW1lbnRzCisgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgIyBzdHJpcCBvZmYgQzg5IGNvbW1lbnRzCisKKyAgICAgIGNvbW1lbnQ6CisgICAgICAgIGlmKCEkaW5jb21tZW50KSB7CisgICAgICAgICAgICBpZigkbCA9fiBzL1wvXCouKlwqXC8vIC9nKSB7CisgICAgICAgICAgICAgICAgIyBmdWxsIC8qIGNvbW1lbnRzICovIHdlcmUgcmVtb3ZlZCEKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKCRsID1+IHMvXC9cKi4qLy8pIHsKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIC8qIGNvbW1lbnQgd2FzIHJlbW92ZWQKKyAgICAgICAgICAgICAgICAkaW5jb21tZW50ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmKCRsID1+IHMvLipcKlwvLy8pIHsKKyAgICAgICAgICAgICAgICAjIGVuZCBvZiBjb21tZW50ICovIHdhcyByZW1vdmVkCisgICAgICAgICAgICAgICAgJGluY29tbWVudCA9IDA7CisgICAgICAgICAgICAgICAgZ290byBjb21tZW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIyBzdGlsbCB3aXRoaW4gYSBjb21tZW50CisgICAgICAgICAgICAgICAgJGw9IiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIEJlbG93IHRoaXMgbWFya2VyLCB0aGUgY2hlY2tzIHdlcmUgZG9uZSBvbiBsaW5lcyAqd2l0aG91dCoKKyAgICAgICAgIyBjb21tZW50cworICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgICMgY3J1ZGUgYXR0ZW1wdCB0byBkZXRlY3QgLy8gY29tbWVudHMgd2l0aG91dCB0b28gbWFueSBmYWxzZQorICAgICAgICAjIHBvc2l0aXZlcworICAgICAgICBpZigkbCA9fiAvXihbXiJcKl0qKVteOiJdXC9cLy8pIHsKKyAgICAgICAgICAgIGNoZWNrd2FybigiQ1BQQ09NTUVOVFMiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsICJcL1wvIGNvbW1lbnQiKTsKICAgICAgICAgfQogCiAgICAgICAgICMgY2hlY2sgc3BhY2VzIGFmdGVyIGZvci9pZi93aGlsZQpAQCAtMTQ5LDIwICszMzMsMzEgQEAKICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYSAjaWYsIHRyZWF0IGl0IGRpZmZlcmVudGx5CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSkrbGVuZ3RoKCQyKSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgIGNoZWNrd2FybigiU1BBQ0VCRUZPUkVQQVJFTiIsICRsaW5lLCBsZW5ndGgoJDEpK2xlbmd0aCgkMiksICRmaWxlLCAkbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQyIHdpdGggc3BhY2UiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgICMgY2hlY2sgc3BhY2VzIGFmdGVyIG9wZW4gcGFyZW4gYWZ0ZXIgZm9yL2lmL3doaWxlCi0gICAgICAgIGlmKCRsID1+IC9eKC4qKShmb3J8aWZ8d2hpbGUpXCggLykgewotICAgICAgICAgICAgaWYoJDEgPX4gLyAqXCMvKSB7Ci0gICAgICAgICAgICAgICAgIyB0aGlzIGlzIGEgI2lmLCB0cmVhdCBpdCBkaWZmZXJlbnRseQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpK2xlbmd0aCgkMikrMSwgJGZpbGUsICRsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJDIgd2l0aCBzcGFjZSBmaXJzdCBpbiBjb25kaXRpb24iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgIyBjaGVjayBzcGFjZXMgYWZ0ZXIgb3BlbiBwYXJlbnRoZXNlcworICAgICAgICBpZigkbCA9fiAvXiguKlthLXpdKVwoIC9pKSB7CisgICAgICAgICAgICBjaGVja3dhcm4oIlNQQUNFQUZURVJQQVJFTiIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSkrMSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICJzcGFjZSBhZnRlciBvcGVuIHBhcmVudGhlc2lzIik7CisgICAgICAgIH0KKworICAgICAgICAjIGNoZWNrIHNwYWNlcyBiZWZvcmUgY2xvc2UgcGFyZW50aGVzZXMsIHVubGVzcyBpdCB3YXMgYSBzcGFjZSBvciBhCisgICAgICAgICMgY2xvc2UgcGFyZW50aGVzaXMhCisgICAgICAgIGlmKCRsID1+IC8oLipbXlwpIF0pIFwpLykgeworICAgICAgICAgICAgY2hlY2t3YXJuKCJTUEFDRUJFRk9SRUNMT1NFIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSsxLCAkZmlsZSwgJGwsCisgICAgICAgICAgICAgICAgICAgICAgInNwYWNlIGJlZm9yZSBjbG9zZSBwYXJlbnRoZXNpcyIpOworICAgICAgICB9CisKKyAgICAgICAgIyBjaGVjayBzcGFjZXMgYmVmb3JlIGNvbW1hIQorICAgICAgICBpZigkbCA9fiAvKC4qW14gXSkgLC8pIHsKKyAgICAgICAgICAgIGNoZWNrd2FybigiU1BBQ0VCRUZPUkVDT01NQSIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSkrMSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICJzcGFjZSBiZWZvcmUgY29tbWEiKTsKICAgICAgICAgfQogCiAgICAgICAgICMgY2hlY2sgZm9yICJyZXR1cm4oIiB3aXRob3V0IHNwYWNlCkBAIC0xNzEsNyArMzY2LDcgQEAKICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYSAjaWYsIHRyZWF0IGl0IGRpZmZlcmVudGx5CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSkrNiwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgIGNoZWNrd2FybigiUkVUVVJOTk9TUEFDRSIsICRsaW5lLCBsZW5ndGgoJDEpKzYsICRmaWxlLCAkbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiB3aXRob3V0IHNwYWNlIGJlZm9yZSBwYXJlbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDMsMzcgKzM5OCw0MiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmKCEkaWduKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJHByZWYpKzEsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICBjaGVja3dhcm4oIkNPTU1BTk9TUEFDRSIsICRsaW5lLCBsZW5ndGgoJHByZWYpKzEsICRmaWxlLCAkbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hIHdpdGhvdXQgZm9sbG93aW5nIHNwYWNlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgIyBjaGVjayBmb3IgIn0gZWxzZSIKICAgICAgICAgaWYoJGwgPX4gL14oLiopXH0gKmVsc2UvKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgImVsc2UgYWZ0ZXIgY2xvc2luZyBicmFjZSBvbiBzYW1lIGxpbmUiKTsKKyAgICAgICAgICAgIGNoZWNrd2FybigiQlJBQ0VFTFNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiZWxzZSBhZnRlciBjbG9zaW5nIGJyYWNlIG9uIHNhbWUgbGluZSIpOwogICAgICAgICB9CiAgICAgICAgICMgY2hlY2sgZm9yICIpeyIKICAgICAgICAgaWYoJGwgPX4gL14oLiopXClcey8pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSsxLCAkZmlsZSwgJGwsICJtaXNzaW5nIHNwYWNlIGFmdGVyIGNsb3NlIHBhcmVuIik7CisgICAgICAgICAgICBjaGVja3dhcm4oIlBBUkVOQlJBQ0UiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpKzEsICRmaWxlLCAkbCwgIm1pc3Npbmcgc3BhY2UgYWZ0ZXIgY2xvc2UgcGFyZW4iKTsKICAgICAgICAgfQogCiAgICAgICAgICMgY2hlY2sgZm9yIHNwYWNlIGJlZm9yZSB0aGUgc2VtaWNvbG9uIGxhc3QgaW4gYSBsaW5lCiAgICAgICAgIGlmKCRsID1+IC9eKC4qW14gXS4qKSA7JC8pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAic3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uIik7CisgICAgICAgICAgICBjaGVja3dhcm4oIlNQQUNFU0VNSUxDT0xPTiIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkb2wsICJzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24iKTsKICAgICAgICAgfQogCiAgICAgICAgICMgc2NhbiBmb3IgdXNlIG9mIGJhbm5lZCBmdW5jdGlvbnMKLSAgICAgICAgaWYoJGwgPX4gL14oLipcVykoc3ByaW50Znx2c3ByaW50ZnxzdHJjYXR8c3RybmNhdHxnZXRzKVxzKlwoLykgewotICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsCisgICAgICAgIGlmKCRsID1+IC9eKC4qXFcpKHNwcmludGZ8dnNwcmludGZ8c3RyY2F0fHN0cm5jYXR8X21ic2NhdHxfbWJzbmNhdHxfdGNzY2F0fF90Y3NuY2F0fHdjc2NhdHx3Y3NuY2F0fGdldHMpXHMqXCgvKSB7CisgICAgICAgICAgICBjaGVja3dhcm4oIkJBTk5FREZVTkMiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJG9sLAogICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugb2YgJDIgaXMgYmFubmVkIik7CiAgICAgICAgIH0KIAogICAgICAgICAjIHNjYW4gZm9yIHVzZSBvZiBub24tYmluYXJ5IGZvcGVuIHdpdGhvdXQgdGhlIG1hY3JvCi0gICAgICAgIGlmKCRsID1+IC9eKC4qXFcpZm9wZW5ccypcKFteIl0qXCIoW14iXSopLykgeworICAgICAgICBpZigkbCA9fiAvXiguKlxXKWZvcGVuXHMqXChbXixdKiwgKlwiKFteIl0qKS8pIHsKICAgICAgICAgICAgIG15ICRtb2RlID0gJDI7CiAgICAgICAgICAgICBpZigkbW9kZSAhfiAvYi8pIHsKLSAgICAgICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBvZiBub24tYmluYXJ5IGZvcGVuIHdpdGhvdXQgRk9QRU5fKiBtYWNybyIpOworICAgICAgICAgICAgICAgIGNoZWNrd2FybigiRk9QRU5NT0RFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugb2Ygbm9uLWJpbmFyeSBmb3BlbiB3aXRob3V0IEZPUEVOXyogbWFjcm86ICRtb2RlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjQxLDcgKzQ0MSw4IEBACiAgICAgICAgICMgb25seSBhbGVydCBpZiBwcmV2aW91cyBsaW5lIGVuZGVkIHdpdGggYSBjbG9zZSBwYXJlbiBhbmQgd2Fzbid0IGEgY3BwCiAgICAgICAgICMgbGluZQogICAgICAgICBpZigoKCRwcmV2bCA9fiAvXClcei8pICYmICgkcHJldmwgIX4gL14gKiMvKSkgJiYgKCRsID1+IC9eKCArKVx7LykpIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiYmFkbHkgcGxhY2VkIG9wZW4gYnJhY2UiKTsKKyAgICAgICAgICAgIGNoZWNrd2FybigiQlJBQ0VQT1MiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJG9sLCAiYmFkbHkgcGxhY2VkIG9wZW4gYnJhY2UiKTsKICAgICAgICAgfQogCiAgICAgICAgICMgaWYgdGhlIHByZXZpb3VzIGxpbmUgc3RhcnRzIHdpdGggaWYvd2hpbGUvZm9yIEFORCBlbmRzIHdpdGggYW4gb3BlbgpAQCAtMjU2LDcgKzQ1Nyw3IEBACiAgICAgICAgICAgICAgICAgbXkgJGV4cGVjdCA9ICRmaXJzdCskaW5kZW50OwogICAgICAgICAgICAgICAgIGlmKCRleHBlY3QgIT0gJHNlY29uZCkgewogICAgICAgICAgICAgICAgICAgICBteSAkZGlmZiA9ICRzZWNvbmQgLSAkZmlyc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICBjaGVja3dhcm4oIklOREVOVEFUSU9OIiwgJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGluZGVudGVkICRpbmRlbnQgc3RlcHMsIHVzZXMgJGRpZmYpIik7CiAKICAgICAgICAgICAgICAgICB9CkBAIC0yNjQsMTkgKzQ2NSwyOSBAQAogICAgICAgICB9CiAKICAgICAgICAgJGxpbmUrKzsKLSAgICAgICAgJHByZXZsID0gJGw7CisgICAgICAgICRwcmV2bCA9ICRvbDsKICAgICB9CiAKICAgICBpZighJGNvcHlyaWdodCkgewotICAgICAgICBjaGVja3dhcm4oMSwgMCwgJGZpbGUsICIiLCAiTWlzc2luZyBjb3B5cmlnaHQgc3RhdGVtZW50IiwgMSk7CisgICAgICAgIGNoZWNrd2FybigiQ09QWVJJR0hUIiwgMSwgMCwgJGZpbGUsICIiLCAiTWlzc2luZyBjb3B5cmlnaHQgc3RhdGVtZW50IiwgMSk7CiAgICAgfQorICAgIGlmKCRpbmNvbW1lbnQpIHsKKyAgICAgICAgY2hlY2t3YXJuKCJPUEVOQ09NTUVOVCIsIDEsIDAsICRmaWxlLCAiIiwgIk1pc3NpbmcgY2xvc2luZyBjb21tZW50IiwgMSk7CisgICAgfQorCisgICAgY2hlY2tzcmNfZW5kb2ZmaWxlKCRmaWxlKTsKIAogICAgIGNsb3NlKFIpOwogCiB9CiAKIAotaWYoJGVycm9ycyB8fCAkd2FybmluZ3MpIHsKK2lmKCRlcnJvcnMgfHwgJHdhcm5pbmdzIHx8ICR2ZXJib3NlKSB7CiAgICAgcHJpbnRmICJjaGVja3NyYzogJWQgZXJyb3JzIGFuZCAlZCB3YXJuaW5nc1xuIiwgJGVycm9ycywgJHdhcm5pbmdzOworICAgIGlmKCRzdXByZXNzZWQpIHsKKyAgICAgICAgcHJpbnRmICJjaGVja3NyYzogJWQgZXJyb3JzIGFuZCAlZCB3YXJuaW5ncyBzdXBwcmVzc2VkXG4iLAorICAgICAgICAkc2Vycm9ycywKKyAgICAgICAgJHN3YXJuaW5nczsKKyAgICB9CiAgICAgZXhpdCA1OyAjIHJldHVybiBmYWlsdXJlCiB9CmRpZmYgLS1naXQgYS9saWIvY2hlY2tzcmMud2hpdGVsaXN0IGIvbGliL2NoZWNrc3JjLndoaXRlbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI2MWI5ZC4uMDAwMDAwMAotLS0gYS9saWIvY2hlY2tzcmMud2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotICAgIDIyNyBFbnRlcmluZyBQYXNzaXZlIE1vZGUgKGExLGEyLGEzLGE0LHAxLHAyKQotICAgIDIyOCBFbnRlcmluZyBMb25nIFBhc3NpdmUgTW9kZSAoNCw0LGExLGEyLGEzLGE0LDIscDEscDIpCi0gICAgICAxNTAgQVNDSUkgZGF0YSBjb25uZWN0aW9uIGZvciAvYmluL2xzICgxMzcuMTY3LjEwNC45MSwzNzQ0NSkgKDAgYnl0ZXMpLgotICAgICAgMTUwIE9wZW5pbmcgQVNDSUkgbW9kZSBkYXRhIGNvbm5lY3Rpb24gZm9yIFtmaWxlXSAoMC4wLjAuMCwwKSAoNTQ1IGJ5dGVzKQotICAgKiBub19wcm94eT1kb21haW4xLmRvbSxob3N0LmRvbWFpbjIuZG9tCi0gICAgIERlZmF1bHQgdmFsdWVzIGFyZSAoMCwwKSBpbml0aWFsaXplZCBieSBjYWxsb2MuCi0gIGZpbGUgPSBmb3BlbihuYW1lLCAiciIpOyAvKiBWTVMgKi8KLSAgICByZXR1cm4gZm9wZW4oZmlsZSwgInIiKTsgLyogVk1TICovCi0gICAgcmV0dXJuIGZvcGVuKGZpbGUsICJyIiwgInJmbT1zdG1sZiIsICJjdHg9c3RtIik7Ci0gICAgY3VybF9tZW1sb2coIkZJTEUgJXM6JWQgZm9wZW4oXCIlc1wiLFwiJXNcIikgPSAlcFxuIiwKZGlmZiAtLWdpdCBhL2xpYi9jb25maWctYW1pZ2Fvcy5oIGIvbGliL2NvbmZpZy1hbWlnYW9zLmgKaW5kZXggMDRiMThiNy4uNzRmNWY1MiAxMDA2NDQKLS0tIGEvbGliL2NvbmZpZy1hbWlnYW9zLmgKKysrIGIvbGliL2NvbmZpZy1hbWlnYW9zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLWRvcy5oIGIvbGliL2NvbmZpZy1kb3MuaAppbmRleCAyODhiZDFkLi5mMmM5ZmY0IDEwMDY0NAotLS0gYS9saWIvY29uZmlnLWRvcy5oCisrKyBiL2xpYi9jb25maWctZG9zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLW1hYy5oIGIvbGliL2NvbmZpZy1tYWMuaAppbmRleCBlZTdhNjU5Li4zYzEyYmRmIDEwMDY0NAotLS0gYS9saWIvY29uZmlnLW1hYy5oCisrKyBiL2xpYi9jb25maWctbWFjLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLW9zNDAwLmggYi9saWIvY29uZmlnLW9zNDAwLmgKaW5kZXggMWU2MjIyOC4uZmU1Yjg2NCAxMDA2NDQKLS0tIGEvbGliL2NvbmZpZy1vczQwMC5oCisrKyBiL2xpYi9jb25maWctb3M0MDAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb25maWctcmlzY29zLmggYi9saWIvY29uZmlnLXJpc2Nvcy5oCmluZGV4IGU0MDA1NzcuLjAzNzk1MjQgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctcmlzY29zLmgKKysrIGIvbGliL2NvbmZpZy1yaXNjb3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb25maWctc3ltYmlhbi5oIGIvbGliL2NvbmZpZy1zeW1iaWFuLmgKaW5kZXggYTQwZTNkOC4uMjYwM2E0NiAxMDA2NDQKLS0tIGEvbGliL2NvbmZpZy1zeW1iaWFuLmgKKysrIGIvbGliL2NvbmZpZy1zeW1iaWFuLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02NTgsNyArNjU4LDcgQEAKIAogLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCiAvKiNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgXAotICAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvIiovCisgICJhIHN1aXRhYmxlIGN1cmwgbWFpbGluZyBsaXN0ID0+IGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvIiovCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KIC8qI2RlZmluZSBQQUNLQUdFX05BTUUgImN1cmwiKi8KZGlmZiAtLWdpdCBhL2xpYi9jb25maWctdHBmLmggYi9saWIvY29uZmlnLXRwZi5oCmluZGV4IGQ2YjhjYzIuLmQxNzE0ZmQgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctdHBmLmgKKysrIGIvbGliL2NvbmZpZy10cGYuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU4MCw3ICs1ODAsNyBAQAogCiAvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgXAotICAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvIgorICAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIKIAogLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwogI2RlZmluZSBQQUNLQUdFX05BTUUgImN1cmwiCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLXZ4d29ya3MuaCBiL2xpYi9jb25maWctdnh3b3Jrcy5oCmluZGV4IGQ4ODllZmMuLjc4MGE0YTIgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctdnh3b3Jrcy5oCisrKyBiL2xpYi9jb25maWctdnh3b3Jrcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy13aW4zMi5oIGIvbGliL2NvbmZpZy13aW4zMi5oCmluZGV4IGU5YTM3MTIuLmFmN2JiMWYgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctd2luMzIuaAorKysgYi9saWIvY29uZmlnLXdpbjMyLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00ODEsOCArNDgxLDkgQEAKICNlbmRpZgogCiAvKiBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSAnbG9uZyBsb25nJyBkYXRhIHR5cGUuICovCi0jaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgXAotICAgIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTMxMCkpCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgICAgICB8fCBcCisgICAgKGRlZmluZWQoX01TQ19WRVIpICAgICAmJiAoX01TQ19WRVIgICAgID49IDEzMTApKSB8fCBcCisgICAgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTYxKSkKICNkZWZpbmUgSEFWRV9MT05HTE9ORyAxCiAjZW5kaWYKIApAQCAtNjIwLDcgKzYyMSw4IEBACiAvKiBEZWZpbmUgaWYgc3RydWN0IHNvY2thZGRyX2luNiBoYXMgdGhlIHNpbjZfc2NvcGVfaWQgbWVtYmVyLiAqLwogI2RlZmluZSBIQVZFX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lEIDEKIAotI2lmIEhBVkVfV0lOU09DSzJfSCAmJiBkZWZpbmVkKF9XSU4zMl9XSU5OVCkgJiYgKF9XSU4zMl9XSU5OVCA+PSAweDA2MDApCisjaWYgZGVmaW5lZChIQVZFX1dJTlNPQ0syX0gpICYmIGRlZmluZWQoX1dJTjMyX1dJTk5UKSAmJiBcCisgICAgKF9XSU4zMl9XSU5OVCA+PSAweDA2MDApCiAjZGVmaW5lIEhBVkVfU1RSVUNUX1BPTExGRCAxCiAjZW5kaWYKIApAQCAtNzI3LDcgKzcyOSw3IEBACiAvKiBJZiB5b3Ugd2FudCB0byBidWlsZCBjdXJsIHdpdGggdGhlIGJ1aWx0LWluIG1hbnVhbCAqLwogI2RlZmluZSBVU0VfTUFOVUFMIDEKIAotI2lmIGRlZmluZWQoX19QT0NDX18pIHx8IChVU0VfSVBWNikKKyNpZiBkZWZpbmVkKF9fUE9DQ19fKSB8fCBkZWZpbmVkKFVTRV9JUFY2KQogIyAgZGVmaW5lIEVOQUJMRV9JUFY2IDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLXdpbjMyY2UuaCBiL2xpYi9jb25maWctd2luMzJjZS5oCmluZGV4IGE3MjNmZDEuLjM4Mzk0ODUgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctd2luMzJjZS5oCisrKyBiL2xpYi9jb25maWctd2luMzJjZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Nvbm5jYWNoZS5jIGIvbGliL2Nvbm5jYWNoZS5jCmluZGV4IGM3MTJlZDcuLmQwYzA5YzggMTAwNjQ0Ci0tLSBhL2xpYi9jb25uY2FjaGUuYworKysgYi9saWIvY29ubmNhY2hlLmMKQEAgLTUsMTIgKzUsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcsIDxsaW51c0BoYXh4LnNlPgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2LCBMaW51cyBOaWVsc2VuIEZlbHR6aW5nLCA8bGludXNAaGF4eC5zZT4KICAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsMTAgKzMyLDkgQEAKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgogI2luY2x1ZGUgImNvbm5jYWNoZS5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogc3RhdGljIHZvaWQgY29ubl9sbGlzdF9kdG9yKHZvaWQgKnVzZXIsIHZvaWQgKmVsZW1lbnQpCkBAIC0xMzIsOSArMTMxLDE2IEBACiAvKiByZXR1cm5zIGFuIGFsbG9jYXRlZCBrZXkgdG8gZmluZCBhIGJ1bmRsZSBmb3IgdGhpcyBjb25uZWN0aW9uICovCiBzdGF0aWMgY2hhciAqaGFzaGtleShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIHJldHVybiBhcHJpbnRmKCIlczolZCIsCi0gICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMucHJveHk/Y29ubi0+cHJveHkubmFtZTpjb25uLT5ob3N0Lm5hbWUsCi0gICAgICAgICAgICAgICAgIGNvbm4tPmxvY2FscG9ydCk7CisgIGNvbnN0IGNoYXIgKmhvc3RuYW1lOworCisgIGlmKGNvbm4tPmJpdHMucHJveHkpCisgICAgaG9zdG5hbWUgPSBjb25uLT5wcm94eS5uYW1lOworICBlbHNlIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KQorICAgIGhvc3RuYW1lID0gY29ubi0+Y29ubl90b19ob3N0Lm5hbWU7CisgIGVsc2UKKyAgICBob3N0bmFtZSA9IGNvbm4tPmhvc3QubmFtZTsKKworICByZXR1cm4gYXByaW50ZigiJXM6JWQiLCBob3N0bmFtZSwgY29ubi0+cG9ydCk7CiB9CiAKIC8qIExvb2sgdXAgdGhlIGJ1bmRsZSB3aXRoIGFsbCB0aGUgY29ubmVjdGlvbnMgdG8gdGhlIHNhbWUgaG9zdCB0aGlzCmRpZmYgLS1naXQgYS9saWIvY29ubmNhY2hlLmggYi9saWIvY29ubmNhY2hlLmgKaW5kZXggNTkxODFiZi4uYjFkYWRmOSAxMDA2NDQKLS0tIGEvbGliL2Nvbm5jYWNoZS5oCisrKyBiL2xpYi9jb25uY2FjaGUuaApAQCAtMTIsNyArMTIsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb25uZWN0LmMgYi9saWIvY29ubmVjdC5jCmluZGV4IDcyMDJmYTYuLmFjMmYyNjggMTAwNjQ0Ci0tLSBhL2xpYi9jb25uZWN0LmMKKysrIGIvbGliL2Nvbm5lY3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDxpbmV0Lmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAiaWYyaXAuaCIKQEAgLTc0LDcgKzczLDggQEAKICNpbmNsdWRlICJjb25uY2FjaGUuaCIKICNpbmNsdWRlICJtdWx0aWhhbmRsZS5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTYxOSw3ICs2MTksNyBAQAogCiAgIHN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgewogICAgIGNhc2UgQUZfSU5FVDoKLSAgICAgIHNpID0gKHN0cnVjdCBzb2NrYWRkcl9pbiopIHNhOworICAgICAgc2kgPSAoc3RydWN0IHNvY2thZGRyX2luKikodm9pZCopIHNhOwogICAgICAgaWYoQ3VybF9pbmV0X250b3Aoc2EtPnNhX2ZhbWlseSwgJnNpLT5zaW5fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIE1BWF9JUEFEUl9MRU4pKSB7CiAgICAgICAgIHVzX3BvcnQgPSBudG9ocyhzaS0+c2luX3BvcnQpOwpAQCAtNjI5LDcgKzYyOSw3IEBACiAgICAgICBicmVhazsKICNpZmRlZiBFTkFCTEVfSVBWNgogICAgIGNhc2UgQUZfSU5FVDY6Ci0gICAgICBzaTYgPSAoc3RydWN0IHNvY2thZGRyX2luNiopc2E7CisgICAgICBzaTYgPSAoc3RydWN0IHNvY2thZGRyX2luNiopKHZvaWQqKSBzYTsKICAgICAgIGlmKEN1cmxfaW5ldF9udG9wKHNhLT5zYV9mYW1pbHksICZzaTYtPnNpbjZfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIE1BWF9JUEFEUl9MRU4pKSB7CiAgICAgICAgIHVzX3BvcnQgPSBudG9ocyhzaTYtPnNpbjZfcG9ydCk7CkBAIC02NjgsNyArNjY4LDcgQEAKICAgICAvKiB0aGVyZSdzIG5vIGNvbm5lY3Rpb24hICovCiAgICAgcmV0dXJuOwogCi0gIGlmKCFjb25uLT5iaXRzLnJldXNlKSB7CisgIGlmKCFjb25uLT5iaXRzLnJldXNlICYmICFjb25uLT5iaXRzLnRjcF9mYXN0b3BlbikgewogICAgIGludCBlcnJvcjsKIAogICAgIGxlbiA9IHNpemVvZihzdHJ1Y3QgQ3VybF9zb2NrYWRkcl9zdG9yYWdlKTsKQEAgLTc2NCw2ICs3NjQsNyBAQAogICAgIHJjID0gQ3VybF9zb2NrZXRfcmVhZHkoQ1VSTF9TT0NLRVRfQkFELCBjb25uLT50ZW1wc29ja1tpXSwgMCk7CiAKICAgICBpZihyYyA9PSAwKSB7IC8qIG5vIGNvbm5lY3Rpb24geWV0ICovCisgICAgICBlcnJvciA9IDA7CiAgICAgICBpZihjdXJseF90dmRpZmYobm93LCBjb25uLT5jb25uZWN0dGltZSkgPj0gY29ubi0+dGltZW91dG1zX3Blcl9hZGRyKSB7CiAgICAgICAgIGluZm9mKGRhdGEsICJBZnRlciAlbGRtcyBjb25uZWN0IHRpbWUsIG1vdmUgb24hXG4iLAogICAgICAgICAgICAgICBjb25uLT50aW1lb3V0bXNfcGVyX2FkZHIpOwpAQCAtNzc2LDcgKzc3Nyw3IEBACiAgICAgICAgIHRyeW5leHRpcChjb25uLCBzb2NraW5kZXgsIDEpOwogICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmKHJjID09IENVUkxfQ1NFTEVDVF9PVVQpIHsKKyAgICBlbHNlIGlmKHJjID09IENVUkxfQ1NFTEVDVF9PVVQgfHwgY29ubi0+Yml0cy50Y3BfZmFzdG9wZW4pIHsKICAgICAgIGlmKHZlcmlmeWNvbm5lY3QoY29ubi0+dGVtcHNvY2tbaV0sICZlcnJvcikpIHsKICAgICAgICAgLyogd2UgYXJlIGNvbm5lY3RlZCB3aXRoIFRDUCwgYXdlc29tZSEgKi8KIApAQCAtODQxLDYgKzg0Miw4IEBACiAgIGlmKHJlc3VsdCkgewogICAgIC8qIG5vIG1vcmUgYWRkcmVzc2VzIHRvIHRyeSAqLwogCisgICAgY29uc3QgY2hhciogaG9zdG5hbWU7CisKICAgICAvKiBpZiB0aGUgZmlyc3QgYWRkcmVzcyBmYW1pbHkgcnVucyBvdXQgb2YgYWRkcmVzc2VzIHRvIHRyeSBiZWZvcmUKICAgICAgICB0aGUgaGFwcHkgZXllYmFsbCB0aW1lb3V0LCBnbyBhaGVhZCBhbmQgdHJ5IHRoZSBuZXh0IGZhbWlseSBub3cgKi8KICAgICBpZihjb25uLT50ZW1wYWRkclsxXSA9PSBOVUxMKSB7CkBAIC04NDksMjAgKzg1MiwyNyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmKGNvbm4tPmJpdHMucHJveHkpCisgICAgICBob3N0bmFtZSA9IGNvbm4tPnByb3h5Lm5hbWU7CisgICAgZWxzZSBpZihjb25uLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICAgIGhvc3RuYW1lID0gY29ubi0+Y29ubl90b19ob3N0Lm5hbWU7CisgICAgZWxzZQorICAgICAgaG9zdG5hbWUgPSBjb25uLT5ob3N0Lm5hbWU7CisKICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gJXMgcG9ydCAlbGQ6ICVzIiwKLSAgICAgICAgICBjb25uLT5iaXRzLnByb3h5P2Nvbm4tPnByb3h5Lm5hbWU6Y29ubi0+aG9zdC5uYW1lLAotICAgICAgICAgIGNvbm4tPnBvcnQsIEN1cmxfc3RyZXJyb3IoY29ubiwgZXJyb3IpKTsKKyAgICAgICAgaG9zdG5hbWUsIGNvbm4tPnBvcnQsIEN1cmxfc3RyZXJyb3IoY29ubiwgZXJyb3IpKTsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHRjcG5vZGVsYXkoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHNvY2tmZCkKK3ZvaWQgQ3VybF90Y3Bub2RlbGF5KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCBzb2NrZmQpCiB7Ci0jaWZkZWYgVENQX05PREVMQVkKLSAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE9IGNvbm4tPmRhdGE7Ci0gIGN1cmxfc29ja2xlbl90IG9ub2ZmID0gKGN1cmxfc29ja2xlbl90KSBkYXRhLT5zZXQudGNwX25vZGVsYXk7CisjaWYgZGVmaW5lZChUQ1BfTk9ERUxBWSkKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQorICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisjZW5kaWYKKyAgY3VybF9zb2NrbGVuX3Qgb25vZmYgPSAoY3VybF9zb2NrbGVuX3QpIDE7CiAgIGludCBsZXZlbCA9IElQUFJPVE9fVENQOwogCiAjaWYgMApAQCAtODc4LDYgKzg4OCwxMCBAQAogICAgIGxldmVsID0gcGUtPnBfcHJvdG87CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgKHZvaWQpIGNvbm47CisjZW5kaWYKKwogICBpZihzZXRzb2Nrb3B0KHNvY2tmZCwgbGV2ZWwsIFRDUF9OT0RFTEFZLCAodm9pZCAqKSZvbm9mZiwKICAgICAgICAgICAgICAgICBzaXplb2Yob25vZmYpKSA8IDApCiAgICAgaW5mb2YoZGF0YSwgIkNvdWxkIG5vdCBzZXQgVENQX05PREVMQVk6ICVzXG4iLApAQCAtOTEzLDcgKzkyNyw3IEBACiAvKiBXaGVuIHlvdSBydW4gYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUgV2luZG93cyBTb2NrZXRzIEFQSSwgeW91IG1heQogICAgZXhwZXJpZW5jZSBzbG93IHBlcmZvcm1hbmNlIHdoZW4geW91IGNvcHkgZGF0YSB0byBhIFRDUCBzZXJ2ZXIuCiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvODIzNzY0CisgICBodHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84MjM3NjQKIAogICAgV29yay1hcm91bmQ6IE1ha2UgdGhlIFNvY2tldCBTZW5kIEJ1ZmZlciBTaXplIExhcmdlciBUaGFuIHRoZSBQcm9ncmFtIFNlbmQKICAgIEJ1ZmZlciBTaXplCkBAIC05NDksMTYgKzk2MywyMSBAQAogICAgICAgICBkZXRlY3RPc1N0YXRlID0gREVURUNUX09TX1ZJU1RBX09SX0xBVEVSOwogICAgIH0KICNlbHNlCi0gICAgVUxPTkdMT05HIG1ham9yVmVyc2lvbk1hc2s7CisgICAgVUxPTkdMT05HIGNtOwogICAgIE9TVkVSU0lPTklORk9FWCBvc3ZlcjsKIAogICAgIG1lbXNldCgmb3N2ZXIsIDAsIHNpemVvZihvc3ZlcikpOwogICAgIG9zdmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yob3N2ZXIpOwogICAgIG9zdmVyLmR3TWFqb3JWZXJzaW9uID0gbWFqb3JWZXJzaW9uOwotICAgIG1ham9yVmVyc2lvbk1hc2sgPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9NQUpPUlZFUlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSX0dSRUFURVJfRVFVQUwpOwogCi0gICAgaWYoVmVyaWZ5VmVyc2lvbkluZm8oJm9zdmVyLCBWRVJfTUFKT1JWRVJTSU9OLCBtYWpvclZlcnNpb25NYXNrKSkKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soMCwgVkVSX01BSk9SVkVSU0lPTiwgVkVSX0dSRUFURVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX01JTk9SVkVSU0lPTiwgVkVSX0dSRUFURVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX1NFUlZJQ0VQQUNLTUFKT1IsIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9TRVJWSUNFUEFDS01JTk9SLCBWRVJfR1JFQVRFUl9FUVVBTCk7CisKKyAgICBpZihWZXJpZnlWZXJzaW9uSW5mbygmb3N2ZXIsIChWRVJfTUFKT1JWRVJTSU9OIHwgVkVSX01JTk9SVkVSU0lPTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSX1NFUlZJQ0VQQUNLTUFKT1IgfCBWRVJfU0VSVklDRVBBQ0tNSU5PUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgY20pKQogICAgICAgZGV0ZWN0T3NTdGF0ZSA9IERFVEVDVF9PU19WSVNUQV9PUl9MQVRFUjsKICAgICBlbHNlCiAgICAgICBkZXRlY3RPc1N0YXRlID0gREVURUNUX09TX1BSRVZJU1RBOwpAQCAtOTkwLDcgKzEwMDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcCkKIHsKICAgc3RydWN0IEN1cmxfc29ja2FkZHJfZXggYWRkcjsKLSAgaW50IHJjOworICBpbnQgcmMgPSAtMTsKICAgaW50IGVycm9yID0gMDsKICAgYm9vbCBpc2Nvbm5lY3RlZCA9IEZBTFNFOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CkBAIC0xMDI4LDcgKzEwNDcsNyBAQAogICBpc190Y3AgPSAoYWRkci5mYW1pbHkgPT0gQUZfSU5FVCkgJiYgYWRkci5zb2NrdHlwZSA9PSBTT0NLX1NUUkVBTTsKICNlbmRpZgogICBpZihpc190Y3AgJiYgZGF0YS0+c2V0LnRjcF9ub2RlbGF5KQotICAgIHRjcG5vZGVsYXkoY29ubiwgc29ja2ZkKTsKKyAgICBDdXJsX3RjcG5vZGVsYXkoY29ubiwgc29ja2ZkKTsKIAogICBub3NpZ3BpcGUoY29ubiwgc29ja2ZkKTsKIApAQCAtMTA3OSw3ICsxMDk4LDI2IEBACiAKICAgLyogQ29ubmVjdCBUQ1Agc29ja2V0cywgYmluZCBVRFAgKi8KICAgaWYoIWlzY29ubmVjdGVkICYmIChjb25uLT5zb2NrdHlwZSA9PSBTT0NLX1NUUkVBTSkpIHsKLSAgICByYyA9IGNvbm5lY3Qoc29ja2ZkLCAmYWRkci5zYV9hZGRyLCBhZGRyLmFkZHJsZW4pOworICAgIGlmKGNvbm4tPmJpdHMudGNwX2Zhc3RvcGVuKSB7CisjaWYgZGVmaW5lZChDT05ORUNUX0RBVEFfSURFTVBPVEVOVCkgLyogT1MgWCAqLworICAgICAgc2FfZW5kcG9pbnRzX3QgZW5kcG9pbnRzOworICAgICAgZW5kcG9pbnRzLnNhZV9zcmNpZiA9IDA7CisgICAgICBlbmRwb2ludHMuc2FlX3NyY2FkZHIgPSBOVUxMOworICAgICAgZW5kcG9pbnRzLnNhZV9zcmNhZGRybGVuID0gMDsKKyAgICAgIGVuZHBvaW50cy5zYWVfZHN0YWRkciA9ICZhZGRyLnNhX2FkZHI7CisgICAgICBlbmRwb2ludHMuc2FlX2RzdGFkZHJsZW4gPSBhZGRyLmFkZHJsZW47CisKKyAgICAgIHJjID0gY29ubmVjdHgoc29ja2ZkLCAmZW5kcG9pbnRzLCBTQUVfQVNTT0NJRF9BTlksCisgICAgICAgICAgICAgICAgICAgIENPTk5FQ1RfUkVTVU1FX09OX1JFQURfV1JJVEUgfCBDT05ORUNUX0RBVEFfSURFTVBPVEVOVCwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisjZWxpZiBkZWZpbmVkKE1TR19GQVNUT1BFTikgLyogTGludXggKi8KKyAgICAgIHJjID0gMDsgLyogRG8gbm90aGluZyAqLworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmMgPSBjb25uZWN0KHNvY2tmZCwgJmFkZHIuc2FfYWRkciwgYWRkci5hZGRybGVuKTsKKyAgICB9CisKICAgICBpZigtMSA9PSByYykKICAgICAgIGVycm9yID0gU09DS0VSUk5POwogICB9CkBAIC0xMjM4LDEwICsxMjc2LDEwIEBACiAgICAgfQogLyogTWluaXggMy4xIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgZmxhZ3Mgb24gcmVjdjsganVzdCBhc3N1bWUgc29ja2V0IGlzIE9LICovCiAjaWZkZWYgTVNHX1BFRUsKLSAgICBlbHNlIHsKKyAgICBlbHNlIGlmKHNvY2tmZCAhPSBDVVJMX1NPQ0tFVF9CQUQpIHsKICAgICAgIC8qIHVzZSB0aGUgc29ja2V0ICovCiAgICAgICBjaGFyIGJ1ZjsKLSAgICAgIGlmKHJlY3YoKFJFQ1ZfVFlQRV9BUkcxKWMtPnNvY2tbRklSU1RTT0NLRVRdLCAoUkVDVl9UWVBFX0FSRzIpJmJ1ZiwKKyAgICAgIGlmKHJlY3YoKFJFQ1ZfVFlQRV9BUkcxKXNvY2tmZCwgKFJFQ1ZfVFlQRV9BUkcyKSZidWYsCiAgICAgICAgICAgICAgIChSRUNWX1RZUEVfQVJHMykxLCAoUkVDVl9UWVBFX0FSRzQpTVNHX1BFRUspID09IDApIHsKICAgICAgICAgcmV0dXJuIENVUkxfU09DS0VUX0JBRDsgICAvKiBGSU4gcmVjZWl2ZWQgKi8KICAgICAgIH0KZGlmZiAtLWdpdCBhL2xpYi9jb25uZWN0LmggYi9saWIvY29ubmVjdC5oCmluZGV4IDkxNjQ2YzcuLmYzZDRhYzcgMTAwNjQ0Ci0tLSBhL2xpYi9jb25uZWN0LmgKKysrIGIvbGliL2Nvbm5lY3QuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDcgKzU2LDcgQEAKIC8qIFdoZW4geW91IHJ1biBhIHByb2dyYW0gdGhhdCB1c2VzIHRoZSBXaW5kb3dzIFNvY2tldHMgQVBJLCB5b3UgbWF5CiAgICBleHBlcmllbmNlIHNsb3cgcGVyZm9ybWFuY2Ugd2hlbiB5b3UgY29weSBkYXRhIHRvIGEgVENQIHNlcnZlci4KIAotICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84MjM3NjQKKyAgIGh0dHBzOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzgyMzc2NAogCiAgICBXb3JrLWFyb3VuZDogTWFrZSB0aGUgU29ja2V0IFNlbmQgQnVmZmVyIFNpemUgTGFyZ2VyIFRoYW4gdGhlIFByb2dyYW0gU2VuZAogICAgQnVmZmVyIFNpemUKQEAgLTEwMiw2ICsxMDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfc29ja2FkZHJfZXggKmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrZmQpOwogCit2b2lkIEN1cmxfdGNwbm9kZWxheShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3Qgc29ja2ZkKTsKKwogI2lmZGVmIENVUkxERUJVRwogLyoKICAqIEN1cmxfY29ubmNsb3NlKCkgc2V0cyB0aGUgYml0LmNsb3NlIGJpdCB0byBUUlVFIHdpdGggYW4gZXhwbGFuYXRpb24uCmRpZmYgLS1naXQgYS9saWIvY29udGVudF9lbmNvZGluZy5jIGIvbGliL2NvbnRlbnRfZW5jb2RpbmcuYwppbmRleCBjNjhlNmU1Li4yZDMwODE2IDEwMDY0NAotLS0gYS9saWIvY29udGVudF9lbmNvZGluZy5jCisrKyBiL2xpYi9jb250ZW50X2VuY29kaW5nLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2NvbnRlbnRfZW5jb2RpbmcuaCBiL2xpYi9jb250ZW50X2VuY29kaW5nLmgKaW5kZXggNTAxZjZjOC4uM2ZhZGQyOCAxMDA2NDQKLS0tIGEvbGliL2NvbnRlbnRfZW5jb2RpbmcuaAorKysgYi9saWIvY29udGVudF9lbmNvZGluZy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Nvb2tpZS5jIGIvbGliL2Nvb2tpZS5jCmluZGV4IGVhNzE3YTYuLjRlNGMyOTAgMTAwNjQ0Ci0tLSBhL2xpYi9jb29raWUuYworKysgYi9saWIvY29va2llLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04Myw3ICs4MywxMCBAQAogCiAjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DT09LSUVTKQogCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpZmRlZiBVU0VfTElCUFNMCisjIGluY2x1ZGUgPGxpYnBzbC5oPgorI2VuZGlmCisKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAjaW5jbHVkZSAiY29va2llLmgiCiAjaW5jbHVkZSAic3RyZXF1YWwuaCIKQEAgLTk2LDcgKzk5LDggQEAKICNpbmNsdWRlICJjdXJsX21lbXJjaHIuaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0zMDQsNyArMzA4LDcgQEAKICAgcHYgPSBOVUxMOwogICB3aGlsZShjbykgewogICAgIG54ID0gY28tPm5leHQ7Ci0gICAgaWYoKGNvLT5leHBpcmVzdHIgfHwgY28tPm1heGFnZSkgJiYgY28tPmV4cGlyZXMgPCBub3cpIHsKKyAgICBpZihjby0+ZXhwaXJlcyAmJiBjby0+ZXhwaXJlcyA8IG5vdykgewogICAgICAgaWYoY28gPT0gY29va2llcy0+Y29va2llcykgewogICAgICAgICBjb29raWVzLT5jb29raWVzID0gY28tPm5leHQ7CiAgICAgICB9CkBAIC0zNzgsNiArMzgyLDEwIEBACiAgIGJvb2wgcmVwbGFjZV9vbGQgPSBGQUxTRTsKICAgYm9vbCBiYWRjb29raWUgPSBGQUxTRTsgLyogY29va2llcyBhcmUgZ29vZCBieSBkZWZhdWx0LiBtbW1tbSB5dW1teSAqLwogCisjaWZkZWYgVVNFX0xJQlBTTAorICBjb25zdCBwc2xfY3R4X3QgKnBzbDsKKyNlbmRpZgorCiAjaWZkZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwogICAodm9pZClkYXRhOwogI2VuZGlmCkBAIC00MDgsNyArNDE2LDcgQEAKICAgICBkbyB7CiAgICAgICAvKiB3ZSBoYXZlIGEgPHdoYXQ+PTx0aGlzPiBwYWlyIG9yIGEgc3RhbmQtYWxvbmUgd29yZCBoZXJlICovCiAgICAgICBuYW1lWzBdPXdoYXRbMF09MDsgLyogaW5pdCB0aGUgYnVmZmVycyAqLwotICAgICAgaWYoMSA8PSBzc2NhbmYocHRyLCAiJSIgTUFYX05BTUVfVFhUICJbXjtcclxuID1dID0lIgorICAgICAgaWYoMSA8PSBzc2NhbmYocHRyLCAiJSIgTUFYX05BTUVfVFhUICJbXjtcclxuPV0gPSUiCiAgICAgICAgICAgICAgICAgICAgICBNQVhfQ09PS0lFX0xJTkVfVFhUICJbXjtcclxuXSIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lLCB3aGF0KSkgewogICAgICAgICAvKiBVc2Ugc3Ryc3RvcmUoKSBiZWxvdyB0byBwcm9wZXJseSBkZWFsIHdpdGggcmVjZWl2ZWQgY29va2llCkBAIC00MTgsMTUgKzQyNiwyNCBAQAogICAgICAgICBib29sIGRvbmUgPSBGQUxTRTsKICAgICAgICAgYm9vbCBzZXA7CiAgICAgICAgIHNpemVfdCBsZW49c3RybGVuKHdoYXQpOwotICAgICAgICBjb25zdCBjaGFyICplbmRvZm4gPSAmcHRyWyBzdHJsZW4obmFtZSkgXTsKLQotICAgICAgICAvKiBza2lwIHRyYWlsaW5nIHNwYWNlcyBpbiBuYW1lICovCi0gICAgICAgIHdoaWxlKCplbmRvZm4gJiYgSVNCTEFOSygqZW5kb2ZuKSkKLSAgICAgICAgICBlbmRvZm4rKzsKKyAgICAgICAgc2l6ZV90IG5sZW4gPSBzdHJsZW4obmFtZSk7CisgICAgICAgIGNvbnN0IGNoYXIgKmVuZG9mbiA9ICZwdHJbIG5sZW4gXTsKIAogICAgICAgICAvKiBuYW1lIGVuZHMgd2l0aCBhICc9JyA/ICovCiAgICAgICAgIHNlcCA9ICgqZW5kb2ZuID09ICc9Jyk/VFJVRTpGQUxTRTsKIAorICAgICAgICBpZihubGVuKSB7CisgICAgICAgICAgZW5kb2ZuLS07IC8qIG1vdmUgdG8gdGhlIGxhc3QgY2hhcmFjdGVyICovCisgICAgICAgICAgaWYoSVNCTEFOSygqZW5kb2ZuKSkgeworICAgICAgICAgICAgLyogc2tpcCB0cmFpbGluZyBzcGFjZXMgaW4gbmFtZSAqLworICAgICAgICAgICAgd2hpbGUoKmVuZG9mbiAmJiBJU0JMQU5LKCplbmRvZm4pICYmIG5sZW4pIHsKKyAgICAgICAgICAgICAgZW5kb2ZuLS07CisgICAgICAgICAgICAgIG5sZW4tLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5hbWVbbmxlbl09MDsgLyogbmV3IGVuZCBvZiBuYW1lICovCisgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgLyogU3RyaXAgb2ZmIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSB0aGUgJ3doYXQnICovCiAgICAgICAgIHdoaWxlKGxlbiAmJiBJU0JMQU5LKHdoYXRbbGVuLTFdKSkgewogICAgICAgICAgIHdoYXRbbGVuLTFdPTA7CkBAIC00MzgsNyArNDU1LDE2IEBACiAgICAgICAgIHdoaWxlKCp3aGF0cHRyICYmIElTQkxBTksoKndoYXRwdHIpKQogICAgICAgICAgIHdoYXRwdHIrKzsKIAotICAgICAgICBpZighbGVuKSB7CisgICAgICAgIGlmKCFjby0+bmFtZSAmJiBzZXApIHsKKyAgICAgICAgICAvKiBUaGUgdmVyeSBmaXJzdCBuYW1lL3ZhbHVlIHBhaXIgaXMgdGhlIGFjdHVhbCBjb29raWUgbmFtZSAqLworICAgICAgICAgIGNvLT5uYW1lID0gc3RyZHVwKG5hbWUpOworICAgICAgICAgIGNvLT52YWx1ZSA9IHN0cmR1cCh3aGF0cHRyKTsKKyAgICAgICAgICBpZighY28tPm5hbWUgfHwgIWNvLT52YWx1ZSkgeworICAgICAgICAgICAgYmFkY29va2llID0gVFJVRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKCFsZW4pIHsKICAgICAgICAgICAvKiB0aGlzIHdhcyBhICI8bmFtZT49IiB3aXRoIG5vIGNvbnRlbnQsIGFuZCB3ZSBtdXN0IGFsbG93CiAgICAgICAgICAgICAgJ3NlY3VyZScgYW5kICdodHRwb25seScgc3BlY2lmaWVkIHRoaXMgd2VpcmRseSAqLwogICAgICAgICAgIGRvbmUgPSBUUlVFOwpAQCAtNTMyLDE0ICs1NTgsNiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoIWNvLT5uYW1lKSB7Ci0gICAgICAgICAgY28tPm5hbWUgPSBzdHJkdXAobmFtZSk7Ci0gICAgICAgICAgY28tPnZhbHVlID0gc3RyZHVwKHdoYXRwdHIpOwotICAgICAgICAgIGlmKCFjby0+bmFtZSB8fCAhY28tPnZhbHVlKSB7Ci0gICAgICAgICAgICBiYWRjb29raWUgPSBUUlVFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAgIC8qCiAgICAgICAgICAgZWxzZSB0aGlzIGlzIHRoZSBzZWNvbmQgKG9yIG1vcmUpIG5hbWUgd2UgZG9uJ3Qga25vdwogICAgICAgICAgIGFib3V0ISAqLwpAQCAtNzc2LDYgKzc5NCwyMSBAQAogICAvKiBhdCBmaXJzdCwgcmVtb3ZlIGV4cGlyZWQgY29va2llcyAqLwogICByZW1vdmVfZXhwaXJlZChjKTsKIAorI2lmZGVmIFVTRV9MSUJQU0wKKyAgLyogQ2hlY2sgaWYgdGhlIGRvbWFpbiBpcyBhIFB1YmxpYyBTdWZmaXggYW5kIGlmIHllcywgaWdub3JlIHRoZSBjb29raWUuCisgICAgIFRoaXMgbmVlZHMgYSBsaWJwc2wgY29tcGlsZWQgd2l0aCBidWlsdGluIGRhdGEuICovCisgIGlmKGRvbWFpbiAmJiBjby0+ZG9tYWluICYmICFpc2lwKGNvLT5kb21haW4pKSB7CisgICAgaWYoKChwc2wgPSBwc2xfYnVpbHRpbigpKSAhPSBOVUxMKQorICAgICAgICAmJiAhcHNsX2lzX2Nvb2tpZV9kb21haW5fYWNjZXB0YWJsZShwc2wsIGRvbWFpbiwgY28tPmRvbWFpbikpIHsKKyAgICAgIGluZm9mKGRhdGEsCisgICAgICAgICAgICAiY29va2llICclcycgZHJvcHBlZCwgZG9tYWluICclcycgbXVzdCBub3Qgc2V0IGNvb2tpZXMgZm9yICclcydcbiIsCisgICAgICAgICAgICBjby0+bmFtZSwgZG9tYWluLCBjby0+ZG9tYWluKTsKKyAgICAgIGZyZWVjb29raWUoY28pOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICB9CisjZW5kaWYKKwogICBjbGlzdCA9IGMtPmNvb2tpZXM7CiAgIHJlcGxhY2Vfb2xkID0gRkFMU0U7CiAgIHdoaWxlKGNsaXN0KSB7CkBAIC0xMjQ2LDYgKzEyNzksNyBAQAogICBzdHJ1Y3QgQ29va2llICpjbzsKICAgRklMRSAqb3V0OwogICBib29sIHVzZV9zdGRvdXQ9RkFMU0U7CisgIGNoYXIgKmZvcm1hdF9wdHI7CiAKICAgaWYoKE5VTEwgPT0gYykgfHwgKDAgPT0gYy0+bnVtY29va2llcykpCiAgICAgLyogSWYgdGhlcmUgYXJlIG5vIGtub3duIGNvb2tpZXMsIHdlIGRvbid0IHdyaXRlIG9yIGV2ZW4gY3JlYXRlIGFueQpAQCAtMTI2NiwyOSArMTMwMCwyMyBAQAogICAgICAgcmV0dXJuIDE7IC8qIGZhaWx1cmUgKi8KICAgfQogCi0gIGlmKGMpIHsKLSAgICBjaGFyICpmb3JtYXRfcHRyOworICBmcHV0cygiIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlXG4iCisgICAgICAgICIjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWxcbiIKKyAgICAgICAgIiMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLlxuXG4iLAorICAgICAgICBvdXQpOwogCi0gICAgZnB1dHMoIiMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZVxuIgotICAgICAgICAgICIjIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbFxuIgotICAgICAgICAgICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay5cblxuIiwKLSAgICAgICAgICBvdXQpOwotICAgIGNvID0gYy0+Y29va2llczsKLQotICAgIHdoaWxlKGNvKSB7Ci0gICAgICBpZighY28tPmRvbWFpbikKLSAgICAgICAgY29udGludWU7Ci0gICAgICBmb3JtYXRfcHRyID0gZ2V0X25ldHNjYXBlX2Zvcm1hdChjbyk7Ci0gICAgICBpZihmb3JtYXRfcHRyID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihvdXQsICIjXG4jIEZhdGFsIGxpYmN1cmwgZXJyb3JcbiIpOwotICAgICAgICBpZighdXNlX3N0ZG91dCkKLSAgICAgICAgICBmY2xvc2Uob3V0KTsKKyAgZm9yKGNvID0gYy0+Y29va2llczsgY287IGNvID0gY28tPm5leHQpIHsKKyAgICBpZighY28tPmRvbWFpbikKKyAgICAgIGNvbnRpbnVlOworICAgIGZvcm1hdF9wdHIgPSBnZXRfbmV0c2NhcGVfZm9ybWF0KGNvKTsKKyAgICBpZihmb3JtYXRfcHRyID09IE5VTEwpIHsKKyAgICAgIGZwcmludGYob3V0LCAiI1xuIyBGYXRhbCBsaWJjdXJsIGVycm9yXG4iKTsKKyAgICAgIGlmKCF1c2Vfc3Rkb3V0KQorICAgICAgICBmY2xvc2Uob3V0KTsKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgICBmcHJpbnRmKG91dCwgIiVzXG4iLCBmb3JtYXRfcHRyKTsKLSAgICAgIGZyZWUoZm9ybWF0X3B0cik7Ci0gICAgICBjbz1jby0+bmV4dDsKICAgICB9CisgICAgZnByaW50ZihvdXQsICIlc1xuIiwgZm9ybWF0X3B0cik7CisgICAgZnJlZShmb3JtYXRfcHRyKTsKICAgfQogCiAgIGlmKCF1c2Vfc3Rkb3V0KQpAQCAtMTMwOCw5ICsxMzM2LDcgQEAKICAgICAgIChkYXRhLT5jb29raWVzLT5udW1jb29raWVzID09IDApKQogICAgIHJldHVybiBOVUxMOwogCi0gIGMgPSBkYXRhLT5jb29raWVzLT5jb29raWVzOwotCi0gIHdoaWxlKGMpIHsKKyAgZm9yKGMgPSBkYXRhLT5jb29raWVzLT5jb29raWVzOyBjOyBjID0gYy0+bmV4dCkgewogICAgIGlmKCFjLT5kb21haW4pCiAgICAgICBjb250aW51ZTsKICAgICBsaW5lID0gZ2V0X25ldHNjYXBlX2Zvcm1hdChjKTsKQEAgLTEzMjUsNyArMTM1MSw2IEBACiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbGlzdCA9IGJlZzsKLSAgICBjID0gYy0+bmV4dDsKICAgfQogCiAgIHJldHVybiBsaXN0OwpkaWZmIC0tZ2l0IGEvbGliL2Nvb2tpZS5oIGIvbGliL2Nvb2tpZS5oCmluZGV4IGJkODkwODIuLjc0YTkyMjQgMTAwNjQ0Ci0tLSBhL2xpYi9jb29raWUuaAorKysgYi9saWIvY29va2llLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9hZGRyaW5mby5jIGIvbGliL2N1cmxfYWRkcmluZm8uYwppbmRleCA2NjI3YTZiLi44ZmEwYzg0IDEwMDY0NAotLS0gYS9saWIvY3VybF9hZGRyaW5mby5jCisrKyBiL2xpYi9jdXJsX2FkZHJpbmZvLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCwxMCArNTAsOSBAQAogI2luY2x1ZGUgImN1cmxfYWRkcmluZm8uaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoKQEAgLTUyMSw3ICs1MjAsMTEgQEAKIGN1cmxfZG9mcmVlYWRkcmluZm8oc3RydWN0IGFkZHJpbmZvICpmcmVldGhpcywKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKnNvdXJjZSkKIHsKKyNpZmRlZiBVU0VfTFdJUFNPQ0sKKyAgbHdpcF9mcmVlYWRkcmluZm8oZnJlZXRoaXMpOworI2Vsc2UKICAgKGZyZWVhZGRyaW5mbykoZnJlZXRoaXMpOworI2VuZGlmCiAgIGN1cmxfbWVtbG9nKCJBRERSICVzOiVkIGZyZWVhZGRyaW5mbyglcClcbiIsCiAgICAgICAgICAgICAgIHNvdXJjZSwgbGluZSwgKHZvaWQgKilmcmVldGhpcyk7CiB9CkBAIC01NDQsNyArNTQ3LDExIEBACiAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFkZHJpbmZvICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpCiB7CisjaWZkZWYgVVNFX0xXSVBTT0NLCisgIGludCByZXM9bHdpcF9nZXRhZGRyaW5mbyhob3N0bmFtZSwgc2VydmljZSwgaGludHMsIHJlc3VsdCk7CisjZWxzZQogICBpbnQgcmVzPShnZXRhZGRyaW5mbykoaG9zdG5hbWUsIHNlcnZpY2UsIGhpbnRzLCByZXN1bHQpOworI2VuZGlmCiAgIGlmKDAgPT0gcmVzKQogICAgIC8qIHN1Y2Nlc3MgKi8KICAgICBjdXJsX21lbWxvZygiQUREUiAlczolZCBnZXRhZGRyaW5mbygpID0gJXBcbiIsCmRpZmYgLS1naXQgYS9saWIvY3VybF9hZGRyaW5mby5oIGIvbGliL2N1cmxfYWRkcmluZm8uaAppbmRleCA0ZWY4ODI3Li4wMWYyODY0IDEwMDY0NAotLS0gYS9saWIvY3VybF9hZGRyaW5mby5oCisrKyBiL2xpYi9jdXJsX2FkZHJpbmZvLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04Myw3ICs4Myw4IEBACiBDdXJsX2FkZHJpbmZvICpDdXJsX3VuaXgyYWRkcihjb25zdCBjaGFyICpwYXRoKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChDVVJMREVCVUcpICYmIGRlZmluZWQoSEFWRV9GUkVFQUREUklORk8pCisjaWYgZGVmaW5lZChDVVJMREVCVUcpICYmIGRlZmluZWQoSEFWRV9HRVRBRERSSU5GTykgJiYgXAorICAgIGRlZmluZWQoSEFWRV9GUkVFQUREUklORk8pCiB2b2lkCiBjdXJsX2RvZnJlZWFkZHJpbmZvKHN0cnVjdCBhZGRyaW5mbyAqZnJlZXRoaXMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfYmFzZTY0LmggYi9saWIvY3VybF9iYXNlNjQuaAppbmRleCA5Mjg5NmZlLi5jMjYyNDE3IDEwMDY0NAotLS0gYS9saWIvY3VybF9iYXNlNjQuaAorKysgYi9saWIvY3VybF9iYXNlNjQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2NvbmZpZy5oLmNtYWtlIGIvbGliL2N1cmxfY29uZmlnLmguY21ha2UKaW5kZXggNTM3NmFhNy4uNmI1MDcwYSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfY29uZmlnLmguY21ha2UKKysrIGIvbGliL2N1cmxfY29uZmlnLmguY21ha2UKQEAgLTI0LDYgKzI0LDEyIEBACiAvKiB0byBkaXNhYmxlIEZUUCAqLwogI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9GVFAgMQogCisvKiB0byBkaXNhYmxlIEdPUEhFUiAqLworI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9HT1BIRVIgMQorCisvKiB0byBkaXNhYmxlIElNQVAgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfSU1BUCAxCisKIC8qIHRvIGRpc2FibGUgSFRUUCAqLwogI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9IVFRQIDEKIApAQCAtMzMsOSArMzksMjQgQEAKIC8qIHRvIGRpc2FibGUgTERBUFMgKi8KICNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfTERBUFMgMQogCisvKiB0byBkaXNhYmxlIFBPUDMgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfUE9QMyAxCisKIC8qIHRvIGRpc2FibGUgcHJveGllcyAqLwogI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9QUk9YWSAxCiAKKy8qIHRvIGRpc2FibGUgUlRTUCAqLworI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9SVFNQIDEKKworLyogdG8gZGlzYWJsZSBSVE1QICovCisjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX1JUTVAgMQorCisvKiB0byBkaXNhYmxlIFNNQiAqLworI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9TTUIgMQorCisvKiB0byBkaXNhYmxlIFNNVFAgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfU01UUCAxCisKIC8qIHRvIGRpc2FibGUgVEVMTkVUICovCiAjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX1RFTE5FVCAxCiAKQEAgLTkxOSw2ICs5NDAsOSBAQAogLyogdG8gZW5hYmxlIFNTUEkgc3VwcG9ydCAqLwogI2NtYWtlZGVmaW5lIFVTRV9XSU5ET1dTX1NTUEkgMQogCisvKiB0byBlbmFibGUgV2luZG93cyBTU0wgICovCisjY21ha2VkZWZpbmUgVVNFX1NDSEFOTkVMIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgeWFTU0wgaW4gT3BlblNTTCBjb21wYXRpYmlsaXR5IG1vZGUuICovCiAjY21ha2VkZWZpbmUgVVNFX1lBU1NMRU1VTCAxCiAKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2Rlcy5jIGIvbGliL2N1cmxfZGVzLmMKaW5kZXggNDJjMWRmOS4uNDIxYzlmNyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZGVzLmMKKysrIGIvbGliL2N1cmxfZGVzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWYgZGVmaW5lZChVU0VfTlRMTSkgJiYgKCFkZWZpbmVkKFVTRV9PUEVOU1NMKSB8fCBkZWZpbmVkKEhBVkVfQk9SSU5HU1NMKSkKKyNpZiBkZWZpbmVkKFVTRV9OVExNKSAmJiAhZGVmaW5lZChVU0VfT1BFTlNTTCkKIAogI2luY2x1ZGUgImN1cmxfZGVzLmgiCiAKQEAgLTYwLDQgKzYwLDQgQEAKICAgfQogfQogCi0jZW5kaWYgLyogVVNFX05UTE0gJiYgKCFVU0VfT1BFTlNTTCB8fCBIQVZFX0JPUklOR1NTTCkgKi8KKyNlbmRpZiAvKiBVU0VfTlRMTSAmJiAhVVNFX09QRU5TU0wgKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2Rlcy5oIGIvbGliL2N1cmxfZGVzLmgKaW5kZXggYjg1NWRiNC4uMTI5MDYwZiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZGVzLmgKKysrIGIvbGliL2N1cmxfZGVzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMSArMjQsMTEgQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAotI2lmIGRlZmluZWQoVVNFX05UTE0pICYmICghZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChIQVZFX0JPUklOR1NTTCkpCisjaWYgZGVmaW5lZChVU0VfTlRMTSkgJiYgIWRlZmluZWQoVVNFX09QRU5TU0wpCiAKIC8qIEFwcGxpZXMgb2RkIHBhcml0eSB0byB0aGUgZ2l2ZW4gYnl0ZSBhcnJheSAqLwogdm9pZCBDdXJsX2Rlc19zZXRfb2RkX3Bhcml0eSh1bnNpZ25lZCBjaGFyICpieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKLSNlbmRpZiAvKiBVU0VfTlRMTSAmJiAoIVVTRV9PUEVOU1NMIHx8IEhBVkVfQk9SSU5HU1NMKSAqLworI2VuZGlmIC8qIFVTRV9OVExNICYmICFVU0VfT1BFTlNTTCAqLwogCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfREVTX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2VuZGlhbi5jIGIvbGliL2N1cmxfZW5kaWFuLmMKaW5kZXggYmNkNjZlZC4uNzZkZWNhNiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZW5kaWFuLmMKKysrIGIvbGliL2N1cmxfZW5kaWFuLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfZW5kaWFuLmggYi9saWIvY3VybF9lbmRpYW4uaAppbmRleCBlMzg0Mjc5Li5kZjgzOThjIDEwMDY0NAotLS0gYS9saWIvY3VybF9lbmRpYW4uaAorKysgYi9saWIvY3VybF9lbmRpYW4uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2ZubWF0Y2guYyBiL2xpYi9jdXJsX2ZubWF0Y2guYwppbmRleCAxZTUzOTE4Li5lODEwOGJiIDEwMDY0NAotLS0gYS9saWIvY3VybF9mbm1hdGNoLmMKKysrIGIvbGliL2N1cmxfZm5tYXRjaC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsNiArMjIsOCBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKICNpbmNsdWRlICJjdXJsX2ZubWF0Y2guaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogCmRpZmYgLS1naXQgYS9saWIvY3VybF9mbm1hdGNoLmggYi9saWIvY3VybF9mbm1hdGNoLmgKaW5kZXggNjMzNWQwMy4uNjlmZmUzOSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZm5tYXRjaC5oCisrKyBiL2xpYi9jdXJsX2ZubWF0Y2guaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2dldGhvc3RuYW1lLmMgYi9saWIvY3VybF9nZXRob3N0bmFtZS5jCmluZGV4IGRlZDFlNmYuLjI1OTFmZDggMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2dldGhvc3RuYW1lLmMKKysrIGIvbGliL2N1cmxfZ2V0aG9zdG5hbWUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9nZXRob3N0bmFtZS5oIGIvbGliL2N1cmxfZ2V0aG9zdG5hbWUuaAppbmRleCA0ODc0MGY2Li4wNzUxN2M1IDEwMDY0NAotLS0gYS9saWIvY3VybF9nZXRob3N0bmFtZS5oCisrKyBiL2xpYi9jdXJsX2dldGhvc3RuYW1lLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9nc3NhcGkuYyBiL2xpYi9jdXJsX2dzc2FwaS5jCmluZGV4IDJjZDE0ZmYuLjZmOTEyMWUgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2dzc2FwaS5jCisrKyBiL2xpYi9jdXJsX2dzc2FwaS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgImN1cmxfZ3NzYXBpLmgiCiAjaW5jbHVkZSAic2VuZGYuaCIKIAotc3RhdGljIGNvbnN0IGNoYXIgc3BuZWdvX29pZF9ieXRlc1tdID0gIlx4MmJceDA2XHgwMVx4MDVceDA1XHgwMiI7CitzdGF0aWMgY2hhciBzcG5lZ29fb2lkX2J5dGVzW10gPSAiXHgyYlx4MDZceDAxXHgwNVx4MDVceDAyIjsKIGdzc19PSURfZGVzYyBDdXJsX3NwbmVnb19tZWNoX29pZCA9IHsgNiwgJnNwbmVnb19vaWRfYnl0ZXMgfTsKLXN0YXRpYyBjb25zdCBjaGFyIGtyYjVfb2lkX2J5dGVzW10gPSAiXHgyYVx4ODZceDQ4XHg4Nlx4ZjdceDEyXHgwMVx4MDJceDAyIjsKK3N0YXRpYyBjaGFyIGtyYjVfb2lkX2J5dGVzW10gPSAiXHgyYVx4ODZceDQ4XHg4Nlx4ZjdceDEyXHgwMVx4MDJceDAyIjsKIGdzc19PSURfZGVzYyBDdXJsX2tyYjVfbWVjaF9vaWQgPSB7IDksICZrcmI1X29pZF9ieXRlcyB9OwogCiBPTV91aW50MzIgQ3VybF9nc3NfaW5pdF9zZWNfY29udGV4dCgKQEAgLTc2LDYgKzc2LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIC8qIHRpbWVfcmVjICovKTsKIH0KIAorI2RlZmluZSBHU1NfTE9HX0JVRkZFUl9MRU4gMTAyNAorc3RhdGljIHNpemVfdCBkaXNwbGF5X2dzc19lcnJvcihPTV91aW50MzIgc3RhdHVzLCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBzaXplX3QgbGVuKSB7CisgIE9NX3VpbnQzMiBtYWpfc3RhdDsKKyAgT01fdWludDMyIG1pbl9zdGF0OworICBPTV91aW50MzIgbXNnX2N0eCA9IDA7CisgIGdzc19idWZmZXJfZGVzYyBzdGF0dXNfc3RyaW5nOworCisgIGRvIHsKKyAgICBtYWpfc3RhdCA9IGdzc19kaXNwbGF5X3N0YXR1cygmbWluX3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTk9fT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc2dfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXNfc3RyaW5nKTsKKyAgICBpZihHU1NfTE9HX0JVRkZFUl9MRU4gPiBsZW4gKyBzdGF0dXNfc3RyaW5nLmxlbmd0aCArIDMpIHsKKyAgICAgIGxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIEdTU19MT0dfQlVGRkVSX0xFTiAtIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAiJS4qcy4gIiwgKGludClzdGF0dXNfc3RyaW5nLmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc3RhdHVzX3N0cmluZy52YWx1ZSk7CisgICAgfQorICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZzdGF0dXNfc3RyaW5nKTsKKyAgfSB3aGlsZSghR1NTX0VSUk9SKG1hal9zdGF0KSAmJiBtc2dfY3R4ICE9IDApOworCisgIHJldHVybiBsZW47Cit9CisKIC8qCiAgKiBDdXJsX2dzc19sb2dfZXJyb3IoKQogICoKQEAgLTg0LDM3ICsxMTAsMjIgQEAKICAqIFBhcmFtZXRlcnM6CiAgKgogICogZGF0YSAgICBbaW5dIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogc3RhdHVzICBbaW5dIC0gVGhlIHN0YXR1cyBjb2RlLgogICogcHJlZml4ICBbaW5dIC0gVGhlIHByZWZpeCBvZiB0aGUgbG9nIG1lc3NhZ2UuCisgKiBtYWpvciAgIFtpbl0gLSBUaGUgbWFqb3Igc3RhdHVzIGNvZGUuCisgKiBtaW5vciAgIFtpbl0gLSBUaGUgbWlub3Igc3RhdHVzIGNvZGUuCiAgKi8KLXZvaWQgQ3VybF9nc3NfbG9nX2Vycm9yKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBPTV91aW50MzIgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJlZml4KQordm9pZCBDdXJsX2dzc19sb2dfZXJyb3Ioc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9NX3VpbnQzMiBtYWpvciwgT01fdWludDMyIG1pbm9yKQogewotICBPTV91aW50MzIgbWFqX3N0YXQ7Ci0gIE9NX3VpbnQzMiBtaW5fc3RhdDsKLSAgT01fdWludDMyIG1zZ19jdHggPSAwOwotICBnc3NfYnVmZmVyX2Rlc2Mgc3RhdHVzX3N0cmluZzsKLSAgY2hhciBidWZbMTAyNF07Ci0gIHNpemVfdCBsZW47CisgIGNoYXIgYnVmW0dTU19MT0dfQlVGRkVSX0xFTl07CisgIHNpemVfdCBsZW4gPSAwOwogCi0gIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyIsIHByZWZpeCk7Ci0gIGxlbiA9IHN0cmxlbihidWYpOwotICBkbyB7Ci0gICAgbWFqX3N0YXQgPSBnc3NfZGlzcGxheV9zdGF0dXMoJm1pbl9zdGF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19NRUNIX0NPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTk9fT0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc2dfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXNfc3RyaW5nKTsKLSAgICBpZihzaXplb2YoYnVmKSA+IGxlbiArIHN0YXR1c19zdHJpbmcubGVuZ3RoICsgMSkgewotICAgICAgc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKLSAgICAgICAgIjogJXMiLCAoY2hhciopc3RhdHVzX3N0cmluZy52YWx1ZSk7Ci0gICAgICBsZW4gKz0gc3RhdHVzX3N0cmluZy5sZW5ndGg7Ci0gICAgfQotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZzdGF0dXNfc3RyaW5nKTsKLSAgfSB3aGlsZSghR1NTX0VSUk9SKG1hal9zdGF0KSAmJiBtc2dfY3R4ICE9IDApOworICBpZihtYWpvciAhPSBHU1NfU19GQUlMVVJFKQorICAgIGxlbiA9IGRpc3BsYXlfZ3NzX2Vycm9yKG1ham9yLCBHU1NfQ19HU1NfQ09ERSwgYnVmLCBsZW4pOwogCi0gIGluZm9mKGRhdGEsICIlc1xuIiwgYnVmKTsKKyAgZGlzcGxheV9nc3NfZXJyb3IobWlub3IsIEdTU19DX01FQ0hfQ09ERSwgYnVmLCBsZW4pOworCisgIGluZm9mKGRhdGEsICIlcyVzXG4iLCBwcmVmaXgsIGJ1Zik7CiB9CiAKICNlbmRpZiAvKiBIQVZFX0dTU0FQSSAqLwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfZ3NzYXBpLmggYi9saWIvY3VybF9nc3NhcGkuaAppbmRleCAxOWFhYjY0Li40MmZkMWU0IDEwMDY0NAotLS0gYS9saWIvY3VybF9nc3NhcGkuaAorKysgYi9saWIvY3VybF9nc3NhcGkuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDggKzU2LDggQEAKICAgICBPTV91aW50MzIgKnJldF9mbGFncyk7CiAKIC8qIEhlbHBlciB0byBsb2cgYSBHU1MtQVBJIGVycm9yIHN0YXR1cyAqLwotdm9pZCBDdXJsX2dzc19sb2dfZXJyb3Ioc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIE9NX3VpbnQzMiBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcmVmaXgpOwordm9pZCBDdXJsX2dzc19sb2dfZXJyb3Ioc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9NX3VpbnQzMiBtYWpvciwgT01fdWludDMyIG1pbm9yKTsKIAogLyogUHJvdmlkZSBzb21lIGRlZmluaXRpb25zIG1pc3NpbmcgaW4gb2xkIGhlYWRlcnMgKi8KICNpZmRlZiBIQVZFX09MRF9HU1NNSVQKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2htYWMuaCBiL2xpYi9jdXJsX2htYWMuaAppbmRleCA5YjY1YzhjLi40MTcwM2I0IDEwMDY0NAotLS0gYS9saWIvY3VybF9obWFjLmgKKysrIGIvbGliL2N1cmxfaG1hYy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbGRhcC5oIGIvbGliL2N1cmxfbGRhcC5oCmluZGV4IDkzZmI0YjAuLjI3ZDAzODEgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2xkYXAuaAorKysgYi9saWIvY3VybF9sZGFwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9tZDQuaCBiL2xpYi9jdXJsX21kNC5oCmluZGV4IDEzYzc5MDMuLjhjMjZkMTIgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX21kNC5oCisrKyBiL2xpYi9jdXJsX21kNC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbWQ1LmggYi9saWIvY3VybF9tZDUuaAppbmRleCA5YzBlMGI1Li41ZjcwYzk2IDEwMDY0NAotLS0gYS9saWIvY3VybF9tZDUuaAorKysgYi9saWIvY3VybF9tZDUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX21lbW9yeS5oIGIvbGliL2N1cmxfbWVtb3J5LmgKaW5kZXggYmM3NDRjYy4uNmY3OTJmZiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbWVtb3J5LmgKKysrIGIvbGliL2N1cmxfbWVtb3J5LmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04Myw3ICs4MywyMCBAQAogCiAjaWZuZGVmIENVUkxYX05PX01FTU9SWV9DQUxMQkFDS1MKIAotI2luY2x1ZGUgPGN1cmwvY3VybC5oPiAvKiBmb3IgdGhlIGNhbGxiYWNrIHR5cGVkZWZzICovCisjaWZuZGVmIENVUkxfRElEX01FTU9SWV9GVU5DX1RZUEVERUZTIC8qIG9ubHkgaWYgbm90IGFscmVhZHkgZG9uZSAqLworLyoKKyAqIFRoZSBmb2xsb3dpbmcgbWVtb3J5IGZ1bmN0aW9uIHJlcGxhY2VtZW50IHR5cGVkZWYncyBhcmUgQ09QSUVEIGZyb20KKyAqIGN1cmwvY3VybC5oIGFuZCBNVVNUIG1hdGNoIHRoZSBvcmlnaW5hbHMuIFdlIGNvcHkgdGhlbSB0byBhdm9pZCBoYXZpbmcgdG8KKyAqIGluY2x1ZGUgY3VybC9jdXJsLmggaGVyZS4gV2UgYXZvaWQgdGhhdCBpbmNsdWRlIHNpbmNlIGl0IGluY2x1ZGVzIHN0ZGlvLmgKKyAqIGFuZCBvdGhlciBoZWFkZXJzIHRoYXQgbWF5IGdldCBtZXNzZWQgdXAgd2l0aCBkZWZpbmVzIGRvbmUgaGVyZS4KKyAqLwordHlwZWRlZiB2b2lkICooKmN1cmxfbWFsbG9jX2NhbGxiYWNrKShzaXplX3Qgc2l6ZSk7Cit0eXBlZGVmIHZvaWQgKCpjdXJsX2ZyZWVfY2FsbGJhY2spKHZvaWQgKnB0cik7Cit0eXBlZGVmIHZvaWQgKigqY3VybF9yZWFsbG9jX2NhbGxiYWNrKSh2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK3R5cGVkZWYgY2hhciAqKCpjdXJsX3N0cmR1cF9jYWxsYmFjaykoY29uc3QgY2hhciAqc3RyKTsKK3R5cGVkZWYgdm9pZCAqKCpjdXJsX2NhbGxvY19jYWxsYmFjaykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CisjZGVmaW5lIENVUkxfRElEX01FTU9SWV9GVU5DX1RZUEVERUZTCisjZW5kaWYKIAogZXh0ZXJuIGN1cmxfbWFsbG9jX2NhbGxiYWNrIEN1cmxfY21hbGxvYzsKIGV4dGVybiBjdXJsX2ZyZWVfY2FsbGJhY2sgQ3VybF9jZnJlZTsKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX21lbXJjaHIuYyBiL2xpYi9jdXJsX21lbXJjaHIuYwppbmRleCA2NzIyYzZhLi5jNTIxNDk3IDEwMDY0NAotLS0gYS9saWIvY3VybF9tZW1yY2hyLmMKKysrIGIvbGliL2N1cmxfbWVtcmNoci5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjEsNiArMjEsOSBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAiY3VybF9tZW1yY2hyLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKIApkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbWVtcmNoci5oIGIvbGliL2N1cmxfbWVtcmNoci5oCmluZGV4IDMyNGM3M2EuLjc0NzUwOWMgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX21lbXJjaHIuaAorKysgYi9saWIvY3VybF9tZW1yY2hyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9tdWx0aWJ5dGUuYyBiL2xpYi9jdXJsX211bHRpYnl0ZS5jCmluZGV4IDQwM2QwMDUuLmU3OGJiNTAgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX211bHRpYnl0ZS5jCisrKyBiL2xpYi9jdXJsX211bHRpYnl0ZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaWYgZGVmaW5lZChVU0VfV0lOMzJfSUROKSB8fCAoKGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKFVTRV9XSU4zMl9MREFQKSkgJiYgZGVmaW5lZChVTklDT0RFKSkKIApkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbXVsdGlieXRlLmggYi9saWIvY3VybF9tdWx0aWJ5dGUuaAppbmRleCBkYzdlZDRjLi42MTVmNWMwIDEwMDY0NAotLS0gYS9saWIvY3VybF9tdWx0aWJ5dGUuaAorKysgYi9saWIvY3VybF9tdWx0aWJ5dGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG1fY29yZS5jIGIvbGliL2N1cmxfbnRsbV9jb3JlLmMKaW5kZXggMmU1YjU3My4uZWE3NTQ4ZCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbnRsbV9jb3JlLmMKKysrIGIvbGliL2N1cmxfbnRsbV9jb3JlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw3IEBACiAgKiBOVExNIGRldGFpbHM6CiAgKgogICogaHR0cDovL2RhdmVucG9ydC5zb3VyY2Vmb3JnZS5uZXQvbnRsbS5odG1sCi0gKiBodHRwOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKKyAqIGh0dHBzOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKICAqLwogCiAjaWYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgZGVmaW5lZChVU0VfV0lOMzJfQ1JZUFRPKQpAQCAtMTA3LDkgKzEwNyw4IEBACiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKICNpbmNsdWRlICJjdXJsX2VuZGlhbi5oIgogI2luY2x1ZGUgImN1cmxfZGVzLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMTQzLDE0ICsxNDIsMTAgQEAKICAgREVTX2NibG9jayBrZXk7CiAKICAgLyogRXhwYW5kIHRoZSA1Ni1iaXQga2V5IHRvIDY0LWJpdHMgKi8KLSAgZXh0ZW5kX2tleV81Nl90b182NChrZXlfNTYsIChjaGFyICopIGtleSk7CisgIGV4dGVuZF9rZXlfNTZfdG9fNjQoa2V5XzU2LCAoY2hhciAqKSAma2V5KTsKIAogICAvKiBTZXQgdGhlIGtleSBwYXJpdHkgdG8gb2RkICovCi0jaWYgZGVmaW5lZChIQVZFX0JPUklOR1NTTCkKLSAgQ3VybF9kZXNfc2V0X29kZF9wYXJpdHkoKHVuc2lnbmVkIGNoYXIgKikgJmtleSwgc2l6ZW9mKGtleSkpOwotI2Vsc2UKICAgREVTX3NldF9vZGRfcGFyaXR5KCZrZXkpOwotI2VuZGlmCiAKICAgLyogU2V0IHRoZSBrZXkgKi8KICAgREVTX3NldF9rZXkoJmtleSwga3MpOwpAQCAtNjY0LDIxICs2NTksMjIgQEAKICAgdW5zaWduZWQgaW50IGxlbiA9IDA7CiAgIHVuc2lnbmVkIGNoYXIgKnB0ciA9IE5VTEw7CiAgIHVuc2lnbmVkIGNoYXIgaG1hY19vdXRwdXRbTlRMTV9ITUFDX01ENV9MRU5dOwotI2lmIGRlZmluZWQoSEFWRV9MT05HTE9ORykKLSAgbG9uZyBsb25nIHR3OwotI2Vsc2UKLSAgX19pbnQ2NCB0dzsKLSNlbmRpZgorICBjdXJsX29mZl90IHR3OworCiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogCisjaWYgQ1VSTF9TSVpFT0ZfQ1VSTF9PRkZfVCA8IDgKKyNlcnJvciAidGhpcyBzZWN0aW9uIG5lZWRzIDY0Yml0IHN1cHBvcnQgdG8gd29yayIKKyNlbmRpZgorCiAgIC8qIENhbGN1bGF0ZSB0aGUgdGltZXN0YW1wICovCiAjaWZkZWYgREVCVUdCVUlMRAogICBjaGFyICpmb3JjZV90aW1lc3RhbXAgPSBnZXRlbnYoIkNVUkxfRk9SQ0VUSU1FIik7CiAgIGlmKGZvcmNlX3RpbWVzdGFtcCkKLSAgICB0dyA9IDExNjQ0NDczNjAwVUxMICogMTAwMDAwMDBVTEw7CisgICAgdHcgPSBDVVJMX09GRl9UX0MoMTE2NDQ0NzM2MDApICogMTAwMDAwMDA7CiAgIGVsc2UKICNlbmRpZgotICB0dyA9ICgobG9uZyBsb25nKXRpbWUoTlVMTCkgKyAxMTY0NDQ3MzYwMFVMTCkgKiAxMDAwMDAwMFVMTDsKKyAgICB0dyA9ICgoY3VybF9vZmZfdCl0aW1lKE5VTEwpICsgQ1VSTF9PRkZfVF9DKDExNjQ0NDczNjAwKSkgKiAxMDAwMDAwMDsKIAogICAvKiBDYWxjdWxhdGUgdGhlIHJlc3BvbnNlIGxlbiAqLwogICBsZW4gPSBOVExNX0hNQUNfTUQ1X0xFTiArIE5UTE12Ml9CTE9CX0xFTjsKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG1fY29yZS5oIGIvbGliL2N1cmxfbnRsbV9jb3JlLmgKaW5kZXggM2E3NjM1OS4uY2YzN2RjOCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbnRsbV9jb3JlLmgKKysrIGIvbGliL2N1cmxfbnRsbV9jb3JlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9udGxtX3diLmMgYi9saWIvY3VybF9udGxtX3diLmMKaW5kZXggZDYzZmIyNy4uYWZkZWExNiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbnRsbV93Yi5jCisrKyBiL2xpYi9jdXJsX250bG1fd2IuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIE5UTE0gZGV0YWlsczoKICAqCiAgKiBodHRwOi8vZGF2ZW5wb3J0LnNvdXJjZWZvcmdlLm5ldC9udGxtLmh0bWwKLSAqIGh0dHA6Ly93d3cuaW5ub3ZhdGlvbi5jaC9qYXZhL250bG0uaHRtbAorICogaHR0cHM6Ly93d3cuaW5ub3ZhdGlvbi5jaC9qYXZhL250bG0uaHRtbAogICovCiAKICNkZWZpbmUgREVCVUdfTUUgMApAQCAtNDcsMTMgKzQ3LDEyIEBACiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCi0jaW5jbHVkZSAiY3VybF9udGxtX21zZ3MuaCIKKyNpbmNsdWRlICJ2YXV0aC9udGxtLmgiCiAjaW5jbHVkZSAiY3VybF9udGxtX3diLmgiCiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAic3RyZXJyb3IuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0zMDYsNyArMzA1LDcgQEAKICAgaWYoc3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUxICYmCiAgICAgIGxlbl9vdXQgPT0gMyAmJgogICAgICBidWZbMF0gPT0gJ1AnICYmIGJ1ZlsxXSA9PSAnVycpCi0gICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOworICAgIGdvdG8gZG9uZTsKICAgLyogaW52YWxpZCByZXNwb25zZSAqLwogICBpZihsZW5fb3V0IDwgNCkKICAgICBnb3RvIGRvbmU7CkBAIC0zNzMsOCArMzcyLDggQEAKICAgICAgKiBieSBkZWxlZ2F0aW5nIHRoZSBOVExNIGNoYWxsZW5nZS9yZXNwb25zZSBwcm90b2NhbCB0byBhIGhlbHBlcgogICAgICAqIGluIG50bG1fYXV0aC4KICAgICAgKiBodHRwOi8vZGV2ZWwuc3F1aWQtY2FjaGUub3JnL250bG0vc3F1aWRfaGVscGVyX3Byb3RvY29sLmh0bWwKLSAgICAgKiBodHRwOi8vd3d3LnNhbWJhLm9yZy9zYW1iYS9kb2NzL21hbi9tYW5wYWdlcy0zL3dpbmJpbmRkLjguaHRtbAotICAgICAqIGh0dHA6Ly93d3cuc2FtYmEub3JnL3NhbWJhL2RvY3MvbWFuL21hbnBhZ2VzLTMvbnRsbV9hdXRoLjEuaHRtbAorICAgICAqIGh0dHBzOi8vd3d3LnNhbWJhLm9yZy9zYW1iYS9kb2NzL21hbi9tYW5wYWdlcy0zL3dpbmJpbmRkLjguaHRtbAorICAgICAqIGh0dHBzOi8vd3d3LnNhbWJhLm9yZy9zYW1iYS9kb2NzL21hbi9tYW5wYWdlcy0zL250bG1fYXV0aC4xLmh0bWwKICAgICAgKiBQcmVwcm9jZXNzb3Igc3ltYm9sICdOVExNX1dCX0VOQUJMRUQnIGlzIGRlZmluZWQgd2hlbiB0aGlzCiAgICAgICogZmVhdHVyZSBpcyBlbmFibGVkIGFuZCAnTlRMTV9XQl9GSUxFJyBzeW1ib2wgaG9sZHMgYWJzb2x1dGUKICAgICAgKiBmaWxlbmFtZSBvZiBudGxtX2F1dGggaGVscGVyLgpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbnRsbV93Yi5oIGIvbGliL2N1cmxfbnRsbV93Yi5oCmluZGV4IDgyOGJiNTcuLmFiYTNkNDYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG1fd2IuaAorKysgYi9saWIvY3VybF9udGxtX3diLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9wcmludGYuaCBiL2xpYi9jdXJsX3ByaW50Zi5oCmluZGV4IDA4NjkyM2YuLjQ5ODU3Y2QgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3ByaW50Zi5oCisrKyBiL2xpYi9jdXJsX3ByaW50Zi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfcnRtcC5jIGIvbGliL2N1cmxfcnRtcC5jCmluZGV4IDI5Mzg5NzIuLjA2ZGQwNDcgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3J0bXAuYworKysgYi9saWIvY3VybF9ydG1wLmMKQEAgLTEwLDcgKzEwLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01NSw3ICs1NSw3IEBACiBzdGF0aWMgQ3VybF9zZW5kIHJ0bXBfc2VuZDsKIAogLyoKLSAqIFJUTVAgcHJvdG9jb2wgaGFuZGxlci5oLCBiYXNlZCBvbiBodHRwOi8vcnRtcGR1bXAubXBsYXllcmhxLmh1CisgKiBSVE1QIHByb3RvY29sIGhhbmRsZXIuaCwgYmFzZWQgb24gaHR0cHM6Ly9ydG1wZHVtcC5tcGxheWVyaHEuaHUKICAqLwogCiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9ydG1wID0gewpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfcnRtcC5oIGIvbGliL2N1cmxfcnRtcC5oCmluZGV4IDRhOWU5ZTYuLjMzMDZlMjIgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3J0bXAuaAorKysgYi9saWIvY3VybF9ydG1wLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9zYXNsLmMgYi9saWIvY3VybF9zYXNsLmMKaW5kZXggNjg2NDZiYy4uOTRiMzllNCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfc2FzbC5jCisrKyBiL2xpYi9jdXJsX3Nhc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDYgKzI0LDcgQEAKICAqIFJGQzQ0MjIgU2ltcGxlIEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cml0eSBMYXllciAoU0FTTCkKICAqIFJGQzQ2MTYgUExBSU4gYXV0aGVudGljYXRpb24KICAqIFJGQzY3NDkgT0F1dGggMi4wIEF1dGhvcml6YXRpb24gRnJhbWV3b3JrCisgKiBSRkM3NjI4IEEgU2V0IG9mIFNBU0wgTWVjaGFuaXNtcyBmb3IgT0F1dGgKICAqIERyYWZ0ICAgTE9HSU4gU0FTTCBNZWNoYW5pc20gPGRyYWZ0LW11cmNoaXNvbi1zYXNsLWxvZ2luLTAwLnR4dD4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMzUsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJjdXJsX21kNS5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAjaW5jbHVkZSAidnRscy92dGxzLmgiCiAjaW5jbHVkZSAiY3VybF9obWFjLmgiCiAjaW5jbHVkZSAiY3VybF9zYXNsLmgiCkBAIC00NCw5ICs0Niw4IEBACiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAic2VuZGYuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIgLyogaW5jbHVkZWQgZm9yIEN1cmxfY29udmVydF8uLi4gcHJvdG90eXBlcyAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTU2LDExNDAgKzU3LDE4IEBACiAgIHNpemVfdCAgICAgICAgbGVuOyAgIC8qIE5hbWUgbGVuZ3RoICovCiAgIHVuc2lnbmVkIGludCAgYml0OyAgIC8qIEZsYWcgYml0ICovCiB9IG1lY2h0YWJsZVtdID0gewotICB7ICJMT0dJTiIsICAgICAgNSwgIFNBU0xfTUVDSF9MT0dJTiB9LAotICB7ICJQTEFJTiIsICAgICAgNSwgIFNBU0xfTUVDSF9QTEFJTiB9LAotICB7ICJDUkFNLU1ENSIsICAgOCwgIFNBU0xfTUVDSF9DUkFNX01ENSB9LAotICB7ICJESUdFU1QtTUQ1IiwgMTAsIFNBU0xfTUVDSF9ESUdFU1RfTUQ1IH0sCi0gIHsgIkdTU0FQSSIsICAgICA2LCAgU0FTTF9NRUNIX0dTU0FQSSB9LAotICB7ICJFWFRFUk5BTCIsICAgOCwgIFNBU0xfTUVDSF9FWFRFUk5BTCB9LAotICB7ICJOVExNIiwgICAgICAgNCwgIFNBU0xfTUVDSF9OVExNIH0sCi0gIHsgIlhPQVVUSDIiLCAgICA3LCAgU0FTTF9NRUNIX1hPQVVUSDIgfSwKLSAgeyBaRVJPX05VTEwsICAgIDAsICAwIH0KKyAgeyAiTE9HSU4iLCAgICAgICAgNSwgIFNBU0xfTUVDSF9MT0dJTiB9LAorICB7ICJQTEFJTiIsICAgICAgICA1LCAgU0FTTF9NRUNIX1BMQUlOIH0sCisgIHsgIkNSQU0tTUQ1IiwgICAgIDgsICBTQVNMX01FQ0hfQ1JBTV9NRDUgfSwKKyAgeyAiRElHRVNULU1ENSIsICAgMTAsIFNBU0xfTUVDSF9ESUdFU1RfTUQ1IH0sCisgIHsgIkdTU0FQSSIsICAgICAgIDYsICBTQVNMX01FQ0hfR1NTQVBJIH0sCisgIHsgIkVYVEVSTkFMIiwgICAgIDgsICBTQVNMX01FQ0hfRVhURVJOQUwgfSwKKyAgeyAiTlRMTSIsICAgICAgICAgNCwgIFNBU0xfTUVDSF9OVExNIH0sCisgIHsgIlhPQVVUSDIiLCAgICAgIDcsICBTQVNMX01FQ0hfWE9BVVRIMiB9LAorICB7ICJPQVVUSEJFQVJFUiIsICAxMSwgU0FTTF9NRUNIX09BVVRIQkVBUkVSIH0sCisgIHsgWkVST19OVUxMLCAgICAgIDAsICAwIH0KIH07CiAKLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpICYmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0jZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfQVVUSCAgICAgICAgICAgICAoMSA8PCAwKQotI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX0FVVEhfSU5UICAgICAgICAgKDEgPDwgMSkKLSNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9BVVRIX0NPTkYgICAgICAgICgxIDw8IDIpCi0KLSNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCAgICAgICJhdXRoIgotI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCAgImF1dGgtaW50IgotI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0NPTkYgImF1dGgtY29uZiIKLQotLyogVGhlIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WIG1hY3JvIGJlbG93IGlzIGZvciBub24tQVNDSUkgbWFjaGluZXMuCi0gICBJdCBjb252ZXJ0cyBkaWdlc3QgdGV4dCB0byBBU0NJSSBzbyB0aGUgTUQ1IHdpbGwgYmUgY29ycmVjdCBmb3IKLSAgIHdoYXQgdWx0aW1hdGVseSBnb2VzIG92ZXIgdGhlIG5ldHdvcmsuCi0qLwotI2RlZmluZSBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihhLCBiKSBcCi0gIHJlc3VsdCA9IEN1cmxfY29udmVydF90b19uZXR3b3JrKGEsIChjaGFyICopYiwgc3RybGVuKChjb25zdCBjaGFyKiliKSk7IFwKLSAgaWYocmVzdWx0KSB7IFwKLSAgICBmcmVlKGIpOyBcCi0gICAgcmV0dXJuIHJlc3VsdDsgXAotICB9Ci0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQotLyoKLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCB0aGVuIHRoZSBidWZmZXJzIGFyZSBmaWxsZWQgaW4gZmluZS4KLSAqCi0gKiBOb24temVybyBtZWFucyBmYWlsdXJlIHRvIHBhcnNlLgotICovCi1pbnQgQ3VybF9zYXNsX2RpZ2VzdF9nZXRfcGFpcihjb25zdCBjaGFyICpzdHIsIGNoYXIgKnZhbHVlLCBjaGFyICpjb250ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZHB0cikKLXsKLSAgaW50IGM7Ci0gIGJvb2wgc3RhcnRzX3dpdGhfcXVvdGUgPSBGQUxTRTsKLSAgYm9vbCBlc2NhcGUgPSBGQUxTRTsKLQotICBmb3IoYyA9IERJR0VTVF9NQVhfVkFMVUVfTEVOR1RIIC0gMTsgKCpzdHIgJiYgKCpzdHIgIT0gJz0nKSAmJiBjLS0pOyApCi0gICAgKnZhbHVlKysgPSAqc3RyKys7Ci0gICp2YWx1ZSA9IDA7Ci0KLSAgaWYoJz0nICE9ICpzdHIrKykKLSAgICAvKiBlZWssIG5vIG1hdGNoICovCi0gICAgcmV0dXJuIDE7Ci0KLSAgaWYoJ1wiJyA9PSAqc3RyKSB7Ci0gICAgLyogdGhpcyBzdGFydHMgd2l0aCBhIHF1b3RlIHNvIGl0IG11c3QgZW5kIHdpdGggb25lIGFzIHdlbGwhICovCi0gICAgc3RyKys7Ci0gICAgc3RhcnRzX3dpdGhfcXVvdGUgPSBUUlVFOwotICB9Ci0KLSAgZm9yKGMgPSBESUdFU1RfTUFYX0NPTlRFTlRfTEVOR1RIIC0gMTsgKnN0ciAmJiBjLS07IHN0cisrKSB7Ci0gICAgc3dpdGNoKCpzdHIpIHsKLSAgICBjYXNlICdcXCc6Ci0gICAgICBpZighZXNjYXBlKSB7Ci0gICAgICAgIC8qIHBvc3NpYmx5IHRoZSBzdGFydCBvZiBhbiBlc2NhcGVkIHF1b3RlICovCi0gICAgICAgIGVzY2FwZSA9IFRSVUU7Ci0gICAgICAgICpjb250ZW50KysgPSAnXFwnOyAvKiBldmVuIHRob3VnaCB0aGlzIGlzIGFuIGVzY2FwZSBjaGFyYWN0ZXIsIHdlIHN0aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZSBpdCBhcy1pcyBpbiB0aGUgdGFyZ2V0IGJ1ZmZlciAqLwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJywnOgotICAgICAgaWYoIXN0YXJ0c193aXRoX3F1b3RlKSB7Ci0gICAgICAgIC8qIHRoaXMgc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGlmIHdlIGRpZG4ndCBnZXQgYSBzdGFydGluZwotICAgICAgICAgICBxdW90ZSBhbmQgdGhlbiB3ZSBkbyAic2xvcHB5IiBwYXJzaW5nICovCi0gICAgICAgIGMgPSAwOyAvKiB0aGUgZW5kICovCi0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnXHInOgotICAgIGNhc2UgJ1xuJzoKLSAgICAgIC8qIGVuZCBvZiBzdHJpbmcgKi8KLSAgICAgIGMgPSAwOwotICAgICAgY29udGludWU7Ci0gICAgY2FzZSAnXCInOgotICAgICAgaWYoIWVzY2FwZSAmJiBzdGFydHNfd2l0aF9xdW90ZSkgewotICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nICovCi0gICAgICAgIGMgPSAwOwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBlc2NhcGUgPSBGQUxTRTsKLSAgICAqY29udGVudCsrID0gKnN0cjsKLSAgfQotICAqY29udGVudCA9IDA7Ci0KLSAgKmVuZHB0ciA9IHN0cjsKLQotICByZXR1cm4gMDsgLyogYWxsIGlzIGZpbmUhICovCi19Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkgJiYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLS8qIENvbnZlcnQgbWQ1IGNodW5rIHRvIFJGQzI2MTcgKHNlY3Rpb24gMy4xLjMpIC1zdWl0YWJsZSBhc2NpaSBzdHJpbmcqLwotc3RhdGljIHZvaWQgc2FzbF9kaWdlc3RfbWQ1X3RvX2FzY2lpKHVuc2lnbmVkIGNoYXIgKnNvdXJjZSwgLyogMTYgYnl0ZXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXN0KSAvKiAzMyBieXRlcyAqLwotewotICBpbnQgaTsKLSAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykKLSAgICBzbnByaW50ZigoY2hhciAqKSZkZXN0W2kqMl0sIDMsICIlMDJ4Iiwgc291cmNlW2ldKTsKLX0KLQotLyogUGVyZm9ybSBxdW90ZWQtc3RyaW5nIGVzY2FwaW5nIGFzIGRlc2NyaWJlZCBpbiBSRkMyNjE2IGFuZCBpdHMgZXJyYXRhICovCi1zdGF0aWMgY2hhciAqc2FzbF9kaWdlc3Rfc3RyaW5nX3F1b3RlZChjb25zdCBjaGFyICpzb3VyY2UpCi17Ci0gIGNoYXIgKmRlc3QsICpkOwotICBjb25zdCBjaGFyICpzID0gc291cmNlOwotICBzaXplX3QgbiA9IDE7IC8qIG51bGwgdGVybWluYXRvciAqLwotCi0gIC8qIENhbGN1bGF0ZSBzaXplIG5lZWRlZCAqLwotICB3aGlsZSgqcykgewotICAgICsrbjsKLSAgICBpZigqcyA9PSAnIicgfHwgKnMgPT0gJ1xcJykgewotICAgICAgKytuOwotICAgIH0KLSAgICArK3M7Ci0gIH0KLQotICBkZXN0ID0gbWFsbG9jKG4pOwotICBpZihkZXN0KSB7Ci0gICAgcyA9IHNvdXJjZTsKLSAgICBkID0gZGVzdDsKLSAgICB3aGlsZSgqcykgewotICAgICAgaWYoKnMgPT0gJyInIHx8ICpzID09ICdcXCcpIHsKLSAgICAgICAgKmQrKyA9ICdcXCc7Ci0gICAgICB9Ci0gICAgICAqZCsrID0gKnMrKzsKLSAgICB9Ci0gICAgKmQgPSAwOwotICB9Ci0KLSAgcmV0dXJuIGRlc3Q7Ci19Ci0KLS8qIFJldHJpZXZlcyB0aGUgdmFsdWUgZm9yIGEgY29ycmVzcG9uZGluZyBrZXkgZnJvbSB0aGUgY2hhbGxlbmdlIHN0cmluZwotICogcmV0dXJucyBUUlVFIGlmIHRoZSBrZXkgY291bGQgYmUgZm91bmQsIEZBTFNFIGlmIGl0IGRvZXMgbm90IGV4aXN0cwotICovCi1zdGF0aWMgYm9vbCBzYXNsX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfdmFsX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBlbmRfY2hhcikKLXsKLSAgY2hhciAqZmluZF9wb3M7Ci0gIHNpemVfdCBpOwotCi0gIGZpbmRfcG9zID0gc3Ryc3RyKGNobGcsIGtleSk7Ci0gIGlmKCFmaW5kX3BvcykKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgZmluZF9wb3MgKz0gc3RybGVuKGtleSk7Ci0KLSAgZm9yKGkgPSAwOyAqZmluZF9wb3MgJiYgKmZpbmRfcG9zICE9IGVuZF9jaGFyICYmIGkgPCBtYXhfdmFsX2xlbiAtIDE7ICsraSkKLSAgICB2YWx1ZVtpXSA9ICpmaW5kX3BvcysrOwotICB2YWx1ZVtpXSA9ICdcMCc7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2RpZ2VzdF9nZXRfcW9wX3ZhbHVlcyhjb25zdCBjaGFyICpvcHRpb25zLCBpbnQgKnZhbHVlKQotewotICBjaGFyICp0bXA7Ci0gIGNoYXIgKnRva2VuOwotICBjaGFyICp0b2tfYnVmOwotCi0gIC8qIEluaXRpYWxpc2UgdGhlIG91dHB1dCAqLwotICAqdmFsdWUgPSAwOwotCi0gIC8qIFRva2VuaXNlIHRoZSBsaXN0IG9mIHFvcCB2YWx1ZXMuIFVzZSBhIHRlbXBvcmFyeSBjbG9uZSBvZiB0aGUgYnVmZmVyIHNpbmNlCi0gICAgIHN0cnRva19yKCkgcnVpbnMgaXQuICovCi0gIHRtcCA9IHN0cmR1cChvcHRpb25zKTsKLSAgaWYoIXRtcCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICB0b2tlbiA9IHN0cnRva19yKHRtcCwgIiwiLCAmdG9rX2J1Zik7Ci0gIHdoaWxlKHRva2VuICE9IE5VTEwpIHsKLSAgICBpZihDdXJsX3Jhd19lcXVhbCh0b2tlbiwgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCkpCi0gICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIOwotICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEhfSU5UKSkKLSAgICAgICp2YWx1ZSB8PSBESUdFU1RfUU9QX1ZBTFVFX0FVVEhfSU5UOwotICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEhfQ09ORikpCi0gICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIX0NPTkY7Ci0KLSAgICB0b2tlbiA9IHN0cnRva19yKE5VTEwsICIsIiwgJnRva19idWYpOwotICB9Ci0KLSAgZnJlZSh0bXApOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLSNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICYmICFVU0VfV0lORE9XU19TU1BJICovCi0KLSNpZiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotLyoKLSAqIEN1cmxfc2FzbF9idWlsZF9zcG4oKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBidWlsZCBhIFNQTiBzdHJpbmcgaW4gdGhlIGZvcm1hdCBzZXJ2aWNlL2hvc3QuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBzZXJ2aWNlICBbaW5dIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIHd3dywgc210cCwgcG9wIG9yIGltYXAuCi0gKiBob3N0ICAgICBbaW5dIC0gVGhlIGhvc3QgbmFtZSBvciByZWFsbS4KLSAqCi0gKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIFNQTi4KLSAqLwotY2hhciAqQ3VybF9zYXNsX2J1aWxkX3Nwbihjb25zdCBjaGFyICpzZXJ2aWNlLCBjb25zdCBjaGFyICpob3N0KQotewotICAvKiBHZW5lcmF0ZSBhbmQgcmV0dXJuIG91ciBTUE4gKi8KLSAgcmV0dXJuIGFwcmludGYoIiVzLyVzIiwgc2VydmljZSwgaG9zdCk7Ci19Ci0jZW5kaWYKLQotLyoKLSAqIHNhc2xfY3JlYXRlX3BsYWluX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgUExBSU4gbWVzc2FnZSByZWFkeQotICogZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIENVUkxjb2RlIHJlc3VsdDsKLSAgY2hhciAqcGxhaW5hdXRoOwotICBzaXplX3QgdWxlbjsKLSAgc2l6ZV90IHBsZW47Ci0KLSAgdWxlbiA9IHN0cmxlbih1c2VycCk7Ci0gIHBsZW4gPSBzdHJsZW4ocGFzc3dkcCk7Ci0KLSAgcGxhaW5hdXRoID0gbWFsbG9jKDIgKiB1bGVuICsgcGxlbiArIDIpOwotICBpZighcGxhaW5hdXRoKSB7Ci0gICAgKm91dGxlbiA9IDA7Ci0gICAgKm91dHB0ciA9IE5VTEw7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBDYWxjdWxhdGUgdGhlIHJlcGx5ICovCi0gIG1lbWNweShwbGFpbmF1dGgsIHVzZXJwLCB1bGVuKTsKLSAgcGxhaW5hdXRoW3VsZW5dID0gJ1wwJzsKLSAgbWVtY3B5KHBsYWluYXV0aCArIHVsZW4gKyAxLCB1c2VycCwgdWxlbik7Ci0gIHBsYWluYXV0aFsyICogdWxlbiArIDFdID0gJ1wwJzsKLSAgbWVtY3B5KHBsYWluYXV0aCArIDIgKiB1bGVuICsgMiwgcGFzc3dkcCwgcGxlbik7Ci0KLSAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVwbHkgKi8KLSAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIHBsYWluYXV0aCwgMiAqIHVsZW4gKyBwbGVuICsgMiwgb3V0cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGVuKTsKLSAgZnJlZShwbGFpbmF1dGgpOwotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKgotICogc2FzbF9jcmVhdGVfbG9naW5fbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBMT0dJTiBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlCi0gKiB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB2YWx1ZXAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBvciB1c2VyJ3MgcGFzc3dvcmQuCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotc3RhdGljIENVUkxjb2RlIHNhc2xfY3JlYXRlX2xvZ2luX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZXAsIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKLXsKLSAgc2l6ZV90IHZsZW4gPSBzdHJsZW4odmFsdWVwKTsKLQotICBpZighdmxlbikgewotICAgIC8qIENhbGN1bGF0ZSBhbiBlbXB0eSByZXBseSAqLwotICAgICpvdXRwdHIgPSBzdHJkdXAoIj0iKTsKLSAgICBpZigqb3V0cHRyKSB7Ci0gICAgICAqb3V0bGVuID0gKHNpemVfdCkgMTsKLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICB9Ci0KLSAgICAqb3V0bGVuID0gMDsKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHZhbHVlICovCi0gIHJldHVybiBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgdmFsdWVwLCB2bGVuLCBvdXRwdHIsIG91dGxlbik7Ci19Ci0KLS8qCi0gKiBzYXNsX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIEVYVEVSTkFMIG1lc3NhZ2UgY29udGFpbmluZwotICogdGhlIHVzZXIgbmFtZSByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIHVzZXIgICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwgY2hhciAqKm91dHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQotewotICAvKiBUaGlzIGlzIHRoZSBzYW1lIGZvcm1hdHRpbmcgYXMgdGhlIGxvZ2luIG1lc3NhZ2UuICovCi0gIHJldHVybiBzYXNsX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIHVzZXIsIG91dHB0ciwgb3V0bGVuKTsKLX0KLQotI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKLSAvKgotICogc2FzbF9kZWNvZGVfY3JhbV9tZDVfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgQ1JBTS1NRDUgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBjaGxnNjQgIFtpbl0gICAgIC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2RlY29kZV9jcmFtX21kNV9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGc2NCwgY2hhciAqKm91dHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc2l6ZV90IGNobGc2NGxlbiA9IHN0cmxlbihjaGxnNjQpOwotCi0gICpvdXRwdHIgPSBOVUxMOwotICAqb3V0bGVuID0gMDsKLQotICAvKiBEZWNvZGUgdGhlIGNoYWxsZW5nZSBpZiBuZWNlc3NhcnkgKi8KLSAgaWYoY2hsZzY0bGVuICYmICpjaGxnNjQgIT0gJz0nKQotICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICh1bnNpZ25lZCBjaGFyICoqKSBvdXRwdHIsIG91dGxlbik7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotIH0KLQotIC8qCi0gKiBzYXNsX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIENSQU0tTUQ1IHJlc3BvbnNlIG1lc3NhZ2UgcmVhZHkKLSAqIGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogY2hsZyAgICBbaW5dICAgICAtIFRoZSBjaGFsbGVuZ2UuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc2l6ZV90IGNobGdsZW4gPSAwOwotICBITUFDX2NvbnRleHQgKmN0eHQ7Ci0gIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RfTEVOXTsKLSAgY2hhciAqcmVzcG9uc2U7Ci0KLSAgaWYoY2hsZykKLSAgICBjaGxnbGVuID0gc3RybGVuKGNobGcpOwotCi0gIC8qIENvbXB1dGUgdGhlIGRpZ2VzdCB1c2luZyB0aGUgcGFzc3dvcmQgYXMgdGhlIGtleSAqLwotICBjdHh0ID0gQ3VybF9ITUFDX2luaXQoQ3VybF9ITUFDX01ENSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHBhc3N3ZHApKSk7Ci0gIGlmKCFjdHh0KQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIFVwZGF0ZSB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIGNoYWxsZW5nZSAqLwotICBpZihjaGxnbGVuID4gMCkKLSAgICBDdXJsX0hNQUNfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNobGcsCi0gICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoY2hsZ2xlbikpOwotCi0gIC8qIEZpbmFsaXNlIHRoZSBkaWdlc3QgKi8KLSAgQ3VybF9ITUFDX2ZpbmFsKGN0eHQsIGRpZ2VzdCk7Ci0KLSAgLyogR2VuZXJhdGUgdGhlIHJlc3BvbnNlICovCi0gIHJlc3BvbnNlID0gYXByaW50ZigKLSAgICAgICIlcyAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKLSAgICAgICAgICAgdXNlcnAsIGRpZ2VzdFswXSwgZGlnZXN0WzFdLCBkaWdlc3RbMl0sIGRpZ2VzdFszXSwgZGlnZXN0WzRdLAotICAgICAgICAgICBkaWdlc3RbNV0sIGRpZ2VzdFs2XSwgZGlnZXN0WzddLCBkaWdlc3RbOF0sIGRpZ2VzdFs5XSwgZGlnZXN0WzEwXSwKLSAgICAgICAgICAgZGlnZXN0WzExXSwgZGlnZXN0WzEyXSwgZGlnZXN0WzEzXSwgZGlnZXN0WzE0XSwgZGlnZXN0WzE1XSk7Ci0gIGlmKCFyZXNwb25zZSkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgcmVzcG9uc2UsIDAsIG91dHB0ciwgb3V0bGVuKTsKLQotICBmcmVlKHJlc3BvbnNlKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZuZGVmIFVTRV9XSU5ET1dTX1NTUEkKLS8qCi0gKiBzYXNsX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSBjaGFsbGVuZ2UKLSAqIG1lc3NhZ2UgaW50byB0aGUgc2VwZXJhdGUgYXR0cmlidXRlcy4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiBub25jZSAgIFtpbi9vdXRdIC0gVGhlIGJ1ZmZlciB3aGVyZSB0aGUgbm9uY2Ugd2lsbCBiZSBzdG9yZWQuCi0gKiBubGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgbm9uY2UgYnVmZmVyLgotICogcmVhbG0gICBbaW4vb3V0XSAtIFRoZSBidWZmZXIgd2hlcmUgdGhlIHJlYWxtIHdpbGwgYmUgc3RvcmVkLgotICogcmxlbiAgICBbaW5dICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIHJlYWxtIGJ1ZmZlci4KLSAqIGFsZyAgICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSBhbGdvcml0aG0gd2lsbCBiZSBzdG9yZWQuCi0gKiBhbGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgYWxnb3JpdGhtIGJ1ZmZlci4KLSAqIHFvcCAgICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSBxb3Atb3B0aW9ucyB3aWxsIGJlIHN0b3JlZC4KLSAqIHFsZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBxb3AgYnVmZmVyLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotc3RhdGljIENVUkxjb2RlIHNhc2xfZGVjb2RlX2RpZ2VzdF9tZDVfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5vbmNlLCBzaXplX3QgbmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVhbG0sIHNpemVfdCBybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphbGcsIHNpemVfdCBhbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpxb3AsIHNpemVfdCBxbGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7Ci0gIHNpemVfdCBjaGxnbGVuID0gMDsKLSAgc2l6ZV90IGNobGc2NGxlbiA9IHN0cmxlbihjaGxnNjQpOwotCi0gIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gIGlmKGNobGc2NGxlbiAmJiAqY2hsZzY0ICE9ICc9JykgewotICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgaWYoIWNobGcpCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIC8qIFJldHJpZXZlIG5vbmNlIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KLSAgaWYoIXNhc2xfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKiljaGxnLCAibm9uY2U9XCIiLCBub25jZSwgbmxlbiwgJ1wiJykpIHsKLSAgICBmcmVlKGNobGcpOwotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIC8qIFJldHJpZXZlIHJlYWxtIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KLSAgaWYoIXNhc2xfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKiljaGxnLCAicmVhbG09XCIiLCByZWFsbSwgcmxlbiwgJ1wiJykpIHsKLSAgICAvKiBDaGFsbGVuZ2UgZG9lcyBub3QgaGF2ZSBhIHJlYWxtLCBzZXQgZW1wdHkgc3RyaW5nIFtSRkMyODMxXSBwYWdlIDYgKi8KLSAgICBzdHJjcHkocmVhbG0sICIiKTsKLSAgfQotCi0gIC8qIFJldHJpZXZlIGFsZ29yaXRobSBzdHJpbmcgZnJvbSB0aGUgY2hhbGxlbmdlICovCi0gIGlmKCFzYXNsX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKChjaGFyICopY2hsZywgImFsZ29yaXRobT0iLCBhbGcsIGFsZW4sICcsJykpIHsKLSAgICBmcmVlKGNobGcpOwotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIC8qIFJldHJpZXZlIHFvcC1vcHRpb25zIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KLSAgaWYoIXNhc2xfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKiljaGxnLCAicW9wPVwiIiwgcW9wLCBxbGVuLCAnXCInKSkgewotICAgIGZyZWUoY2hsZyk7Ci0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgZnJlZShjaGxnKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBESUdFU1QtTUQ1IHJlc3BvbnNlIG1lc3NhZ2UKLSAqIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgotICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCi0gKiBzZXJ2aWNlIFtpbl0gICAgIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIHd3dywgc210cCwgcG9wIG9yIGltYXAuCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzaXplX3QgaTsKLSAgTUQ1X2NvbnRleHQgKmN0eHQ7Ci0gIGNoYXIgKnJlc3BvbnNlID0gTlVMTDsKLSAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVF9MRU5dOwotICBjaGFyIEhBMV9oZXhbMiAqIE1ENV9ESUdFU1RfTEVOICsgMV07Ci0gIGNoYXIgSEEyX2hleFsyICogTUQ1X0RJR0VTVF9MRU4gKyAxXTsKLSAgY2hhciByZXNwX2hhc2hfaGV4WzIgKiBNRDVfRElHRVNUX0xFTiArIDFdOwotICBjaGFyIG5vbmNlWzY0XTsKLSAgY2hhciByZWFsbVsxMjhdOwotICBjaGFyIGFsZ29yaXRobVs2NF07Ci0gIGNoYXIgcW9wX29wdGlvbnNbNjRdOwotICBpbnQgcW9wX3ZhbHVlczsKLSAgY2hhciBjbm9uY2VbMzNdOwotICB1bnNpZ25lZCBpbnQgZW50cm9weVs0XTsKLSAgY2hhciBub25jZUNvdW50W10gPSAiMDAwMDAwMDEiOwotICBjaGFyIG1ldGhvZFtdICAgICA9ICJBVVRIRU5USUNBVEUiOwotICBjaGFyIHFvcFtdICAgICAgICA9IERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEg7Ci0gIGNoYXIgKnNwbiAgICAgICAgID0gTlVMTDsKLQotICAvKiBEZWNvZGUgdGhlIGNoYWxsYW5nZSBtZXNzYWdlICovCi0gIHJlc3VsdCA9IHNhc2xfZGVjb2RlX2RpZ2VzdF9tZDVfbWVzc2FnZShjaGxnNjQsIG5vbmNlLCBzaXplb2Yobm9uY2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIHNpemVvZihyZWFsbSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG0sIHNpemVvZihhbGdvcml0aG0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcW9wX29wdGlvbnMsIHNpemVvZihxb3Bfb3B0aW9ucykpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKLQotICAvKiBXZSBvbmx5IHN1cHBvcnQgbWQ1IHNlc3Npb25zICovCi0gIGlmKHN0cmNtcChhbGdvcml0aG0sICJtZDUtc2VzcyIpICE9IDApCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIC8qIEdldCB0aGUgcW9wLXZhbHVlcyBmcm9tIHRoZSBxb3Atb3B0aW9ucyAqLwotICByZXN1bHQgPSBzYXNsX2RpZ2VzdF9nZXRfcW9wX3ZhbHVlcyhxb3Bfb3B0aW9ucywgJnFvcF92YWx1ZXMpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKLQotICAvKiBXZSBvbmx5IHN1cHBvcnQgYXV0aCBxdWFsaXR5LW9mLXByb3RlY3Rpb24gKi8KLSAgaWYoIShxb3BfdmFsdWVzICYgRElHRVNUX1FPUF9WQUxVRV9BVVRIKSkKLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0KLSAgLyogR2VuZXJhdGUgMTYgYnl0ZXMgb2YgcmFuZG9tIGRhdGEgKi8KLSAgZW50cm9weVswXSA9IEN1cmxfcmFuZChkYXRhKTsKLSAgZW50cm9weVsxXSA9IEN1cmxfcmFuZChkYXRhKTsKLSAgZW50cm9weVsyXSA9IEN1cmxfcmFuZChkYXRhKTsKLSAgZW50cm9weVszXSA9IEN1cmxfcmFuZChkYXRhKTsKLQotICAvKiBDb252ZXJ0IHRoZSByYW5kb20gZGF0YSBpbnRvIGEgMzIgYnl0ZSBoZXggc3RyaW5nICovCi0gIHNucHJpbnRmKGNub25jZSwgc2l6ZW9mKGNub25jZSksICIlMDh4JTA4eCUwOHglMDh4IiwKLSAgICAgICAgICAgZW50cm9weVswXSwgZW50cm9weVsxXSwgZW50cm9weVsyXSwgZW50cm9weVszXSk7Ci0KLSAgLyogU28gZmFyIHNvIGdvb2QsIG5vdyBjYWxjdWxhdGUgQTEgYW5kIEgoQTEpIGFjY29yZGluZyB0byBSRkMgMjgzMSAqLwotICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOwotICBpZighY3R4dCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgdXNlcnAsCi0gICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHVzZXJwKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJlYWxtLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihyZWFsbSkpKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihwYXNzd2RwKSkpOwotICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOwotCi0gIGN0eHQgPSBDdXJsX01ENV9pbml0KEN1cmxfRElHRVNUX01ENSk7Ci0gIGlmKCFjdHh0KQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBkaWdlc3QsIE1ENV9ESUdFU1RfTEVOKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBub25jZSwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obm9uY2UpKSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgY25vbmNlLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihjbm9uY2UpKSk7Ci0gIEN1cmxfTUQ1X2ZpbmFsKGN0eHQsIGRpZ2VzdCk7Ci0KLSAgLyogQ29udmVydCBjYWxjdWxhdGVkIDE2IG9jdGV0IGhleCBpbnRvIDMyIGJ5dGVzIHN0cmluZyAqLwotICBmb3IoaSA9IDA7IGkgPCBNRDVfRElHRVNUX0xFTjsgaSsrKQotICAgIHNucHJpbnRmKCZIQTFfaGV4WzIgKiBpXSwgMywgIiUwMngiLCBkaWdlc3RbaV0pOwotCi0gIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KLSAgc3BuID0gQ3VybF9zYXNsX2J1aWxkX3NwbihzZXJ2aWNlLCByZWFsbSk7Ci0gIGlmKCFzcG4pCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgLyogQ2FsY3VsYXRlIEgoQTIpICovCi0gIGN0eHQgPSBDdXJsX01ENV9pbml0KEN1cmxfRElHRVNUX01ENSk7Ci0gIGlmKCFjdHh0KSB7Ci0gICAgZnJlZShzcG4pOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWV0aG9kLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihtZXRob2QpKSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc3BuLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzcG4pKSk7Ci0gIEN1cmxfTUQ1X2ZpbmFsKGN0eHQsIGRpZ2VzdCk7Ci0KLSAgZm9yKGkgPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU47IGkrKykKLSAgICBzbnByaW50ZigmSEEyX2hleFsyICogaV0sIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKLQotICAvKiBOb3cgY2FsY3VsYXRlIHRoZSByZXNwb25zZSBoYXNoICovCi0gIGN0eHQgPSBDdXJsX01ENV9pbml0KEN1cmxfRElHRVNUX01ENSk7Ci0gIGlmKCFjdHh0KSB7Ci0gICAgZnJlZShzcG4pOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgSEExX2hleCwgMiAqIE1ENV9ESUdFU1RfTEVOKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBub25jZSwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obm9uY2UpKSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotCi0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBub25jZUNvdW50LAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihub25jZUNvdW50KSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNub25jZSwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oY25vbmNlKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHFvcCwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4ocW9wKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgSEEyX2hleCwgMiAqIE1ENV9ESUdFU1RfTEVOKTsKLSAgQ3VybF9NRDVfZmluYWwoY3R4dCwgZGlnZXN0KTsKLQotICBmb3IoaSA9IDA7IGkgPCBNRDVfRElHRVNUX0xFTjsgaSsrKQotICAgIHNucHJpbnRmKCZyZXNwX2hhc2hfaGV4WzIgKiBpXSwgMywgIiUwMngiLCBkaWdlc3RbaV0pOwotCi0gIC8qIEdlbmVyYXRlIHRoZSByZXNwb25zZSAqLwotICByZXNwb25zZSA9IGFwcmludGYoInVzZXJuYW1lPVwiJXNcIixyZWFsbT1cIiVzXCIsbm9uY2U9XCIlc1wiLCIKLSAgICAgICAgICAgICAgICAgICAgICJjbm9uY2U9XCIlc1wiLG5jPVwiJXNcIixkaWdlc3QtdXJpPVwiJXNcIixyZXNwb25zZT0lcywiCi0gICAgICAgICAgICAgICAgICAgICAicW9wPSVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHVzZXJwLCByZWFsbSwgbm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICBjbm9uY2UsIG5vbmNlQ291bnQsIHNwbiwgcmVzcF9oYXNoX2hleCwgcW9wKTsKLSAgZnJlZShzcG4pOwotICBpZighcmVzcG9uc2UpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KLSAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIHJlc3BvbnNlLCAwLCBvdXRwdHIsIG91dGxlbik7Ci0KLSAgZnJlZShyZXNwb25zZSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIEhUVFAgRElHRVNUIGNoYWxsZW5nZSBtZXNzYWdlIGludG8gdGhlIHNlcGVyYXRlCi0gKiBhdHRyaWJ1dGVzLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogY2hsZyAgICBbaW5dICAgICAtIFRoZSBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKLXsKLSAgYm9vbCBiZWZvcmUgPSBGQUxTRTsgLyogZ290IGEgbm9uY2UgYmVmb3JlICovCi0gIGJvb2wgZm91bmRBdXRoID0gRkFMU0U7Ci0gIGJvb2wgZm91bmRBdXRoSW50ID0gRkFMU0U7Ci0gIGNoYXIgKnRva2VuID0gTlVMTDsKLSAgY2hhciAqdG1wID0gTlVMTDsKLQotICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgcmVjZWl2ZWQgYSBub25jZSwga2VlcCB0aGF0IGluIG1pbmQgKi8KLSAgaWYoZGlnZXN0LT5ub25jZSkKLSAgICBiZWZvcmUgPSBUUlVFOwotCi0gIC8qIENsZWFuIHVwIGFueSBmb3JtZXIgbGVmdG92ZXJzIGFuZCBpbml0aWFsaXNlIHRvIGRlZmF1bHRzICovCi0gIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cChkaWdlc3QpOwotCi0gIGZvcig7OykgewotICAgIGNoYXIgdmFsdWVbRElHRVNUX01BWF9WQUxVRV9MRU5HVEhdOwotICAgIGNoYXIgY29udGVudFtESUdFU1RfTUFYX0NPTlRFTlRfTEVOR1RIXTsKLQotICAgIC8qIFBhc3MgYWxsIGFkZGl0aW9uYWwgc3BhY2VzIGhlcmUgKi8KLSAgICB3aGlsZSgqY2hsZyAmJiBJU1NQQUNFKCpjaGxnKSkKLSAgICAgIGNobGcrKzsKLQotICAgIC8qIEV4dHJhY3QgYSB2YWx1ZT1jb250ZW50IHBhaXIgKi8KLSAgICBpZighQ3VybF9zYXNsX2RpZ2VzdF9nZXRfcGFpcihjaGxnLCB2YWx1ZSwgY29udGVudCwgJmNobGcpKSB7Ci0gICAgICBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgIm5vbmNlIikpIHsKLSAgICAgICAgZGlnZXN0LT5ub25jZSA9IHN0cmR1cChjb250ZW50KTsKLSAgICAgICAgaWYoIWRpZ2VzdC0+bm9uY2UpCi0gICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAic3RhbGUiKSkgewotICAgICAgICBpZihDdXJsX3Jhd19lcXVhbChjb250ZW50LCAidHJ1ZSIpKSB7Ci0gICAgICAgICAgZGlnZXN0LT5zdGFsZSA9IFRSVUU7Ci0gICAgICAgICAgZGlnZXN0LT5uYyA9IDE7IC8qIHdlIG1ha2UgYSBuZXcgbm9uY2Ugbm93ICovCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJyZWFsbSIpKSB7Ci0gICAgICAgIGRpZ2VzdC0+cmVhbG0gPSBzdHJkdXAoY29udGVudCk7Ci0gICAgICAgIGlmKCFkaWdlc3QtPnJlYWxtKQotICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgfQotICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgIm9wYXF1ZSIpKSB7Ci0gICAgICAgIGRpZ2VzdC0+b3BhcXVlID0gc3RyZHVwKGNvbnRlbnQpOwotICAgICAgICBpZighZGlnZXN0LT5vcGFxdWUpCi0gICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAicW9wIikpIHsKLSAgICAgICAgY2hhciAqdG9rX2J1ZjsKLSAgICAgICAgLyogVG9rZW5pemUgdGhlIGxpc3QgYW5kIGNob29zZSBhdXRoIGlmIHBvc3NpYmxlLCB1c2UgYSB0ZW1wb3JhcnkKLSAgICAgICAgICAgIGNsb25lIG9mIHRoZSBidWZmZXIgc2luY2Ugc3RydG9rX3IoKSBydWlucyBpdCAqLwotICAgICAgICB0bXAgPSBzdHJkdXAoY29udGVudCk7Ci0gICAgICAgIGlmKCF0bXApCi0gICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICAgICAgdG9rZW4gPSBzdHJ0b2tfcih0bXAsICIsIiwgJnRva19idWYpOwotICAgICAgICB3aGlsZSh0b2tlbiAhPSBOVUxMKSB7Ci0gICAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpKSB7Ci0gICAgICAgICAgICBmb3VuZEF1dGggPSBUUlVFOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCkpIHsKLSAgICAgICAgICAgIGZvdW5kQXV0aEludCA9IFRSVUU7Ci0gICAgICAgICAgfQotICAgICAgICAgIHRva2VuID0gc3RydG9rX3IoTlVMTCwgIiwiLCAmdG9rX2J1Zik7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmVlKHRtcCk7Ci0KLSAgICAgICAgLyogU2VsZWN0IG9ubHkgYXV0aCBvciBhdXRoLWludC4gT3RoZXJ3aXNlLCBpZ25vcmUgKi8KLSAgICAgICAgaWYoZm91bmRBdXRoKSB7Ci0gICAgICAgICAgZGlnZXN0LT5xb3AgPSBzdHJkdXAoRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCk7Ci0gICAgICAgICAgaWYoIWRpZ2VzdC0+cW9wKQotICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihmb3VuZEF1dGhJbnQpIHsKLSAgICAgICAgICBkaWdlc3QtPnFvcCA9IHN0cmR1cChESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCk7Ci0gICAgICAgICAgaWYoIWRpZ2VzdC0+cW9wKQotICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJhbGdvcml0aG0iKSkgewotICAgICAgICBkaWdlc3QtPmFsZ29yaXRobSA9IHN0cmR1cChjb250ZW50KTsKLSAgICAgICAgaWYoIWRpZ2VzdC0+YWxnb3JpdGhtKQotICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgICAgIGlmKEN1cmxfcmF3X2VxdWFsKGNvbnRlbnQsICJNRDUtc2VzcyIpKQotICAgICAgICAgIGRpZ2VzdC0+YWxnbyA9IENVUkxESUdFU1RBTEdPX01ENVNFU1M7Ci0gICAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwoY29udGVudCwgIk1ENSIpKQotICAgICAgICAgIGRpZ2VzdC0+YWxnbyA9IENVUkxESUdFU1RBTEdPX01ENTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICAvKiB1bmtub3duIHNwZWNpZmllciwgaWdub3JlIGl0ISAqLwotICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICBicmVhazsgLyogd2UncmUgZG9uZSBoZXJlICovCi0KLSAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCi0gICAgd2hpbGUoKmNobGcgJiYgSVNTUEFDRSgqY2hsZykpCi0gICAgICBjaGxnKys7Ci0KLSAgICAvKiBBbGxvdyB0aGUgbGlzdCB0byBiZSBjb21tYS1zZXBhcmF0ZWQgKi8KLSAgICBpZignLCcgPT0gKmNobGcpCi0gICAgICBjaGxnKys7Ci0gIH0KLQotICAvKiBXZSBoYWQgYSBub25jZSBzaW5jZSBiZWZvcmUsIGFuZCB3ZSBnb3QgYW5vdGhlciBvbmUgbm93IHdpdGhvdXQKLSAgICAgJ3N0YWxlPXRydWUnLiBUaGlzIG1lYW5zIHdlIHByb3ZpZGVkIGJhZCBjcmVkZW50aWFscyBpbiB0aGUgcHJldmlvdXMKLSAgICAgcmVxdWVzdCAqLwotICBpZihiZWZvcmUgJiYgIWRpZ2VzdC0+c3RhbGUpCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIC8qIFdlIGdvdCB0aGlzIGhlYWRlciB3aXRob3V0IGEgbm9uY2UsIHRoYXQncyBhIGJhZCBEaWdlc3QgbGluZSEgKi8KLSAgaWYoIWRpZ2VzdC0+bm9uY2UpCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgSFRUUCBESUdFU1QgcmVzcG9uc2UgbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZwotICogdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogcmVxdWVzdCBbaW5dICAgICAtIFRoZSBIVFRQIHJlcXVlc3QuCi0gKiB1cmlwYXRoIFtpbl0gICAgIC0gVGhlIHBhdGggb2YgdGhlIEhUVFAgdXJpLgotICogZGlnZXN0ICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp1cmlwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIENVUkxjb2RlIHJlc3VsdDsKLSAgdW5zaWduZWQgY2hhciBtZDVidWZbMTZdOyAvKiAxNiBieXRlcy8xMjggYml0cyAqLwotICB1bnNpZ25lZCBjaGFyIHJlcXVlc3RfZGlnZXN0WzMzXTsKLSAgdW5zaWduZWQgY2hhciAqbWQ1dGhpczsKLSAgdW5zaWduZWQgY2hhciBoYTFbMzNdOy8qIDMyIGRpZ2l0cyBhbmQgMSB6ZXJvIGJ5dGUgKi8KLSAgdW5zaWduZWQgY2hhciBoYTJbMzNdOy8qIDMyIGRpZ2l0cyBhbmQgMSB6ZXJvIGJ5dGUgKi8KLSAgY2hhciBjbm9uY2VidWZbMzNdOwotICBjaGFyICpjbm9uY2UgPSBOVUxMOwotICBzaXplX3QgY25vbmNlX3N6ID0gMDsKLSAgY2hhciAqdXNlcnBfcXVvdGVkOwotICBjaGFyICpyZXNwb25zZSA9IE5VTEw7Ci0gIGNoYXIgKnRtcCA9IE5VTEw7Ci0KLSAgaWYoIWRpZ2VzdC0+bmMpCi0gICAgZGlnZXN0LT5uYyA9IDE7Ci0KLSAgaWYoIWRpZ2VzdC0+Y25vbmNlKSB7Ci0gICAgc25wcmludGYoY25vbmNlYnVmLCBzaXplb2YoY25vbmNlYnVmKSwgIiUwOHglMDh4JTA4eCUwOHgiLAotICAgICAgICAgICAgIEN1cmxfcmFuZChkYXRhKSwgQ3VybF9yYW5kKGRhdGEpLAotICAgICAgICAgICAgIEN1cmxfcmFuZChkYXRhKSwgQ3VybF9yYW5kKGRhdGEpKTsKLQotICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCBjbm9uY2VidWYsIHN0cmxlbihjbm9uY2VidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY25vbmNlLCAmY25vbmNlX3N6KTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgZGlnZXN0LT5jbm9uY2UgPSBjbm9uY2U7Ci0gIH0KLQotICAvKgotICAgIGlmIHRoZSBhbGdvcml0aG0gaXMgIk1ENSIgb3IgdW5zcGVjaWZpZWQgKHdoaWNoIHRoZW4gZGVmYXVsdHMgdG8gTUQ1KToKLQotICAgIEExID0gdW5xKHVzZXJuYW1lLXZhbHVlKSAiOiIgdW5xKHJlYWxtLXZhbHVlKSAiOiIgcGFzc3dkCi0KLSAgICBpZiB0aGUgYWxnb3JpdGhtIGlzICJNRDUtc2VzcyIgdGhlbjoKLQotICAgIEExID0gSCggdW5xKHVzZXJuYW1lLXZhbHVlKSAiOiIgdW5xKHJlYWxtLXZhbHVlKSAiOiIgcGFzc3dkICkKLSAgICAgICAgICI6IiB1bnEobm9uY2UtdmFsdWUpICI6IiB1bnEoY25vbmNlLXZhbHVlKQotICAqLwotCi0gIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKQotICAgIGFwcmludGYoIiVzOiVzOiVzIiwgdXNlcnAsIGRpZ2VzdC0+cmVhbG0sIHBhc3N3ZHApOwotICBpZighbWQ1dGhpcykKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCBtZDV0aGlzKTsgLyogY29udmVydCBvbiBub24tQVNDSUkgbWFjaGluZXMgKi8KLSAgQ3VybF9tZDVpdChtZDVidWYsIG1kNXRoaXMpOwotICBmcmVlKG1kNXRoaXMpOwotICBzYXNsX2RpZ2VzdF9tZDVfdG9fYXNjaWkobWQ1YnVmLCBoYTEpOwotCi0gIGlmKGRpZ2VzdC0+YWxnbyA9PSBDVVJMRElHRVNUQUxHT19NRDVTRVNTKSB7Ci0gICAgLyogbm9uY2UgYW5kIGNub25jZSBhcmUgT1VUU0lERSB0aGUgaGFzaCAqLwotICAgIHRtcCA9IGFwcmludGYoIiVzOiVzOiVzIiwgaGExLCBkaWdlc3QtPm5vbmNlLCBkaWdlc3QtPmNub25jZSk7Ci0gICAgaWYoIXRtcCkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgdG1wKTsgLyogY29udmVydCBvbiBub24tQVNDSUkgbWFjaGluZXMgKi8KLSAgICBDdXJsX21kNWl0KG1kNWJ1ZiwgKHVuc2lnbmVkIGNoYXIgKil0bXApOwotICAgIGZyZWUodG1wKTsKLSAgICBzYXNsX2RpZ2VzdF9tZDVfdG9fYXNjaWkobWQ1YnVmLCBoYTEpOwotICB9Ci0KLSAgLyoKLSAgICBJZiB0aGUgInFvcCIgZGlyZWN0aXZlJ3MgdmFsdWUgaXMgImF1dGgiIG9yIGlzIHVuc3BlY2lmaWVkLCB0aGVuIEEyIGlzOgotCi0gICAgICBBMiAgICAgICA9IE1ldGhvZCAiOiIgZGlnZXN0LXVyaS12YWx1ZQotCi0gICAgICAgICAgSWYgdGhlICJxb3AiIHZhbHVlIGlzICJhdXRoLWludCIsIHRoZW4gQTIgaXM6Ci0KLSAgICAgIEEyICAgICAgID0gTWV0aG9kICI6IiBkaWdlc3QtdXJpLXZhbHVlICI6IiBIKGVudGl0eS1ib2R5KQotCi0gICAgKFRoZSAiTWV0aG9kIiB2YWx1ZSBpcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCBhcyBzcGVjaWZpZWQgaW4gc2VjdGlvbgotICAgIDUuMS4xIG9mIFJGQyAyNjE2KQotICAqLwotCi0gIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKWFwcmludGYoIiVzOiVzIiwgcmVxdWVzdCwgdXJpcGF0aCk7Ci0KLSAgaWYoZGlnZXN0LT5xb3AgJiYgQ3VybF9yYXdfZXF1YWwoZGlnZXN0LT5xb3AsICJhdXRoLWludCIpKSB7Ci0gICAgLyogV2UgZG9uJ3Qgc3VwcG9ydCBhdXRoLWludCBmb3IgUFVUIG9yIFBPU1QgYXQgdGhlIG1vbWVudC4KLSAgICAgICBUT0RPOiByZXBsYWNlIG1kNSBvZiBlbXB0eSBzdHJpbmcgd2l0aCBlbnRpdHktYm9keSBmb3IgUFVUL1BPU1QgKi8KLSAgICB1bnNpZ25lZCBjaGFyICptZDV0aGlzMiA9ICh1bnNpZ25lZCBjaGFyICopCi0gICAgICBhcHJpbnRmKCIlczolcyIsIG1kNXRoaXMsICJkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIpOwotICAgIGZyZWUobWQ1dGhpcyk7Ci0gICAgbWQ1dGhpcyA9IG1kNXRoaXMyOwotICB9Ci0KLSAgaWYoIW1kNXRoaXMpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgbWQ1dGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gIEN1cmxfbWQ1aXQobWQ1YnVmLCBtZDV0aGlzKTsKLSAgZnJlZShtZDV0aGlzKTsKLSAgc2FzbF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgaGEyKTsKLQotICBpZihkaWdlc3QtPnFvcCkgewotICAgIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKWFwcmludGYoIiVzOiVzOiUwOHg6JXM6JXM6JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPmNub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cW9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGEyKTsKLSAgfQotICBlbHNlIHsKLSAgICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKilhcHJpbnRmKCIlczolczolcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5vbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGEyKTsKLSAgfQotCi0gIGlmKCFtZDV0aGlzKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIG1kNXRoaXMpOyAvKiBjb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLwotICBDdXJsX21kNWl0KG1kNWJ1ZiwgbWQ1dGhpcyk7Ci0gIGZyZWUobWQ1dGhpcyk7Ci0gIHNhc2xfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIHJlcXVlc3RfZGlnZXN0KTsKLQotICAvKiBmb3IgdGVzdCBjYXNlIDY0IChzbm9vcGVkIGZyb20gYSBNb3ppbGxhIDEuM2EgcmVxdWVzdCkKLQotICAgIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0idGVzdHVzZXIiLCByZWFsbT0idGVzdHJlYWxtIiwgXAotICAgIG5vbmNlPSIxMDUzNjA0MTQ1IiwgdXJpPSIvNjQiLCByZXNwb25zZT0iYzU1ZjdmMzBkODNkNzc0YTNkMmRjYWNmNzI1YWJhY2EiCi0KLSAgICBEaWdlc3QgcGFyYW1ldGVycyBhcmUgYWxsIHF1b3RlZCBzdHJpbmdzLiAgVXNlcm5hbWUgd2hpY2ggaXMgcHJvdmlkZWQgYnkKLSAgICB0aGUgdXNlciB3aWxsIG5lZWQgZG91YmxlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgd2l0aGluIGl0IGVzY2FwZWQuICBGb3IKLSAgICB0aGUgb3RoZXIgZmllbGRzLCB0aGlzIHNob3VsZG4ndCBiZSBhbiBpc3N1ZS4gIHJlYWxtLCBub25jZSwgYW5kIG9wYXF1ZQotICAgIGFyZSBjb3BpZWQgYXMgaXMgZnJvbSB0aGUgc2VydmVyLCBlc2NhcGVzIGFuZCBhbGwuICBjbm9uY2UgaXMgZ2VuZXJhdGVkCi0gICAgd2l0aCB3ZWItc2FmZSBjaGFyYWN0ZXJzLiAgdXJpIGlzIGFscmVhZHkgcGVyY2VudCBlbmNvZGVkLiAgbmMgaXMgOCBoZXgKLSAgICBjaGFyYWN0ZXJzLiAgYWxnb3JpdGhtIGFuZCBxb3Agd2l0aCBzdGFuZGFyZCB2YWx1ZXMgb25seSBjb250YWluIHdlYi1zYWZlCi0gICAgY2hyYWN0ZXJzLgotICAqLwotICB1c2VycF9xdW90ZWQgPSBzYXNsX2RpZ2VzdF9zdHJpbmdfcXVvdGVkKHVzZXJwKTsKLSAgaWYoIXVzZXJwX3F1b3RlZCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBpZihkaWdlc3QtPnFvcCkgewotICAgIHJlc3BvbnNlID0gYXByaW50ZigidXNlcm5hbWU9XCIlc1wiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJyZWFsbT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgIm5vbmNlPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAidXJpPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAiY25vbmNlPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAibmM9JTA4eCwgIgotICAgICAgICAgICAgICAgICAgICAgICAicW9wPSVzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJyZXNwb25zZT1cIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgICB1c2VycF9xdW90ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cmVhbG0sCi0gICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICAgIHVyaXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+Y25vbmNlLAotICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5jLAotICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnFvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kaWdlc3QpOwotCi0gICAgaWYoQ3VybF9yYXdfZXF1YWwoZGlnZXN0LT5xb3AsICJhdXRoIikpCi0gICAgICBkaWdlc3QtPm5jKys7IC8qIFRoZSBuYyAoZnJvbSBSRkMpIGhhcyB0byBiZSBhIDggaGV4IGRpZ2l0IG51bWJlciAwCi0gICAgICAgICAgICAgICAgICAgICAgIHBhZGRlZCB3aGljaCB0ZWxscyB0byB0aGUgc2VydmVyIGhvdyBtYW55IHRpbWVzIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHNhbWUgbm9uY2UgaW4gdGhlIHFvcD1hdXRoIG1vZGUgKi8KLSAgfQotICBlbHNlIHsKLSAgICByZXNwb25zZSA9IGFwcmludGYoInVzZXJuYW1lPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAicmVhbG09XCIlc1wiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJub25jZT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInVyaT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInJlc3BvbnNlPVwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICAgIHVzZXJwX3F1b3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5yZWFsbSwKLSAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdXJpcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kaWdlc3QpOwotICB9Ci0gIGZyZWUodXNlcnBfcXVvdGVkKTsKLSAgaWYoIXJlc3BvbnNlKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIEFkZCB0aGUgb3B0aW9uYWwgZmllbGRzICovCi0gIGlmKGRpZ2VzdC0+b3BhcXVlKSB7Ci0gICAgLyogQXBwZW5kIHRoZSBvcGFxdWUgKi8KLSAgICB0bXAgPSBhcHJpbnRmKCIlcywgb3BhcXVlPVwiJXNcIiIsIHJlc3BvbnNlLCBkaWdlc3QtPm9wYXF1ZSk7Ci0gICAgZnJlZShyZXNwb25zZSk7Ci0gICAgaWYoIXRtcCkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgcmVzcG9uc2UgPSB0bXA7Ci0gIH0KLQotICBpZihkaWdlc3QtPmFsZ29yaXRobSkgewotICAgIC8qIEFwcGVuZCB0aGUgYWxnb3JpdGhtICovCi0gICAgdG1wID0gYXByaW50ZigiJXMsIGFsZ29yaXRobT1cIiVzXCIiLCByZXNwb25zZSwgZGlnZXN0LT5hbGdvcml0aG0pOwotICAgIGZyZWUocmVzcG9uc2UpOwotICAgIGlmKCF0bXApCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIHJlc3BvbnNlID0gdG1wOwotICB9Ci0KLSAgLyogUmV0dXJuIHRoZSBvdXRwdXQgKi8KLSAgKm91dHB0ciA9IHJlc3BvbnNlOwotICAqb3V0bGVuID0gc3RybGVuKHJlc3BvbnNlKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgZGlnZXN0IHNwZWNpZmljIGRhdGEuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkaWdlc3QgICAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCi0gKgotICovCi12b2lkIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KQotewotICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+bm9uY2UpOwotICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+Y25vbmNlKTsKLSAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPnJlYWxtKTsKLSAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPm9wYXF1ZSk7Ci0gIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5xb3ApOwotICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+YWxnb3JpdGhtKTsKLQotICBkaWdlc3QtPm5jID0gMDsKLSAgZGlnZXN0LT5hbGdvID0gQ1VSTERJR0VTVEFMR09fTUQ1OyAvKiBkZWZhdWx0IGFsZ29yaXRobSAqLwotICBkaWdlc3QtPnN0YWxlID0gRkFMU0U7IC8qIGRlZmF1bHQgbWVhbnMgbm9ybWFsLCBub3Qgc3RhbGUgKi8KLX0KLSNlbmRpZiAgLyogIVVTRV9XSU5ET1dTX1NTUEkgKi8KLQotI2VuZGlmICAvKiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggKi8KLQotI2lmIGRlZmluZWQoVVNFX05UTE0pICYmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0vKgotICogQ3VybF9zYXNsX250bG1fY2xlYW51cCgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBudGxtIHNwZWNpZmljIGRhdGEuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KLSAqCi0gKi8KLXZvaWQgQ3VybF9zYXNsX250bG1fY2xlYW51cChzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pCi17Ci0gIC8qIEZyZWUgdGhlIHRhcmdldCBpbmZvICovCi0gIEN1cmxfc2FmZWZyZWUobnRsbS0+dGFyZ2V0X2luZm8pOwotCi0gIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KLSAgbnRsbS0+dGFyZ2V0X2luZm9fbGVuID0gMDsKLX0KLSNlbmRpZiAvKiBVU0VfTlRMTSAmJiAhVVNFX1dJTkRPV1NfU1NQSSovCi0KLS8qCi0gKiBzYXNsX2NyZWF0ZV94b2F1dGgyX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgT0F1dGggMi4wIG1lc3NhZ2UgcmVhZHkgZm9yCi0gKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogdXNlciAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCi0gKiBiZWFyZXIgIFtpbl0gICAgIC0gVGhlIGJlYXJlciB0b2tlbi4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9jcmVhdGVfeG9hdXRoMl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiZWFyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgY2hhciAqeG9hdXRoID0gTlVMTDsKLQotICAvKiBHZW5lcmF0ZSB0aGUgbWVzc2FnZSAqLwotICB4b2F1dGggPSBhcHJpbnRmKCJ1c2VyPSVzXDFhdXRoPUJlYXJlciAlc1wxXDEiLCB1c2VyLCBiZWFyZXIpOwotICBpZigheG9hdXRoKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlcGx5ICovCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCB4b2F1dGgsIHN0cmxlbih4b2F1dGgpLCBvdXRwdHIsIG91dGxlbik7Ci0KLSAgZnJlZSh4b2F1dGgpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KIC8qCiAgKiBDdXJsX3Nhc2xfY2xlYW51cCgpCiAgKgpAQCAtMTIwNiwxNCArODUsMTQgQEAKICNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCiAgIC8qIENsZWFudXAgdGhlIGdzc2FwaSBzdHJ1Y3R1cmUgKi8KICAgaWYoYXV0aHVzZWQgPT0gU0FTTF9NRUNIX0dTU0FQSSkgewotICAgIEN1cmxfc2FzbF9nc3NhcGlfY2xlYW51cCgmY29ubi0+a3JiNSk7CisgICAgQ3VybF9hdXRoX2dzc2FwaV9jbGVhbnVwKCZjb25uLT5rcmI1KTsKICAgfQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFVTRV9OVExNKQotICAvKiBDbGVhbnVwIHRoZSBudGxtIHN0cnVjdHVyZSAqLworICAvKiBDbGVhbnVwIHRoZSBOVExNIHN0cnVjdHVyZSAqLwogICBpZihhdXRodXNlZCA9PSBTQVNMX01FQ0hfTlRMTSkgewotICAgIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoJmNvbm4tPm50bG0pOworICAgIEN1cmxfYXV0aF9udGxtX2NsZWFudXAoJmNvbm4tPm50bG0pOwogICB9CiAjZW5kaWYKIApAQCAtMTI3NSwxOCArMTU0LDIwIEBACiAgIGlmKCFsZW4pCiAgICAgcmV0dXJuIENVUkxFX1VSTF9NQUxGT1JNQVQ7CiAKLSAgICBpZihzYXNsLT5yZXNldHByZWZzKSB7Ci0gICAgICBzYXNsLT5yZXNldHByZWZzID0gRkFMU0U7Ci0gICAgICBzYXNsLT5wcmVmbWVjaCA9IFNBU0xfQVVUSF9OT05FOwotICAgIH0KKyAgaWYoc2FzbC0+cmVzZXRwcmVmcykgeworICAgIHNhc2wtPnJlc2V0cHJlZnMgPSBGQUxTRTsKKyAgICBzYXNsLT5wcmVmbWVjaCA9IFNBU0xfQVVUSF9OT05FOworICB9CiAKLSAgICBpZihzdHJuZXF1YWwodmFsdWUsICIqIiwgbGVuKSkKLSAgICAgIHNhc2wtPnByZWZtZWNoID0gU0FTTF9BVVRIX0RFRkFVTFQ7Ci0gICAgZWxzZSBpZigobWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaCh2YWx1ZSwgbGVuLCAmbWVjaGxlbikpICYmCi0gICAgICAgICAgICBtZWNobGVuID09IGxlbikKKyAgaWYoc3RybmVxdWFsKHZhbHVlLCAiKiIsIGxlbikpCisgICAgc2FzbC0+cHJlZm1lY2ggPSBTQVNMX0FVVEhfREVGQVVMVDsKKyAgZWxzZSB7CisgICAgbWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaCh2YWx1ZSwgbGVuLCAmbWVjaGxlbik7CisgICAgaWYobWVjaGJpdCAmJiBtZWNobGVuID09IGxlbikKICAgICAgIHNhc2wtPnByZWZtZWNoIHw9IG1lY2hiaXQ7CiAgICAgZWxzZQogICAgICAgcmVzdWx0ID0gQ1VSTEVfVVJMX01BTEZPUk1BVDsKKyAgfQogCiAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzMyLDcgKzIxMyw4IEBACiAgICAgIkdTU0FQSSIsCiAgICAgIkdTU0FQSV9UT0tFTiIsCiAgICAgIkdTU0FQSV9OT19EQVRBIiwKLSAgICAiWE9BVVRIMiIsCisgICAgIk9BVVRIMiIsCisgICAgIk9BVVRIMl9SRVNQIiwKICAgICAiQ0FOQ0VMIiwKICAgICAiRklOQUwiLAogICAgIC8qIExBU1QgKi8KQEAgLTEzODIsNiArMjY0LDExIEBACiAgIHNpemVfdCBsZW4gPSAwOwogICBzYXNsc3RhdGUgc3RhdGUxID0gU0FTTF9TVE9QOwogICBzYXNsc3RhdGUgc3RhdGUyID0gU0FTTF9GSU5BTDsKKyNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCisgIGNvbnN0IGNoYXIqIHNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gOgorICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlOworI2VuZGlmCiAKICAgc2FzbC0+Zm9yY2VfaXIgPSBmb3JjZV9pcjsgICAgLyogTGF0Y2ggZm9yIGZ1dHVyZSB1c2UgKi8KICAgc2FzbC0+YXV0aHVzZWQgPSAwOyAgICAgICAgICAgLyogTm8gbWVjaGFuaXNtIHVzZWQgeWV0ICovCkBAIC0xMzk2LDcgKzI4Myw4IEBACiAgICAgc2FzbC0+YXV0aHVzZWQgPSBTQVNMX01FQ0hfRVhURVJOQUw7CiAKICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKLSAgICAgIHJlc3VsdCA9IHNhc2xfY3JlYXRlX2V4dGVybmFsX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgJnJlc3AsICZsZW4pOworICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pOwogICB9CiAgIGVsc2UgaWYoY29ubi0+Yml0cy51c2VyX3Bhc3N3ZCkgewogI2lmIGRlZmluZWQoVVNFX0tFUkJFUk9TNSkKQEAgLTE0MDgsOSArMjk2LDExIEBACiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9HU1NBUEk7CiAKICAgICAgIGlmKGZvcmNlX2lyIHx8IGRhdGEtPnNldC5zYXNsX2lyKQotICAgICAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsLT5wYXJhbXMtPnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZWFzeV9jb25uLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhc2wtPm11dHVhbF9hdXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmNvbm4tPmtyYjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CkBAIC0xNDM4LDIwICszMjgsMzQgQEAKICAgICAgIHNhc2wtPmF1dGh1c2VkID0gU0FTTF9NRUNIX05UTE07CiAKICAgICAgIGlmKGZvcmNlX2lyIHx8IGRhdGEtPnNldC5zYXNsX2lyKQotICAgICAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCisgICAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm4tPm50bG0sICZyZXNwLCAmbGVuKTsKICAgICAgIH0KICAgICBlbHNlCiAjZW5kaWYKLSAgICBpZigoZW5hYmxlZG1lY2hzICYgU0FTTF9NRUNIX1hPQVVUSDIpIHx8IGNvbm4tPnhvYXV0aDJfYmVhcmVyKSB7CisgICAgaWYoKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9PQVVUSEJFQVJFUikgJiYgY29ubi0+b2F1dGhfYmVhcmVyKSB7CisgICAgICBtZWNoID0gU0FTTF9NRUNIX1NUUklOR19PQVVUSEJFQVJFUjsKKyAgICAgIHN0YXRlMSA9IFNBU0xfT0FVVEgyOworICAgICAgc3RhdGUyID0gU0FTTF9PQVVUSDJfUkVTUDsKKyAgICAgIHNhc2wtPmF1dGh1c2VkID0gU0FTTF9NRUNIX09BVVRIQkVBUkVSOworCisgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPm9hdXRoX2JlYXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CisgICAgfQorICAgIGVsc2UgaWYoKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9YT0FVVEgyKSAmJiBjb25uLT5vYXV0aF9iZWFyZXIpIHsKICAgICAgIG1lY2ggPSBTQVNMX01FQ0hfU1RSSU5HX1hPQVVUSDI7Ci0gICAgICBzdGF0ZTEgPSBTQVNMX1hPQVVUSDI7CisgICAgICBzdGF0ZTEgPSBTQVNMX09BVVRIMjsKICAgICAgIHNhc2wtPmF1dGh1c2VkID0gU0FTTF9NRUNIX1hPQVVUSDI7CiAKICAgICAgIGlmKGZvcmNlX2lyIHx8IGRhdGEtPnNldC5zYXNsX2lyKQotICAgICAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV94b2F1dGgyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnhvYXV0aDJfYmVhcmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOworICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX29hdXRoX2JlYXJlcl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5vYXV0aF9iZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIH0KICAgICBlbHNlIGlmKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9MT0dJTikgewogICAgICAgbWVjaCA9IFNBU0xfTUVDSF9TVFJJTkdfTE9HSU47CkBAIC0xNDYwLDcgKzM2NCw3IEBACiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9MT0dJTjsKIAogICAgICAgaWYoZm9yY2VfaXIgfHwgZGF0YS0+c2V0LnNhc2xfaXIpCi0gICAgICAgIHJlc3VsdCA9IHNhc2xfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgJnJlc3AsICZsZW4pOworICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgJnJlc3AsICZsZW4pOwogICAgIH0KICAgICBlbHNlIGlmKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9QTEFJTikgewogICAgICAgbWVjaCA9IFNBU0xfTUVDSF9TVFJJTkdfUExBSU47CkBAIC0xNDY4LDI0ICszNzIsMjIgQEAKICAgICAgIHNhc2wtPmF1dGh1c2VkID0gU0FTTF9NRUNIX1BMQUlOOwogCiAgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKLSAgICAgICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfcGxhaW5fbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOworICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIH0KICAgfQogCi0gIGlmKCFyZXN1bHQpIHsKKyAgaWYoIXJlc3VsdCAmJiBtZWNoKSB7CiAgICAgaWYocmVzcCAmJiBzYXNsLT5wYXJhbXMtPm1heGlybGVuICYmCiAgICAgICAgc3RybGVuKG1lY2gpICsgbGVuID4gc2FzbC0+cGFyYW1zLT5tYXhpcmxlbikgewogICAgICAgZnJlZShyZXNwKTsKICAgICAgIHJlc3AgPSBOVUxMOwogICAgIH0KIAotICAgIGlmKG1lY2gpIHsKLSAgICAgIHJlc3VsdCA9IHNhc2wtPnBhcmFtcy0+c2VuZGF1dGgoY29ubiwgbWVjaCwgcmVzcCk7Ci0gICAgICBpZighcmVzdWx0KSB7Ci0gICAgICAgICpwcm9ncmVzcyA9IFNBU0xfSU5QUk9HUkVTUzsKLSAgICAgICAgc3RhdGUoc2FzbCwgY29ubiwgcmVzcD8gc3RhdGUyOiBzdGF0ZTEpOwotICAgICAgfQorICAgIHJlc3VsdCA9IHNhc2wtPnBhcmFtcy0+c2VuZGF1dGgoY29ubiwgbWVjaCwgcmVzcCk7CisgICAgaWYoIXJlc3VsdCkgeworICAgICAgKnByb2dyZXNzID0gU0FTTF9JTlBST0dSRVNTOworICAgICAgc3RhdGUoc2FzbCwgY29ubiwgcmVzcCA/IHN0YXRlMiA6IHN0YXRlMSk7CiAgICAgfQogICB9CiAKQEAgLTE1MTEsNiArNDEzLDExIEBACiAgIGNoYXIgKmNobGcgPSBOVUxMOwogICBzaXplX3QgY2hsZ2xlbiA9IDA7CiAjZW5kaWYKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpIHx8IGRlZmluZWQoVVNFX0tFUkJFUk9TNSkKKyAgY29uc3QgY2hhciAqc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSA6CisgICAgICAgICAgICAgICAgICAgICAgICBzYXNsLT5wYXJhbXMtPnNlcnZpY2U7CisjZW5kaWYKICAgc2l6ZV90IGxlbiA9IDA7CiAKICAgKnByb2dyZXNzID0gU0FTTF9JTlBST0dSRVNTOwpAQCAtMTUyMyw3ICs0MzAsOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KIAotICBpZihzYXNsLT5zdGF0ZSAhPSBTQVNMX0NBTkNFTCAmJiBjb2RlICE9IHNhc2wtPnBhcmFtcy0+Y29udGNvZGUpIHsKKyAgaWYoc2FzbC0+c3RhdGUgIT0gU0FTTF9DQU5DRUwgJiYgc2FzbC0+c3RhdGUgIT0gU0FTTF9PQVVUSDJfUkVTUCAmJgorICAgICBjb2RlICE9IHNhc2wtPnBhcmFtcy0+Y29udGNvZGUpIHsKICAgICAqcHJvZ3Jlc3MgPSBTQVNMX0RPTkU7CiAgICAgc3RhdGUoc2FzbCwgY29ubiwgU0FTTF9TVE9QKTsKICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwpAQCAtMTUzNCwzOSArNDQyLDQxIEBACiAgICAgKnByb2dyZXNzID0gU0FTTF9ET05FOwogICAgIHJldHVybiByZXN1bHQ7CiAgIGNhc2UgU0FTTF9QTEFJTjoKLSAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwgJnJlc3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7CiAgICAgYnJlYWs7CiAgIGNhc2UgU0FTTF9MT0dJTjoKLSAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgJnJlc3AsICZsZW4pOwogICAgIG5ld3N0YXRlID0gU0FTTF9MT0dJTl9QQVNTV0Q7CiAgICAgYnJlYWs7CiAgIGNhc2UgU0FTTF9MT0dJTl9QQVNTV0Q6Ci0gICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfbG9naW5fbWVzc2FnZShkYXRhLCBjb25uLT5wYXNzd2QsICZyZXNwLCAmbGVuKTsKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgY29ubi0+cGFzc3dkLCAmcmVzcCwgJmxlbik7CiAgICAgYnJlYWs7CiAgIGNhc2UgU0FTTF9FWFRFUk5BTDoKLSAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX2V4dGVybmFsX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgJnJlc3AsICZsZW4pOwogICAgIGJyZWFrOwogCiAjaWZuZGVmIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSAogICBjYXNlIFNBU0xfQ1JBTU1ENToKICAgICBzYXNsLT5wYXJhbXMtPmdldG1lc3NhZ2UoZGF0YS0+c3RhdGUuYnVmZmVyLCAmc2VydmVyZGF0YSk7Ci0gICAgcmVzdWx0ID0gc2FzbF9kZWNvZGVfY3JhbV9tZDVfbWVzc2FnZShzZXJ2ZXJkYXRhLCAmY2hsZywgJmNobGdsZW4pOworICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9kZWNvZGVfY3JhbV9tZDVfbWVzc2FnZShzZXJ2ZXJkYXRhLCAmY2hsZywgJmNobGdsZW4pOwogICAgIGlmKCFyZXN1bHQpCi0gICAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKGRhdGEsIGNobGcsIGNvbm4tPnVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwgJnJlc3AsICZsZW4pOworICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKGRhdGEsIGNobGcsIGNvbm4tPnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cGFzc3dkLCAmcmVzcCwgJmxlbik7CiAgICAgZnJlZShjaGxnKTsKICAgICBicmVhazsKICAgY2FzZSBTQVNMX0RJR0VTVE1ENToKICAgICBzYXNsLT5wYXJhbXMtPmdldG1lc3NhZ2UoZGF0YS0+c3RhdGUuYnVmZmVyLCAmc2VydmVyZGF0YSk7Ci0gICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsLT5wYXJhbXMtPnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CiAgICAgbmV3c3RhdGUgPSBTQVNMX0RJR0VTVE1ENV9SRVNQOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfRElHRVNUTUQ1X1JFU1A6Ci0gICAgaWYoIShyZXNwID0gc3RyZHVwKCIiKSkpCisgICAgcmVzcCA9IHN0cmR1cCgiIik7CisgICAgaWYoIXJlc3ApCiAgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xNTc0LDE3ICs0ODQsMTcgQEAKICNpZmRlZiBVU0VfTlRMTQogICBjYXNlIFNBU0xfTlRMTToKICAgICAvKiBDcmVhdGUgdGhlIHR5cGUtMSBtZXNzYWdlICovCi0gICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAorICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubi0+bnRsbSwgJnJlc3AsICZsZW4pOwogICAgIG5ld3N0YXRlID0gU0FTTF9OVExNX1RZUEUyTVNHOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfTlRMTV9UWVBFMk1TRzoKICAgICAvKiBEZWNvZGUgdGhlIHR5cGUtMiBtZXNzYWdlICovCiAgICAgc2FzbC0+cGFyYW1zLT5nZXRtZXNzYWdlKGRhdGEtPnN0YXRlLmJ1ZmZlciwgJnNlcnZlcmRhdGEpOwotICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKGRhdGEsIHNlcnZlcmRhdGEsCisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubi0+bnRsbSk7CiAgICAgaWYoIXJlc3VsdCkKLSAgICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCisgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cGFzc3dkLCAmY29ubi0+bnRsbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICBicmVhazsKQEAgLTE1OTIsOSArNTAyLDEwIEBACiAKICNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCiAgIGNhc2UgU0FTTF9HU1NBUEk6Ci0gICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5lYXN5X2Nvbm4tPmhvc3QubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+bXV0dWFsX2F1dGgsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uLT5rcmI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CkBAIC0xNjA1LDcgKzUxNiw4IEBACiAgICAgaWYoc2FzbC0+bXV0dWFsX2F1dGgpIHsKICAgICAgIC8qIERlY29kZSB0aGUgdXNlciB0b2tlbiBjaGFsbGVuZ2UgYW5kIGNyZWF0ZSB0aGUgb3B0aW9uYWwgcmVzcG9uc2UKICAgICAgICAgIG1lc3NhZ2UgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShkYXRhLCBOVUxMLCBOVUxMLCBOVUxMLAorICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKGRhdGEsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsLT5tdXR1YWxfYXV0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJkYXRhLCAmY29ubi0+a3JiNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CkBAIC0xNjEzLDI0ICs1MjUsNjAgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgLyogRGVjb2RlIHRoZSBzZWN1cml0eSBjaGFsbGVuZ2UgYW5kIGNyZWF0ZSB0aGUgcmVzcG9uc2UgbWVzc2FnZSAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAorICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubi0+a3JiNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfR1NTQVBJX05PX0RBVEE6CiAgICAgc2FzbC0+cGFyYW1zLT5nZXRtZXNzYWdlKGRhdGEtPnN0YXRlLmJ1ZmZlciwgJnNlcnZlcmRhdGEpOwogICAgIC8qIERlY29kZSB0aGUgc2VjdXJpdHkgY2hhbGxlbmdlIGFuZCBjcmVhdGUgdGhlIHJlc3BvbnNlIG1lc3NhZ2UgKi8KLSAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKGRhdGEsIHNlcnZlcmRhdGEsCisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm4tPmtyYjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CiAgICAgYnJlYWs7CiAjZW5kaWYKIAotICBjYXNlIFNBU0xfWE9BVVRIMjoKKyAgY2FzZSBTQVNMX09BVVRIMjoKICAgICAvKiBDcmVhdGUgdGhlIGF1dGhvcmlzYXRpb24gbWVzc2FnZSAqLwotICAgIHJlc3VsdCA9IHNhc2xfY3JlYXRlX3hvYXV0aDJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT54b2F1dGgyX2JlYXJlciwgJnJlc3AsICZsZW4pOworICAgIGlmKHNhc2wtPmF1dGh1c2VkID09IFNBU0xfTUVDSF9PQVVUSEJFQVJFUikgeworICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPm9hdXRoX2JlYXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOworCisgICAgICAvKiBGYWlsdXJlcyBtYXliZSBzZW50IGJ5IHRoZSBzZXJ2ZXIgYXMgY29udGludWF0aW9ucyBmb3IgT0FVVEhCRUFSRVIgKi8KKyAgICAgIG5ld3N0YXRlID0gU0FTTF9PQVVUSDJfUkVTUDsKKyAgICB9CisgICAgZWxzZQorICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5vYXV0aF9iZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICBicmVhazsKKworICBjYXNlIFNBU0xfT0FVVEgyX1JFU1A6CisgICAgLyogVGhlIGNvbnRpbnVhdGlvbiBpcyBvcHRpb25hbCBzbyBjaGVjayB0aGUgcmVzcG9uc2UgY29kZSAqLworICAgIGlmKGNvZGUgPT0gc2FzbC0+cGFyYW1zLT5maW5hbGNvZGUpIHsKKyAgICAgIC8qIEZpbmFsIHJlc3BvbnNlIHdhcyByZWNlaXZlZCBzbyB3ZSBhcmUgZG9uZSAqLworICAgICAgKnByb2dyZXNzID0gU0FTTF9ET05FOworICAgICAgc3RhdGUoc2FzbCwgY29ubiwgU0FTTF9TVE9QKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGVsc2UgaWYoY29kZSA9PSBzYXNsLT5wYXJhbXMtPmNvbnRjb2RlKSB7CisgICAgICAvKiBBY2tub3dsZWRnZSB0aGUgY29udGludWF0aW9uIGJ5IHNlbmRpbmcgYSAweDAxIHJlc3BvbnNlIGJhc2U2NAorICAgICAgICAgZW5jb2RlZCAqLworICAgICAgcmVzcCA9IHN0cmR1cCgiQVE9PSIpOworICAgICAgaWYoIXJlc3ApCisgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAqcHJvZ3Jlc3MgPSBTQVNMX0RPTkU7CisgICAgICBzdGF0ZShzYXNsLCBjb25uLCBTQVNMX1NUT1ApOworICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKyAgICB9CisKICAgY2FzZSBTQVNMX0NBTkNFTDoKICAgICAvKiBSZW1vdmUgdGhlIG9mZmVuZGluZyBtZWNoYW5pc20gZnJvbSB0aGUgc3VwcG9ydGVkIGxpc3QgKi8KICAgICBzYXNsLT5hdXRobWVjaHMgXj0gc2FzbC0+YXV0aHVzZWQ7CmRpZmYgLS1naXQgYS9saWIvY3VybF9zYXNsLmggYi9saWIvY3VybF9zYXNsLmgKaW5kZXggMTE3ZDYwZS4uNjUzNWZlZCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfc2FzbC5oCisrKyBiL2xpYi9jdXJsX3Nhc2wuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI3LDE4ICsyNyw2IEBACiBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZTsKIHN0cnVjdCBjb25uZWN0ZGF0YTsKIAotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKLXN0cnVjdCBkaWdlc3RkYXRhOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFVTRV9OVExNKQotc3RydWN0IG50bG1kYXRhOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCi1zdHJ1Y3Qga2VyYmVyb3M1ZGF0YTsKLSNlbmRpZgotCiAvKiBBdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gZmxhZ3MgKi8KICNkZWZpbmUgU0FTTF9NRUNIX0xPR0lOICAgICAgICAgICAgICgxIDw8IDApCiAjZGVmaW5lIFNBU0xfTUVDSF9QTEFJTiAgICAgICAgICAgICAoMSA8PCAxKQpAQCAtNDgsMzIgKzM2LDIzIEBACiAjZGVmaW5lIFNBU0xfTUVDSF9FWFRFUk5BTCAgICAgICAgICAoMSA8PCA1KQogI2RlZmluZSBTQVNMX01FQ0hfTlRMTSAgICAgICAgICAgICAgKDEgPDwgNikKICNkZWZpbmUgU0FTTF9NRUNIX1hPQVVUSDIgICAgICAgICAgICgxIDw8IDcpCisjZGVmaW5lIFNBU0xfTUVDSF9PQVVUSEJFQVJFUiAgICAgICAoMSA8PCA4KQogCiAvKiBBdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gdmFsdWVzICovCiAjZGVmaW5lIFNBU0xfQVVUSF9OT05FICAgICAgICAgIDAKICNkZWZpbmUgU0FTTF9BVVRIX0FOWSAgICAgICAgICAgfjBVCi0jZGVmaW5lIFNBU0xfQVVUSF9ERUZBVUxUICAgICAgIChTQVNMX0FVVEhfQU5ZICYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfihTQVNMX01FQ0hfRVhURVJOQUwgfCBTQVNMX01FQ0hfWE9BVVRIMikpCisjZGVmaW5lIFNBU0xfQVVUSF9ERUZBVUxUICAgICAgIChTQVNMX0FVVEhfQU5ZICYgflNBU0xfTUVDSF9FWFRFUk5BTCkKIAogLyogQXV0aGVudGljYXRpb24gbWVjaGFuaXNtIHN0cmluZ3MgKi8KLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19MT0dJTiAgICAgICJMT0dJTiIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19QTEFJTiAgICAgICJQTEFJTiIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19DUkFNX01ENSAgICJDUkFNLU1ENSIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19ESUdFU1RfTUQ1ICJESUdFU1QtTUQ1IgotI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX0dTU0FQSSAgICAgIkdTU0FQSSIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19FWFRFUk5BTCAgICJFWFRFUk5BTCIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19OVExNICAgICAgICJOVExNIgotI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX1hPQVVUSDIgICAgIlhPQVVUSDIiCi0KLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCi0jZGVmaW5lIERJR0VTVF9NQVhfVkFMVUVfTEVOR1RIICAgICAgICAgICAyNTYKLSNkZWZpbmUgRElHRVNUX01BWF9DT05URU5UX0xFTkdUSCAgICAgICAgIDEwMjQKLSNlbmRpZgotCi1lbnVtIHsKLSAgQ1VSTERJR0VTVEFMR09fTUQ1LAotICBDVVJMRElHRVNUQUxHT19NRDVTRVNTCi19OworI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX0xPR0lOICAgICAgICAiTE9HSU4iCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfUExBSU4gICAgICAgICJQTEFJTiIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19DUkFNX01ENSAgICAgIkNSQU0tTUQ1IgorI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX0RJR0VTVF9NRDUgICAiRElHRVNULU1ENSIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19HU1NBUEkgICAgICAgIkdTU0FQSSIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19FWFRFUk5BTCAgICAgIkVYVEVSTkFMIgorI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX05UTE0gICAgICAgICAiTlRMTSIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19YT0FVVEgyICAgICAgIlhPQVVUSDIiCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfT0FVVEhCRUFSRVIgICJPQVVUSEJFQVJFUiIKIAogLyogU0FTTCBtYWNoaW5lIHN0YXRlcyAqLwogdHlwZWRlZiBlbnVtIHsKQEAgLTkwLDcgKzY5LDggQEAKICAgU0FTTF9HU1NBUEksCiAgIFNBU0xfR1NTQVBJX1RPS0VOLAogICBTQVNMX0dTU0FQSV9OT19EQVRBLAotICBTQVNMX1hPQVVUSDIsCisgIFNBU0xfT0FVVEgyLAorICBTQVNMX09BVVRIMl9SRVNQLAogICBTQVNMX0NBTkNFTCwKICAgU0FTTF9GSU5BTAogfSBzYXNsc3RhdGU7CkBAIC0xMzQsOTcgKzExNCw2IEBACiAgICh3b3JkbGVuID09IChzaXplb2YobWVjaCkgLSAxKSAvIHNpemVvZihjaGFyKSAmJiBcCiAgICAhbWVtY21wKGxpbmUsIG1lY2gsIHdvcmRsZW4pKQogCi0vKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nICovCi0jaWYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLWNoYXIgKkN1cmxfc2FzbF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaW5zdGFuY2UpOwotI2Vsc2UKLVRDSEFSICpDdXJsX3Nhc2xfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmluc3RhbmNlKTsKLSNlbmRpZgotCi0vKiBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgcmVhbG0gZnJvbSBhIGNoYWxsZW5nZSBtZXNzYWdlICovCi1pbnQgQ3VybF9zYXNsX2RpZ2VzdF9nZXRfcGFpcihjb25zdCBjaGFyICpzdHIsIGNoYXIgKnZhbHVlLCBjaGFyICpjb250ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZHB0cik7Ci0KLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKQotY2hhciAqQ3VybF9zYXNsX2J1aWxkX2dzc2FwaV9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCk7Ci0jZW5kaWYKLQotI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKLQotLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBIVFRQIERJR0VTVCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCk7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhUVFAgRElHRVNUIHJlc3BvbnNlIG1lc3NhZ2UgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGRpZ2VzdCBzcGVjaWZpYyBkYXRhICovCi12b2lkIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KTsKLSNlbmRpZgotCi0jaWZkZWYgVVNFX05UTE0KLS8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIE5UTE0gdHlwZS0xIG1lc3NhZ2UgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBiYXNlNjQgZW5jb2RlZCBOVExNIHR5cGUtMiBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUybXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtKTsKLQotLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgTlRMTSB0eXBlLTMgbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgbnRsbSBzcGVjaWZpYyBkYXRhICovCi12b2lkIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoc3RydWN0IG50bG1kYXRhICpudGxtKTsKLQotI2VuZGlmIC8qIFVTRV9OVExNICovCi0KLSNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCi0vKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSB1c2VyIHRva2VuCi0gICBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgbXV0dWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHNlY3VyaXR5Ci0gICB0b2tlbiBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKTsKLQotLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBnc3NhcGkgc3BlY2lmaWMgZGF0YSAqLwotdm9pZCBDdXJsX3Nhc2xfZ3NzYXBpX2NsZWFudXAoc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUpOwotI2VuZGlmIC8qIFVTRV9LRVJCRVJPUzUgKi8KLQogLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFudXAgYW55IGxpYnJhcmllcyBvciBjdXJsIG1vZHVsZXMgdXNlZCBieSB0aGUgc2FzbAogICAgZnVuY3Rpb25zICovCiB2b2lkIEN1cmxfc2FzbF9jbGVhbnVwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgdW5zaWduZWQgaW50IGF1dGh1c2VkKTsKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3Nhc2xfc3NwaS5jIGIvbGliL2N1cmxfc2FzbF9zc3BpLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNDk1MzAuLjAwMDAwMDAKLS0tIGEvbGliL2N1cmxfc2FzbF9zc3BpLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjgxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KLSAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICoKLSAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCi0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgotICoKLSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKgotICogUkZDMjYxNyBCYXNpYyBhbmQgRGlnZXN0IEFjY2VzcyBBdXRoZW50aWNhdGlvbgotICogUkZDMjgzMSBESUdFU1QtTUQ1IGF1dGhlbnRpY2F0aW9uCi0gKiBSRkM0NDIyIFNpbXBsZSBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJpdHkgTGF5ZXIgKFNBU0wpCi0gKiBSRkM0NzUyIFRoZSBLZXJiZXJvcyBWNSAoIkdTU0FQSSIpIFNBU0wgTWVjaGFuaXNtCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKLQotI2lmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLQotI2luY2x1ZGUgPGN1cmwvY3VybC5oPgotCi0jaW5jbHVkZSAiY3VybF9zYXNsLmgiCi0jaW5jbHVkZSAidXJsZGF0YS5oIgotI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCi0jaW5jbHVkZSAid2Fybmxlc3MuaCIKLSNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgotI2luY2x1ZGUgInNlbmRmLmgiCi0jaW5jbHVkZSAic3RyZHVwLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLSNpbmNsdWRlICJyYXdzdHIuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwotI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVtZGVidWcuaCIKLQotLyoKLSAqIEN1cmxfc2FzbF9idWlsZF9zcG4oKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBidWlsZCBhIFNQTiBzdHJpbmcgaW4gdGhlIGZvcm1hdCBzZXJ2aWNlL2hvc3QuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBzZXJpdmNlICBbaW5dIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIHd3dywgc210cCwgcG9wIG9yIGltYXAuCi0gKiBob3N0ICAgICBbaW5dIC0gVGhlIGhvc3QgbmFtZSBvciByZWFsbS4KLSAqCi0gKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIFNQTi4KLSAqLwotVENIQVIgKkN1cmxfc2FzbF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCkKLXsKLSAgY2hhciAqdXRmOF9zcG4gPSBOVUxMOwotICBUQ0hBUiAqdGNoYXJfc3BuID0gTlVMTDsKLQotICAvKiBOb3RlOiBXZSBjb3VsZCB1c2UgRHNNYWtlU1BOKCkgb3IgRHNDbGllbnRNYWtlU3BuRm9yVGFyZ2V0U2VydmVyKCkgcmF0aGVyCi0gICAgIHRoYW4gZG9pbmcgdGhpcyBvdXJzZWx2ZXMgYnV0IHRoZSBmaXJzdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiBXaW5kb3dzIFhQCi0gICAgIGFuZCBXaW5kb3dzIFNlcnZlciAyMDAzIGFuZCB0aGUgbGF0dGVyIGlzIG9ubHkgYXZhaWxhYmxlIGluIFdpbmRvd3MgMjAwMAotICAgICBidXQgbm90IFdpbmRvd3M5NS85OC9NRSBvciBXaW5kb3dzIE5UNC4wIHVubGVzcyB0aGUgQWN0aXZlIERpcmVjdG9yeQotICAgICBDbGllbnQgRXh0ZW5zaW9ucyBhcmUgaW5zdGFsbGVkLiBBcyBzdWNoIGl0IGlzIGZhciBzaW1wbGVyIGZvciB1cyB0bwotICAgICBmb3JtdWxhdGUgdGhlIFNQTiBpbnN0ZWFkLiAqLwotCi0gIC8qIEFsbG9jYXRlIG91ciBVVEY4IGJhc2VkIFNQTiAqLwotICB1dGY4X3NwbiA9IGFwcmludGYoIiVzLyVzIiwgc2VydmljZSwgaG9zdCk7Ci0gIGlmKCF1dGY4X3NwbikgewotICAgIHJldHVybiBOVUxMOwotICB9Ci0KLSAgLyogQWxsb2NhdGUgb3VyIFRDSEFSIGJhc2VkIFNQTiAqLwotICB0Y2hhcl9zcG4gPSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcih1dGY4X3Nwbik7Ci0gIGlmKCF0Y2hhcl9zcG4pIHsKLSAgICBmcmVlKHV0Zjhfc3BuKTsKLQotICAgIHJldHVybiBOVUxMOwotICB9Ci0KLSAgLyogUmVsZWFzZSB0aGUgVVRGOCB2YXJpYW50IHdoZW4gb3BlcmF0aW5nIHdpdGggVW5pY29kZSAqLwotICBDdXJsX3VuaWNvZGVmcmVlKHV0Zjhfc3BuKTsKLQotICAvKiBSZXR1cm4gb3VyIG5ld2x5IGFsbG9jYXRlZCBTUE4gKi8KLSAgcmV0dXJuIHRjaGFyX3NwbjsKLX0KLQotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBESUdFU1QtTUQ1IHJlc3BvbnNlIG1lc3NhZ2UKLSAqIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogc2VydmljZSBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgVENIQVIgKnNwbiA9IE5VTEw7Ci0gIHNpemVfdCBjaGxnbGVuID0gMDsKLSAgc2l6ZV90IHRva2VuX21heCA9IDA7Ci0gIHVuc2lnbmVkIGNoYXIgKmlucHV0X3Rva2VuID0gTlVMTDsKLSAgdW5zaWduZWQgY2hhciAqb3V0cHV0X3Rva2VuID0gTlVMTDsKLSAgQ3JlZEhhbmRsZSBjcmVkZW50aWFsczsKLSAgQ3R4dEhhbmRsZSBjb250ZXh0OwotICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7Ci0gIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZIGlkZW50aXR5OwotICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqcF9pZGVudGl0eTsKLSAgU2VjQnVmZmVyIGNobGdfYnVmOwotICBTZWNCdWZmZXIgcmVzcF9idWY7Ci0gIFNlY0J1ZmZlckRlc2MgY2hsZ19kZXNjOwotICBTZWNCdWZmZXJEZXNjIHJlc3BfZGVzYzsKLSAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKLSAgdW5zaWduZWQgbG9uZyBhdHRyczsKLSAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCi0KLSAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgaWYoc3RybGVuKGNobGc2NCkgJiYgKmNobGc2NCAhPSAnPScpIHsKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmaW5wdXRfdG9rZW4sICZjaGxnbGVuKTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICBpZighaW5wdXRfdG9rZW4pIHsKLSAgICBpbmZvZihkYXRhLCAiRElHRVNULU1ENSBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgY2hhbGxlbmdlIG1lc3NhZ2UpXG4iKTsKLQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBEaWdlc3RTU1AgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5U2VjdXJpdHlQYWNrYWdlSW5mbygoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKLSAgfQotCi0gIHRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKLQotICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKLQotICAvKiBBbGxvY2F0ZSBvdXIgcmVzcG9uc2UgYnVmZmVyICovCi0gIG91dHB1dF90b2tlbiA9IG1hbGxvYyh0b2tlbl9tYXgpOwotICBpZighb3V0cHV0X3Rva2VuKSB7Ci0gICAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KLSAgc3BuID0gQ3VybF9zYXNsX2J1aWxkX3NwbihzZXJ2aWNlLCBkYXRhLT5lYXN5X2Nvbm4tPmhvc3QubmFtZSk7Ci0gIGlmKCFzcG4pIHsKLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0gICAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIGlmKHVzZXJwICYmICp1c2VycCkgewotICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICByZXN1bHQgPSBDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXJwLCBwYXNzd2RwLCAmaWRlbnRpdHkpOwotICAgIGlmKHJlc3VsdCkgewotICAgICAgZnJlZShzcG4pOwotICAgICAgZnJlZShvdXRwdXRfdG9rZW4pOwotICAgICAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgIHBfaWRlbnRpdHkgPSAmaWRlbnRpdHk7Ci0gIH0KLSAgZWxzZQotICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KLSAgICBwX2lkZW50aXR5ID0gTlVMTDsKLQotICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2lkZW50aXR5LCBOVUxMLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVkZW50aWFscywgJmV4cGlyeSk7Ci0KLSAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7Ci0gICAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7Ci0gICAgZnJlZShzcG4pOwotICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKLSAgICBmcmVlKGlucHV0X3Rva2VuKTsKLQotICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0gIH0KLQotICAvKiBTZXR1cCB0aGUgY2hhbGxlbmdlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIGNobGdfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgY2hsZ19kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIGNobGdfZGVzYy5wQnVmZmVycyAgPSAmY2hsZ19idWY7Ci0gIGNobGdfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIGNobGdfYnVmLnB2QnVmZmVyICAgPSBpbnB1dF90b2tlbjsKLSAgY2hsZ19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChjaGxnbGVuKTsKLQotICAvKiBTZXR1cCB0aGUgcmVzcG9uc2UgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIHJlc3BfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgcmVzcF9kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIHJlc3BfZGVzYy5wQnVmZmVycyAgPSAmcmVzcF9idWY7Ci0gIHJlc3BfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIHJlc3BfYnVmLnB2QnVmZmVyICAgPSBvdXRwdXRfdG9rZW47Ci0gIHJlc3BfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwodG9rZW5fbWF4KTsKLQotICAvKiBHZW5lcmF0ZSBvdXIgcmVzcG9uc2UgbWVzc2FnZSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dCgmY3JlZGVudGlhbHMsIE5VTEwsIHNwbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgJmNobGdfZGVzYywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQsICZyZXNwX2Rlc2MsICZhdHRycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4cGlyeSk7Ci0KLSAgaWYoc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX05FRURFRCB8fAotICAgICBzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKQotICAgIHNfcFNlY0ZuLT5Db21wbGV0ZUF1dGhUb2tlbigmY3JlZGVudGlhbHMsICZyZXNwX2Rlc2MpOwotICBlbHNlIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKSB7Ci0gICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOwotICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOwotICAgIGZyZWUoc3BuKTsKLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0gICAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKLSAgfQotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKSBvdXRwdXRfdG9rZW4sIHJlc3BfYnVmLmNiQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHRyLCBvdXRsZW4pOwotCi0gIC8qIEZyZWUgb3VyIGhhbmRsZXMgKi8KLSAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dCgmY29udGV4dCk7Ci0gIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKLQotICAvKiBGcmVlIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7Ci0KLSAgLyogRnJlZSB0aGUgU1BOICovCi0gIGZyZWUoc3BuKTsKLQotICAvKiBGcmVlIHRoZSByZXNwb25zZSBidWZmZXIgKi8KLSAgZnJlZShvdXRwdXRfdG9rZW4pOwotCi0gIC8qIEZyZWUgdGhlIGRlY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSogQ3VybF9vdmVycmlkZV9zc3BpX2h0dHBfcmVhbG0oKQotKgotKiBUaGlzIGlzIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGRvbWFpbiBpbiBhIFNTUEkgaWRlbnRpdHkgc3RydWN0dXJlCi0qIFRoZSByZWFsbSBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgY2hhbGxlbmdlIG1lc3NhZ2UgYW5kIHVzZWQgYXMgdGhlCi0qIGRvbWFpbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBleHBsaWNpdGx5IHNldC4KLSoKLSogUGFyYW1ldGVyczoKLSoKLSogY2hsZyAgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlIG1lc3NhZ2UuCi0qIGlkZW50aXR5IFtpbi9vdXRdIC0gVGhlIGlkZW50aXR5IHN0cnVjdHVyZS4KLSoKLSogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotKi8KLUNVUkxjb2RlIEN1cmxfb3ZlcnJpZGVfc3NwaV9odHRwX3JlYWxtKGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqaWRlbnRpdHkpCi17Ci0gIHhjaGFycF91IGRvbWFpbiwgZHVwX2RvbWFpbjsKLQotICAvKiBJZiBkb21haW4gaXMgYmxhbmsgb3IgdW5zZXQsIGNoZWNrIGNoYWxsZW5nZSBtZXNzYWdlIGZvciByZWFsbSAqLwotICBpZighaWRlbnRpdHktPkRvbWFpbiB8fCAhaWRlbnRpdHktPkRvbWFpbkxlbmd0aCkgewotICAgIGZvcig7OykgewotICAgICAgY2hhciB2YWx1ZVtESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSF07Ci0gICAgICBjaGFyIGNvbnRlbnRbRElHRVNUX01BWF9DT05URU5UX0xFTkdUSF07Ci0KLSAgICAgIC8qIFBhc3MgYWxsIGFkZGl0aW9uYWwgc3BhY2VzIGhlcmUgKi8KLSAgICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQotICAgICAgICBjaGxnKys7Ci0KLSAgICAgIC8qIEV4dHJhY3QgYSB2YWx1ZT1jb250ZW50IHBhaXIgKi8KLSAgICAgIGlmKCFDdXJsX3Nhc2xfZGlnZXN0X2dldF9wYWlyKGNobGcsIHZhbHVlLCBjb250ZW50LCAmY2hsZykpIHsKLSAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJyZWFsbSIpKSB7Ci0KLSAgICAgICAgICAvKiBTZXR1cCBpZGVudGl0eSdzIGRvbWFpbiBhbmQgbGVuZ3RoICovCi0gICAgICAgICAgZG9tYWluLnRjaGFyX3B0ciA9IEN1cmxfY29udmVydF9VVEY4X3RvX3RjaGFyKChjaGFyICopY29udGVudCk7Ci0gICAgICAgICAgaWYoIWRvbWFpbi50Y2hhcl9wdHIpCi0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgICBkdXBfZG9tYWluLnRjaGFyX3B0ciA9IF90Y3NkdXAoZG9tYWluLnRjaGFyX3B0cik7Ci0gICAgICAgICAgaWYoIWR1cF9kb21haW4udGNoYXJfcHRyKSB7Ci0gICAgICAgICAgICBDdXJsX3VuaWNvZGVmcmVlKGRvbWFpbi50Y2hhcl9wdHIpOwotICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlkZW50aXR5LT5Eb21haW4gPSBkdXBfZG9tYWluLnRieXRlX3B0cjsKLSAgICAgICAgICBpZGVudGl0eS0+RG9tYWluTGVuZ3RoID0gY3VybHhfdXp0b3VsKF90Y3NsZW4oZHVwX2RvbWFpbi50Y2hhcl9wdHIpKTsKLSAgICAgICAgICBkdXBfZG9tYWluLnRjaGFyX3B0ciA9IE5VTEw7Ci0KLSAgICAgICAgICBDdXJsX3VuaWNvZGVmcmVlKGRvbWFpbi50Y2hhcl9wdHIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIC8qIHVua25vd24gc3BlY2lmaWVyLCBpZ25vcmUgaXQhICovCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgYnJlYWs7IC8qIHdlJ3JlIGRvbmUgaGVyZSAqLwotCi0gICAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCi0gICAgICB3aGlsZSgqY2hsZyAmJiBJU1NQQUNFKCpjaGxnKSkKLSAgICAgICAgY2hsZysrOwotCi0gICAgICAvKiBBbGxvdyB0aGUgbGlzdCB0byBiZSBjb21tYS1zZXBhcmF0ZWQgKi8KLSAgICAgIGlmKCcsJyA9PSAqY2hsZykKLSAgICAgICAgY2hsZysrOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIEhUVFAgRElHRVNUIGNoYWxsZW5nZSBtZXNzYWdlIGludG8gdGhlIHNlcGVyYXRlCi0gKiBhdHRyaWJ1dGVzLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogY2hsZyAgICBbaW5dICAgICAtIFRoZSBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKLXsKLSAgc2l6ZV90IGNobGdsZW4gPSBzdHJsZW4oY2hsZyk7Ci0KLSAgLyogV2UgaGFkIGFuIGlucHV0IHRva2VuIGJlZm9yZSBhbmQgd2UgZ290IGFub3RoZXIgb25lIG5vdy4gVGhpcyBtZWFucyB3ZQotICBwcm92aWRlZCBiYWQgY3JlZGVudGlhbHMgaW4gdGhlIHByZXZpb3VzIHJlcXVlc3QuICovCi0gIGlmKGRpZ2VzdC0+aW5wdXRfdG9rZW4pCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIC8qIFNpbXBseSBzdG9yZSB0aGUgY2hhbGxlbmdlIGZvciB1c2UgbGF0ZXIgKi8KLSAgZGlnZXN0LT5pbnB1dF90b2tlbiA9IChCWVRFICopIEN1cmxfbWVtZHVwKGNobGcsIGNobGdsZW4pOwotICBpZighZGlnZXN0LT5pbnB1dF90b2tlbikKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBkaWdlc3QtPmlucHV0X3Rva2VuX2xlbiA9IGNobGdsZW47Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi0vKgotICogQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nCi0gKiB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogcmVxdWVzdCBbaW5dICAgICAtIFRoZSBIVFRQIHJlcXVlc3QuCi0gKiB1cmlwYXRoIFtpbl0gICAgIC0gVGhlIHBhdGggb2YgdGhlIEhUVFAgdXJpLgotICogZGlnZXN0ICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp1cmlwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIHNpemVfdCB0b2tlbl9tYXg7Ci0gIENyZWRIYW5kbGUgY3JlZGVudGlhbHM7Ci0gIEN0eHRIYW5kbGUgY29udGV4dDsKLSAgY2hhciAqcmVzcDsKLSAgQllURSAqb3V0cHV0X3Rva2VuOwotICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7Ci0gIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZIGlkZW50aXR5OwotICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqcF9pZGVudGl0eTsKLSAgU2VjQnVmZmVyIGNobGdfYnVmWzNdOwotICBTZWNCdWZmZXIgcmVzcF9idWY7Ci0gIFNlY0J1ZmZlckRlc2MgY2hsZ19kZXNjOwotICBTZWNCdWZmZXJEZXNjIHJlc3BfZGVzYzsKLSAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKLSAgdW5zaWduZWQgbG9uZyBhdHRyczsKLSAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCi0KLSAgKHZvaWQpIGRhdGE7Ci0KLSAgLyogUXVlcnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgZm9yIERpZ2VzdFNTUCAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKLSAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQotICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47Ci0KLSAgdG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOwotCi0gIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCi0gIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOwotCi0gIC8qIEFsbG9jYXRlIHRoZSBvdXRwdXQgYnVmZmVyIGFjY29yZGluZyB0byB0aGUgbWF4IHRva2VuIHNpemUgYXMgaW5kaWNhdGVkCi0gICAgIGJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlICovCi0gIG91dHB1dF90b2tlbiA9IG1hbGxvYyh0b2tlbl9tYXgpOwotICBpZighb3V0cHV0X3Rva2VuKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIGlmKHVzZXJwICYmICp1c2VycCkgewotICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICBpZihDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXJwLCBwYXNzd2RwLCAmaWRlbnRpdHkpKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgZG9tYWluICovCi0gICAgaWYoQ3VybF9vdmVycmlkZV9zc3BpX2h0dHBfcmVhbG0oKGNvbnN0IGNoYXIqKWRpZ2VzdC0+aW5wdXRfdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkZW50aXR5KSkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgIHBfaWRlbnRpdHkgPSAmaWRlbnRpdHk7Ci0gIH0KLSAgZWxzZQotICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KLSAgICBwX2lkZW50aXR5ID0gTlVMTDsKLQotICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2lkZW50aXR5LCBOVUxMLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVkZW50aWFscywgJmV4cGlyeSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKLQotICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0gIH0KLQotICAvKiBTZXR1cCB0aGUgY2hhbGxlbmdlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyIGlmIHByZXNlbnQgKi8KLSAgY2hsZ19kZXNjLnVsVmVyc2lvbiAgICA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICBjaGxnX2Rlc2MuY0J1ZmZlcnMgICAgID0gMzsKLSAgY2hsZ19kZXNjLnBCdWZmZXJzICAgICA9IGNobGdfYnVmOwotICBjaGxnX2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICBjaGxnX2J1ZlswXS5wdkJ1ZmZlciAgID0gZGlnZXN0LT5pbnB1dF90b2tlbjsKLSAgY2hsZ19idWZbMF0uY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChkaWdlc3QtPmlucHV0X3Rva2VuX2xlbik7Ci0gIGNobGdfYnVmWzFdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfUEtHX1BBUkFNUzsKLSAgY2hsZ19idWZbMV0ucHZCdWZmZXIgICA9ICh2b2lkICopcmVxdWVzdDsKLSAgY2hsZ19idWZbMV0uY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChzdHJsZW4oKGNvbnN0IGNoYXIgKikgcmVxdWVzdCkpOwotICBjaGxnX2J1ZlsyXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1BLR19QQVJBTVM7Ci0gIGNobGdfYnVmWzJdLnB2QnVmZmVyICAgPSBOVUxMOwotICBjaGxnX2J1ZlsyXS5jYkJ1ZmZlciAgID0gMDsKLQotICAvKiBTZXR1cCB0aGUgcmVzcG9uc2UgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIHJlc3BfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgcmVzcF9kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIHJlc3BfZGVzYy5wQnVmZmVycyAgPSAmcmVzcF9idWY7Ci0gIHJlc3BfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIHJlc3BfYnVmLnB2QnVmZmVyICAgPSBvdXRwdXRfdG9rZW47Ci0gIHJlc3BfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwodG9rZW5fbWF4KTsKLQotICAvKiBHZW5lcmF0ZSBvdXIgcmVwb25zZSBtZXNzYWdlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KCZjcmVkZW50aWFscywgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopIHVyaXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTQ19SRVFfVVNFX0hUVFBfU1RZTEUsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGxnX2Rlc2MsIDAsICZjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcF9kZXNjLCAmYXR0cnMsICZleHBpcnkpOwotCi0gIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKLSAgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKLSAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4oJmNyZWRlbnRpYWxzLCAmcmVzcF9kZXNjKTsKLSAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkgewotICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKLQotICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgcmVzcCA9IG1hbGxvYyhyZXNwX2J1Zi5jYkJ1ZmZlciArIDEpOwotICBpZighcmVzcCkgewotICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoJmNvbnRleHQpOwotICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKLQotICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogQ29weSB0aGUgZ2VuZXJhdGVkIHJlcG9uc2UgKi8KLSAgbWVtY3B5KHJlc3AsIHJlc3BfYnVmLnB2QnVmZmVyLCByZXNwX2J1Zi5jYkJ1ZmZlcik7Ci0gIHJlc3BbcmVzcF9idWYuY2JCdWZmZXJdID0gMHgwMDsKLQotICAvKiBSZXR1cm4gdGhlIHJlc3BvbnNlICovCi0gICpvdXRwdHIgPSByZXNwOwotICAqb3V0bGVuID0gcmVzcF9idWYuY2JCdWZmZXI7Ci0KLSAgLyogRnJlZSBvdXIgaGFuZGxlcyAqLwotICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KCZjb250ZXh0KTsKLSAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOwotCi0gIC8qIEZyZWUgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKLQotICAvKiBGcmVlIHRoZSByZXNwb25zZSBidWZmZXIgKi8KLSAgZnJlZShvdXRwdXRfdG9rZW4pOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cCgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBkaWdlc3Qgc3BlY2lmaWMgZGF0YS4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRpZ2VzdCAgICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KLSAqCi0gKi8KLXZvaWQgQ3VybF9zYXNsX2RpZ2VzdF9jbGVhbnVwKHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpCi17Ci0gIC8qIEZyZWUgdGhlIGlucHV0IHRva2VuICovCi0gIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5pbnB1dF90b2tlbik7Ci0KLSAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLwotICBkaWdlc3QtPmlucHV0X3Rva2VuX2xlbiA9IDA7Ci19Ci0jZW5kaWYgLyogIUNVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAqLwotCi0jaWYgZGVmaW5lZCBVU0VfTlRMTQotLyoKLSogQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoKQotKgotKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE5UTE0gdHlwZS0xIG1lc3NhZ2UgcmVhZHkgZm9yCi0qIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSoKLSogUGFyYW1ldGVyczoKLSoKLSogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgotKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBudGxtIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0qIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSoKLSogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7Ci0gIFNlY0J1ZmZlciB0eXBlXzFfYnVmOwotICBTZWNCdWZmZXJEZXNjIHR5cGVfMV9kZXNjOwotICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOwotICB1bnNpZ25lZCBsb25nIGF0dHJzOwotICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KLQotICAvKiBDbGVhbiB1cCBhbnkgZm9ybWVyIGxlZnRvdmVycyBhbmQgaW5pdGlhbGlzZSB0byBkZWZhdWx0cyAqLwotICBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKG50bG0pOwotCi0gIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBOVExNICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9OVExNKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKLSAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQotICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47Ci0KLSAgbnRsbS0+dG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOwotCi0gIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCi0gIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOwotCi0gIC8qIEFsbG9jYXRlIG91ciBvdXRwdXQgYnVmZmVyICovCi0gIG50bG0tPm91dHB1dF90b2tlbiA9IG1hbGxvYyhudGxtLT50b2tlbl9tYXgpOwotICBpZighbnRsbS0+b3V0cHV0X3Rva2VuKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIGlmKHVzZXJwICYmICp1c2VycCkgewotICAgIENVUkxjb2RlIHJlc3VsdDsKLQotICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICByZXN1bHQgPSBDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXJwLCBwYXNzd2RwLCAmbnRsbS0+aWRlbnRpdHkpOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAvKiBBbGxvdyBwcm9wZXIgY2xlYW51cCBvZiB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCi0gICAgbnRsbS0+cF9pZGVudGl0eSA9ICZudGxtLT5pZGVudGl0eTsKLSAgfQotICBlbHNlCi0gICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLwotICAgIG50bG0tPnBfaWRlbnRpdHkgPSBOVUxMOwotCi0gIC8qIEFsbG9jYXRlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgbnRsbS0+Y3JlZGVudGlhbHMgPSBtYWxsb2Moc2l6ZW9mKENyZWRIYW5kbGUpKTsKLSAgaWYoIW50bG0tPmNyZWRlbnRpYWxzKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIG1lbXNldChudGxtLT5jcmVkZW50aWFscywgMCwgc2l6ZW9mKENyZWRIYW5kbGUpKTsKLQotICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfTlRMTSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+cF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5jcmVkZW50aWFscywgJmV4cGlyeSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKLSAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotCi0gIC8qIEFsbG9jYXRlIG91ciBuZXcgY29udGV4dCBoYW5kbGUgKi8KLSAgbnRsbS0+Y29udGV4dCA9IG1hbGxvYyhzaXplb2YoQ3R4dEhhbmRsZSkpOwotICBpZighbnRsbS0+Y29udGV4dCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBtZW1zZXQobnRsbS0+Y29udGV4dCwgMCwgc2l6ZW9mKEN0eHRIYW5kbGUpKTsKLQotICAvKiBTZXR1cCB0aGUgdHlwZS0xICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICB0eXBlXzFfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgdHlwZV8xX2Rlc2MuY0J1ZmZlcnMgID0gMTsKLSAgdHlwZV8xX2Rlc2MucEJ1ZmZlcnMgID0gJnR5cGVfMV9idWY7Ci0gIHR5cGVfMV9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgdHlwZV8xX2J1Zi5wdkJ1ZmZlciAgID0gbnRsbS0+b3V0cHV0X3Rva2VuOwotICB0eXBlXzFfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobnRsbS0+dG9rZW5fbWF4KTsKLQotICAvKiBHZW5lcmF0ZSBvdXIgdHlwZS0xIG1lc3NhZ2UgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQobnRsbS0+Y3JlZGVudGlhbHMsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU0VDVVJJVFlfTkVUV09SS19EUkVQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5jb250ZXh0LCAmdHlwZV8xX2Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdHRycywgJmV4cGlyeSk7Ci0gIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKLSAgICBzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKQotICAgIHNfcFNlY0ZuLT5Db21wbGV0ZUF1dGhUb2tlbihudGxtLT5jb250ZXh0LCAmdHlwZV8xX2Rlc2MpOwotICBlbHNlIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKQotICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCi0gIHJldHVybiBDdXJsX2Jhc2U2NF9lbmNvZGUoTlVMTCwgKGNoYXIgKikgbnRsbS0+b3V0cHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfMV9idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKLX0KLQotLyoKLSogQ3VybF9zYXNsX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2UoKQotKgotKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMiBtZXNzYWdlLgotKgotKiBQYXJhbWV0ZXJzOgotKgotKiBkYXRhICAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSogdHlwZTJtc2cgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgdHlwZS0yIG1lc3NhZ2UuCi0qIG50bG0gICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0qCi0qIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSovCi1DVVJMY29kZSBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUybXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgdW5zaWduZWQgY2hhciAqdHlwZTIgPSBOVUxMOwotICBzaXplX3QgdHlwZTJfbGVuID0gMDsKLQotI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKLSAgKHZvaWQpIGRhdGE7Ci0jZW5kaWYKLQotICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCB0eXBlLTIgbWVzc2FnZSAqLwotICBpZihzdHJsZW4odHlwZTJtc2cpICYmICp0eXBlMm1zZyAhPSAnPScpIHsKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUodHlwZTJtc2csICZ0eXBlMiwgJnR5cGUyX2xlbik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHlwZS0yIG1lc3NhZ2UgKi8KLSAgaWYoIXR5cGUyKSB7Ci0gICAgaW5mb2YoZGF0YSwgIk5UTE0gaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHR5cGUtMiBtZXNzYWdlKVxuIik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBTaW1wbHkgc3RvcmUgdGhlIGNoYWxsZW5nZSBmb3IgdXNlIGxhdGVyICovCi0gIG50bG0tPmlucHV0X3Rva2VuID0gdHlwZTI7Ci0gIG50bG0tPmlucHV0X3Rva2VuX2xlbiA9IHR5cGUyX2xlbjsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKgotKiBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZSgpCi0qCi0qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTMgbWVzc2FnZSByZWFkeSBmb3IKLSogc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotKgotKiBQYXJhbWV0ZXJzOgotKgotKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCi0qIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0qIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotKgotKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0qLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIFNlY0J1ZmZlciB0eXBlXzJfYnVmOwotICBTZWNCdWZmZXIgdHlwZV8zX2J1ZjsKLSAgU2VjQnVmZmVyRGVzYyB0eXBlXzJfZGVzYzsKLSAgU2VjQnVmZmVyRGVzYyB0eXBlXzNfZGVzYzsKLSAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKLSAgdW5zaWduZWQgbG9uZyBhdHRyczsKLSAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCi0KLSAgKHZvaWQpIHBhc3N3ZHA7Ci0gICh2b2lkKSB1c2VycDsKLQotICAvKiBTZXR1cCB0aGUgdHlwZS0yICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIHR5cGVfMl9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICB0eXBlXzJfZGVzYy5jQnVmZmVycyAgPSAxOwotICB0eXBlXzJfZGVzYy5wQnVmZmVycyAgPSAmdHlwZV8yX2J1ZjsKLSAgdHlwZV8yX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICB0eXBlXzJfYnVmLnB2QnVmZmVyICAgPSBudGxtLT5pbnB1dF90b2tlbjsKLSAgdHlwZV8yX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG50bG0tPmlucHV0X3Rva2VuX2xlbik7Ci0KLSAgLyogU2V0dXAgdGhlIHR5cGUtMyAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KLSAgdHlwZV8zX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHR5cGVfM19kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIHR5cGVfM19kZXNjLnBCdWZmZXJzICA9ICZ0eXBlXzNfYnVmOwotICB0eXBlXzNfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIHR5cGVfM19idWYucHZCdWZmZXIgICA9IG50bG0tPm91dHB1dF90b2tlbjsKLSAgdHlwZV8zX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG50bG0tPnRva2VuX21heCk7Ci0KLSAgLyogR2VuZXJhdGUgb3VyIHR5cGUtMyBtZXNzYWdlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KG50bG0tPmNyZWRlbnRpYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVCgiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFNFQ1VSSVRZX05FVFdPUktfRFJFUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGVfMl9kZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBudGxtLT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZV8zX2Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdHRycywgJmV4cGlyeSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIGluZm9mKGRhdGEsICJOVExNIGhhbmRzaGFrZSBmYWlsdXJlICh0eXBlLTMgbWVzc2FnZSk6IFN0YXR1cz0leFxuIiwKLSAgICAgICAgICBzdGF0dXMpOwotCi0gICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7Ci0gIH0KLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKikgbnRsbS0+b3V0cHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV8zX2J1Zi5jYkJ1ZmZlciwgb3V0cHRyLCBvdXRsZW4pOwotCi0gIEN1cmxfc2FzbF9udGxtX2NsZWFudXAobnRsbSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgbnRsbSBzcGVjaWZpYyBkYXRhLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBudGxtIGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCi0gKgotICovCi12b2lkIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoc3RydWN0IG50bG1kYXRhICpudGxtKQotewotICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCi0gIGlmKG50bG0tPmNvbnRleHQpIHsKLSAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KG50bG0tPmNvbnRleHQpOwotICAgIGZyZWUobnRsbS0+Y29udGV4dCk7Ci0gICAgbnRsbS0+Y29udGV4dCA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgaWYobnRsbS0+Y3JlZGVudGlhbHMpIHsKLSAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKG50bG0tPmNyZWRlbnRpYWxzKTsKLSAgICBmcmVlKG50bG0tPmNyZWRlbnRpYWxzKTsKLSAgICBudGxtLT5jcmVkZW50aWFscyA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBpZGVudGl0eSAqLwotICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShudGxtLT5wX2lkZW50aXR5KTsKLSAgbnRsbS0+cF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgLyogRnJlZSB0aGUgaW5wdXQgYW5kIG91dHB1dCB0b2tlbnMgKi8KLSAgQ3VybF9zYWZlZnJlZShudGxtLT5pbnB1dF90b2tlbik7Ci0gIEN1cmxfc2FmZWZyZWUobnRsbS0+b3V0cHV0X3Rva2VuKTsKLQotICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCi0gIG50bG0tPnRva2VuX21heCA9IDA7Ci19Ci0jZW5kaWYgLyogVVNFX05UTE0gKi8KLQotI2lmIGRlZmluZWQoVVNFX0tFUkJFUk9TNSkKLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgdXNlciB0b2tlbgotICogbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB1c2VycCAgICAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgotICogcGFzc2R3cCAgICAgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgd3d3LCBzbXRwLCBwb3Agb3IgaW1hcC4KLSAqIG11dHVhbF9hdXRoIFtpbl0gICAgIC0gRmxhZyBzcGVjaWZpbmcgd2hldGhlciBvciBub3QgbXV0dWFsIGF1dGhlbnRpY2F0aW9uCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQuCi0gKiBjaGxnNjQgICAgICBbaW5dICAgICAtIFRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIGtyYjUgICAgICAgIFtpbi9vdXRdIC0gVGhlIGdzc2FwaSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KLSAqIG91dHB0ciAgICAgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgICAgIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgbXV0dWFsX2F1dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc2l6ZV90IGNobGdsZW4gPSAwOwotICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKLSAgQ3R4dEhhbmRsZSBjb250ZXh0OwotICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7Ci0gIFNlY0J1ZmZlciBjaGxnX2J1ZjsKLSAgU2VjQnVmZmVyIHJlc3BfYnVmOwotICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKLSAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7Ci0gIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7Ci0gIHVuc2lnbmVkIGxvbmcgYXR0cnM7Ci0gIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLwotCi0gIGlmKCFrcmI1LT5jcmVkZW50aWFscykgewotICAgIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBLZXJiZXJvcyAqLwotICAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUKFNQX05BTUVfS0VSQkVST1MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7Ci0gICAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7Ci0gICAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOwotICAgIH0KLQotICAgIGtyYjUtPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKLQotICAgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCi0gICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7Ci0KLSAgICAvKiBBbGxvY2F0ZSBvdXIgcmVzcG9uc2UgYnVmZmVyICovCi0gICAga3JiNS0+b3V0cHV0X3Rva2VuID0gbWFsbG9jKGtyYjUtPnRva2VuX21heCk7Ci0gICAgaWYoIWtyYjUtPm91dHB1dF90b2tlbikKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLwotICAgIGtyYjUtPnNwbiA9IEN1cmxfc2FzbF9idWlsZF9zcG4oc2VydmljZSwgZGF0YS0+ZWFzeV9jb25uLT5ob3N0Lm5hbWUpOwotICAgIGlmKCFrcmI1LT5zcG4pCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIGlmKHVzZXJwICYmICp1c2VycCkgewotICAgICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJmtyYjUtPmlkZW50aXR5KTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgICAga3JiNS0+cF9pZGVudGl0eSA9ICZrcmI1LT5pZGVudGl0eTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLwotICAgICAga3JiNS0+cF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgICAvKiBBbGxvY2F0ZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gICAga3JiNS0+Y3JlZGVudGlhbHMgPSBtYWxsb2Moc2l6ZW9mKENyZWRIYW5kbGUpKTsKLSAgICBpZigha3JiNS0+Y3JlZGVudGlhbHMpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIG1lbXNldChrcmI1LT5jcmVkZW50aWFscywgMCwgc2l6ZW9mKENyZWRIYW5kbGUpKTsKLQotICAgIC8qIEFjcXVpcmUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLwotICAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVYVChTUF9OQU1FX0tFUkJFUk9TKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JiNS0+cF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPmNyZWRlbnRpYWxzLCAmZXhwaXJ5KTsKLSAgICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCi0gICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotCi0gICAgLyogQWxsb2NhdGUgb3VyIG5ldyBjb250ZXh0IGhhbmRsZSAqLwotICAgIGtyYjUtPmNvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKEN0eHRIYW5kbGUpKTsKLSAgICBpZigha3JiNS0+Y29udGV4dCkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgbWVtc2V0KGtyYjUtPmNvbnRleHQsIDAsIHNpemVvZihDdHh0SGFuZGxlKSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgICBpZihzdHJsZW4oY2hsZzY0KSAmJiAqY2hsZzY0ICE9ICc9JykgewotICAgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmNobGcsICZjaGxnbGVuKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gICAgaWYoIWNobGcpIHsKLSAgICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IGNoYWxsZW5nZSBtZXNzYWdlKVxuIik7Ci0KLSAgICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgICB9Ci0KLSAgICAvKiBTZXR1cCB0aGUgY2hhbGxlbmdlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gICAgY2hsZ19kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICAgIGNobGdfZGVzYy5jQnVmZmVycyAgPSAxOwotICAgIGNobGdfZGVzYy5wQnVmZmVycyAgPSAmY2hsZ19idWY7Ci0gICAgY2hsZ19idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgICBjaGxnX2J1Zi5wdkJ1ZmZlciAgID0gY2hsZzsKLSAgICBjaGxnX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKGNobGdsZW4pOwotICB9Ci0KLSAgLyogU2V0dXAgdGhlIHJlc3BvbnNlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICByZXNwX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHJlc3BfZGVzYy5jQnVmZmVycyAgPSAxOwotICByZXNwX2Rlc2MucEJ1ZmZlcnMgID0gJnJlc3BfYnVmOwotICByZXNwX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICByZXNwX2J1Zi5wdkJ1ZmZlciAgID0ga3JiNS0+b3V0cHV0X3Rva2VuOwotICByZXNwX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKGtyYjUtPnRva2VuX21heCk7Ci0KLSAgLyogR2VuZXJhdGUgb3VyIGNoYWxsZW5nZS1yZXNwb25zZSBtZXNzYWdlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KGtyYjUtPmNyZWRlbnRpYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGxnID8ga3JiNS0+Y29udGV4dCA6IE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPnNwbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG11dHVhbF9hdXRoID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0NfUkVRX01VVFVBTF9BVVRIIDogMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFNFQ1VSSVRZX05BVElWRV9EUkVQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGxnID8gJmNobGdfZGVzYyA6IE5VTEwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcF9kZXNjLCAmYXR0cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHBpcnkpOwotCi0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKSB7Ci0gICAgZnJlZShjaGxnKTsKLQotICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwotICB9Ci0KLSAgaWYobWVtY21wKCZjb250ZXh0LCBrcmI1LT5jb250ZXh0LCBzaXplb2YoY29udGV4dCkpKSB7Ci0gICAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dChrcmI1LT5jb250ZXh0KTsKLQotICAgIG1lbWNweShrcmI1LT5jb250ZXh0LCAmY29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKLSAgfQotCi0gIGlmKHJlc3BfYnVmLmNiQnVmZmVyKSB7Ci0gICAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKilyZXNwX2J1Zi5wdkJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKLSAgfQotCi0gIC8qIEZyZWUgdGhlIGRlY29kZWQgY2hhbGxlbmdlICovCi0gIGZyZWUoY2hsZyk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgc2VjdXJpdHkKLSAqIHRva2VuIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiBjaGxnNjQgIFtpbl0gICAgIC0gVGhlIG9wdGlvbmFsIGJhc2U2NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlLgotICoga3JiNSAgICBbaW4vb3V0XSAtIFRoZSBnc3NhcGkgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgc2l6ZV90IGNobGdsZW4gPSAwOwotICBzaXplX3QgbWVzc2FnZWxlbiA9IDA7Ci0gIHNpemVfdCBhcHBkYXRhbGVuID0gMDsKLSAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIgKnRyYWlsZXIgPSBOVUxMOwotICB1bnNpZ25lZCBjaGFyICptZXNzYWdlID0gTlVMTDsKLSAgdW5zaWduZWQgY2hhciAqcGFkZGluZyA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIgKmFwcGRhdGEgPSBOVUxMOwotICBTZWNCdWZmZXIgaW5wdXRfYnVmWzJdOwotICBTZWNCdWZmZXIgd3JhcF9idWZbM107Ci0gIFNlY0J1ZmZlckRlc2MgaW5wdXRfZGVzYzsKLSAgU2VjQnVmZmVyRGVzYyB3cmFwX2Rlc2M7Ci0gIHVuc2lnbmVkIGxvbmcgaW5kYXRhID0gMDsKLSAgdW5zaWduZWQgbG9uZyBvdXRkYXRhID0gMDsKLSAgdW5zaWduZWQgbG9uZyBxb3AgPSAwOwotICB1bnNpZ25lZCBsb25nIHNlY19sYXllciA9IDA7Ci0gIHVuc2lnbmVkIGxvbmcgbWF4X3NpemUgPSAwOwotICBTZWNQa2dDb250ZXh0X1NpemVzIHNpemVzOwotICBTZWNQa2dDcmVkZW50aWFsc19OYW1lcyBuYW1lczsKLSAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKLSAgY2hhciAqdXNlcl9uYW1lOwotCi0gIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGlucHV0IG1lc3NhZ2UgKi8KLSAgaWYoc3RybGVuKGNobGc2NCkgJiYgKmNobGc2NCAhPSAnPScpIHsKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gIGlmKCFjaGxnKSB7Ci0gICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgc2VjdXJpdHkgbWVzc2FnZSlcbiIpOwotCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgLyogR2V0IG91ciByZXNwb25zZSBzaXplIGluZm9ybWF0aW9uICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeUNvbnRleHRBdHRyaWJ1dGVzKGtyYjUtPmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19BVFRSX1NJWkVTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZXMpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBmcmVlKGNobGcpOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBHZXQgdGhlIGZ1bGx5IHF1YWxpZmllZCB1c2VybmFtZSBiYWNrIGZyb20gdGhlIGNvbnRleHQgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5Q3JlZGVudGlhbHNBdHRyaWJ1dGVzKGtyYjUtPmNyZWRlbnRpYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfQVRUUl9OQU1FUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lcyk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIGZyZWUoY2hsZyk7Ci0KLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKLSAgfQotCi0gIC8qIFNldHVwIHRoZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICBpbnB1dF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICBpbnB1dF9kZXNjLmNCdWZmZXJzID0gMjsKLSAgaW5wdXRfZGVzYy5wQnVmZmVycyA9IGlucHV0X2J1ZjsKLSAgaW5wdXRfYnVmWzBdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfU1RSRUFNOwotICBpbnB1dF9idWZbMF0ucHZCdWZmZXIgPSBjaGxnOwotICBpbnB1dF9idWZbMF0uY2JCdWZmZXIgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7Ci0gIGlucHV0X2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX0RBVEE7Ci0gIGlucHV0X2J1ZlsxXS5wdkJ1ZmZlciA9IE5VTEw7Ci0gIGlucHV0X2J1ZlsxXS5jYkJ1ZmZlciA9IDA7Ci0KLSAgLyogRGVjcnlwdCB0aGUgaW5ib3VuZCBjaGFsbGVuZ2UgYW5kIG9idGFpbiB0aGUgcW9wICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5EZWNyeXB0TWVzc2FnZShrcmI1LT5jb250ZXh0LCAmaW5wdXRfZGVzYywgMCwgJnFvcCk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHNlY3VyaXR5IG1lc3NhZ2UpXG4iKTsKLQotICAgIGZyZWUoY2hsZyk7Ci0KLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBOb3QgNCBvY3RldHMgbG9uZyBzbyBmYWlsIGFzIHBlciBSRkM0NzUyIFNlY3Rpb24gMy4xICovCi0gIGlmKGlucHV0X2J1ZlsxXS5jYkJ1ZmZlciAhPSA0KSB7Ci0gICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoaW52YWxpZCBzZWN1cml0eSBkYXRhKVxuIik7Ci0KLSAgICBmcmVlKGNobGcpOwotCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgLyogQ29weSB0aGUgZGF0YSBvdXQgYW5kIGZyZWUgdGhlIGNoYWxsZW5nZSBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICBtZW1jcHkoJmluZGF0YSwgaW5wdXRfYnVmWzFdLnB2QnVmZmVyLCA0KTsKLSAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKGlucHV0X2J1ZlsxXS5wdkJ1ZmZlcik7Ci0gIGZyZWUoY2hsZyk7Ci0KLSAgLyogRXh0cmFjdCB0aGUgc2VjdXJpdHkgbGF5ZXIgKi8KLSAgc2VjX2xheWVyID0gaW5kYXRhICYgMHgwMDAwMDBGRjsKLSAgaWYoIShzZWNfbGF5ZXIgJiBLRVJCX1dSQVBfTk9fRU5DUllQVCkpIHsKLSAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChpbnZhbGlkIHNlY3VyaXR5IGxheWVyKVxuIik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBFeHRyYWN0IHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB0aGUgc2VydmVyIGNhbiByZWNlaXZlICovCi0gIG1heF9zaXplID0gbnRvaGwoaW5kYXRhICYgMHhGRkZGRkYwMCk7Ci0gIGlmKG1heF9zaXplID4gMCkgewotICAgIC8qIFRoZSBzZXJ2ZXIgaGFzIHRvbGQgdXMgaXQgc3VwcG9ydHMgYSBtYXhpbXVtIHJlY2VpdmUgYnVmZmVyLCBob3dldmVyLCBhcwotICAgICAgIHdlIGRvbid0IHJlcXVpcmUgb25lIHVubGVzcyB3ZSBhcmUgZW5jcnlwdGluZyBkYXRhLCB3ZSB0ZWxsIHRoZSBzZXJ2ZXIKLSAgICAgICBvdXIgcmVjZWl2ZSBidWZmZXIgaXMgemVyby4gKi8KLSAgICBtYXhfc2l6ZSA9IDA7Ci0gIH0KLQotICAvKiBBbGxvY2F0ZSB0aGUgdHJhaWxlciAqLwotICB0cmFpbGVyID0gbWFsbG9jKHNpemVzLmNiU2VjdXJpdHlUcmFpbGVyKTsKLSAgaWYoIXRyYWlsZXIpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgLyogQ29udmVydCB0aGUgdXNlciBuYW1lIHRvIFVURjggd2hlbiBvcGVyYXRpbmcgd2l0aCBVbmljb2RlICovCi0gIHVzZXJfbmFtZSA9IEN1cmxfY29udmVydF90Y2hhcl90b19VVEY4KG5hbWVzLnNVc2VyTmFtZSk7Ci0gIGlmKCF1c2VyX25hbWUpIHsKLSAgICBmcmVlKHRyYWlsZXIpOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBBbGxvY2F0ZSBvdXIgbWVzc2FnZSAqLwotICBtZXNzYWdlbGVuID0gc2l6ZW9mKG91dGRhdGEpICsgc3RybGVuKHVzZXJfbmFtZSkgKyAxOwotICBtZXNzYWdlID0gbWFsbG9jKG1lc3NhZ2VsZW4pOwotICBpZighbWVzc2FnZSkgewotICAgIGZyZWUodHJhaWxlcik7Ci0gICAgQ3VybF91bmljb2RlZnJlZSh1c2VyX25hbWUpOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBQb3B1bGF0ZSB0aGUgbWVzc2FnZSB3aXRoIHRoZSBzZWN1cml0eSBsYXllciwgY2xpZW50IHN1cHBvcnRlZCByZWNlaXZlCi0gICAgIG1lc3NhZ2Ugc2l6ZSBhbmQgYXV0aG9yaXphdGlvbiBpZGVudGl0eSBpbmNsdWRpbmcgdGhlIDB4MDAgYmFzZWQKLSAgICAgdGVybWluYXRvci4gTm90ZTogRGlzcGl0ZSBSRkM0NzUyIFNlY3Rpb24gMy4xIHN0YXRpbmcgIlRoZSBhdXRob3JpemF0aW9uCi0gICAgIGlkZW50aXR5IGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggdGhlIHplcm8tdmFsdWVkICgleDAwKSBvY3RldC4iIGl0IHNlZW1zCi0gICAgIG5lY2Vzc2FyeSB0byBpbmNsdWRlIGl0LiAqLwotICBvdXRkYXRhID0gaHRvbmwobWF4X3NpemUpIHwgc2VjX2xheWVyOwotICBtZW1jcHkobWVzc2FnZSwgJm91dGRhdGEsIHNpemVvZihvdXRkYXRhKSk7Ci0gIHN0cmNweSgoY2hhciAqKSBtZXNzYWdlICsgc2l6ZW9mKG91dGRhdGEpLCB1c2VyX25hbWUpOwotICBDdXJsX3VuaWNvZGVmcmVlKHVzZXJfbmFtZSk7Ci0KLSAgLyogQWxsb2NhdGUgdGhlIHBhZGRpbmcgKi8KLSAgcGFkZGluZyA9IG1hbGxvYyhzaXplcy5jYkJsb2NrU2l6ZSk7Ci0gIGlmKCFwYWRkaW5nKSB7Ci0gICAgZnJlZShtZXNzYWdlKTsKLSAgICBmcmVlKHRyYWlsZXIpOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBTZXR1cCB0aGUgImF1dGhlbnRpY2F0aW9uIGRhdGEiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICB3cmFwX2Rlc2MudWxWZXJzaW9uICAgID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHdyYXBfZGVzYy5jQnVmZmVycyAgICAgPSAzOwotICB3cmFwX2Rlc2MucEJ1ZmZlcnMgICAgID0gd3JhcF9idWY7Ci0gIHdyYXBfYnVmWzBdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIHdyYXBfYnVmWzBdLnB2QnVmZmVyICAgPSB0cmFpbGVyOwotICB3cmFwX2J1ZlswXS5jYkJ1ZmZlciAgID0gc2l6ZXMuY2JTZWN1cml0eVRyYWlsZXI7Ci0gIHdyYXBfYnVmWzFdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfREFUQTsKLSAgd3JhcF9idWZbMV0ucHZCdWZmZXIgICA9IG1lc3NhZ2U7Ci0gIHdyYXBfYnVmWzFdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobWVzc2FnZWxlbik7Ci0gIHdyYXBfYnVmWzJdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfUEFERElORzsKLSAgd3JhcF9idWZbMl0ucHZCdWZmZXIgICA9IHBhZGRpbmc7Ci0gIHdyYXBfYnVmWzJdLmNiQnVmZmVyICAgPSBzaXplcy5jYkJsb2NrU2l6ZTsKLQotICAvKiBFbmNyeXB0IHRoZSBkYXRhICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5FbmNyeXB0TWVzc2FnZShrcmI1LT5jb250ZXh0LCBLRVJCX1dSQVBfTk9fRU5DUllQVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cmFwX2Rlc2MsIDApOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBmcmVlKHBhZGRpbmcpOwotICAgIGZyZWUobWVzc2FnZSk7Ci0gICAgZnJlZSh0cmFpbGVyKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogQWxsb2NhdGUgdGhlIGVuY3J5cHRpb24gKHdyYXApIGJ1ZmZlciAqLwotICBhcHBkYXRhbGVuID0gd3JhcF9idWZbMF0uY2JCdWZmZXIgKyB3cmFwX2J1ZlsxXS5jYkJ1ZmZlciArCi0gICAgICAgICAgICAgICB3cmFwX2J1ZlsyXS5jYkJ1ZmZlcjsKLSAgYXBwZGF0YSA9IG1hbGxvYyhhcHBkYXRhbGVuKTsKLSAgaWYoIWFwcGRhdGEpIHsKLSAgICBmcmVlKHBhZGRpbmcpOwotICAgIGZyZWUobWVzc2FnZSk7Ci0gICAgZnJlZSh0cmFpbGVyKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogUG9wdWxhdGUgdGhlIGVuY3J5cHRpb24gYnVmZmVyICovCi0gIG1lbWNweShhcHBkYXRhLCB3cmFwX2J1ZlswXS5wdkJ1ZmZlciwgd3JhcF9idWZbMF0uY2JCdWZmZXIpOwotICBvZmZzZXQgKz0gd3JhcF9idWZbMF0uY2JCdWZmZXI7Ci0gIG1lbWNweShhcHBkYXRhICsgb2Zmc2V0LCB3cmFwX2J1ZlsxXS5wdkJ1ZmZlciwgd3JhcF9idWZbMV0uY2JCdWZmZXIpOwotICBvZmZzZXQgKz0gd3JhcF9idWZbMV0uY2JCdWZmZXI7Ci0gIG1lbWNweShhcHBkYXRhICsgb2Zmc2V0LCB3cmFwX2J1ZlsyXS5wdkJ1ZmZlciwgd3JhcF9idWZbMl0uY2JCdWZmZXIpOwotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKWFwcGRhdGEsIGFwcGRhdGFsZW4sIG91dHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxlbik7Ci0KLSAgLyogRnJlZSBhbGwgb2Ygb3VyIGxvY2FsIGJ1ZmZlcnMgKi8KLSAgZnJlZShhcHBkYXRhKTsKLSAgZnJlZShwYWRkaW5nKTsKLSAgZnJlZShtZXNzYWdlKTsKLSAgZnJlZSh0cmFpbGVyKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKgotICogQ3VybF9zYXNsX2dzc2FwaV9jbGVhbnVwKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGdzc2FwaSBzcGVjaWZpYyBkYXRhLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICoga3JiNSAgICAgW2luL291dF0gLSBUaGUga2VyYmVyb3MgNSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgotICoKLSAqLwotdm9pZCBDdXJsX3Nhc2xfZ3NzYXBpX2NsZWFudXAoc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUpCi17Ci0gIC8qIEZyZWUgb3VyIHNlY3VyaXR5IGNvbnRleHQgKi8KLSAgaWYoa3JiNS0+Y29udGV4dCkgewotICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoa3JiNS0+Y29udGV4dCk7Ci0gICAgZnJlZShrcmI1LT5jb250ZXh0KTsKLSAgICBrcmI1LT5jb250ZXh0ID0gTlVMTDsKLSAgfQotCi0gIC8qIEZyZWUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLwotICBpZihrcmI1LT5jcmVkZW50aWFscykgewotICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoa3JiNS0+Y3JlZGVudGlhbHMpOwotICAgIGZyZWUoa3JiNS0+Y3JlZGVudGlhbHMpOwotICAgIGtyYjUtPmNyZWRlbnRpYWxzID0gTlVMTDsKLSAgfQotCi0gIC8qIEZyZWUgb3VyIGlkZW50aXR5ICovCi0gIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KGtyYjUtPnBfaWRlbnRpdHkpOwotICBrcmI1LT5wX2lkZW50aXR5ID0gTlVMTDsKLQotICAvKiBGcmVlIHRoZSBTUE4gYW5kIG91dHB1dCB0b2tlbiAqLwotICBDdXJsX3NhZmVmcmVlKGtyYjUtPnNwbik7Ci0gIEN1cmxfc2FmZWZyZWUoa3JiNS0+b3V0cHV0X3Rva2VuKTsKLQotICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCi0gIGtyYjUtPnRva2VuX21heCA9IDA7Ci19Ci0jZW5kaWYgLyogVVNFX0tFUkJFUk9TNSAqLwotCi0jZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAqLwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc2VjLmggYi9saWIvY3VybF9zZWMuaAppbmRleCA2YzQ4ZGEyLi4zZjk0ZTE0IDEwMDY0NAotLS0gYS9saWIvY3VybF9zZWMuaAorKysgYi9saWIvY3VybF9zZWMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3NldHVwLmggYi9saWIvY3VybF9zZXR1cC5oCmluZGV4IGRmOGIxZTcuLjI0MDAwYTUgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3NldHVwLmgKKysrIGIvbGliL2N1cmxfc2V0dXAuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE4MSw5ICsxODEsNiBAQAogIyAgaWZuZGVmIENVUkxfRElTQUJMRV9TTVRQCiAjICAgIGRlZmluZSBDVVJMX0RJU0FCTEVfU01UUAogIyAgZW5kaWYKLSMgIGlmbmRlZiBDVVJMX0RJU0FCTEVfUlRTUAotIyAgICBkZWZpbmUgQ1VSTF9ESVNBQkxFX1JUU1AKLSMgIGVuZGlmCiAjICBpZm5kZWYgQ1VSTF9ESVNBQkxFX1JUTVAKICMgICAgZGVmaW5lIENVUkxfRElTQUJMRV9SVE1QCiAjICBlbmRpZgpAQCAtMjQ5LDcgKzI0Niw3IEBACiAjICBpZmRlZiBIQVZFX1dJTlNPQ0syX0gKICMgICAgaW5jbHVkZSA8d2luc29jazIuaD4KICMgICAgaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICi0jICAgICAgIGluY2x1ZGUgPHdzMnRjcGlwLmg+CisjICAgICAgaW5jbHVkZSA8d3MydGNwaXAuaD4KICMgICAgZW5kaWYKICMgIGVsc2UKICMgICAgaWZkZWYgSEFWRV9XSU5TT0NLX0gKQEAgLTQ0OSw3ICs0NDYsNyBAQAogIyAgZW5kaWYKIAogIyAgaWZuZGVmIGZpbGVubyAvKiBzdW5vcyA0IGhhdmUgdGhpcyBhcyBhIG1hY3JvISAqLwotICAgICBpbnQgZmlsZW5vKCBGSUxFICpzdHJlYW0pOworICAgICBpbnQgZmlsZW5vKEZJTEUgKnN0cmVhbSk7CiAjICBlbmRpZgogCiAjZW5kaWYgLyogV0lOMzIgKi8KQEAgLTQ1Nyw5ICs0NTQsMTAgQEAKIC8qCiAgKiBtc3ZjIDYuMCByZXF1aXJlcyBQU0RLIGluIG9yZGVyIHRvIGhhdmUgSU5FVDZfQUREUlNUUkxFTgogICogZGVmaW5lZCBpbiB3czJ0Y3BpcC5oIGFzIHdlbGwgYXMgdG8gcHJvdmlkZSBJUHY2IHN1cHBvcnQuCisgKiBEb2VzIG5vdCBhcHBseSBpZiBsd0lQIGlzIHVzZWQuCiAgKi8KIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fUE9DQ19fKQorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fUE9DQ19fKSAmJiAhZGVmaW5lZChVU0VfTFdJUFNPQ0spCiAjICBpZiAhZGVmaW5lZChIQVZFX1dTMlRDUElQX0gpIHx8IFwKICAgICAgKChfTVNDX1ZFUiA8IDEzMDApICYmICFkZWZpbmVkKElORVQ2X0FERFJTVFJMRU4pKQogIyAgICB1bmRlZiBIQVZFX0dFVEFERFJJTkZPX1RIUkVBRFNBRkUKQEAgLTUwMyw2ICs1MDEsNyBAQAogIyAgZGVmaW5lIENVUkxSRVNfQVJFUwogLyogbm93IHVuZGVmIHRoZSBzdG9jayBsaWJjIGZ1bmN0aW9ucyBqdXN0IHRvIGF2b2lkIHRoZW0gYmVpbmcgdXNlZCAqLwogIyAgdW5kZWYgSEFWRV9HRVRBRERSSU5GTworIyAgdW5kZWYgSEFWRV9GUkVFQUREUklORk8KICMgIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRQogI2VsaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgfHwgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikKICMgIGRlZmluZSBDVVJMUkVTX0FTWU5DSApAQCAtNTczLDcgKzU3Miw3IEBACiAjZGVmaW5lIExJQklETl9SRVFVSVJFRF9WRVJTSU9OICIwLjQuMSIKIAogI2lmIGRlZmluZWQoVVNFX0dOVVRMUykgfHwgZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChVU0VfTlNTKSB8fCBcCi0gICAgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX0FYVExTKSB8fCBcCisgICAgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX0FYVExTKSB8fCBkZWZpbmVkKFVTRV9NQkVEVExTKSB8fCBcCiAgICAgZGVmaW5lZChVU0VfQ1lBU1NMKSB8fCBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkgfHwgXAogICAgIGRlZmluZWQoVVNFX0RBUldJTlNTTCkgfHwgZGVmaW5lZChVU0VfR1NLSVQpCiAjZGVmaW5lIFVTRV9TU0wgICAgLyogU1NMIHN1cHBvcnQgaGFzIGJlZW4gZW5hYmxlZCAqLwpAQCAtNTk3LDEzICs1OTYsOSBAQAogICAgIGRlZmluZWQoVVNFX0dOVVRMUykgfHwgZGVmaW5lZChVU0VfTlNTKSB8fCBkZWZpbmVkKFVTRV9EQVJXSU5TU0wpIHx8IFwKICAgICBkZWZpbmVkKFVTRV9PUzQwMENSWVBUTykgfHwgZGVmaW5lZChVU0VfV0lOMzJfQ1JZUFRPKQogCi0jaWZkZWYgSEFWRV9CT1JJTkdTU0wgLyogQm9yaW5nU1NMIGlzIG5vdCBOVExNIGNhcGFibGUgKi8KLSN1bmRlZiBVU0VfTlRMTQotI2Vsc2UKICNkZWZpbmUgVVNFX05UTE0KICNlbmRpZgogI2VuZGlmCi0jZW5kaWYKIAogLyogbm9uLWNvbmZpZ3VyZSBidWlsZHMgbWF5IGRlZmluZSBDVVJMX1dBTlRTX0NBX0JVTkRMRV9FTlYgKi8KICNpZiBkZWZpbmVkKENVUkxfV0FOVFNfQ0FfQlVORExFX0VOVikgJiYgIWRlZmluZWQoQ1VSTF9DQV9CVU5ETEUpCkBAIC02NDUsNyArNjQwLDcgQEAKICAqIEVuc3VyZSB0aGF0IFdpbnNvY2sgYW5kIGx3SVAgVENQL0lQIHN0YWNrcyBhcmUgbm90IG1peGVkLgogICovCiAKLSNpZiBkZWZpbmVkKF9fTFdJUF9PUFRfSF9fKQorI2lmIGRlZmluZWQoX19MV0lQX09QVF9IX18pIHx8IGRlZmluZWQoTFdJUF9IRFJfT1BUX0gpCiAjICBpZiBkZWZpbmVkKFNPQ0tFVCkgfHwgXAogICAgICBkZWZpbmVkKFVTRV9XSU5TT0NLKSB8fCBcCiAgICAgIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpIHx8IFwKQEAgLTY3Niw3ICs2NzEsNyBAQAogI2VuZGlmCiAKIC8qIEluIFdpbmRvd3MgdGhlIGRlZmF1bHQgZmlsZSBtb2RlIGlzIHRleHQgYnV0IGFuIGFwcGxpY2F0aW9uIGNhbiBvdmVycmlkZSBpdC4KLVRoZXJlZm9yZSB3ZSBzcGVjaWZ5IGl0IGV4cGxpY2l0bHkuIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9wdWxsLzI1OAorVGhlcmVmb3JlIHdlIHNwZWNpZnkgaXQgZXhwbGljaXRseS4gaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9wdWxsLzI1OAogKi8KICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKE1TRE9TKQogI2RlZmluZSBGT1BFTl9SRUFEVEVYVCAicnQiCkBAIC02OTUsNCArNjkwLDE5IEBACiAjZGVmaW5lIEZPUEVOX1dSSVRFVEVYVCAidyIKICNlbmRpZgogCisvKiBXaW5Tb2NrIGRlc3Ryb3lzIHJlY3YoKSBidWZmZXIgd2hlbiBzZW5kKCkgZmFpbGVkLgorICogRW5hYmxlZCBhdXRvbWF0aWNhbGx5IGZvciBXaW5kb3dzIGFuZCBmb3IgQ3lnd2luIGFzIEN5Z3dpbiBzb2NrZXRzIGFyZQorICogd3JhcHBlcnMgZm9yIFdpblNvY2sgc29ja2V0cy4gaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNjU3CisgKiBEZWZpbmUgRE9OVF9VU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EIHRvIGZvcmNlIGRpc2FibGUgd29ya2Fyb3VuZC4KKyAqLworI2lmICFkZWZpbmVkKERPTlRfVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCkKKyMgIGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKKyMgICAgZGVmaW5lIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQKKyMgIGVuZGlmCisjZWxzZSAgLyogRE9OVF9VU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EUyAqLworIyAgaWZkZWYgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORAorIyAgICB1bmRlZiBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5ECisjICBlbmRpZgorI2VuZGlmIC8qIERPTlRfVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORFMgKi8KKwogI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NFVFVQX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3NldHVwX29uY2UuaCBiL2xpYi9jdXJsX3NldHVwX29uY2UuaAppbmRleCA2OWQ2ZDQ3Li40ZGE4MzQ5IDEwMDY0NAotLS0gYS9saWIvY3VybF9zZXR1cF9vbmNlLmgKKysrIGIvbGliL2N1cmxfc2V0dXBfb25jZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc3NwaS5jIGIvbGliL2N1cmxfc3NwaS5jCmluZGV4IDQzZmNiNjMuLjU0YmJlZjYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3NzcGkuYworKysgYi9saWIvY3VybF9zc3BpLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSAiY3VybF9zc3BpLmgiCiAjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd2luMzIuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgogCiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCkBAIC05MywyOCArOTQsMzMgQEAKICAgICAgICBvc3Zlci5kd1BsYXRmb3JtSWQgPT0gcGxhdGZvcm1JZCkKICAgICAgIHNlY3VyaXR5RGxsID0gVFJVRTsKICNlbHNlCi0gICAgVUxPTkdMT05HIG1ham9yVmVyc2lvbk1hc2s7Ci0gICAgVUxPTkdMT05HIHBsYXRmb3JtSWRNYXNrOworICAgIFVMT05HTE9ORyBjbTsKICAgICBPU1ZFUlNJT05JTkZPRVggb3N2ZXI7CiAKICAgICBtZW1zZXQoJm9zdmVyLCAwLCBzaXplb2Yob3N2ZXIpKTsKICAgICBvc3Zlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKG9zdmVyKTsKICAgICBvc3Zlci5kd01ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvbjsKICAgICBvc3Zlci5kd1BsYXRmb3JtSWQgPSBwbGF0Zm9ybUlkOwotICAgIG1ham9yVmVyc2lvbk1hc2sgPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9NQUpPUlZFUlNJT04sIFZFUl9FUVVBTCk7Ci0gICAgcGxhdGZvcm1JZE1hc2sgPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9QTEFURk9STUlELCBWRVJfRVFVQUwpOworCisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9NQUpPUlZFUlNJT04sIFZFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfTUlOT1JWRVJTSU9OLCBWRVJfR1JFQVRFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfU0VSVklDRVBBQ0tNQUpPUiwgVkVSX0dSRUFURVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX1NFUlZJQ0VQQUNLTUlOT1IsIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9QTEFURk9STUlELCBWRVJfRVFVQUwpOwogCiAgICAgLyogVmVyaWZ5IHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciA9PSA0IGFuZCBwbGF0Zm9ybSBpZCA9PSBXSU5fTlQgKi8KLSAgICBpZihWZXJpZnlWZXJzaW9uSW5mbygmb3N2ZXIsIFZFUl9NQUpPUlZFUlNJT04sIG1ham9yVmVyc2lvbk1hc2spICYmCi0gICAgICAgVmVyaWZ5VmVyc2lvbkluZm8oJm9zdmVyLCBWRVJfUExBVEZPUk1JRCwgcGxhdGZvcm1JZE1hc2spKQorICAgIGlmKFZlcmlmeVZlcnNpb25JbmZvKCZvc3ZlciwgKFZFUl9NQUpPUlZFUlNJT04gfCBWRVJfTUlOT1JWRVJTSU9OIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJfU0VSVklDRVBBQ0tNQUpPUiB8IFZFUl9TRVJWSUNFUEFDS01JTk9SIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJfUExBVEZPUk1JRCksCisgICAgICAgICAgICAgICAgICAgICAgICAgY20pKQogICAgICAgc2VjdXJpdHlEbGwgPSBUUlVFOwogI2VuZGlmCiAKICAgICAvKiBMb2FkIFNTUEkgZGxsIGludG8gdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIGNhbGxpbmcgcHJvY2VzcyAqLwogICAgIGlmKHNlY3VyaXR5RGxsKQotICAgICAgc19oU2VjRGxsID0gTG9hZExpYnJhcnkoVEVYVCgic2VjdXJpdHkuZGxsIikpOworICAgICAgc19oU2VjRGxsID0gQ3VybF9sb2FkX2xpYnJhcnkoVEVYVCgic2VjdXJpdHkuZGxsIikpOwogICAgIGVsc2UKLSAgICAgIHNfaFNlY0RsbCA9IExvYWRMaWJyYXJ5KFRFWFQoInNlY3VyMzIuZGxsIikpOworICAgICAgc19oU2VjRGxsID0gQ3VybF9sb2FkX2xpYnJhcnkoVEVYVCgic2VjdXIzMi5kbGwiKSk7CiAgICAgaWYoIXNfaFNlY0RsbCkKICAgICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKIApAQCAtMjE5LDcgKzIyNSw3IEBACiAKICAgQ3VybF91bmljb2RlZnJlZSh1c2VyYW5kZG9tYWluLnRjaGFyX3B0cik7CiAKLSAgLyogU2V0dXAgbnRsbSBpZGVudGl0eSdzIHBhc3N3b3JkIGFuZCBsZW5ndGggKi8KKyAgLyogU2V0dXAgdGhlIGlkZW50aXR5J3MgcGFzc3dvcmQgYW5kIGxlbmd0aCAqLwogICBwYXNzd2QudGNoYXJfcHRyID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIoKGNoYXIgKilwYXNzd2RwKTsKICAgaWYoIXBhc3N3ZC50Y2hhcl9wdHIpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CmRpZmYgLS1naXQgYS9saWIvY3VybF9zc3BpLmggYi9saWIvY3VybF9zc3BpLmgKaW5kZXggODY1NTcxNS4uMmJiZjk0NyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfc3NwaS5oCisrKyBiL2xpYi9jdXJsX3NzcGkuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyNyw2ICszMjcsMTAgQEAKICMgZGVmaW5lIFNFQ19JX1NJR05BVFVSRV9ORUVERUQgICAgICAgICAgICAgICAoKEhSRVNVTFQpMHgwMDA5MDM1Q0wpCiAjZW5kaWYKIAorI2lmbmRlZiBDUllQVF9FX1JFVk9LRUQKKyMgZGVmaW5lIENSWVBUX0VfUkVWT0tFRCAgICAgICAgICAgICAgICAgICAgICAoKEhSRVNVTFQpMHg4MDA5MjAxMEwpCisjZW5kaWYKKwogI2lmZGVmIFVOSUNPREUKICMgIGRlZmluZSBTRUNGTEFHX1dJTk5UX0FVVEhfSURFTlRJVFkgXAogICAgICAodW5zaWduZWQgbG9uZylTRUNfV0lOTlRfQVVUSF9JREVOVElUWV9VTklDT0RFCmRpZmYgLS1naXQgYS9saWIvY3VybF90aHJlYWRzLmMgYi9saWIvY3VybF90aHJlYWRzLmMKaW5kZXggZjliODEyZS4uYzk4ZDhiYiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfdGhyZWFkcy5jCisrKyBiL2xpYi9jdXJsX3RocmVhZHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkKICMgIGlmZGVmIEhBVkVfUFRIUkVBRF9ICiAjICAgIGluY2x1ZGUgPHB0aHJlYWQuaD4KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3RocmVhZHMuaCBiL2xpYi9jdXJsX3RocmVhZHMuaAppbmRleCAwZjMxOTFhLi44Y2JhYzYzIDEwMDY0NAotLS0gYS9saWIvY3VybF90aHJlYWRzLmgKKysrIGIvbGliL2N1cmxfdGhyZWFkcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmx4LmggYi9saWIvY3VybHguaAppbmRleCA5NzllN2Q3Li40NDhhMzRmIDEwMDY0NAotLS0gYS9saWIvY3VybHguaAorKysgYi9saWIvY3VybHguaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9kaWN0LmMgYi9saWIvZGljdC5jCmluZGV4IDA2ZDc2OTkuLjJlN2NiNDcgMTAwNjQ0Ci0tLSBhL2xpYi9kaWN0LmMKKysrIGIvbGliL2RpY3QuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZGljdC5oIGIvbGliL2RpY3QuaAppbmRleCA0NGZkOWQ0Li4xMmMwZjMzIDEwMDY0NAotLS0gYS9saWIvZGljdC5oCisrKyBiL2xpYi9kaWN0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZG90ZG90LmMgYi9saWIvZG90ZG90LmMKaW5kZXggYWUxNjk0MS4uZWE3YzhhMCAxMDA2NDQKLS0tIGEvbGliL2RvdGRvdC5jCisrKyBiL2xpYi9kb3Rkb3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDE5ICsyMiwyMiBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaW5jbHVkZSAiZG90ZG90LmgiCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKKyNpbmNsdWRlICJkb3Rkb3QuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorCiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKgogICogIlJlbW92ZSBEb3QgU2VnbWVudHMiCi0gKiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQKKyAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQKICAqLwogCiAvKgogICogQ3VybF9kZWRvdGRvdGlmeSgpCisgKiBAdW5pdHRlc3Q6IDEzOTUKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGdldHMgYSB6ZXJvLXRlcm1pbmF0ZWQgcGF0aCB3aXRoIGRvdCBhbmQgZG90ZG90IHNlcXVlbmNlcwogICogcGFzc2VkIGluIGFuZCBzdHJpcHMgdGhlbSBvZmYgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBpbiBSRkMgMzk4NiBzZWN0aW9uCkBAIC02OCw2ICs3MSwxMiBAQAogICBvcmdjbG9uZSA9IGNsb25lOwogICBvdXRwdHIgPSBvdXQ7CiAKKyAgaWYoISpjbG9uZSkgeworICAgIC8qIHplcm8gbGVuZ3RoIHN0cmluZywgcmV0dXJuIHRoYXQgKi8KKyAgICBmcmVlKG91dCk7CisgICAgcmV0dXJuIGNsb25lOworICB9CisKICAgLyoKICAgICogVG8gaGFuZGxlIHF1ZXJ5LXBhcnRzIHByb3Blcmx5LCB3ZSBtdXN0IGZpbmQgaXQgYW5kIHJlbW92ZSBpdCBkdXJpbmcgdGhlCiAgICAqIGRvdGRvdC1vcGVyYXRpb24gYW5kIHRoZW4gYXBwZW5kIGl0IGFnYWluIGF0IHRoZSBlbmQgdG8gdGhlIG91dHB1dApkaWZmIC0tZ2l0IGEvbGliL2RvdGRvdC5oIGIvbGliL2RvdGRvdC5oCmluZGV4IGNkNTc4MjIuLmZhYzhlNmYgMTAwNjQ0Ci0tLSBhL2xpYi9kb3Rkb3QuaAorKysgYi9saWIvZG90ZG90LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZWFzeS5jIGIvbGliL2Vhc3kuYwppbmRleCAzMTZhY2IxLi5lYTdhZjVlIDEwMDY0NAotLS0gYS9saWIvZWFzeS5jCisrKyBiL2xpYi9lYXN5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02NCw3ICs2NCw2IEBACiAjaW5jbHVkZSAiZWFzeWlmLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAic2VuZGYuaCIgLyogZm9yIGZhaWxmIGZ1bmN0aW9uIHByb3RvdHlwZSAqLwotI2luY2x1ZGUgImN1cmxfbnRsbS5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIgLyogZm9yIEN1cmxfZ2V0Y29ubmVjdGluZm8gKi8KICNpbmNsdWRlICJzbGlzdC5oIgogI2luY2x1ZGUgImFtaWdhb3MuaCIKQEAgLTc0LDEyICs3MywxMyBAQAogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJzaWdwaXBlLmgiCiAjaW5jbHVkZSAic3NoLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAordm9pZCBDdXJsX3ZlcnNpb25faW5pdCh2b2lkKTsKKwogLyogd2luMzJfY2xlYW51cCgpIGlzIGZvciB3aW4zMiBzb2NrZXQgY2xlYW51cCBmdW5jdGlvbmFsaXR5LCB0aGUgb3Bwb3NpdGUKICAgIG9mIHdpbjMyX2luaXQoKSAqLwogc3RhdGljIHZvaWQgd2luMzJfY2xlYW51cCh2b2lkKQpAQCAtMTIwLDggKzEyMCw4IEBACiAgIC8qIHdWZXJzaW9uUmVxdWVzdGVkIGluIHdWZXJzaW9uLiB3SGlnaFZlcnNpb24gY29udGFpbnMgdGhlICovCiAgIC8qIGhpZ2hlc3Qgc3VwcG9ydGVkIHZlcnNpb24uICovCiAKLSAgaWYoTE9CWVRFKCB3c2FEYXRhLndWZXJzaW9uICkgIT0gTE9CWVRFKHdWZXJzaW9uUmVxdWVzdGVkKSB8fAotICAgICBISUJZVEUoIHdzYURhdGEud1ZlcnNpb24gKSAhPSBISUJZVEUod1ZlcnNpb25SZXF1ZXN0ZWQpICkgeworICBpZihMT0JZVEUod3NhRGF0YS53VmVyc2lvbikgIT0gTE9CWVRFKHdWZXJzaW9uUmVxdWVzdGVkKSB8fAorICAgICBISUJZVEUod3NhRGF0YS53VmVyc2lvbikgIT0gSElCWVRFKHdWZXJzaW9uUmVxdWVzdGVkKSApIHsKICAgICAvKiBUZWxsIHRoZSB1c2VyIHRoYXQgd2UgY291bGRuJ3QgZmluZCBhIHVzZWFibGUgKi8KIAogICAgIC8qIHdpbnNvY2suZGxsLiAqLwpAQCAtMjIwLDIwICsyMjAsMjIgQEAKICAqIGN1cmxfZ2xvYmFsX2luaXQoKSBnbG9iYWxseSBpbml0aWFsaXplcyBjVVJMIGdpdmVuIGEgYml0d2lzZSBzZXQgb2YgdGhlCiAgKiBkaWZmZXJlbnQgZmVhdHVyZXMgb2Ygd2hhdCB0byBpbml0aWFsaXplLgogICovCi1DVVJMY29kZSBjdXJsX2dsb2JhbF9pbml0KGxvbmcgZmxhZ3MpCitzdGF0aWMgQ1VSTGNvZGUgZ2xvYmFsX2luaXQobG9uZyBmbGFncywgYm9vbCBtZW1vcnlmdW5jcykKIHsKICAgaWYoaW5pdGlhbGl6ZWQrKykKICAgICByZXR1cm4gQ1VSTEVfT0s7CiAKLSAgLyogU2V0dXAgdGhlIGRlZmF1bHQgbWVtb3J5IGZ1bmN0aW9ucyBoZXJlIChhZ2FpbikgKi8KLSAgQ3VybF9jbWFsbG9jID0gKGN1cmxfbWFsbG9jX2NhbGxiYWNrKW1hbGxvYzsKLSAgQ3VybF9jZnJlZSA9IChjdXJsX2ZyZWVfY2FsbGJhY2spZnJlZTsKLSAgQ3VybF9jcmVhbGxvYyA9IChjdXJsX3JlYWxsb2NfY2FsbGJhY2spcmVhbGxvYzsKLSAgQ3VybF9jc3RyZHVwID0gKGN1cmxfc3RyZHVwX2NhbGxiYWNrKXN5c3RlbV9zdHJkdXA7Ci0gIEN1cmxfY2NhbGxvYyA9IChjdXJsX2NhbGxvY19jYWxsYmFjayljYWxsb2M7CisgIGlmKG1lbW9yeWZ1bmNzKSB7CisgICAgLyogU2V0dXAgdGhlIGRlZmF1bHQgbWVtb3J5IGZ1bmN0aW9ucyBoZXJlIChhZ2FpbikgKi8KKyAgICBDdXJsX2NtYWxsb2MgPSAoY3VybF9tYWxsb2NfY2FsbGJhY2spbWFsbG9jOworICAgIEN1cmxfY2ZyZWUgPSAoY3VybF9mcmVlX2NhbGxiYWNrKWZyZWU7CisgICAgQ3VybF9jcmVhbGxvYyA9IChjdXJsX3JlYWxsb2NfY2FsbGJhY2spcmVhbGxvYzsKKyAgICBDdXJsX2NzdHJkdXAgPSAoY3VybF9zdHJkdXBfY2FsbGJhY2spc3lzdGVtX3N0cmR1cDsKKyAgICBDdXJsX2NjYWxsb2MgPSAoY3VybF9jYWxsb2NfY2FsbGJhY2spY2FsbG9jOwogI2lmIGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoVU5JQ09ERSkKLSAgQ3VybF9jd2NzZHVwID0gKGN1cmxfd2NzZHVwX2NhbGxiYWNrKV93Y3NkdXA7CisgICAgQ3VybF9jd2NzZHVwID0gKGN1cmxfd2NzZHVwX2NhbGxiYWNrKV93Y3NkdXA7CiAjZW5kaWYKKyAgfQogCiAgIGlmKGZsYWdzICYgQ1VSTF9HTE9CQUxfU1NMKQogICAgIGlmKCFDdXJsX3NzbF9pbml0KCkpIHsKQEAgLTI3OSwxMSArMjgxLDIzIEBACiAgIGlmKGZsYWdzICYgQ1VSTF9HTE9CQUxfQUNLX0VJTlRSKQogICAgIEN1cmxfYWNrX2VpbnRyID0gMTsKIAotICBpbml0X2ZsYWdzICA9IGZsYWdzOworICBpbml0X2ZsYWdzID0gZmxhZ3M7CisKKyAgQ3VybF92ZXJzaW9uX2luaXQoKTsKIAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKKworLyoqCisgKiBjdXJsX2dsb2JhbF9pbml0KCkgZ2xvYmFsbHkgaW5pdGlhbGl6ZXMgY1VSTCBnaXZlbiBhIGJpdHdpc2Ugc2V0IG9mIHRoZQorICogZGlmZmVyZW50IGZlYXR1cmVzIG9mIHdoYXQgdG8gaW5pdGlhbGl6ZS4KKyAqLworQ1VSTGNvZGUgY3VybF9nbG9iYWxfaW5pdChsb25nIGZsYWdzKQoreworICByZXR1cm4gZ2xvYmFsX2luaXQoZmxhZ3MsIFRSVUUpOworfQorCiAvKgogICogY3VybF9nbG9iYWxfaW5pdF9tZW0oKSBnbG9iYWxseSBpbml0aWFsaXplcyBjVVJMIGFuZCBhbHNvIHJlZ2lzdGVycyB0aGUKICAqIHVzZXIgcHJvdmlkZWQgY2FsbGJhY2sgcm91dGluZXMuCkBAIC0yOTIsOCArMzA2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfZnJlZV9jYWxsYmFjayBmLCBjdXJsX3JlYWxsb2NfY2FsbGJhY2sgciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc3RyZHVwX2NhbGxiYWNrIHMsIGN1cmxfY2FsbG9jX2NhbGxiYWNrIGMpCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIEludmFsaWQgaW5wdXQsIHJldHVybiBpbW1lZGlhdGVseSAqLwogICBpZighbSB8fCAhZiB8fCAhciB8fCAhcyB8fCAhYykKICAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CkBAIC0zMDYsMTcgKzMxOCwxNiBAQAogICAgIHJldHVybiBDVVJMRV9PSzsKICAgfQogCi0gIC8qIENhbGwgdGhlIGFjdHVhbCBpbml0IGZ1bmN0aW9uIGZpcnN0ICovCi0gIHJlc3VsdCA9IGN1cmxfZ2xvYmFsX2luaXQoZmxhZ3MpOwotICBpZighcmVzdWx0KSB7Ci0gICAgQ3VybF9jbWFsbG9jID0gbTsKLSAgICBDdXJsX2NmcmVlID0gZjsKLSAgICBDdXJsX2NzdHJkdXAgPSBzOwotICAgIEN1cmxfY3JlYWxsb2MgPSByOwotICAgIEN1cmxfY2NhbGxvYyA9IGM7Ci0gIH0KKyAgLyogc2V0IG1lbW9yeSBmdW5jdGlvbnMgYmVmb3JlIGdsb2JhbF9pbml0KCkgaW4gY2FzZSBpdCB3YW50cyBtZW1vcnkKKyAgICAgZnVuY3Rpb25zICovCisgIEN1cmxfY21hbGxvYyA9IG07CisgIEN1cmxfY2ZyZWUgPSBmOworICBDdXJsX2NzdHJkdXAgPSBzOworICBDdXJsX2NyZWFsbG9jID0gcjsKKyAgQ3VybF9jY2FsbG9jID0gYzsKIAotICByZXR1cm4gcmVzdWx0OworICAvKiBDYWxsIHRoZSBhY3R1YWwgaW5pdCBmdW5jdGlvbiwgYnV0IHdpdGhvdXQgc2V0dGluZyAqLworICByZXR1cm4gZ2xvYmFsX2luaXQoZmxhZ3MsIEZBTFNFKTsKIH0KIAogLyoqCkBAIC01MzIsMTQgKzU0MywxOCBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgIG0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzb2NrZXRtb25pdG9yKSk7Ci0gICAgICBtLT5uZXh0ID0gZXYtPmxpc3Q7Ci0gICAgICBtLT5zb2NrZXQuZmQgPSBzOwotICAgICAgbS0+c29ja2V0LmV2ZW50cyA9IHNvY2tldGNiMnBvbGwod2hhdCk7Ci0gICAgICBtLT5zb2NrZXQucmV2ZW50cyA9IDA7Ci0gICAgICBldi0+bGlzdCA9IG07Ci0gICAgICBpbmZvZihlYXN5LCAic29ja2V0IGNiOiBzb2NrZXQgJWQgQURERUQgYXMgJXMlc1xuIiwgcywKLSAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX0lOPyJJTiI6IiIsCi0gICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9PVVQ/Ik9VVCI6IiIpOworICAgICAgaWYobSkgeworICAgICAgICBtLT5uZXh0ID0gZXYtPmxpc3Q7CisgICAgICAgIG0tPnNvY2tldC5mZCA9IHM7CisgICAgICAgIG0tPnNvY2tldC5ldmVudHMgPSBzb2NrZXRjYjJwb2xsKHdoYXQpOworICAgICAgICBtLT5zb2NrZXQucmV2ZW50cyA9IDA7CisgICAgICAgIGV2LT5saXN0ID0gbTsKKyAgICAgICAgaW5mb2YoZWFzeSwgInNvY2tldCBjYjogc29ja2V0ICVkIEFEREVEIGFzICVzJXNcbiIsIHMsCisgICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX0lOPyJJTiI6IiIsCisgICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX09VVD8iT1VUIjoiIik7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgIH0KICAgfQogCkBAIC02MDksNyArNjI0LDcgQEAKICAgICBpZigwID09IHBvbGxyYykgewogICAgICAgLyogdGltZW91dCEgKi8KICAgICAgIGV2LT5tcyA9IDA7Ci0gICAgICAvKiBmcHJpbnRmKHN0ZGVyciwgImNhbGwgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKCBUSU1FT1VUIClcbiIpOyAqLworICAgICAgLyogZnByaW50ZihzdGRlcnIsICJjYWxsIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihUSU1FT1VUKVxuIik7ICovCiAgICAgICBtY29kZSA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihtdWx0aSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldi0+cnVubmluZ19oYW5kbGVzKTsKICAgICB9CkBAIC02MTksNyArNjM0LDcgQEAKICAgICAgICAgaWYoZmRzW2ldLnJldmVudHMpIHsKICAgICAgICAgICAvKiBzb2NrZXQgYWN0aXZpdHksIHRlbGwgbGliY3VybCAqLwogICAgICAgICAgIGludCBhY3QgPSBwb2xsMmNzZWxlY3QoZmRzW2ldLnJldmVudHMpOyAvKiBjb252ZXJ0ICovCi0gICAgICAgICAgaW5mb2YobXVsdGktPmVhc3lwLCAiY2FsbCBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oIHNvY2tldCAlZCApXG4iLAorICAgICAgICAgIGluZm9mKG11bHRpLT5lYXN5cCwgImNhbGwgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKHNvY2tldCAlZClcbiIsCiAgICAgICAgICAgICAgICAgZmRzW2ldLmZkKTsKICAgICAgICAgICBtY29kZSA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihtdWx0aSwgZmRzW2ldLmZkLCBhY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2LT5ydW5uaW5nX2hhbmRsZXMpOwpAQCAtNjgxLDI2ICs2OTYsMjIgQEAKIAogICB3aGlsZSghZG9uZSAmJiAhbWNvZGUpIHsKICAgICBpbnQgc3RpbGxfcnVubmluZyA9IDA7Ci0gICAgaW50IHJldDsKKyAgICBpbnQgcmM7CiAKICAgICBiZWZvcmUgPSBjdXJseF90dm5vdygpOwotICAgIG1jb2RlID0gY3VybF9tdWx0aV93YWl0KG11bHRpLCBOVUxMLCAwLCAxMDAwLCAmcmV0KTsKKyAgICBtY29kZSA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aSwgTlVMTCwgMCwgMTAwMCwgJnJjKTsKIAotICAgIGlmKG1jb2RlID09IENVUkxNX09LKSB7Ci0gICAgICBpZihyZXQgPT0gLTEpIHsKLSAgICAgICAgLyogcG9sbCgpIGZhaWxlZCBub3Qgb24gRUlOVFIsIGluZGljYXRlIGEgbmV0d29yayBwcm9ibGVtICovCi0gICAgICAgIHJlc3VsdCA9IENVUkxFX1JFQ1ZfRVJST1I7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZSBpZihyZXQgPT0gMCkgeworICAgIGlmKCFtY29kZSkgeworICAgICAgaWYoIXJjKSB7CiAgICAgICAgIHN0cnVjdCB0aW1ldmFsIGFmdGVyID0gY3VybHhfdHZub3coKTsKKwogICAgICAgICAvKiBJZiBpdCByZXR1cm5zIHdpdGhvdXQgYW55IGZpbGVkZXNjcmlwdG9yIGluc3RhbnRseSwgd2UgbmVlZCB0bwogICAgICAgICAgICBhdm9pZCBidXN5LWxvb3BpbmcgZHVyaW5nIHBlcmlvZHMgd2hlcmUgaXQgaGFzIG5vdGhpbmcgcGFydGljdWxhcgogICAgICAgICAgICB0byB3YWl0IGZvciAqLwogICAgICAgICBpZihjdXJseF90dmRpZmYoYWZ0ZXIsIGJlZm9yZSkgPD0gMTApIHsKICAgICAgICAgICB3aXRob3V0X2ZkcysrOwogICAgICAgICAgIGlmKHdpdGhvdXRfZmRzID4gMikgewotICAgICAgICAgICAgaW50IHNsZWVwX21zID0gd2l0aG91dF9mZHMgPCAxMCA/ICgxIDw8ICh3aXRob3V0X2Zkcy0xKSk6IDEwMDA7CisgICAgICAgICAgICBpbnQgc2xlZXBfbXMgPSB3aXRob3V0X2ZkcyA8IDEwID8gKDEgPDwgKHdpdGhvdXRfZmRzIC0gMSkpIDogMTAwMDsKICAgICAgICAgICAgIEN1cmxfd2FpdF9tcyhzbGVlcF9tcyk7CiAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MTYsOCArNzI3LDcgQEAKICAgICB9CiAKICAgICAvKiBvbmx5IHJlYWQgJ3N0aWxsX3J1bm5pbmcnIGlmIGN1cmxfbXVsdGlfcGVyZm9ybSgpIHJldHVybiBPSyAqLwotICAgIGlmKChtY29kZSA9PSBDVVJMTV9PSykgJiYgIXN0aWxsX3J1bm5pbmcpIHsKLSAgICAgIGludCByYzsKKyAgICBpZighbWNvZGUgJiYgIXN0aWxsX3J1bm5pbmcpIHsKICAgICAgIENVUkxNc2cgKm1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG11bHRpLCAmcmMpOwogICAgICAgaWYobXNnKSB7CiAgICAgICAgIHJlc3VsdCA9IG1zZy0+ZGF0YS5yZXN1bHQ7CkBAIC03MjgsMTAgKzczOCwxMCBAQAogCiAgIC8qIE1ha2Ugc3VyZSB0byByZXR1cm4gc29tZSBraW5kIG9mIGVycm9yIGlmIHRoZXJlIHdhcyBhIG11bHRpIHByb2JsZW0gKi8KICAgaWYobWNvZGUpIHsKLSAgICByZXR1cm4gKG1jb2RlID09IENVUkxNX09VVF9PRl9NRU1PUlkpID8gQ1VSTEVfT1VUX09GX01FTU9SWSA6Ci0gICAgICAgICAgICAvKiBUaGUgb3RoZXIgbXVsdGkgZXJyb3JzIHNob3VsZCBuZXZlciBoYXBwZW4sIHNvIHJldHVybgotICAgICAgICAgICAgICAgc29tZXRoaW5nIHN1aXRhYmx5IGdlbmVyaWMgKi8KLSAgICAgICAgICAgIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICByZXN1bHQgPSAobWNvZGUgPT0gQ1VSTE1fT1VUX09GX01FTU9SWSkgPyBDVVJMRV9PVVRfT0ZfTUVNT1JZIDoKKyAgICAgICAgICAgICAgLyogVGhlIG90aGVyIG11bHRpIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBzbyByZXR1cm4KKyAgICAgICAgICAgICAgICAgc29tZXRoaW5nIHN1aXRhYmx5IGdlbmVyaWMgKi8KKyAgICAgICAgICAgICAgQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwogICB9CiAKICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2xpYi9lYXN5aWYuaCBiL2xpYi9lYXN5aWYuaAppbmRleCAwNDNmZjQzLi42NTMzMzQ5IDEwMDY0NAotLS0gYS9saWIvZWFzeWlmLmgKKysrIGIvbGliL2Vhc3lpZi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2VzY2FwZS5jIGIvbGliL2VzY2FwZS5jCmluZGV4IDI0YWJiOTMuLjJjNmE3ZjYgMTAwNjQ0Ci0tLSBhL2xpYi9lc2NhcGUuYworKysgYi9saWIvZXNjYXBlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMSwxNSArMzEsMTQgQEAKICNpbmNsdWRlICJ3YXJubGVzcy5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgogI2luY2x1ZGUgImVzY2FwZS5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qIFBvcnRhYmxlIGNoYXJhY3RlciBjaGVjayAocmVtZW1iZXIgRUJDRElDKS4gRG8gbm90IHVzZSBpc2FsbnVtKCkgYmVjYXVzZQogICAgaXRzIGJlaGF2aW9yIGlzIGFsdGVyZWQgYnkgdGhlIGN1cnJlbnQgbG9jYWxlLgotICAgU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjMKKyAgIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMwogKi8KIHN0YXRpYyBib29sIEN1cmxfaXN1bnJlc2VydmVkKHVuc2lnbmVkIGNoYXIgaW4pCiB7CkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICAgICAgYWxsb2MgKj0gMjsKICAgICAgICAgdGVzdGluZ19wdHIgPSByZWFsbG9jKG5zLCBhbGxvYyk7CiAgICAgICAgIGlmKCF0ZXN0aW5nX3B0cikgewotICAgICAgICAgIGZyZWUoIG5zICk7CisgICAgICAgICAgZnJlZShucyk7CiAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9saWIvZXNjYXBlLmggYi9saWIvZXNjYXBlLmgKaW5kZXggNzMxYjEzNi4uYTZlMjk2NyAxMDA2NDQKLS0tIGEvbGliL2VzY2FwZS5oCisrKyBiL2xpYi9lc2NhcGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCmluZGV4IDE3NWIxMDcuLjFlZWI4NGQgMTAwNjQ0Ci0tLSBhL2xpYi9maWxlLmMKKysrIGIvbGliL2ZpbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYxLDkgKzYxLDggQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJwYXJzZWRhdGUuaCIgLyogZm9yIHRoZSB3ZWVrIGRheSBhbmQgbW9udGggbmFtZXMgKi8KICNpbmNsdWRlICJ3YXJubGVzcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTM2OCw3ICszNjcsNyBAQAogCiAgICAgLypza2lwIGJ5dGVzIGJlZm9yZSByZXN1bWUgcG9pbnQqLwogICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7Ci0gICAgICBpZigoY3VybF9vZmZfdClucmVhZCA8PSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSApIHsKKyAgICAgIGlmKChjdXJsX29mZl90KW5yZWFkIDw9IGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7CiAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC09IG5yZWFkOwogICAgICAgICBucmVhZCA9IDA7CiAgICAgICAgIGJ1ZjIgPSBidWY7CkBAIC00MjYsNiArNDI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93cyB2ZXJzaW9uIHRvIGhhdmUgYSBkaWZmZXJlbnQgc3RydWN0IHdpdGhvdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2aW5nIHRvIHJlZGVmaW5lIHRoZSBzaW1wbGUgd29yZCAnc3RhdCcgKi8KICAgY3VybF9vZmZfdCBleHBlY3RlZF9zaXplPTA7CisgIGJvb2wgc2l6ZV9rbm93bjsKICAgYm9vbCBmc3RhdGVkPUZBTFNFOwogICBzc2l6ZV90IG5yZWFkOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CkBAIC00NjgsNiArNDY4LDkgQEAKICAgICAgaW5mb3JtYXRpb24uIFdoaWNoIGZvciBGSUxFIGNhbid0IGJlIG11Y2ggbW9yZSB0aGFuIHRoZSBmaWxlIHNpemUgYW5kCiAgICAgIGRhdGUuICovCiAgIGlmKGRhdGEtPnNldC5vcHRfbm9fYm9keSAmJiBkYXRhLT5zZXQuaW5jbHVkZV9oZWFkZXIgJiYgZnN0YXRlZCkgeworICAgIHRpbWVfdCBmaWxldGltZTsKKyAgICBzdHJ1Y3QgdG0gYnVmZmVyOworICAgIGNvbnN0IHN0cnVjdCB0bSAqdG0gPSAmYnVmZmVyOwogICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGRhdGEtPnN0YXRlLmJ1ZmZlciksCiAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICJcclxuIiwgZXhwZWN0ZWRfc2l6ZSk7CiAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9USCwgYnVmLCAwKTsKQEAgLTQ3OSwyOSArNDgyLDI0IEBACiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmKGZzdGF0ZWQpIHsKLSAgICAgIHRpbWVfdCBmaWxldGltZSA9ICh0aW1lX3Qpc3RhdGJ1Zi5zdF9tdGltZTsKLSAgICAgIHN0cnVjdCB0bSBidWZmZXI7Ci0gICAgICBjb25zdCBzdHJ1Y3QgdG0gKnRtID0gJmJ1ZmZlcjsKLSAgICAgIHJlc3VsdCA9IEN1cmxfZ210aW1lKGZpbGV0aW1lLCAmYnVmZmVyKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBmaWxldGltZSA9ICh0aW1lX3Qpc3RhdGJ1Zi5zdF9tdGltZTsKKyAgICByZXN1bHQgPSBDdXJsX2dtdGltZShmaWxldGltZSwgJmJ1ZmZlcik7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgICAgLyogZm9ybWF0OiAiVHVlLCAxNSBOb3YgMTk5NCAxMjo0NToyNiBHTVQiICovCi0gICAgICBzbnByaW50ZihidWYsIEJVRlNJWkUtMSwKLSAgICAgICAgICAgICAgICJMYXN0LU1vZGlmaWVkOiAlcywgJTAyZCAlcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UXHJcbiIsCi0gICAgICAgICAgICAgICBDdXJsX3drZGF5W3RtLT50bV93ZGF5P3RtLT50bV93ZGF5LTE6Nl0sCi0gICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCi0gICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICB0bS0+dG1faG91ciwKLSAgICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgICB0bS0+dG1fc2VjKTsKLSAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPVEgsIGJ1ZiwgMCk7Ci0gICAgfQotICAgIC8qIGlmIHdlIGZzdGF0KCllZCB0aGUgZmlsZSwgc2V0IHRoZSBmaWxlIHNpemUgdG8gbWFrZSBpdCBhdmFpbGFibGUgcG9zdC0KLSAgICAgICB0cmFuc2ZlciAqLwotICAgIGlmKGZzdGF0ZWQpCisgICAgLyogZm9ybWF0OiAiVHVlLCAxNSBOb3YgMTk5NCAxMjo0NToyNiBHTVQiICovCisgICAgc25wcmludGYoYnVmLCBCVUZTSVpFLTEsCisgICAgICAgICAgICAgIkxhc3QtTW9kaWZpZWQ6ICVzLCAlMDJkICVzICU0ZCAlMDJkOiUwMmQ6JTAyZCBHTVRcclxuIiwKKyAgICAgICAgICAgICBDdXJsX3drZGF5W3RtLT50bV93ZGF5P3RtLT50bV93ZGF5LTE6Nl0sCisgICAgICAgICAgICAgdG0tPnRtX21kYXksCisgICAgICAgICAgICAgQ3VybF9tb250aFt0bS0+dG1fbW9uXSwKKyAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCisgICAgICAgICAgICAgdG0tPnRtX21pbiwKKyAgICAgICAgICAgICB0bS0+dG1fc2VjKTsKKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOworICAgIGlmKCFyZXN1bHQpCisgICAgICAvKiBzZXQgdGhlIGZpbGUgc2l6ZSB0byBtYWtlIGl0IGF2YWlsYWJsZSBwb3N0IHRyYW5zZmVyICovCiAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQpAQCAtNTMxLDggKzUyOSwxMCBAQAogICBpZihkYXRhLT5yZXEubWF4ZG93bmxvYWQgPiAwKQogICAgIGV4cGVjdGVkX3NpemUgPSBkYXRhLT5yZXEubWF4ZG93bmxvYWQ7CiAKLSAgaWYoZnN0YXRlZCAmJiAoZXhwZWN0ZWRfc2l6ZSA9PSAwKSkKLSAgICByZXR1cm4gQ1VSTEVfT0s7CisgIGlmKCFmc3RhdGVkIHx8IChleHBlY3RlZF9zaXplID09IDApKQorICAgIHNpemVfa25vd24gPSBGQUxTRTsKKyAgZWxzZQorICAgIHNpemVfa25vd24gPSBUUlVFOwogCiAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgYSBzaG9ydGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBmaWxlIHJlYWRpbmcKICAgICAgdGhpcyBpcyBib3RoIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIGZvcm1lciBjYWxsIHRvIGRvd25sb2FkKCkgYW5kCkBAIC01NTEsMjAgKzU1MSwyNyBAQAogCiAgIHdoaWxlKCFyZXN1bHQpIHsKICAgICAvKiBEb24ndCBmaWxsIGEgd2hvbGUgYnVmZmVyIGlmIHdlIHdhbnQgbGVzcyB0aGFuIGFsbCBkYXRhICovCi0gICAgc2l6ZV90IGJ5dGVzdG9yZWFkID0KLSAgICAgIChleHBlY3RlZF9zaXplIDwgQ1VSTF9PRkZfVF9DKEJVRlNJWkUpIC0gQ1VSTF9PRkZfVF9DKDEpKSA/Ci0gICAgICBjdXJseF9zb3RvdXooZXhwZWN0ZWRfc2l6ZSkgOiBCVUZTSVpFIC0gMTsKKyAgICBzaXplX3QgYnl0ZXN0b3JlYWQ7CisKKyAgICBpZihzaXplX2tub3duKSB7CisgICAgICBieXRlc3RvcmVhZCA9CisgICAgICAgIChleHBlY3RlZF9zaXplIDwgQ1VSTF9PRkZfVF9DKEJVRlNJWkUpIC0gQ1VSTF9PRkZfVF9DKDEpKSA/CisgICAgICAgIGN1cmx4X3NvdG91eihleHBlY3RlZF9zaXplKSA6IEJVRlNJWkUgLSAxOworICAgIH0KKyAgICBlbHNlCisgICAgICBieXRlc3RvcmVhZCA9IEJVRlNJWkUtMTsKIAogICAgIG5yZWFkID0gcmVhZChmZCwgYnVmLCBieXRlc3RvcmVhZCk7CiAKICAgICBpZihucmVhZCA+IDApCiAgICAgICBidWZbbnJlYWRdID0gMDsKIAotICAgIGlmKG5yZWFkIDw9IDAgfHwgZXhwZWN0ZWRfc2l6ZSA9PSAwKQorICAgIGlmKG5yZWFkIDw9IDAgfHwgKHNpemVfa25vd24gJiYgKGV4cGVjdGVkX3NpemUgPT0gMCkpKQogICAgICAgYnJlYWs7CiAKICAgICBieXRlY291bnQgKz0gbnJlYWQ7Ci0gICAgZXhwZWN0ZWRfc2l6ZSAtPSBucmVhZDsKKyAgICBpZihzaXplX2tub3duKQorICAgICAgZXhwZWN0ZWRfc2l6ZSAtPSBucmVhZDsKIAogICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIGJ1ZiwgbnJlYWQpOwogICAgIGlmKHJlc3VsdCkKZGlmZiAtLWdpdCBhL2xpYi9maWxlLmggYi9saWIvZmlsZS5oCmluZGV4IDk5NzQ3NGIuLmMxMmFlMGUgMTAwNjQ0Ci0tLSBhL2xpYi9maWxlLmgKKysrIGIvbGliL2ZpbGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9maWxlaW5mby5jIGIvbGliL2ZpbGVpbmZvLmMKaW5kZXggMDkwNDkzNy4uMTQ0YzY1YiAxMDA2NDQKLS0tIGEvbGliL2ZpbGVpbmZvLmMKKysrIGIvbGliL2ZpbGVpbmZvLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2ZpbGVpbmZvLmggYi9saWIvZmlsZWluZm8uaAppbmRleCBiMGU1ZTU5Li41MzI0ZjFhIDEwMDY0NAotLS0gYS9saWIvZmlsZWluZm8uaAorKysgYi9saWIvZmlsZWluZm8uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9maXJlZm94LWRiMnBlbS5zaCBiL2xpYi9maXJlZm94LWRiMnBlbS5zaAppbmRleCAzZjVmZTc1Li43ZDY5MWZmIDEwMDY0NAotLS0gYS9saWIvZmlyZWZveC1kYjJwZW0uc2gKKysrIGIvbGliL2ZpcmVmb3gtZGIycGVtLnNoCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZm9ybWRhdGEuYyBiL2xpYi9mb3JtZGF0YS5jCmluZGV4IDllOGNlNGUuLmE3MWYwOTkgMTAwNjQ0Ci0tLSBhL2xpYi9mb3JtZGF0YS5jCisrKyBiL2xpYi9mb3JtZGF0YS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsOSArMzYsOCBAQAogI2luY2x1ZGUgInN0cmVxdWFsLmgiCiAjaW5jbHVkZSAic2VuZGYuaCIKICNpbmNsdWRlICJzdHJkdXAuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC01Nyw2ICs1NiwxNCBAQAogI2RlZmluZSBGT1JNX0ZJTEVfU0VQQVJBVE9SICcsJwogI2RlZmluZSBGT1JNX1RZUEVfU0VQQVJBVE9SICc7JwogCisjZGVmaW5lIEhUVFBQT1NUX1BUUk5BTUUgQ1VSTF9IVFRQUE9TVF9QVFJOQU1FCisjZGVmaW5lIEhUVFBQT1NUX0ZJTEVOQU1FIENVUkxfSFRUUFBPU1RfRklMRU5BTUUKKyNkZWZpbmUgSFRUUFBPU1RfUFRSQ09OVEVOVFMgQ1VSTF9IVFRQUE9TVF9QVFJDT05URU5UUworI2RlZmluZSBIVFRQUE9TVF9SRUFERklMRSBDVVJMX0hUVFBQT1NUX1JFQURGSUxFCisjZGVmaW5lIEhUVFBQT1NUX1BUUkJVRkZFUiBDVVJMX0hUVFBQT1NUX1BUUkJVRkZFUgorI2RlZmluZSBIVFRQUE9TVF9DQUxMQkFDSyBDVVJMX0hUVFBQT1NUX0NBTExCQUNLCisjZGVmaW5lIEhUVFBQT1NUX0JVRkZFUiBDVVJMX0hUVFBQT1NUX0JVRkZFUgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQWRkSHR0cFBvc3QoKQpAQCAtNjksNyArNzYsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBzdHJ1Y3QgY3VybF9odHRwcG9zdCAqCiBBZGRIdHRwUG9zdChjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbmd0aCwKLSAgICAgICAgICAgIGNoYXIgKnZhbHVlLCBzaXplX3QgY29udGVudHNsZW5ndGgsCisgICAgICAgICAgICBjaGFyICp2YWx1ZSwgY3VybF9vZmZfdCBjb250ZW50c2xlbmd0aCwKICAgICAgICAgICAgIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmZlcmxlbmd0aCwKICAgICAgICAgICAgIGNoYXIgKmNvbnRlbnR0eXBlLAogICAgICAgICAgICAgbG9uZyBmbGFncywKQEAgLTg1LDE0ICs5MiwxNCBAQAogICAgIHBvc3QtPm5hbWUgPSBuYW1lOwogICAgIHBvc3QtPm5hbWVsZW5ndGggPSAobG9uZykobmFtZT8obmFtZWxlbmd0aD9uYW1lbGVuZ3RoOnN0cmxlbihuYW1lKSk6MCk7CiAgICAgcG9zdC0+Y29udGVudHMgPSB2YWx1ZTsKLSAgICBwb3N0LT5jb250ZW50c2xlbmd0aCA9IChsb25nKWNvbnRlbnRzbGVuZ3RoOworICAgIHBvc3QtPmNvbnRlbnRsZW4gPSBjb250ZW50c2xlbmd0aDsKICAgICBwb3N0LT5idWZmZXIgPSBidWZmZXI7CiAgICAgcG9zdC0+YnVmZmVybGVuZ3RoID0gKGxvbmcpYnVmZmVybGVuZ3RoOwogICAgIHBvc3QtPmNvbnRlbnR0eXBlID0gY29udGVudHR5cGU7CiAgICAgcG9zdC0+Y29udGVudGhlYWRlciA9IGNvbnRlbnRIZWFkZXI7CiAgICAgcG9zdC0+c2hvd2ZpbGVuYW1lID0gc2hvd2ZpbGVuYW1lOwogICAgIHBvc3QtPnVzZXJwID0gdXNlcnAsCi0gICAgcG9zdC0+ZmxhZ3MgPSBmbGFnczsKKyAgICBwb3N0LT5mbGFncyA9IGZsYWdzIHwgQ1VSTF9IVFRQUE9TVF9MQVJHRTsKICAgfQogICBlbHNlCiAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzIsMTEgKzM3OSwxNCBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMRk9STV9DT05URU5UU0xFTkdUSDoKLSAgICAgIGlmKGN1cnJlbnRfZm9ybS0+Y29udGVudHNsZW5ndGgpCi0gICAgICAgIHJldHVybl92YWx1ZSA9IENVUkxfRk9STUFERF9PUFRJT05fVFdJQ0U7Ci0gICAgICBlbHNlCi0gICAgICAgIGN1cnJlbnRfZm9ybS0+Y29udGVudHNsZW5ndGggPQotICAgICAgICAgIGFycmF5X3N0YXRlPyhzaXplX3QpYXJyYXlfdmFsdWU6KHNpemVfdCl2YV9hcmcocGFyYW1zLCBsb25nKTsKKyAgICAgIGN1cnJlbnRfZm9ybS0+Y29udGVudHNsZW5ndGggPQorICAgICAgICBhcnJheV9zdGF0ZT8oc2l6ZV90KWFycmF5X3ZhbHVlOihzaXplX3QpdmFfYXJnKHBhcmFtcywgbG9uZyk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgQ1VSTEZPUk1fQ09OVEVOVExFTjoKKyAgICAgIGN1cnJlbnRfZm9ybS0+ZmxhZ3MgfD0gQ1VSTF9IVFRQUE9TVF9MQVJHRTsKKyAgICAgIGN1cnJlbnRfZm9ybS0+Y29udGVudHNsZW5ndGggPQorICAgICAgICBhcnJheV9zdGF0ZT8oY3VybF9vZmZfdCkoc2l6ZV90KWFycmF5X3ZhbHVlOnZhX2FyZyhwYXJhbXMsIGN1cmxfb2ZmX3QpOwogICAgICAgYnJlYWs7CiAKICAgICAgIC8qIEdldCBjb250ZW50cyBmcm9tIGEgZ2l2ZW4gZmlsZSBuYW1lICovCkBAIC01MzgsNyArNTQ4LDcgQEAKICAgICAgICAgLyogdGhpcyAiY2FzdCBpbmNyZWFzZXMgcmVxdWlyZWQgYWxpZ25tZW50IG9mIHRhcmdldCB0eXBlIiBidXQKICAgICAgICAgICAgd2UgY29uc2lkZXIgaXQgT0sgYW55d2F5ICovCiAgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBsaXN0ID0gYXJyYXlfc3RhdGU/Ci0gICAgICAgICAgKHN0cnVjdCBjdXJsX3NsaXN0KilhcnJheV92YWx1ZToKKyAgICAgICAgICAoc3RydWN0IGN1cmxfc2xpc3QqKSh2b2lkKilhcnJheV92YWx1ZToKICAgICAgICAgICB2YV9hcmcocGFyYW1zLCBzdHJ1Y3QgY3VybF9zbGlzdCopOwogCiAgICAgICAgIGlmKGN1cnJlbnRfZm9ybS0+Y29udGVudGhlYWRlcikKQEAgLTYyMSw3ICs2MzEsNyBAQAogICAgICAgZWxzZSB7CiAgICAgICAgIGlmKCgoZm9ybS0+ZmxhZ3MgJiBIVFRQUE9TVF9GSUxFTkFNRSkgfHwKICAgICAgICAgICAgIChmb3JtLT5mbGFncyAmIEhUVFBQT1NUX0JVRkZFUikpICYmCi0gICAgICAgICAgICFmb3JtLT5jb250ZW50dHlwZSApIHsKKyAgICAgICAgICAgIWZvcm0tPmNvbnRlbnR0eXBlKSB7CiAgICAgICAgICAgY2hhciAqZiA9IGZvcm0tPmZsYWdzICYgSFRUUFBPU1RfQlVGRkVSPwogICAgICAgICAgICAgZm9ybS0+c2hvd2ZpbGVuYW1lIDogZm9ybS0+dmFsdWU7CiAKQEAgLTY1Myw5ICs2NjMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUE9TVF9QVFJDT05URU5UUyB8IEhUVFBQT1NUX1BUUkJVRkZFUiB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFBPU1RfQ0FMTEJBQ0spKSAmJiBmb3JtLT52YWx1ZSkgewogICAgICAgICAgIC8qIGNvcHkgdmFsdWUgKHdpdGhvdXQgc3RyZHVwOyBwb3NzaWJseSBjb250YWlucyBudWxsIGNoYXJhY3RlcnMpICovCi0gICAgICAgICAgZm9ybS0+dmFsdWUgPSBDdXJsX21lbWR1cChmb3JtLT52YWx1ZSwgZm9ybS0+Y29udGVudHNsZW5ndGg/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLT5jb250ZW50c2xlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihmb3JtLT52YWx1ZSkrMSk7CisgICAgICAgICAgc2l6ZV90IGNsZW4gID0gKHNpemVfdCkgZm9ybS0+Y29udGVudHNsZW5ndGg7CisgICAgICAgICAgaWYoIWNsZW4pCisgICAgICAgICAgICBjbGVuID0gc3RybGVuKGZvcm0tPnZhbHVlKSsxOworCisgICAgICAgICAgZm9ybS0+dmFsdWUgPSBDdXJsX21lbWR1cChmb3JtLT52YWx1ZSwgY2xlbik7CisKICAgICAgICAgICBpZighZm9ybS0+dmFsdWUpIHsKICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IENVUkxfRk9STUFERF9NRU1PUlk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTc1Niw3ICs3NjksNyBAQAogICBpbnQgcmV0X3N0YXQ7CiAgIEZJTEUgKiBmaWxlOwogCi0gIGZpbGUgPSBmb3BlbihuYW1lLCAiciIpOyAvKiBWTVMgKi8KKyAgZmlsZSA9IGZvcGVuKG5hbWUsIEZPUEVOX1JFQURURVhUKTsgLyogVk1TICovCiAgIGlmKGZpbGUgPT0gTlVMTCkKICAgICByZXR1cm4gMDsKIApAQCAtODA4LDEwICs4MjEsMTYgQEAKIHN0YXRpYyBDVVJMY29kZSBBZGRGb3JtRGF0YShzdHJ1Y3QgRm9ybURhdGEgKipmb3JtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGZvcm10eXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfb2ZmX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfb2ZmX3QgKnNpemUpCiB7Ci0gIHN0cnVjdCBGb3JtRGF0YSAqbmV3Zm9ybSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IEZvcm1EYXRhKSk7CisgIHN0cnVjdCBGb3JtRGF0YSAqbmV3Zm9ybTsKKyAgY2hhciAqYWxsb2MyID0gTlVMTDsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIGlmKGxlbmd0aCA8IDAgfHwgKHNpemUgJiYgKnNpemUgPCAwKSkKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworCisgIG5ld2Zvcm0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBGb3JtRGF0YSkpOwogICBpZighbmV3Zm9ybSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgbmV3Zm9ybS0+bmV4dCA9IE5VTEw7CkBAIC04MjAsMTUgKzgzOSwyMiBAQAogICAgIC8qIHdlIG1ha2UgaXQgZWFzaWVyIGZvciBwbGFpbiBzdHJpbmdzOiAqLwogICAgIGlmKCFsZW5ndGgpCiAgICAgICBsZW5ndGggPSBzdHJsZW4oKGNoYXIgKilsaW5lKTsKLQotICAgIG5ld2Zvcm0tPmxpbmUgPSBtYWxsb2MobGVuZ3RoKzEpOwotICAgIGlmKCFuZXdmb3JtLT5saW5lKSB7Ci0gICAgICBmcmVlKG5ld2Zvcm0pOwotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisjaWYgKFNJWkVPRl9TSVpFX1QgPCBDVVJMX1NJWkVPRl9DVVJMX09GRl9UKQorICAgIGVsc2UgaWYobGVuZ3RoID49IChjdXJsX29mZl90KShzaXplX3QpLTEpIHsKKyAgICAgIHJlc3VsdCA9IENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIG1lbWNweShuZXdmb3JtLT5saW5lLCBsaW5lLCBsZW5ndGgpOwotICAgIG5ld2Zvcm0tPmxlbmd0aCA9IGxlbmd0aDsKLSAgICBuZXdmb3JtLT5saW5lW2xlbmd0aF09MDsgLyogemVybyB0ZXJtaW5hdGUgZm9yIGVhc2llciBkZWJ1Z2dpbmcgKi8KKyNlbmRpZgorCisgICAgbmV3Zm9ybS0+bGluZSA9IG1hbGxvYygoc2l6ZV90KWxlbmd0aCsxKTsKKyAgICBpZighbmV3Zm9ybS0+bGluZSkgeworICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGFsbG9jMiA9IG5ld2Zvcm0tPmxpbmU7CisgICAgbWVtY3B5KG5ld2Zvcm0tPmxpbmUsIGxpbmUsIChzaXplX3QpbGVuZ3RoKTsKKyAgICBuZXdmb3JtLT5sZW5ndGggPSAoc2l6ZV90KWxlbmd0aDsKKyAgICBuZXdmb3JtLT5saW5lWyhzaXplX3QpbGVuZ3RoXT0wOyAvKiB6ZXJvIHRlcm1pbmF0ZSBmb3IgZWFzaWVyIGRlYnVnZ2luZyAqLwogICB9CiAgIGVsc2UKICAgICAvKiBGb3IgY2FsbGJhY2tzIGFuZCBmaWxlcyB3ZSBkb24ndCBoYXZlIGFueSBhY3R1YWwgZGF0YSBzbyB3ZSBqdXN0IGtlZXAgYQpAQCAtODU2LDEyICs4ODIsMjAgQEAKICAgICAgICAgc3RydWN0X3N0YXQgZmlsZTsKICAgICAgICAgaWYoIXN0YXQobmV3Zm9ybS0+bGluZSwgJmZpbGUpICYmICFTX0lTRElSKGZpbGUuc3RfbW9kZSkpCiAgICAgICAgICAgKnNpemUgKz0gZmlsZXNpemUobmV3Zm9ybS0+bGluZSwgZmlsZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICByZXN1bHQgPSBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQogICByZXR1cm4gQ1VSTEVfT0s7CisgIGVycm9yOgorICBpZihuZXdmb3JtKQorICAgIGZyZWUobmV3Zm9ybSk7CisgIGlmKGFsbG9jMikKKyAgICBmcmVlKGFsbG9jMik7CisgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qCkBAIC0xMjM4LDcgKzEyNzIsNyBAQAogICAgICAgY3VyTGlzdCA9IGZpbGUtPmNvbnRlbnRoZWFkZXI7CiAgICAgICB3aGlsZShjdXJMaXN0KSB7CiAgICAgICAgIC8qIFByb2Nlc3MgdGhlIGFkZGl0aW9uYWwgaGVhZGVycyBzcGVjaWZpZWQgZm9yIHRoaXMgZm9ybSAqLwotICAgICAgICByZXN1bHQgPSBBZGRGb3JtRGF0YWYoICZmb3JtLCAmc2l6ZSwgIlxyXG4lcyIsIGN1ckxpc3QtPmRhdGEgKTsKKyAgICAgICAgcmVzdWx0ID0gQWRkRm9ybURhdGFmKCZmb3JtLCAmc2l6ZSwgIlxyXG4lcyIsIGN1ckxpc3QtPmRhdGEpOwogICAgICAgICBpZihyZXN1bHQpCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1ckxpc3QgPSBjdXJMaXN0LT5uZXh0OwpAQCAtMTI5OCwxNSArMTMzMiwxNiBAQAogICAgICAgICByZXN1bHQgPSBBZGRGb3JtRGF0YSgmZm9ybSwgRk9STV9DT05URU5ULCBwb3N0LT5idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmJ1ZmZlcmxlbmd0aCwgJnNpemUpOwogICAgICAgZWxzZSBpZihwb3N0LT5mbGFncyAmIEhUVFBQT1NUX0NBTExCQUNLKQotICAgICAgICAvKiB0aGUgY29udGVudHMgc2hvdWxkIGJlIHJlYWQgd2l0aCB0aGUgY2FsbGJhY2sgYW5kIHRoZSBzaXplCi0gICAgICAgICAgIGlzIHNldCB3aXRoIHRoZSBjb250ZW50c2xlbmd0aCAqLworICAgICAgICAvKiB0aGUgY29udGVudHMgc2hvdWxkIGJlIHJlYWQgd2l0aCB0aGUgY2FsbGJhY2sgYW5kIHRoZSBzaXplIGlzIHNldAorICAgICAgICAgICB3aXRoIHRoZSBjb250ZW50c2xlbmd0aCAqLwogICAgICAgICByZXN1bHQgPSBBZGRGb3JtRGF0YSgmZm9ybSwgRk9STV9DQUxMQkFDSywgcG9zdC0+dXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmNvbnRlbnRzbGVuZ3RoLCAmc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmZsYWdzJkNVUkxfSFRUUFBPU1RfTEFSR0U/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmNvbnRlbnRsZW46cG9zdC0+Y29udGVudHNsZW5ndGgsICZzaXplKTsKICAgICAgIGVsc2UKICAgICAgICAgLyogaW5jbHVkZSB0aGUgY29udGVudHMgd2UgZ290ICovCiAgICAgICAgIHJlc3VsdCA9IEFkZEZvcm1EYXRhKCZmb3JtLCBGT1JNX0NPTlRFTlQsIHBvc3QtPmNvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5jb250ZW50c2xlbmd0aCwgJnNpemUpOwotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmZsYWdzJkNVUkxfSFRUUFBPU1RfTEFSR0U/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QtPmNvbnRlbnRsZW46cG9zdC0+Y29udGVudHNsZW5ndGgsICZzaXplKTsKICAgICAgIGZpbGUgPSBmaWxlLT5tb3JlOwogICAgIH0gd2hpbGUoZmlsZSAmJiAhcmVzdWx0KTsgLyogZm9yIGVhY2ggc3BlY2lmaWVkIGZpbGUgZm9yIHRoaXMgZmllbGQgKi8KIApAQCAtMTM1MCw3ICsxMzg1LDcgQEAKICAqIEN1cmxfRm9ybUluaXQoKSBpbml0cyB0aGUgc3RydWN0ICdmb3JtJyBwb2ludHMgdG8gd2l0aCB0aGUgJ2Zvcm1kYXRhJwogICogYW5kIHJlc2V0cyB0aGUgJ3NlbnQnIGNvdW50ZXIuCiAgKi8KLWludCBDdXJsX0Zvcm1Jbml0KHN0cnVjdCBGb3JtICpmb3JtLCBzdHJ1Y3QgRm9ybURhdGEgKmZvcm1kYXRhICkKK2ludCBDdXJsX0Zvcm1Jbml0KHN0cnVjdCBGb3JtICpmb3JtLCBzdHJ1Y3QgRm9ybURhdGEgKmZvcm1kYXRhKQogewogICBpZighZm9ybWRhdGEpCiAgICAgcmV0dXJuIDE7IC8qIGVycm9yICovCkBAIC0xMzg1LDEwICsxNDIwLDEwIEBACiAgIGNhc2UgRkFCJENfVkFSOgogICBjYXNlIEZBQiRDX1ZGQzoKICAgY2FzZSBGQUIkQ19TVE1DUjoKLSAgICByZXR1cm4gZm9wZW4oZmlsZSwgInIiKTsgLyogVk1TICovCisgICAgcmV0dXJuIGZvcGVuKGZpbGUsIEZPUEVOX1JFQURURVhUKTsgLyogVk1TICovCiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIGZvcGVuKGZpbGUsICJyIiwgInJmbT1zdG1sZiIsICJjdHg9c3RtIik7CisgICAgcmV0dXJuIGZvcGVuKGZpbGUsIEZPUEVOX1JFQURURVhULCAicmZtPXN0bWxmIiwgImN0eD1zdG0iKTsKICAgfQogfQogI2VuZGlmCkBAIC0xNDYzLDkgKzE0OTgsOSBAQAogICB9CiAgIGRvIHsKIAotICAgIGlmKChmb3JtLT5kYXRhLT5sZW5ndGggLSBmb3JtLT5zZW50ICkgPiB3YW50ZWRzaXplIC0gZ290c2l6ZSkgeworICAgIGlmKChmb3JtLT5kYXRhLT5sZW5ndGggLSBmb3JtLT5zZW50KSA+IHdhbnRlZHNpemUgLSBnb3RzaXplKSB7CiAKLSAgICAgIG1lbWNweShidWZmZXIgKyBnb3RzaXplICwgZm9ybS0+ZGF0YS0+bGluZSArIGZvcm0tPnNlbnQsCisgICAgICBtZW1jcHkoYnVmZmVyICsgZ290c2l6ZSwgZm9ybS0+ZGF0YS0+bGluZSArIGZvcm0tPnNlbnQsCiAgICAgICAgICAgICAgd2FudGVkc2l6ZSAtIGdvdHNpemUpOwogCiAgICAgICBmb3JtLT5zZW50ICs9IHdhbnRlZHNpemUtZ290c2l6ZTsKZGlmZiAtLWdpdCBhL2xpYi9mb3JtZGF0YS5oIGIvbGliL2Zvcm1kYXRhLmgKaW5kZXggMjJmNTA0Yi4uYTVlYmMxZCAxMDA2NDQKLS0tIGEvbGliL2Zvcm1kYXRhLmgKKysrIGIvbGliL2Zvcm1kYXRhLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01NCw3ICs1NCw3IEBACiAgIHNpemVfdCBuYW1lbGVuZ3RoOwogICBjaGFyICp2YWx1ZTsKICAgYm9vbCB2YWx1ZV9hbGxvYzsKLSAgc2l6ZV90IGNvbnRlbnRzbGVuZ3RoOworICBjdXJsX29mZl90IGNvbnRlbnRzbGVuZ3RoOwogICBjaGFyICpjb250ZW50dHlwZTsKICAgYm9vbCBjb250ZW50dHlwZV9hbGxvYzsKICAgbG9uZyBmbGFnczsKQEAgLTY4LDcgKzY4LDcgQEAKICAgc3RydWN0IEZvcm1JbmZvICptb3JlOwogfSBGb3JtSW5mbzsKIAotaW50IEN1cmxfRm9ybUluaXQoc3RydWN0IEZvcm0gKmZvcm0sIHN0cnVjdCBGb3JtRGF0YSAqZm9ybWRhdGEgKTsKK2ludCBDdXJsX0Zvcm1Jbml0KHN0cnVjdCBGb3JtICpmb3JtLCBzdHJ1Y3QgRm9ybURhdGEgKmZvcm1kYXRhKTsKIAogQ1VSTGNvZGUgQ3VybF9nZXRmb3JtZGF0YShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEZvcm1EYXRhICoqLApkaWZmIC0tZ2l0IGEvbGliL2Z0cC5jIGIvbGliL2Z0cC5jCmluZGV4IGRlNjI4YTIuLmNmYTFiYmIgMTAwNjQ0Ci0tLSBhL2xpYi9mdHAuYworKysgYi9saWIvZnRwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03NywxMCArNzcsOSBAQAogI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAjaW5jbHVkZSAiaHR0cF9wcm94eS5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogI2lmbmRlZiBOSV9NQVhIT1NUCkBAIC0xNTUsOCArMTU0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29ubmVjdGVkKTsKIAogLyogZWFzeS10by11c2UgbWFjcm86ICovCi0jZGVmaW5lIFBQU0VOREYoeCx5LHopICBpZigocmVzdWx0ID0gQ3VybF9wcF9zZW5kZih4LHkseikpKSAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorI2RlZmluZSBQUFNFTkRGKHgseSx6KSAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZih4LHkseik7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogCiAvKgpAQCAtMjY1LDYgKzI2NSwxNSBAQAogI2VuZGlmCiAjZW5kaWYKIAorc3RhdGljIHZvaWQgY2xvc2Vfc2Vjb25kYXJ5c29ja2V0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgaWYoQ1VSTF9TT0NLRVRfQkFEICE9IGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSkgeworICAgIEN1cmxfY2xvc2Vzb2NrZXQoY29ubiwgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKTsKKyAgICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBDVVJMX1NPQ0tFVF9CQUQ7CisgIH0KKyAgY29ubi0+Yml0cy50Y3Bjb25uZWN0W1NFQ09OREFSWVNPQ0tFVF0gPSBGQUxTRTsKKyAgY29ubi0+dHVubmVsX3N0YXRlW1NFQ09OREFSWVNPQ0tFVF0gPSBUVU5ORUxfSU5JVDsKK30KIAogLyoKICAqIE5PVEU6IGJhY2sgaW4gdGhlIG9sZCBkYXlzLCB3ZSBhZGRlZCBjb2RlIGluIHRoZSBGVFAgY29kZSB0aGF0IG1hZGUgTk9CT0RZCkBAIC0zNDAsNiArMzQ5LDkgQEAKICAgICByZXR1cm4gQ1VSTEVfRlRQX1BPUlRfRkFJTEVEOwogICB9CiAgIGluZm9mKGRhdGEsICJDb25uZWN0aW9uIGFjY2VwdGVkIGZyb20gc2VydmVyXG4iKTsKKyAgLyogd2hlbiB0aGlzIGhhcHBlbnMgd2l0aGluIHRoZSBETyBzdGF0ZSBpdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBtYXJrIHVzIGFzCisgICAgIG5vdCBuZWVkaW5nIERPX01PUkUgYW55bW9yZSAqLworICBjb25uLT5iaXRzLmRvX21vcmUgPSBGQUxTRTsKIAogICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBzOwogICAodm9pZCljdXJseF9ub25ibG9jayhzLCBUUlVFKTsgLyogZW5hYmxlIG5vbi1ibG9ja2luZyAqLwpAQCAtMzU0LDggKzM2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTFNPQ0tUWVBFX0FDQ0VQVCk7CiAKICAgICBpZihlcnJvcikgewotICAgICAgQ3VybF9jbG9zZXNvY2tldChjb25uLCBzKTsgLyogY2xvc2UgdGhlIHNvY2tldCBhbmQgYmFpbCBvdXQgKi8KLSAgICAgIGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSA9IENVUkxfU09DS0VUX0JBRDsKKyAgICAgIGNsb3NlX3NlY29uZGFyeXNvY2tldChjb25uKTsKICAgICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOwogICAgIH0KICAgfQpAQCAtNjk4LDcgKzcwOSw3IEBACiAgICAgLyogY2hlY2sgYW5kIHJlc2V0IHRpbWVvdXQgdmFsdWUgZXZlcnkgbGFwICovCiAgICAgdGltZW91dCA9IEN1cmxfcHBfc3RhdGVfdGltZW91dChwcCk7CiAKLSAgICBpZih0aW1lb3V0IDw9MCApIHsKKyAgICBpZih0aW1lb3V0IDw9MCkgewogICAgICAgZmFpbGYoZGF0YSwgIkZUUCByZXNwb25zZSB0aW1lb3V0Iik7CiAgICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOyAvKiBhbHJlYWR5IHRvbyBsaXR0bGUgdGltZSAqLwogICAgIH0KQEAgLTEwMjQsNyArMTAzNSw3IEBACiAgICAgaWYoKnN0cmluZ19mdHBwb3J0ID09ICdbJykgewogICAgICAgLyogW2lwdjZdOnBvcnQoLXJhbmdlKSAqLwogICAgICAgaXBfc3RhcnQgPSBzdHJpbmdfZnRwcG9ydCArIDE7Ci0gICAgICBpZigoaXBfZW5kID0gc3RyY2hyKHN0cmluZ19mdHBwb3J0LCAnXScpKSAhPSBOVUxMICkKKyAgICAgIGlmKChpcF9lbmQgPSBzdHJjaHIoc3RyaW5nX2Z0cHBvcnQsICddJykpICE9IE5VTEwpCiAgICAgICAgIHN0cm5jcHkoYWRkciwgaXBfc3RhcnQsIGlwX2VuZCAtIGlwX3N0YXJ0KTsKICAgICB9CiAgICAgZWxzZQpAQCAtMTA0NSw3ICsxMDU2LDcgQEAKICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAvKiAoaXB2NHxkb21haW58aW50ZXJmYWNlKTpwb3J0KC1yYW5nZSkgKi8KLSAgICAgICAgc3RybmNweShhZGRyLCBzdHJpbmdfZnRwcG9ydCwgaXBfZW5kIC0gaXBfc3RhcnQgKTsKKyAgICAgICAgc3RybmNweShhZGRyLCBzdHJpbmdfZnRwcG9ydCwgaXBfZW5kIC0gaXBfc3RhcnQpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAvKiBpcHY0fGludGVyZmFjZSAqLwpAQCAtMTA2NSwxMSArMTA3NiwxMSBAQAogCiAgICAgLyogY29ycmVjdCBlcnJvcnMgbGlrZToKICAgICAgKiAgOjEyMzQtMTIzMAotICAgICAqICA6LTQ3MTEgLCBpbiB0aGlzIGNhc2UgcG9ydF9taW4gaXMgKHVuc2lnbmVkKS0xLAorICAgICAqICA6LTQ3MTEsICBpbiB0aGlzIGNhc2UgcG9ydF9taW4gaXMgKHVuc2lnbmVkKS0xLAogICAgICAqICAgICAgICAgICB0aGVyZWZvcmUgcG9ydF9taW4gPiBwb3J0X21heCBmb3IgYWxsIGNhc2VzCiAgICAgICogICAgICAgICAgIGJ1dCBwb3J0X21heCA9ICh1bnNpZ25lZCktMQogICAgICAqLwotICAgIGlmKHBvcnRfbWluID4gcG9ydF9tYXggKQorICAgIGlmKHBvcnRfbWluID4gcG9ydF9tYXgpCiAgICAgICBwb3J0X21pbiA9IHBvcnRfbWF4ID0gMDsKIAogCkBAIC0xMzIyLDExICsxMzMzLDExIEBACiAgIC8qIHN0b3JlIHdoaWNoIGNvbW1hbmQgd2FzIHNlbnQgKi8KICAgZnRwYy0+Y291bnQxID0gZmNtZDsKIAorICBjbG9zZV9zZWNvbmRhcnlzb2NrZXQoY29ubik7CisKICAgLyogd2Ugc2V0IHRoZSBzZWNvbmRhcnkgc29ja2V0IHZhcmlhYmxlIHRvIHRoaXMgZm9yIG5vdywgaXQgaXMgb25seSBzbyB0aGF0CiAgICAgIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwgY2xvc2UgaXQgaW4gY2FzZSB3ZSBmYWlsIGJlZm9yZSB0aGUgdHJ1ZQogICAgICBzZWNvbmRhcnkgc3R1ZmYgaXMgbWFkZSAqLwotICBpZihDVVJMX1NPQ0tFVF9CQUQgIT0gY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKQotICAgIEN1cmxfY2xvc2Vzb2NrZXQoY29ubiwgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKTsKICAgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdID0gcG9ydHNvY2s7CiAKICAgLyogdGhpcyB0Y3Bjb25uZWN0IGFzc2lnbm1lbnQgYmVsb3cgaXMgYSBoYWNraXNoIHdvcmstYXJvdW5kIHRvIG1ha2UgdGhlCkBAIC0xNTEzLDEyICsxNTI0LDEyIEBACiAgICAgfQogICB9CiAKLSAgY21kID0gYXByaW50ZiggIiVzJXMlcyIsCi0gICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NVU1RPTVJFUVVFU1RdPwotICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DVVNUT01SRVFVRVNUXToKLSAgICAgICAgICAgICAgICAgKGRhdGEtPnNldC5mdHBfbGlzdF9vbmx5PyJOTFNUIjoiTElTVCIpLAotICAgICAgICAgICAgICAgICBsc3RBcmc/ICIgIjogIiIsCi0gICAgICAgICAgICAgICAgIGxzdEFyZz8gbHN0QXJnOiAiIiApOworICBjbWQgPSBhcHJpbnRmKCIlcyVzJXMiLAorICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NVU1RPTVJFUVVFU1RdPworICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NVU1RPTVJFUVVFU1RdOgorICAgICAgICAgICAgICAgIChkYXRhLT5zZXQuZnRwX2xpc3Rfb25seT8iTkxTVCI6IkxJU1QiKSwKKyAgICAgICAgICAgICAgICBsc3RBcmc/ICIgIjogIiIsCisgICAgICAgICAgICAgICAgbHN0QXJnPyBsc3RBcmc6ICIiKTsKIAogICBpZighY21kKSB7CiAgICAgZnJlZShsc3RBcmcpOwpAQCAtMTY0MCw3ICsxNjUxLDcgQEAKICAgICAvKiA0LiBsb3dlciB0aGUgaW5maWxlc2l6ZSBjb3VudGVyICovCiAgICAgLyogPT4gdHJhbnNmZXIgYXMgdXN1YWwgKi8KIAotICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIDwgMCApIHsKKyAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA8IDApIHsKICAgICAgIC8qIEdvdCBubyBnaXZlbiBzaXplIHRvIHN0YXJ0IGZyb20sIGZpZ3VyZSBpdCBvdXQgKi8KICAgICAgIFBQU0VOREYoJmZ0cGMtPnBwLCAiU0laRSAlcyIsIGZ0cGMtPmZpbGUpOwogICAgICAgc3RhdGUoY29ubiwgRlRQX1NUT1JfU0laRSk7CkBAIC0xNjcwLDggKzE2ODEsOCBAQAogICAgICAgICAgICAgQlVGU0laRSA6IGN1cmx4X3NvdG91eihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSAtIHBhc3NlZCk7CiAKICAgICAgICAgICBzaXplX3QgYWN0dWFsbHlyZWFkID0KLSAgICAgICAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwgcmVhZHRoaXNhbW91bnRub3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuaW4pOworICAgICAgICAgICAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsIHJlYWR0aGlzYW1vdW50bm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7CiAKICAgICAgICAgICBwYXNzZWQgKz0gYWN0dWFsbHlyZWFkOwogICAgICAgICAgIGlmKChhY3R1YWxseXJlYWQgPT0gMCkgfHwgKGFjdHVhbGx5cmVhZCA+IHJlYWR0aGlzYW1vdW50bm93KSkgewpAQCAtMTc4Nyw4ICsxNzk4LDIwIEBACiAgICAgICAgICAgcmVzdWx0ID0gZnRwX3N0YXRlX3JldHIoY29ubiwgZnRwYy0+a25vd25fZmlsZXNpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgIFBQU0VOREYoJmZ0cGMtPnBwLCAiU0laRSAlcyIsIGZ0cGMtPmZpbGUpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIEZUUF9SRVRSX1NJWkUpOworICAgICAgICAgIGlmKGRhdGEtPnNldC5pZ25vcmVjbCkgeworICAgICAgICAgICAgLyogVGhpcyBjb2RlIGlzIHRvIHN1cHBvcnQgZG93bmxvYWQgb2YgZ3Jvd2luZyBmaWxlcy4gIEl0IHByZXZlbnRzCisgICAgICAgICAgICAgICB0aGUgc3RhdGUgbWFjaGluZSBmcm9tIHJlcXVlc3RpbmcgdGhlIGZpbGUgc2l6ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgc2VydmVyLiAgV2l0aCBhbiB1bmtub3duIGZpbGUgc2l6ZSB0aGUgZG93bmxvYWQgY29udGludWVzIHVudGlsCisgICAgICAgICAgICAgICB0aGUgc2VydmVyIHRlcm1pbmF0ZXMgaXQsIG90aGVyd2lzZSB0aGUgY2xpZW50IHN0b3BzIGlmIHRoZQorICAgICAgICAgICAgICAgcmVjZWl2ZWQgYnl0ZSBjb3VudCBleGNlZWRzIHRoZSByZXBvcnRlZCBmaWxlIHNpemUuICBTZXQgb3B0aW9uCisgICAgICAgICAgICAgICBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCB0byAxIHRvIGVuYWJsZSB0aGlzIGJlaGF2aW9yLiovCisgICAgICAgICAgICBQUFNFTkRGKCZmdHBjLT5wcCwgIlJFVFIgJXMiLCBmdHBjLT5maWxlKTsKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIEZUUF9SRVRSKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQUFNFTkRGKCZmdHBjLT5wcCwgIlNJWkUgJXMiLCBmdHBjLT5maWxlKTsKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIEZUUF9SRVRSX1NJWkUpOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0xODg3LDcgKzE5MTAsNyBAQAogICAgIG1lbXNldCgmaHR0cF9wcm94eSwgMCwgc2l6ZW9mKGh0dHBfcHJveHkpKTsKICAgICBkYXRhLT5yZXEucHJvdG9wID0gJmh0dHBfcHJveHk7CiAKLSAgICByZXN1bHQgPSBDdXJsX3Byb3h5Q09OTkVDVChjb25uLCBTRUNPTkRBUllTT0NLRVQsIG5ld2hvc3QsIG5ld3BvcnQpOworICAgIHJlc3VsdCA9IEN1cmxfcHJveHlDT05ORUNUKGNvbm4sIFNFQ09OREFSWVNPQ0tFVCwgbmV3aG9zdCwgbmV3cG9ydCwgVFJVRSk7CiAKICAgICBkYXRhLT5yZXEucHJvdG9wID0gZnRwX3NhdmU7CiAKQEAgLTMyMTgsNyArMzI0MSw3IEBACiAgKiBJbnB1dCBhcmd1bWVudCBpcyBhbHJlYWR5IGNoZWNrZWQgZm9yIHZhbGlkaXR5LgogICovCiBzdGF0aWMgQ1VSTGNvZGUgZnRwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBDVVJMY29kZSBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKIHsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3QgRlRQICpmdHAgPSBkYXRhLT5yZXEucHJvdG9wOwpAQCAtMzIzMiwxMSArMzI1NSw2IEBACiAgIGNvbnN0IGNoYXIgKnBhdGhfdG9fdXNlID0gZGF0YS0+c3RhdGUucGF0aDsKIAogICBpZighZnRwKQotICAgIC8qIFdoZW4gdGhlIGVhc3kgaGFuZGxlIGlzIHJlbW92ZWQgZnJvbSB0aGUgbXVsdGkgd2hpbGUgbGliY3VybCBpcyBzdGlsbAotICAgICAqIHRyeWluZyB0byByZXNvbHZlIHRoZSBob3N0IG5hbWUsIGl0IHNlZW1zIHRoYXQgdGhlIGZ0cCBzdHJ1Y3QgaXMgbm90Ci0gICAgICogeWV0IGluaXRpYWxpemVkLCBidXQgdGhlIHJlbW92YWwgYWN0aW9uIGNhbGxzIEN1cmxfZG9uZSgpIHdoaWNoIGNhbGxzCi0gICAgICogdGhpcyBmdW5jdGlvbi4gU28gd2Ugc2ltcGx5IHJldHVybiBzdWNjZXNzIGlmIG5vIGZ0cCBwb2ludGVyIGlzIHNldC4KLSAgICAgKi8KICAgICByZXR1cm4gQ1VSTEVfT0s7CiAKICAgc3dpdGNoKHN0YXR1cykgewpAQCAtMzM0NSwxMSArMzM2Myw3IEBACiAgICAgICAvKiBOb3RlIHRoYXQgd2Uga2VlcCAidXNlIiBzZXQgdG8gVFJVRSBzaW5jZSB0aGF0IChuZXh0KSBjb25uZWN0aW9uIGlzCiAgICAgICAgICBzdGlsbCByZXF1ZXN0ZWQgdG8gdXNlIFNTTCAqLwogICAgIH0KLSAgICBpZihDVVJMX1NPQ0tFVF9CQUQgIT0gY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKSB7Ci0gICAgICBDdXJsX2Nsb3Nlc29ja2V0KGNvbm4sIGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSk7Ci0gICAgICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBDVVJMX1NPQ0tFVF9CQUQ7Ci0gICAgICBjb25uLT5iaXRzLnRjcGNvbm5lY3RbU0VDT05EQVJZU09DS0VUXSA9IEZBTFNFOwotICAgIH0KKyAgICBjbG9zZV9zZWNvbmRhcnlzb2NrZXQoY29ubik7CiAgIH0KIAogICBpZighcmVzdWx0ICYmIChmdHAtPnRyYW5zZmVyID09IEZUUFRSQU5TRkVSX0JPRFkpICYmIGZ0cGMtPmN0bF92YWxpZCAmJgpAQCAtMzY0NSw3ICszNjU5LDcgQEAKICAgICBpZihjb25uLT50dW5uZWxfc3RhdGVbU0VDT05EQVJZU09DS0VUXSA9PSBUVU5ORUxfQ09OTkVDVCkgewogICAgICAgLyogQXMgd2UncmUgaW4gVFVOTkVMX0NPTk5FQ1Qgc3RhdGUgbm93LCB3ZSBrbm93IHRoZSBwcm94eSBuYW1lIGFuZCBwb3J0CiAgICAgICAgICBhcmVuJ3QgdXNlZCBzbyB3ZSBibGFuayB0aGVpciBhcmd1bWVudHMuIFRPRE86IG1ha2UgdGhpcyBuaWNlciAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9wcm94eUNPTk5FQ1QoY29ubiwgU0VDT05EQVJZU09DS0VULCBOVUxMLCAwKTsKKyAgICAgIHJlc3VsdCA9IEN1cmxfcHJveHlDT05ORUNUKGNvbm4sIFNFQ09OREFSWVNPQ0tFVCwgTlVMTCwgMCwgRkFMU0UpOwogCiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTM3MjAsNyArMzczNCwxMyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICByZXN1bHQgPSBmdHBfbXVsdGlfc3RhdGVtYWNoKGNvbm4sICZjb21wbGV0ZSk7Ci0gICAgICAqY29tcGxldGVwID0gKGludCljb21wbGV0ZTsKKyAgICAgIGlmKGZ0cGMtPndhaXRfZGF0YV9jb25uKQorICAgICAgICAvKiBpZiB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBGVFAgc3RhdGUgbWFjaGluZSBoZXJlLCAqY29tcGxldGUgd2lsbCBiZQorICAgICAgICAgICBUUlVFIGJ1dCBzbyBpcyBmdHBjLT53YWl0X2RhdGFfY29ubiwgd2hpY2ggc2F5cyB3ZSBuZWVkIHRvIHdhaXQgZm9yCisgICAgICAgICAgIHRoZSBkYXRhIGNvbm5lY3Rpb24gYW5kIHRoZXJlZm9yZSB3ZSdyZSBub3QgYWN0dWFsbHkgY29tcGxldGUgKi8KKyAgICAgICAgKmNvbXBsZXRlcCA9IDA7CisgICAgICBlbHNlCisgICAgICAgICpjb21wbGV0ZXAgPSAoaW50KWNvbXBsZXRlOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIC8qIGRvd25sb2FkICovCkBAIC00MjQ4LDE2ICs0MjY4LDE3IEBACiAgICAgICB0aGUgZmlyc3QgY29uZGl0aW9uIGluIHRoZSBpZigpIHJpZ2h0IGhlcmUsIGlzIHRoZXJlIGp1c3QgaW4gY2FzZQogICAgICAgc29tZW9uZSBkZWNpZGVzIHRvIHNldCBwYXRoIHRvIE5VTEwgb25lIGRheQogICAgKi8KLSAgICBpZihkYXRhLT5zdGF0ZS5wYXRoICYmCi0gICAgICAgZGF0YS0+c3RhdGUucGF0aFswXSAmJgotICAgICAgIChkYXRhLT5zdGF0ZS5wYXRoW3N0cmxlbihkYXRhLT5zdGF0ZS5wYXRoKSAtIDFdICE9ICcvJykgKQotICAgICAgZmlsZW5hbWUgPSBkYXRhLT5zdGF0ZS5wYXRoOyAgLyogdGhpcyBpcyBhIGZ1bGwgZmlsZSBwYXRoICovCi0gICAgICAvKgorICAgIGlmKHBhdGhfdG9fdXNlWzBdICYmCisgICAgICAgKHBhdGhfdG9fdXNlW3N0cmxlbihwYXRoX3RvX3VzZSkgLSAxXSAhPSAnLycpICkKKyAgICAgIGZpbGVuYW1lID0gcGF0aF90b191c2U7ICAvKiB0aGlzIGlzIGEgZnVsbCBmaWxlIHBhdGggKi8KKyAgICAvKgorICAgICAgZWxzZSB7CiAgICAgICAgIGZ0cGMtPmZpbGUgaXMgbm90IHVzZWQgYW55d2hlcmUgb3RoZXIgdGhhbiBmb3Igb3BlcmF0aW9ucyBvbiBhIGZpbGUuCiAgICAgICAgIEluIG90aGVyIHdvcmRzLCBuZXZlciBmb3IgZGlyZWN0b3J5IG9wZXJhdGlvbnMuCiAgICAgICAgIFNvIHdlIGNhbiBzYWZlbHkgbGVhdmUgZmlsZW5hbWUgYXMgTlVMTCBoZXJlIGFuZCB1c2UgaXQgYXMgYQogICAgICAgICBhcmd1bWVudCBpbiBkaXIvZmlsZSBkZWNpc2lvbnMuCi0gICAgICAqLworICAgICAgfQorICAgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSBGVFBGSUxFX1NJTkdMRUNXRDoKQEAgLTQ0MjIsMTEgKzQ0NDMsNyBAQAogICAgIENVUkxjb2RlIHJlc3VsdCA9IGZ0cF9kb19tb3JlKGNvbm4sICZjb21wbGV0ZWQpOwogCiAgICAgaWYocmVzdWx0KSB7Ci0gICAgICBpZihjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gIT0gQ1VSTF9TT0NLRVRfQkFEKSB7Ci0gICAgICAgIC8qIGNsb3NlIHRoZSBzZWNvbmQgc29ja2V0IGlmIGl0IHdhcyBjcmVhdGVkIGFscmVhZHkgKi8KLSAgICAgICAgQ3VybF9jbG9zZXNvY2tldChjb25uLCBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0pOwotICAgICAgICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBDVVJMX1NPQ0tFVF9CQUQ7Ci0gICAgICB9CisgICAgICBjbG9zZV9zZWNvbmRhcnlzb2NrZXQoY29ubik7CiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvbGliL2Z0cC5oIGIvbGliL2Z0cC5oCmluZGV4IDgzMzQ0N2IuLjc0OTVlM2UgMTAwNjQ0Ci0tLSBhL2xpYi9mdHAuaAorKysgYi9saWIvZnRwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZnRwbGlzdHBhcnNlci5jIGIvbGliL2Z0cGxpc3RwYXJzZXIuYwppbmRleCAxN2UwYTY2Li5hYmJmNzZlIDEwMDY0NAotLS0gYS9saWIvZnRwbGlzdHBhcnNlci5jCisrKyBiL2xpYi9mdHBsaXN0cGFyc2VyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjc1LDI2ICsyNzUsNiBAQAogICBwYXJzZXItPmVycm9yID0gZXJyOwogfQogCi1zdGF0aWMgYm9vbCBmdHBfcGxfZ2V0dGltZShzdHJ1Y3QgZnRwX3BhcnNlbGlzdF9kYXRhICpwYXJzZXIsIGNoYXIgKnN0cmluZykKLXsKLSAgKHZvaWQpcGFyc2VyOwotICAodm9pZClzdHJpbmc7Ci0gIC8qIFRPRE8KLSAgICogVGhlcmUgY291bGQgYmUgcG9zc2libGUgcGFyc2UgdGltZXN0YW1wIGZyb20gc2VydmVyLiBMZWF2aW5nIHVuaW1wbGVtZW50ZWQKLSAgICogZm9yIG5vdy4KLSAgICogSWYgeW91IHdhbnQgaW1wbGVtZW50IHRoaXMsIHBsZWFzZSBhZGQgQ1VSTEZJTkZPRkxBR19LTk9XTl9USU1FIGZsYWcgdG8KLSAgICogcGFyc2VyLT5maWxlX2RhdGEtPmZsYWdzCi0gICAqCi0gICAqIEZ0cCBzZXJ2ZXJzIGFyZSBnaXZpbmcgdXN1YWxseSB0aGVzZSBmb3JtYXRzOgotICAgKiAgQXByIDExICAxOTk4ICh1bmtub3duIHRpbWUuLiBzZXQgaXQgdG8gMDA6MDA6MDA/KQotICAgKiAgQXByIDExIDEyOjIxICh1bmtub3duIHllYXIgLT4gc2V0IGl0IHRvIE5PVygpIHRpbWU/KQotICAgKiAgMDgtMDUtMDkgIDAyOjQ5UE0gIChtcy1kb3MgZm9ybWF0KQotICAgKiAgMjAxMDA0MjEwOTI1MzggLT4gZm9yIE1MU1QvTUxTRCByZXNwb25zZQotICAgKi8KLQotICByZXR1cm4gRkFMU0U7Ci19Ci0KIHN0YXRpYyBDVVJMY29kZSBmdHBfcGxfaW5zZXJ0X2ZpbmZvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX2ZpbGVpbmZvICpmaW5mbykKIHsKQEAgLTcxNSw5ICs2OTUsMTEgQEAKICAgICAgICAgICBpZihjID09ICcgJykgewogICAgICAgICAgICAgZmluZm8tPmJfZGF0YVtwYXJzZXItPml0ZW1fb2Zmc2V0ICsgcGFyc2VyLT5pdGVtX2xlbmd0aCAtMV0gPSAwOwogICAgICAgICAgICAgcGFyc2VyLT5vZmZzZXRzLnRpbWUgPSBwYXJzZXItPml0ZW1fb2Zmc2V0OwotICAgICAgICAgICAgaWYoZnRwX3BsX2dldHRpbWUocGFyc2VyLCBmaW5mby0+Yl9kYXRhICsgcGFyc2VyLT5pdGVtX29mZnNldCkpIHsKLSAgICAgICAgICAgICAgcGFyc2VyLT5maWxlX2RhdGEtPmZsYWdzIHw9IENVUkxGSU5GT0ZMQUdfS05PV05fVElNRTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgIGlmKGZ0cF9wbF9nZXR0aW1lKHBhcnNlciwgZmluZm8tPmJfZGF0YSArIHBhcnNlci0+aXRlbV9vZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5maWxlX2RhdGEtPmZsYWdzIHw9IENVUkxGSU5GT0ZMQUdfS05PV05fVElNRTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmKGZpbmZvLT5maWxldHlwZSA9PSBDVVJMRklMRVRZUEVfU1lNTElOSykgewogICAgICAgICAgICAgICBwYXJzZXItPnN0YXRlLlVOSVgubWFpbiA9IFBMX1VOSVhfU1lNTElOSzsKICAgICAgICAgICAgICAgcGFyc2VyLT5zdGF0ZS5VTklYLnN1Yi5zeW1saW5rID0gUExfVU5JWF9TWU1MSU5LX1BSRVNQQUNFOwpAQCAtNzQ2LDcgKzcyOCw2IEBACiAgICAgICAgIGNhc2UgUExfVU5JWF9GSUxFTkFNRV9OQU1FOgogICAgICAgICAgIHBhcnNlci0+aXRlbV9sZW5ndGgrKzsKICAgICAgICAgICBpZihjID09ICdccicpIHsKLSAgICAgICAgICAgIHBhcnNlci0+aXRlbV9sZW5ndGgtLTsKICAgICAgICAgICAgIHBhcnNlci0+c3RhdGUuVU5JWC5zdWIuZmlsZW5hbWUgPSBQTF9VTklYX0ZJTEVOQU1FX1dJTkRPV1NFT0w7CiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UgaWYoYyA9PSAnXG4nKSB7CkBAIC03NjIsNyArNzQzLDcgQEAKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTF9VTklYX0ZJTEVOQU1FX1dJTkRPV1NFT0w6CiAgICAgICAgICAgaWYoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBmaW5mby0+Yl9kYXRhW3BhcnNlci0+aXRlbV9vZmZzZXQgKyBwYXJzZXItPml0ZW1fbGVuZ3RoXSA9IDA7CisgICAgICAgICAgICBmaW5mby0+Yl9kYXRhW3BhcnNlci0+aXRlbV9vZmZzZXQgKyBwYXJzZXItPml0ZW1fbGVuZ3RoIC0gMV0gPSAwOwogICAgICAgICAgICAgcGFyc2VyLT5vZmZzZXRzLmZpbGVuYW1lID0gcGFyc2VyLT5pdGVtX29mZnNldDsKICAgICAgICAgICAgIHBhcnNlci0+c3RhdGUuVU5JWC5tYWluID0gUExfVU5JWF9GSUxFVFlQRTsKICAgICAgICAgICAgIHJlc3VsdCA9IGZ0cF9wbF9pbnNlcnRfZmluZm8oY29ubiwgZmluZm8pOwpAQCAtODUzLDkgKzgzNCw4IEBACiAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBMX1VOSVhfU1lNTElOS19UQVJHRVQ6Ci0gICAgICAgICAgcGFyc2VyLT5pdGVtX2xlbmd0aCArKzsKKyAgICAgICAgICBwYXJzZXItPml0ZW1fbGVuZ3RoKys7CiAgICAgICAgICAgaWYoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICBwYXJzZXItPml0ZW1fbGVuZ3RoIC0tOwogICAgICAgICAgICAgcGFyc2VyLT5zdGF0ZS5VTklYLnN1Yi5zeW1saW5rID0gUExfVU5JWF9TWU1MSU5LX1dJTkRPV1NFT0w7CiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UgaWYoYyA9PSAnXG4nKSB7CmRpZmYgLS1naXQgYS9saWIvZnRwbGlzdHBhcnNlci5oIGIvbGliL2Z0cGxpc3RwYXJzZXIuaAppbmRleCA5Njc2NGUyLi44MTI4ODg3IDEwMDY0NAotLS0gYS9saWIvZnRwbGlzdHBhcnNlci5oCisrKyBiL2xpYi9mdHBsaXN0cGFyc2VyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZ2V0ZW52LmMgYi9saWIvZ2V0ZW52LmMKaW5kZXggMzYyMTVhYS4uNTBiYjc5ZiAxMDA2NDQKLS0tIGEvbGliL2dldGVudi5jCisrKyBiL2xpYi9nZXRlbnYuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZ2V0aW5mby5jIGIvbGliL2dldGluZm8uYwppbmRleCA5MTBmNTIwLi5kNGIwMWJmIDEwMDY0NAotLS0gYS9saWIvZ2V0aW5mby5jCisrKyBiL2xpYi9nZXRpbmZvLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgYnJlYWs7CiAKICAgZGVmYXVsdDoKLSAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworICAgIHJldHVybiBDVVJMRV9VTktOT1dOX09QVElPTjsKICAgfQogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTIwMCw3ICsyMDAsNyBAQAogICAgIGJyZWFrOwogCiAgIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICByZXR1cm4gQ1VSTEVfVU5LTk9XTl9PUFRJT047CiAgIH0KIAogICByZXR1cm4gQ1VSTEVfT0s7CkBAIC0yNTMsNyArMjUzLDcgQEAKICAgICBicmVhazsKIAogICBkZWZhdWx0OgotICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgcmV0dXJuIENVUkxFX1VOS05PV05fT1BUSU9OOwogICB9CiAKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMjgxLDU0ICsyODEsNjkgQEAKICAgICAqcGFyYW1fc2xpc3RwID0gcHRyLnRvX3NsaXN0OwogICAgIGJyZWFrOwogICBjYXNlIENVUkxJTkZPX1RMU19TRVNTSU9OOgorICBjYXNlIENVUkxJTkZPX1RMU19TU0xfUFRSOgogICAgIHsKICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICoqdHNpcCA9IChzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtX3NsaXN0cDsKICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICp0c2kgPSAmZGF0YS0+dHNpOwogICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gZGF0YS0+ZWFzeV9jb25uOwotICAgICAgdW5zaWduZWQgaW50IHNvY2tpbmRleCA9IDA7Ci0gICAgICB2b2lkICppbnRlcm5hbHMgPSBOVUxMOwogCiAgICAgICAqdHNpcCA9IHRzaTsKLSAgICAgIHRzaS0+YmFja2VuZCA9IENVUkxTU0xCQUNLRU5EX05PTkU7CisgICAgICB0c2ktPmJhY2tlbmQgPSBDdXJsX3NzbF9iYWNrZW5kKCk7CiAgICAgICB0c2ktPmludGVybmFscyA9IE5VTEw7CiAKLSAgICAgIGlmKCFjb25uKQotICAgICAgICBicmVhazsKLQotICAgICAgLyogRmluZCB0aGUgYWN0aXZlICgiaW4gdXNlIikgU1NMIGNvbm5lY3Rpb24sIGlmIGFueSAqLwotICAgICAgd2hpbGUoKHNvY2tpbmRleCA8IHNpemVvZihjb25uLT5zc2wpIC8gc2l6ZW9mKGNvbm4tPnNzbFswXSkpICYmCi0gICAgICAgICAgICAoIWNvbm4tPnNzbFtzb2NraW5kZXhdLnVzZSkpCi0gICAgICAgIHNvY2tpbmRleCsrOwotCi0gICAgICBpZihzb2NraW5kZXggPT0gc2l6ZW9mKGNvbm4tPnNzbCkgLyBzaXplb2YoY29ubi0+c3NsWzBdKSkKLSAgICAgICAgYnJlYWs7IC8qIG5vIFNTTCBzZXNzaW9uIGZvdW5kICovCi0KLSAgICAgIC8qIFJldHVybiB0aGUgVExTIHNlc3Npb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVsZXZhbnQgYmFja2VuZCAqLwotI2lmZGVmIFVTRV9PUEVOU1NMCi0gICAgICBpbnRlcm5hbHMgPSBjb25uLT5zc2xbc29ja2luZGV4XS5jdHg7CisgICAgICBpZihjb25uICYmIHRzaS0+YmFja2VuZCAhPSBDVVJMU1NMQkFDS0VORF9OT05FKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBmb3IoaSA9IDA7IGkgPCAoc2l6ZW9mKGNvbm4tPnNzbCkgLyBzaXplb2YoY29ubi0+c3NsWzBdKSk7ICsraSkgeworICAgICAgICAgIGlmKGNvbm4tPnNzbFtpXS51c2UpIHsKKyNpZiBkZWZpbmVkKFVTRV9BWFRMUykKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKiljb25uLT5zc2xbaV0uc3NsOworI2VsaWYgZGVmaW5lZChVU0VfQ1lBU1NMKQorICAgICAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSAodm9pZCAqKWNvbm4tPnNzbFtpXS5oYW5kbGU7CisjZWxpZiBkZWZpbmVkKFVTRV9EQVJXSU5TU0wpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopY29ubi0+c3NsW2ldLnNzbF9jdHg7CisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopY29ubi0+c3NsW2ldLnNlc3Npb247CisjZWxpZiBkZWZpbmVkKFVTRV9HU0tJVCkKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKiljb25uLT5zc2xbaV0uaGFuZGxlOworI2VsaWYgZGVmaW5lZChVU0VfTUJFRFRMUykKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKikmY29ubi0+c3NsW2ldLnNzbDsKKyNlbGlmIGRlZmluZWQoVVNFX05TUykKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKiljb25uLT5zc2xbaV0uaGFuZGxlOworI2VsaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkKKyAgICAgICAgICAgIC8qIExlZ2FjeTogQ1VSTElORk9fVExTX1NFU1NJT04gbXVzdCByZXR1cm4gYW4gU1NMX0NUWCBwb2ludGVyLiAqLworICAgICAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSAoKGluZm8gPT0gQ1VSTElORk9fVExTX1NFU1NJT04pID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopY29ubi0+c3NsW2ldLmN0eCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWNvbm4tPnNzbFtpXS5oYW5kbGUpOworI2VsaWYgZGVmaW5lZChVU0VfUE9MQVJTU0wpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopJmNvbm4tPnNzbFtpXS5zc2w7CisjZWxpZiBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKikmY29ubi0+c3NsW2ldLmN0eHQtPmN0eHRfaGFuZGxlOworI2VsaWYgZGVmaW5lZChVU0VfU1NMKQorI2Vycm9yICJTU0wgYmFja2VuZCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBtaXNzaW5nIGZvciBDVVJMSU5GT19UTFNfU1NMX1BUUiIKICNlbmRpZgotI2lmZGVmIFVTRV9HTlVUTFMKLSAgICAgIGludGVybmFscyA9IGNvbm4tPnNzbFtzb2NraW5kZXhdLnNlc3Npb247Ci0jZW5kaWYKLSNpZmRlZiBVU0VfTlNTCi0gICAgICBpbnRlcm5hbHMgPSBjb25uLT5zc2xbc29ja2luZGV4XS5oYW5kbGU7Ci0jZW5kaWYKLSNpZmRlZiBVU0VfR1NLSVQKLSAgICAgIGludGVybmFscyA9IGNvbm4tPnNzbFtzb2NraW5kZXhdLmhhbmRsZTsKLSNlbmRpZgotICAgICAgaWYoaW50ZXJuYWxzKSB7Ci0gICAgICAgIHRzaS0+YmFja2VuZCA9IEN1cmxfc3NsX2JhY2tlbmQoKTsKLSAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSBpbnRlcm5hbHM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0KLSAgICAgIC8qIE5PVEU6IEZvciBvdGhlciBTU0wgYmFja2VuZHMsIGl0IGlzIG5vdCBpbW1lZGlhdGVseSBjbGVhciB3aGF0IGRhdGEKLSAgICAgICAgIHRvIHJldHVybiBmcm9tICdzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSc7IHRodXMsIGZvciBub3cgd2Uga2VlcCB0aGUKLSAgICAgICAgIGJhY2tlbmQgYXMgQ1VSTFNTTEJBQ0tFTkRfTk9ORSBpbiB0aG9zZSBjYXNlcywgd2hpY2ggc2hvdWxkIGJlCi0gICAgICAgICBpbnRlcnByZXRlZCBhcyAibm90IHN1cHBvcnRlZCIgKi8KICAgICB9CiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICByZXR1cm4gQ1VSTEVfVU5LTk9XTl9PUFRJT047CisgIH0KKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBnZXRpbmZvX3NvY2tldChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgQ1VSTElORk8gaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpwYXJhbV9zb2NrZXRwKQoreworICBzd2l0Y2goaW5mbykgeworICBjYXNlIENVUkxJTkZPX0FDVElWRVNPQ0tFVDoKKyAgICAqcGFyYW1fc29ja2V0cCA9IEN1cmxfZ2V0Y29ubmVjdGluZm8oZGF0YSwgTlVMTCk7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgcmV0dXJuIENVUkxFX1VOS05PV05fT1BUSU9OOwogICB9CiAKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMzQxLDkgKzM1Niw5IEBACiAgIGRvdWJsZSAqcGFyYW1fZG91YmxlcCA9IE5VTEw7CiAgIGNoYXIgKipwYXJhbV9jaGFycCA9IE5VTEw7CiAgIHN0cnVjdCBjdXJsX3NsaXN0ICoqcGFyYW1fc2xpc3RwID0gTlVMTDsKKyAgY3VybF9zb2NrZXRfdCAqcGFyYW1fc29ja2V0cCA9IE5VTEw7CiAgIGludCB0eXBlOwotICAvKiBkZWZhdWx0IHJldHVybiBjb2RlIGlzIHRvIGVycm9yIG91dCEgKi8KLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9VTktOT1dOX09QVElPTjsKIAogICBpZighZGF0YSkKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzcyLDYgKzM4NywxMSBAQAogICAgIGlmKHBhcmFtX3NsaXN0cCkKICAgICAgIHJlc3VsdCA9IGdldGluZm9fc2xpc3QoZGF0YSwgaW5mbywgcGFyYW1fc2xpc3RwKTsKICAgICBicmVhazsKKyAgY2FzZSBDVVJMSU5GT19TT0NLRVQ6CisgICAgcGFyYW1fc29ja2V0cCA9IHZhX2FyZyhhcmcsIGN1cmxfc29ja2V0X3QgKik7CisgICAgaWYocGFyYW1fc29ja2V0cCkKKyAgICAgIHJlc3VsdCA9IGdldGluZm9fc29ja2V0KGRhdGEsIGluZm8sIHBhcmFtX3NvY2tldHApOworICAgIGJyZWFrOwogICBkZWZhdWx0OgogICAgIGJyZWFrOwogICB9CmRpZmYgLS1naXQgYS9saWIvZ2V0aW5mby5oIGIvbGliL2dldGluZm8uaAppbmRleCAzODc5ZmY3Li40YzJjMTY4IDEwMDY0NAotLS0gYS9saWIvZ2V0aW5mby5oCisrKyBiL2xpYi9nZXRpbmZvLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZ29waGVyLmMgYi9saWIvZ29waGVyLmMKaW5kZXggOTU0Y2FkOC4uMTlmMmY1YSAxMDA2NDQKLS0tIGEvbGliL2dvcGhlci5jCisrKyBiL2xpYi9nb3BoZXIuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04MywxNiArODMsMTggQEAKICAgY2hhciAqc2VsOwogICBjaGFyICpzZWxfb3JnID0gTlVMTDsKICAgc3NpemVfdCBhbW91bnQsIGs7CisgIGludCBsZW47CiAKICAgKmRvbmUgPSBUUlVFOyAvKiB1bmNvbmRpdGlvbmFsbHkgKi8KIAogICAvKiBDcmVhdGUgc2VsZWN0b3IuIERlZ2VuZXJhdGUgY2FzZXM6IC8gYW5kIC8xID0+IGNvbnZlcnQgdG8gIiIgKi8KLSAgaWYoc3RybGVuKHBhdGgpIDw9IDIpCisgIGlmKHN0cmxlbihwYXRoKSA8PSAyKSB7CiAgICAgc2VsID0gKGNoYXIgKikiIjsKKyAgICBsZW4gPSAoaW50KXN0cmxlbihzZWwpOworICB9CiAgIGVsc2UgewogICAgIGNoYXIgKm5ld3A7CiAgICAgc2l6ZV90IGosIGk7Ci0gICAgaW50IGxlbjsKIAogICAgIC8qIE90aGVyd2lzZSwgZHJvcCAvIGFuZCB0aGUgZmlyc3QgY2hhcmFjdGVyIChpLmUuLCBpdGVtIHR5cGUpIC4uLiAqLwogICAgIG5ld3AgPSBwYXRoOwpAQCAtMTEzLDcgKzExNSw3IEBACiAKICAgLyogV2UgdXNlIEN1cmxfd3JpdGUgaW5zdGVhZCBvZiBDdXJsX3NlbmRmIHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGJ1ZmZlciBpcwogICAgICBzZW50LCB3aGljaCBjb3VsZCBiZSBzaXplYWJsZSB3aXRoIGxvbmcgc2VsZWN0b3JzLiAqLwotICBrID0gY3VybHhfdXp0b3N6KHN0cmxlbihzZWwpKTsKKyAgayA9IGN1cmx4X3V6dG9zeihsZW4pOwogCiAgIGZvcig7OykgewogICAgIHJlc3VsdCA9IEN1cmxfd3JpdGUoY29ubiwgc29ja2ZkLCBzZWwsIGssICZhbW91bnQpOwpkaWZmIC0tZ2l0IGEvbGliL2dvcGhlci5oIGIvbGliL2dvcGhlci5oCmluZGV4IDM4YmJjNGIuLjUwMWM5OTAgMTAwNjQ0Ci0tLSBhL2xpYi9nb3BoZXIuaAorKysgYi9saWIvZ29waGVyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaGFzaC5jIGIvbGliL2hhc2guYwppbmRleCBjNDY3NjBhLi45MzczODFiIDEwMDY0NAotLS0gYS9saWIvaGFzaC5jCisrKyBiL2xpYi9oYXNoLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw5ICsyMiwxMiBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKICNpbmNsdWRlICJoYXNoLmgiCiAjaW5jbHVkZSAibGxpc3QuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorCiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC00Niw3ICs0OSwxMiBAQAogICBmcmVlKGUpOwogfQogCi0vKiByZXR1cm4gMSBvbiBlcnJvciwgMCBpcyBmaW5lICovCisvKiBJbml0aWFsaXplcyBhIGhhc2ggc3RydWN0dXJlLgorICogUmV0dXJuIDEgb24gZXJyb3IsIDAgaXMgZmluZS4KKyAqCisgKiBAdW5pdHRlc3Q6IDE2MDIKKyAqIEB1bml0dGVzdDogMTYwMworICovCiBpbnQKIEN1cmxfaGFzaF9pbml0KHN0cnVjdCBjdXJsX2hhc2ggKmgsCiAgICAgICAgICAgICAgICBpbnQgc2xvdHMsCkBAIC0xMTksNiArMTI3LDggQEAKICAqIHRoYXQgZGF0YSBpcyByZXBsYWNlZC4KICAqCiAgKiBAdW5pdHRlc3Q6IDEzMDUKKyAqIEB1bml0dGVzdDogMTYwMgorICogQHVuaXR0ZXN0OiAxNjAzCiAgKi8KIHZvaWQgKgogQ3VybF9oYXNoX2FkZChzdHJ1Y3QgY3VybF9oYXNoICpoLCB2b2lkICprZXksIHNpemVfdCBrZXlfbGVuLCB2b2lkICpwKQpAQCAtMTU1LDcgKzE2NSwxMSBAQAogICByZXR1cm4gTlVMTDsgLyogZmFpbHVyZSAqLwogfQogCi0vKiByZW1vdmUgdGhlIGlkZW50aWZpZWQgaGFzaCBlbnRyeSwgcmV0dXJucyBub24temVybyBvbiBmYWlsdXJlICovCisvKiBSZW1vdmUgdGhlIGlkZW50aWZpZWQgaGFzaCBlbnRyeS4KKyAqIFJldHVybnMgbm9uLXplcm8gb24gZmFpbHVyZS4KKyAqCisgKiBAdW5pdHRlc3Q6IDE2MDMKKyAqLwogaW50IEN1cmxfaGFzaF9kZWxldGUoc3RydWN0IGN1cmxfaGFzaCAqaCwgdm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbikKIHsKICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqbGU7CkBAIC0xNzMsNiArMTg3LDEwIEBACiAgIHJldHVybiAxOwogfQogCisvKiBSZXRyaWV2ZXMgYSBoYXNoIGVsZW1lbnQuCisgKgorICogQHVuaXR0ZXN0OiAxNjAzCisgKi8KIHZvaWQgKgogQ3VybF9oYXNoX3BpY2soc3RydWN0IGN1cmxfaGFzaCAqaCwgdm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbikKIHsKQEAgLTIxNCw2ICsyMzIsMTAgQEAKIAogLyogRGVzdHJveXMgYWxsIHRoZSBlbnRyaWVzIGluIHRoZSBnaXZlbiBoYXNoIGFuZCByZXNldHMgaXRzIGF0dHJpYnV0ZXMsCiAgKiBwcmVwcGluZyB0aGUgZ2l2ZW4gaGFzaCBmb3IgW3N0YXRpY3xkeW5hbWljXSBkZWFsbG9jYXRpb24uCisgKgorICogQHVuaXR0ZXN0OiAxMzA1CisgKiBAdW5pdHRlc3Q6IDE2MDIKKyAqIEB1bml0dGVzdDogMTYwMwogICovCiB2b2lkCiBDdXJsX2hhc2hfZGVzdHJveShzdHJ1Y3QgY3VybF9oYXNoICpoKQpkaWZmIC0tZ2l0IGEvbGliL2hhc2guaCBiL2xpYi9oYXNoLmgKaW5kZXggYjEzYTIzNi4uNTdhMTdmMCAxMDA2NDQKLS0tIGEvbGliL2hhc2guaAorKysgYi9saWIvaGFzaC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2htYWMuYyBiL2xpYi9obWFjLmMKaW5kZXggMGQyZDVmNC4uM2RmNDcxNSAxMDA2NDQKLS0tIGEvbGliL2htYWMuYworKysgYi9saWIvaG1hYy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsOCArMjYsMTEgQEAKIAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAiY3VybF9obWFjLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKwogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApkaWZmIC0tZ2l0IGEvbGliL2hvc3Rhc3luLmMgYi9saWIvaG9zdGFzeW4uYwppbmRleCAxN2I4YmUwLi5jOTY3MzRhIDEwMDY0NAotLS0gYS9saWIvaG9zdGFzeW4uYworKysgYi9saWIvaG9zdGFzeW4uYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaG9zdGNoZWNrLmMgYi9saWIvaG9zdGNoZWNrLmMKaW5kZXggNjJhMjZlNC4uNGRiOWU2YiAxMDA2NDQKLS0tIGEvbGliL2hvc3RjaGVjay5jCisrKyBiL2xpYi9ob3N0Y2hlY2suYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Myw3ICs0Myw3IEBACiAgKiAgImZvby5ob3N0LmNvbSIgbWF0Y2hlcyAiKi5ob3N0LmNvbSIuCiAgKgogICogV2UgdXNlIHRoZSBtYXRjaGluZyBydWxlIGRlc2NyaWJlZCBpbiBSRkM2MTI1LCBzZWN0aW9uIDYuNC4zLgotICogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjEyNSNzZWN0aW9uLTYuNC4zCisgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjEyNSNzZWN0aW9uLTYuNC4zCiAgKgogICogSW4gYWRkaXRpb246IGlnbm9yZSB0cmFpbGluZyBkb3RzIGluIHRoZSBob3N0IG5hbWVzIGFuZCB3aWxkY2FyZHMsIHNvIHRoYXQKICAqIHRoZSBuYW1lcyBhcmUgdXNlZCBub3JtYWxpemVkLiBUaGlzIGlzIHdoYXQgdGhlIGJyb3dzZXJzIGRvLgpkaWZmIC0tZ2l0IGEvbGliL2hvc3RjaGVjay5oIGIvbGliL2hvc3RjaGVjay5oCmluZGV4IGY0YTUxN2EuLjg2ZTNiOTYgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0Y2hlY2suaAorKysgYi9saWIvaG9zdGNoZWNrLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaG9zdGlwLmMgYi9saWIvaG9zdGlwLmMKaW5kZXggODJmMzg5Ny4uZWFkNzhkZSAxMDA2NDQKLS0tIGEvbGliL2hvc3RpcC5jCisrKyBiL2xpYi9ob3N0aXAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDkgKzU2LDkgQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKICNpZiBkZWZpbmVkKENVUkxSRVNfU1lOQ0gpICYmIFwKQEAgLTM1Myw3ICszNTMsOCBAQAogCiAgIGRucyA9IGZldGNoX2FkZHIoY29ubiwgaG9zdG5hbWUsIHBvcnQpOwogCi0gIGlmKGRucykgZG5zLT5pbnVzZSsrOyAvKiB3ZSB1c2UgaXQhICovCisgIGlmKGRucykKKyAgICBkbnMtPmludXNlKys7IC8qIHdlIHVzZSBpdCEgKi8KIAogICBpZihkYXRhLT5zaGFyZSkKICAgICBDdXJsX3NoYXJlX3VubG9jayhkYXRhLCBDVVJMX0xPQ0tfREFUQV9ETlMpOwpAQCAtNzc3LDcgKzc3OCw3IEBACiAgIGNoYXIgYWRkcmVzc1syNTZdOwogICBpbnQgcG9ydDsKIAotICBmb3IoaG9zdHAgPSBkYXRhLT5jaGFuZ2UucmVzb2x2ZTsgaG9zdHA7IGhvc3RwID0gaG9zdHAtPm5leHQgKSB7CisgIGZvcihob3N0cCA9IGRhdGEtPmNoYW5nZS5yZXNvbHZlOyBob3N0cDsgaG9zdHAgPSBob3N0cC0+bmV4dCkgewogICAgIGlmKCFob3N0cC0+ZGF0YSkKICAgICAgIGNvbnRpbnVlOwogICAgIGlmKGhvc3RwLT5kYXRhWzBdID09ICctJykgewpkaWZmIC0tZ2l0IGEvbGliL2hvc3RpcC5oIGIvbGliL2hvc3RpcC5oCmluZGV4IGQ1YjQ0YmMuLjM3Y2NkOTYgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0aXAuaAorKysgYi9saWIvaG9zdGlwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaG9zdGlwNC5jIGIvbGliL2hvc3RpcDQuYwppbmRleCAzN2IwMzY5Li4xNTg5NWQ3IDEwMDY0NAotLS0gYS9saWIvaG9zdGlwNC5jCisrKyBiL2xpYi9ob3N0aXA0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00OCw5ICs0OCw5IEBACiAjaW5jbHVkZSAic3RyZXJyb3IuaCIKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL2xpYi9ob3N0aXA2LmMgYi9saWIvaG9zdGlwNi5jCmluZGV4IDZhYjEzMWEuLjU5YmM0ZTQgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0aXA2LmMKKysrIGIvbGliL2hvc3RpcDYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5LDkgKzQ5LDkgQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC01OSw3ICs1OSw2IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZmRlZiBDVVJMUkVTX0lQVjYKIAotCiAjaWYgZGVmaW5lZChDVVJMREVCVUcpICYmIGRlZmluZWQoSEFWRV9HRVROQU1FSU5GTykKIC8qIFRoZXNlIGFyZSBzdHJpY3RseSBmb3IgbWVtb3J5IHRyYWNpbmcgYW5kIGFyZSB1c2luZyB0aGUgc2FtZSBzdHlsZSBhcyB0aGUKICAqIGZhbWlseSBvdGhlcndpc2UgcHJlc2VudCBpbiBtZW1kZWJ1Zy5jLiBJIHB1dCB0aGVzZSBvbmVzIGhlcmUgc2luY2UgdGhleQpAQCAtMTI0LDYgKzEyMyw3IEBACiB7CiAgIGlmKGNvbm4tPmlwX3ZlcnNpb24gPT0gQ1VSTF9JUFJFU09MVkVfVjYpCiAgICAgcmV0dXJuIEN1cmxfaXB2NndvcmtzKCk7CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTE2OSwxMyArMTY5LDEzIEBACiAgIGNoYXIgKnNidWZwdHIgPSBOVUxMOwogICBjaGFyIGFkZHJidWZbMTI4XTsKICAgaW50IHBmOworI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKKyNlbmRpZgogCiAgICp3YWl0cCA9IDA7IC8qIHN5bmNocm9ub3VzIHJlc3BvbnNlIG9ubHkgKi8KIAotICAvKgotICAgKiBDaGVjayBpZiBhIGxpbWl0ZWQgbmFtZSByZXNvbHZlIGhhcyBiZWVuIHJlcXVlc3RlZC4KLSAgICovCisgIC8qIENoZWNrIGlmIGEgbGltaXRlZCBuYW1lIHJlc29sdmUgaGFzIGJlZW4gcmVxdWVzdGVkICovCiAgIHN3aXRjaChjb25uLT5pcF92ZXJzaW9uKSB7CiAgIGNhc2UgQ1VSTF9JUFJFU09MVkVfVjQ6CiAgICAgcGYgPSBQRl9JTkVUOwpAQCAtMjA2LDYgKzIwNiw3IEBACiAgICAgc25wcmludGYoc2J1Ziwgc2l6ZW9mKHNidWYpLCAiJWQiLCBwb3J0KTsKICAgICBzYnVmcHRyPXNidWY7CiAgIH0KKwogICBlcnJvciA9IEN1cmxfZ2V0YWRkcmluZm9fZXgoaG9zdG5hbWUsIHNidWZwdHIsICZoaW50cywgJnJlcyk7CiAgIGlmKGVycm9yKSB7CiAgICAgaW5mb2YoZGF0YSwgImdldGFkZHJpbmZvKDMpIGZhaWxlZCBmb3IgJXM6JWRcbiIsIGhvc3RuYW1lLCBwb3J0KTsKQEAgLTIxNyw1ICsyMTgsNSBAQAogICByZXR1cm4gcmVzOwogfQogI2VuZGlmIC8qIENVUkxSRVNfU1lOQ0ggKi8KLSNlbmRpZiAvKiBDVVJMUkVTX0lQVjYgKi8KIAorI2VuZGlmIC8qIENVUkxSRVNfSVBWNiAqLwpkaWZmIC0tZ2l0IGEvbGliL2hvc3RzeW4uYyBiL2xpYi9ob3N0c3luLmMKaW5kZXggZmIxZGUzNS4uZGI0YzgyZiAxMDA2NDQKLS0tIGEvbGliL2hvc3RzeW4uYworKysgYi9saWIvaG9zdHN5bi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9odHRwLmMgYi9saWIvaHR0cC5jCmluZGV4IGUwNmM3OTguLjZhNzZiODggMTAwNjQ0Ci0tLSBhL2xpYi9odHRwLmMKKysrIGIvbGliL2h0dHAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU0LDkgKzU0LDEwIEBACiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJjb29raWUuaCIKICNpbmNsdWRlICJzdHJlcXVhbC5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAjaW5jbHVkZSAidnRscy92dGxzLmgiCiAjaW5jbHVkZSAiaHR0cF9kaWdlc3QuaCIKLSNpbmNsdWRlICJjdXJsX250bG0uaCIKKyNpbmNsdWRlICJodHRwX250bG0uaCIKICNpbmNsdWRlICJjdXJsX250bG1fd2IuaCIKICNpbmNsdWRlICJodHRwX25lZ290aWF0ZS5oIgogI2luY2x1ZGUgInVybC5oIgpAQCAtNzYsOSArNzcsOSBAQAogI2luY2x1ZGUgInBpcGVsaW5lLmgiCiAjaW5jbHVkZSAiaHR0cDIuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC04Niw3ICs4Nyw2IEBACiAgKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KICAqLwogCi1zdGF0aWMgQ1VSTGNvZGUgaHR0cF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkKTsKIHN0YXRpYyBpbnQgaHR0cF9nZXRzb2NrX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKQEAgLTExNyw3ICsxMTcsNyBAQAogICBodHRwX2dldHNvY2tfZG8sICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KICAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb21vcmVfZ2V0c29jayAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBlcmZvcm1fZ2V0c29jayAqLwotICBodHRwX2Rpc2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCiAgIFBPUlRfSFRUUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLwogICBDVVJMUFJPVE9fSFRUUCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvY29sICovCkBAIC0xNDEsMTUgKzE0MSwxNCBAQAogICBodHRwX2dldHNvY2tfZG8sICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KICAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb21vcmVfZ2V0c29jayAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBlcmZvcm1fZ2V0c29jayAqLwotICBodHRwX2Rpc2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCiAgIFBPUlRfSFRUUFMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLwogICBDVVJMUFJPVE9fSFRUUFMsICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvY29sICovCi0gIFBST1RPUFRfU1NMIHwgUFJPVE9QVF9DUkVEU1BFUlJFUVVFU1QgLyogZmxhZ3MgKi8KKyAgUFJPVE9QVF9TU0wgfCBQUk9UT1BUX0NSRURTUEVSUkVRVUVTVCB8IFBST1RPUFRfQUxQTl9OUE4gLyogZmxhZ3MgKi8KIH07CiAjZW5kaWYKIAotCiBDVVJMY29kZSBDdXJsX2h0dHBfc2V0dXBfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CiAgIC8qIGFsbG9jYXRlIHRoZSBIVFRQLXNwZWNpZmljIHN0cnVjdCBmb3IgdGhlIFNlc3Npb25IYW5kbGUsIG9ubHkgdG8gc3Vydml2ZQpAQCAtMTY0LDI1ICsxNjMsMTEgQEAKICAgY29ubi0+ZGF0YS0+cmVxLnByb3RvcCA9IGh0dHA7CiAKICAgQ3VybF9odHRwMl9zZXR1cF9jb25uKGNvbm4pOworICBDdXJsX2h0dHAyX3NldHVwX3JlcShjb25uLT5kYXRhKTsKIAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyBDVVJMY29kZSBodHRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWRfY29ubmVjdGlvbikKLXsKLSNpZmRlZiBVU0VfTkdIVFRQMgotICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7Ci0gIGlmKGh0dHApIHsKLSAgICBDdXJsX2FkZF9idWZmZXJfZnJlZShodHRwLT5oZWFkZXJfcmVjdmJ1Zik7Ci0gICAgaHR0cC0+aGVhZGVyX3JlY3ZidWYgPSBOVUxMOyAvKiBjbGVhciB0aGUgcG9pbnRlciAqLwotICB9Ci0jZWxzZQotICAodm9pZCljb25uOwotI2VuZGlmCi0gICh2b2lkKWRlYWRfY29ubmVjdGlvbjsKLSAgcmV0dXJuIENVUkxFX09LOwotfQotCiAvKgogICogY2hlY2toZWFkZXJzKCkgY2hlY2tzIHRoZSBsaW5rZWQgbGlzdCBvZiBjdXN0b20gSFRUUCBoZWFkZXJzIGZvciBhCiAgKiBwYXJ0aWN1bGFyIGhlYWRlciAocHJlZml4KS4KQEAgLTIwMCw2ICsxODUsNyBAQAogICAgIGlmKEN1cmxfcmF3X25lcXVhbChoZWFkLT5kYXRhLCB0aGlzaGVhZGVyLCB0aGlzbGVuKSkKICAgICAgIHJldHVybiBoZWFkLT5kYXRhOwogICB9CisKICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTIxMSw3ICsxOTcsNiBAQAogICogSXQgdGFrZXMgYSBjb25uZWN0ZGF0YSBzdHJ1Y3QgYXMgaW5wdXQgaW5zdGVhZCBvZiB0aGUgU2Vzc2lvbkhhbmRsZSBzaW1wbHkKICAqIHRvIGtub3cgaWYgdGhpcyBpcyBhIHByb3h5IHJlcXVlc3Qgb3Igbm90LCBhcyBpdCB0aGVuIG1pZ2h0IGNoZWNrIGEKICAqIGRpZmZlcmVudCBoZWFkZXIgbGlzdC4KLSAqCiAgKi8KIGNoYXIgKkN1cmxfY2hlY2tQcm94eWhlYWRlcnMoY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aGlzaGVhZGVyKQpAQCAtMjIwLDEyICsyMDUsMTMgQEAKICAgc2l6ZV90IHRoaXNsZW4gPSBzdHJsZW4odGhpc2hlYWRlcik7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKIAotICBmb3IoaGVhZCA9IChjb25uLT5iaXRzLnByb3h5ICYmIGRhdGEtPnNldC5zZXBfaGVhZGVycyk/Ci0gICAgICAgIGRhdGEtPnNldC5wcm94eWhlYWRlcnM6ZGF0YS0+c2V0LmhlYWRlcnM7CisgIGZvcihoZWFkID0gKGNvbm4tPmJpdHMucHJveHkgJiYgZGF0YS0+c2V0LnNlcF9oZWFkZXJzKSA/CisgICAgICAgIGRhdGEtPnNldC5wcm94eWhlYWRlcnMgOiBkYXRhLT5zZXQuaGVhZGVyczsKICAgICAgIGhlYWQ7IGhlYWQ9aGVhZC0+bmV4dCkgewogICAgIGlmKEN1cmxfcmF3X25lcXVhbChoZWFkLT5kYXRhLCB0aGlzaGVhZGVyLCB0aGlzbGVuKSkKICAgICAgIHJldHVybiBoZWFkLT5kYXRhOwogICB9CisKICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTMyNCw3ICszMTAsNyBAQAogCiAgIGZyZWUoKnVzZXJwKTsKICAgKnVzZXJwID0gYXByaW50ZigiJXNBdXRob3JpemF0aW9uOiBCYXNpYyAlc1xyXG4iLAotICAgICAgICAgICAgICAgICAgIHByb3h5PyJQcm94eS0iOiIiLAorICAgICAgICAgICAgICAgICAgIHByb3h5ID8gIlByb3h5LSIgOiAiIiwKICAgICAgICAgICAgICAgICAgICBhdXRob3JpemF0aW9uKTsKICAgZnJlZShhdXRob3JpemF0aW9uKTsKICAgaWYoISp1c2VycCkKQEAgLTU0Myw3ICs1MjksNiBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgfQotCiAgIGVsc2UgaWYoKGRhdGEtPnJlcS5odHRwY29kZSA8IDMwMCkgJiYKICAgICAgICAgICAoIWRhdGEtPnN0YXRlLmF1dGhob3N0LmRvbmUpICYmCiAgICAgICAgICAgY29ubi0+Yml0cy5hdXRobmVnKSB7CkBAIC01NjgsNyArNTUzLDYgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotCiAvKgogICogT3V0cHV0IHRoZSBjb3JyZWN0IGF1dGhlbnRpY2F0aW9uIGhlYWRlciBkZXBlbmRpbmcgb24gdGhlIGF1dGggdHlwZQogICogYW5kIHdoZXRoZXIgb3Igbm90IGl0IGlzIHRvIGEgcHJveHkuCkBAIC01ODIsMTIgKzU2NiwxMiBAQAogewogICBjb25zdCBjaGFyICphdXRoID0gTlVMTDsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0jaWYgZGVmaW5lZChVU0VfU1BORUdPKSB8fCAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpIHx8IGRlZmluZWQoVVNFX1NQTkVHTykKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogI2VuZGlmCiAjaWZkZWYgVVNFX1NQTkVHTwotICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnZGF0YSA9IHByb3h5PwotICAgICZkYXRhLT5zdGF0ZS5wcm94eW5lZzomZGF0YS0+c3RhdGUubmVnb3RpYXRlOworICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnZGF0YSA9IHByb3h5ID8KKyAgICAmZGF0YS0+c3RhdGUucHJveHluZWcgOiAmZGF0YS0+c3RhdGUubmVnb3RpYXRlOwogI2VuZGlmCiAKICNpZmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKQEAgLTU5OSw3ICs1ODMsNyBAQAogICBuZWdkYXRhLT5zdGF0ZSA9IEdTU19BVVRITk9ORTsKICAgaWYoKGF1dGhzdGF0dXMtPnBpY2tlZCA9PSBDVVJMQVVUSF9ORUdPVElBVEUpICYmCiAgICAgIG5lZ2RhdGEtPmNvbnRleHQgJiYgIUdTU19FUlJPUihuZWdkYXRhLT5zdGF0dXMpKSB7Ci0gICAgYXV0aD0iTmVnb3RpYXRlIjsKKyAgICBhdXRoID0gIk5lZ290aWF0ZSI7CiAgICAgcmVzdWx0ID0gQ3VybF9vdXRwdXRfbmVnb3RpYXRlKGNvbm4sIHByb3h5KTsKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjEwLDcgKzU5NCw3IEBACiAjZW5kaWYKICNpZmRlZiBVU0VfTlRMTQogICBpZihhdXRoc3RhdHVzLT5waWNrZWQgPT0gQ1VSTEFVVEhfTlRMTSkgewotICAgIGF1dGg9Ik5UTE0iOworICAgIGF1dGggPSAiTlRMTSI7CiAgICAgcmVzdWx0ID0gQ3VybF9vdXRwdXRfbnRsbShjb25uLCBwcm94eSk7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYyOCw3ICs2MTIsNyBAQAogI2VuZGlmCiAjaWZuZGVmIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSAogICBpZihhdXRoc3RhdHVzLT5waWNrZWQgPT0gQ1VSTEFVVEhfRElHRVNUKSB7Ci0gICAgYXV0aD0iRGlnZXN0IjsKKyAgICBhdXRoID0gIkRpZ2VzdCI7CiAgICAgcmVzdWx0ID0gQ3VybF9vdXRwdXRfZGlnZXN0KGNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXJlcXVlc3QsCkBAIC02NDQsMTEgKzYyOCwxMiBAQAogICAgICAgICAhQ3VybF9jaGVja1Byb3h5aGVhZGVycyhjb25uLCAiUHJveHktYXV0aG9yaXphdGlvbjoiKSkgfHwKICAgICAgICAoIXByb3h5ICYmIGNvbm4tPmJpdHMudXNlcl9wYXNzd2QgJiYKICAgICAgICAgIUN1cmxfY2hlY2toZWFkZXJzKGNvbm4sICJBdXRob3JpemF0aW9uOiIpKSkgewotICAgICAgYXV0aD0iQmFzaWMiOworICAgICAgYXV0aCA9ICJCYXNpYyI7CiAgICAgICByZXN1bHQgPSBodHRwX291dHB1dF9iYXNpYyhjb25uLCBwcm94eSk7CiAgICAgICBpZihyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCiAgICAgLyogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgc2V0ICdkb25lJyBUUlVFLCBhcyB0aGUgb3RoZXIgYXV0aAogICAgICAgIGZ1bmN0aW9ucyB3b3JrIHRoYXQgd2F5ICovCiAgICAgYXV0aHN0YXR1cy0+ZG9uZSA9IFRSVUU7CkBAIC02NTYsOSArNjQxLDkgQEAKIAogICBpZihhdXRoKSB7CiAgICAgaW5mb2YoZGF0YSwgIiVzIGF1dGggdXNpbmcgJXMgd2l0aCB1c2VyICclcydcbiIsCi0gICAgICAgICAgcHJveHk/IlByb3h5IjoiU2VydmVyIiwgYXV0aCwKLSAgICAgICAgICBwcm94eT8oY29ubi0+cHJveHl1c2VyP2Nvbm4tPnByb3h5dXNlcjoiIik6Ci0gICAgICAgICAgICAgICAgKGNvbm4tPnVzZXI/Y29ubi0+dXNlcjoiIikpOworICAgICAgICAgIHByb3h5ID8gIlByb3h5IiA6ICJTZXJ2ZXIiLCBhdXRoLAorICAgICAgICAgIHByb3h5ID8gKGNvbm4tPnByb3h5dXNlciA/IGNvbm4tPnByb3h5dXNlciA6ICIiKSA6CisgICAgICAgICAgICAgICAgICAoY29ubi0+dXNlciA/IGNvbm4tPnVzZXIgOiAiIikpOwogICAgIGF1dGhzdGF0dXMtPm11bHRpID0gKCFhdXRoc3RhdHVzLT5kb25lKSA/IFRSVUUgOiBGQUxTRTsKICAgfQogICBlbHNlCkBAIC03NTAsNyArNzM1LDYgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotCiAvKgogICogQ3VybF9odHRwX2lucHV0X2F1dGgoKSBkZWFscyB3aXRoIFByb3h5LUF1dGhlbnRpY2F0ZTogYW5kIFdXVy1BdXRoZW50aWNhdGU6CiAgKiBoZWFkZXJzLiBUaGV5IGFyZSBkZWFsdCB3aXRoIGJvdGggaW4gdGhlIHRyYW5zZmVyLmMgbWFpbiBsb29wIGFuZCBpbiB0aGUKQEAgLTc5NSw3ICs3NzksNiBAQAogICAgKiByZXF1ZXN0IGlzIHNlbnQsIGFuZCB0aGVuIGl0IGlzIGFnYWluIHNldCBfYWZ0ZXJfIGFsbCByZXNwb25zZSA0MDEvNDA3CiAgICAqIGhlYWRlcnMgaGF2ZSBiZWVuIHJlY2VpdmVkIGJ1dCB0aGVuIG9ubHkgdG8gYSBzaW5nbGUgcHJlZmVycmVkIG1ldGhvZAogICAgKiAoYml0KS4KLSAgICoKICAgICovCiAKICAgd2hpbGUoKmF1dGgpIHsKQEAgLTkwOCw2ICs4OTEsNyBAQAogICAgIHdoaWxlKCphdXRoICYmIElTU1BBQ0UoKmF1dGgpKQogICAgICAgYXV0aCsrOwogICB9CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogCkBAIC05NDksOCArOTMzLDcgQEAKICAgKiogQW55IGNvZGUgPj0gNDAwIHRoYXQncyBub3QgNDAxIG9yIDQwNyBpcyBhbHdheXMKICAgKiogYSB0ZXJtaW5hbCBlcnJvcgogICAqLwotICBpZigoaHR0cGNvZGUgIT0gNDAxKSAmJgotICAgICAgKGh0dHBjb2RlICE9IDQwNykpCisgIGlmKChodHRwY29kZSAhPSA0MDEpICYmIChodHRwY29kZSAhPSA0MDcpKQogICAgIHJldHVybiAxOwogCiAgIC8qCkBAIC0xMDAxLDcgKzk4NCw3IEBACiAgIHN0cnVjdCBIVFRQICpodHRwID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKICAgc2l6ZV90IGZ1bGxzaXplID0gc2l6ZSAqIG5pdGVtczsKIAotICBpZigwID09IGh0dHAtPnBvc3RzaXplKQorICBpZighaHR0cC0+cG9zdHNpemUpCiAgICAgLyogbm90aGluZyB0byByZXR1cm4gKi8KICAgICByZXR1cm4gMDsKIApAQCAtMTAxNiw4ICs5OTksOCBAQAogICAgICAgLyogbW92ZSBiYWNrdXAgZGF0YSBpbnRvIGZvY3VzIGFuZCBjb250aW51ZSBvbiB0aGF0ICovCiAgICAgICBodHRwLT5wb3N0ZGF0YSA9IGh0dHAtPmJhY2t1cC5wb3N0ZGF0YTsKICAgICAgIGh0dHAtPnBvc3RzaXplID0gaHR0cC0+YmFja3VwLnBvc3RzaXplOwotICAgICAgY29ubi0+ZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSBodHRwLT5iYWNrdXAuZnJlYWRfZnVuYzsKLSAgICAgIGNvbm4tPmRhdGEtPnNldC5pbiA9IGh0dHAtPmJhY2t1cC5mcmVhZF9pbjsKKyAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMgPSBodHRwLT5iYWNrdXAuZnJlYWRfZnVuYzsKKyAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLmluID0gaHR0cC0+YmFja3VwLmZyZWFkX2luOwogCiAgICAgICBodHRwLT5zZW5kaW5nKys7IC8qIG1vdmUgb25lIHN0ZXAgdXAgKi8KIApAQCAtMTEwNywxNSArMTA5MCwxNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KIAotCi0gIGlmKGNvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9TU0wpIHsKKyAgaWYoKGNvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9TU0wpICYmIGNvbm4tPmh0dHB2ZXJzaW9uICE9IDIwKSB7CiAgICAgLyogV2UgbmV2ZXIgc2VuZCBtb3JlIHRoYW4gQ1VSTF9NQVhfV1JJVEVfU0laRSBieXRlcyBpbiBvbmUgc2luZ2xlIGNodW5rCiAgICAgICAgd2hlbiB3ZSBzcGVhayBIVFRQUywgYXMgaWYgb25seSBhIGZyYWN0aW9uIG9mIGl0IGlzIHNlbnQgbm93LCB0aGlzIGRhdGEKICAgICAgICBuZWVkcyB0byBmaXQgaW50byB0aGUgbm9ybWFsIHJlYWQtY2FsbGJhY2sgYnVmZmVyIGxhdGVyIG9uIGFuZCB0aGF0CiAgICAgICAgYnVmZmVyIGlzIHVzaW5nIHRoaXMgc2l6ZS4KICAgICAqLwogCi0gICAgc2VuZHNpemU9IChzaXplID4gQ1VSTF9NQVhfV1JJVEVfU0laRSk/Q1VSTF9NQVhfV1JJVEVfU0laRTpzaXplOworICAgIHNlbmRzaXplID0gKHNpemUgPiBDVVJMX01BWF9XUklURV9TSVpFKSA/IENVUkxfTUFYX1dSSVRFX1NJWkUgOiBzaXplOwogCiAgICAgLyogT3BlblNTTCBpcyB2ZXJ5IHBpY2t5IGFuZCB3ZSBtdXN0IHNlbmQgdGhlIFNBTUUgYnVmZmVyIHBvaW50ZXIgdG8gdGhlCiAgICAgICAgbGlicmFyeSB3aGVuIHdlIGF0dGVtcHQgdG8gcmUtc2VuZCB0aGlzIGJ1ZmZlci4gU2VuZGluZyB0aGUgc2FtZSBkYXRhCkBAIC0xMTM4LDcgKzExMjAsNyBAQAogICAgICAqIG9ubHkgc2VuZCBhd2F5IGEgcGFydCkuCiAgICAgICovCiAgICAgLyogaG93IG11Y2ggb2YgdGhlIGhlYWRlciB0aGF0IHdhcyBzZW50ICovCi0gICAgc2l6ZV90IGhlYWRsZW4gPSAoc2l6ZV90KWFtb3VudD5oZWFkZXJzaXplP2hlYWRlcnNpemU6KHNpemVfdClhbW91bnQ7CisgICAgc2l6ZV90IGhlYWRsZW4gPSAoc2l6ZV90KWFtb3VudD5oZWFkZXJzaXplID8gaGVhZGVyc2l6ZSA6IChzaXplX3QpYW1vdW50OwogICAgIHNpemVfdCBib2R5bGVuID0gYW1vdW50IC0gaGVhZGxlbjsKIAogICAgIGlmKGNvbm4tPmRhdGEtPnNldC52ZXJib3NlKSB7CkBAIC0xMTUxLDEwICsxMTMzLDYgQEAKICAgICAgICAgICAgICAgICAgICBwdHIraGVhZGxlbiwgYm9keWxlbiwgY29ubik7CiAgICAgICB9CiAgICAgfQotICAgIGlmKGJvZHlsZW4pCi0gICAgICAvKiBzaW5jZSB3ZSBzZW50IGEgcGllY2Ugb2YgdGhlIGJvZHkgaGVyZSwgdXAgdGhlIGJ5dGUgY291bnRlciBmb3IgaXQKLSAgICAgICAgIGFjY29yZGluZ2x5ICovCi0gICAgICBodHRwLT53cml0ZWJ5dGVjb3VudCArPSBib2R5bGVuOwogCiAgICAgLyogJ2Ftb3VudCcgY2FuIG5ldmVyIGJlIGEgdmVyeSBsYXJnZSB2YWx1ZSBoZXJlIHNvIHR5cGVjYXN0aW5nIGl0IHNvIGEKICAgICAgICBzaWduZWQgMzEgYml0IHZhbHVlIHNob3VsZCBub3QgY2F1c2UgcHJvYmxlbXMgZXZlbiBpZiBzc2l6ZV90IGlzCkBAIC0xMTYyLDYgKzExNDAsMTAgQEAKICAgICAqYnl0ZXNfd3JpdHRlbiArPSAobG9uZylhbW91bnQ7CiAKICAgICBpZihodHRwKSB7CisgICAgICAvKiBpZiB3ZSBzZW50IGEgcGllY2Ugb2YgdGhlIGJvZHkgaGVyZSwgdXAgdGhlIGJ5dGUgY291bnRlciBmb3IgaXQKKyAgICAgICAgIGFjY29yZGluZ2x5ICovCisgICAgICBodHRwLT53cml0ZWJ5dGVjb3VudCArPSBib2R5bGVuOworCiAgICAgICBpZigoc2l6ZV90KWFtb3VudCAhPSBzaXplKSB7CiAgICAgICAgIC8qIFRoZSB3aG9sZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBzZW50IGluIG9uZSBzeXN0ZW0gY2FsbC4gV2UgbXVzdAogICAgICAgICAgICBxdWV1ZSBpdCB1cCBhbmQgc2VuZCBpdCBsYXRlciB3aGVuIHdlIGdldCB0aGUgY2hhbmNlLiBXZSBtdXN0IG5vdApAQCAtMTE3MiwxNCArMTE1NCwxNCBAQAogICAgICAgICBwdHIgPSBpbi0+YnVmZmVyICsgYW1vdW50OwogCiAgICAgICAgIC8qIGJhY2t1cCB0aGUgY3VycmVudGx5IHNldCBwb2ludGVycyAqLwotICAgICAgICBodHRwLT5iYWNrdXAuZnJlYWRfZnVuYyA9IGNvbm4tPmRhdGEtPnNldC5mcmVhZF9mdW5jOwotICAgICAgICBodHRwLT5iYWNrdXAuZnJlYWRfaW4gPSBjb25uLT5kYXRhLT5zZXQuaW47CisgICAgICAgIGh0dHAtPmJhY2t1cC5mcmVhZF9mdW5jID0gY29ubi0+ZGF0YS0+c3RhdGUuZnJlYWRfZnVuYzsKKyAgICAgICAgaHR0cC0+YmFja3VwLmZyZWFkX2luID0gY29ubi0+ZGF0YS0+c3RhdGUuaW47CiAgICAgICAgIGh0dHAtPmJhY2t1cC5wb3N0ZGF0YSA9IGh0dHAtPnBvc3RkYXRhOwogICAgICAgICBodHRwLT5iYWNrdXAucG9zdHNpemUgPSBodHRwLT5wb3N0c2l6ZTsKIAogICAgICAgICAvKiBzZXQgdGhlIG5ldyBwb2ludGVycyBmb3IgdGhlIHJlcXVlc3Qtc2VuZGluZyAqLwotICAgICAgICBjb25uLT5kYXRhLT5zZXQuZnJlYWRfZnVuYyA9IChjdXJsX3JlYWRfY2FsbGJhY2spcmVhZG1vcmVkYXRhOwotICAgICAgICBjb25uLT5kYXRhLT5zZXQuaW4gPSAodm9pZCAqKWNvbm47CisgICAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKXJlYWRtb3JlZGF0YTsKKyAgICAgICAgY29ubi0+ZGF0YS0+c3RhdGUuaW4gPSAodm9pZCAqKWNvbm47CiAgICAgICAgIGh0dHAtPnBvc3RkYXRhID0gcHRyOwogICAgICAgICBodHRwLT5wb3N0c2l6ZSA9IChjdXJsX29mZl90KXNpemU7CiAKQEAgLTEyNTcsMTEgKzEyMzksMTEgQEAKICAgICAgICBidWZmZXIgc2l6ZSB0aGF0IGRvdWJsZXMgdGhlIHJlcXVpcmVkIHNpemUuIElmIHRoaXMgbmV3IHNpemUKICAgICAgICB3b3VsZCB3cmFwIHNpemVfdCwgdGhlbiBqdXN0IHVzZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBvbmUgKi8KIAotICAgIGlmKChzaXplID4gKHNpemVfdCktMS8yKSB8fCAoaW4tPnNpemVfdXNlZCA+IChzaXplX3QpLTEvMikgfHwKLSAgICAgICAofihzaXplKjIpIDwgKGluLT5zaXplX3VzZWQqMikpKQorICAgIGlmKChzaXplID4gKHNpemVfdCktMSAvIDIpIHx8IChpbi0+c2l6ZV91c2VkID4gKHNpemVfdCktMSAvIDIpIHx8CisgICAgICAgKH4oc2l6ZSAqIDIpIDwgKGluLT5zaXplX3VzZWQgKiAyKSkpCiAgICAgICBuZXdfc2l6ZSA9IChzaXplX3QpLTE7CiAgICAgZWxzZQotICAgICAgbmV3X3NpemUgPSAoaW4tPnNpemVfdXNlZCtzaXplKSoyOworICAgICAgbmV3X3NpemUgPSAoaW4tPnNpemVfdXNlZCtzaXplKSAqIDI7CiAKICAgICBpZihpbi0+YnVmZmVyKQogICAgICAgLyogd2UgaGF2ZSBhIGJ1ZmZlciwgZW5sYXJnZSB0aGUgZXhpc3Rpbmcgb25lICovCkBAIC0xNDA5LDcgKzEzOTEsOCBAQAogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKSB8fCBkZWZpbmVkKFVTRV9HTlVUTFMpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKSB8fCBcCi0gICAgZGVmaW5lZChVU0VfREFSV0lOU1NMKSB8fCBkZWZpbmVkKFVTRV9QT0xBUlNTTCkgfHwgZGVmaW5lZChVU0VfTlNTKQorICAgIGRlZmluZWQoVVNFX0RBUldJTlNTTCkgfHwgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX05TUykgfHwgXAorICAgIGRlZmluZWQoVVNFX01CRURUTFMpCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIGZvciBPcGVuU1NMLCBHbnVUTFMsIGRhcndpbnNzbCwgc2NoYW5uZWwgYW5kIHBvbGFyc3NsIG9ubHkuCiAgICBJdCBzaG91bGQgYmUgbWFkZSB0byBxdWVyeSB0aGUgZ2VuZXJpYyBTU0wgbGF5ZXIgaW5zdGVhZC4gKi8KIHN0YXRpYyBpbnQgaHR0cHNfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCkBAIC0xNDMzLDYgKzE0MTYsNyBAQAogICAgICAgcmV0dXJuIEdFVFNPQ0tfUkVBRFNPQ0soMCk7CiAgICAgfQogICB9CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogI2Vsc2UKQEAgLTE0NTAsMTUgKzE0MzQsMTggQEAKICNlbmRpZiAvKiBVU0VfT1BFTlNTTCB8fCBVU0VfR05VVExTIHx8IFVTRV9TQ0hBTk5FTCAqLwogCiAvKgotICogQ3VybF9odHRwX2RvbmUoKSBnZXRzIGNhbGxlZCBmcm9tIEN1cmxfZG9uZSgpIGFmdGVyIGEgc2luZ2xlIEhUVFAgcmVxdWVzdAotICogaGFzIGJlZW4gcGVyZm9ybWVkLgorICogQ3VybF9odHRwX2RvbmUoKSBnZXRzIGNhbGxlZCBhZnRlciBhIHNpbmdsZSBIVFRQIHJlcXVlc3QgaGFzIGJlZW4KKyAqIHBlcmZvcm1lZC4KICAqLwogCiBDVVJMY29kZSBDdXJsX2h0dHBfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSBzdGF0dXMsIGJvb2wgcHJlbWF0dXJlKQogewogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIHN0cnVjdCBIVFRQICpodHRwID1kYXRhLT5yZXEucHJvdG9wOworICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGRhdGEtPnJlcS5wcm90b3A7CisjaWZkZWYgVVNFX05HSFRUUDIKKyAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CisjZW5kaWYKIAogICBDdXJsX3VuZW5jb2RlX2NsZWFudXAoY29ubik7CiAKQEAgLTE0NjcsOCArMTQ1NCwxMCBAQAogICAgICBkYXRhLT5zdGF0ZS5uZWdvdGlhdGUuc3RhdGUgPT0gR1NTX0FVVEhTRU5UKSB7CiAgICAgLyogYWRkIGZvcmJpZCByZS11c2UgaWYgaHR0cC1jb2RlICE9IDQwMS80MDcgYXMgYSBXQSBvbmx5IG5lZWRlZCBmb3IKICAgICAgKiA0MDEvNDA3IHRoYXQgc2lnbmFsIGF1dGggZmFpbHVyZSAoZW1wdHkpIG90aGVyd2lzZSBzdGF0ZSB3aWxsIGJlIFJFQ1YKLSAgICAgKiB3aXRoIGN1cnJlbnQgY29kZSAqLwotICAgIGlmKChkYXRhLT5yZXEuaHR0cGNvZGUgIT0gNDAxKSAmJiAoZGF0YS0+cmVxLmh0dHBjb2RlICE9IDQwNykpCisgICAgICogd2l0aCBjdXJyZW50IGNvZGUuCisgICAgICogRG8gbm90IGNsb3NlIENPTk5FQ1RfT05MWSBjb25uZWN0aW9ucy4gKi8KKyAgICBpZigoZGF0YS0+cmVxLmh0dHBjb2RlICE9IDQwMSkgJiYgKGRhdGEtPnJlcS5odHRwY29kZSAhPSA0MDcpICYmCisgICAgICAgIWRhdGEtPnNldC5jb25uZWN0X29ubHkpCiAgICAgICBjb25uY2xvc2UoY29ubiwgIk5lZ290aWF0ZSB0cmFuc2ZlciBjb21wbGV0ZWQiKTsKICAgICBDdXJsX2NsZWFudXBfbmVnb3RpYXRlKGRhdGEpOwogICB9CkBAIC0xNDc4LDcgKzE0NjcsNyBAQAogICBjb25uLT5zZWVrX2Z1bmMgPSBkYXRhLT5zZXQuc2Vla19mdW5jOyAvKiByZXN0b3JlICovCiAgIGNvbm4tPnNlZWtfY2xpZW50ID0gZGF0YS0+c2V0LnNlZWtfY2xpZW50OyAvKiByZXN0b3JlICovCiAKLSAgaWYoaHR0cCA9PSBOVUxMKQorICBpZighaHR0cCkKICAgICByZXR1cm4gQ1VSTEVfT0s7CiAKICAgaWYoaHR0cC0+c2VuZF9idWZmZXIpIHsKQEAgLTE0OTEsNiArMTQ4MCwyMCBAQAogICAgIERFQlVHRihpbmZvZihkYXRhLCAiZnJlZSBoZWFkZXJfcmVjdmJ1ZiEhXG4iKSk7CiAgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoaHR0cC0+aGVhZGVyX3JlY3ZidWYpOwogICAgIGh0dHAtPmhlYWRlcl9yZWN2YnVmID0gTlVMTDsgLyogY2xlYXIgdGhlIHBvaW50ZXIgKi8KKyAgICBDdXJsX2FkZF9idWZmZXJfZnJlZShodHRwLT50cmFpbGVyX3JlY3ZidWYpOworICAgIGh0dHAtPnRyYWlsZXJfcmVjdmJ1ZiA9IE5VTEw7IC8qIGNsZWFyIHRoZSBwb2ludGVyICovCisgICAgaWYoaHR0cC0+cHVzaF9oZWFkZXJzKSB7CisgICAgICAvKiBpZiB0aGV5IHdlcmVuJ3QgdXNlZCBhbmQgdGhlbiBmcmVlZCBiZWZvcmUgKi8KKyAgICAgIGZvcig7IGh0dHAtPnB1c2hfaGVhZGVyc191c2VkID4gMDsgLS1odHRwLT5wdXNoX2hlYWRlcnNfdXNlZCkgeworICAgICAgICBmcmVlKGh0dHAtPnB1c2hfaGVhZGVyc1todHRwLT5wdXNoX2hlYWRlcnNfdXNlZCAtIDFdKTsKKyAgICAgIH0KKyAgICAgIGZyZWUoaHR0cC0+cHVzaF9oZWFkZXJzKTsKKyAgICAgIGh0dHAtPnB1c2hfaGVhZGVycyA9IE5VTEw7CisgICAgfQorICB9CisgIGlmKGh0dHAtPnN0cmVhbV9pZCkgeworICAgIG5naHR0cDJfc2Vzc2lvbl9zZXRfc3RyZWFtX3VzZXJfZGF0YShodHRwYy0+aDIsIGh0dHAtPnN0cmVhbV9pZCwgMCk7CisgICAgaHR0cC0+c3RyZWFtX2lkID0gMDsKICAgfQogI2VuZGlmCiAKQEAgLTE1MTQsOSArMTUxNyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgZW50aXJlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZSAqLwogICAgICAhY29ubi0+Yml0cy5yZXRyeSAmJgogICAgICAhZGF0YS0+c2V0LmNvbm5lY3Rfb25seSAmJgotICAgICAoKGh0dHAtPnJlYWRieXRlY291bnQgKwotICAgICAgIGRhdGEtPnJlcS5oZWFkZXJieXRlY291bnQgLQotICAgICAgIGRhdGEtPnJlcS5kZWR1Y3RoZWFkZXJjb3VudCkpIDw9IDApIHsKKyAgICAgKGh0dHAtPnJlYWRieXRlY291bnQgKworICAgICAgZGF0YS0+cmVxLmhlYWRlcmJ5dGVjb3VudCAtCisgICAgICBkYXRhLT5yZXEuZGVkdWN0aGVhZGVyY291bnQpIDw9IDApIHsKICAgICAvKiBJZiB0aGlzIGNvbm5lY3Rpb24gaXNuJ3Qgc2ltcGx5IGNsb3NlZCB0byBiZSByZXRyaWVkLCBBTkQgbm90aGluZyB3YXMKICAgICAgICByZWFkIGZyb20gdGhlIEhUVFAgc2VydmVyICh0aGF0IGNvdW50cyksIHRoaXMgY2FuJ3QgYmUgcmlnaHQgc28gd2UKICAgICAgICByZXR1cm4gYW4gZXJyb3IgaGVyZSAqLwpAQCAtMTUyNyw3ICsxNTMwLDYgQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi0KIC8qCiAgKiBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHVzZSBIVFRQIDEuMSAoT1IgQkVUVEVSKSBmb3IgdGhpcyByZXF1ZXN0LiBSZWFzb25zCiAgKiB0byBhdm9pZCBpdCBpbmNsdWRlOgpAQCAtMTU0MCwxMSArMTU0MiwxMyBAQAogc3RhdGljIGJvb2wgdXNlX2h0dHBfMV8xcGx1cyhjb25zdCBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICByZXR1cm4gKChkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xKSB8fAotICAgICAgICAgKChkYXRhLT5zZXQuaHR0cHZlcnNpb24gIT0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8wKSAmJgotICAgICAgICAgICgoY29ubi0+aHR0cHZlcnNpb24gPT0gMTEpIHx8Ci0gICAgICAgICAgICgoY29ubi0+aHR0cHZlcnNpb24gIT0gMTApICYmCi0gICAgICAgICAgICAoZGF0YS0+c3RhdGUuaHR0cHZlcnNpb24gIT0gMTApKSkpKSA/IFRSVUUgOiBGQUxTRTsKKyAgaWYoKGRhdGEtPnN0YXRlLmh0dHB2ZXJzaW9uID09IDEwKSB8fCAoY29ubi0+aHR0cHZlcnNpb24gPT0gMTApKQorICAgIHJldHVybiBGQUxTRTsKKyAgaWYoKGRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8xXzApICYmCisgICAgIChjb25uLT5odHRwdmVyc2lvbiA8PSAxMCkpCisgICAgcmV0dXJuIEZBTFNFOworICByZXR1cm4gKChkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fTk9ORSkgfHwKKyAgICAgICAgICAoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzFfMSkpOwogfQogCiAvKiBjaGVjayBhbmQgcG9zc2libHkgYWRkIGFuIEV4cGVjdDogaGVhZGVyICovCkBAIC0xNTczLDYgKzE1NzcsNyBAQAogICAgICAgICBkYXRhLT5zdGF0ZS5leHBlY3QxMDBoZWFkZXIgPSBUUlVFOwogICAgIH0KICAgfQorCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2OTEsNiArMTY5Niw3IEBACiAgICAgICBoZWFkZXJzID0gaGVhZGVycy0+bmV4dDsKICAgICB9CiAgIH0KKwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKQEAgLTE3MDAsNyArMTcwNiwxMyBAQAogICBjb25zdCBzdHJ1Y3QgdG0gKnRtOwogICBjaGFyICpidWYgPSBkYXRhLT5zdGF0ZS5idWZmZXI7CiAgIHN0cnVjdCB0bSBrZWVwdGltZTsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF9nbXRpbWUoZGF0YS0+c2V0LnRpbWV2YWx1ZSwgJmtlZXB0aW1lKTsKKyAgQ1VSTGNvZGUgcmVzdWx0OworCisgIGlmKGRhdGEtPnNldC50aW1lY29uZGl0aW9uID09IENVUkxfVElNRUNPTkRfTk9ORSkKKyAgICAvKiBubyBjb25kaXRpb24gd2FzIGFza2VkIGZvciAqLworICAgIHJldHVybiBDVVJMRV9PSzsKKworICByZXN1bHQgPSBDdXJsX2dtdGltZShkYXRhLT5zZXQudGltZXZhbHVlLCAma2VlcHRpbWUpOwogICBpZihyZXN1bHQpIHsKICAgICBmYWlsZihkYXRhLCAiSW52YWxpZCBUSU1FVkFMVUUiKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcyNiw4ICsxNzM4LDkgQEAKICAgICAgICAgICAgdG0tPnRtX3NlYyk7CiAKICAgc3dpdGNoKGRhdGEtPnNldC50aW1lY29uZGl0aW9uKSB7Ci0gIGNhc2UgQ1VSTF9USU1FQ09ORF9JRk1PRFNJTkNFOgogICBkZWZhdWx0OgorICAgIGJyZWFrOworICBjYXNlIENVUkxfVElNRUNPTkRfSUZNT0RTSU5DRToKICAgICByZXN1bHQgPSBDdXJsX2FkZF9idWZmZXJmKHJlcV9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYtTW9kaWZpZWQtU2luY2U6ICVzXHJcbiIsIGJ1Zik7CiAgICAgYnJlYWs7CkBAIC0xNzc5LDE1ICsxNzkyLDggQEAKICAgaWYoY29ubi0+aHR0cHZlcnNpb24gPCAyMCkgeyAvKiB1bmxlc3MgdGhlIGNvbm5lY3Rpb24gaXMgcmUtdXNlZCBhbmQgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAyICovCiAgICAgc3dpdGNoKGNvbm4tPm5lZ25wbikgewotICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgorICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMjoKICAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID0gMjA7IC8qIHdlIGtub3cgd2UncmUgb24gSFRUUC8yIG5vdyAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9pbml0KGNvbm4pOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICByZXN1bHQgPSBDdXJsX2h0dHAyX3NldHVwKGNvbm4pOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICByZXN1bHQgPSBDdXJsX2h0dHAyX3N3aXRjaGVkKGNvbm4sIE5VTEwsIDApOwogICAgICAgaWYocmVzdWx0KQpAQCAtMTc5Nyw3ICsxODAzLDE4IEBACiAgICAgICAvKiBjb250aW51ZSB3aXRoIEhUVFAvMS4xIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgKi8KICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAvKiBhbmQgYXMgZmFsbGJhY2sgKi8KKyAgICAgIC8qIENoZWNrIGlmIHVzZXIgd2FudHMgdG8gdXNlIEhUVFAvMiB3aXRoIGNsZWFyIFRDUCovCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICAgIGlmKGNvbm4tPmRhdGEtPnNldC5odHRwdmVyc2lvbiA9PQorICAgICAgICAgQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UpIHsKKyAgICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJIVFRQLzIgb3ZlciBjbGVhbiBUQ1BcbiIpKTsKKyAgICAgICAgY29ubi0+aHR0cHZlcnNpb24gPSAyMDsKKworICAgICAgICByZXN1bHQgPSBDdXJsX2h0dHAyX3N3aXRjaGVkKGNvbm4sIE5VTEwsIDApOworICAgICAgICBpZihyZXN1bHQpCisgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyNlbmRpZgogICAgICAgYnJlYWs7CiAgICAgfQogICB9CkBAIC0xODE3LDYgKzE4MzQsOCBAQAogICAgIGRhdGEtPnN0YXRlLmZpcnN0X2hvc3QgPSBzdHJkdXAoY29ubi0+aG9zdC5uYW1lKTsKICAgICBpZighZGF0YS0+c3RhdGUuZmlyc3RfaG9zdCkKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgZGF0YS0+c3RhdGUuZmlyc3RfcmVtb3RlX3BvcnQgPSBjb25uLT5yZW1vdGVfcG9ydDsKICAgfQogICBodHRwLT53cml0ZWJ5dGVjb3VudCA9IGh0dHAtPnJlYWRieXRlY291bnQgPSAwOwogCkBAIC0xODk4LDYgKzE5MTcsMTAgQEAKICAgICBpZighY29ubi0+YWxsb2NwdHIuYWNjZXB0X2VuY29kaW5nKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KKyAgZWxzZSB7CisgICAgQ3VybF9zYWZlZnJlZShjb25uLT5hbGxvY3B0ci5hY2NlcHRfZW5jb2RpbmcpOworICAgIGNvbm4tPmFsbG9jcHRyLmFjY2VwdF9lbmNvZGluZyA9IE5VTEw7CisgIH0KIAogI2lmZGVmIEhBVkVfTElCWgogICAvKiB3ZSBvbmx5IGNvbnNpZGVyIHRyYW5zZmVyLWVuY29kaW5nIG1hZ2ljIGlmIGxpYnogc3VwcG9ydCBpcyBidWlsdC1pbiAqLwpAQCAtMjEzMyw3ICsyMTU2LDcgQEAKICAgICAgKiBmaWxlIHNpemUgYmVmb3JlIHdlIGNvbnRpbnVlIHRoaXMgdmVudHVyZSBpbiB0aGUgZGFyayBsYW5kcyBvZiBIVFRQLgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA8IDAgKSB7CisgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7CiAgICAgICAvKgogICAgICAgICogVGhpcyBpcyBtZWFudCB0byBnZXQgdGhlIHNpemUgb2YgdGhlIHByZXNlbnQgcmVtb3RlLWZpbGUgYnkgaXRzZWxmLgogICAgICAgICogV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIG5vdy4gQmFpbCBvdXQhCkBAIC0yMTY1LDggKzIxODgsOCBAQAogICAgICAgICAgICAgICBCVUZTSVpFIDogY3VybHhfc290b3V6KGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkKTsKIAogICAgICAgICAgICAgc2l6ZV90IGFjdHVhbGx5cmVhZCA9Ci0gICAgICAgICAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwgcmVhZHRoaXNhbW91bnRub3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5pbik7CisgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMoZGF0YS0+c3RhdGUuYnVmZmVyLCAxLCByZWFkdGhpc2Ftb3VudG5vdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7CiAKICAgICAgICAgICAgIHBhc3NlZCArPSBhY3R1YWxseXJlYWQ7CiAgICAgICAgICAgICBpZigoYWN0dWFsbHlyZWFkID09IDApIHx8IChhY3R1YWxseXJlYWQgPiByZWFkdGhpc2Ftb3VudG5vdykpIHsKQEAgLTIyODIsNyArMjMwNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIFRFOiAqLwogICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiBhY2NlcHQtZW5jb2RpbmcgKi8KICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogcmVmZXJlciAqLwotICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiBQcm94eS1Db25uZWN0aW9uICovCiAgICAgICAgICAgICAgICAgICAgICAiJXMiLC8qIHRyYW5zZmVyLWVuY29kaW5nICovCiAKICAgICAgICAgICAgICAgICAgICAgIGZ0cF90eXBlY29kZSwKQEAgLTIzMDUsMTAgKzIzMjcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgY29ubi0+YWxsb2NwdHIuYWNjZXB0X2VuY29kaW5nOiIiLAogICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPmNoYW5nZS5yZWZlcmVyICYmIGNvbm4tPmFsbG9jcHRyLnJlZik/CiAgICAgICAgICAgICAgICAgICAgICBjb25uLT5hbGxvY3B0ci5yZWY6IiIgLyogUmVmZXJlcjogPGRhdGE+ICovLAotICAgICAgICAgICAgICAgICAgICAgKGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmCi0gICAgICAgICAgICAgICAgICAgICAgIWNvbm4tPmJpdHMudHVubmVsX3Byb3h5ICYmCi0gICAgICAgICAgICAgICAgICAgICAgIUN1cmxfY2hlY2tQcm94eWhlYWRlcnMoY29ubiwgIlByb3h5LUNvbm5lY3Rpb246IikpPwotICAgICAgICAgICAgICAgICAgICAgIlByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmVcclxuIjoiIiwKICAgICAgICAgICAgICAgICAgICAgIHRlCiAgICAgICApOwogCkBAIC0yMzMyLDcgKzIzNTAsNyBAQAogCiAgIGlmKCEoY29ubi0+aGFuZGxlci0+ZmxhZ3MmUFJPVE9QVF9TU0wpICYmCiAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uICE9IDIwICYmCi0gICAgIChkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wKSkgeworICAgICAoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzIpKSB7CiAgICAgLyogYXBwZW5kIEhUVFAyIHVwZ3JhZGUgbWFnaWMgc3R1ZmYgdG8gdGhlIEhUVFAgcmVxdWVzdCBpZiBpdCBpc24ndCBkb25lCiAgICAgICAgb3ZlciBTU0wgKi8KICAgICByZXN1bHQgPSBDdXJsX2h0dHAyX3JlcXVlc3RfdXBncmFkZShyZXFfYnVmZmVyLCBjb25uKTsKQEAgLTIzOTMsMTEgKzI0MTEsOSBAQAogICB9CiAjZW5kaWYKIAotICBpZihkYXRhLT5zZXQudGltZWNvbmRpdGlvbikgewotICAgIHJlc3VsdCA9IEN1cmxfYWRkX3RpbWVjb25kaXRpb24oZGF0YSwgcmVxX2J1ZmZlcik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQorICByZXN1bHQgPSBDdXJsX2FkZF90aW1lY29uZGl0aW9uKGRhdGEsIHJlcV9idWZmZXIpOworICBpZihyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKIAogICByZXN1bHQgPSBDdXJsX2FkZF9jdXN0b21faGVhZGVycyhjb25uLCBGQUxTRSwgcmVxX2J1ZmZlcik7CiAgIGlmKHJlc3VsdCkKQEAgLTI0NDAsMTEgKzI0NTYsMTEgQEAKICAgICAgICBvbi4gVGhlIGRhdGEtPnNldC5mcmVhZF9mdW5jIHBvaW50ZXIgaXRzZWxmIHdpbGwgYmUgY2hhbmdlZCBmb3IgdGhlCiAgICAgICAgbXVsdGlwYXJ0IGNhc2UgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG11bHRpcGFydCBmb3JtYXR0ZWQKICAgICAgICBzdHJlYW0uICovCi0gICAgaHR0cC0+Zm9ybS5mcmVhZF9mdW5jID0gZGF0YS0+c2V0LmZyZWFkX2Z1bmM7CisgICAgaHR0cC0+Zm9ybS5mcmVhZF9mdW5jID0gZGF0YS0+c3RhdGUuZnJlYWRfZnVuYzsKIAogICAgIC8qIFNldCB0aGUgcmVhZCBmdW5jdGlvbiB0byByZWFkIGZyb20gdGhlIGdlbmVyYXRlZCBmb3JtIGRhdGEgKi8KLSAgICBkYXRhLT5zZXQuZnJlYWRfZnVuYyA9IChjdXJsX3JlYWRfY2FsbGJhY2spQ3VybF9Gb3JtUmVhZGVyOwotICAgIGRhdGEtPnNldC5pbiA9ICZodHRwLT5mb3JtOworICAgIGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKUN1cmxfRm9ybVJlYWRlcjsKKyAgICBkYXRhLT5zdGF0ZS5pbiA9ICZodHRwLT5mb3JtOwogCiAgICAgaHR0cC0+c2VuZGluZyA9IEhUVFBTRU5EX0JPRFk7CiAKQEAgLTI2NjIsOCArMjY3OCw4IEBACiAKICAgICAgICAgaHR0cC0+c2VuZGluZyA9IEhUVFBTRU5EX0JPRFk7CiAKLSAgICAgICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKXJlYWRtb3JlZGF0YTsKLSAgICAgICAgZGF0YS0+c2V0LmluID0gKHZvaWQgKiljb25uOworICAgICAgICBkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylyZWFkbW9yZWRhdGE7CisgICAgICAgIGRhdGEtPnN0YXRlLmluID0gKHZvaWQgKiljb25uOwogCiAgICAgICAgIC8qIHNldCB0aGUgdXBsb2FkIHNpemUgdG8gdGhlIHByb2dyZXNzIG1ldGVyICovCiAgICAgICAgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgaHR0cC0+cG9zdHNpemUpOwpAQCAtMzE4OCw2ICszMjA0LDE2IEBACiAgICAgICAgICAqLwogICAgICAgICBpZihkYXRhLT5zZXQub3B0X25vX2JvZHkpCiAgICAgICAgICAgKnN0b3BfcmVhZGluZyA9IFRSVUU7CisjaWZuZGVmIENVUkxfRElTQUJMRV9SVFNQCisgICAgICAgIGVsc2UgaWYoKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1JUU1ApICYmCisgICAgICAgICAgICAgICAgKGRhdGEtPnNldC5ydHNwcmVxID09IFJUU1BSRVFfREVTQ1JJQkUpICYmCisgICAgICAgICAgICAgICAgKGstPnNpemUgPD0gLTEpKQorICAgICAgICAgIC8qIFJlc3BlY3Qgc2VjdGlvbiA0LjQgb2YgcmZjMjMyNjogSWYgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcworICAgICAgICAgICAgIGFic2VudCwgYSBsZW5ndGggMCBtdXN0IGJlIGFzc3VtZWQuICBJdCB3aWxsIHByZXZlbnQgbGliY3VybCBmcm9tCisgICAgICAgICAgICAgaGFuZ2luZyBvbiBERUNSSUJFIHJlcXVlc3QgdGhhdCBnb3QgcmVmdXNlZCBmb3Igd2hhdGV2ZXIKKyAgICAgICAgICAgICByZWFzb24gKi8KKyAgICAgICAgICAqc3RvcF9yZWFkaW5nID0gVFJVRTsKKyNlbmRpZgogICAgICAgICBlbHNlIHsKICAgICAgICAgICAvKiBJZiB3ZSBrbm93IHRoZSBleHBlY3RlZCBzaXplIG9mIHRoaXMgZG9jdW1lbnQsIHdlIHNldCB0aGUKICAgICAgICAgICAgICBtYXhpbXVtIGRvd25sb2FkIHNpemUgdG8gdGhlIHNpemUgb2YgdGhlIGV4cGVjdGVkCkBAIC0zNTcxLDE0ICszNTk3LDYgQEAKICAgICAgICAgICBrLT5hdXRvX2RlY29kaW5nID0gR1pJUDsKICAgICAgICAgICBzdGFydCArPSA2OwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoImNvbXByZXNzIiwgc3RhcnQpKSB7Ci0gICAgICAgICAgay0+YXV0b19kZWNvZGluZyA9IENPTVBSRVNTOwotICAgICAgICAgIHN0YXJ0ICs9IDg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgieC1jb21wcmVzcyIsIHN0YXJ0KSkgewotICAgICAgICAgIGstPmF1dG9fZGVjb2RpbmcgPSBDT01QUkVTUzsKLSAgICAgICAgICBzdGFydCArPSAxMDsKLSAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgLyogdW5rbm93biEgKi8KICAgICAgICAgICBicmVhazsKQEAgLTM1ODcsOCArMzYwNSw3IEBACiAKICAgICB9CiAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiQ29udGVudC1FbmNvZGluZzoiLCBrLT5wKSAmJgotICAgICAgICAgICAgKGRhdGEtPnNldC5zdHJbU1RSSU5HX0VOQ09ESU5HXSB8fAotICAgICAgICAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID09IDIwKSkgeworICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfRU5DT0RJTkddKSB7CiAgICAgICAvKgogICAgICAgICogUHJvY2VzcyBDb250ZW50LUVuY29kaW5nLiBMb29rIGZvciB0aGUgdmFsdWVzOiBpZGVudGl0eSwKICAgICAgICAqIGd6aXAsIGRlZmxhdGUsIGNvbXByZXNzLCB4LWd6aXAgYW5kIHgtY29tcHJlc3MuIHgtZ3ppcCBhbmQKQEAgLTM2MTEsOSArMzYyOCw2IEBACiAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJnemlwIiwgc3RhcnQpCiAgICAgICAgICAgICAgIHx8IGNoZWNrcHJlZml4KCJ4LWd6aXAiLCBzdGFydCkpCiAgICAgICAgIGstPmF1dG9fZGVjb2RpbmcgPSBHWklQOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiY29tcHJlc3MiLCBzdGFydCkKLSAgICAgICAgICAgICAgfHwgY2hlY2twcmVmaXgoIngtY29tcHJlc3MiLCBzdGFydCkpCi0gICAgICAgIGstPmF1dG9fZGVjb2RpbmcgPSBDT01QUkVTUzsKICAgICB9CiAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiQ29udGVudC1SYW5nZToiLCBrLT5wKSkgewogICAgICAgLyogQ29udGVudC1SYW5nZTogYnl0ZXMgW251bV0tCmRpZmYgLS1naXQgYS9saWIvaHR0cC5oIGIvbGliL2h0dHAuaAppbmRleCA0MTViZTM5Li45ODE0NzJlIDEwMDY0NAotLS0gYS9saWIvaHR0cC5oCisrKyBiL2xpYi9odHRwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xNjMsNiArMTYzLDcgQEAKICAgQ3VybF9zZW5kX2J1ZmZlciAqaGVhZGVyX3JlY3ZidWY7CiAgIHNpemVfdCBucmVhZF9oZWFkZXJfcmVjdmJ1ZjsgLyogbnVtYmVyIG9mIGJ5dGVzIGluIGhlYWRlcl9yZWN2YnVmIGZlZCBpbnRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXIgbGF5ZXIgKi8KKyAgQ3VybF9zZW5kX2J1ZmZlciAqdHJhaWxlcl9yZWN2YnVmOwogICBpbnQgc3RhdHVzX2NvZGU7IC8qIEhUVFAgc3RhdHVzIGNvZGUgKi8KICAgY29uc3QgdWludDhfdCAqcGF1c2VkYXRhOyAvKiBwb2ludGVyIHRvIGRhdGEgcmVjZWl2ZWQgaW4gb25fZGF0YV9jaHVuayAqLwogICBzaXplX3QgcGF1c2VsZW47IC8qIHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCBpbiBkYXRhICovCkBAIC0xNzYsNiArMTc3LDEwIEBACiAgIGNvbnN0IHVpbnQ4X3QgKnVwbG9hZF9tZW07IC8qIHBvaW50cyB0byBhIGJ1ZmZlciB0byByZWFkIGZyb20gKi8KICAgc2l6ZV90IHVwbG9hZF9sZW47IC8qIHNpemUgb2YgdGhlIGJ1ZmZlciAndXBsb2FkX21lbScgcG9pbnRzIHRvICovCiAgIGN1cmxfb2ZmX3QgdXBsb2FkX2xlZnQ7IC8qIG51bWJlciBvZiBieXRlcyBsZWZ0IHRvIHVwbG9hZCAqLworCisgIGNoYXIgKipwdXNoX2hlYWRlcnM7ICAgICAgIC8qIGFsbG9jYXRlZCBhcnJheSAqLworICBzaXplX3QgcHVzaF9oZWFkZXJzX3VzZWQ7ICAvKiBudW1iZXIgb2YgZW50cmllcyBmaWxsZWQgaW4gKi8KKyAgc2l6ZV90IHB1c2hfaGVhZGVyc19hbGxvYzsgLyogbnVtYmVyIG9mIGVudHJpZXMgYWxsb2NhdGVkICovCiAjZW5kaWYKIH07CiAKQEAgLTIwOSw5ICsyMTQsOSBAQAogICAgICB0aGVtIGZvciBib3RoIGNhc2VzLiAqLwogICBpbnQzMl90IHBhdXNlX3N0cmVhbV9pZDsgLyogc3RyZWFtIElEIHdoaWNoIHBhdXNlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2ICovCisgIHNpemVfdCBkcmFpbl90b3RhbDsgLyogc3VtIG9mIGFsbCBzdHJlYW0ncyBVcmxTdGF0ZS5kcmFpbiAqLwogCiAgIC8qIHRoaXMgaXMgYSBoYXNoIG9mIGFsbCBpbmRpdmlkdWFsIHN0cmVhbXMgKFNlc3Npb25IYW5kbGUgc3RydWN0cykgKi8KLSAgc3RydWN0IGN1cmxfaGFzaCBzdHJlYW1zaDsKICAgc3RydWN0IGgyc2V0dGluZ3Mgc2V0dGluZ3M7CiAjZWxzZQogICBpbnQgdW51c2VkOyAvKiBwcmV2ZW50IGEgY29tcGlsZXIgd2FybmluZyAqLwpkaWZmIC0tZ2l0IGEvbGliL2h0dHAyLmMgYi9saWIvaHR0cDIuYwppbmRleCBmYTQ3ZDBlLi4zZmUwMmE1IDEwMDY0NAotLS0gYS9saWIvaHR0cDIuYworKysgYi9saWIvaHR0cDIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKICNpZmRlZiBVU0VfTkdIVFRQMgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSA8bmdodHRwMi9uZ2h0dHAyLmg+CiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgImh0dHAyLmgiCkBAIC0zMywxNyArMzIsNTEgQEAKICNpbmNsdWRlICJyYXdzdHIuaCIKICNpbmNsdWRlICJtdWx0aWlmLmgiCiAjaW5jbHVkZSAiY29ubmNhY2hlLmgiCisjaW5jbHVkZSAidXJsLmgiCisjaW5jbHVkZSAiY29ubmVjdC5oIgorI2luY2x1ZGUgInN0cnRvb2ZmdC5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKICNkZWZpbmUgTUlOKHgseSkgKCh4KTwoeSk/KHgpOih5KSkKIAotI2lmIChOR0hUVFAyX1ZFUlNJT05fTlVNIDwgMHgwMDA2MDApCisjaWYgKE5HSFRUUDJfVkVSU0lPTl9OVU0gPCAweDAxMDAwMCkKICNlcnJvciB0b28gb2xkIG5naHR0cDIgdmVyc2lvbiwgdXBncmFkZSEKICNlbmRpZgogCisjaWYgKE5HSFRUUDJfVkVSU0lPTl9OVU0gPiAweDAxMDgwMCkKKyNkZWZpbmUgTkdIVFRQMl9IQVNfSFRUUDJfU1RSRVJST1IgMQorI2VuZGlmCisKKyNpZiAoTkdIVFRQMl9WRVJTSU9OX05VTSA+PSAweDAxMDkwMCkKKy8qIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X2Vycm9yX2NhbGxiYWNrIGlzIHByZXNlbnQgaW4gbmdodHRwMiAxLjkuMCBvcgorICAgbGF0ZXIgKi8KKyNkZWZpbmUgTkdIVFRQMl9IQVNfRVJST1JfQ0FMTEJBQ0sgMQorI2Vsc2UKKyNkZWZpbmUgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfZXJyb3JfY2FsbGJhY2soeCx5KQorI2VuZGlmCisKKy8qCisgKiBDdXJsX2h0dHAyX2luaXRfc3RhdGUoKSBpcyBjYWxsZWQgd2hlbiB0aGUgZWFzeSBoYW5kbGUgaXMgY3JlYXRlZCBhbmQKKyAqIGFsbG93cyBmb3IgSFRUUC8yIHNwZWNpZmljIGluaXQgb2Ygc3RhdGUuCisgKi8KK3ZvaWQgQ3VybF9odHRwMl9pbml0X3N0YXRlKHN0cnVjdCBVcmxTdGF0ZSAqc3RhdGUpCit7CisgIHN0YXRlLT5zdHJlYW1fd2VpZ2h0ID0gTkdIVFRQMl9ERUZBVUxUX1dFSUdIVDsKK30KKworLyoKKyAqIEN1cmxfaHR0cDJfaW5pdF91c2Vyc2V0KCkgaXMgY2FsbGVkIHdoZW4gdGhlIGVhc3kgaGFuZGxlIGlzIGNyZWF0ZWQgYW5kCisgKiBhbGxvd3MgZm9yIEhUVFAvMiBzcGVjaWZpYyB1c2VyLXNldCBmaWVsZHMuCisgKi8KK3ZvaWQgQ3VybF9odHRwMl9pbml0X3VzZXJzZXQoc3RydWN0IFVzZXJEZWZpbmVkICpzZXQpCit7CisgIHNldC0+c3RyZWFtX3dlaWdodCA9IE5HSFRUUDJfREVGQVVMVF9XRUlHSFQ7Cit9CisKIHN0YXRpYyBpbnQgaHR0cDJfcGVyZm9ybV9nZXRzb2NrKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2ssIC8qIHBvaW50cyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtc29ja3MKQEAgLTc5LDYgKzExMiw3IEBACiBzdGF0aWMgQ1VSTGNvZGUgaHR0cDJfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbikKIHsKKyAgc3RydWN0IEhUVFAgKmh0dHAgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwogICBzdHJ1Y3QgaHR0cF9jb25uICpjID0gJmNvbm4tPnByb3RvLmh0dHBjOwogICAodm9pZClkZWFkX2Nvbm5lY3Rpb247CiAKQEAgLTg2LDcgKzEyMCwxOCBAQAogCiAgIG5naHR0cDJfc2Vzc2lvbl9kZWwoYy0+aDIpOwogICBDdXJsX3NhZmVmcmVlKGMtPmluYnVmKTsKLSAgQ3VybF9oYXNoX2Rlc3Ryb3koJmMtPnN0cmVhbXNoKTsKKworICBpZihodHRwKSB7CisgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoaHR0cC0+aGVhZGVyX3JlY3ZidWYpOworICAgIGh0dHAtPmhlYWRlcl9yZWN2YnVmID0gTlVMTDsgLyogY2xlYXIgdGhlIHBvaW50ZXIgKi8KKyAgICBDdXJsX2FkZF9idWZmZXJfZnJlZShodHRwLT50cmFpbGVyX3JlY3ZidWYpOworICAgIGh0dHAtPnRyYWlsZXJfcmVjdmJ1ZiA9IE5VTEw7IC8qIGNsZWFyIHRoZSBwb2ludGVyICovCisgICAgZm9yKDsgaHR0cC0+cHVzaF9oZWFkZXJzX3VzZWQgPiAwOyAtLWh0dHAtPnB1c2hfaGVhZGVyc191c2VkKSB7CisgICAgICBmcmVlKGh0dHAtPnB1c2hfaGVhZGVyc1todHRwLT5wdXNoX2hlYWRlcnNfdXNlZCAtIDFdKTsKKyAgICB9CisgICAgZnJlZShodHRwLT5wdXNoX2hlYWRlcnMpOworICAgIGh0dHAtPnB1c2hfaGVhZGVycyA9IE5VTEw7CisgIH0KIAogICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkhUVFAvMiBESVNDT05ORUNUIGRvbmVcbiIpKTsKIApAQCAtOTQsMTIgKzEzOSw5IEBACiB9CiAKIC8qIGNhbGxlZCBmcm9tIEN1cmxfaHR0cF9zZXR1cF9jb25uICovCi12b2lkIEN1cmxfaHR0cDJfc2V0dXBfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit2b2lkIEN1cmxfaHR0cDJfc2V0dXBfcmVxKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewotICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7Ci0KLSAgY29ubi0+cHJvdG8uaHR0cGMuc2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcyA9Ci0gICAgREVGQVVMVF9NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOworICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGRhdGEtPnJlcS5wcm90b3A7CiAKICAgaHR0cC0+bnJlYWRfaGVhZGVyX3JlY3ZidWYgPSAwOwogICBodHRwLT5ib2R5c3RhcnRlZCA9IEZBTFNFOwpAQCAtMTA4LDIwICsxNTAsMjUgQEAKICAgaHR0cC0+cGF1c2VsZW4gPSAwOwogICBodHRwLT5lcnJvcl9jb2RlID0gTkdIVFRQMl9OT19FUlJPUjsKICAgaHR0cC0+Y2xvc2VkID0gRkFMU0U7Ci0KLSAgLyogd2hlcmUgdG8gc3RvcmUgaW5jb21pbmcgZGF0YSBmb3IgdGhpcyBzdHJlYW0gYW5kIGhvdyBiaWcgdGhlIGJ1ZmZlciBpcyAqLwotICBodHRwLT5tZW0gPSBjb25uLT5kYXRhLT5zdGF0ZS5idWZmZXI7CisgIGh0dHAtPm1lbSA9IGRhdGEtPnN0YXRlLmJ1ZmZlcjsKICAgaHR0cC0+bGVuID0gQlVGU0laRTsKICAgaHR0cC0+bWVtbGVuID0gMDsKIH0KIAorLyogY2FsbGVkIGZyb20gQ3VybF9odHRwX3NldHVwX2Nvbm4gKi8KK3ZvaWQgQ3VybF9odHRwMl9zZXR1cF9jb25uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgY29ubi0+cHJvdG8uaHR0cGMuc2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcyA9CisgICAgREVGQVVMVF9NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOworfQorCiAvKgogICogSFRUUDIgaGFuZGxlciBpbnRlcmZhY2UuIFRoaXMgaXNuJ3QgYWRkZWQgdG8gdGhlIGdlbmVyYWwgbGlzdCBvZiBwcm90b2NvbHMKICAqIGJ1dCB3aWxsIGJlIHVzZWQgYXQgcnVuLXRpbWUgd2hlbiB0aGUgcHJvdG9jb2wgaXMgZHluYW1pY2FsbHkgc3dpdGNoZWQgZnJvbQogICogSFRUUCB0byBIVFRQMi4KICAqLwogY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfaHR0cDIgPSB7Ci0gICJIVFRQMiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCisgICJIVFRQIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0dXBfY29ubmVjdGlvbiAqLwogICBDdXJsX2h0dHAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX2l0ICovCiAgIEN1cmxfaHR0cF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLwpAQCAtMTQxLDcgKzE4OCw3IEBACiB9OwogCiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9odHRwMl9zc2wgPSB7Ci0gICJIVFRQMiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCisgICJIVFRQUyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0dXBfY29ubmVjdGlvbiAqLwogICBDdXJsX2h0dHAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX2l0ICovCiAgIEN1cmxfaHR0cF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLwpAQCAtMTcwLDYgKzIxNywzNCBAQAogICByZXR1cm4gc25wcmludGYocCwgbGVuLCAiIG5naHR0cDIvJXMiLCBoMi0+dmVyc2lvbl9zdHIpOwogfQogCisvKiBIVFRQLzIgZXJyb3IgY29kZSB0byBuYW1lIGJhc2VkIG9uIHRoZSBFcnJvciBDb2RlIFJlZ2lzdHJ5LgoraHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc1NDAjcGFnZS03NworbmdodHRwMl9lcnJvcl9jb2RlIGVudW1zIGFyZSBpZGVudGljYWwuCisqLworY29uc3QgY2hhciAqQ3VybF9odHRwMl9zdHJlcnJvcih1aW50MzJfdCBlcnIpIHsKKyNpZm5kZWYgTkdIVFRQMl9IQVNfSFRUUDJfU1RSRVJST1IKKyAgY29uc3QgY2hhciAqc3RyW10gPSB7CisgICAgIk5PX0VSUk9SIiwgICAgICAgICAgICAgLyogMHgwICovCisgICAgIlBST1RPQ09MX0VSUk9SIiwgICAgICAgLyogMHgxICovCisgICAgIklOVEVSTkFMX0VSUk9SIiwgICAgICAgLyogMHgyICovCisgICAgIkZMT1dfQ09OVFJPTF9FUlJPUiIsICAgLyogMHgzICovCisgICAgIlNFVFRJTkdTX1RJTUVPVVQiLCAgICAgLyogMHg0ICovCisgICAgIlNUUkVBTV9DTE9TRUQiLCAgICAgICAgLyogMHg1ICovCisgICAgIkZSQU1FX1NJWkVfRVJST1IiLCAgICAgLyogMHg2ICovCisgICAgIlJFRlVTRURfU1RSRUFNIiwgICAgICAgLyogMHg3ICovCisgICAgIkNBTkNFTCIsICAgICAgICAgICAgICAgLyogMHg4ICovCisgICAgIkNPTVBSRVNTSU9OX0VSUk9SIiwgICAgLyogMHg5ICovCisgICAgIkNPTk5FQ1RfRVJST1IiLCAgICAgICAgLyogMHhBICovCisgICAgIkVOSEFOQ0VfWU9VUl9DQUxNIiwgICAgLyogMHhCICovCisgICAgIklOQURFUVVBVEVfU0VDVVJJVFkiLCAgLyogMHhDICovCisgICAgIkhUVFBfMV8xX1JFUVVJUkVEIiAgICAgLyogMHhEICovCisgIH07CisgIHJldHVybiAoZXJyIDwgc2l6ZW9mIHN0ciAvIHNpemVvZiBzdHJbMF0pID8gc3RyW2Vycl0gOiAidW5rbm93biI7CisjZWxzZQorICByZXR1cm4gbmdodHRwMl9odHRwMl9zdHJlcnJvcihlcnIpOworI2VuZGlmCit9CisKIC8qCiAgKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgbmdodHRwMl9zZW5kX2NhbGxiYWNrIHR5cGUuIEhlcmUgd2Ugd3JpdGUgfGRhdGF8IHdpdGgKICAqIHNpemUgfGxlbmd0aHwgdG8gdGhlIG5ldHdvcmsgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5CkBAIC0yMDUsNiArMjgwLDE2NiBAQAogICByZXR1cm4gd3JpdHRlbjsKIH0KIAorCisvKiBXZSBwYXNzIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdCBpbiB0aGUgcHVzaCBjYWxsYmFjaywgYnV0IHRoZSBjb250ZW50cyBvZgorICAgdGhlIHN0cnVjdCBhcmUgaGlkZGVuIGZyb20gdGhlIHVzZXIuICovCitzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyB7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhOworICBjb25zdCBuZ2h0dHAyX3B1c2hfcHJvbWlzZSAqZnJhbWU7Cit9OworCisvKgorICogcHVzaCBoZWFkZXIgYWNjZXNzIGZ1bmN0aW9uLiBPbmx5IHRvIGJlIHVzZWQgZnJvbSB3aXRoaW4gdGhlIHB1c2ggY2FsbGJhY2sKKyAqLworY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bnVtKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLCBzaXplX3QgbnVtKQoreworICAvKiBWZXJpZnkgdGhhdCB3ZSBnb3QgYSBnb29kIGVhc3kgaGFuZGxlIGluIHRoZSBwdXNoIGhlYWRlciBzdHJ1Y3QsIG1vc3RseSB0bworICAgICBkZXRlY3QgcnViYmlzaCBpbnB1dCBmYXN0KGVyKS4gKi8KKyAgaWYoIWggfHwgIUdPT0RfRUFTWV9IQU5ETEUoaC0+ZGF0YSkpCisgICAgcmV0dXJuIE5VTEw7CisgIGVsc2UgeworICAgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBoLT5kYXRhLT5yZXEucHJvdG9wOworICAgIGlmKG51bSA8IHN0cmVhbS0+cHVzaF9oZWFkZXJzX3VzZWQpCisgICAgICByZXR1cm4gc3RyZWFtLT5wdXNoX2hlYWRlcnNbbnVtXTsKKyAgfQorICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIHB1c2ggaGVhZGVyIGFjY2VzcyBmdW5jdGlvbi4gT25seSB0byBiZSB1c2VkIGZyb20gd2l0aGluIHRoZSBwdXNoIGNhbGxiYWNrCisgKi8KK2NoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW5hbWUoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsIGNvbnN0IGNoYXIgKmhlYWRlcikKK3sKKyAgLyogVmVyaWZ5IHRoYXQgd2UgZ290IGEgZ29vZCBlYXN5IGhhbmRsZSBpbiB0aGUgcHVzaCBoZWFkZXIgc3RydWN0LAorICAgICBtb3N0bHkgdG8gZGV0ZWN0IHJ1YmJpc2ggaW5wdXQgZmFzdChlcikuIEFsc28gZW1wdHkgaGVhZGVyIG5hbWUKKyAgICAgaXMganVzdCBhIHJ1YmJpc2ggdG9vLiBXZSBoYXZlIHRvIGFsbG93ICI6IiBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgIHRoZSBoZWFkZXIsIGJ1dCBoZWFkZXIgPT0gIjoiIG11c3QgYmUgcmVqZWN0ZWQuIElmIHdlIGhhdmUgJzonIGluCisgICAgIHRoZSBtaWRkbGUgb2YgaGVhZGVyLCBpdCBjb3VsZCBiZSBtYXRjaGVkIGluIG1pZGRsZSBvZiB0aGUgdmFsdWUsCisgICAgIHRoaXMgaXMgYmVjYXVzZSB3ZSBkbyBwcmVmaXggbWF0Y2guKi8KKyAgaWYoIWggfHwgIUdPT0RfRUFTWV9IQU5ETEUoaC0+ZGF0YSkgfHwgIWhlYWRlciB8fCAhaGVhZGVyWzBdIHx8CisgICAgIEN1cmxfcmF3X2VxdWFsKGhlYWRlciwgIjoiKSB8fCBzdHJjaHIoaGVhZGVyICsgMSwgJzonKSkKKyAgICByZXR1cm4gTlVMTDsKKyAgZWxzZSB7CisgICAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGgtPmRhdGEtPnJlcS5wcm90b3A7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihoZWFkZXIpOworICAgIHNpemVfdCBpOworICAgIGZvcihpPTA7IGk8c3RyZWFtLT5wdXNoX2hlYWRlcnNfdXNlZDsgaSsrKSB7CisgICAgICBpZighc3RybmNtcChoZWFkZXIsIHN0cmVhbS0+cHVzaF9oZWFkZXJzW2ldLCBsZW4pKSB7CisgICAgICAgIC8qIHN1Yi1tYXRjaCwgbWFrZSBzdXJlIHRoYXQgaXQgaXMgZm9sbG93ZWQgYnkgYSBjb2xvbiAqLworICAgICAgICBpZihzdHJlYW0tPnB1c2hfaGVhZGVyc1tpXVtsZW5dICE9ICc6JykKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuICZzdHJlYW0tPnB1c2hfaGVhZGVyc1tpXVtsZW4rMV07CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgQ1VSTCAqZHVwaGFuZGxlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQoreworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqc2Vjb25kID0gY3VybF9lYXN5X2R1cGhhbmRsZShkYXRhKTsKKyAgaWYoc2Vjb25kKSB7CisgICAgLyogc2V0dXAgdGhlIHJlcXVlc3Qgc3RydWN0ICovCisgICAgc3RydWN0IEhUVFAgKmh0dHAgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBIVFRQKSk7CisgICAgaWYoIWh0dHApIHsKKyAgICAgICh2b2lkKUN1cmxfY2xvc2Uoc2Vjb25kKTsKKyAgICAgIHNlY29uZCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc2Vjb25kLT5yZXEucHJvdG9wID0gaHR0cDsKKyAgICAgIGh0dHAtPmhlYWRlcl9yZWN2YnVmID0gQ3VybF9hZGRfYnVmZmVyX2luaXQoKTsKKyAgICAgIGlmKCFodHRwLT5oZWFkZXJfcmVjdmJ1ZikgeworICAgICAgICBmcmVlKGh0dHApOworICAgICAgICAodm9pZClDdXJsX2Nsb3NlKHNlY29uZCk7CisgICAgICAgIHNlY29uZCA9IE5VTEw7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgQ3VybF9odHRwMl9zZXR1cF9yZXEoc2Vjb25kKTsKKyAgICAgICAgc2Vjb25kLT5zdGF0ZS5zdHJlYW1fd2VpZ2h0ID0gZGF0YS0+c3RhdGUuc3RyZWFtX3dlaWdodDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHNlY29uZDsKK30KKworCitzdGF0aWMgaW50IHB1c2hfcHJvbWlzZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfcHVzaF9wcm9taXNlICpmcmFtZSkKK3sKKyAgaW50IHJ2OworICBERUJVR0YoaW5mb2YoZGF0YSwgIlBVU0hfUFJPTUlTRSByZWNlaXZlZCwgc3RyZWFtICV1IVxuIiwKKyAgICAgICAgICAgICAgIGZyYW1lLT5wcm9taXNlZF9zdHJlYW1faWQpKTsKKyAgaWYoZGF0YS0+bXVsdGktPnB1c2hfY2IpIHsKKyAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtOworICAgIHN0cnVjdCBIVFRQICpuZXdzdHJlYW07CisgICAgc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgaGVhZHM7CisgICAgQ1VSTE1jb2RlIHJjOworICAgIHN0cnVjdCBodHRwX2Nvbm4gKmh0dHBjOworICAgIHNpemVfdCBpOworICAgIC8qIGNsb25lIHRoZSBwYXJlbnQgKi8KKyAgICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqbmV3aGFuZGxlID0gZHVwaGFuZGxlKGRhdGEpOworICAgIGlmKCFuZXdoYW5kbGUpIHsKKyAgICAgIGluZm9mKGRhdGEsICJmYWlsZWQgdG8gZHVwbGljYXRlIGhhbmRsZVxuIik7CisgICAgICBydiA9IDE7IC8qIEZBSUwgSEFSRCAqLworICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGhlYWRzLmRhdGEgPSBkYXRhOworICAgIGhlYWRzLmZyYW1lID0gZnJhbWU7CisgICAgLyogYXNrIHRoZSBhcHBsaWNhdGlvbiAqLworICAgIERFQlVHRihpbmZvZihkYXRhLCAiR290IFBVU0hfUFJPTUlTRSwgYXNrIGFwcGxpY2F0aW9uIVxuIikpOworCisgICAgc3RyZWFtID0gZGF0YS0+cmVxLnByb3RvcDsKKyAgICBpZighc3RyZWFtKSB7CisgICAgICBmYWlsZihkYXRhLCAiSW50ZXJuYWwgTlVMTCBzdHJlYW0hXG4iKTsKKyAgICAgIHJ2ID0gMTsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBydiA9IGRhdGEtPm11bHRpLT5wdXNoX2NiKGRhdGEsIG5ld2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzX3VzZWQsICZoZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm11bHRpLT5wdXNoX3VzZXJwKTsKKworICAgIC8qIGZyZWUgdGhlIGhlYWRlcnMgYWdhaW4gKi8KKyAgICBmb3IoaT0wOyBpPHN0cmVhbS0+cHVzaF9oZWFkZXJzX3VzZWQ7IGkrKykKKyAgICAgIGZyZWUoc3RyZWFtLT5wdXNoX2hlYWRlcnNbaV0pOworICAgIGZyZWUoc3RyZWFtLT5wdXNoX2hlYWRlcnMpOworICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzID0gTlVMTDsKKworICAgIGlmKHJ2KSB7CisgICAgICAvKiBkZW5pZWQsIGtpbGwgb2ZmIHRoZSBuZXcgaGFuZGxlIGFnYWluICovCisgICAgICAodm9pZClDdXJsX2Nsb3NlKG5ld2hhbmRsZSk7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgbmV3c3RyZWFtID0gbmV3aGFuZGxlLT5yZXEucHJvdG9wOworICAgIG5ld3N0cmVhbS0+c3RyZWFtX2lkID0gZnJhbWUtPnByb21pc2VkX3N0cmVhbV9pZDsKKyAgICBuZXdoYW5kbGUtPnJlcS5tYXhkb3dubG9hZCA9IC0xOworICAgIG5ld2hhbmRsZS0+cmVxLnNpemUgPSAtMTsKKworICAgIC8qIGFwcHJvdmVkLCBhZGQgdG8gdGhlIG11bHRpIGhhbmRsZSBhbmQgaW1tZWRpYXRlbHkgc3dpdGNoIHRvIFBFUkZPUk0KKyAgICAgICBzdGF0ZSB3aXRoIHRoZSBnaXZlbiBjb25uZWN0aW9uICEqLworICAgIHJjID0gQ3VybF9tdWx0aV9hZGRfcGVyZm9ybShkYXRhLT5tdWx0aSwgbmV3aGFuZGxlLCBjb25uKTsKKyAgICBpZihyYykgeworICAgICAgaW5mb2YoZGF0YSwgImZhaWxlZCB0byBhZGQgaGFuZGxlIHRvIG11bHRpXG4iKTsKKyAgICAgIEN1cmxfY2xvc2UobmV3aGFuZGxlKTsKKyAgICAgIHJ2ID0gMTsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBodHRwYyA9ICZjb25uLT5wcm90by5odHRwYzsKKyAgICBuZ2h0dHAyX3Nlc3Npb25fc2V0X3N0cmVhbV91c2VyX2RhdGEoaHR0cGMtPmgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+cHJvbWlzZWRfc3RyZWFtX2lkLCBuZXdoYW5kbGUpOworICB9CisgIGVsc2UgeworICAgIERFQlVHRihpbmZvZihkYXRhLCAiR290IFBVU0hfUFJPTUlTRSwgaWdub3JlIGl0IVxuIikpOworICAgIHJ2ID0gMTsKKyAgfQorICBmYWlsOgorICByZXR1cm4gcnY7Cit9CisKIHN0YXRpYyBpbnQgb25fZnJhbWVfcmVjdihuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sIGNvbnN0IG5naHR0cDJfZnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewpAQCAtMjEyLDMyICs0NDcsNTIgQEAKICAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3MgPSBOVUxMOwogICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gTlVMTDsKKyAgc3RhdGljIGludCBsYXN0U3RyZWFtID0gLTE7CiAgIGludCBydjsKICAgc2l6ZV90IGxlZnQsIG5jb3B5OwogICBpbnQzMl90IHN0cmVhbV9pZCA9IGZyYW1lLT5oZC5zdHJlYW1faWQ7CiAKLSAgKHZvaWQpc2Vzc2lvbjsKLSAgKHZvaWQpZnJhbWU7Ci0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAib25fZnJhbWVfcmVjdigpIGhlYWRlciAleCBzdHJlYW0gJXhcbiIsCi0gICAgICAgICAgICAgICBmcmFtZS0+aGQudHlwZSwgc3RyZWFtX2lkKSk7Ci0KLSAgaWYoc3RyZWFtX2lkKSB7Ci0gICAgLyogZ2V0IHRoZSBzdHJlYW0gZnJvbSB0aGUgaGFzaCBiYXNlZCBvbiBTdHJlYW0gSUQsIHN0cmVhbSBJRCB6ZXJvIGlzIGZvcgotICAgICAgIGNvbm5lY3Rpb24tb3JpZW50ZWQgc3R1ZmYgKi8KLSAgICBkYXRhX3MgPSBDdXJsX2hhc2hfcGljaygmaHR0cGMtPnN0cmVhbXNoLCAmc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJlYW1faWQpKTsKLSAgICBpZighZGF0YV9zKSB7Ci0gICAgICAvKiBSZWNlaXZpbmcgYSBTdHJlYW0gSUQgbm90IGluIHRoZSBoYXNoIHNob3VsZCBub3QgaGFwcGVuLCB0aGlzIGlzIGFuCi0gICAgICAgICBpbnRlcm5hbCBlcnJvciBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZSEgKi8KLSAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJSZWNlaXZlZCBmcmFtZSBvbiBTdHJlYW0gSUQ6ICV4IG5vdCBpbiBzdHJlYW0gaGFzaCEiLAotICAgICAgICAgICAgc3RyZWFtX2lkKTsKLSAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworICBpZighc3RyZWFtX2lkKSB7CisgICAgLyogc3RyZWFtIElEIHplcm8gaXMgZm9yIGNvbm5lY3Rpb24tb3JpZW50ZWQgc3R1ZmYgKi8KKyAgICBpZihmcmFtZS0+aGQudHlwZSA9PSBOR0hUVFAyX1NFVFRJTkdTKSB7CisgICAgICB1aW50MzJfdCBtYXhfY29ubiA9IGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zOworICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJHb3QgU0VUVElOR1NcbiIpKTsKKyAgICAgIGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zID0KKyAgICAgICAgbmdodHRwMl9zZXNzaW9uX2dldF9yZW1vdGVfc2V0dGluZ3MoCisgICAgICAgICAgc2Vzc2lvbiwgTkdIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKTsKKyAgICAgIGh0dHBjLT5zZXR0aW5ncy5lbmFibGVfcHVzaCA9CisgICAgICAgIG5naHR0cDJfc2Vzc2lvbl9nZXRfcmVtb3RlX3NldHRpbmdzKAorICAgICAgICAgIHNlc3Npb24sIE5HSFRUUDJfU0VUVElOR1NfRU5BQkxFX1BVU0gpOworICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TID09ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zKSk7CisgICAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkVOQUJMRV9QVVNIID09ICVzXG4iLAorICAgICAgICAgICAgICAgICAgIGh0dHBjLT5zZXR0aW5ncy5lbmFibGVfcHVzaD8iVFJVRSI6ImZhbHNlIikpOworICAgICAgaWYobWF4X2Nvbm4gIT0gaHR0cGMtPnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMpIHsKKyAgICAgICAgLyogb25seSBzaWduYWwgY2hhbmdlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkICovCisgICAgICAgIGluZm9mKGNvbm4tPmRhdGEsCisgICAgICAgICAgICAgICJDb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgKE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgdXBkYXRlZCkhXG4iKTsKKyAgICAgICAgQ3VybF9tdWx0aV9jb25uY2hhbmdlZChjb25uLT5kYXRhLT5tdWx0aSk7CisgICAgICB9CiAgICAgfQotICAgIHN0cmVhbSA9IGRhdGFfcy0+cmVxLnByb3RvcDsKLSAgfQotICBlbHNlCi0gICAgLyogd2UgZG8gbm90aGluZyBvbiBzdHJlYW0gemVybyAqLwogICAgIHJldHVybiAwOworICB9CisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBzdHJlYW1faWQpOworICBpZihsYXN0U3RyZWFtICE9IHN0cmVhbV9pZCkgeworICAgIGxhc3RTdHJlYW0gPSBzdHJlYW1faWQ7CisgIH0KKyAgaWYoIWRhdGFfcykgeworICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLAorICAgICAgICAgICAgICAgICAiTm8gU2Vzc2lvbkhhbmRsZSBhc3NvY2lhdGVkIHdpdGggc3RyZWFtOiAleFxuIiwKKyAgICAgICAgICAgICAgICAgc3RyZWFtX2lkKSk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7CisgIGlmKCFzdHJlYW0pCisgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CisKKyAgREVCVUdGKGluZm9mKGRhdGFfcywgIm9uX2ZyYW1lX3JlY3YoKSBoZWFkZXIgJXggc3RyZWFtICV4XG4iLAorICAgICAgICAgICAgICAgZnJhbWUtPmhkLnR5cGUsIHN0cmVhbV9pZCkpOwogCiAgIHN3aXRjaChmcmFtZS0+aGQudHlwZSkgewogICBjYXNlIE5HSFRUUDJfREFUQToKQEAgLTI1MiwxMyArNTA3LDkgQEAKICAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2UgTkdIVFRQMl9IRUFERVJTOgotICAgIGlmKGZyYW1lLT5oZWFkZXJzLmNhdCA9PSBOR0hUVFAyX0hDQVRfUkVRVUVTVCkKLSAgICAgIGJyZWFrOwotCiAgICAgaWYoc3RyZWFtLT5ib2R5c3RhcnRlZCkgewogICAgICAgLyogT25seSB2YWxpZCBIRUFERVJTIGFmdGVyIGJvZHkgc3RhcnRlZCBpcyB0cmFpbGVyIEhFQURFUlMuICBXZQotICAgICAgICAgaWdub3JlcyB0cmFpbGVyIEhFQURFUlMgZm9yIG5vdy4gIG5naHR0cDIgZ3VhcmFudGVlcyB0aGF0IGl0Ci0gICAgICAgICBoYXMgRU5EX1NUUkVBTSBmbGFnIHNldC4gKi8KKyAgICAgICAgIGJ1ZmZlciB0aGVtIGluIG9uX2hlYWRlciBjYWxsYmFjay4gKi8KICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjg5LDM5ICs1NDAsMjcgQEAKICAgICBzdHJlYW0tPm1lbWxlbiArPSBuY29weTsKIAogICAgIGRhdGFfcy0+c3RhdGUuZHJhaW4rKzsKLSAgICBDdXJsX2V4cGlyZShkYXRhX3MsIDEpOworICAgIGh0dHBjLT5kcmFpbl90b3RhbCsrOworICAgIHsKKyAgICAgIC8qIGdldCB0aGUgcG9pbnRlciBmcm9tIHVzZXJwIGFnYWluIHNpbmNlIGl0IHdhcyByZS1hc3NpZ25lZCBhYm92ZSAqLworICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uX3MgPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CisKKyAgICAgIC8qIGlmIHdlIHJlY2VpdmUgZGF0YSBmb3IgYW5vdGhlciBoYW5kbGUsIHdha2UgdGhhdCB1cCAqLworICAgICAgaWYoY29ubl9zLT5kYXRhICE9IGRhdGFfcykKKyAgICAgICAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsKKyAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2UgTkdIVFRQMl9QVVNIX1BST01JU0U6Ci0gICAgREVCVUdGKGluZm9mKGRhdGFfcywgIkdvdCBQVVNIX1BST01JU0UsIFJTVF9TVFJFQU0gaXQhXG4iKSk7Ci0gICAgcnYgPSBuZ2h0dHAyX3N1Ym1pdF9yc3Rfc3RyZWFtKHNlc3Npb24sIE5HSFRUUDJfRkxBR19OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+cHVzaF9wcm9taXNlLnByb21pc2VkX3N0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9DQU5DRUwpOwotICAgIGlmKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7Ci0gICAgICByZXR1cm4gcnY7CisgICAgcnYgPSBwdXNoX3Byb21pc2UoZGF0YV9zLCBjb25uLCAmZnJhbWUtPnB1c2hfcHJvbWlzZSk7CisgICAgaWYocnYpIHsgLyogZGVueSEgKi8KKyAgICAgIHJ2ID0gbmdodHRwMl9zdWJtaXRfcnN0X3N0cmVhbShzZXNzaW9uLCBOR0hUVFAyX0ZMQUdfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+cHVzaF9wcm9taXNlLnByb21pc2VkX3N0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX0NBTkNFTCk7CisgICAgICBpZihuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgeworICAgICAgICByZXR1cm4gcnY7CisgICAgICB9CiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIE5HSFRUUDJfU0VUVElOR1M6Ci0gIHsKLSAgICB1aW50MzJfdCBtYXhfY29ubiA9IGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zOwotICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiR290IFNFVFRJTkdTIGZvciBzdHJlYW0gJXUhXG4iLCBzdHJlYW1faWQpKTsKLSAgICBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcyA9Ci0gICAgICBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3JlbW90ZV9zZXR0aW5ncygKLSAgICAgICAgc2Vzc2lvbiwgTkdIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKTsKLSAgICBodHRwYy0+c2V0dGluZ3MuZW5hYmxlX3B1c2ggPQotICAgICAgbmdodHRwMl9zZXNzaW9uX2dldF9yZW1vdGVfc2V0dGluZ3MoCi0gICAgICAgIHNlc3Npb24sIE5HSFRUUDJfU0VUVElOR1NfRU5BQkxFX1BVU0gpOwotICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9PSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgaHR0cGMtPnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMpKTsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkVOQUJMRV9QVVNIID09ICVzXG4iLAotICAgICAgICAgICAgICAgICBodHRwYy0+c2V0dGluZ3MuZW5hYmxlX3B1c2g/IlRSVUUiOiJmYWxzZSIpKTsKLSAgICBpZihtYXhfY29ubiAhPSBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcykgewotICAgICAgLyogb25seSBzaWduYWwgY2hhbmdlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkICovCi0gICAgICBpbmZvZihjb25uLT5kYXRhLAotICAgICAgICAgICAgIkNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCAoTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyB1cGRhdGVkKSFcbiIpOwotICAgICAgQ3VybF9tdWx0aV9jb25uY2hhbmdlZChjb25uLT5kYXRhLT5tdWx0aSk7Ci0gICAgfQotICB9Ci0gIGJyZWFrOwogICBkZWZhdWx0OgogICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiR290IGZyYW1lIHR5cGUgJXggZm9yIHN0cmVhbSAldSFcbiIsCiAgICAgICAgICAgICAgICAgIGZyYW1lLT5oZC50eXBlLCBzdHJlYW1faWQpKTsKQEAgLTMzNCwxMiArNTczLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWJfZXJyb3JfY29kZSwgdm9pZCAqdXNlcnApCiB7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKLSAgKHZvaWQpc2Vzc2lvbjsKLSAgKHZvaWQpZnJhbWU7Ci0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLAotICAgICAgICAgICAgICAgIm9uX2ludmFsaWRfZnJhbWVfcmVjdigpIHdhcyBjYWxsZWQsIGVycm9yPSVkOiVzXG4iLAotICAgICAgICAgICAgICAgbGliX2Vycm9yX2NvZGUsIG5naHR0cDJfc3RyZXJyb3IobGliX2Vycm9yX2NvZGUpKSk7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3MgPSBOVUxMOworICAodm9pZCl1c2VycDsKKworICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7CisgIGlmKGRhdGFfcykgeworICAgIERFQlVHRihpbmZvZihkYXRhX3MsCisgICAgICAgICAgICAgICAgICJvbl9pbnZhbGlkX2ZyYW1lX3JlY3YoKSB3YXMgY2FsbGVkLCBlcnJvcj0lZDolc1xuIiwKKyAgICAgICAgICAgICAgICAgbGliX2Vycm9yX2NvZGUsIG5naHR0cDJfc3RyZXJyb3IobGliX2Vycm9yX2NvZGUpKSk7CisgIH0KICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM0NywyOSArNTg5LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHN0cmVhbV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4sIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CiAgIHN0cnVjdCBIVFRQICpzdHJlYW07CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CiAgIHNpemVfdCBucmVhZDsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwogICAodm9pZClzZXNzaW9uOwogICAodm9pZClmbGFnczsKICAgKHZvaWQpZGF0YTsKLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJvbl9kYXRhX2NodW5rX3JlY3YoKSAiCi0gICAgICAgICAgICAgICAibGVuID0gJXUsIHN0cmVhbSAldVxuIiwgbGVuLCBzdHJlYW1faWQpKTsKIAogICBERUJVR0FTU0VSVChzdHJlYW1faWQpOyAvKiBzaG91bGQgbmV2ZXIgYmUgYSB6ZXJvIHN0cmVhbSBJRCBoZXJlICovCiAKICAgLyogZ2V0IHRoZSBzdHJlYW0gZnJvbSB0aGUgaGFzaCBiYXNlZCBvbiBTdHJlYW0gSUQgKi8KLSAgZGF0YV9zID0gQ3VybF9oYXNoX3BpY2soJmNvbm4tPnByb3RvLmh0dHBjLnN0cmVhbXNoLCAmc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RyZWFtX2lkKSk7Ci0gIGlmKCFkYXRhX3MpIHsKKyAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIHN0cmVhbV9pZCk7CisgIGlmKCFkYXRhX3MpCiAgICAgLyogUmVjZWl2aW5nIGEgU3RyZWFtIElEIG5vdCBpbiB0aGUgaGFzaCBzaG91bGQgbm90IGhhcHBlbiwgdGhpcyBpcyBhbgogICAgICAgIGludGVybmFsIGVycm9yIG1vcmUgdGhhbiBhbnl0aGluZyBlbHNlISAqLwotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJSZWNlaXZlZCBmcmFtZSBvbiBTdHJlYW0gSUQ6ICV4IG5vdCBpbiBzdHJlYW0gaGFzaCEiLAotICAgICAgICAgIHN0cmVhbV9pZCk7CiAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7Ci0gIH0KKwogICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7CisgIGlmKCFzdHJlYW0pCisgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CiAKICAgbnJlYWQgPSBNSU4oc3RyZWFtLT5sZW4sIGxlbik7CiAgIG1lbWNweSgmc3RyZWFtLT5tZW1bc3RyZWFtLT5tZW1sZW5dLCBkYXRhLCBucmVhZCk7CkBAIC0zNzgsOCArNjE3LDEyIEBACiAgIHN0cmVhbS0+bWVtbGVuICs9IG5yZWFkOwogCiAgIGRhdGFfcy0+c3RhdGUuZHJhaW4rKzsKLSAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsgLyogVE9ETzogZml4IHNvIHRoYXQgdGhpcyBjYW4gYmUgc2V0IHRvIDAgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZWx5PyAqLworICBjb25uLT5wcm90by5odHRwYy5kcmFpbl90b3RhbCsrOworCisgIC8qIGlmIHdlIHJlY2VpdmUgZGF0YSBmb3IgYW5vdGhlciBoYW5kbGUsIHdha2UgdGhhdCB1cCAqLworICBpZihjb25uLT5kYXRhICE9IGRhdGFfcykKKyAgICBDdXJsX2V4cGlyZShkYXRhX3MsIDEpOyAvKiBUT0RPOiBmaXggc28gdGhhdCB0aGlzIGNhbiBiZSBzZXQgdG8gMCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGVseT8gKi8KIAogICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiJXp1IGRhdGEgcmVjZWl2ZWQgZm9yIHN0cmVhbSAldSAiCiAgICAgICAgICAgICAgICAiKCV6dSBsZWZ0IGluIGJ1ZmZlciAlcCwgdG90YWwgJXp1KVxuIiwKQEAgLTM5Myw5ICs2MzYsMTkgQEAKICAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiTkdIVFRQMl9FUlJfUEFVU0UgLSAlenUgYnl0ZXMgb3V0IG9mIGJ1ZmZlciIKICAgICAgICAgICAgICAgICAgIiwgc3RyZWFtICV1XG4iLAogICAgICAgICAgICAgICAgICBsZW4gLSBucmVhZCwgc3RyZWFtX2lkKSk7Ci0gICAgY29ubi0+cHJvdG8uaHR0cGMucGF1c2Vfc3RyZWFtX2lkID0gc3RyZWFtX2lkOworICAgIGRhdGFfcy0+ZWFzeV9jb25uLT5wcm90by5odHRwYy5wYXVzZV9zdHJlYW1faWQgPSBzdHJlYW1faWQ7CisKICAgICByZXR1cm4gTkdIVFRQMl9FUlJfUEFVU0U7CiAgIH0KKworICAvKiBwYXVzZSBleGVjdXRpb24gb2YgbmdodHRwMiBpZiB3ZSByZWNlaXZlZCBkYXRhIGZvciBhbm90aGVyIGhhbmRsZQorICAgICBpbiBvcmRlciB0byBwcm9jZXNzIHRoZW0gZmlyc3QuICovCisgIGlmKGNvbm4tPmRhdGEgIT0gZGF0YV9zKSB7CisgICAgZGF0YV9zLT5lYXN5X2Nvbm4tPnByb3RvLmh0dHBjLnBhdXNlX3N0cmVhbV9pZCA9IHN0cmVhbV9pZDsKKworICAgIHJldHVybiBOR0hUVFAyX0VSUl9QQVVTRTsKKyAgfQorCiAgIHJldHVybiAwOwogfQogCkBAIC00MDMsNjkgKzY1Niw3NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcnApCiB7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKLSAgKHZvaWQpc2Vzc2lvbjsKLSAgKHZvaWQpZnJhbWU7Ci0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiYmVmb3JlX2ZyYW1lX3NlbmQoKSB3YXMgY2FsbGVkXG4iKSk7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CisgICh2b2lkKXVzZXJwOworCisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKTsKKyAgaWYoZGF0YV9zKSB7CisgICAgREVCVUdGKGluZm9mKGRhdGFfcywgImJlZm9yZV9mcmFtZV9zZW5kKCkgd2FzIGNhbGxlZFxuIikpOworICB9CisKICAgcmV0dXJuIDA7CiB9CiBzdGF0aWMgaW50IG9uX2ZyYW1lX3NlbmQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfZnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7Ci0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIm9uX2ZyYW1lX3NlbmQoKSB3YXMgY2FsbGVkLCBsZW5ndGggPSAlemRcbiIsCi0gICAgICAgICAgICAgICBmcmFtZS0+aGQubGVuZ3RoKSk7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CisgICh2b2lkKXVzZXJwOworCisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKTsKKyAgaWYoZGF0YV9zKSB7CisgICAgREVCVUdGKGluZm9mKGRhdGFfcywgIm9uX2ZyYW1lX3NlbmQoKSB3YXMgY2FsbGVkLCBsZW5ndGggPSAlemRcbiIsCisgICAgICAgICAgICAgICAgIGZyYW1lLT5oZC5sZW5ndGgpKTsKKyAgfQogICByZXR1cm4gMDsKIH0KIHN0YXRpYyBpbnQgb25fZnJhbWVfbm90X3NlbmQobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpYl9lcnJvcl9jb2RlLCB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwotICAodm9pZClzZXNzaW9uOwotICAodm9pZClmcmFtZTsKLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsCi0gICAgICAgICAgICAgICAib25fZnJhbWVfbm90X3NlbmQoKSB3YXMgY2FsbGVkLCBsaWJfZXJyb3JfY29kZSA9ICVkXG4iLAotICAgICAgICAgICAgICAgbGliX2Vycm9yX2NvZGUpKTsKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGFfczsKKyAgKHZvaWQpdXNlcnA7CisKKyAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQpOworICBpZihkYXRhX3MpIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLAorICAgICAgICAgICAgICAgICAib25fZnJhbWVfbm90X3NlbmQoKSB3YXMgY2FsbGVkLCBsaWJfZXJyb3JfY29kZSA9ICVkXG4iLAorICAgICAgICAgICAgICAgICBsaWJfZXJyb3JfY29kZSkpOworICB9CiAgIHJldHVybiAwOwogfQogc3RhdGljIGludCBvbl9zdHJlYW1fY2xvc2UobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQzMl90IHN0cmVhbV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGVycm9yX2NvZGUsIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CiAgIHN0cnVjdCBIVFRQICpzdHJlYW07CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKICAgKHZvaWQpc2Vzc2lvbjsKICAgKHZvaWQpc3RyZWFtX2lkOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIm9uX3N0cmVhbV9jbG9zZSgpLCBlcnJvcl9jb2RlID0gJWQsIHN0cmVhbSAldVxuIiwKLSAgICAgICAgICAgICAgIGVycm9yX2NvZGUsIHN0cmVhbV9pZCkpOwogCiAgIGlmKHN0cmVhbV9pZCkgewogICAgIC8qIGdldCB0aGUgc3RyZWFtIGZyb20gdGhlIGhhc2ggYmFzZWQgb24gU3RyZWFtIElELCBzdHJlYW0gSUQgemVybyBpcyBmb3IKICAgICAgICBjb25uZWN0aW9uLW9yaWVudGVkIHN0dWZmICovCi0gICAgZGF0YV9zID0gQ3VybF9oYXNoX3BpY2soJmNvbm4tPnByb3RvLmh0dHBjLnN0cmVhbXNoLCAmc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJlYW1faWQpKTsKKyAgICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgc3RyZWFtX2lkKTsKICAgICBpZighZGF0YV9zKSB7CiAgICAgICAvKiBXZSBjb3VsZCBnZXQgc3RyZWFtIElEIG5vdCBpbiB0aGUgaGFzaC4gIEZvciBleGFtcGxlLCBpZiB3ZQotICAgICAgICAgZGVjaWRlZCB0byByZWplY3Qgc3RyZWFtIChlLmcuLCBQVVNIX1BST01JU0UpLiAgV2UgY2FsbCBpbmZvZgotICAgICAgICAgYXMgYSBkZWJ1Z2dpbmcgcHVycG9zZSBmb3Igbm93LiAqLwotICAgICAgaW5mb2YoY29ubi0+ZGF0YSwKLSAgICAgICAgICAgICJSZWNlaXZlZCBmcmFtZSBvbiBTdHJlYW0gSUQ6ICV4IG5vdCBpbiBzdHJlYW0gaGFzaCFcbiIsCi0gICAgICAgICAgICBzdHJlYW1faWQpOworICAgICAgICAgZGVjaWRlZCB0byByZWplY3Qgc3RyZWFtIChlLmcuLCBQVVNIX1BST01JU0UpLiAqLwogICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJvbl9zdHJlYW1fY2xvc2UoKSwgJXMgKGVyciAlZCksIHN0cmVhbSAldVxuIiwKKyAgICAgICAgICAgICAgICAgQ3VybF9odHRwMl9zdHJlcnJvcihlcnJvcl9jb2RlKSwgZXJyb3JfY29kZSwgc3RyZWFtX2lkKSk7CiAgICAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOworICAgIGlmKCFzdHJlYW0pCisgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKIAogICAgIHN0cmVhbS0+ZXJyb3JfY29kZSA9IGVycm9yX2NvZGU7CiAgICAgc3RyZWFtLT5jbG9zZWQgPSBUUlVFOworICAgIGRhdGFfcy0+c3RhdGUuZHJhaW4rKzsKKyAgICBjb25uLT5wcm90by5odHRwYy5kcmFpbl90b3RhbCsrOwogCiAgICAgLyogcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBoYXNoIGFzIHRoZSBzdHJlYW0gaXMgbm93IGdvbmUgKi8KLSAgICBDdXJsX2hhc2hfZGVsZXRlKCZjb25uLT5wcm90by5odHRwYy5zdHJlYW1zaCwKLSAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1faWQsIHNpemVvZihzdHJlYW1faWQpKTsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIlJlbW92ZWQgc3RyZWFtICV1IGhhc2ghXG4iLCBzdHJlYW1faWQpKTsKKyAgICBuZ2h0dHAyX3Nlc3Npb25fc2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgc3RyZWFtX2lkLCAwKTsKKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiUmVtb3ZlZCBzdHJlYW0gJXUgaGFzaCFcbiIsIHN0cmVhbV9pZCkpOwogICB9CiAgIHJldHVybiAwOwogfQpAQCAtNDczLDEwICs3MzQsMzYgQEAKIHN0YXRpYyBpbnQgb25fYmVnaW5faGVhZGVycyhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9mcmFtZSAqZnJhbWUsIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7Ci0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIm9uX2JlZ2luX2hlYWRlcnMoKSB3YXMgY2FsbGVkXG4iKSk7CisgIHN0cnVjdCBIVFRQICpzdHJlYW07CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3MgPSBOVUxMOworICAodm9pZCl1c2VycDsKKworICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7CisgIGlmKCFkYXRhX3MpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIERFQlVHRihpbmZvZihkYXRhX3MsICJvbl9iZWdpbl9oZWFkZXJzKCkgd2FzIGNhbGxlZFxuIikpOworCisgIGlmKGZyYW1lLT5oZC50eXBlICE9IE5HSFRUUDJfSEVBREVSUykgeworICAgIHJldHVybiAwOworICB9CisKKyAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOworICBpZighc3RyZWFtIHx8ICFzdHJlYW0tPmJvZHlzdGFydGVkKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvKiBUaGlzIGlzIHRyYWlsZXIgSEVBREVSUyBzdGFydGVkLiAgQWxsb2NhdGUgYnVmZmVyIGZvciB0aGVtLiAqLworICBERUJVR0YoaW5mb2YoZGF0YV9zLCAidHJhaWxlciBmaWVsZCBzdGFydGVkXG4iKSk7CisKKyAgYXNzZXJ0KHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmID09IE5VTEwpOworCisgIHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmID0gQ3VybF9hZGRfYnVmZmVyX2luaXQoKTsKKyAgaWYoIXN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmKSB7CisgICAgcmV0dXJuIE5HSFRUUDJfRVJSX1RFTVBPUkFMX0NBTExCQUNLX0ZBSUxVUkU7CisgIH0KKwogICByZXR1cm4gMDsKIH0KIApAQCAtNTE0LDM4ICs4MDEsNzMgQEAKICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwogICBzdHJ1Y3QgSFRUUCAqc3RyZWFtOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOwogICBpbnQzMl90IHN0cmVhbV9pZCA9IGZyYW1lLT5oZC5zdHJlYW1faWQ7Ci0KLSAgKHZvaWQpc2Vzc2lvbjsKLSAgKHZvaWQpZnJhbWU7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKICAgKHZvaWQpZmxhZ3M7CiAKLSAgLyogSWdub3JlIFBVU0hfUFJPTUlTRSBmb3Igbm93ICovCi0gIGlmKGZyYW1lLT5oZC50eXBlICE9IE5HSFRUUDJfSEVBREVSUykgewotICAgIHJldHVybiAwOwotICB9Ci0KICAgREVCVUdBU1NFUlQoc3RyZWFtX2lkKTsgLyogc2hvdWxkIG5ldmVyIGJlIGEgemVybyBzdHJlYW0gSUQgaGVyZSAqLwogCiAgIC8qIGdldCB0aGUgc3RyZWFtIGZyb20gdGhlIGhhc2ggYmFzZWQgb24gU3RyZWFtIElEICovCi0gIGRhdGFfcyA9IEN1cmxfaGFzaF9waWNrKCZjb25uLT5wcm90by5odHRwYy5zdHJlYW1zaCwgJnN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cmVhbV9pZCkpOwotICBpZighZGF0YV9zKSB7CisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBzdHJlYW1faWQpOworICBpZighZGF0YV9zKQogICAgIC8qIFJlY2VpdmluZyBhIFN0cmVhbSBJRCBub3QgaW4gdGhlIGhhc2ggc2hvdWxkIG5vdCBoYXBwZW4sIHRoaXMgaXMgYW4KICAgICAgICBpbnRlcm5hbCBlcnJvciBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZSEgKi8KLSAgICBmYWlsZihjb25uLT5kYXRhLCAiUmVjZWl2ZWQgZnJhbWUgb24gU3RyZWFtIElEOiAleCBub3QgaW4gc3RyZWFtIGhhc2ghIiwKLSAgICAgICAgICBzdHJlYW1faWQpOworICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworCisgIHN0cmVhbSA9IGRhdGFfcy0+cmVxLnByb3RvcDsKKyAgaWYoIXN0cmVhbSkgeworICAgIGZhaWxmKGRhdGFfcywgIkludGVybmFsIE5VTEwgc3RyZWFtISA1XG4iKTsKICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKICAgfQotICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7CiAKLSAgaWYoc3RyZWFtLT5ib2R5c3RhcnRlZCkKLSAgICAvKiBJZ25vcmUgdHJhaWxlciBvciBIRUFERVJTIG5vdCBtYXBwZWQgdG8gSFRUUCBzZW1hbnRpY3MuICBUaGUKLSAgICAgICBjb25zZXF1ZW5jZSBpcyBoYW5kbGVkIGluIG9uX2ZyYW1lX3JlY3YoKS4gKi8KKyAgLyogU3RvcmUgcmVjZWl2ZWQgUFVTSF9QUk9NSVNFIGhlYWRlcnMgdG8gYmUgdXNlZCB3aGVuIHRoZSBzdWJzZXF1ZW50CisgICAgIFBVU0hfUFJPTUlTRSBjYWxsYmFjayBjb21lcyAqLworICBpZihmcmFtZS0+aGQudHlwZSA9PSBOR0hUVFAyX1BVU0hfUFJPTUlTRSkgeworICAgIGNoYXIgKmg7CisKKyAgICBpZighc3RyZWFtLT5wdXNoX2hlYWRlcnMpIHsKKyAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzX2FsbG9jID0gMTA7CisgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVycyA9IG1hbGxvYyhzdHJlYW0tPnB1c2hfaGVhZGVyc19hbGxvYyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhciAqKSk7CisgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVyc191c2VkID0gMDsKKyAgICB9CisgICAgZWxzZSBpZihzdHJlYW0tPnB1c2hfaGVhZGVyc191c2VkID09CisgICAgICAgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVyc19hbGxvYykgeworICAgICAgY2hhciAqKmhlYWRwOworICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnNfYWxsb2MgKj0gMjsKKyAgICAgIGhlYWRwID0gcmVhbGxvYyhzdHJlYW0tPnB1c2hfaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVyc19hbGxvYyAqIHNpemVvZihjaGFyICopKTsKKyAgICAgIGlmKCFoZWFkcCkgeworICAgICAgICBmcmVlKHN0cmVhbS0+cHVzaF9oZWFkZXJzKTsKKyAgICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnMgPSBOVUxMOworICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfVEVNUE9SQUxfQ0FMTEJBQ0tfRkFJTFVSRTsKKyAgICAgIH0KKyAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzID0gaGVhZHA7CisgICAgfQorICAgIGggPSBhcHJpbnRmKCIlczolcyIsIG5hbWUsIHZhbHVlKTsKKyAgICBpZihoKQorICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnNbc3RyZWFtLT5wdXNoX2hlYWRlcnNfdXNlZCsrXSA9IGg7CiAgICAgcmV0dXJuIDA7CisgIH0KKworICBpZihzdHJlYW0tPmJvZHlzdGFydGVkKSB7CisgICAgLyogVGhpcyBpcyB0cmFpbGVyIGZpZWxkcy4gKi8KKyAgICAvKiAzIGlzIGZvciAiOiIgYW5kICJcclxuIi4gKi8KKyAgICB1aW50MzJfdCBuID0gKHVpbnQzMl90KShuYW1lbGVuICsgdmFsdWVsZW4gKyAzKTsKKworICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJoMiB0cmFpbGVyOiAlLipzOiAlLipzXG4iLCBuYW1lbGVuLCBuYW1lLCB2YWx1ZWxlbiwKKyAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKworICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZiwgJm4sIHNpemVvZihuKSk7CisgICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLCBuYW1lLCBuYW1lbGVuKTsKKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYsICI6ICIsIDIpOworICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZiwgdmFsdWUsIHZhbHVlbGVuKTsKKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYsICJcclxuXDAiLCAzKTsKKworICAgIHJldHVybiAwOworICB9CiAKICAgaWYobmFtZWxlbiA9PSBzaXplb2YoIjpzdGF0dXMiKSAtIDEgJiYKICAgICAgbWVtY21wKCI6c3RhdHVzIiwgbmFtZSwgbmFtZWxlbikgPT0gMCkgewpAQCAtNTU1LDE0ICs4NzcsMTYgQEAKICAgICBzdHJlYW0tPnN0YXR1c19jb2RlID0gZGVjb2RlX3N0YXR1c19jb2RlKHZhbHVlLCB2YWx1ZWxlbik7CiAgICAgREVCVUdBU1NFUlQoc3RyZWFtLT5zdGF0dXNfY29kZSAhPSAtMSk7CiAKLSAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIkhUVFAvMi4wICIsIDkpOworICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCAiSFRUUC8yICIsIDcpOwogICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCB2YWx1ZSwgdmFsdWVsZW4pOwotICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCAiXHJcbiIsIDIpOwotICAgIGRhdGFfcy0+c3RhdGUuZHJhaW4rKzsKLSAgICBDdXJsX2V4cGlyZShkYXRhX3MsIDEpOworICAgIC8qIHRoZSBzcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHN0YXR1cyBjb2RlIGlzIG1hbmRhdG9yeSAqLworICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCAiIFxyXG4iLCAzKTsKKyAgICAvKiBpZiB3ZSByZWNlaXZlIGRhdGEgZm9yIGFub3RoZXIgaGFuZGxlLCB3YWtlIHRoYXQgdXAgKi8KKyAgICBpZihjb25uLT5kYXRhICE9IGRhdGFfcykKKyAgICAgIEN1cmxfZXhwaXJlKGRhdGFfcywgMSk7CiAKLSAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiaDIgc3RhdHVzOiBIVFRQLzIgJTAzZFxuIiwKLSAgICAgICAgICAgICAgICAgc3RyZWFtLT5zdGF0dXNfY29kZSkpOworICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJoMiBzdGF0dXM6IEhUVFAvMiAlMDNkIChlYXN5ICVwKVxuIiwKKyAgICAgICAgICAgICAgICAgc3RyZWFtLT5zdGF0dXNfY29kZSwgZGF0YV9zKSk7CiAgICAgcmV0dXJuIDA7CiAgIH0KIApAQCAtNTcwLDExICs4OTQsMTIgQEAKICAgICAgcmVjZWl2ZWQsIGFuZCB0aGlzIGlzIG5vdCBwc2V1ZG8taGVhZGVyIGZpZWxkIC4gKi8KICAgLyogY29udmVydCB0byBhIEhUVFAxLXN0eWxlIGhlYWRlciAqLwogICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgbmFtZSwgbmFtZWxlbik7Ci0gIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCAiOiIsIDEpOworICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIjogIiwgMik7CiAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPmhlYWRlcl9yZWN2YnVmLCB2YWx1ZSwgdmFsdWVsZW4pOwogICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIlxyXG4iLCAyKTsKLSAgZGF0YV9zLT5zdGF0ZS5kcmFpbisrOwotICBDdXJsX2V4cGlyZShkYXRhX3MsIDEpOworICAvKiBpZiB3ZSByZWNlaXZlIGRhdGEgZm9yIGFub3RoZXIgaGFuZGxlLCB3YWtlIHRoYXQgdXAgKi8KKyAgaWYoY29ubi0+ZGF0YSAhPSBkYXRhX3MpCisgICAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsKIAogICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiaDIgaGVhZGVyOiAlLipzOiAlLipzXG4iLCBuYW1lbGVuLCBuYW1lLCB2YWx1ZWxlbiwKICAgICAgICAgICAgICAgIHZhbHVlKSk7CkBAIC01ODksMzEgKzkxNCwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX2RhdGFfc291cmNlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7Ci0gIHN0cnVjdCBodHRwX2Nvbm4gKmMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CiAgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBOVUxMOwogICBzaXplX3QgbnJlYWQ7Ci0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKXN0cmVhbV9pZDsKICAgKHZvaWQpc291cmNlOworICAodm9pZCl1c2VycDsKIAogICBpZihzdHJlYW1faWQpIHsKICAgICAvKiBnZXQgdGhlIHN0cmVhbSBmcm9tIHRoZSBoYXNoIGJhc2VkIG9uIFN0cmVhbSBJRCwgc3RyZWFtIElEIHplcm8gaXMgZm9yCiAgICAgICAgY29ubmVjdGlvbi1vcmllbnRlZCBzdHVmZiAqLwotICAgIGRhdGFfcyA9IEN1cmxfaGFzaF9waWNrKCZjLT5zdHJlYW1zaCwgJnN0cmVhbV9pZCwgc2l6ZW9mKHN0cmVhbV9pZCkpOwotICAgIGlmKCFkYXRhX3MpIHsKKyAgICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgc3RyZWFtX2lkKTsKKyAgICBpZighZGF0YV9zKQogICAgICAgLyogUmVjZWl2aW5nIGEgU3RyZWFtIElEIG5vdCBpbiB0aGUgaGFzaCBzaG91bGQgbm90IGhhcHBlbiwgdGhpcyBpcyBhbgogICAgICAgICAgaW50ZXJuYWwgZXJyb3IgbW9yZSB0aGFuIGFueXRoaW5nIGVsc2UhICovCi0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiQXNrZWQgZm9yIGRhdGEgdG8gc3RyZWFtICV1IG5vdCBpbiBoYXNoISIsIHN0cmVhbV9pZCk7CiAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKLSAgICB9CisKICAgICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7CisgICAgaWYoIXN0cmVhbSkKKyAgICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOwogICB9Ci0gIGVsc2UgewotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJuZ2h0dHAyIGNvbmZ1c2lvbiIpOworICBlbHNlCiAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0lOVkFMSURfQVJHVU1FTlQ7Ci0gIH0KIAogICBucmVhZCA9IE1JTihzdHJlYW0tPnVwbG9hZF9sZW4sIGxlbmd0aCk7CiAgIGlmKG5yZWFkID4gMCkgewpAQCAtNjQ1LDEwICs5NjYsMTggQEAKIAogI2RlZmluZSBIMl9CVUZTSVpFIDMyNzY4CiAKLXN0YXRpYyB2b2lkIGZyZWVzdHJlYW1lbnRyeSh2b2lkICpmcmVldGhpcykKKyNpZmRlZiBOR0hUVFAyX0hBU19FUlJPUl9DQUxMQkFDSworc3RhdGljIGludCBlcnJvcl9jYWxsYmFjayhuZ2h0dHAyX3Nlc3Npb24gKnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcnApCiB7Ci0gICh2b2lkKWZyZWV0aGlzOworICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CisgICh2b2lkKXNlc3Npb247CisgIGluZm9mKGNvbm4tPmRhdGEsICJodHRwMiBlcnJvcjogJS4qc1xuIiwgbGVuLCBtc2cpOworICByZXR1cm4gMDsKIH0KKyNlbmRpZgogCiAvKgogICogSW5pdGlhbGl6ZSBuZ2h0dHAyIGZvciBhIEN1cmwgY29ubmVjdGlvbgpAQCAtNjk5LDYgKzEwMjgsOCBAQAogICAgIC8qIG5naHR0cDJfb25faGVhZGVyX2NhbGxiYWNrICovCiAgICAgbmdodHRwMl9zZXNzaW9uX2NhbGxiYWNrc19zZXRfb25faGVhZGVyX2NhbGxiYWNrKGNhbGxiYWNrcywgb25faGVhZGVyKTsKIAorICAgIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X2Vycm9yX2NhbGxiYWNrKGNhbGxiYWNrcywgZXJyb3JfY2FsbGJhY2spOworCiAgICAgLyogVGhlIG5naHR0cDIgc2Vzc2lvbiBpcyBub3QgeWV0IHNldHVwLCBkbyBpdCAqLwogICAgIHJjID0gbmdodHRwMl9zZXNzaW9uX2NsaWVudF9uZXcoJmNvbm4tPnByb3RvLmh0dHBjLmgyLCBjYWxsYmFja3MsIGNvbm4pOwogCkBAIC03MDgsMjcgKzEwMzksMTEgQEAKICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJDb3VsZG4ndCBpbml0aWFsaXplIG5naHR0cDIhIik7CiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsgLyogbW9zdCBsaWtlbHkgYXQgbGVhc3QgKi8KICAgICB9Ci0KLSAgICByYyA9IEN1cmxfaGFzaF9pbml0KCZjb25uLT5wcm90by5odHRwYy5zdHJlYW1zaCwgNywgQ3VybF9oYXNoX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEN1cmxfc3RyX2tleV9jb21wYXJlLCBmcmVlc3RyZWFtZW50cnkpOwotICAgIGlmKHJjKSB7Ci0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGRuJ3QgaW5pdCBzdHJlYW0gaGFzaCEiKTsKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOyAvKiBtb3N0IGxpa2VseSBhdCBsZWFzdCAqLwotICAgIH0KICAgfQogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKIC8qCi0gKiBTZW5kIGEgcmVxdWVzdCB1c2luZyBodHRwMgotICovCi1DVVJMY29kZSBDdXJsX2h0dHAyX3NlbmRfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi17Ci0gICh2b2lkKWNvbm47Ci0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotLyoKICAqIEFwcGVuZCBoZWFkZXJzIHRvIGFzayBmb3IgYSBIVFRQMS4xIHRvIEhUVFAyIHVwZ3JhZGUuCiAgKi8KIENVUkxjb2RlIEN1cmxfaHR0cDJfcmVxdWVzdF91cGdyYWRlKEN1cmxfc2VuZF9idWZmZXIgKnJlcSwKQEAgLTc3MywyNiArMTA4OCwxODcgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHNzaXplX3QgaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShzdHJ1Y3QgaHR0cF9jb25uICpodHRwYywKKy8qCisgKiBSZXR1cm5zIG5vbnplcm8gaWYgY3VycmVudCBIVFRQLzIgc2Vzc2lvbiBzaG91bGQgYmUgY2xvc2VkLgorICovCitzdGF0aWMgaW50IHNob3VsZF9jbG9zZV9zZXNzaW9uKHN0cnVjdCBodHRwX2Nvbm4gKmh0dHBjKSB7CisgIHJldHVybiBodHRwYy0+ZHJhaW5fdG90YWwgPT0gMCAmJiAhbmdodHRwMl9zZXNzaW9uX3dhbnRfcmVhZChodHRwYy0+aDIpICYmCisgICAgICAgICAhbmdodHRwMl9zZXNzaW9uX3dhbnRfd3JpdGUoaHR0cGMtPmgyKTsKK30KKworc3RhdGljIGludCBoMl9zZXNzaW9uX3NlbmQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3Nlc3Npb24gKmgyKTsKKworLyoKKyAqIGgyX3Byb2Nlc3NfcGVuZGluZ19pbnB1dCgpIHByb2Nlc3NlcyBwZW5kaW5nIGlucHV0IGxlZnQgaW4KKyAqIGh0dHBjLT5pbmJ1Zi4gIFRoZW4sIGNhbGwgaDJfc2Vzc2lvbl9zZW5kKCkgdG8gc2VuZCBwZW5kaW5nIGRhdGEuCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBpdCBzdWNjZWVkcywgb3IgLTEgYW5kIGVycm9yIGNvZGUgd2lsbAorICogYmUgYXNzaWduZWQgdG8gKmVyci4KKyAqLworc3RhdGljIGludCBoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICplcnIpIHsKKyAgc3NpemVfdCBucmVhZDsKKyAgY2hhciAqaW5idWY7CisgIHNzaXplX3QgcnY7CisKKyAgbnJlYWQgPSBodHRwYy0+aW5idWZsZW4gLSBodHRwYy0+bnJlYWRfaW5idWY7CisgIGluYnVmID0gaHR0cGMtPmluYnVmICsgaHR0cGMtPm5yZWFkX2luYnVmOworCisgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2KGh0dHBjLT5oMiwgKGNvbnN0IHVpbnQ4X3QgKilpbmJ1ZiwgbnJlYWQpOworICBpZihydiA8IDApIHsKKyAgICBmYWlsZihkYXRhLAorICAgICAgICAgICJoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQ6IG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdigpIHJldHVybmVkICIKKyAgICAgICAgICAiJWQ6JXNcbiIsIHJ2LCBuZ2h0dHAyX3N0cmVycm9yKChpbnQpcnYpKTsKKyAgICAqZXJyID0gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBpZihucmVhZCA9PSBydikgeworICAgIERFQlVHRihpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAiaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0OiBBbGwgZGF0YSBpbiBjb25uZWN0aW9uIGJ1ZmZlciAiCisgICAgICAgICAgICAgICAgICJwcm9jZXNzZWRcbiIpKTsKKyAgICBodHRwYy0+aW5idWZsZW4gPSAwOworICAgIGh0dHBjLT5ucmVhZF9pbmJ1ZiA9IDA7CisgIH0KKyAgZWxzZSB7CisgICAgaHR0cGMtPm5yZWFkX2luYnVmICs9IHJ2OworICAgIERFQlVHRihpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAiaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0OiAlenUgYnl0ZXMgbGVmdCBpbiBjb25uZWN0aW9uICIKKyAgICAgICAgICAgICAgICAgImJ1ZmZlclxuIiwKKyAgICAgICAgICAgICAgICAgaHR0cGMtPmluYnVmbGVuIC0gaHR0cGMtPm5yZWFkX2luYnVmKSk7CisgIH0KKworICBydiA9IGgyX3Nlc3Npb25fc2VuZChkYXRhLCBodHRwYy0+aDIpOworICBpZihydiAhPSAwKSB7CisgICAgKmVyciA9IENVUkxFX1NFTkRfRVJST1I7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgaWYoc2hvdWxkX2Nsb3NlX3Nlc3Npb24oaHR0cGMpKSB7CisgICAgREVCVUdGKGluZm9mKGRhdGEsCisgICAgICAgICAgICAgICAgICJoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQ6IG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzZXNzaW9uXG4iKSk7CisgICAgKmVyciA9IENVUkxFX0hUVFAyOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIHJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBodHRwMl9oYW5kbGVfc3RyZWFtX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBIVFRQICpzdHJlYW0sIENVUkxjb2RlICplcnIpIHsKKyAgY2hhciAqdHJhaWxlcl9wb3MsICp0cmFpbGVyX2VuZDsKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYyA9ICZjb25uLT5wcm90by5odHRwYzsKKwogICBpZihodHRwYy0+cGF1c2Vfc3RyZWFtX2lkID09IHN0cmVhbS0+c3RyZWFtX2lkKSB7CiAgICAgaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9IDA7CiAgIH0KKworICBERUJVR0FTU0VSVChodHRwYy0+ZHJhaW5fdG90YWwgPj0gZGF0YS0+c3RhdGUuZHJhaW4pOworICBodHRwYy0+ZHJhaW5fdG90YWwgLT0gZGF0YS0+c3RhdGUuZHJhaW47CisgIGRhdGEtPnN0YXRlLmRyYWluID0gMDsKKworICBpZihodHRwYy0+cGF1c2Vfc3RyZWFtX2lkID09IDApIHsKKyAgICBpZihoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQoZGF0YSwgaHR0cGMsIGVycikgIT0gMCkgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIERFQlVHQVNTRVJUKGRhdGEtPnN0YXRlLmRyYWluID09IDApOworCiAgIC8qIFJlc2V0IHRvIEZBTFNFIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcCBpbiByZWFkd3JpdGVfZGF0YQogICAgZnVuY3Rpb24uICovCiAgIHN0cmVhbS0+Y2xvc2VkID0gRkFMU0U7CiAgIGlmKHN0cmVhbS0+ZXJyb3JfY29kZSAhPSBOR0hUVFAyX05PX0VSUk9SKSB7Ci0gICAgZmFpbGYoZGF0YSwgIkhUVFAvMiBzdHJlYW0gJXUgd2FzIG5vdCBjbG9zZWQgY2xlYW5seTogZXJyb3JfY29kZSA9ICVkIiwKLSAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwgc3RyZWFtLT5lcnJvcl9jb2RlKTsKLSAgICAqZXJyID0gQ1VSTEVfSFRUUDI7CisgICAgZmFpbGYoZGF0YSwgIkhUVFAvMiBzdHJlYW0gJXUgd2FzIG5vdCBjbG9zZWQgY2xlYW5seTogJXMgKGVyciAlZCkiLAorICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLCBDdXJsX2h0dHAyX3N0cmVycm9yKHN0cmVhbS0+ZXJyb3JfY29kZSksCisgICAgICAgICAgc3RyZWFtLT5lcnJvcl9jb2RlKTsKKyAgICAqZXJyID0gQ1VSTEVfSFRUUDJfU1RSRUFNOwogICAgIHJldHVybiAtMTsKICAgfQorCisgIGlmKCFzdHJlYW0tPmJvZHlzdGFydGVkKSB7CisgICAgZmFpbGYoZGF0YSwgIkhUVFAvMiBzdHJlYW0gJXUgd2FzIGNsb3NlZCBjbGVhbmx5LCBidXQgYmVmb3JlIGdldHRpbmcgIgorICAgICAgICAgICIgYWxsIHJlc3BvbnNlIGhlYWRlciBmaWVsZHMsIHRlYXRlZCBhcyBlcnJvciIsCisgICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQpOworICAgICplcnIgPSBDVVJMRV9IVFRQMl9TVFJFQU07CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgaWYoc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYgJiYgc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYtPmJ1ZmZlcikgeworICAgIHRyYWlsZXJfcG9zID0gc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYtPmJ1ZmZlcjsKKyAgICB0cmFpbGVyX2VuZCA9IHRyYWlsZXJfcG9zICsgc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYtPnNpemVfdXNlZDsKKworICAgIGZvcig7IHRyYWlsZXJfcG9zIDwgdHJhaWxlcl9lbmQ7KSB7CisgICAgICB1aW50MzJfdCBuOworICAgICAgbWVtY3B5KCZuLCB0cmFpbGVyX3Bvcywgc2l6ZW9mKG4pKTsKKyAgICAgIHRyYWlsZXJfcG9zICs9IHNpemVvZihuKTsKKworICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfSEVBREVSLCB0cmFpbGVyX3Bvcywgbik7CisgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgKmVyciA9IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorCisgICAgICB0cmFpbGVyX3BvcyArPSBuICsgMTsKKyAgICB9CisgIH0KKwogICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3YgcmV0dXJucyAwLCBodHRwMl9oYW5kbGVfc3RyZWFtX2Nsb3NlXG4iKSk7CiAgIHJldHVybiAwOwogfQogCiAvKgorICogaDJfcHJpX3NwZWMoKSBmaWxscyBpbiB0aGUgcHJpX3NwZWMgc3RydWN0LCB1c2VkIGJ5IG5naHR0cDIgdG8gc2VuZCB3ZWlnaHQKKyAqIGFuZCBkZXBlbmRlbmN5IHRvIHRoZSBwZWVyLiBJdCBhbHNvIHN0b3JlcyB0aGUgdXBkYXRlZCB2YWx1ZXMgaW4gdGhlIHN0YXRlCisgKiBzdHJ1Y3QuCisgKi8KKworc3RhdGljIHZvaWQgaDJfcHJpX3NwZWMoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgKnByaV9zcGVjKQoreworICBzdHJ1Y3QgSFRUUCAqZGVwc3RyZWFtID0gKGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19vbj8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyZWFtX2RlcGVuZHNfb24tPnJlcS5wcm90b3A6TlVMTCk7CisgIGludDMyX3QgZGVwc3RyZWFtX2lkID0gZGVwc3RyZWFtPyBkZXBzdHJlYW0tPnN0cmVhbV9pZDowOworICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWNfaW5pdChwcmlfc3BlYywgZGVwc3RyZWFtX2lkLCBkYXRhLT5zZXQuc3RyZWFtX3dlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX2UpOworICBkYXRhLT5zdGF0ZS5zdHJlYW1fd2VpZ2h0ID0gZGF0YS0+c2V0LnN0cmVhbV93ZWlnaHQ7CisgIGRhdGEtPnN0YXRlLnN0cmVhbV9kZXBlbmRzX2UgPSBkYXRhLT5zZXQuc3RyZWFtX2RlcGVuZHNfZTsKKyAgZGF0YS0+c3RhdGUuc3RyZWFtX2RlcGVuZHNfb24gPSBkYXRhLT5zZXQuc3RyZWFtX2RlcGVuZHNfb247Cit9CisKKy8qCisgKiBoMl9zZXNzaW9uX3NlbmQoKSBjaGVja3MgaWYgdGhlcmUncyBiZWVuIGFuIHVwZGF0ZSBpbiB0aGUgcHJpb3JpdHkgLworICogZGVwZW5kZW5jeSBzZXR0aW5ncyBhbmQgaWYgc28gaXQgc3VibWl0cyBhIFBSSU9SSVRZIGZyYW1lIHdpdGggdGhlIHVwZGF0ZWQKKyAqIGluZm8uCisgKi8KK3N0YXRpYyBpbnQgaDJfc2Vzc2lvbl9zZW5kKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zZXNzaW9uICpoMikKK3sKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgIGlmKChkYXRhLT5zZXQuc3RyZWFtX3dlaWdodCAhPSBkYXRhLT5zdGF0ZS5zdHJlYW1fd2VpZ2h0KSB8fAorICAgICAoZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX2UgIT0gZGF0YS0+c3RhdGUuc3RyZWFtX2RlcGVuZHNfZSkgfHwKKyAgICAgKGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19vbiAhPSBkYXRhLT5zdGF0ZS5zdHJlYW1fZGVwZW5kc19vbikgKSB7CisgICAgLyogc2VuZCBuZXcgd2VpZ2h0IGFuZC9vciBkZXBlbmRlbmN5ICovCisgICAgbmdodHRwMl9wcmlvcml0eV9zcGVjIHByaV9zcGVjOworICAgIGludCBydjsKKworICAgIGgyX3ByaV9zcGVjKGRhdGEsICZwcmlfc3BlYyk7CisKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlF1ZXVpbmcgUFJJT1JJVFkgb24gc3RyZWFtICV1IChlYXN5ICVwKVxuIiwKKyAgICAgICAgICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsIGRhdGEpKTsKKyAgICBydiA9IG5naHR0cDJfc3VibWl0X3ByaW9yaXR5KGgyLCBOR0hUVFAyX0ZMQUdfTk9ORSwgc3RyZWFtLT5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpX3NwZWMpOworICAgIGlmKHJ2KQorICAgICAgcmV0dXJuIHJ2OworICB9CisKKyAgcmV0dXJuIG5naHR0cDJfc2Vzc2lvbl9zZW5kKGgyKTsKK30KKworLyoKICAqIElmIHRoZSByZWFkIHdvdWxkIGJsb2NrIChFV09VTERCTE9DSykgd2UgcmV0dXJuIC0xLiBPdGhlcndpc2Ugd2UgcmV0dXJuCiAgKiBhIHJlZ3VsYXIgQ1VSTGNvZGUgdmFsdWUuCiAgKi8KQEAgLTgwOCwxMiArMTI4NCwxMSBAQAogCiAgICh2b2lkKXNvY2tpbmRleDsgLyogd2UgYWx3YXlzIGRvIEhUVFAyIG9uIHNvY2tpbmRleCAwICovCiAKLSAgLyogSWYgc3RyZWFtIGlzIGNsb3NlZCwgcmV0dXJuIDAgdG8gc2lnbmFsIHRoZSBodHRwIHJvdXRpbmUgdG8gY2xvc2UKLSAgICAgdGhlIGNvbm5lY3Rpb24uICBXZSBuZWVkIHRvIGhhbmRsZSBzdHJlYW0gY2xvc3VyZSBoZXJlLAotICAgICBvdGhlcndpc2UsIHdlIG1heSBiZSBnb2luZyB0byByZWFkIGZyb20gdW5kZXJseWluZyBjb25uZWN0aW9uLAotICAgICBhbmQgZ2V0cyBFQUdBSU4sIGFuZCB3ZSB3aWxsIGdldCBzdHVjayB0aGVyZS4gKi8KLSAgaWYoc3RyZWFtLT5tZW1sZW4gPT0gMCAmJiBzdHJlYW0tPmNsb3NlZCkgewotICAgIHJldHVybiBodHRwMl9oYW5kbGVfc3RyZWFtX2Nsb3NlKGh0dHBjLCBkYXRhLCBzdHJlYW0sIGVycik7CisgIGlmKHNob3VsZF9jbG9zZV9zZXNzaW9uKGh0dHBjKSkgeworICAgIERFQlVHRihpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAiaHR0cDJfcmVjdjogbm90aGluZyB0byBkbyBpbiB0aGlzIHNlc3Npb25cbiIpKTsKKyAgICAqZXJyID0gQ1VSTEVfSFRUUDI7CisgICAgcmV0dXJuIC0xOwogICB9CiAKICAgLyogTnVsbGlmeSBoZXJlIGJlY2F1c2Ugd2UgY2FsbCBuZ2h0dHAyX3Nlc3Npb25fc2VuZCgpIGFuZCB0aGV5CkBAIC04MzYsMTMgKzEzMTEsMTMgQEAKICAgICAgICAgICAgbmNvcHkpOwogICAgIHN0cmVhbS0+bnJlYWRfaGVhZGVyX3JlY3ZidWYgKz0gbmNvcHk7CiAKLSAgICBpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogR290ICVkIGJ5dGVzIGZyb20gaGVhZGVyX3JlY3ZidWZcbiIsCi0gICAgICAgICAgKGludCluY29weSk7CisgICAgREVCVUdGKGluZm9mKGRhdGEsICJodHRwMl9yZWN2OiBHb3QgJWQgYnl0ZXMgZnJvbSBoZWFkZXJfcmVjdmJ1ZlxuIiwKKyAgICAgICAgICAgICAgICAgKGludCluY29weSkpOwogICAgIHJldHVybiBuY29weTsKICAgfQogCi0gIGluZm9mKGRhdGEsICJodHRwMl9yZWN2OiAlZCBieXRlcyBidWZmZXIgYXQgJXAgKHN0cmVhbSAldSlcbiIsCi0gICAgICAgIGxlbiwgbWVtLCBzdHJlYW0tPnN0cmVhbV9pZCk7CisgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogZWFzeSAlcCAoc3RyZWFtICV1KVxuIiwKKyAgICAgICAgICAgICAgIGRhdGEsIHN0cmVhbS0+c3RyZWFtX2lkKSk7CiAKICAgaWYoKGRhdGEtPnN0YXRlLmRyYWluKSAmJiBzdHJlYW0tPm1lbWxlbikgewogICAgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogRFJBSU4gJXp1IGJ5dGVzIHN0cmVhbSAldSEhICglcCA9PiAlcClcbiIsCkBAIC04NTUsOCArMTMzMCwxOCBAQAogICAgICAgc3RyZWFtLT5sZW4gPSBsZW4gLSBzdHJlYW0tPm1lbWxlbjsKICAgICAgIHN0cmVhbS0+bWVtID0gbWVtOwogICAgIH0KKyAgICBpZihodHRwYy0+cGF1c2Vfc3RyZWFtX2lkID09IHN0cmVhbS0+c3RyZWFtX2lkICYmICFzdHJlYW0tPnBhdXNlZGF0YSkgeworICAgICAgLyogV2UgaGF2ZSBwYXVzZWQgbmdodHRwMiwgYnV0IHdlIGhhdmUgbm8gcGF1c2UgZGF0YSAoc2VlCisgICAgICAgICBvbl9kYXRhX2NodW5rX3JlY3YpLiAqLworICAgICAgaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9IDA7CisgICAgICBpZihoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQoZGF0YSwgaHR0cGMsICZyZXN1bHQpICE9IDApIHsKKyAgICAgICAgKmVyciA9IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgIH0KICAgfQogICBlbHNlIGlmKHN0cmVhbS0+cGF1c2VkYXRhKSB7CisgICAgREVCVUdBU1NFUlQoaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9PSBzdHJlYW0tPnN0cmVhbV9pZCk7CiAgICAgbnJlYWQgPSBNSU4obGVuLCBzdHJlYW0tPnBhdXNlbGVuKTsKICAgICBtZW1jcHkobWVtLCBzdHJlYW0tPnBhdXNlZGF0YSwgbnJlYWQpOwogCkBAIC04NzEsOSArMTM1NiwyMSBAQAogCiAgICAgICBzdHJlYW0tPnBhdXNlZGF0YSA9IE5VTEw7CiAgICAgICBzdHJlYW0tPnBhdXNlbGVuID0gMDsKKworICAgICAgLyogV2hlbiBOR0hUVFAyX0VSUl9QQVVTRSBpcyByZXR1cm5lZCBmcm9tCisgICAgICAgICBkYXRhX3NvdXJjZV9yZWFkX2NhbGxiYWNrLCB3ZSBtaWdodCBub3QgcHJvY2VzcyBEQVRBIGZyYW1lCisgICAgICAgICBmdWxseS4gIENhbGxpbmcgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2KCkgYWdhaW4gd2lsbAorICAgICAgICAgY29udGludWUgdG8gcHJvY2VzcyBEQVRBIGZyYW1lLCBidXQgaWYgdGhlcmUgaXMgbm8gaW5jb21pbmcKKyAgICAgICAgIGZyYW1lcywgdGhlbiB3ZSBoYXZlIHRvIGNhbGwgaXQgYWdhaW4gd2l0aCAwLWxlbmd0aCBkYXRhLgorICAgICAgICAgV2l0aG91dCB0aGlzLCBvbl9zdHJlYW1fY2xvc2UgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkLAorICAgICAgICAgYW5kIHN0cmVhbSBjb3VsZCBiZSBoYW5nZWQuICovCisgICAgICBpZihoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQoZGF0YSwgaHR0cGMsICZyZXN1bHQpICE9IDApIHsKKyAgICAgICAgKmVyciA9IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQogICAgIH0KLSAgICBpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogcmV0dXJucyB1bnBhdXNlZCAlemQgYnl0ZXMgb24gc3RyZWFtICV1XG4iLAotICAgICAgICAgIG5yZWFkLCBzdHJlYW0tPnN0cmVhbV9pZCk7CisgICAgREVCVUdGKGluZm9mKGRhdGEsICJodHRwMl9yZWN2OiByZXR1cm5zIHVucGF1c2VkICV6ZCBieXRlcyBvbiBzdHJlYW0gJXVcbiIsCisgICAgICAgICAgICAgICAgIG5yZWFkLCBzdHJlYW0tPnN0cmVhbV9pZCkpOwogICAgIHJldHVybiBucmVhZDsKICAgfQogICBlbHNlIGlmKGh0dHBjLT5wYXVzZV9zdHJlYW1faWQpIHsKQEAgLTkwMCwxNyArMTM5NywxNyBAQAogICAgICAgbnJlYWQgPSAoKEN1cmxfcmVjdiAqKWh0dHBjLT5yZWN2X3VuZGVybHlpbmcpKAogICAgICAgICAgIGNvbm4sIEZJUlNUU09DS0VULCBodHRwYy0+aW5idWYsIEgyX0JVRlNJWkUsICZyZXN1bHQpOwogCi0gICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfQUdBSU4pIHsKKyAgICAgIGlmKG5yZWFkID09IC0xKSB7CisgICAgICAgIGlmKHJlc3VsdCAhPSBDVVJMRV9BR0FJTikKKyAgICAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHJlY2VpdmluZyBIVFRQMiBkYXRhIik7CisgICAgICAgIGVsc2UgaWYoc3RyZWFtLT5jbG9zZWQpCisgICAgICAgICAgLyogcmVjZWl2ZWQgd2hlbiB0aGUgc3RyZWFtIHdhcyBhbHJlYWR5IGNsb3NlZCEgKi8KKyAgICAgICAgICByZXR1cm4gaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShjb25uLCBkYXRhLCBzdHJlYW0sIGVycik7CisKICAgICAgICAgKmVyciA9IHJlc3VsdDsKICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgfQogCi0gICAgICBpZihucmVhZCA9PSAtMSkgewotICAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHJlY2VpdmluZyBIVFRQMiBkYXRhIik7Ci0gICAgICAgICplcnIgPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgfQotCiAgICAgICBpZihucmVhZCA9PSAwKSB7CiAgICAgICAgIGZhaWxmKGRhdGEsICJVbmV4cGVjdGVkIEVPRiIpOwogICAgICAgICAqZXJyID0gQ1VSTEVfUkVDVl9FUlJPUjsKQEAgLTk1MCwxNiArMTQ0NywyMiBAQAogICAgIH0KICAgICAvKiBBbHdheXMgc2VuZCBwZW5kaW5nIGZyYW1lcyBpbiBuZ2h0dHAyIHNlc3Npb24sIGJlY2F1c2UKICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YoKSBtYXkgcXVldWUgbmV3IGZyYW1lICovCi0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2VuZChodHRwYy0+aDIpOworICAgIHJ2ID0gaDJfc2Vzc2lvbl9zZW5kKGRhdGEsIGh0dHBjLT5oMik7CiAgICAgaWYocnYgIT0gMCkgewogICAgICAgKmVyciA9IENVUkxFX1NFTkRfRVJST1I7CiAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBpZihzaG91bGRfY2xvc2Vfc2Vzc2lvbihodHRwYykpIHsKKyAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogbm90aGluZyB0byBkbyBpbiB0aGlzIHNlc3Npb25cbiIpKTsKKyAgICAgICplcnIgPSBDVVJMRV9IVFRQMjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgIH0KICAgaWYoc3RyZWFtLT5tZW1sZW4pIHsKICAgICBzc2l6ZV90IHJldGxlbiA9IHN0cmVhbS0+bWVtbGVuOwotICAgIGluZm9mKGRhdGEsICJodHRwMl9yZWN2OiByZXR1cm5zICV6ZCBmb3Igc3RyZWFtICV1XG4iLAotICAgICAgICAgIHJldGxlbiwgc3RyZWFtLT5zdHJlYW1faWQpOworICAgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogcmV0dXJucyAlemQgZm9yIHN0cmVhbSAldVxuIiwKKyAgICAgICAgICAgICAgICAgcmV0bGVuLCBzdHJlYW0tPnN0cmVhbV9pZCkpOwogICAgIHN0cmVhbS0+bWVtbGVuID0gMDsKIAogICAgIGlmKGh0dHBjLT5wYXVzZV9zdHJlYW1faWQgPT0gc3RyZWFtLT5zdHJlYW1faWQpIHsKQEAgLTk2OCwxNSArMTQ3MSwxOCBAQAogICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJEYXRhIHJldHVybmVkIGZvciBQQVVTRUQgc3RyZWFtICV1XG4iLAogICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkKSk7CiAgICAgfQotICAgIGVsc2UKKyAgICBlbHNlIGlmKCFzdHJlYW0tPmNsb3NlZCkgeworICAgICAgREVCVUdBU1NFUlQoaHR0cGMtPmRyYWluX3RvdGFsID49IGRhdGEtPnN0YXRlLmRyYWluKTsKKyAgICAgIGh0dHBjLT5kcmFpbl90b3RhbCAtPSBkYXRhLT5zdGF0ZS5kcmFpbjsKICAgICAgIGRhdGEtPnN0YXRlLmRyYWluID0gMDsgLyogdGhpcyBzdHJlYW0gaXMgaGVyZWJ5IGRyYWluZWQgKi8KKyAgICB9CiAKICAgICByZXR1cm4gcmV0bGVuOwogICB9CiAgIC8qIElmIHN0cmVhbSBpcyBjbG9zZWQsIHJldHVybiAwIHRvIHNpZ25hbCB0aGUgaHR0cCByb3V0aW5lIHRvIGNsb3NlCiAgICAgIHRoZSBjb25uZWN0aW9uICovCiAgIGlmKHN0cmVhbS0+Y2xvc2VkKSB7Ci0gICAgcmV0dXJuIGh0dHAyX2hhbmRsZV9zdHJlYW1fY2xvc2UoaHR0cGMsIGRhdGEsIHN0cmVhbSwgZXJyKTsKKyAgICByZXR1cm4gaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShjb25uLCBkYXRhLCBzdHJlYW0sIGVycik7CiAgIH0KICAgKmVyciA9IENVUkxFX0FHQUlOOwogICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3YgcmV0dXJucyBBR0FJTiBmb3Igc3RyZWFtICV1XG4iLApAQCAtOTg4LDYgKzE0OTQsOSBAQAogICAgZmllbGQgbGlzdC4gKi8KICNkZWZpbmUgQVVUSE9SSVRZX0RTVF9JRFggMwogCisjZGVmaW5lIEhFQURFUl9PVkVSRkxPVyh4KSBcCisgICh4Lm5hbWVsZW4gPiAodWludDE2X3QpLTEgfHwgeC52YWx1ZWxlbiA+ICh1aW50MTZfdCktMSAtIHgubmFtZWxlbikKKwogLyogcmV0dXJuIG51bWJlciBvZiByZWNlaXZlZCAoZGVjcnlwdGVkKSBieXRlcyAqLwogc3RhdGljIHNzaXplX3QgaHR0cDJfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKQEAgLTEwMDAsMTUgKzE1MDksMTYgQEAKICAgaW50IHJ2OwogICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYyA9ICZjb25uLT5wcm90by5odHRwYzsKICAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7Ci0gIG5naHR0cDJfbnYgKm52YTsKKyAgbmdodHRwMl9udiAqbnZhID0gTlVMTDsKICAgc2l6ZV90IG5oZWFkZXI7CiAgIHNpemVfdCBpOwogICBzaXplX3QgYXV0aG9yaXR5X2lkeDsKICAgY2hhciAqaGRidWYgPSAoY2hhciopbWVtOwotICBjaGFyICplbmQ7CisgIGNoYXIgKmVuZCwgKmxpbmVfZW5kOwogICBuZ2h0dHAyX2RhdGFfcHJvdmlkZXIgZGF0YV9wcmQ7CiAgIGludDMyX3Qgc3RyZWFtX2lkOwogICBuZ2h0dHAyX3Nlc3Npb24gKmgyID0gaHR0cGMtPmgyOworICBuZ2h0dHAyX3ByaW9yaXR5X3NwZWMgcHJpX3NwZWM7CiAKICAgKHZvaWQpc29ja2luZGV4OwogCkBAIC0xMDIwLDcgKzE1MzAsNyBAQAogICAgIHN0cmVhbS0+dXBsb2FkX21lbSA9IG1lbTsKICAgICBzdHJlYW0tPnVwbG9hZF9sZW4gPSBsZW47CiAgICAgbmdodHRwMl9zZXNzaW9uX3Jlc3VtZV9kYXRhKGgyLCBzdHJlYW0tPnN0cmVhbV9pZCk7Ci0gICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2VuZChoMik7CisgICAgcnYgPSBoMl9zZXNzaW9uX3NlbmQoY29ubi0+ZGF0YSwgaDIpOwogICAgIGlmKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7CiAgICAgICAqZXJyID0gQ1VSTEVfU0VORF9FUlJPUjsKICAgICAgIHJldHVybiAtMTsKQEAgLTEwMzIsNiArMTU0MiwxMiBAQAogICAgIHN0cmVhbS0+dXBsb2FkX21lbSA9IE5VTEw7CiAgICAgc3RyZWFtLT51cGxvYWRfbGVuID0gMDsKIAorICAgIGlmKHNob3VsZF9jbG9zZV9zZXNzaW9uKGh0dHBjKSkgeworICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJodHRwMl9zZW5kOiBub3RoaW5nIHRvIGRvIGluIHRoaXMgc2Vzc2lvblxuIikpOworICAgICAgKmVyciA9IENVUkxFX0hUVFAyOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGlmKHN0cmVhbS0+dXBsb2FkX2xlZnQpIHsKICAgICAgIC8qIHdlIGFyZSBzdXJlIHRoYXQgd2UgaGF2ZSBtb3JlIGRhdGEgdG8gc2VuZCBoZXJlLiAgQ2FsbGluZyB0aGUKICAgICAgICAgIGZvbGxvd2luZyBBUEkgd2lsbCBtYWtlIG5naHR0cDJfc2Vzc2lvbl93YW50X3dyaXRlKCkgcmV0dXJuCkBAIC0xMDQ5LDEyICsxNTY1LDE2IEBACiAgIC8qIEhlcmUsIHdlIGFzc3VtZSB0aGUgY3VybCBodHRwIGNvZGUgZ2VuZXJhdGUgKmNvcnJlY3QqIEhUVFAgaGVhZGVyCiAgICAgIGZpZWxkIGJsb2NrICovCiAgIG5oZWFkZXIgPSAwOwotICBmb3IoaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgIGlmKGhkYnVmW2ldID09IDB4MGEpIHsKKyAgZm9yKGkgPSAxOyBpIDwgbGVuOyArK2kpIHsKKyAgICBpZihoZGJ1ZltpXSA9PSAnXG4nICYmIGhkYnVmW2kgLSAxXSA9PSAnXHInKSB7CiAgICAgICArK25oZWFkZXI7CisgICAgICArK2k7CiAgICAgfQogICB9Ci0gIC8qIFdlIGNvdW50ZWQgYWRkaXRpb25hbCAyIFxuIGluIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lLiBXZSBuZWVkIDMKKyAgaWYobmhlYWRlciA8IDIpCisgICAgZ290byBmYWlsOworCisgIC8qIFdlIGNvdW50ZWQgYWRkaXRpb25hbCAyIFxyXG4gaW4gdGhlIGZpcnN0IGFuZCBsYXN0IGxpbmUuIFdlIG5lZWQgMwogICAgICBuZXcgaGVhZGVyczogOm1ldGhvZCwgOnBhdGggYW5kIDpzY2hlbWUuIFRoZXJlZm9yZSB3ZSBuZWVkIG9uZQogICAgICBtb3JlIHNwYWNlLiAqLwogICBuaGVhZGVyICs9IDE7CkBAIC0xMDYzLDczICsxNTgzLDEzMyBAQAogICAgICplcnIgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgIHJldHVybiAtMTsKICAgfQorCiAgIC8qIEV4dHJhY3QgOm1ldGhvZCwgOnBhdGggZnJvbSByZXF1ZXN0IGxpbmUgKi8KLSAgZW5kID0gc3RyY2hyKGhkYnVmLCAnICcpOworICBsaW5lX2VuZCA9IHN0cnN0cihoZGJ1ZiwgIlxyXG4iKTsKKworICAvKiBNZXRob2QgZG9lcyBub3QgY29udGFpbiBzcGFjZXMgKi8KKyAgZW5kID0gbWVtY2hyKGhkYnVmLCAnICcsIGxpbmVfZW5kIC0gaGRidWYpOworICBpZighZW5kIHx8IGVuZCA9PSBoZGJ1ZikKKyAgICBnb3RvIGZhaWw7CiAgIG52YVswXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOm1ldGhvZCI7Ci0gIG52YVswXS5uYW1lbGVuID0gKHVpbnQxNl90KXN0cmxlbigoY2hhciAqKW52YVswXS5uYW1lKTsKKyAgbnZhWzBdLm5hbWVsZW4gPSBzdHJsZW4oKGNoYXIgKiludmFbMF0ubmFtZSk7CiAgIG52YVswXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7Ci0gIG52YVswXS52YWx1ZWxlbiA9ICh1aW50MTZfdCkoZW5kIC0gaGRidWYpOworICBudmFbMF0udmFsdWVsZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CiAgIG52YVswXS5mbGFncyA9IE5HSFRUUDJfTlZfRkxBR19OT05FOworICBpZihIRUFERVJfT1ZFUkZMT1cobnZhWzBdKSkgeworICAgIGZhaWxmKGNvbm4tPmRhdGEsICJGYWlsZWQgc2VuZGluZyBIVFRQIHJlcXVlc3Q6IEhlYWRlciBvdmVyZmxvdyIpOworICAgIGdvdG8gZmFpbDsKKyAgfQogCiAgIGhkYnVmID0gZW5kICsgMTsKIAotICBlbmQgPSBzdHJjaHIoaGRidWYsICcgJyk7CisgIC8qIFBhdGggbWF5IGNvbnRhaW4gc3BhY2VzIHNvIHNjYW4gYmFja3dhcmRzICovCisgIGVuZCA9IE5VTEw7CisgIGZvcihpID0gKHNpemVfdCkobGluZV9lbmQgLSBoZGJ1Zik7IGk7IC0taSkgeworICAgIGlmKGhkYnVmW2kgLSAxXSA9PSAnICcpIHsKKyAgICAgIGVuZCA9ICZoZGJ1ZltpIC0gMV07CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgaWYoIWVuZCB8fCBlbmQgPT0gaGRidWYpCisgICAgZ290byBmYWlsOwogICBudmFbMV0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopIjpwYXRoIjsKLSAgbnZhWzFdLm5hbWVsZW4gPSAodWludDE2X3Qpc3RybGVuKChjaGFyICopbnZhWzFdLm5hbWUpOworICBudmFbMV0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVsxXS5uYW1lKTsKICAgbnZhWzFdLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKLSAgbnZhWzFdLnZhbHVlbGVuID0gKHVpbnQxNl90KShlbmQgLSBoZGJ1Zik7CisgIG52YVsxXS52YWx1ZWxlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKICAgbnZhWzFdLmZsYWdzID0gTkdIVFRQMl9OVl9GTEFHX05PTkU7CisgIGlmKEhFQURFUl9PVkVSRkxPVyhudmFbMV0pKSB7CisgICAgZmFpbGYoY29ubi0+ZGF0YSwgIkZhaWxlZCBzZW5kaW5nIEhUVFAgcmVxdWVzdDogSGVhZGVyIG92ZXJmbG93Iik7CisgICAgZ290byBmYWlsOworICB9CiAKKyAgaGRidWYgPSBlbmQgKyAxOworCisgIGVuZCA9IGxpbmVfZW5kOwogICBudmFbMl0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopIjpzY2hlbWUiOwotICBudmFbMl0ubmFtZWxlbiA9ICh1aW50MTZfdClzdHJsZW4oKGNoYXIgKiludmFbMl0ubmFtZSk7CisgIG52YVsyXS5uYW1lbGVuID0gc3RybGVuKChjaGFyICopbnZhWzJdLm5hbWUpOwogICBpZihjb25uLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfU1NMKQogICAgIG52YVsyXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopImh0dHBzIjsKICAgZWxzZQogICAgIG52YVsyXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopImh0dHAiOwotICBudmFbMl0udmFsdWVsZW4gPSAodWludDE2X3Qpc3RybGVuKChjaGFyICopbnZhWzJdLnZhbHVlKTsKKyAgbnZhWzJdLnZhbHVlbGVuID0gc3RybGVuKChjaGFyICopbnZhWzJdLnZhbHVlKTsKICAgbnZhWzJdLmZsYWdzID0gTkdIVFRQMl9OVl9GTEFHX05PTkU7Ci0KLSAgaGRidWYgPSBzdHJjaHIoaGRidWYsIDB4MGEpOwotICArK2hkYnVmOworICBpZihIRUFERVJfT1ZFUkZMT1cobnZhWzJdKSkgeworICAgIGZhaWxmKGNvbm4tPmRhdGEsICJGYWlsZWQgc2VuZGluZyBIVFRQIHJlcXVlc3Q6IEhlYWRlciBvdmVyZmxvdyIpOworICAgIGdvdG8gZmFpbDsKKyAgfQogCiAgIGF1dGhvcml0eV9pZHggPSAwOworICBpID0gMzsKKyAgd2hpbGUoaSA8IG5oZWFkZXIpIHsKKyAgICBzaXplX3QgaGxlbjsKKyAgICBpbnQgc2tpcCA9IDA7CiAKLSAgZm9yKGkgPSAzOyBpIDwgbmhlYWRlcjsgKytpKSB7Ci0gICAgZW5kID0gc3RyY2hyKGhkYnVmLCAnOicpOwotICAgIGFzc2VydChlbmQpOwotICAgIGlmKGVuZCAtIGhkYnVmID09IDQgJiYgQ3VybF9yYXdfbmVxdWFsKCJob3N0IiwgaGRidWYsIDQpKSB7CisgICAgaGRidWYgPSBsaW5lX2VuZCArIDI7CisKKyAgICBsaW5lX2VuZCA9IHN0cnN0cihoZGJ1ZiwgIlxyXG4iKTsKKyAgICBpZihsaW5lX2VuZCA9PSBoZGJ1ZikKKyAgICAgIGdvdG8gZmFpbDsKKworICAgIC8qIGhlYWRlciBjb250aW51YXRpb24gbGluZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICBpZigqaGRidWYgPT0gJyAnIHx8ICpoZGJ1ZiA9PSAnXHQnKQorICAgICAgZ290byBmYWlsOworCisgICAgZm9yKGVuZCA9IGhkYnVmOyBlbmQgPCBsaW5lX2VuZCAmJiAqZW5kICE9ICc6JzsgKytlbmQpCisgICAgICA7CisgICAgaWYoZW5kID09IGhkYnVmIHx8IGVuZCA9PSBsaW5lX2VuZCkKKyAgICAgIGdvdG8gZmFpbDsKKyAgICBobGVuID0gZW5kIC0gaGRidWY7CisKKyAgICBpZihobGVuID09IDEwICYmIEN1cmxfcmF3X25lcXVhbCgiY29ubmVjdGlvbiIsIGhkYnVmLCAxMCkpIHsKKyAgICAgIC8qIHNraXAgQ29ubmVjdGlvbjogaGVhZGVycyEgKi8KKyAgICAgIHNraXAgPSAxOworICAgICAgLS1uaGVhZGVyOworICAgIH0KKyAgICBlbHNlIGlmKGhsZW4gPT0gNCAmJiBDdXJsX3Jhd19uZXF1YWwoImhvc3QiLCBoZGJ1ZiwgNCkpIHsKICAgICAgIGF1dGhvcml0eV9pZHggPSBpOwogICAgICAgbnZhW2ldLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKSI6YXV0aG9yaXR5IjsKLSAgICAgIG52YVtpXS5uYW1lbGVuID0gKHVpbnQxNl90KXN0cmxlbigoY2hhciAqKW52YVtpXS5uYW1lKTsKKyAgICAgIG52YVtpXS5uYW1lbGVuID0gc3RybGVuKChjaGFyICopbnZhW2ldLm5hbWUpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIG52YVtpXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKLSAgICAgIG52YVtpXS5uYW1lbGVuID0gKHVpbnQxNl90KShlbmQgLSBoZGJ1Zik7CisgICAgICBudmFbaV0ubmFtZWxlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKICAgICB9CiAgICAgaGRidWYgPSBlbmQgKyAxOwotICAgIGZvcig7ICpoZGJ1ZiA9PSAnICc7ICsraGRidWYpOwotICAgIGVuZCA9IHN0cmNocihoZGJ1ZiwgMHgwZCk7Ci0gICAgYXNzZXJ0KGVuZCk7Ci0gICAgbnZhW2ldLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKLSAgICBudmFbaV0udmFsdWVsZW4gPSAodWludDE2X3QpKGVuZCAtIGhkYnVmKTsKLSAgICBudmFbaV0uZmxhZ3MgPSBOR0hUVFAyX05WX0ZMQUdfTk9ORTsKLQotICAgIGhkYnVmID0gZW5kICsgMjsKLSAgICAvKiBJbnNwZWN0IENvbnRlbnQtTGVuZ3RoIGhlYWRlciBmaWVsZCBhbmQgcmV0cmlldmUgdGhlIHJlcXVlc3QKLSAgICAgICBlbnRpdHkgbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHNldCBFTkRfU1RSRUFNIHRvIHRoZSBsYXN0IERBVEEKLSAgICAgICBmcmFtZS4gKi8KLSAgICBpZihudmFbaV0ubmFtZWxlbiA9PSAxNCAmJgotICAgICAgIEN1cmxfcmF3X25lcXVhbCgiY29udGVudC1sZW5ndGgiLCAoY2hhciopbnZhW2ldLm5hbWUsIDE0KSkgewotICAgICAgc2l6ZV90IGo7Ci0gICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ID0gMDsKLSAgICAgIGZvcihqID0gMDsgaiA8IG52YVtpXS52YWx1ZWxlbjsgKytqKSB7Ci0gICAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgKj0gMTA7Ci0gICAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgKz0gbnZhW2ldLnZhbHVlW2pdIC0gJzAnOworICAgIHdoaWxlKCpoZGJ1ZiA9PSAnICcgfHwgKmhkYnVmID09ICdcdCcpCisgICAgICArK2hkYnVmOworICAgIGVuZCA9IGxpbmVfZW5kOworICAgIGlmKCFza2lwKSB7CisgICAgICBudmFbaV0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOworICAgICAgbnZhW2ldLnZhbHVlbGVuID0gKHNpemVfdCkoZW5kIC0gaGRidWYpOworICAgICAgbnZhW2ldLmZsYWdzID0gTkdIVFRQMl9OVl9GTEFHX05PTkU7CisgICAgICBpZihIRUFERVJfT1ZFUkZMT1cobnZhW2ldKSkgeworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiRmFpbGVkIHNlbmRpbmcgSFRUUCByZXF1ZXN0OiBIZWFkZXIgb3ZlcmZsb3ciKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgICAgfQotICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsCi0gICAgICAgICAgICAgICAgICAgInJlcXVlc3QgY29udGVudC1sZW5ndGg9JSIKLSAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UCi0gICAgICAgICAgICAgICAgICAgIlxuIiwgc3RyZWFtLT51cGxvYWRfbGVmdCkpOworICAgICAgLyogSW5zcGVjdCBDb250ZW50LUxlbmd0aCBoZWFkZXIgZmllbGQgYW5kIHJldHJpZXZlIHRoZSByZXF1ZXN0CisgICAgICAgICBlbnRpdHkgbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHNldCBFTkRfU1RSRUFNIHRvIHRoZSBsYXN0IERBVEEKKyAgICAgICAgIGZyYW1lLiAqLworICAgICAgaWYobnZhW2ldLm5hbWVsZW4gPT0gMTQgJiYKKyAgICAgICAgIEN1cmxfcmF3X25lcXVhbCgiY29udGVudC1sZW5ndGgiLCAoY2hhciopbnZhW2ldLm5hbWUsIDE0KSkgeworICAgICAgICBzaXplX3QgajsKKyAgICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA9IDA7CisgICAgICAgIGlmKCFudmFbaV0udmFsdWVsZW4pCisgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBmb3IoaiA9IDA7IGogPCBudmFbaV0udmFsdWVsZW47ICsraikgeworICAgICAgICAgIGlmKG52YVtpXS52YWx1ZVtqXSA8ICcwJyB8fCBudmFbaV0udmFsdWVbal0gPiAnOScpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgaWYoc3RyZWFtLT51cGxvYWRfbGVmdCA+PSBDVVJMX09GRl9UX01BWCAvIDEwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgKj0gMTA7CisgICAgICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCArPSBudmFbaV0udmFsdWVbal0gLSAnMCc7CisgICAgICAgIH0KKyAgICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdCBjb250ZW50LWxlbmd0aD0lIgorICAgICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVAorICAgICAgICAgICAgICAgICAgICAgIlxuIiwgc3RyZWFtLT51cGxvYWRfbGVmdCkpOworICAgICAgfQorICAgICAgKytpOwogICAgIH0KICAgfQogCkBAIC0xMTQyLDIxICsxNzIyLDQ2IEBACiAgICAgbnZhW2ldID0gYXV0aG9yaXR5OwogICB9CiAKKyAgLyogV2FybiBzdHJlYW0gbWF5IGJlIHJlamVjdGVkIGlmIGN1bXVsYXRpdmUgbGVuZ3RoIG9mIGhlYWRlcnMgaXMgdG9vIGxhcmdlLgorICAgICBJdCBhcHBlYXJzIG5naHR0cDIgd2lsbCBub3Qgc2VuZCBhIGhlYWRlciBmcmFtZSBsYXJnZXIgdGhhbiA2NEtCLiAqLworICB7CisgICAgc2l6ZV90IGFjYyA9IDA7CisgICAgY29uc3Qgc2l6ZV90IG1heF9hY2MgPSA2MDAwMDsgIC8qIDw2NEtCIHRvIGFjY291bnQgZm9yIHNvbWUgb3ZlcmhlYWQgKi8KKworICAgIGZvcihpID0gMDsgaSA8IG5oZWFkZXI7ICsraSkgeworICAgICAgaWYobnZhW2ldLm5hbWVsZW4gPiBtYXhfYWNjIC0gYWNjKQorICAgICAgICBicmVhazsKKyAgICAgIGFjYyArPSBudmFbaV0ubmFtZWxlbjsKKworICAgICAgaWYobnZhW2ldLnZhbHVlbGVuID4gbWF4X2FjYyAtIGFjYykKKyAgICAgICAgYnJlYWs7CisgICAgICBhY2MgKz0gbnZhW2ldLnZhbHVlbGVuOworICAgIH0KKworICAgIGlmKGkgIT0gbmhlYWRlcikgeworICAgICAgaW5mb2YoY29ubi0+ZGF0YSwgImh0dHAyX3NlbmQ6IFdhcm5pbmc6IFRoZSBjdW11bGF0aXZlIGxlbmd0aCBvZiBhbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlcnMgZXhjZWVkcyAlenUgYnl0ZXMgYW5kIHRoYXQgY291bGQgY2F1c2UgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlYW0gdG8gYmUgcmVqZWN0ZWQuXG4iLCBtYXhfYWNjKTsKKyAgICB9CisgIH0KKworICBoMl9wcmlfc3BlYyhjb25uLT5kYXRhLCAmcHJpX3NwZWMpOworCiAgIHN3aXRjaChjb25uLT5kYXRhLT5zZXQuaHR0cHJlcSkgewogICBjYXNlIEhUVFBSRVFfUE9TVDoKICAgY2FzZSBIVFRQUkVRX1BPU1RfRk9STToKICAgY2FzZSBIVFRQUkVRX1BVVDoKICAgICBkYXRhX3ByZC5yZWFkX2NhbGxiYWNrID0gZGF0YV9zb3VyY2VfcmVhZF9jYWxsYmFjazsKICAgICBkYXRhX3ByZC5zb3VyY2UucHRyID0gTlVMTDsKLSAgICBzdHJlYW1faWQgPSBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KGgyLCBOVUxMLCBudmEsIG5oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9wcmQsIE5VTEwpOworICAgIHN0cmVhbV9pZCA9IG5naHR0cDJfc3VibWl0X3JlcXVlc3QoaDIsICZwcmlfc3BlYywgbnZhLCBuaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfcHJkLCBjb25uLT5kYXRhKTsKICAgICBicmVhazsKICAgZGVmYXVsdDoKLSAgICBzdHJlYW1faWQgPSBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KGgyLCBOVUxMLCBudmEsIG5oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICBzdHJlYW1faWQgPSBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KGgyLCAmcHJpX3NwZWMsIG52YSwgbmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGNvbm4tPmRhdGEpOwogICB9CiAKLSAgZnJlZShudmEpOworICBDdXJsX3NhZmVmcmVlKG52YSk7CiAKICAgaWYoc3RyZWFtX2lkIDwgMCkgewogICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiaHR0cDJfc2VuZCgpIHNlbmQgZXJyb3JcbiIpKTsKQEAgLTExNjgsMTQgKzE3NzMsOCBAQAogICAgICAgICBzdHJlYW1faWQsIGNvbm4tPmRhdGEpOwogICBzdHJlYW0tPnN0cmVhbV9pZCA9IHN0cmVhbV9pZDsKIAotICAvKiBwdXQgdGhlIFNlc3Npb25IYW5kbGUgaW4gdGhlIGhhc2ggd2l0aCB0aGUgc3RyZWFtX2lkIGFzIGtleSAqLwotICBpZighQ3VybF9oYXNoX2FkZCgmaHR0cGMtPnN0cmVhbXNoLCAmc3RyZWFtLT5zdHJlYW1faWQsIHNpemVvZihzdHJlYW1faWQpLAotICAgICAgICAgICAgICAgICAgICBjb25uLT5kYXRhKSkgewotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJDb3VsZG4ndCBhZGQgc3RyZWFtIHRvIGhhc2ghIik7Ci0gICAgKmVyciA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KKyAgLyogdGhpcyBkb2VzIG5vdCBjYWxsIGgyX3Nlc3Npb25fc2VuZCgpIHNpbmNlIHRoZXJlIGNhbiBub3QgaGF2ZSBiZWVuIGFueQorICAgKiBwcmlvcml0eSB1cG9kYXRlIHNpbmNlIHRoZSBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KCkgY2FsbCBhYm92ZSAqLwogICBydiA9IG5naHR0cDJfc2Vzc2lvbl9zZW5kKGgyKTsKIAogICBpZihydiAhPSAwKSB7CkBAIC0xMTgzLDYgKzE3ODIsMTIgQEAKICAgICByZXR1cm4gLTE7CiAgIH0KIAorICBpZihzaG91bGRfY2xvc2Vfc2Vzc2lvbihodHRwYykpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgImh0dHAyX3NlbmQ6IG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzZXNzaW9uXG4iKSk7CisgICAgKmVyciA9IENVUkxFX0hUVFAyOworICAgIHJldHVybiAtMTsKKyAgfQorCiAgIGlmKHN0cmVhbS0+c3RyZWFtX2lkICE9IC0xKSB7CiAgICAgLyogSWYgd2hvbGUgSEVBREVSUyBmcmFtZSB3YXMgc2VudCBvZmYgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0LAogICAgICAgIHRoZSBuZ2h0dHAyIGxpYnJhcnkgY2FsbHMgZGF0YV9zb3VyY2VfcmVhZF9jYWxsYmFjay4gQnV0IG9ubHkKQEAgLTExOTYsNiArMTgwMSwxMSBAQAogICB9CiAKICAgcmV0dXJuIGxlbjsKKworZmFpbDoKKyAgZnJlZShudmEpOworICAqZXJyID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgcmV0dXJuIC0xOwogfQogCiBDVVJMY29kZSBDdXJsX2h0dHAyX3NldHVwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKQEAgLTEyMzEsNiArMTg0MSw3IEBACiAgIGh0dHBjLT5ucmVhZF9pbmJ1ZiA9IDA7CiAKICAgaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9IDA7CisgIGh0dHBjLT5kcmFpbl90b3RhbCA9IDA7CiAKICAgY29ubi0+Yml0cy5tdWx0aXBsZXggPSBUUlVFOyAvKiBhdCBsZWFzdCBwb3RlbnRpYWxseSBtdWx0aXBsZXhlZCAqLwogICBjb25uLT5odHRwdmVyc2lvbiA9IDIwOwpAQCAtMTIzOSw2ICsxODUwLDEwIEBACiAgIGluZm9mKGNvbm4tPmRhdGEsICJDb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgKEhUVFAvMiBjb25maXJtZWQpXG4iKTsKICAgQ3VybF9tdWx0aV9jb25uY2hhbmdlZChjb25uLT5kYXRhLT5tdWx0aSk7CiAKKyAgLyogc3dpdGNoIG9uIFRDUF9OT0RFTEFZIGFzIHdlIG5lZWQgdG8gc2VuZCBvZmYgcGFja2V0cyB3aXRob3V0IGRlbGF5IGZvcgorICAgICBtYXhpbXVtIHRocm91Z2hwdXQgKi8KKyAgQ3VybF90Y3Bub2RlbGF5KGNvbm4sIGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdKTsKKwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKQEAgLTEyNzMsMTIgKzE4ODgsOSBAQAogICAgICAgcmV0dXJuIENVUkxFX0hUVFAyOwogICAgIH0KIAotICAgIC8qIHB1dCB0aGUgU2Vzc2lvbkhhbmRsZSBpbiB0aGUgaGFzaCB3aXRoIHRoZSBzdHJlYW0tPnN0cmVhbV9pZCBhcyBrZXkgKi8KLSAgICBpZighQ3VybF9oYXNoX2FkZCgmaHR0cGMtPnN0cmVhbXNoLCAmc3RyZWFtLT5zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cmVhbS0+c3RyZWFtX2lkKSwgY29ubi0+ZGF0YSkpIHsKLSAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJDb3VsZG4ndCBhZGQgc3RyZWFtIHRvIGhhc2ghIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICB9CisgICAgbmdodHRwMl9zZXNzaW9uX3NldF9zdHJlYW1fdXNlcl9kYXRhKGh0dHBjLT5oMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmRhdGEpOwogICB9CiAgIGVsc2UgewogICAgIC8qIHN0cmVhbSBJRCBpcyB1bmtub3duIGF0IHRoaXMgcG9pbnQgKi8KQEAgLTEzMjksNyArMTk0MSw3IEBACiAgIH0KIAogICAvKiBUcnkgdG8gc2VuZCBzb21lIGZyYW1lcyBzaW5jZSB3ZSBtYXkgcmVhZCBTRVRUSU5HUyBhbHJlYWR5LiAqLwotICBydiA9IG5naHR0cDJfc2Vzc2lvbl9zZW5kKGh0dHBjLT5oMik7CisgIHJ2ID0gaDJfc2Vzc2lvbl9zZW5kKGRhdGEsIGh0dHBjLT5oMik7CiAKICAgaWYocnYgIT0gMCkgewogICAgIGZhaWxmKGRhdGEsICJuZ2h0dHAyX3Nlc3Npb25fc2VuZCgpIGZhaWxlZDogJXMoJWQpIiwKQEAgLTEzMzcsNyArMTk0OSwzNCBAQAogICAgIHJldHVybiBDVVJMRV9IVFRQMjsKICAgfQogCisgIGlmKHNob3VsZF9jbG9zZV9zZXNzaW9uKGh0dHBjKSkgeworICAgIERFQlVHRihpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAibmdodHRwMl9zZXNzaW9uX3NlbmQoKTogbm90aGluZyB0byBkbyBpbiB0aGlzIHNlc3Npb25cbiIpKTsKKyAgICByZXR1cm4gQ1VSTEVfSFRUUDI7CisgIH0KKwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLSNlbmRpZgorI2Vsc2UgLyogIVVTRV9OR0hUVFAyICovCisKKy8qIFNhdGlzZnkgZXh0ZXJuYWwgcmVmZXJlbmNlcyBldmVuIGlmIGh0dHAyIGlzIG5vdCBjb21waWxlZCBpbi4gKi8KKworI2RlZmluZSBDVVJMX0RJU0FCTEVfVFlQRUNIRUNLCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK2NoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW51bShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgc2l6ZV90IG51bSkKK3sKKyAgKHZvaWQpIGg7CisgICh2b2lkKSBudW07CisgIHJldHVybiBOVUxMOworfQorCitjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnluYW1lKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLCBjb25zdCBjaGFyICpoZWFkZXIpCit7CisgICh2b2lkKSBoOworICAodm9pZCkgaGVhZGVyOworICByZXR1cm4gTlVMTDsKK30KKworI2VuZGlmIC8qIFVTRV9OR0hUVFAyICovCmRpZmYgLS1naXQgYS9saWIvaHR0cDIuaCBiL2xpYi9odHRwMi5oCmluZGV4IDE2MTQ3MzYuLjFhZWMzMDQgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwMi5oCisrKyBiL2xpYi9odHRwMi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzcsNyArMzcsMTEgQEAKICAqLwogaW50IEN1cmxfaHR0cDJfdmVyKGNoYXIgKnAsIHNpemVfdCBsZW4pOwogCitjb25zdCBjaGFyICpDdXJsX2h0dHAyX3N0cmVycm9yKHVpbnQzMl90IGVycik7CisKIENVUkxjb2RlIEN1cmxfaHR0cDJfaW5pdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwordm9pZCBDdXJsX2h0dHAyX2luaXRfc3RhdGUoc3RydWN0IFVybFN0YXRlICpzdGF0ZSk7Cit2b2lkIEN1cmxfaHR0cDJfaW5pdF91c2Vyc2V0KHN0cnVjdCBVc2VyRGVmaW5lZCAqc2V0KTsKIENVUkxjb2RlIEN1cmxfaHR0cDJfc2VuZF9yZXF1ZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX2h0dHAyX3JlcXVlc3RfdXBncmFkZShDdXJsX3NlbmRfYnVmZmVyICpyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwpAQCAtNDYsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkYXRhLCBzaXplX3QgbnJlYWQpOwogLyogY2FsbGVkIGZyb20gQ3VybF9odHRwX3NldHVwX2Nvbm4gKi8KIHZvaWQgQ3VybF9odHRwMl9zZXR1cF9jb25uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7Cit2b2lkIEN1cmxfaHR0cDJfc2V0dXBfcmVxKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKICNlbHNlIC8qIFVTRV9OR0hUVFAyICovCiAjZGVmaW5lIEN1cmxfaHR0cDJfaW5pdCh4KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTAogI2RlZmluZSBDdXJsX2h0dHAyX3NlbmRfcmVxdWVzdCh4KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTApAQCAtNTMsNiArNTgsOSBAQAogI2RlZmluZSBDdXJsX2h0dHAyX3NldHVwKHgpIENVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MCiAjZGVmaW5lIEN1cmxfaHR0cDJfc3dpdGNoZWQoeCx5LHopIENVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MCiAjZGVmaW5lIEN1cmxfaHR0cDJfc2V0dXBfY29ubih4KQorI2RlZmluZSBDdXJsX2h0dHAyX3NldHVwX3JlcSh4KQorI2RlZmluZSBDdXJsX2h0dHAyX2luaXRfc3RhdGUoeCkKKyNkZWZpbmUgQ3VybF9odHRwMl9pbml0X3VzZXJzZXQoeCkKICNlbmRpZgogCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfSFRUUDJfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2h0dHBfY2h1bmtzLmMgYi9saWIvaHR0cF9jaHVua3MuYwppbmRleCA4MGMwZjk1Li40MzNmNzZlIDEwMDY0NAotLS0gYS9saWIvaHR0cF9jaHVua3MuYworKysgYi9saWIvaHR0cF9jaHVua3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTgwLDcgKzgwLDcgQEAKIHsKICAgcmV0dXJuICggKGRpZ2l0ID49IDB4MzAgJiYgZGlnaXQgPD0gMHgzOSkgLyogMC05ICovCiAgICAgICAgIHx8IChkaWdpdCA+PSAweDQxICYmIGRpZ2l0IDw9IDB4NDYpIC8qIEEtRiAqLwotICAgICAgICB8fCAoZGlnaXQgPj0gMHg2MSAmJiBkaWdpdCA8PSAweDY2KSAvKiBhLWYgKi8gKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAgICAgfHwgKGRpZ2l0ID49IDB4NjEgJiYgZGlnaXQgPD0gMHg2NikgLyogYS1mICovKSA/IFRSVUUgOiBGQUxTRTsKIH0KIAogdm9pZCBDdXJsX2h0dHBjaHVua19pbml0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKQEAgLTIxOCw3ICsyMTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNzaXplX3QpcGllY2UpOwogICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBDT01QUkVTUzoKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGZhaWxmIChjb25uLT5kYXRhLAogICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjb250ZW50IGVuY29kaW5nIHR5cGUuICIKZGlmZiAtLWdpdCBhL2xpYi9odHRwX2NodW5rcy5oIGIvbGliL2h0dHBfY2h1bmtzLmgKaW5kZXggMDQ4OWViOC4uM2E4YjRkZCAxMDA2NDQKLS0tIGEvbGliL2h0dHBfY2h1bmtzLmgKKysrIGIvbGliL2h0dHBfY2h1bmtzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaHR0cF9kaWdlc3QuYyBiL2xpYi9odHRwX2RpZ2VzdC5jCmluZGV4IDkyOWUyYzYuLmExNzY4YjggMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX2RpZ2VzdC5jCisrKyBiL2xpYi9odHRwX2RpZ2VzdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsMTEgKzI2LDEwIEBACiAKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAjaW5jbHVkZSAicmF3c3RyLmgiCi0jaW5jbHVkZSAiY3VybF9zYXNsLmgiCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKICNpbmNsdWRlICJodHRwX2RpZ2VzdC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTY1LDcgKzY0LDcgQEAKICAgd2hpbGUoKmhlYWRlciAmJiBJU1NQQUNFKCpoZWFkZXIpKQogICAgIGhlYWRlcisrOwogCi0gIHJldHVybiBDdXJsX3Nhc2xfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoaGVhZGVyLCBkaWdlc3QpOworICByZXR1cm4gQ3VybF9hdXRoX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGhlYWRlciwgZGlnZXN0KTsKIH0KIAogQ1VSTGNvZGUgQ3VybF9vdXRwdXRfZGlnZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKQEAgLTEzNSw3ICsxMzQsNyBAQAogCiAgICAgIEFwYWNoZSBzZXJ2ZXJzIGNhbiBiZSBzZXQgdG8gZG8gdGhlIERpZ2VzdCBJRS1zdHlsZSBhdXRvbWF0aWNhbGx5IHVzaW5nCiAgICAgIHRoZSBCcm93c2VyTWF0Y2ggZmVhdHVyZToKLSAgICAgaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjIvbW9kL21vZF9hdXRoX2RpZ2VzdC5odG1sI21zaWUKKyAgICAgaHR0cHM6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4yL21vZC9tb2RfYXV0aF9kaWdlc3QuaHRtbCNtc2llCiAKICAgICAgRnVydGhlciBkZXRhaWxzIG9uIERpZ2VzdCBpbXBsZW1lbnRhdGlvbiBkaWZmZXJlbmNlczoKICAgICAgaHR0cDovL3d3dy5mbmd0cHMuY29tLzIwMDYvMDkvaHR0cC1hdXRoZW50aWNhdGlvbgpAQCAtMTUyLDcgKzE1MSw3IEBACiAgIGlmKCFwYXRoKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCi0gIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShkYXRhLCB1c2VycCwgcGFzc3dkcCwgcmVxdWVzdCwKKyAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGRhdGEsIHVzZXJwLCBwYXNzd2RwLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgZGlnZXN0LCAmcmVzcG9uc2UsICZsZW4pOwogICBmcmVlKHBhdGgpOwogICBpZihyZXN1bHQpCkBAIC0xNzIsOCArMTcxLDggQEAKIAogdm9pZCBDdXJsX2RpZ2VzdF9jbGVhbnVwKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewotICBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoJmRhdGEtPnN0YXRlLmRpZ2VzdCk7Ci0gIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cCgmZGF0YS0+c3RhdGUucHJveHlkaWdlc3QpOworICBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoJmRhdGEtPnN0YXRlLmRpZ2VzdCk7CisgIEN1cmxfYXV0aF9kaWdlc3RfY2xlYW51cCgmZGF0YS0+c3RhdGUucHJveHlkaWdlc3QpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi9odHRwX2RpZ2VzdC5oIGIvbGliL2h0dHBfZGlnZXN0LmgKaW5kZXggZDEzZDU2My4uNDlhYWQ4OSAxMDA2NDQKLS0tIGEvbGliL2h0dHBfZGlnZXN0LmgKKysrIGIvbGliL2h0dHBfZGlnZXN0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaHR0cF9uZWdvdGlhdGUuYyBiL2xpYi9odHRwX25lZ290aWF0ZS5jCmluZGV4IGExYmFmMjkuLjk5OWJjMGMgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX25lZ290aWF0ZS5jCisrKyBiL2xpYi9odHRwX25lZ290aWF0ZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsMTkgKzIyLDE2IEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgZGVmaW5lZChVU0VfU1BORUdPKQorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9IVFRQKSAmJiBkZWZpbmVkKFVTRV9TUE5FR08pCiAKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAjaW5jbHVkZSAic2VuZGYuaCIKLSNpbmNsdWRlICJjdXJsX2dzc2FwaS5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgotI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAiaHR0cF9uZWdvdGlhdGUuaCIKLSNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKLSNpbmNsdWRlICJ1cmwuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtNDIsMTM2ICszOSw3NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaGVhZGVyKQogewogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdfY3R4ID0gcHJveHk/JmRhdGEtPnN0YXRlLnByb3h5bmVnOgotICAgICZkYXRhLT5zdGF0ZS5uZWdvdGlhdGU7Ci0gIE9NX3VpbnQzMiBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cywgZGlzY2FyZF9zdDsKLSAgZ3NzX2J1ZmZlcl9kZXNjIHNwbl90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKLSAgZ3NzX2J1ZmZlcl9kZXNjIGlucHV0X3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOwotICBnc3NfYnVmZmVyX2Rlc2Mgb3V0cHV0X3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOwogICBzaXplX3QgbGVuOwotICBzaXplX3QgcmF3bGVuID0gMDsKLSAgQ1VSTGNvZGUgcmVzdWx0OwogCi0gIGlmKG5lZ19jdHgtPmNvbnRleHQgJiYgbmVnX2N0eC0+c3RhdHVzID09IEdTU19TX0NPTVBMRVRFKSB7Ci0gICAgLyogV2UgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IG91ciBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uLCBidXQgc2VydmVyCi0gICAgICogcmVqZWN0ZWQgaXQgKHNpbmNlIHdlJ3JlIGFnYWluIGhlcmUpLiBFeGl0IHdpdGggYW4gZXJyb3Igc2luY2Ugd2UKLSAgICAgKiBjYW4ndCBpbnZlbnQgYW55dGhpbmcgYmV0dGVyICovCi0gICAgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShkYXRhKTsKLSAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworICAvKiBQb2ludCB0byB0aGUgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2aWNlIGFuZCBob3N0ICovCisgIGNvbnN0IGNoYXIgKnVzZXJwOworICBjb25zdCBjaGFyICpwYXNzd2RwOworICBjb25zdCBjaGFyICpzZXJ2aWNlOworICBjb25zdCBjaGFyICpob3N0OworCisgIC8qIFBvaW50IHRvIHRoZSBjb3JyZWN0IHN0cnVjdCB3aXRoIHRoaXMgKi8KKyAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ19jdHg7CisKKyAgaWYocHJveHkpIHsKKyAgICB1c2VycCA9IGNvbm4tPnByb3h5dXNlcjsKKyAgICBwYXNzd2RwID0gY29ubi0+cHJveHlwYXNzd2Q7CisgICAgc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdIDogIkhUVFAiOworICAgIGhvc3QgPSBjb25uLT5wcm94eS5uYW1lOworICAgIG5lZ19jdHggPSAmZGF0YS0+c3RhdGUucHJveHluZWc7CisgIH0KKyAgZWxzZSB7CisgICAgdXNlcnAgPSBjb25uLT51c2VyOworICAgIHBhc3N3ZHAgPSBjb25uLT5wYXNzd2Q7CisgICAgc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdIDogIkhUVFAiOworICAgIGhvc3QgPSBjb25uLT5ob3N0Lm5hbWU7CisgICAgbmVnX2N0eCA9ICZkYXRhLT5zdGF0ZS5uZWdvdGlhdGU7CiAgIH0KIAotICBpZighbmVnX2N0eC0+c2VydmVyX25hbWUpIHsKLSAgICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCi0gICAgY2hhciAqc3BuID0gQ3VybF9zYXNsX2J1aWxkX2dzc2FwaV9zcG4oCi0gICAgICBwcm94eSA/IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gOgotICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSwKLSAgICAgIHByb3h5ID8gY29ubi0+cHJveHkubmFtZSA6IGNvbm4tPmhvc3QubmFtZSk7Ci0gICAgaWYoIXNwbikKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAvKiBOb3Qgc2V0IG1lYW5zIGVtcHR5ICovCisgIGlmKCF1c2VycCkKKyAgICB1c2VycCA9ICIiOwogCi0gICAgLyogUG9wdWxhdGUgdGhlIFNQTiBzdHJ1Y3R1cmUgKi8KLSAgICBzcG5fdG9rZW4udmFsdWUgPSBzcG47Ci0gICAgc3BuX3Rva2VuLmxlbmd0aCA9IHN0cmxlbihzcG4pOworICBpZighcGFzc3dkcCkKKyAgICBwYXNzd2RwID0gIiI7CiAKLSAgICAvKiBJbXBvcnQgdGhlIFNQTiAqLwotICAgIG1ham9yX3N0YXR1cyA9IGdzc19pbXBvcnRfbmFtZSgmbWlub3Jfc3RhdHVzLCAmc3BuX3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZ19jdHgtPnNlcnZlcl9uYW1lKTsKLSAgICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgewotICAgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsIG1pbm9yX3N0YXR1cywgImdzc19pbXBvcnRfbmFtZSgpIGZhaWxlZDogIik7Ci0KLSAgICAgIGZyZWUoc3BuKTsKLQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgfQotCi0gICAgZnJlZShzcG4pOwotICB9Ci0KKyAgLyogT2J0YWluIHRoZSBpbnB1dCB0b2tlbiwgaWYgYW55ICovCiAgIGhlYWRlciArPSBzdHJsZW4oIk5lZ290aWF0ZSIpOwogICB3aGlsZSgqaGVhZGVyICYmIElTU1BBQ0UoKmhlYWRlcikpCiAgICAgaGVhZGVyKys7CiAKICAgbGVuID0gc3RybGVuKGhlYWRlcik7Ci0gIGlmKGxlbiA+IDApIHsKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoaGVhZGVyLCAodW5zaWduZWQgY2hhciAqKikmaW5wdXRfdG9rZW4udmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYXdsZW4pOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICBpZighcmF3bGVuKSB7Ci0gICAgICBpbmZvZihkYXRhLCAiTmVnb3RpYXRlIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOwotCi0gICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIGlmKCFsZW4pIHsKKyAgICAvKiBJcyB0aGlzIHRoZSBmaXJzdCBjYWxsIGluIGEgbmV3IG5lZ290aWF0aW9uPyAqLworICAgIGlmKG5lZ19jdHgtPmNvbnRleHQpIHsKKyAgICAgIC8qIFRoZSBzZXJ2ZXIgcmVqZWN0ZWQgb3VyIGF1dGhlbnRpY2F0aW9uIGFuZCBoYXNuJ3Qgc3VwcGxlZCBhbnkgbW9yZQorICAgICAgbmVnb3RpYXRpb24gbWVjaGFuaXNtcyAqLworICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKICAgICB9Ci0KLSAgICBpbnB1dF90b2tlbi5sZW5ndGggPSByYXdsZW47Ci0KLSAgICBERUJVR0FTU0VSVChpbnB1dF90b2tlbi52YWx1ZSAhPSBOVUxMKTsKICAgfQogCi0gIG1ham9yX3N0YXR1cyA9IEN1cmxfZ3NzX2luaXRfc2VjX2NvbnRleHQoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlub3Jfc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWdfY3R4LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ19jdHgtPnNlcnZlcl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDdXJsX3NwbmVnb19tZWNoX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gIEN1cmxfc2FmZWZyZWUoaW5wdXRfdG9rZW4udmFsdWUpOwotCi0gIG5lZ19jdHgtPnN0YXR1cyA9IG1ham9yX3N0YXR1czsKLSAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKLSAgICBpZihvdXRwdXRfdG9rZW4udmFsdWUpCi0gICAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmRpc2NhcmRfc3QsICZvdXRwdXRfdG9rZW4pOwotICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihjb25uLT5kYXRhLCBtaW5vcl9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICJnc3NfaW5pdF9zZWNfY29udGV4dCgpIGZhaWxlZDogIik7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBpZighb3V0cHV0X3Rva2VuLnZhbHVlIHx8ICFvdXRwdXRfdG9rZW4ubGVuZ3RoKSB7Ci0gICAgaWYob3V0cHV0X3Rva2VuLnZhbHVlKQotICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZkaXNjYXJkX3N0LCAmb3V0cHV0X3Rva2VuKTsKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIG5lZ19jdHgtPm91dHB1dF90b2tlbiA9IG91dHB1dF90b2tlbjsKLQotICByZXR1cm4gQ1VSTEVfT0s7CisgIC8qIEluaXRpbGlzZSB0aGUgc2VjdXJpdHkgY29udGV4dCBhbmQgZGVjb2RlIG91ciBjaGFsbGVuZ2UgKi8KKyAgcmV0dXJuIEN1cmxfYXV0aF9kZWNvZGVfc3BuZWdvX21lc3NhZ2UoZGF0YSwgdXNlcnAsIHBhc3N3ZHAsIHNlcnZpY2UsIGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciwgbmVnX2N0eCk7CiB9CiAKIENVUkxjb2RlIEN1cmxfb3V0cHV0X25lZ290aWF0ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgcHJveHkpCiB7Ci0gIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdfY3R4ID0gcHJveHk/JmNvbm4tPmRhdGEtPnN0YXRlLnByb3h5bmVnOgorICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eCA9IHByb3h5ID8gJmNvbm4tPmRhdGEtPnN0YXRlLnByb3h5bmVnIDoKICAgICAmY29ubi0+ZGF0YS0+c3RhdGUubmVnb3RpYXRlOwotICBjaGFyICplbmNvZGVkID0gTlVMTDsKKyAgY2hhciAqYmFzZTY0ID0gTlVMTDsKICAgc2l6ZV90IGxlbiA9IDA7CiAgIGNoYXIgKnVzZXJwOwogICBDVVJMY29kZSByZXN1bHQ7Ci0gIE9NX3VpbnQzMiBkaXNjYXJkX3N0OwogCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShjb25uLT5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuLnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuLmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGVkLCAmbGVuKTsKLSAgaWYocmVzdWx0KSB7Ci0gICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZkaXNjYXJkX3N0LCAmbmVnX2N0eC0+b3V0cHV0X3Rva2VuKTsKLSAgICBuZWdfY3R4LT5vdXRwdXRfdG9rZW4udmFsdWUgPSBOVUxMOwotICAgIG5lZ19jdHgtPm91dHB1dF90b2tlbi5sZW5ndGggPSAwOworICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX3NwbmVnb19tZXNzYWdlKGNvbm4tPmRhdGEsIG5lZ19jdHgsICZiYXNlNjQsICZsZW4pOworICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIGlmKCFlbmNvZGVkIHx8ICFsZW4pIHsKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmRpc2NhcmRfc3QsICZuZWdfY3R4LT5vdXRwdXRfdG9rZW4pOwotICAgIG5lZ19jdHgtPm91dHB1dF90b2tlbi52YWx1ZSA9IE5VTEw7Ci0gICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuLmxlbmd0aCA9IDA7Ci0gICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOwotICB9CiAKICAgdXNlcnAgPSBhcHJpbnRmKCIlc0F1dGhvcml6YXRpb246IE5lZ290aWF0ZSAlc1xyXG4iLCBwcm94eSA/ICJQcm94eS0iIDogIiIsCi0gICAgICAgICAgICAgICAgICBlbmNvZGVkKTsKKyAgICAgICAgICAgICAgICAgIGJhc2U2NCk7CisKICAgaWYocHJveHkpIHsKICAgICBDdXJsX3NhZmVmcmVlKGNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZCk7CiAgICAgY29ubi0+YWxsb2NwdHIucHJveHl1c2VycHdkID0gdXNlcnA7CkBAIC0xODEsMzAgKzExOSwxNSBAQAogICAgIGNvbm4tPmFsbG9jcHRyLnVzZXJwd2QgPSB1c2VycDsKICAgfQogCi0gIGZyZWUoZW5jb2RlZCk7CisgIGZyZWUoYmFzZTY0KTsKIAogICByZXR1cm4gKHVzZXJwID09IE5VTEwpID8gQ1VSTEVfT1VUX09GX01FTU9SWSA6IENVUkxFX09LOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhbnVwKHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdfY3R4KQotewotICBPTV91aW50MzIgbWlub3Jfc3RhdHVzOwotICBpZihuZWdfY3R4LT5jb250ZXh0ICE9IEdTU19DX05PX0NPTlRFWFQpCi0gICAgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dCgmbWlub3Jfc3RhdHVzLCAmbmVnX2N0eC0+Y29udGV4dCwgR1NTX0NfTk9fQlVGRkVSKTsKLQotICBpZihuZWdfY3R4LT5vdXRwdXRfdG9rZW4udmFsdWUpCi0gICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZtaW5vcl9zdGF0dXMsICZuZWdfY3R4LT5vdXRwdXRfdG9rZW4pOwotCi0gIGlmKG5lZ19jdHgtPnNlcnZlcl9uYW1lICE9IEdTU19DX05PX05BTUUpCi0gICAgZ3NzX3JlbGVhc2VfbmFtZSgmbWlub3Jfc3RhdHVzLCAmbmVnX2N0eC0+c2VydmVyX25hbWUpOwotCi0gIG1lbXNldChuZWdfY3R4LCAwLCBzaXplb2YoKm5lZ19jdHgpKTsKLX0KLQogdm9pZCBDdXJsX2NsZWFudXBfbmVnb3RpYXRlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewotICBjbGVhbnVwKCZkYXRhLT5zdGF0ZS5uZWdvdGlhdGUpOwotICBjbGVhbnVwKCZkYXRhLT5zdGF0ZS5wcm94eW5lZyk7CisgIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cCgmZGF0YS0+c3RhdGUubmVnb3RpYXRlKTsKKyAgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKCZkYXRhLT5zdGF0ZS5wcm94eW5lZyk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0dTU0FQSSAmJiAhQ1VSTF9ESVNBQkxFX0hUVFAgJiYgVVNFX1NQTkVHTyAqLworI2VuZGlmIC8qICFDVVJMX0RJU0FCTEVfSFRUUCAmJiBVU0VfU1BORUdPICovCmRpZmYgLS1naXQgYS9saWIvaHR0cF9uZWdvdGlhdGUuaCBiL2xpYi9odHRwX25lZ290aWF0ZS5oCmluZGV4IGE4ZWI5ODAuLjIxYjdmODggMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX25lZ290aWF0ZS5oCisrKyBiL2xpYi9odHRwX25lZ290aWF0ZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsMTAgKzMzLDYgQEAKIAogdm9pZCBDdXJsX2NsZWFudXBfbmVnb3RpYXRlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKIAotI2lmZGVmIFVTRV9XSU5ET1dTX1NTUEkKLSNkZWZpbmUgR1NTX0VSUk9SKHN0YXR1cykgKHN0YXR1cyAmIDB4ODAwMDAwMDApCi0jZW5kaWYKLQogI2VuZGlmIC8qIFVTRV9TUE5FR08gKi8KIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX0hUVFBfTkVHT1RJQVRFX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9odHRwX25lZ290aWF0ZV9zc3BpLmMgYi9saWIvaHR0cF9uZWdvdGlhdGVfc3NwaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTBlYTk2Li4wMDAwMDAwCi0tLSBhL2xpYi9odHRwX25lZ290aWF0ZV9zc3BpLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KLSAqCi0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLSNpZmRlZiBVU0VfV0lORE9XU19TU1BJCi0KLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgZGVmaW5lZChVU0VfU1BORUdPKQotCi0jaW5jbHVkZSAidXJsZGF0YS5oIgotI2luY2x1ZGUgInNlbmRmLmgiCi0jaW5jbHVkZSAicmF3c3RyLmgiCi0jaW5jbHVkZSAid2Fybmxlc3MuaCIKLSNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgotI2luY2x1ZGUgImN1cmxfc2FzbC5oIgotI2luY2x1ZGUgImh0dHBfbmVnb3RpYXRlLmgiCi0jaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCi0jaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLSNpbmNsdWRlICJtZW1kZWJ1Zy5oIgotCi1DVVJMY29kZSBDdXJsX2lucHV0X25lZ290aWF0ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgcHJveHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpoZWFkZXIpCi17Ci0gIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgQllURSAgICAgICAgICAgICAgKmlucHV0X3Rva2VuID0gTlVMTDsKLSAgU2VjQnVmZmVyRGVzYyAgICAgb3V0X2J1ZmZfZGVzYzsKLSAgU2VjQnVmZmVyICAgICAgICAgb3V0X3NlY19idWZmOwotICBTZWNCdWZmZXJEZXNjICAgICBpbl9idWZmX2Rlc2M7Ci0gIFNlY0J1ZmZlciAgICAgICAgIGluX3NlY19idWZmOwotICBTRUNVUklUWV9TVEFUVVMgICBzdGF0dXM7Ci0gIHVuc2lnbmVkIGxvbmcgICAgIGF0dHJzOwotICBUaW1lU3RhbXAgICAgICAgICBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLwotICBzaXplX3QgbGVuID0gMCwgaW5wdXRfdG9rZW5fbGVuID0gMDsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotCi0gIC8qIFBvaW50IHRvIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgKi8KLSAgY29uc3QgY2hhciAqdXNlcnA7Ci0gIGNvbnN0IGNoYXIgKnBhc3N3ZHA7Ci0KLSAgLyogUG9pbnQgdG8gdGhlIGNvcnJlY3Qgc3RydWN0IHdpdGggdGhpcyAqLwotICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eDsKLQotICBpZihwcm94eSkgewotICAgIHVzZXJwID0gY29ubi0+cHJveHl1c2VyOwotICAgIHBhc3N3ZHAgPSBjb25uLT5wcm94eXBhc3N3ZDsKLSAgICBuZWdfY3R4ID0gJmRhdGEtPnN0YXRlLnByb3h5bmVnOwotICB9Ci0gIGVsc2UgewotICAgIHVzZXJwID0gY29ubi0+dXNlcjsKLSAgICBwYXNzd2RwID0gY29ubi0+cGFzc3dkOwotICAgIG5lZ19jdHggPSAmZGF0YS0+c3RhdGUubmVnb3RpYXRlOwotICB9Ci0KLSAgLyogTm90IHNldCBtZWFucyBlbXB0eSAqLwotICBpZighdXNlcnApCi0gICAgdXNlcnAgPSAiIjsKLQotICBpZighcGFzc3dkcCkKLSAgICBwYXNzd2RwID0gIiI7Ci0KLSAgaWYobmVnX2N0eC0+Y29udGV4dCAmJiBuZWdfY3R4LT5zdGF0dXMgPT0gU0VDX0VfT0spIHsKLSAgICAvKiBXZSBmaW5pc2hlZCBzdWNjZXNzZnVsbHkgb3VyIHBhcnQgb2YgYXV0aGVudGljYXRpb24sIGJ1dCBzZXJ2ZXIKLSAgICAgKiByZWplY3RlZCBpdCAoc2luY2Ugd2UncmUgYWdhaW4gaGVyZSkuIEV4aXQgd2l0aCBhbiBlcnJvciBzaW5jZSB3ZQotICAgICAqIGNhbid0IGludmVudCBhbnl0aGluZyBiZXR0ZXIgKi8KLSAgICBDdXJsX2NsZWFudXBfbmVnb3RpYXRlKGRhdGEpOwotICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0gIH0KLQotICBpZighbmVnX2N0eC0+c2VydmVyX25hbWUpIHsKLSAgICAvKiBDaGVjayBwcm94eSBhdXRoIHJlcXVlc3RlZCBidXQgbm8gZ2l2ZW4gcHJveHkgbmFtZSAqLwotICAgIGlmKHByb3h5ICYmICFjb25uLT5wcm94eS5uYW1lKQotICAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKLQotICAgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KLSAgICBuZWdfY3R4LT5zZXJ2ZXJfbmFtZSA9IEN1cmxfc2FzbF9idWlsZF9zcG4oCi0gICAgICBwcm94eSA/IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gOgotICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSwKLSAgICAgIHByb3h5ID8gY29ubi0+cHJveHkubmFtZSA6IGNvbm4tPmhvc3QubmFtZSk7Ci0gICAgaWYoIW5lZ19jdHgtPnNlcnZlcl9uYW1lKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBpZighbmVnX2N0eC0+b3V0cHV0X3Rva2VuKSB7Ci0gICAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOwotICAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUKFNQX05BTUVfTkVHT1RJQVRFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOwotICAgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKLSAgICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47Ci0KLSAgICAvKiBBbGxvY2F0ZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYWNjb3JkaW5nIHRvIHRoZSBtYXggdG9rZW4gc2l6ZQotICAgICAgIGFzIGluZGljYXRlZCBieSB0aGUgc2VjdXJpdHkgcGFja2FnZSAqLwotICAgIG5lZ19jdHgtPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKLSAgICBuZWdfY3R4LT5vdXRwdXRfdG9rZW4gPSBtYWxsb2MobmVnX2N0eC0+dG9rZW5fbWF4KTsKLSAgICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKLSAgfQotCi0gIC8qIE9idGFpbiB0aGUgaW5wdXQgdG9rZW4sIGlmIGFueSAqLwotICBoZWFkZXIgKz0gc3RybGVuKCJOZWdvdGlhdGUiKTsKLSAgd2hpbGUoKmhlYWRlciAmJiBJU1NQQUNFKCpoZWFkZXIpKQotICAgIGhlYWRlcisrOwotCi0gIGxlbiA9IHN0cmxlbihoZWFkZXIpOwotICBpZighbGVuKSB7Ci0gICAgLyogSXMgdGhpcyB0aGUgZmlyc3QgY2FsbCBpbiBhIG5ldyBuZWdvdGlhdGlvbj8gKi8KLSAgICBpZihuZWdfY3R4LT5jb250ZXh0KSB7Ci0gICAgICAvKiBUaGUgc2VydmVyIHJlamVjdGVkIG91ciBhdXRoZW50aWNhdGlvbiBhbmQgaGFzbid0IHN1cHBsZWQgYW55IG1vcmUKLSAgICAgICAgIG5lZ290aWF0aW9uIG1lY2hhbmlzbXMgKi8KLSAgICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0gICAgfQotCi0gICAgLyogV2UgaGF2ZSB0byBhY3F1aXJlIGNyZWRlbnRpYWxzIGFuZCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBjb250ZXh0ICovCi0gICAgbmVnX2N0eC0+Y3JlZGVudGlhbHMgPSBtYWxsb2Moc2l6ZW9mKENyZWRIYW5kbGUpKTsKLSAgICBuZWdfY3R4LT5jb250ZXh0ID0gbWFsbG9jKHNpemVvZihDdHh0SGFuZGxlKSk7Ci0KLSAgICBpZighbmVnX2N0eC0+Y3JlZGVudGlhbHMgfHwgIW5lZ19jdHgtPmNvbnRleHQpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIGlmKHVzZXJwICYmICp1c2VycCkgewotICAgICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJm5lZ19jdHgtPmlkZW50aXR5KTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgICAgbmVnX2N0eC0+cF9pZGVudGl0eSA9ICZuZWdfY3R4LT5pZGVudGl0eTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLwotICAgICAgbmVnX2N0eC0+cF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgICAvKiBBY3F1aXJlIG91ciBjcmVkaWVudGlhbHMgaGFuZGxlICovCi0gICAgbmVnX2N0eC0+c3RhdHVzID0KLSAgICAgIHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopIFRFWFQoU1BfTkFNRV9ORUdPVElBVEUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnX2N0eC0+cF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnX2N0eC0+Y3JlZGVudGlhbHMsICZleHBpcnkpOwotICAgIGlmKG5lZ19jdHgtPnN0YXR1cyAhPSBTRUNfRV9PSykKLSAgICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGhlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKiopJmlucHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfdG9rZW5fbGVuKTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYoIWlucHV0X3Rva2VuX2xlbikgewotICAgICAgaW5mb2YoZGF0YSwKLSAgICAgICAgICAgICJOZWdvdGlhdGUgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IGNoYWxsZW5nZSBtZXNzYWdlKVxuIik7Ci0KLSAgICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgICB9Ci0gIH0KLQotICAvKiBTZXR1cCB0aGUgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIG91dF9idWZmX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIG91dF9idWZmX2Rlc2MuY0J1ZmZlcnMgID0gMTsKLSAgb3V0X2J1ZmZfZGVzYy5wQnVmZmVycyAgPSAmb3V0X3NlY19idWZmOwotICBvdXRfc2VjX2J1ZmYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgb3V0X3NlY19idWZmLnB2QnVmZmVyICAgPSBuZWdfY3R4LT5vdXRwdXRfdG9rZW47Ci0gIG91dF9zZWNfYnVmZi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG5lZ19jdHgtPnRva2VuX21heCk7Ci0KLSAgLyogU2V0dXAgdGhlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyIGlmIHByZXNlbnQgKi8KLSAgaWYoaW5wdXRfdG9rZW4pIHsKLSAgICBpbl9idWZmX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gICAgaW5fYnVmZl9kZXNjLmNCdWZmZXJzICA9IDE7Ci0gICAgaW5fYnVmZl9kZXNjLnBCdWZmZXJzICA9ICZpbl9zZWNfYnVmZjsKLSAgICBpbl9zZWNfYnVmZi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICAgIGluX3NlY19idWZmLnB2QnVmZmVyICAgPSBpbnB1dF90b2tlbjsKLSAgICBpbl9zZWNfYnVmZi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKGlucHV0X3Rva2VuX2xlbik7Ci0gIH0KLQotICAvKiBHZW5lcmF0ZSBvdXIgbWVzc2FnZSAqLwotICBuZWdfY3R4LT5zdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dCgKLSAgICBuZWdfY3R4LT5jcmVkZW50aWFscywKLSAgICBpbnB1dF90b2tlbiA/IG5lZ19jdHgtPmNvbnRleHQgOiBOVUxMLAotICAgIG5lZ19jdHgtPnNlcnZlcl9uYW1lLAotICAgIElTQ19SRVFfQ09ORklERU5USUFMSVRZLAotICAgIDAsCi0gICAgU0VDVVJJVFlfTkFUSVZFX0RSRVAsCi0gICAgaW5wdXRfdG9rZW4gPyAmaW5fYnVmZl9kZXNjIDogTlVMTCwKLSAgICAwLAotICAgIG5lZ19jdHgtPmNvbnRleHQsCi0gICAgJm91dF9idWZmX2Rlc2MsCi0gICAgJmF0dHJzLAotICAgICZleHBpcnkpOwotCi0gIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gIGlmKEdTU19FUlJPUihuZWdfY3R4LT5zdGF0dXMpKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIGlmKG5lZ19jdHgtPnN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKLSAgICAgbmVnX2N0eC0+c3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkgewotICAgIG5lZ19jdHgtPnN0YXR1cyA9IHNfcFNlY0ZuLT5Db21wbGV0ZUF1dGhUb2tlbihuZWdfY3R4LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0X2J1ZmZfZGVzYyk7Ci0gICAgaWYoR1NTX0VSUk9SKG5lZ19jdHgtPnN0YXR1cykpCi0gICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKLSAgfQotCi0gIG5lZ19jdHgtPm91dHB1dF90b2tlbl9sZW5ndGggPSBvdXRfc2VjX2J1ZmYuY2JCdWZmZXI7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1DVVJMY29kZSBDdXJsX291dHB1dF9uZWdvdGlhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIHByb3h5KQotewotICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eCA9IHByb3h5PyZjb25uLT5kYXRhLT5zdGF0ZS5wcm94eW5lZzoKLSAgICAmY29ubi0+ZGF0YS0+c3RhdGUubmVnb3RpYXRlOwotICBjaGFyICplbmNvZGVkID0gTlVMTDsKLSAgc2l6ZV90IGxlbiA9IDA7Ci0gIGNoYXIgKnVzZXJwOwotICBDVVJMY29kZSBlcnJvcjsKLQotICBlcnJvciA9IEN1cmxfYmFzZTY0X2VuY29kZShjb25uLT5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopbmVnX2N0eC0+b3V0cHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdfY3R4LT5vdXRwdXRfdG9rZW5fbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RlZCwgJmxlbik7Ci0gIGlmKGVycm9yKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZighbGVuKQotICAgIHJldHVybiBDVVJMRV9SRU1PVEVfQUNDRVNTX0RFTklFRDsKLQotICB1c2VycCA9IGFwcmludGYoIiVzQXV0aG9yaXphdGlvbjogTmVnb3RpYXRlICVzXHJcbiIsIHByb3h5ID8gIlByb3h5LSIgOiAiIiwKLSAgICAgICAgICAgICAgICAgIGVuY29kZWQpOwotCi0gIGlmKHByb3h5KSB7Ci0gICAgQ3VybF9zYWZlZnJlZShjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2QpOwotICAgIGNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZCA9IHVzZXJwOwotICB9Ci0gIGVsc2UgewotICAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIudXNlcnB3ZCk7Ci0gICAgY29ubi0+YWxsb2NwdHIudXNlcnB3ZCA9IHVzZXJwOwotICB9Ci0gIGZyZWUoZW5jb2RlZCk7Ci0gIHJldHVybiAodXNlcnAgPT0gTlVMTCkgPyBDVVJMRV9PVVRfT0ZfTUVNT1JZIDogQ1VSTEVfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFudXAoc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ19jdHgpCi17Ci0gIC8qIEZyZWUgb3VyIHNlY3VyaXR5IGNvbnRleHQgKi8KLSAgaWYobmVnX2N0eC0+Y29udGV4dCkgewotICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQobmVnX2N0eC0+Y29udGV4dCk7Ci0gICAgZnJlZShuZWdfY3R4LT5jb250ZXh0KTsKLSAgICBuZWdfY3R4LT5jb250ZXh0ID0gTlVMTDsKLSAgfQotCi0gIC8qIEZyZWUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLwotICBpZihuZWdfY3R4LT5jcmVkZW50aWFscykgewotICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUobmVnX2N0eC0+Y3JlZGVudGlhbHMpOwotICAgIGZyZWUobmVnX2N0eC0+Y3JlZGVudGlhbHMpOwotICAgIG5lZ19jdHgtPmNyZWRlbnRpYWxzID0gTlVMTDsKLSAgfQotCi0gIC8qIEZyZWUgb3VyIGlkZW50aXR5ICovCi0gIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KG5lZ19jdHgtPnBfaWRlbnRpdHkpOwotICBuZWdfY3R4LT5wX2lkZW50aXR5ID0gTlVMTDsKLQotICAvKiBGcmVlIHRoZSBTUE4gYW5kIG91dHB1dCB0b2tlbiAqLwotICBDdXJsX3NhZmVmcmVlKG5lZ19jdHgtPnNlcnZlcl9uYW1lKTsKLSAgQ3VybF9zYWZlZnJlZShuZWdfY3R4LT5vdXRwdXRfdG9rZW4pOwotCi0gIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KLSAgbmVnX2N0eC0+dG9rZW5fbWF4ID0gMDsKLX0KLQotdm9pZCBDdXJsX2NsZWFudXBfbmVnb3RpYXRlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQotewotICBjbGVhbnVwKCZkYXRhLT5zdGF0ZS5uZWdvdGlhdGUpOwotICBjbGVhbnVwKCZkYXRhLT5zdGF0ZS5wcm94eW5lZyk7Ci19Ci0KLSNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0hUVFAgJiYgVVNFX1NQTkVHTyAqLwotCi0jZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAqLwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbnRsbS5jIGIvbGliL2h0dHBfbnRsbS5jCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIGxpYi9jdXJsX250bG0uYwpyZW5hbWUgdG8gbGliL2h0dHBfbnRsbS5jCmluZGV4IDFmM2JkY2MuLjkzNWRmMjUgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG0uYworKysgYi9saWIvaHR0cF9udGxtLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw3IEBACiAgKiBOVExNIGRldGFpbHM6CiAgKgogICogaHR0cDovL2RhdmVucG9ydC5zb3VyY2Vmb3JnZS5uZXQvbnRsbS5odG1sCi0gKiBodHRwOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKKyAqIGh0dHBzOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKICAqLwogCiAjZGVmaW5lIERFQlVHX01FIDAKQEAgLTM2LDEyICszNiwxMCBAQAogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgotI2luY2x1ZGUgImN1cmxfbnRsbS5oIgotI2luY2x1ZGUgImN1cmxfbnRsbV9tc2dzLmgiCisjaW5jbHVkZSAiaHR0cF9udGxtLmgiCiAjaW5jbHVkZSAiY3VybF9udGxtX3diLmgiCi0jaW5jbHVkZSAiY3VybF9zYXNsLmgiCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKICNpbmNsdWRlICJ1cmwuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCiAjaWYgZGVmaW5lZChVU0VfTlNTKQogI2luY2x1ZGUgInZ0bHMvbnNzZy5oIgpAQCAtNDksNyArNDcsOCBAQAogI2luY2x1ZGUgImN1cmxfc3NwaS5oIgogI2VuZGlmCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtNzcsMTQgKzc2LDE4IEBACiAgICAgICBoZWFkZXIrKzsKIAogICAgIGlmKCpoZWFkZXIpIHsKLSAgICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKGNvbm4tPmRhdGEsIGhlYWRlciwgbnRsbSk7CisgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShjb25uLT5kYXRhLCBoZWFkZXIsIG50bG0pOwogICAgICAgaWYocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICBudGxtLT5zdGF0ZSA9IE5UTE1TVEFURV9UWVBFMjsgLyogV2UgZ290IGEgdHlwZS0yIG1lc3NhZ2UgKi8KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICBpZihudGxtLT5zdGF0ZSA9PSBOVExNU1RBVEVfVFlQRTMpIHsKKyAgICAgIGlmKG50bG0tPnN0YXRlID09IE5UTE1TVEFURV9MQVNUKSB7CisgICAgICAgIGluZm9mKGNvbm4tPmRhdGEsICJOVExNIGF1dGggcmVzdGFydGVkXG4iKTsKKyAgICAgICAgQ3VybF9odHRwX250bG1fY2xlYW51cChjb25uKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYobnRsbS0+c3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUzKSB7CiAgICAgICAgIGluZm9mKGNvbm4tPmRhdGEsICJOVExNIGhhbmRzaGFrZSByZWplY3RlZFxuIik7CiAgICAgICAgIEN1cmxfaHR0cF9udGxtX2NsZWFudXAoY29ubik7CiAgICAgICAgIG50bG0tPnN0YXRlID0gTlRMTVNUQVRFX05PTkU7CkBAIC0xNjcsNyArMTcwLDcgQEAKICAgY2FzZSBOVExNU1RBVEVfVFlQRTE6CiAgIGRlZmF1bHQ6IC8qIGZvciB0aGUgd2VpcmQgY2FzZXMgd2UgKHJlKXN0YXJ0IGhlcmUgKi8KICAgICAvKiBDcmVhdGUgYSB0eXBlLTEgbWVzc2FnZSAqLwotICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKHVzZXJwLCBwYXNzd2RwLCBudGxtLCAmYmFzZTY0LAorICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKHVzZXJwLCBwYXNzd2RwLCBudGxtLCAmYmFzZTY0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pOwogICAgIGlmKHJlc3VsdCkKICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xODcsNyArMTkwLDcgQEAKIAogICBjYXNlIE5UTE1TVEFURV9UWVBFMjoKICAgICAvKiBXZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSB0eXBlLTIgbWVzc2FnZSwgY3JlYXRlIGEgdHlwZS0zIG1lc3NhZ2UgKi8KLSAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShjb25uLT5kYXRhLCB1c2VycCwgcGFzc3dkcCwKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShjb25uLT5kYXRhLCB1c2VycCwgcGFzc3dkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLCAmYmFzZTY0LCAmbGVuKTsKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjExLDYgKzIxNCw5IEBACiAgIGNhc2UgTlRMTVNUQVRFX1RZUEUzOgogICAgIC8qIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkLAogICAgICAqIGRvbid0IHNlbmQgYSBoZWFkZXIgaW4gZnV0dXJlIHJlcXVlc3RzICovCisgICAgbnRsbS0+c3RhdGUgPSBOVExNU1RBVEVfTEFTVDsKKyAgICAvKiBmYWxsLXRocm91Z2ggKi8KKyAgY2FzZSBOVExNU1RBVEVfTEFTVDoKICAgICBDdXJsX3NhZmVmcmVlKCphbGxvY3VzZXJwd2QpOwogICAgIGF1dGhwLT5kb25lID0gVFJVRTsKICAgICBicmVhazsKQEAgLTIyMSw4ICsyMjcsOCBAQAogCiB2b2lkIEN1cmxfaHR0cF9udGxtX2NsZWFudXAoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKCZjb25uLT5udGxtKTsKLSAgQ3VybF9zYXNsX250bG1fY2xlYW51cCgmY29ubi0+cHJveHludGxtKTsKKyAgQ3VybF9hdXRoX250bG1fY2xlYW51cCgmY29ubi0+bnRsbSk7CisgIEN1cmxfYXV0aF9udGxtX2NsZWFudXAoJmNvbm4tPnByb3h5bnRsbSk7CiAKICNpZiBkZWZpbmVkKE5UTE1fV0JfRU5BQkxFRCkKICAgQ3VybF9udGxtX3diX2NsZWFudXAoY29ubik7CmRpZmYgLS1naXQgYS9saWIvY3VybF9udGxtLmggYi9saWIvaHR0cF9udGxtLmgKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gbGliL2N1cmxfbnRsbS5oCnJlbmFtZSB0byBsaWIvaHR0cF9udGxtLmgKaW5kZXggOTQ3ZWFjMi4uZDE4NmJiZSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbnRsbS5oCisrKyBiL2xpYi9odHRwX250bG0uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9odHRwX3Byb3h5LmMgYi9saWIvaHR0cF9wcm94eS5jCmluZGV4IDVhYjk5MTUuLjgxNGM1NzIgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX3Byb3h5LmMKKysrIGIvbGliL2h0dHBfcHJveHkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1LDExICszNSwxMSBAQAogI2luY2x1ZGUgInByb2dyZXNzLmgiCiAjaW5jbHVkZSAibm9uLWFzY2lpLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybHguaCIKIAorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIENVUkxjb2RlIEN1cmxfcHJveHlfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCkBAIC00OSw2ICs0OSw4IEBACiAgICAgLyogZm9yIFtwcm90b2NvbF0gdHVubmVsZWQgdGhyb3VnaCBIVFRQIHByb3h5ICovCiAgICAgc3RydWN0IEhUVFAgaHR0cF9wcm94eTsKICAgICB2b2lkICpwcm90X3NhdmU7CisgICAgY29uc3QgY2hhciAqaG9zdG5hbWU7CisgICAgaW50IHJlbW90ZV9wb3J0OwogICAgIENVUkxjb2RlIHJlc3VsdDsKIAogICAgIC8qIEJMT0NLSU5HICovCkBAIC02Nyw4ICs2OSwxNiBAQAogICAgIG1lbXNldCgmaHR0cF9wcm94eSwgMCwgc2l6ZW9mKGh0dHBfcHJveHkpKTsKICAgICBjb25uLT5kYXRhLT5yZXEucHJvdG9wID0gJmh0dHBfcHJveHk7CiAgICAgY29ubmtlZXAoY29ubiwgIkhUVFAgcHJveHkgQ09OTkVDVCIpOwotICAgIHJlc3VsdCA9IEN1cmxfcHJveHlDT05ORUNUKGNvbm4sIEZJUlNUU09DS0VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgY29ubi0+cmVtb3RlX3BvcnQpOworICAgIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KQorICAgICAgaG9zdG5hbWUgPSBjb25uLT5jb25uX3RvX2hvc3QubmFtZTsKKyAgICBlbHNlCisgICAgICBob3N0bmFtZSA9IGNvbm4tPmhvc3QubmFtZTsKKyAgICBpZihjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCkKKyAgICAgIHJlbW90ZV9wb3J0ID0gY29ubi0+Y29ubl90b19wb3J0OworICAgIGVsc2UKKyAgICAgIHJlbW90ZV9wb3J0ID0gY29ubi0+cmVtb3RlX3BvcnQ7CisgICAgcmVzdWx0ID0gQ3VybF9wcm94eUNPTk5FQ1QoY29ubiwgRklSU1RTT0NLRVQsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9wb3J0LCBGQUxTRSk7CiAgICAgY29ubi0+ZGF0YS0+cmVxLnByb3RvcCA9IHByb3Rfc2F2ZTsKICAgICBpZihDVVJMRV9PSyAhPSByZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODUsMTIgKzk1LDE2IEBACiAgKiBDdXJsX3Byb3h5Q09OTkVDVCgpIHJlcXVpcmVzIHRoYXQgd2UncmUgY29ubmVjdGVkIHRvIGEgSFRUUCBwcm94eS4gVGhpcwogICogZnVuY3Rpb24gd2lsbCBpc3N1ZSB0aGUgbmVjZXNzYXJ5IGNvbW1hbmRzIHRvIGdldCBhIHNlYW1sZXNzIHR1bm5lbCB0aHJvdWdoCiAgKiB0aGlzIHByb3h5LiBBZnRlciB0aGF0LCB0aGUgc29ja2V0IGNhbiBiZSB1c2VkIGp1c3QgYXMgYSBub3JtYWwgc29ja2V0LgorICoKKyAqICdibG9ja2luZycgc2V0IHRvIFRSVUUgbWVhbnMgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgZG8gdGhlIGVudGlyZSBDT05ORUNUCisgKiArIHJlc3BvbnNlIGluIGEgYmxvY2tpbmcgZmFzaGlvbi4gU2hvdWxkIGJlIGF2b2lkZWQhCiAgKi8KIAogQ1VSTGNvZGUgQ3VybF9wcm94eUNPTk5FQ1Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibG9ja2luZykKIHsKICAgaW50IHN1YnZlcnNpb249MDsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE9Y29ubi0+ZGF0YTsKQEAgLTE0NiwxMyArMTYwLDE3IEBACiAKICAgICAgIGlmKCFyZXN1bHQpIHsKICAgICAgICAgY2hhciAqaG9zdD0oY2hhciAqKSIiOwotICAgICAgICBjb25zdCBjaGFyICpwcm94eWNvbm49IiI7CiAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJhZ2VudD0iIjsKICAgICAgICAgY29uc3QgY2hhciAqaHR0cCA9IChjb25uLT5wcm94eXR5cGUgPT0gQ1VSTFBST1hZX0hUVFBfMV8wKSA/CiAgICAgICAgICAgIjEuMCIgOiAiMS4xIjsKLSAgICAgICAgY2hhciAqaG9zdGhlYWRlcj0gLyogaG9zdDpwb3J0IHdpdGggSVB2NiBzdXBwb3J0ICovCi0gICAgICAgICAgYXByaW50ZigiJXMlcyVzOiVodSIsIGNvbm4tPmJpdHMuaXB2Nl9pcD8iWyI6IiIsCi0gICAgICAgICAgICAgICAgICBob3N0bmFtZSwgY29ubi0+Yml0cy5pcHY2X2lwPyJdIjoiIiwKKyAgICAgICAgYm9vbCBpcHY2X2lwID0gY29ubi0+Yml0cy5pcHY2X2lwOworICAgICAgICBjaGFyICpob3N0aGVhZGVyOworCisgICAgICAgIC8qIHRoZSBob3N0bmFtZSBtYXkgYmUgZGlmZmVyZW50ICovCisgICAgICAgIGlmKGhvc3RuYW1lICE9IGNvbm4tPmhvc3QubmFtZSkKKyAgICAgICAgICBpcHY2X2lwID0gKHN0cmNocihob3N0bmFtZSwgJzonKSAhPSBOVUxMKTsKKyAgICAgICAgaG9zdGhlYWRlcj0gLyogaG9zdDpwb3J0IHdpdGggSVB2NiBzdXBwb3J0ICovCisgICAgICAgICAgYXByaW50ZigiJXMlcyVzOiVodSIsIGlwdjZfaXA/IlsiOiIiLCBob3N0bmFtZSwgaXB2Nl9pcD8iXSI6IiIsCiAgICAgICAgICAgICAgICAgICByZW1vdGVfcG9ydCk7CiAgICAgICAgIGlmKCFob3N0aGVhZGVyKSB7CiAgICAgICAgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUocmVxX2J1ZmZlcik7CkBAIC0xNjcsOSArMTg1LDYgQEAKICAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZighQ3VybF9jaGVja1Byb3h5aGVhZGVycyhjb25uLCAiUHJveHktQ29ubmVjdGlvbjoiKSkKLSAgICAgICAgICBwcm94eWNvbm4gPSAiUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZVxyXG4iOwotCiAgICAgICAgIGlmKCFDdXJsX2NoZWNrUHJveHloZWFkZXJzKGNvbm4sICJVc2VyLUFnZW50OiIpICYmCiAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1VTRVJBR0VOVF0pCiAgICAgICAgICAgdXNlcmFnZW50ID0gY29ubi0+YWxsb2NwdHIudWFnZW50OwpAQCAtMTc5LDE1ICsxOTQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDT05ORUNUICVzIEhUVFAvJXNcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAgLyogSG9zdDogKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgIC8qIFByb3h5LUF1dGhvcml6YXRpb24gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgIC8qIFVzZXItQWdlbnQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIC8qIFByb3h5LUNvbm5lY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIC8qIFVzZXItQWdlbnQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RoZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZDoiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJhZ2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5Y29ubik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyYWdlbnQpOwogCiAgICAgICAgIGlmKGhvc3QgJiYgKmhvc3QpCiAgICAgICAgICAgZnJlZShob3N0KTsKQEAgLTIyNSwxMiArMjM4LDE0IEBACiAgICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKICAgICB9CiAKLSAgICBpZigwID09IEN1cmxfc29ja2V0X3JlYWR5KHR1bm5lbHNvY2tldCwgQ1VSTF9TT0NLRVRfQkFELCAwKSkKLSAgICAgIC8qIHJldHVybiBzbyB3ZSdsbCBiZSBjYWxsZWQgYWdhaW4gcG9sbGluZy1zdHlsZSAqLwotICAgICAgcmV0dXJuIENVUkxFX09LOwotICAgIGVsc2UgewotICAgICAgREVCVUdGKGluZm9mKGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIlJlYWQgcmVzcG9uc2UgaW1tZWRpYXRlbHkgZnJvbSBwcm94eSBDT05ORUNUXG4iKSk7CisgICAgaWYoIWJsb2NraW5nKSB7CisgICAgICBpZigwID09IEN1cmxfc29ja2V0X3JlYWR5KHR1bm5lbHNvY2tldCwgQ1VSTF9TT0NLRVRfQkFELCAwKSkKKyAgICAgICAgLyogcmV0dXJuIHNvIHdlJ2xsIGJlIGNhbGxlZCBhZ2FpbiBwb2xsaW5nLXN0eWxlICovCisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIGVsc2UgeworICAgICAgICBERUJVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICJSZWFkIHJlc3BvbnNlIGltbWVkaWF0ZWx5IGZyb20gcHJveHkgQ09OTkVDVFxuIikpOworICAgICAgfQogICAgIH0KIAogICAgIC8qIGF0IHRoaXMgcG9pbnQsIHRoZSB0dW5uZWxfY29ubmVjdGluZyBwaGFzZSBpcyBvdmVyLiAqLwpkaWZmIC0tZ2l0IGEvbGliL2h0dHBfcHJveHkuaCBiL2xpYi9odHRwX3Byb3h5LmgKaW5kZXggMmI1ZTljOS4uZmQwNDMzMCAxMDA2NDQKLS0tIGEvbGliL2h0dHBfcHJveHkuaAorKysgYi9saWIvaHR0cF9wcm94eS5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsNyArMjYsOCBAQAogLyogZnRwIGNhbiB1c2UgdGhpcyBhcyB3ZWxsICovCiBDVVJMY29kZSBDdXJsX3Byb3h5Q09OTkVDVChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHVubmVsc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsIGludCByZW1vdGVfcG9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSwgaW50IHJlbW90ZV9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibG9ja2luZyk7CiAKIC8qIERlZmF1bHQgcHJveHkgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi8KICNkZWZpbmUgUFJPWFlfVElNRU9VVCAoMzYwMCoxMDAwKQpAQCAtMzQsNyArMzUsNyBAQAogQ1VSTGNvZGUgQ3VybF9wcm94eV9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiAKICNlbHNlCi0jZGVmaW5lIEN1cmxfcHJveHlDT05ORUNUKHgseSx6LHcpIENVUkxFX05PVF9CVUlMVF9JTgorI2RlZmluZSBDdXJsX3Byb3h5Q09OTkVDVCh4LHkseix3LHYpIENVUkxFX05PVF9CVUlMVF9JTgogI2RlZmluZSBDdXJsX3Byb3h5X2Nvbm5lY3QoeCkgQ1VSTEVfT0sKICNlbmRpZgogCmRpZmYgLS1naXQgYS9saWIvaWRuX3dpbjMyLmMgYi9saWIvaWRuX3dpbjMyLmMKaW5kZXggYjM2OTcyMy4uOGRjMzAwYiAxMDA2NDQKLS0tIGEvbGliL2lkbl93aW4zMi5jCisrKyBiL2xpYi9pZG5fd2luMzIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDkgKzI5LDEwIEBACiAjaWZkZWYgVVNFX1dJTjMyX0lETgogCiAjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKLQogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorCisgIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKICNpZmRlZiBXQU5UX0lETl9QUk9UT1RZUEVTCkBAIC02NCw0NSArNjUsNDcgQEAKIAogI2RlZmluZSBJRE5fTUFYX0xFTkdUSCAyNTUKIAotaW50IGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpKGNvbnN0IGNoYXIgKmluLCBjaGFyICoqb3V0KTsKLWludCBjdXJsX3dpbjMyX2FzY2lpX3RvX2lkbihjb25zdCBjaGFyICppbiwgc2l6ZV90IGluX2xlbiwgY2hhciAqKm91dF91dGY4KTsKK2Jvb2wgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpOworYm9vbCBjdXJsX3dpbjMyX2FzY2lpX3RvX2lkbihjb25zdCBjaGFyICppbiwgY2hhciAqKm91dCk7CiAKLWludCBjdXJsX3dpbjMyX2lkbl90b19hc2NpaShjb25zdCBjaGFyICppbiwgY2hhciAqKm91dCkKK2Jvb2wgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpCiB7CisgIGJvb2wgc3VjY2VzcyA9IEZBTFNFOworCiAgIHdjaGFyX3QgKmluX3cgPSBDdXJsX2NvbnZlcnRfVVRGOF90b193Y2hhcihpbik7CiAgIGlmKGluX3cpIHsKICAgICB3Y2hhcl90IHB1bnljb2RlW0lETl9NQVhfTEVOR1RIXTsKLSAgICBpZihJZG5Ub0FzY2lpKDAsIGluX3csIC0xLCBwdW55Y29kZSwgSUROX01BWF9MRU5HVEgpID09IDApIHsKLSAgICAgIHdwcmludGYoTCJFUlJPUiAlZCBjb252ZXJ0aW5nIHRvIFB1bnljb2RlXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICBmcmVlKGluX3cpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGludCBjaGFycyA9IElkblRvQXNjaWkoMCwgaW5fdywgLTEsIHB1bnljb2RlLCBJRE5fTUFYX0xFTkdUSCk7CiAgICAgZnJlZShpbl93KTsKLQotICAgICpvdXQgPSBDdXJsX2NvbnZlcnRfd2NoYXJfdG9fVVRGOChwdW55Y29kZSk7Ci0gICAgaWYoISpvdXQpCi0gICAgICByZXR1cm4gMDsKKyAgICBpZihjaGFycykgeworICAgICAgKm91dCA9IEN1cmxfY29udmVydF93Y2hhcl90b19VVEY4KHB1bnljb2RlKTsKKyAgICAgIGlmKCpvdXQpCisgICAgICAgIHN1Y2Nlc3MgPSBUUlVFOworICAgIH0KICAgfQotICByZXR1cm4gMTsKKworICByZXR1cm4gc3VjY2VzczsKIH0KIAotaW50IGN1cmxfd2luMzJfYXNjaWlfdG9faWRuKGNvbnN0IGNoYXIgKmluLCBzaXplX3QgaW5fbGVuLCBjaGFyICoqb3V0X3V0ZjgpCitib29sIGN1cmxfd2luMzJfYXNjaWlfdG9faWRuKGNvbnN0IGNoYXIgKmluLCBjaGFyICoqb3V0KQogewotICAodm9pZClpbl9sZW47IC8qIHVudXNlZCAqLwotICBpZihpbikgewotICAgIFdDSEFSIHVuaWNvZGVbSUROX01BWF9MRU5HVEhdOworICBib29sIHN1Y2Nlc3MgPSBGQUxTRTsKIAotICAgIGlmKElkblRvVW5pY29kZSgwLCAod2NoYXJfdCAqKWluLCAtMSwgdW5pY29kZSwgSUROX01BWF9MRU5HVEgpID09IDApIHsKLSAgICAgIHdwcmludGYoTCJFUlJPUiAlZCBjb252ZXJ0aW5nIHRvIFB1bnljb2RlXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAqb3V0X3V0ZjggPSBDdXJsX2NvbnZlcnRfd2NoYXJfdG9fVVRGOCh1bmljb2RlKTsKLSAgICAgIGlmKCEqb3V0X3V0ZjgpCi0gICAgICAgIHJldHVybiAwOworICB3Y2hhcl90ICppbl93ID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fd2NoYXIoaW4pOworICBpZihpbl93KSB7CisgICAgc2l6ZV90IGluX2xlbiA9IHdjc2xlbihpbl93KSArIDE7CisgICAgd2NoYXJfdCB1bmljb2RlW0lETl9NQVhfTEVOR1RIXTsKKyAgICBpbnQgY2hhcnMgPSBJZG5Ub1VuaWNvZGUoMCwgaW5fdywgY3VybHhfdXp0b3NpKGluX2xlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIElETl9NQVhfTEVOR1RIKTsKKyAgICBmcmVlKGluX3cpOworICAgIGlmKGNoYXJzKSB7CisgICAgICAqb3V0ID0gQ3VybF9jb252ZXJ0X3djaGFyX3RvX1VURjgodW5pY29kZSk7CisgICAgICBpZigqb3V0KQorICAgICAgICBzdWNjZXNzID0gVFJVRTsKICAgICB9CiAgIH0KLSAgcmV0dXJuIDE7CisKKyAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKICNlbmRpZiAvKiBVU0VfV0lOMzJfSUROICovCmRpZmYgLS1naXQgYS9saWIvaWYyaXAuYyBiL2xpYi9pZjJpcC5jCmluZGV4IDZlNmY5NjkuLjJmOTJiMmQgMTAwNjQ0Ci0tLSBhL2xpYi9pZjJpcC5jCisrKyBiL2xpYi9pZjJpcC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTMsMTAgKzUzLDkgQEAKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJzdHJlcXVhbC5oIgogI2luY2x1ZGUgImlmMmlwLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTY4LDcgKzY3LDcgQEAKICAgKHZvaWQpIHNhOwogI2Vsc2UKICAgaWYoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewotICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYgKiBzYTYgPSAoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luNiAqKSBzYTsKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICogc2E2ID0gKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYgKikodm9pZCAqKSBzYTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogYiA9IHNhNi0+c2luNl9hZGRyLnM2X2FkZHI7CiAgICAgdW5zaWduZWQgc2hvcnQgdyA9ICh1bnNpZ25lZCBzaG9ydCkgKChiWzBdIDw8IDgpIHwgYlsxXSk7CiAKQEAgLTE1MiwxMSArMTUxLDEyIEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICBhZGRyID0gJigoc3RydWN0IHNvY2thZGRyX2luNiAqKWlmYWNlLT5pZmFfYWRkciktPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgYWRkciA9CisgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKSh2b2lkICopaWZhY2UtPmlmYV9hZGRyKS0+c2luNl9hZGRyOwogI2lmZGVmIEhBVkVfU09DS0FERFJfSU42X1NJTjZfU0NPUEVfSUQKICAgICAgICAgICAgICAgLyogSW5jbHVkZSB0aGUgc2NvcGUgb2YgdGhpcyBpbnRlcmZhY2UgYXMgcGFydCBvZiB0aGUgYWRkcmVzcyAqLwotICAgICAgICAgICAgICBzY29wZWlkID0KLSAgICAgICAgICAgICAgICAoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpZmFjZS0+aWZhX2FkZHIpLT5zaW42X3Njb3BlX2lkOworICAgICAgICAgICAgICBzY29wZWlkID0gKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKilpZmFjZS0+aWZhX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5zaW42X3Njb3BlX2lkOwogCiAgICAgICAgICAgICAgIC8qIElmIGdpdmVuLCBzY29wZSBpZCBzaG91bGQgbWF0Y2guICovCiAgICAgICAgICAgICAgIGlmKHJlbW90ZV9zY29wZV9pZCAmJiBzY29wZWlkICE9IHJlbW90ZV9zY29wZV9pZCkgewpAQCAtMTcxLDcgKzE3MSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgICAgYWRkciA9ICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWlmYWNlLT5pZmFfYWRkciktPnNpbl9hZGRyOworICAgICAgICAgICAgICBhZGRyID0KKyAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSh2b2lkICopaWZhY2UtPmlmYV9hZGRyKS0+c2luX2FkZHI7CiAgICAgICAgICAgICByZXMgPSBJRjJJUF9GT1VORDsKICAgICAgICAgICAgIGlwID0gKGNoYXIgKikgQ3VybF9pbmV0X250b3AoYWYsIGFkZHIsIGlwc3RyLCBzaXplb2YoaXBzdHIpKTsKICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiwgYnVmX3NpemUsICIlcyVzIiwgaXAsIHNjb3BlKTsKZGlmZiAtLWdpdCBhL2xpYi9pZjJpcC5oIGIvbGliL2lmMmlwLmgKaW5kZXggNzhiYjBiZC4uZjNhN2ZmMCAxMDA2NDQKLS0tIGEvbGliL2lmMmlwLmgKKysrIGIvbGliL2lmMmlwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaW1hcC5jIGIvbGliL2ltYXAuYwppbmRleCBlNmQ4M2YyLi4xNmJhNDAyIDEwMDY0NAotLS0gYS9saWIvaW1hcC5jCisrKyBiL2xpYi9pbWFwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04MCwxMCArODAsMTAgQEAKICNpbmNsdWRlICJyYXdzdHIuaCIKICNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiBMb2NhbCBBUEkgZnVuY3Rpb25zICovCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwogc3RhdGljIENVUkxjb2RlIGltYXBfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb3BoYXNlX2RvbmUpOwogc3RhdGljIENVUkxjb2RlIGltYXBfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwotc3RhdGljIGNoYXIgKmltYXBfYXRvbShjb25zdCBjaGFyICpzdHIpOworc3RhdGljIGNoYXIgKmltYXBfYXRvbShjb25zdCBjaGFyICpzdHIsIGJvb2wgZXNjYXBlX29ubHkpOwogc3RhdGljIENVUkxjb2RlIGltYXBfc2VuZGYoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiBzdGF0aWMgQ1VSTGNvZGUgaW1hcF9wYXJzZV91cmxfb3B0aW9ucyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogc3RhdGljIENVUkxjb2RlIGltYXBfcGFyc2VfdXJsX3BhdGgoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKQEAgLTIyNyw3ICsyMjcsMTEgQEAKICNpZmRlZiBVU0VfU1NMCiBzdGF0aWMgdm9pZCBpbWFwX3RvX2ltYXBzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKKyAgLyogQ2hhbmdlIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgKi8KICAgY29ubi0+aGFuZGxlciA9ICZDdXJsX2hhbmRsZXJfaW1hcHM7CisKKyAgLyogU2V0IHRoZSBjb25uZWN0aW9uJ3MgdXBncmFkZWQgdG8gVExTIGZsYWcgKi8KKyAgY29ubi0+dGxzX3VwZ3JhZGVkID0gVFJVRTsKIH0KICNlbHNlCiAjZGVmaW5lIGltYXBfdG9faW1hcHMoeCkgQ3VybF9ub3Bfc3RtdApAQCAtMzYwLDggKzM2NCw4IEBACiAgICAgIGEgc3BhY2UgYW5kIG9wdGlvbmFsbHkgc29tZSB0ZXh0IGFzIHBlciBSRkMtMzUwMSBmb3IgdGhlIEFVVEhFTlRJQ0FURSBhbmQKICAgICAgQVBQRU5EIGNvbW1hbmRzIGFuZCBhcyBvdXRsaW5lZCBpbiBTZWN0aW9uIDQuIEV4YW1wbGVzIG9mIFJGQy00OTU5IGJ1dAogICAgICBzb21lIGUtbWFpbCBzZXJ2ZXJzIGlnbm9yZSB0aGlzIGFuZCBvbmx5IHNlbmQgYSBzaW5nbGUgKyBpbnN0ZWFkLiAqLwotICBpZigobGVuID09IDMgJiYgIW1lbWNtcCgiKyIsIGxpbmUsIDEpKSB8fAotICAgICAobGVuID49IDIgJiYgIW1lbWNtcCgiKyAiLCBsaW5lLCAyKSkpIHsKKyAgaWYoaW1hcCAmJiAhaW1hcC0+Y3VzdG9tICYmICgobGVuID09IDMgJiYgIW1lbWNtcCgiKyIsIGxpbmUsIDEpKSB8fAorICAgICAobGVuID49IDIgJiYgIW1lbWNtcCgiKyAiLCBsaW5lLCAyKSkpKSB7CiAgICAgc3dpdGNoKGltYXBjLT5zdGF0ZSkgewogICAgICAgLyogU3RhdGVzIHdoaWNoIGFyZSBpbnRlcmVzdGVkIGluIGNvbnRpbnVhdGlvbiByZXNwb25zZXMgKi8KICAgICAgIGNhc2UgSU1BUF9BVVRIRU5USUNBVEU6CkBAIC01NDAsOCArNTQ0LDggQEAKICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGFyZSBpbiB0aGUgY29ycmVjdCBhdG9tIGZvcm1hdCAqLwotICB1c2VyID0gaW1hcF9hdG9tKGNvbm4tPnVzZXIpOwotICBwYXNzd2QgPSBpbWFwX2F0b20oY29ubi0+cGFzc3dkKTsKKyAgdXNlciA9IGltYXBfYXRvbShjb25uLT51c2VyLCBmYWxzZSk7CisgIHBhc3N3ZCA9IGltYXBfYXRvbShjb25uLT5wYXNzd2QsIGZhbHNlKTsKIAogICAvKiBTZW5kIHRoZSBMT0dJTiBjb21tYW5kICovCiAgIHJlc3VsdCA9IGltYXBfc2VuZGYoY29ubiwgIkxPR0lOICVzICVzIiwgdXNlciA/IHVzZXIgOiAiIiwKQEAgLTY1Myw4ICs2NTcsOCBAQAogICAgIHJlc3VsdCA9IGltYXBfc2VuZGYoY29ubiwgIiVzJXMiLCBpbWFwLT5jdXN0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICBpbWFwLT5jdXN0b21fcGFyYW1zID8gaW1hcC0+Y3VzdG9tX3BhcmFtcyA6ICIiKTsKICAgZWxzZSB7Ci0gICAgLyogTWFrZSBzdXJlIHRoZSBtYWlsYm94IGlzIGluIHRoZSBjb3JyZWN0IGF0b20gZm9ybWF0ICovCi0gICAgbWFpbGJveCA9IGltYXBfYXRvbShpbWFwLT5tYWlsYm94ID8gaW1hcC0+bWFpbGJveCA6ICIiKTsKKyAgICAvKiBNYWtlIHN1cmUgdGhlIG1haWxib3ggaXMgaW4gdGhlIGNvcnJlY3QgYXRvbSBmb3JtYXQgaWYgbmVjZXNzYXJ5ICovCisgICAgbWFpbGJveCA9IGltYXAtPm1haWxib3ggPyBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCwgdHJ1ZSkgOiBzdHJkdXAoIiIpOwogICAgIGlmKCFtYWlsYm94KQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKQEAgLTY5NSw3ICs2OTksNyBAQAogICB9CiAKICAgLyogTWFrZSBzdXJlIHRoZSBtYWlsYm94IGlzIGluIHRoZSBjb3JyZWN0IGF0b20gZm9ybWF0ICovCi0gIG1haWxib3ggPSBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCk7CisgIG1haWxib3ggPSBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCwgZmFsc2UpOwogICBpZighbWFpbGJveCkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIApAQCAtNzY5LDcgKzc3Myw3IEBACiAgIH0KIAogICAvKiBNYWtlIHN1cmUgdGhlIG1haWxib3ggaXMgaW4gdGhlIGNvcnJlY3QgYXRvbSBmb3JtYXQgKi8KLSAgbWFpbGJveCA9IGltYXBfYXRvbShpbWFwLT5tYWlsYm94KTsKKyAgbWFpbGJveCA9IGltYXBfYXRvbShpbWFwLT5tYWlsYm94LCBmYWxzZSk7CiAgIGlmKCFtYWlsYm94KQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCkBAIC05MDYsOCArOTEwLDggQEAKICAgICAgICAgd29yZGxlbiAtPSA1OwogCiAgICAgICAgIC8qIFRlc3QgdGhlIHdvcmQgZm9yIGEgbWF0Y2hpbmcgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtICovCi0gICAgICAgIGlmKChtZWNoYml0ID0gQ3VybF9zYXNsX2RlY29kZV9tZWNoKGxpbmUsIHdvcmRsZW4sICZsbGVuKSkgJiYKLSAgICAgICAgICAgbGxlbiA9PSB3b3JkbGVuKQorICAgICAgICBtZWNoYml0ID0gQ3VybF9zYXNsX2RlY29kZV9tZWNoKGxpbmUsIHdvcmRsZW4sICZsbGVuKTsKKyAgICAgICAgaWYobWVjaGJpdCAmJiBsbGVuID09IHdvcmRsZW4pCiAgICAgICAgICAgaW1hcGMtPnNhc2wuYXV0aG1lY2hzIHw9IG1lY2hiaXQ7CiAgICAgICB9CiAKQEAgLTEwMTYsOSArMTAyMCwxMCBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBGb3IgTElTVCByZXNwb25zZXMgKi8KLXN0YXRpYyBDVVJMY29kZSBpbWFwX3N0YXRlX2xpc3RfcmVzcChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBpbWFwY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFwc3RhdGUgaW5zdGF0ZSkKKy8qIEZvciBMSVNUIGFuZCBTRUFSQ0ggcmVzcG9uc2VzICovCitzdGF0aWMgQ1VSTGNvZGUgaW1hcF9zdGF0ZV9saXN0c2VhcmNoX3Jlc3Aoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbWFwY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFwc3RhdGUgaW5zdGF0ZSkKIHsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIGNoYXIgKmxpbmUgPSBjb25uLT5kYXRhLT5zdGF0ZS5idWZmZXI7CkBAIC0xMDk4LDcgKzExMDMsNyBAQAogICBzdHJ1Y3QgcGluZ3BvbmcgKnBwID0gJmltYXBjLT5wcDsKICAgY29uc3QgY2hhciAqcHRyID0gZGF0YS0+c3RhdGUuYnVmZmVyOwogICBib29sIHBhcnNlZCA9IEZBTFNFOwotICBjdXJsX29mZl90IHNpemU7CisgIGN1cmxfb2ZmX3Qgc2l6ZSA9IDA7CiAKICAgKHZvaWQpaW5zdGF0ZTsgLyogbm8gdXNlIGZvciB0aGlzIHlldCAqLwogCkBAIC0xMjQ1LDMxICsxMjUwLDYgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLyogRm9yIFNFQVJDSCByZXNwb25zZXMgKi8KLXN0YXRpYyBDVVJMY29kZSBpbWFwX3N0YXRlX3NlYXJjaF9yZXNwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IGltYXBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcHN0YXRlIGluc3RhdGUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBjaGFyICpsaW5lID0gY29ubi0+ZGF0YS0+c3RhdGUuYnVmZmVyOwotICBzaXplX3QgbGVuID0gc3RybGVuKGxpbmUpOwotCi0gICh2b2lkKWluc3RhdGU7IC8qIE5vIHVzZSBmb3IgdGhpcyB5ZXQgKi8KLQotICBpZihpbWFwY29kZSA9PSAnKicpIHsKLSAgICAvKiBUZW1wb3JhcmlseSBhZGQgdGhlIExGIGNoYXJhY3RlciBiYWNrIGFuZCBzZW5kIGFzIGJvZHkgdG8gdGhlIGNsaWVudCAqLwotICAgIGxpbmVbbGVuXSA9ICdcbic7Ci0gICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgbGluZSwgbGVuICsgMSk7Ci0gICAgbGluZVtsZW5dID0gJ1wwJzsKLSAgfQotICBlbHNlIGlmKGltYXBjb2RlICE9ICdPJykKLSAgICByZXN1bHQgPSBDVVJMRV9RVU9URV9FUlJPUjsgLyogVE9ETzogRml4IGVycm9yIGNvZGUgKi8KLSAgZWxzZQotICAgIC8qIEVuZCBvZiBETyBwaGFzZSAqLwotICAgIHN0YXRlKGNvbm4sIElNQVBfU1RPUCk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIENVUkxjb2RlIGltYXBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwpAQCAtMTMyMyw3ICsxMzAzLDcgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJTUFQX0xJU1Q6Ci0gICAgICByZXN1bHQgPSBpbWFwX3N0YXRlX2xpc3RfcmVzcChjb25uLCBpbWFwY29kZSwgaW1hcGMtPnN0YXRlKTsKKyAgICAgIHJlc3VsdCA9IGltYXBfc3RhdGVfbGlzdHNlYXJjaF9yZXNwKGNvbm4sIGltYXBjb2RlLCBpbWFwYy0+c3RhdGUpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElNQVBfU0VMRUNUOgpAQCAtMTM0Nyw3ICsxMzI3LDcgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJTUFQX1NFQVJDSDoKLSAgICAgIHJlc3VsdCA9IGltYXBfc3RhdGVfc2VhcmNoX3Jlc3AoY29ubiwgaW1hcGNvZGUsIGltYXBjLT5zdGF0ZSk7CisgICAgICByZXN1bHQgPSBpbWFwX3N0YXRlX2xpc3RzZWFyY2hfcmVzcChjb25uLCBpbWFwY29kZSwgaW1hcGMtPnN0YXRlKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJTUFQX0xPR09VVDoKQEAgLTE0ODIsMTAgKzE0NjIsNiBAQAogICAodm9pZClwcmVtYXR1cmU7CiAKICAgaWYoIWltYXApCi0gICAgLyogV2hlbiB0aGUgZWFzeSBoYW5kbGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2Ugd2hpbGUgbGliY3VybAotICAgICAgIGlzIHN0aWxsIHRyeWluZyB0byByZXNvbHZlIHRoZSBob3N0IG5hbWUsIHRoZSBJTUFQIHN0cnVjdCBpcyBub3QgeWV0Ci0gICAgICAgaW5pdGlhbGl6ZWQuIEhvd2V2ZXIsIHRoZSByZW1vdmFsIGFjdGlvbiBjYWxscyBDdXJsX2RvbmUoKSB3aGljaCBpbgotICAgICAgIHR1cm4gY2FsbHMgdGhpcyBmdW5jdGlvbiwgc28gd2Ugc2ltcGx5IHJldHVybiBzdWNjZXNzLiAqLwogICAgIHJldHVybiBDVVJMRV9PSzsKIAogICBpZihzdGF0dXMpIHsKQEAgLTE1MDgsOCArMTQ4NCw3IEBACiAKICAgICAgICBUT0RPOiB3aGVuIHRoZSBtdWx0aSBpbnRlcmZhY2UgaXMgdXNlZCwgdGhpcyBfcmVhbGx5XyBzaG91bGQgYmUgdXNpbmcKICAgICAgICB0aGUgaW1hcF9tdWx0aV9zdGF0ZW1hY2ggZnVuY3Rpb24gYnV0IHdlIGhhdmUgbm8gZ2VuZXJhbCBzdXBwb3J0IGZvcgotICAgICAgIG5vbi1ibG9ja2luZyBET05FIG9wZXJhdGlvbnMsIG5vdCBpbiB0aGUgbXVsdGkgc3RhdGUgbWFjaGluZSBhbmQgd2l0aAotICAgICAgIEN1cmxfZG9uZSgpIGludm9rZXMgb24gc2V2ZXJhbCBwbGFjZXMgaW4gdGhlIGNvZGUhCisgICAgICAgbm9uLWJsb2NraW5nIERPTkUgb3BlcmF0aW9ucyEKICAgICAqLwogICAgIGlmKCFyZXN1bHQpCiAgICAgICByZXN1bHQgPSBpbWFwX2Jsb2NrX3N0YXRlbWFjaChjb25uKTsKQEAgLTE3MzgsNiArMTcxMywxMCBAQAogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIAorICAvKiBDbGVhciB0aGUgVExTIHVwZ3JhZGVkIGZsYWcgKi8KKyAgY29ubi0+dGxzX3VwZ3JhZGVkID0gRkFMU0U7CisKKyAgLyogU2V0IHVwIHRoZSBwcm94eSBpZiBuZWNlc3NhcnkgKi8KICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkgJiYgIWRhdGEtPnNldC50dW5uZWxfdGhydV9odHRwcHJveHkpIHsKICAgICAvKiBVbmxlc3Mgd2UgaGF2ZSBhc2tlZCB0byB0dW5uZWwgSU1BUCBvcGVyYXRpb25zIHRocm91Z2ggdGhlIHByb3h5LCB3ZQogICAgICAgIHN3aXRjaCBhbmQgdXNlIEhUVFAgb3BlcmF0aW9ucyBvbmx5ICovCkBAIC0xODE1LDM4ICsxNzk0LDQ5IEBACiAgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIG5lZWRzIHRvIGJlIGZyZWVkLgogICoKICAqLwotc3RhdGljIGNoYXIgKmltYXBfYXRvbShjb25zdCBjaGFyICpzdHIpCitzdGF0aWMgY2hhciAqaW1hcF9hdG9tKGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBlc2NhcGVfb25seSkKIHsKKyAgLyogIWNoZWNrc3JjISBkaXNhYmxlIFBBUkVOQlJBQ0UgMSAqLworICBjb25zdCBjaGFyIGF0b21fc3BlY2lhbHNbXSA9ICIoKXsgJSpdIjsKICAgY29uc3QgY2hhciAqcDE7CiAgIGNoYXIgKnAyOwogICBzaXplX3QgYmFja3NwX2NvdW50ID0gMDsKICAgc2l6ZV90IHF1b3RlX2NvdW50ID0gMDsKLSAgYm9vbCBzcGFjZV9leGlzdHMgPSBGQUxTRTsKKyAgYm9vbCBvdGhlcnNfZXhpc3RzID0gRkFMU0U7CiAgIHNpemVfdCBuZXdsZW4gPSAwOwogICBjaGFyICpuZXdzdHIgPSBOVUxMOwogCiAgIGlmKCFzdHIpCiAgICAgcmV0dXJuIE5VTEw7CiAKLSAgLyogQ291bnQgYW55IHVuZXNjYXBlZCBjaGFyYWN0ZXJzICovCisgIC8qIExvb2sgZm9yICJhdG9tLXNwZWNpYWxzIiwgY291bnRpbmcgdGhlIGJhY2tzbGFzaCBhbmQgcXVvdGUgY2hhcmFjdGVycyBhcworICAgICB0aGVzZSB3aWxsIG5lZWQgZXNjYXBwaW5nICovCiAgIHAxID0gc3RyOwogICB3aGlsZSgqcDEpIHsKICAgICBpZigqcDEgPT0gJ1xcJykKICAgICAgIGJhY2tzcF9jb3VudCsrOwogICAgIGVsc2UgaWYoKnAxID09ICciJykKICAgICAgIHF1b3RlX2NvdW50Kys7Ci0gICAgZWxzZSBpZigqcDEgPT0gJyAnKQotICAgICAgc3BhY2VfZXhpc3RzID0gVFJVRTsKKyAgICBlbHNlIGlmKCFlc2NhcGVfb25seSkgeworICAgICAgY29uc3QgY2hhciAqcDMgPSBhdG9tX3NwZWNpYWxzOworCisgICAgICB3aGlsZSgqcDMgJiYgIW90aGVyc19leGlzdHMpIHsKKyAgICAgICAgaWYoKnAxID09ICpwMykKKyAgICAgICAgICBvdGhlcnNfZXhpc3RzID0gVFJVRTsKKworICAgICAgICBwMysrOworICAgICAgfQorICAgIH0KIAogICAgIHAxKys7CiAgIH0KIAotICAvKiBEb2VzIHRoZSBpbnB1dCBjb250YWluIGFueSB1bmVzY2FwZWQgY2hhcmFjdGVycz8gKi8KLSAgaWYoIWJhY2tzcF9jb3VudCAmJiAhcXVvdGVfY291bnQgJiYgIXNwYWNlX2V4aXN0cykKKyAgLyogRG9lcyB0aGUgaW5wdXQgY29udGFpbiBhbnkgImF0b20tc3BlY2lhbCIgY2hhcmFjdGVycz8gKi8KKyAgaWYoIWJhY2tzcF9jb3VudCAmJiAhcXVvdGVfY291bnQgJiYgIW90aGVyc19leGlzdHMpCiAgICAgcmV0dXJuIHN0cmR1cChzdHIpOwogCiAgIC8qIENhbGN1bGF0ZSB0aGUgbmV3IHN0cmluZyBsZW5ndGggKi8KLSAgbmV3bGVuID0gc3RybGVuKHN0cikgKyBiYWNrc3BfY291bnQgKyBxdW90ZV9jb3VudCArIChzcGFjZV9leGlzdHMgPyAyIDogMCk7CisgIG5ld2xlbiA9IHN0cmxlbihzdHIpICsgYmFja3NwX2NvdW50ICsgcXVvdGVfY291bnQgKyAob3RoZXJzX2V4aXN0cyA/IDIgOiAwKTsKIAogICAvKiBBbGxvY2F0ZSB0aGUgbmV3IHN0cmluZyAqLwogICBuZXdzdHIgPSAoY2hhciAqKSBtYWxsb2MoKG5ld2xlbiArIDEpICogc2l6ZW9mKGNoYXIpKTsKQEAgLTE4NTUsNyArMTg0NSw3IEBACiAKICAgLyogU3Vycm91bmQgdGhlIHN0cmluZyBpbiBxdW90ZXMgaWYgbmVjZXNzYXJ5ICovCiAgIHAyID0gbmV3c3RyOwotICBpZihzcGFjZV9leGlzdHMpIHsKKyAgaWYob3RoZXJzX2V4aXN0cykgewogICAgIG5ld3N0clswXSA9ICciJzsKICAgICBuZXdzdHJbbmV3bGVuIC0gMV0gPSAnIic7CiAgICAgcDIrKzsKZGlmZiAtLWdpdCBhL2xpYi9pbWFwLmggYi9saWIvaW1hcC5oCmluZGV4IDMxODlkYWEuLmU2YjliODkgMTAwNjQ0Ci0tLSBhL2xpYi9pbWFwLmgKKysrIGIvbGliL2ltYXAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9pbmV0X250b3AuYyBiL2xpYi9pbmV0X250b3AuYwppbmRleCBkYTlhM2FiLi40MTYwMDVjIDEwMDY0NAotLS0gYS9saWIvaW5ldF9udG9wLmMKKysrIGIvbGliL2luZXRfbnRvcC5jCkBAIC0zMiw5ICszMiw4IEBACiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KICNpbmNsdWRlICJpbmV0X250b3AuaCIKKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCiAjZGVmaW5lIElONkFERFJTWiAgICAgICAxNgogI2RlZmluZSBJTkFERFJTWiAgICAgICAgIDQKQEAgLTU3LDEwICs1NiwxMCBAQAogCiAgIHRtcFswXSA9ICdcMCc7CiAgICh2b2lkKXNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlZC4lZC4lZC4lZCIsCi0gICAgICAgICAgKChpbnQpKCh1bnNpZ25lZCBjaGFyKXNyY1swXSkpICYgMHhmZiwKLSAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzFdKSkgJiAweGZmLAotICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbMl0pKSAmIDB4ZmYsCi0gICAgICAgICAgKChpbnQpKCh1bnNpZ25lZCBjaGFyKXNyY1szXSkpICYgMHhmZik7CisgICAgICAgICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbMF0pKSAmIDB4ZmYsCisgICAgICAgICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbMV0pKSAmIDB4ZmYsCisgICAgICAgICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbMl0pKSAmIDB4ZmYsCisgICAgICAgICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbM10pKSAmIDB4ZmYpOwogCiAgIGxlbiA9IHN0cmxlbih0bXApOwogICBpZihsZW4gPT0gMCB8fCBsZW4gPj0gc2l6ZSkgewpkaWZmIC0tZ2l0IGEvbGliL2luZXRfbnRvcC5oIGIvbGliL2luZXRfbnRvcC5oCmluZGV4IGNjNGJkYmIuLjlmNDQ2MTIgMTAwNjQ0Ci0tLSBhL2xpYi9pbmV0X250b3AuaAorKysgYi9saWIvaW5ldF9udG9wLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaW5ldF9wdG9uLmMgYi9saWIvaW5ldF9wdG9uLmMKaW5kZXggZjUwYjM2NS4uY2Y4Yjg4YSAxMDA2NDQKLS0tIGEvbGliL2luZXRfcHRvbi5jCisrKyBiL2xpYi9pbmV0X3B0b24uYwpAQCAtMTg4LDggKzE4OCw4IEBACiAgICAgICB9CiAgICAgICBpZih0cCArIElOVDE2U1ogPiBlbmRwKQogICAgICAgICByZXR1cm4gKDApOwotICAgICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgKHZhbCA+PiA4KSAmIDB4ZmY7Ci0gICAgICAqdHArKyA9ICh1bnNpZ25lZCBjaGFyKSB2YWwgJiAweGZmOworICAgICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgKCh2YWwgPj4gOCkgJiAweGZmKTsKKyAgICAgICp0cCsrID0gKHVuc2lnbmVkIGNoYXIpICh2YWwgJiAweGZmKTsKICAgICAgIHNhd194ZGlnaXQgPSAwOwogICAgICAgdmFsID0gMDsKICAgICAgIGNvbnRpbnVlOwpAQCAtMjA1LDggKzIwNSw4IEBACiAgIGlmKHNhd194ZGlnaXQpIHsKICAgICBpZih0cCArIElOVDE2U1ogPiBlbmRwKQogICAgICAgcmV0dXJuICgwKTsKLSAgICAqdHArKyA9ICh1bnNpZ25lZCBjaGFyKSAodmFsID4+IDgpICYgMHhmZjsKLSAgICAqdHArKyA9ICh1bnNpZ25lZCBjaGFyKSB2YWwgJiAweGZmOworICAgICp0cCsrID0gKHVuc2lnbmVkIGNoYXIpICgodmFsID4+IDgpICYgMHhmZik7CisgICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgKHZhbCAmIDB4ZmYpOwogICB9CiAgIGlmKGNvbG9ucCAhPSBOVUxMKSB7CiAgICAgLyoKZGlmZiAtLWdpdCBhL2xpYi9pbmV0X3B0b24uaCBiL2xpYi9pbmV0X3B0b24uaAppbmRleCA0M2M1NDkxLi45MTg4ZDk1IDEwMDY0NAotLS0gYS9saWIvaW5ldF9wdG9uLmgKKysrIGIvbGliL2luZXRfcHRvbi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2tyYjUuYyBiL2xpYi9rcmI1LmMKaW5kZXggYWQ3ZGQ2Ny4uMGIxNDZlMCAxMDA2NDQKLS0tIGEvbGliL2tyYjUuYworKysgYi9saWIva3JiNS5jCkBAIC0yLDcgKzIsNyBAQAogICoKICAqIENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSBLdW5nbGlnYSBUZWtuaXNrYSBI9mdza29sYW4KICAqIChSb3lhbCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgU3RvY2tob2xtLCBTd2VkZW4pLgotICogQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxNSBEYW5pZWwgU3RlbmJlcmcKKyAqIENvcHlyaWdodCAoYykgMjAwNCAtIDIwMTYgRGFuaWVsIFN0ZW5iZXJnCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDcsMTUgKzQ3LDEyIEBACiAjaW5jbHVkZSAic2VuZGYuaCIKICNpbmNsdWRlICJjdXJsX3NlYy5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCi0jZGVmaW5lIExPQ0FMX0FERFIgKCZjb25uLT5sb2NhbF9hZGRyKQotI2RlZmluZSBSRU1PVEVfQUREUiBjb25uLT5pcF9hZGRyLT5haV9hZGRyCi0KIHN0YXRpYyBpbnQKIGtyYjVfaW5pdCh2b2lkICphcHBfZGF0YSkKIHsKQEAgLTE1NSwyNiArMTUyLDI5IEBACiAgIGN1cmxfc29ja2xlbl90IGwgPSBzaXplb2YoY29ubi0+bG9jYWxfYWRkcik7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKICAgQ1VSTGNvZGUgcmVzdWx0OwotICBjb25zdCBjaGFyICpzZXJ2aWNlID0gImZ0cCIsICpzcnZfaG9zdCA9ICJob3N0IjsKKyAgY29uc3QgY2hhciAqc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAiZnRwIjsKKyAgY29uc3QgY2hhciAqc3J2X2hvc3QgPSAiaG9zdCI7CiAgIGdzc19idWZmZXJfZGVzYyBpbnB1dF9idWZmZXIsIG91dHB1dF9idWZmZXIsIF9nc3NyZXNwLCAqZ3NzcmVzcDsKICAgT01fdWludDMyIG1haiwgbWluOwogICBnc3NfbmFtZV90IGdzc25hbWU7CiAgIGdzc19jdHhfaWRfdCAqY29udGV4dCA9IGFwcF9kYXRhOwogICBzdHJ1Y3QgZ3NzX2NoYW5uZWxfYmluZGluZ3Nfc3RydWN0IGNoYW47CiAgIHNpemVfdCBiYXNlNjRfc3ogPSAwOworICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKipyZW1vdGVfYWRkciA9CisgICAgKHN0cnVjdCBzb2NrYWRkcl9pbiAqKikmY29ubi0+aXBfYWRkci0+YWlfYWRkcjsKIAogICBpZihnZXRzb2NrbmFtZShjb25uLT5zb2NrW0ZJUlNUU09DS0VUXSwKLSAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKUxPQ0FMX0FERFIsICZsKSA8IDApCisgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmY29ubi0+bG9jYWxfYWRkciwgJmwpIDwgMCkKICAgICBwZXJyb3IoImdldHNvY2tuYW1lKCkiKTsKIAogICBjaGFuLmluaXRpYXRvcl9hZGRydHlwZSA9IEdTU19DX0FGX0lORVQ7CiAgIGNoYW4uaW5pdGlhdG9yX2FkZHJlc3MubGVuZ3RoID0gbCAtIDQ7Ci0gIGNoYW4uaW5pdGlhdG9yX2FkZHJlc3MudmFsdWUgPQotICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKUxPQ0FMX0FERFIpLT5zaW5fYWRkci5zX2FkZHI7CisgIGNoYW4uaW5pdGlhdG9yX2FkZHJlc3MudmFsdWUgPSAmY29ubi0+bG9jYWxfYWRkci5zaW5fYWRkci5zX2FkZHI7CiAgIGNoYW4uYWNjZXB0b3JfYWRkcnR5cGUgPSBHU1NfQ19BRl9JTkVUOwogICBjaGFuLmFjY2VwdG9yX2FkZHJlc3MubGVuZ3RoID0gbCAtIDQ7Ci0gIGNoYW4uYWNjZXB0b3JfYWRkcmVzcy52YWx1ZSA9Ci0gICAgJigoc3RydWN0IHNvY2thZGRyX2luICopUkVNT1RFX0FERFIpLT5zaW5fYWRkci5zX2FkZHI7CisgIGNoYW4uYWNjZXB0b3JfYWRkcmVzcy52YWx1ZSA9ICYoKnJlbW90ZV9hZGRyKS0+c2luX2FkZHIuc19hZGRyOwogICBjaGFuLmFwcGxpY2F0aW9uX2RhdGEubGVuZ3RoID0gMDsKICAgY2hhbi5hcHBsaWNhdGlvbl9kYXRhLnZhbHVlID0gTlVMTDsKIApAQCAtMTgzLDkgKzE4Myw5IEBACiAgICAgLyogdGhpcyByZWFsbHkgc2hvdWxkbid0IGJlIHJlcGVhdGVkIGhlcmUsIGJ1dCBjYW4ndCBoZWxwIGl0ICovCiAgICAgaWYoc2VydmljZSA9PSBzcnZfaG9zdCkgewogICAgICAgcmVzdWx0ID0gQ3VybF9mdHBzZW5kZihjb25uLCAiQVVUSCBHU1NBUEkiKTsKLQogICAgICAgaWYocmVzdWx0KQogICAgICAgICByZXR1cm4gLTI7CisKICAgICAgIGlmKEN1cmxfR2V0RlRQUmVzcG9uc2UoJm5yZWFkLCBjb25uLCBOVUxMKSkKICAgICAgICAgcmV0dXJuIC0xOwogCmRpZmYgLS1naXQgYS9saWIvbGRhcC5jIGIvbGliL2xkYXAuYwppbmRleCA0ZDkxMjgyLi4xZjFmNzJmIDEwMDY0NAotLS0gYS9saWIvbGRhcC5jCisrKyBiL2xpYi9sZGFwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03Niw5ICs3Niw4IEBACiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJyYXdzdHIuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMjI4LDcgKzIyNyw3IEBACiAgICAgZ290byBxdWl0OwogICB9CiAKLSAgLyogR2V0IHRoZSBVUkwgc2NoZW1lICggZWl0aGVyIGxkYXAgb3IgbGRhcHMgKSAqLworICAvKiBHZXQgdGhlIFVSTCBzY2hlbWUgKGVpdGhlciBsZGFwIG9yIGxkYXBzKSAqLwogICBpZihjb25uLT5naXZlbi0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkKICAgICBsZGFwX3NzbCA9IDE7CiAgIGluZm9mKGRhdGEsICJMREFQIGxvY2FsOiB0cnlpbmcgdG8gZXN0YWJsaXNoICVzIGNvbm5lY3Rpb25cbiIsCkBAIC03MTcsNyArNzE2LDcgQEAKICAgICAgcmV0dXJuIExEQVBfU0NPUEVfQkFTRTsKICAgaWYoc3RyZXF1YWwocCwgInN1YiIpKQogICAgICByZXR1cm4gTERBUF9TQ09QRV9TVUJUUkVFOwotICBpZihzdHJlcXVhbCggcCwgInN1YnRyZWUiKSkKKyAgaWYoc3RyZXF1YWwocCwgInN1YnRyZWUiKSkKICAgICAgcmV0dXJuIExEQVBfU0NPUEVfU1VCVFJFRTsKICAgcmV0dXJuICgtMSk7CiB9CmRpZmYgLS1naXQgYS9saWIvbGliY3VybC5kZWYgYi9saWIvbGliY3VybC5kZWYKaW5kZXggZTA1MTk3MC4uZTAxMjU1NyAxMDA2NDQKLS0tIGEvbGliL2xpYmN1cmwuZGVmCisrKyBiL2xpYi9saWJjdXJsLmRlZgpAQCAtNCw3ICs0LDcgQEAKIAogTElCUkFSWQkJTElCQ1VSTAogCi07REVTQ1JJUFRJT04JJ2N1cmwgbGliY3VybCAtIGh0dHA6Ly9jdXJsLmhheHguc2UnCis7REVTQ1JJUFRJT04JJ2N1cmwgbGliY3VybCAtIGh0dHBzOi8vY3VybC5oYXh4LnNlJwogCiBFWFBPUlRTCiAJY3VybF9lYXN5X2NsZWFudXAgQCAxIDsKZGlmZiAtLWdpdCBhL2xpYi9saWJjdXJsLnJjIGIvbGliL2xpYmN1cmwucmMKaW5kZXggNDdiOTQ0YS4uNTBiMzY1ZCAxMDA2NDQKLS0tIGEvbGliL2xpYmN1cmwucmMKKysrIGIvbGliL2xpYmN1cmwucmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsNyArNDQsNyBAQAogICBCRUdJTgogICAgIEJMT0NLICIwNDA5MDRiMCIKICAgICBCRUdJTgotICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgICAgICAiVGhlIGNVUkwgbGlicmFyeSwgaHR0cDovL2N1cmwuaGF4eC5zZS9cMCIKKyAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICAgICAgIlRoZSBjVVJMIGxpYnJhcnksIGh0dHBzOi8vY3VybC5oYXh4LnNlL1wwIgogICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICAibGliY3VybCBTaGFyZWQgTGlicmFyeVwwIgogICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgICAgICBMSUJDVVJMX1ZFUlNJT04gIlwwIgogICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICAgICAibGliY3VybFwwIgpAQCAtNTIsNyArNTIsNyBAQAogICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgICAgICAiVGhlIGNVUkwgbGlicmFyeVwwIgogICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgICBMSUJDVVJMX1ZFUlNJT04gIlwwIgogICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgICAiqSAiIExJQkNVUkxfQ09QWVJJR0hUICJcMCIKLSAgICAgIFZBTFVFICJMaWNlbnNlIiwgICAgICAgICAgImh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbFwwIgorICAgICAgVkFMVUUgIkxpY2Vuc2UiLCAgICAgICAgICAiaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbFwwIgogICAgIEVORAogICBFTkQKIApkaWZmIC0tZ2l0IGEvbGliL2xsaXN0LmMgYi9saWIvbGxpc3QuYwppbmRleCA0MGJiNjI4Li40ODJhYWEwIDEwMDY0NAotLS0gYS9saWIvbGxpc3QuYworKysgYi9saWIvbGxpc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAibGxpc3QuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogCmRpZmYgLS1naXQgYS9saWIvbGxpc3QuaCBiL2xpYi9sbGlzdC5oCmluZGV4IDI3ZGRiNzEuLjM5ZmY0MDggMTAwNjQ0Ci0tLSBhL2xpYi9sbGlzdC5oCisrKyBiL2xpYi9sbGlzdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL21ha2VmaWxlLmRqIGIvbGliL21ha2VmaWxlLmRqCmluZGV4IDdiMmNhODYuLjIzMzFhZmUgMTAwNjQ0Ci0tLSBhL2xpYi9tYWtlZmlsZS5kagorKysgYi9saWIvbWFrZWZpbGUuZGoKQEAgLTEsMTUgKzEsMzkgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgIEFkYXB0ZWQgZm9yIGRqZ3BwMiAvIFdhdHQtMzIgLyBET1MgYnkKLSMgIEdpc2xlIFZhbmVtIDxndmFuZW1AYnJvYWRwYXJrLm5vPgorIyBDb3B5cmlnaHQgKEMpIDIwMDMgLSAyMDA4LCBHaXNsZSBWYW5lbSA8Z3ZhbmVtQHlhaG9vLm5vPi4KKyMgQ29weXJpZ2h0IChDKSAyMDAzIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyMKKyMgIEFkYXB0ZWQgZm9yIGRqZ3BwMiAvIFdhdHQtMzIgLyBET1MKICMKIAogREVQRU5EX1BSRVJFUSA9IGN1cmxfY29uZmlnLmgKK1ZQQVRIICA9IHZ0bHMKIFRPUERJUiA9IC4uCiAKIGluY2x1ZGUgLi4vcGFja2FnZXMvRE9TL2NvbW1vbi5kagogaW5jbHVkZSBNYWtlZmlsZS5pbmMKIAotT0JKRUNUUyA6PSAkKHBhdHN1YnN0ICUuYywkKE9CSl9ESVIpLyUubywkKHN0cmlwICQoQ1NPVVJDRVMpKSkKK1NPVVJDRVMgPSAkKHNvcnQgJChDU09VUkNFUykpCitPQkpFQ1RTID0gJChhZGRwcmVmaXggJChPQkpfRElSKS8sICQobm90ZGlyICQoU09VUkNFUzouYz0ubykpKQogCiBDVVJMX0xJQiA9IGxpYmN1cmwuYQogCmRpZmYgLS1naXQgYS9saWIvbWQ1LmMgYi9saWIvbWQ1LmMKaW5kZXggYjYwNGMxMC4uODRhZGI5OSAxMDA2NDQKLS0tIGEvbGliL21kNS5jCisrKyBiL2xpYi9tZDUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDYgKzI0LDggQEAKIAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAiY3VybF9tZDUuaCIKICNpbmNsdWRlICJjdXJsX2htYWMuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgpkaWZmIC0tZ2l0IGEvbGliL21lbWRlYnVnLmMgYi9saWIvbWVtZGVidWcuYwppbmRleCBkZDg4ODliLi4xNjE4YmJhIDEwMDY0NAotLS0gYS9saWIvbWVtZGVidWcuYworKysgYi9saWIvbWVtZGVidWcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDEwICsyNiwxMiBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgInVybGRhdGEuaCIKIAogI2RlZmluZSBNRU1ERUJVR19OT0RFRklORVMgLyogZG9uJ3QgcmVkZWZpbmUgdGhlIHN0YW5kYXJkIGZ1bmN0aW9ucyAqLworCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTE0Niw2ICsxNDgsNyBAQAogICAgICAgICAvKiBsb2cgdG8gc3RkZXJyIGFsc28gKi8KICAgICAgICAgZnByaW50ZihzdGRlcnIsICJMSU1JVCAlczolZCAlcyByZWFjaGVkIG1lbWxpbWl0XG4iLAogICAgICAgICAgICAgICAgIHNvdXJjZSwgbGluZSwgZnVuYyk7CisgICAgICAgIGZmbHVzaChsb2dmaWxlKTsgLyogYmVjYXVzZSBpdCBtaWdodCBjcmFzaCBub3cgKi8KICAgICAgIH0KICAgICAgIFNFVF9FUlJOTyhFTk9NRU0pOwogICAgICAgcmV0dXJuIFRSVUU7IC8qIFJFVFVSTiBFUlJPUiEgKi8KQEAgLTE1MywxMCArMTU2LDYgQEAKICAgICBlbHNlCiAgICAgICBtZW1zaXplLS07IC8qIGNvdW50ZG93biAqLwogCi0gICAgLyogbG9nIHRoZSBjb3VudGRvd24gKi8KLSAgICBpZihzb3VyY2UpCi0gICAgICBjdXJsX21lbWxvZygiTElNSVQgJXM6JWQgJWxkIEFMTE9DUyBsZWZ0XG4iLAotICAgICAgICAgICAgICAgICAgc291cmNlLCBsaW5lLCBtZW1zaXplKTsKIAogICB9CiAKZGlmZiAtLWdpdCBhL2xpYi9tZW1kZWJ1Zy5oIGIvbGliL21lbWRlYnVnLmgKaW5kZXggY2ZhYzFlMC4uODM1ZGFiMyAxMDA2NDQKLS0tIGEvbGliL21lbWRlYnVnLmgKKysrIGIvbGliL21lbWRlYnVnLmgKQEAgLTgsMTEgKzgsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMCArMjgsNiBAQAogICogYXMgd2VsbCBhcyB0aGUgbGlicmFyeS4gRG8gbm90IG1peCB3aXRoIGxpYnJhcnkgaW50ZXJuYWxzIQogICovCiAKLSNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLSNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KLQogI2RlZmluZSBDVVJMX01UX0xPR0ZOQU1FX0JVRlNJWkUgNTEyCiAKICNkZWZpbmUgbG9nZmlsZSBjdXJsX2RlYnVnbG9nZmlsZQpAQCAtNTcsMTcgKzUzLDE3IEBACiAKIC8qIGZpbGUgZGVzY3JpcHRvciBtYW5pcHVsYXRvcnMgKi8KIENVUkxfRVhURVJOIGN1cmxfc29ja2V0X3QgY3VybF9zb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUgLCBjb25zdCBjaGFyICpzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqc291cmNlKTsKIENVUkxfRVhURVJOIHZvaWQgY3VybF9tYXJrX3NjbG9zZShjdXJsX3NvY2tldF90IHNvY2tmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSAsIGNvbnN0IGNoYXIgKnNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKnNvdXJjZSk7CiBDVVJMX0VYVEVSTiBpbnQgY3VybF9zY2xvc2UoY3VybF9zb2NrZXRfdCBzb2NrZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUgLCBjb25zdCBjaGFyICpzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpOwogQ1VSTF9FWFRFUk4gY3VybF9zb2NrZXRfdCBjdXJsX2FjY2VwdChjdXJsX3NvY2tldF90IHMsIHZvaWQgKmEsIHZvaWQgKmFsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpOwogI2lmZGVmIEhBVkVfU09DS0VUUEFJUgogQ1VSTF9FWFRFUk4gaW50IGN1cmxfc29ja2V0cGFpcihpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHNvY2tldF92ZWN0b3JbMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lICwgY29uc3QgY2hhciAqc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKnNvdXJjZSk7CiAjZW5kaWYKIAogLyogRklMRSBmdW5jdGlvbnMgKi8KQEAgLTEwMyw2ICs5OSw3IEBACiAjICBlbmRpZgogI2VuZGlmCiAKKyN1bmRlZiBzb2NrZXQKICNkZWZpbmUgc29ja2V0KGRvbWFpbix0eXBlLHByb3RvY29sKVwKICBjdXJsX3NvY2tldChkb21haW4sIHR5cGUsIHByb3RvY29sLCBfX0xJTkVfXywgX19GSUxFX18pCiAjdW5kZWYgYWNjZXB0IC8qIGZvciB0aG9zZSB3aXRoIGFjY2VwdCBhcyBhIG1hY3JvICovCmRpZmYgLS1naXQgYS9saWIvbWstY2EtYnVuZGxlLnBsIGIvbGliL21rLWNhLWJ1bmRsZS5wbAppbmRleCBjMjA4MGU5Li41YTE0MzVjIDEwMDc1NQotLS0gYS9saWIvbWstY2EtYnVuZGxlLnBsCisrKyBiL2xpYi9tay1jYS1idW5kbGUucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMgKgogIyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjICoKICMgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9tay1jYS1idW5kbGUudmJzIGIvbGliL21rLWNhLWJ1bmRsZS52YnMKaW5kZXggMmQ4MmU3ZC4uYjBkOTQyNyAxMDA3NTUKLS0tIGEvbGliL21rLWNhLWJ1bmRsZS52YnMKKysrIGIvbGliL21rLWNhLWJ1bmRsZS52YnMKQEAgLTksNyArOSw3IEBACiAnKg0KICcqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoDQogJyogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcw0KLScqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQorJyogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQogJyoNCiAnKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwNCiAnKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCmRpZmYgLS1naXQgYS9saWIvbXByaW50Zi5jIGIvbGliL21wcmludGYuYwppbmRleCAyMzA3MGE3Li43M2Y4NTRiIDEwMDY0NAotLS0gYS9saWIvbXByaW50Zi5jCisrKyBiL2xpYi9tcHJpbnRmLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiwxNSArMzIsMTAgQEAKICAqCiAgKiBJZiB5b3UgZXZlciB3YW50IHRydWx5IHBvcnRhYmxlIGFuZCBnb29kICpwcmludGYoKSBjbG9uZXMsIHRoZSBwcm9qZWN0IHRoYXQKICAqIHRvb2sgb24gZnJvbSBoZXJlIGlzIG5hbWVkICdUcmlvJyBhbmQgeW91IGZpbmQgbW9yZSBkZXRhaWxzIG9uIHRoZSB0cmlvIHdlYgotICogcGFnZSBhdCBodHRwOi8vZGFuaWVsLmhheHguc2UvdHJpby8KKyAqIHBhZ2UgYXQgaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9wcm9qZWN0cy90cmlvLwogICovCiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLSNpZiBkZWZpbmVkKERKR1BQKSAmJiAoREpHUFBfTUlOT1IgPCA0KQotI3VuZGVmIF9NUFJJTlRGX1JFUExBQ0UgLyogZG9uJ3QgdXNlIHhfd2FzX3VzZWQoKSBoZXJlICovCi0jZW5kaWYKLQogI2luY2x1ZGUgPGN1cmwvbXByaW50Zi5oPgogCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKQEAgLTQ2NSwyMiArNDYwLDI0IEBACiAgICAgICBpZihmbGFncyAmIEZMQUdTX1dJRFRIUEFSQU0pIHsKICAgICAgICAgLyogd2UgaGF2ZSB0aGUgd2lkdGggc3BlY2lmaWVkIGZyb20gYSBwYXJhbWV0ZXIsIHNvIHdlIG1ha2UgdGhhdAogICAgICAgICAgICBwYXJhbWV0ZXIncyBpbmZvIHNldHVwIHByb3Blcmx5ICovCi0gICAgICAgIHZ0b1tpXS53aWR0aCA9IHdpZHRoIC0gMTsKLSAgICAgICAgaSA9IHdpZHRoIC0gMTsKLSAgICAgICAgdnRvW2ldLnR5cGUgPSBGT1JNQVRfV0lEVEg7Ci0gICAgICAgIHZ0b1tpXS5mbGFncyA9IEZMQUdTX05FVzsKLSAgICAgICAgdnRvW2ldLnByZWNpc2lvbiA9IHZ0b1tpXS53aWR0aCA9IDA7IC8qIGNhbid0IHVzZSB3aWR0aCBvciBwcmVjaXNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHdpZHRoISAqLworICAgICAgICBsb25nIGsgPSB3aWR0aCAtIDE7CisgICAgICAgIHZ0b1tpXS53aWR0aCA9IGs7CisgICAgICAgIHZ0b1trXS50eXBlID0gRk9STUFUX1dJRFRIOworICAgICAgICB2dG9ba10uZmxhZ3MgPSBGTEFHU19ORVc7CisgICAgICAgIC8qIGNhbid0IHVzZSB3aWR0aCBvciBwcmVjaXNpb24gb2Ygd2lkdGghICovCisgICAgICAgIHZ0b1trXS53aWR0aCA9IDA7CisgICAgICAgIHZ0b1trXS5wcmVjaXNpb24gPSAwOwogICAgICAgfQogICAgICAgaWYoZmxhZ3MgJiBGTEFHU19QUkVDUEFSQU0pIHsKICAgICAgICAgLyogd2UgaGF2ZSB0aGUgcHJlY2lzaW9uIHNwZWNpZmllZCBmcm9tIGEgcGFyYW1ldGVyLCBzbyB3ZSBtYWtlIHRoYXQKICAgICAgICAgICAgcGFyYW1ldGVyJ3MgaW5mbyBzZXR1cCBwcm9wZXJseSAqLwotICAgICAgICB2dG9baV0ucHJlY2lzaW9uID0gcHJlY2lzaW9uIC0gMTsKLSAgICAgICAgaSA9IHByZWNpc2lvbiAtIDE7Ci0gICAgICAgIHZ0b1tpXS50eXBlID0gRk9STUFUX1dJRFRIOwotICAgICAgICB2dG9baV0uZmxhZ3MgPSBGTEFHU19ORVc7Ci0gICAgICAgIHZ0b1tpXS5wcmVjaXNpb24gPSB2dG9baV0ud2lkdGggPSAwOyAvKiBjYW4ndCB1c2Ugd2lkdGggb3IgcHJlY2lzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB3aWR0aCEgKi8KKyAgICAgICAgbG9uZyBrID0gcHJlY2lzaW9uIC0gMTsKKyAgICAgICAgdnRvW2ldLnByZWNpc2lvbiA9IGs7CisgICAgICAgIHZ0b1trXS50eXBlID0gRk9STUFUX1dJRFRIOworICAgICAgICB2dG9ba10uZmxhZ3MgPSBGTEFHU19ORVc7CisgICAgICAgIC8qIGNhbid0IHVzZSB3aWR0aCBvciBwcmVjaXNpb24gb2Ygd2lkdGghICovCisgICAgICAgIHZ0b1trXS53aWR0aCA9IDA7CisgICAgICAgIHZ0b1trXS5wcmVjaXNpb24gPSAwOwogICAgICAgfQogICAgICAgKmVuZHBvcysrID0gZm10ICsgMTsgLyogZW5kIG9mIHRoaXMgc2VxdWVuY2UgKi8KICAgICB9CkBAIC00ODgsMTEgKzQ4NSwxNSBAQAogCiAgIC8qIFJlYWQgdGhlIGFyZyBsaXN0IHBhcmFtZXRlcnMgaW50byBvdXIgZGF0YSBsaXN0ICovCiAgIGZvcihpPTA7IGk8bWF4X3BhcmFtOyBpKyspIHsKLSAgICBpZigoaSArIDEgPCBtYXhfcGFyYW0pICYmICh2dG9baSArIDFdLnR5cGUgPT0gRk9STUFUX1dJRFRIKSkgewotICAgICAgLyogV2lkdGgvcHJlY2lzaW9uIGFyZ3VtZW50cyBtdXN0IGJlIHJlYWQgYmVmb3JlIHRoZSBtYWluIGFyZ3VtZW50Ci0gICAgICAgKiB0aGV5IGFyZSBhdHRhY2hlZCB0bwotICAgICAgICovCi0gICAgICB2dG9baSArIDFdLmRhdGEubnVtLmFzX3NpZ25lZCA9IChtcF9pbnRtYXhfdCl2YV9hcmcoYXJnbGlzdCwgaW50KTsKKyAgICAvKiBXaWR0aC9wcmVjaXNpb24gYXJndW1lbnRzIG11c3QgYmUgcmVhZCBiZWZvcmUgdGhlIG1haW4gYXJndW1lbnQKKyAgICAgICB0aGV5IGFyZSBhdHRhY2hlZCB0byAqLworICAgIGlmKHZ0b1tpXS5mbGFncyAmIEZMQUdTX1dJRFRIUEFSQU0pIHsKKyAgICAgIHZ0b1t2dG9baV0ud2lkdGhdLmRhdGEubnVtLmFzX3NpZ25lZCA9CisgICAgICAgIChtcF9pbnRtYXhfdCl2YV9hcmcoYXJnbGlzdCwgaW50KTsKKyAgICB9CisgICAgaWYodnRvW2ldLmZsYWdzICYgRkxBR1NfUFJFQ1BBUkFNKSB7CisgICAgICB2dG9bdnRvW2ldLnByZWNpc2lvbl0uZGF0YS5udW0uYXNfc2lnbmVkID0KKyAgICAgICAgKG1wX2ludG1heF90KXZhX2FyZyhhcmdsaXN0LCBpbnQpOwogICAgIH0KIAogICAgIHN3aXRjaCAodnRvW2ldLnR5cGUpIHsKQEAgLTU4MCw2ICs1ODEsMTEgQEAKIAogICB2YV9zdGFja190ICpwOwogCisgIC8qICd3b3JrZW5kJyBwb2ludHMgdG8gdGhlIGZpbmFsIGJ1ZmZlciBieXRlIHBvc2l0aW9uLCBidXQgd2l0aCBhbiBleHRyYQorICAgICBieXRlIGFzIG1hcmdpbiB0byBhdm9pZCB0aGUgKGZhbHNlPykgd2FybmluZyBDb3Zlcml0eSBnaXZlcyB1cworICAgICBvdGhlcndpc2UgKi8KKyAgY2hhciAqd29ya2VuZCA9ICZ3b3JrW3NpemVvZih3b3JrKSAtIDJdOworCiAgIC8qIERvIHRoZSBhY3R1YWwgJS1jb2RlIHBhcnNpbmcgKi8KICAgZHByaW50Zl9QYXNzMShmb3JtYXQsIHZ0bywgZW5kcG9zLCBhcF9zYXZlKTsKIApAQCAtNjA5LDYgKzYxNSw4IEBACiAgICAgLyogVXNlZCB0byBjb252ZXJ0IG5lZ2F0aXZlIGluIHBvc2l0aXZlLiAgKi8KICAgICBtcF9pbnRtYXhfdCBzaWduZWRfbnVtOwogCisgICAgY2hhciAqdzsKKwogICAgIGlmKCpmICE9ICclJykgewogICAgICAgLyogVGhpcyBpc24ndCBhIGZvcm1hdCBzcGVjLCBzbyB3cml0ZSBldmVyeXRoaW5nIG91dCB1bnRpbCB0aGUgbmV4dCBvbmUKICAgICAgICAgIE9SIGVuZCBvZiBzdHJpbmcgaXMgcmVhY2hlZC4gICovCkBAIC02NDUsMTYgKzY1MywzMCBAQAogICAgIHAgPSAmdnRvW3BhcmFtXTsKIAogICAgIC8qIHBpY2sgdXAgdGhlIHNwZWNpZmllZCB3aWR0aCAqLwotICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfV0lEVEhQQVJBTSkKKyAgICBpZihwLT5mbGFncyAmIEZMQUdTX1dJRFRIUEFSQU0pIHsKICAgICAgIHdpZHRoID0gKGxvbmcpdnRvW3AtPndpZHRoXS5kYXRhLm51bS5hc19zaWduZWQ7CisgICAgICBwYXJhbV9udW0rKzsgLyogc2luY2UgdGhlIHdpZHRoIGlzIGV4dHJhY3RlZCBmcm9tIGEgcGFyYW1ldGVyLCB3ZQorICAgICAgICAgICAgICAgICAgICAgIG11c3Qgc2tpcCB0aGF0IHRvIGdldCB0byB0aGUgbmV4dCBvbmUgcHJvcGVybHkgKi8KKyAgICAgIGlmKHdpZHRoIDwgMCkgeworICAgICAgICAvKiAiQSBuZWdhdGl2ZSBmaWVsZCB3aWR0aCBpcyB0YWtlbiBhcyBhICctJyBmbGFnIGZvbGxvd2VkIGJ5IGEKKyAgICAgICAgICAgcG9zaXRpdmUgZmllbGQgd2lkdGguIiAqLworICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgcC0+ZmxhZ3MgfD0gRkxBR1NfTEVGVDsKKyAgICAgICAgcC0+ZmxhZ3MgJj0gfkZMQUdTX1BBRF9OSUw7CisgICAgICB9CisgICAgfQogICAgIGVsc2UKICAgICAgIHdpZHRoID0gcC0+d2lkdGg7CiAKICAgICAvKiBwaWNrIHVwIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uICovCiAgICAgaWYocC0+ZmxhZ3MgJiBGTEFHU19QUkVDUEFSQU0pIHsKICAgICAgIHByZWMgPSAobG9uZyl2dG9bcC0+cHJlY2lzaW9uXS5kYXRhLm51bS5hc19zaWduZWQ7Ci0gICAgICBwYXJhbV9udW0rKzsgLyogc2luY2UgdGhlIHByZWNpc2lvbiBpcyBleHRyYWNlZCBmcm9tIGEgcGFyYW1ldGVyLCB3ZQorICAgICAgcGFyYW1fbnVtKys7IC8qIHNpbmNlIHRoZSBwcmVjaXNpb24gaXMgZXh0cmFjdGVkIGZyb20gYSBwYXJhbWV0ZXIsIHdlCiAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBza2lwIHRoYXQgdG8gZ2V0IHRvIHRoZSBuZXh0IG9uZSBwcm9wZXJseSAqLworICAgICAgaWYocHJlYyA8IDApCisgICAgICAgIC8qICJBIG5lZ2F0aXZlIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBpZiB0aGUgcHJlY2lzaW9uIHdlcmUKKyAgICAgICAgICAgb21pdHRlZC4iICovCisgICAgICAgIHByZWMgPSAtMTsKICAgICB9CiAgICAgZWxzZSBpZihwLT5mbGFncyAmIEZMQUdTX1BSRUMpCiAgICAgICBwcmVjID0gcC0+cHJlY2lzaW9uOwpAQCAtNzE1LDcyICs3MzcsNjggQEAKIAogICAgICAgbnVtYmVyOgogICAgICAgLyogTnVtYmVyIG9mIGJhc2UgQkFTRS4gICovCi0gICAgICB7Ci0gICAgICAgIGNoYXIgKndvcmtlbmQgPSAmd29ya1tzaXplb2Yod29yaykgLSAxXTsKLSAgICAgICAgY2hhciAqdzsKIAotICAgICAgICAvKiBTdXBwbHkgYSBkZWZhdWx0IHByZWNpc2lvbiBpZiBub25lIHdhcyBnaXZlbi4gICovCi0gICAgICAgIGlmKHByZWMgPT0gLTEpCi0gICAgICAgICAgcHJlYyA9IDE7CisgICAgICAvKiBTdXBwbHkgYSBkZWZhdWx0IHByZWNpc2lvbiBpZiBub25lIHdhcyBnaXZlbi4gICovCisgICAgICBpZihwcmVjID09IC0xKQorICAgICAgICBwcmVjID0gMTsKIAotICAgICAgICAvKiBQdXQgdGhlIG51bWJlciBpbiBXT1JLLiAgKi8KLSAgICAgICAgdyA9IHdvcmtlbmQ7Ci0gICAgICAgIHdoaWxlKG51bSA+IDApIHsKLSAgICAgICAgICAqdy0tID0gZGlnaXRzW251bSAlIGJhc2VdOwotICAgICAgICAgIG51bSAvPSBiYXNlOwotICAgICAgICB9Ci0gICAgICAgIHdpZHRoIC09IChsb25nKSh3b3JrZW5kIC0gdyk7Ci0gICAgICAgIHByZWMgLT0gKGxvbmcpKHdvcmtlbmQgLSB3KTsKKyAgICAgIC8qIFB1dCB0aGUgbnVtYmVyIGluIFdPUksuICAqLworICAgICAgdyA9IHdvcmtlbmQ7CisgICAgICB3aGlsZShudW0gPiAwKSB7CisgICAgICAgICp3LS0gPSBkaWdpdHNbbnVtICUgYmFzZV07CisgICAgICAgIG51bSAvPSBiYXNlOworICAgICAgfQorICAgICAgd2lkdGggLT0gKGxvbmcpKHdvcmtlbmQgLSB3KTsKKyAgICAgIHByZWMgLT0gKGxvbmcpKHdvcmtlbmQgLSB3KTsKIAotICAgICAgICBpZihpc19hbHQgJiYgYmFzZSA9PSA4ICYmIHByZWMgPD0gMCkgeworICAgICAgaWYoaXNfYWx0ICYmIGJhc2UgPT0gOCAmJiBwcmVjIDw9IDApIHsKKyAgICAgICAgKnctLSA9ICcwJzsKKyAgICAgICAgLS13aWR0aDsKKyAgICAgIH0KKworICAgICAgaWYocHJlYyA+IDApIHsKKyAgICAgICAgd2lkdGggLT0gcHJlYzsKKyAgICAgICAgd2hpbGUocHJlYy0tID4gMCkKICAgICAgICAgICAqdy0tID0gJzAnOwotICAgICAgICAgIC0td2lkdGg7Ci0gICAgICAgIH0KKyAgICAgIH0KIAotICAgICAgICBpZihwcmVjID4gMCkgewotICAgICAgICAgIHdpZHRoIC09IHByZWM7Ci0gICAgICAgICAgd2hpbGUocHJlYy0tID4gMCkKLSAgICAgICAgICAgICp3LS0gPSAnMCc7Ci0gICAgICAgIH0KKyAgICAgIGlmKGlzX2FsdCAmJiBiYXNlID09IDE2KQorICAgICAgICB3aWR0aCAtPSAyOwogCi0gICAgICAgIGlmKGlzX2FsdCAmJiBiYXNlID09IDE2KQotICAgICAgICAgIHdpZHRoIC09IDI7CisgICAgICBpZihpc19uZWcgfHwgKHAtPmZsYWdzICYgRkxBR1NfU0hPV1NJR04pIHx8IChwLT5mbGFncyAmIEZMQUdTX1NQQUNFKSkKKyAgICAgICAgLS13aWR0aDsKIAotICAgICAgICBpZihpc19uZWcgfHwgKHAtPmZsYWdzICYgRkxBR1NfU0hPV1NJR04pIHx8IChwLT5mbGFncyAmIEZMQUdTX1NQQUNFKSkKLSAgICAgICAgICAtLXdpZHRoOwotCi0gICAgICAgIGlmKCEocC0+ZmxhZ3MgJiBGTEFHU19MRUZUKSAmJiAhKHAtPmZsYWdzICYgRkxBR1NfUEFEX05JTCkpCi0gICAgICAgICAgd2hpbGUod2lkdGgtLSA+IDApCi0gICAgICAgICAgICBPVVRDSEFSKCcgJyk7Ci0KLSAgICAgICAgaWYoaXNfbmVnKQotICAgICAgICAgIE9VVENIQVIoJy0nKTsKLSAgICAgICAgZWxzZSBpZihwLT5mbGFncyAmIEZMQUdTX1NIT1dTSUdOKQotICAgICAgICAgIE9VVENIQVIoJysnKTsKLSAgICAgICAgZWxzZSBpZihwLT5mbGFncyAmIEZMQUdTX1NQQUNFKQorICAgICAgaWYoIShwLT5mbGFncyAmIEZMQUdTX0xFRlQpICYmICEocC0+ZmxhZ3MgJiBGTEFHU19QQURfTklMKSkKKyAgICAgICAgd2hpbGUod2lkdGgtLSA+IDApCiAgICAgICAgICAgT1VUQ0hBUignICcpOwogCi0gICAgICAgIGlmKGlzX2FsdCAmJiBiYXNlID09IDE2KSB7Ci0gICAgICAgICAgT1VUQ0hBUignMCcpOwotICAgICAgICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfVVBQRVIpCi0gICAgICAgICAgICBPVVRDSEFSKCdYJyk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgT1VUQ0hBUigneCcpOwotICAgICAgICB9CisgICAgICBpZihpc19uZWcpCisgICAgICAgIE9VVENIQVIoJy0nKTsKKyAgICAgIGVsc2UgaWYocC0+ZmxhZ3MgJiBGTEFHU19TSE9XU0lHTikKKyAgICAgICAgT1VUQ0hBUignKycpOworICAgICAgZWxzZSBpZihwLT5mbGFncyAmIEZMQUdTX1NQQUNFKQorICAgICAgICBPVVRDSEFSKCcgJyk7CiAKLSAgICAgICAgaWYoIShwLT5mbGFncyAmIEZMQUdTX0xFRlQpICYmIChwLT5mbGFncyAmIEZMQUdTX1BBRF9OSUwpKQotICAgICAgICAgIHdoaWxlKHdpZHRoLS0gPiAwKQotICAgICAgICAgICAgT1VUQ0hBUignMCcpOwotCi0gICAgICAgIC8qIFdyaXRlIHRoZSBudW1iZXIuICAqLwotICAgICAgICB3aGlsZSgrK3cgPD0gd29ya2VuZCkgewotICAgICAgICAgIE9VVENIQVIoKncpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYocC0+ZmxhZ3MgJiBGTEFHU19MRUZUKQotICAgICAgICAgIHdoaWxlKHdpZHRoLS0gPiAwKQotICAgICAgICAgICAgT1VUQ0hBUignICcpOworICAgICAgaWYoaXNfYWx0ICYmIGJhc2UgPT0gMTYpIHsKKyAgICAgICAgT1VUQ0hBUignMCcpOworICAgICAgICBpZihwLT5mbGFncyAmIEZMQUdTX1VQUEVSKQorICAgICAgICAgIE9VVENIQVIoJ1gnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIE9VVENIQVIoJ3gnKTsKICAgICAgIH0KKworICAgICAgaWYoIShwLT5mbGFncyAmIEZMQUdTX0xFRlQpICYmIChwLT5mbGFncyAmIEZMQUdTX1BBRF9OSUwpKQorICAgICAgICB3aGlsZSh3aWR0aC0tID4gMCkKKyAgICAgICAgICBPVVRDSEFSKCcwJyk7CisKKyAgICAgIC8qIFdyaXRlIHRoZSBudW1iZXIuICAqLworICAgICAgd2hpbGUoKyt3IDw9IHdvcmtlbmQpIHsKKyAgICAgICAgT1VUQ0hBUigqdyk7CisgICAgICB9CisKKyAgICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfTEVGVCkKKyAgICAgICAgd2hpbGUod2lkdGgtLSA+IDApCisgICAgICAgICAgT1VUQ0hBUignICcpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZPUk1BVF9TVFJJTkc6CkBAIC04MDksNyArODI3LDcgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgIGxlbiA9IHN0cmxlbihzdHIpOwogCi0gICAgICAgIHdpZHRoIC09IChsb25nKWxlbjsKKyAgICAgICAgd2lkdGggLT0gKGxlbiA+IExPTkdfTUFYKSA/IExPTkdfTUFYIDogKGxvbmcpbGVuOwogCiAgICAgICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfQUxUKQogICAgICAgICAgIE9VVENIQVIoJyInKTsKZGlmZiAtLWdpdCBhL2xpYi9tdWx0aS5jIGIvbGliL211bHRpLmMKaW5kZXggYjYzZjhiZi4uN2UyNzI1YiAxMDA2NDQKLS0tIGEvbGliL211bHRpLmMKKysrIGIvbGliL211bHRpLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAibXVsdGloYW5kbGUuaCIKICNpbmNsdWRlICJwaXBlbGluZS5oIgogI2luY2x1ZGUgInNpZ3BpcGUuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKgpAQCAtNjIsOCArNjIsNiBAQAogCiAjZGVmaW5lIEdPT0RfTVVMVElfSEFORExFKHgpIFwKICAgKCh4KSAmJiAoKChzdHJ1Y3QgQ3VybF9tdWx0aSAqKSh4KSktPnR5cGUgPT0gQ1VSTF9NVUxUSV9IQU5ETEUpKQotI2RlZmluZSBHT09EX0VBU1lfSEFORExFKHgpIFwKLSAgKCh4KSAmJiAoKChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqKSh4KSktPm1hZ2ljID09IENVUkxFQVNZX01BR0lDX05VTUJFUikpCiAKIHN0YXRpYyB2b2lkIHNpbmdsZXNvY2tldChzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOwpAQCAtMTAxLDYgKzk5LDkgQEAKIAogc3RhdGljIHZvaWQgbXVsdGlfZnJlZXRpbWVvdXQodm9pZCAqYSwgdm9pZCAqYik7CiAKKy8qIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbGVkIG9uY2Ugd2hlbiBzd2l0Y2hpbmcgVE8gYSBzdGF0ZSAqLwordHlwZWRlZiB2b2lkICgqaW5pdF9tdWx0aXN0YXRlX2Z1bmMpKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKKwogLyogYWx3YXlzIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNoYW5nZSBzdGF0ZSwgdG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyICovCiBzdGF0aWMgdm9pZCBtc3RhdGUoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIENVUkxNc3RhdGUgc3RhdGUKICNpZmRlZiBERUJVR0JVSUxECkBAIC0xMDksNiArMTEwLDEyIEBACiApCiB7CiAgIENVUkxNc3RhdGUgb2xkc3RhdGUgPSBkYXRhLT5tc3RhdGU7CisgIHN0YXRpYyBjb25zdCBpbml0X211bHRpc3RhdGVfZnVuYyBmaW5pdFtDVVJMTV9TVEFURV9MQVNUXSA9IHsKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgQ3VybF9pbml0X0NPTk5FQ1QsIC8qIENPTk5FQ1QgKi8KKyAgICAvKiB0aGUgcmVzdCBpcyBOVUxMIHRvbyAqLworICB9OwogCiAjaWYgZGVmaW5lZChERUJVR0JVSUxEKSAmJiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCiAgICh2b2lkKSBsaW5lbm87CkBAIC0xMjksNyArMTM2LDcgQEAKICAgICAgIGNvbm5lY3Rpb25faWQgPSBkYXRhLT5lYXN5X2Nvbm4tPmNvbm5lY3Rpb25faWQ7CiAKICAgICBpbmZvZihkYXRhLAotICAgICAgICAgICJTVEFURTogJXMgPT4gJXMgaGFuZGxlICVwOyBsaW5lICVkIChjb25uZWN0aW9uICMlbGQpIFxuIiwKKyAgICAgICAgICAiU1RBVEU6ICVzID0+ICVzIGhhbmRsZSAlcDsgbGluZSAlZCAoY29ubmVjdGlvbiAjJWxkKVxuIiwKICAgICAgICAgICBzdGF0ZW5hbWVbb2xkc3RhdGVdLCBzdGF0ZW5hbWVbZGF0YS0+bXN0YXRlXSwKICAgICAgICAgICAodm9pZCAqKWRhdGEsIGxpbmVubywgY29ubmVjdGlvbl9pZCk7CiAgIH0KQEAgLTEzOCw2ICsxNDUsMTAgQEAKICAgaWYoc3RhdGUgPT0gQ1VSTE1fU1RBVEVfQ09NUExFVEVEKQogICAgIC8qIGNoYW5naW5nIHRvIENPTVBMRVRFRCBtZWFucyB0aGVyZSdzIG9uZSBsZXNzIGVhc3kgaGFuZGxlICdhbGl2ZScgKi8KICAgICBkYXRhLT5tdWx0aS0+bnVtX2FsaXZlLS07CisKKyAgLyogaWYgdGhpcyBzdGF0ZSBoYXMgYW4gaW5pdC1mdW5jdGlvbiwgcnVuIGl0ICovCisgIGlmKGZpbml0W3N0YXRlXSkKKyAgICBmaW5pdFtzdGF0ZV0oZGF0YSk7CiB9CiAKICNpZm5kZWYgREVCVUdCVUlMRApAQCAtMTYxLDEzICsxNzIsMjIgQEAKICNkZWZpbmUgU0hfUkVBRCAgMQogI2RlZmluZSBTSF9XUklURSAyCiAKKy8qIGxvb2sgdXAgYSBnaXZlbiBzb2NrZXQgaW4gdGhlIHNvY2tldCBoYXNoLCBza2lwIGludmFsaWQgc29ja2V0cyAqLworc3RhdGljIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICpzaF9nZXRlbnRyeShzdHJ1Y3QgY3VybF9oYXNoICpzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzKQoreworICBpZihzICE9IENVUkxfU09DS0VUX0JBRCkKKyAgICAvKiBvbmx5IGxvb2sgZm9yIHByb3BlciBzb2NrZXRzICovCisgICAgcmV0dXJuIEN1cmxfaGFzaF9waWNrKHNoLCAoY2hhciAqKSZzLCBzaXplb2YoY3VybF9zb2NrZXRfdCkpOworICByZXR1cm4gTlVMTDsKK30KKwogLyogbWFrZSBzdXJlIHRoaXMgc29ja2V0IGlzIHByZXNlbnQgaW4gdGhlIGhhc2ggZm9yIHRoaXMgaGFuZGxlICovCiBzdGF0aWMgc3RydWN0IEN1cmxfc2hfZW50cnkgKnNoX2FkZGVudHJ5KHN0cnVjdCBjdXJsX2hhc2ggKnNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewotICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqdGhlcmUgPQotICAgIEN1cmxfaGFzaF9waWNrKHNoLCAoY2hhciAqKSZzLCBzaXplb2YoY3VybF9zb2NrZXRfdCkpOworICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqdGhlcmUgPSBzaF9nZXRlbnRyeShzaCwgcyk7CiAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICpjaGVjazsKIAogICBpZih0aGVyZSkKQEAgLTE5NSwxNSArMjE1LDkgQEAKIC8qIGRlbGV0ZSB0aGUgZ2l2ZW4gc29ja2V0ICsgaGFuZGxlIGZyb20gdGhlIGhhc2ggKi8KIHN0YXRpYyB2b2lkIHNoX2RlbGVudHJ5KHN0cnVjdCBjdXJsX2hhc2ggKnNoLCBjdXJsX3NvY2tldF90IHMpCiB7Ci0gIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICp0aGVyZSA9Ci0gICAgQ3VybF9oYXNoX3BpY2soc2gsIChjaGFyICopJnMsIHNpemVvZihjdXJsX3NvY2tldF90KSk7Ci0KLSAgaWYodGhlcmUpIHsKLSAgICAvKiB0aGlzIHNvY2tldCBpcyBpbiB0aGUgaGFzaCAqLwotICAgIC8qIFdlIHJlbW92ZSB0aGUgaGFzaCBlbnRyeS4gKFRoaXMnbGwgZW5kIHVwIGluIGEgY2FsbCB0bwotICAgICAgIHNoX2ZyZWVlbnRyeSgpLikgKi8KLSAgICBDdXJsX2hhc2hfZGVsZXRlKHNoLCAoY2hhciAqKSZzLCBzaXplb2YoY3VybF9zb2NrZXRfdCkpOwotICB9CisgIC8qIFdlIHJlbW92ZSB0aGUgaGFzaCBlbnRyeS4gVGhpcyB3aWxsIGVuZCB1cCBpbiBhIGNhbGwgdG8KKyAgICAgc2hfZnJlZWVudHJ5KCkuICovCisgIEN1cmxfaGFzaF9kZWxldGUoc2gsIChjaGFyICopJnMsIHNpemVvZihjdXJsX3NvY2tldF90KSk7CiB9CiAKIC8qCkBAIC0yMjAsMTUgKzIzNCwxNSBAQAogewogICAodm9pZCkgazFfbGVuOyAodm9pZCkgazJfbGVuOwogCi0gIHJldHVybiAoKigoaW50ICopIGsxKSkgPT0gKCooKGludCAqKSBrMikpOworICByZXR1cm4gKCooKGN1cmxfc29ja2V0X3QgKikgazEpKSA9PSAoKigoY3VybF9zb2NrZXRfdCAqKSBrMikpOwogfQogCiBzdGF0aWMgc2l6ZV90IGhhc2hfZmQodm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbmd0aCwgc2l6ZV90IHNsb3RzX251bSkKIHsKLSAgaW50IGZkID0gKigoaW50ICopIGtleSk7CisgIGN1cmxfc29ja2V0X3QgZmQgPSAqKChjdXJsX3NvY2tldF90ICopIGtleSk7CiAgICh2b2lkKSBrZXlfbGVuZ3RoOwogCi0gIHJldHVybiAoZmQgJSAoaW50KXNsb3RzX251bSk7CisgIHJldHVybiAoZmQgJSBzbG90c19udW0pOwogfQogCiAvKgpAQCAtNDAyLDExICs0MTYsNiBAQAogICAvKiBQb2ludCB0byB0aGUgbXVsdGkncyBjb25uZWN0aW9uIGNhY2hlICovCiAgIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUgPSAmbXVsdGktPmNvbm5fY2FjaGU7CiAKLSAgaWYoZGF0YS0+c2V0Lmh0dHByZXEgPT0gSFRUUFJFUV9QVVQpCi0gICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA9IGRhdGEtPnNldC5maWxlc2l6ZTsKLSAgZWxzZQotICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPSBkYXRhLT5zZXQucG9zdGZpZWxkc2l6ZTsKLQogICAvKiBUaGlzIGFkZHMgdGhlIG5ldyBlbnRyeSBhdCB0aGUgJ2VuZCcgb2YgdGhlIGRvdWJseS1saW5rZWQgY2lyY3VsYXIKICAgICAgbGlzdCBvZiBTZXNzaW9uSGFuZGxlIHN0cnVjdHMgdG8gdHJ5IGFuZCBtYWludGFpbiBhIEZJRk8gcXVldWUgc28KICAgICAgdGhlIHBpcGVsaW5lZCByZXF1ZXN0cyBhcmUgaW4gb3JkZXIuICovCkBAIC00NzUsNiArNDg0LDE2NyBAQAogfQogI2VuZGlmCiAKKy8qIE1hcmsgdGhlIGNvbm5lY3Rpb24gYXMgJ2lkbGUnLCBvciBjbG9zZSBpdCBpZiB0aGUgY2FjaGUgaXMgZnVsbC4KKyAgIFJldHVybnMgVFJVRSBpZiB0aGUgY29ubmVjdGlvbiBpcyBrZXB0LCBvciBGQUxTRSBpZiBpdCB3YXMgY2xvc2VkLiAqLworc3RhdGljIGJvb2wKK0Nvbm5lY3Rpb25Eb25lKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIC8qIGRhdGEtPm11bHRpLT5tYXhjb25uZWN0cyBjYW4gYmUgbmVnYXRpdmUsIGRlYWwgd2l0aCBpdC4gKi8KKyAgc2l6ZV90IG1heGNvbm5lY3RzID0KKyAgICAoZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzIDwgMCkgPyBkYXRhLT5tdWx0aS0+bnVtX2Vhc3kgKiA0OgorICAgIGRhdGEtPm11bHRpLT5tYXhjb25uZWN0czsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uX2NhbmRpZGF0ZSA9IE5VTEw7CisKKyAgLyogTWFyayB0aGUgY3VycmVudCBjb25uZWN0aW9uIGFzICd1bnVzZWQnICovCisgIGNvbm4tPmludXNlID0gRkFMU0U7CisKKyAgaWYobWF4Y29ubmVjdHMgPiAwICYmCisgICAgIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUtPm51bV9jb25uZWN0aW9ucyA+IG1heGNvbm5lY3RzKSB7CisgICAgaW5mb2YoZGF0YSwgIkNvbm5lY3Rpb24gY2FjaGUgaXMgZnVsbCwgY2xvc2luZyB0aGUgb2xkZXN0IG9uZS5cbiIpOworCisgICAgY29ubl9jYW5kaWRhdGUgPSBDdXJsX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oZGF0YSk7CisKKyAgICBpZihjb25uX2NhbmRpZGF0ZSkgeworICAgICAgLyogU2V0IHRoZSBjb25uZWN0aW9uJ3Mgb3duZXIgY29ycmVjdGx5ICovCisgICAgICBjb25uX2NhbmRpZGF0ZS0+ZGF0YSA9IGRhdGE7CisKKyAgICAgIC8qIHRoZSB3aW5uZXIgZ2V0cyB0aGUgaG9ub3VyIG9mIGJlaW5nIGRpc2Nvbm5lY3RlZCAqLworICAgICAgKHZvaWQpQ3VybF9kaXNjb25uZWN0KGNvbm5fY2FuZGlkYXRlLCAvKiBkZWFkX2Nvbm5lY3Rpb24gKi8gRkFMU0UpOworICAgIH0KKyAgfQorCisgIHJldHVybiAoY29ubl9jYW5kaWRhdGUgPT0gY29ubikgPyBGQUxTRSA6IFRSVUU7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBtdWx0aV9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqKmNvbm5wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSBzdGF0dXMsICAvKiBhbiBlcnJvciBpZiB0aGlzIGlzIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtYXR1cmUpCit7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YTsKKworICBERUJVR0FTU0VSVCgqY29ubnApOworCisgIGNvbm4gPSAqY29ubnA7CisgIGRhdGEgPSBjb25uLT5kYXRhOworCisgIERFQlVHRihpbmZvZihkYXRhLCAibXVsdGlfZG9uZVxuIikpOworCisgIGlmKGRhdGEtPnN0YXRlLmRvbmUpCisgICAgLyogU3RvcCBpZiBtdWx0aV9kb25lKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgKi8KKyAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgQ3VybF9nZXRvZmZfYWxsX3BpcGVsaW5lcyhkYXRhLCBjb25uKTsKKworICAvKiBDbGVhbnVwIHBvc3NpYmxlIHJlZGlyZWN0IGp1bmsgKi8KKyAgZnJlZShkYXRhLT5yZXEubmV3dXJsKTsKKyAgZGF0YS0+cmVxLm5ld3VybCA9IE5VTEw7CisgIGZyZWUoZGF0YS0+cmVxLmxvY2F0aW9uKTsKKyAgZGF0YS0+cmVxLmxvY2F0aW9uID0gTlVMTDsKKworICBzd2l0Y2goc3RhdHVzKSB7CisgIGNhc2UgQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzoKKyAgY2FzZSBDVVJMRV9SRUFEX0VSUk9SOgorICBjYXNlIENVUkxFX1dSSVRFX0VSUk9SOgorICAgIC8qIFdoZW4gd2UncmUgYWJvcnRlZCBkdWUgdG8gYSBjYWxsYmFjayByZXR1cm4gY29kZSBpdCBiYXNpY2FsbHkgaGF2ZSB0bworICAgICAgIGJlIGNvdW50ZWQgYXMgcHJlbWF0dXJlIGFzIHRoZXJlIGlzIHRyb3VibGUgYWhlYWQgaWYgd2UgZG9uJ3QuIFdlIGhhdmUKKyAgICAgICBtYW55IGNhbGxiYWNrcyBhbmQgcHJvdG9jb2xzIHdvcmsgZGlmZmVyZW50bHksIHdlIGNvdWxkIHBvdGVudGlhbGx5IGRvCisgICAgICAgdGhpcyBtb3JlIGZpbmUtZ3JhaW5lZCBpbiB0aGUgZnV0dXJlLiAqLworICAgIHByZW1hdHVyZSA9IFRSVUU7CisgIGRlZmF1bHQ6CisgICAgYnJlYWs7CisgIH0KKworICAvKiB0aGlzIGNhbGxzIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBmdW5jdGlvbiBwb2ludGVyIHByZXZpb3VzbHkgc2V0ICovCisgIGlmKGNvbm4tPmhhbmRsZXItPmRvbmUpCisgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+ZG9uZShjb25uLCBzdGF0dXMsIHByZW1hdHVyZSk7CisgIGVsc2UKKyAgICByZXN1bHQgPSBzdGF0dXM7CisKKyAgaWYoQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSyAhPSByZXN1bHQpIHsKKyAgICAvKiBhdm9pZCB0aGlzIGlmIHdlIGFscmVhZHkgYWJvcnRlZCBieSBjYWxsYmFjayB0byBhdm9pZCB0aGlzIGNhbGxpbmcKKyAgICAgICBhbm90aGVyIGNhbGxiYWNrICovCisgICAgQ1VSTGNvZGUgcmMgPSBDdXJsX3BncnNEb25lKGNvbm4pOworICAgIGlmKCFyZXN1bHQgJiYgcmMpCisgICAgICByZXN1bHQgPSBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOworICB9CisKKyAgaWYoKCFwcmVtYXR1cmUgJiYKKyAgICAgIGNvbm4tPnNlbmRfcGlwZS0+c2l6ZSArIGNvbm4tPnJlY3ZfcGlwZS0+c2l6ZSAhPSAwICYmCisgICAgICAhZGF0YS0+c2V0LnJldXNlX2ZvcmJpZCAmJgorICAgICAgIWNvbm4tPmJpdHMuY2xvc2UpKSB7CisgICAgLyogU3RvcCBpZiBwaXBlbGluZSBpcyBub3QgZW1wdHkgYW5kIHdlIGRvIG5vdCBoYXZlIHRvIGNsb3NlCisgICAgICAgY29ubmVjdGlvbi4gKi8KKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgIkNvbm5lY3Rpb24gc3RpbGwgaW4gdXNlLCBubyBtb3JlIG11bHRpX2RvbmUgbm93IVxuIikpOworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorCisgIGRhdGEtPnN0YXRlLmRvbmUgPSBUUlVFOyAvKiBjYWxsZWQganVzdCBub3chICovCisgIEN1cmxfcmVzb2x2ZXJfY2FuY2VsKGNvbm4pOworCisgIGlmKGNvbm4tPmRuc19lbnRyeSkgeworICAgIEN1cmxfcmVzb2x2X3VubG9jayhkYXRhLCBjb25uLT5kbnNfZW50cnkpOyAvKiBkb25lIHdpdGggdGhpcyAqLworICAgIGNvbm4tPmRuc19lbnRyeSA9IE5VTEw7CisgIH0KKworICAvKiBpZiB0aGUgdHJhbnNmZXIgd2FzIGNvbXBsZXRlZCBpbiBhIHBhdXNlZCBzdGF0ZSB0aGVyZSBjYW4gYmUgYnVmZmVyZWQKKyAgICAgZGF0YSBsZWZ0IHRvIHdyaXRlIGFuZCB0aGVuIGtpbGwgKi8KKyAgZnJlZShkYXRhLT5zdGF0ZS50ZW1wd3JpdGUpOworICBkYXRhLT5zdGF0ZS50ZW1wd3JpdGUgPSBOVUxMOworCisgIC8qIGlmIGRhdGEtPnNldC5yZXVzZV9mb3JiaWQgaXMgVFJVRSwgaXQgbWVhbnMgdGhlIGxpYmN1cmwgY2xpZW50IGhhcworICAgICBmb3JjZWQgdXMgdG8gY2xvc2UgdGhpcyBjb25uZWN0aW9uLiBUaGlzIGlzIGlnbm9yZWQgZm9yIHJlcXVlc3RzIHRha2luZworICAgICBwbGFjZSBpbiBhIE5UTE0gYXV0aGVudGljYXRpb24gaGFuZHNoYWtlCisKKyAgICAgaWYgY29ubi0+Yml0cy5jbG9zZSBpcyBUUlVFLCBpdCBtZWFucyB0aGF0IHRoZSBjb25uZWN0aW9uIHNob3VsZCBiZQorICAgICBjbG9zZWQgaW4gc3BpdGUgb2YgYWxsIG91ciBlZmZvcnRzIHRvIGJlIG5pY2UsIGR1ZSB0byBwcm90b2NvbAorICAgICByZXN0cmljdGlvbnMgaW4gb3VyIG9yIHRoZSBzZXJ2ZXIncyBlbmQKKworICAgICBpZiBwcmVtYXR1cmUgaXMgVFJVRSwgaXQgbWVhbnMgdGhpcyBjb25uZWN0aW9uIHdhcyBzYWlkIHRvIGJlIERPTkUgYmVmb3JlCisgICAgIHRoZSBlbnRpcmUgcmVxdWVzdCBvcGVyYXRpb24gaXMgY29tcGxldGUgYW5kIHRodXMgd2UgY2FuJ3Qga25vdyBpbiB3aGF0CisgICAgIHN0YXRlIGl0IGlzIGZvciByZS11c2luZywgc28gd2UncmUgZm9yY2VkIHRvIGNsb3NlIGl0LiBJbiBhIHBlcmZlY3Qgd29ybGQKKyAgICAgd2UgY2FuIGFkZCBjb2RlIHRoYXQga2VlcCB0cmFjayBvZiBpZiB3ZSByZWFsbHkgbXVzdCBjbG9zZSBpdCBoZXJlIG9yIG5vdCwKKyAgICAgYnV0IGN1cnJlbnRseSB3ZSBoYXZlIG5vIHN1Y2ggZGV0YWlsIGtub3dsZWRnZS4KKyAgKi8KKworICBpZigoZGF0YS0+c2V0LnJldXNlX2ZvcmJpZAorI2lmIGRlZmluZWQoVVNFX05UTE0pCisgICAgICAmJiAhKGNvbm4tPm50bG0uc3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUyIHx8CisgICAgICAgICAgIGNvbm4tPnByb3h5bnRsbS5zdGF0ZSA9PSBOVExNU1RBVEVfVFlQRTIpCisjZW5kaWYKKyAgICAgKSB8fCBjb25uLT5iaXRzLmNsb3NlIHx8IHByZW1hdHVyZSkgeworICAgIENVUkxjb2RlIHJlczIgPSBDdXJsX2Rpc2Nvbm5lY3QoY29ubiwgcHJlbWF0dXJlKTsgLyogY2xvc2UgY29ubmVjdGlvbiAqLworCisgICAgLyogSWYgd2UgaGFkIGFuIGVycm9yIGFscmVhZHksIG1ha2Ugc3VyZSB3ZSByZXR1cm4gdGhhdCBvbmUuIEJ1dAorICAgICAgIGlmIHdlIGdvdCBhIG5ldyBlcnJvciwgcmV0dXJuIHRoYXQuICovCisgICAgaWYoIXJlc3VsdCAmJiByZXMyKQorICAgICAgcmVzdWx0ID0gcmVzMjsKKyAgfQorICBlbHNlIHsKKyAgICAvKiB0aGUgY29ubmVjdGlvbiBpcyBubyBsb25nZXIgaW4gdXNlICovCisgICAgaWYoQ29ubmVjdGlvbkRvbmUoZGF0YSwgY29ubikpIHsKKyAgICAgIC8qIHJlbWVtYmVyIHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgY29ubmVjdGlvbiAqLworICAgICAgZGF0YS0+c3RhdGUubGFzdGNvbm5lY3QgPSBjb25uOworCisgICAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiAjJWxkIHRvIGhvc3QgJXMgbGVmdCBpbnRhY3RcbiIsCisgICAgICAgICAgICBjb25uLT5jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgY29ubi0+Yml0cy5odHRwcHJveHk/Y29ubi0+cHJveHkuZGlzcG5hbWU6Y29ubi0+aG9zdC5kaXNwbmFtZSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGRhdGEtPnN0YXRlLmxhc3Rjb25uZWN0ID0gTlVMTDsKKyAgfQorCisgICpjb25ucCA9IE5VTEw7IC8qIHRvIG1ha2UgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGJldHRlciBkZXRlY3QgdGhhdAorICAgICAgICAgICAgICAgICAgICB0aGlzIHdhcyBlaXRoZXIgY2xvc2VkIG9yIGhhbmRlZCBvdmVyIHRvIHRoZSBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGNhY2hlIGhlcmUsIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIHVzZWQgZnJvbSB0aGlzIHBvaW50IG9uCisgICAgICAgICAgICAgICAgICovCisgIEN1cmxfZnJlZV9yZXF1ZXN0X3N0YXRlKGRhdGEpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKIENVUkxNY29kZSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoQ1VSTE0gKm11bHRpX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTCAqY3VybF9oYW5kbGUpCiB7CkBAIC01MjAsOCArNjkwLDggQEAKICAgICAgICByZXF1ZXN0IGJ1dCBub3QgcmVjZWl2ZWQgaXRzIHJlc3BvbnNlIHlldCwgd2UgbmVlZCB0byBjbG9zZQogICAgICAgIGNvbm5lY3Rpb24uICovCiAgICAgY29ubmNsb3NlKGRhdGEtPmVhc3lfY29ubiwgIlJlbW92ZWQgd2l0aCBwYXJ0aWFsIHJlc3BvbnNlIik7Ci0gICAgLyogU2V0IGNvbm5lY3Rpb24gb3duZXIgc28gdGhhdCBDdXJsX2RvbmUoKSBjbG9zZXMgaXQuCi0gICAgICAgV2UgY2FuIHNhZmVseSBkbyB0aGlzIGhlcmUgc2luY2UgY29ubmVjdGlvbiBpcyBraWxsZWQuICovCisgICAgLyogU2V0IGNvbm5lY3Rpb24gb3duZXIgc28gdGhhdCB0aGUgRE9ORSBmdW5jdGlvbiBjbG9zZXMgaXQuICBXZSBjYW4KKyAgICAgICBzYWZlbHkgZG8gdGhpcyBoZXJlIHNpbmNlIGNvbm5lY3Rpb24gaXMga2lsbGVkLiAqLwogICAgIGRhdGEtPmVhc3lfY29ubi0+ZGF0YSA9IGVhc3k7CiAgICAgZWFzeV9vd25zX2Nvbm4gPSBUUlVFOwogICB9CkBAIC01MzEsMTIgKzcwMSw2IEBACiAgICAgIGN1cmxfZWFzeV9jbGVhbnVwIGlzIGNhbGxlZC4gKi8KICAgQ3VybF9leHBpcmUoZGF0YSwgMCk7CiAKLSAgLyogZGVzdHJveSB0aGUgdGltZW91dCBsaXN0IHRoYXQgaXMgaGVsZCBpbiB0aGUgZWFzeSBoYW5kbGUgKi8KLSAgaWYoZGF0YS0+c3RhdGUudGltZW91dGxpc3QpIHsKLSAgICBDdXJsX2xsaXN0X2Rlc3Ryb3koZGF0YS0+c3RhdGUudGltZW91dGxpc3QsIE5VTEwpOwotICAgIGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0ID0gTlVMTDsKLSAgfQotCiAgIGlmKGRhdGEtPmRucy5ob3N0Y2FjaGV0eXBlID09IEhDQUNIRV9NVUxUSSkgewogICAgIC8qIHN0b3AgdXNpbmcgdGhlIG11bHRpIGhhbmRsZSdzIEROUyBjYWNoZSAqLwogICAgIGRhdGEtPmRucy5ob3N0Y2FjaGUgPSBOVUxMOwpAQCAtNTQ1LDI0ICs3MDksMzEgQEAKIAogICBpZihkYXRhLT5lYXN5X2Nvbm4pIHsKIAotICAgIC8qIHdlIG11c3QgY2FsbCBDdXJsX2RvbmUoKSBoZXJlIChpZiB3ZSBzdGlsbCAib3duIGl0Iikgc28gdGhhdCB3ZSBkb24ndAotICAgICAgIGxlYXZlIGEgaGFsZi1iYWtlZCBvbmUgYXJvdW5kICovCisgICAgLyogd2UgbXVzdCBjYWxsIG11bHRpX2RvbmUoKSBoZXJlIChpZiB3ZSBzdGlsbCBvd24gdGhlIGNvbm5lY3Rpb24pIHNvIHRoYXQKKyAgICAgICB3ZSBkb24ndCBsZWF2ZSBhIGhhbGYtYmFrZWQgb25lIGFyb3VuZCAqLwogICAgIGlmKGVhc3lfb3duc19jb25uKSB7CiAKLSAgICAgIC8qIEN1cmxfZG9uZSgpIGNsZWFycyB0aGUgY29ubi0+ZGF0YSBmaWVsZCB0byBsb3NlIHRoZSBhc3NvY2lhdGlvbgorICAgICAgLyogbXVsdGlfZG9uZSgpIGNsZWFycyB0aGUgY29ubi0+ZGF0YSBmaWVsZCB0byBsb3NlIHRoZSBhc3NvY2lhdGlvbgogICAgICAgICAgYmV0d2VlbiB0aGUgZWFzeSBoYW5kbGUgYW5kIHRoZSBjb25uZWN0aW9uCiAKICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIGlnbm9yZXMgdGhlIHJldHVybiBjb2RlIHNpbXBseSBiZWNhdXNlIHRoZXJlJ3MKICAgICAgICAgIG5vdGhpbmcgcmVhbGx5IHVzZWZ1bCB0byBkbyB3aXRoIGl0IGFueXdheSEgKi8KLSAgICAgICh2b2lkKUN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCBkYXRhLT5yZXN1bHQsIHByZW1hdHVyZSk7CisgICAgICAodm9pZCltdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIGRhdGEtPnJlc3VsdCwgcHJlbWF0dXJlKTsKICAgICB9CiAgICAgZWxzZQotICAgICAgLyogQ2xlYXIgY29ubmVjdGlvbiBwaXBlbGluZXMsIGlmIEN1cmxfZG9uZSBhYm92ZSB3YXMgbm90IGNhbGxlZCAqLworICAgICAgLyogQ2xlYXIgY29ubmVjdGlvbiBwaXBlbGluZXMsIGlmIG11bHRpX2RvbmUgYWJvdmUgd2FzIG5vdCBjYWxsZWQgKi8KICAgICAgIEN1cmxfZ2V0b2ZmX2FsbF9waXBlbGluZXMoZGF0YSwgZGF0YS0+ZWFzeV9jb25uKTsKICAgfQogCiAgIEN1cmxfd2lsZGNhcmRfZHRvcigmZGF0YS0+d2lsZGNhcmQpOwogCisgIC8qIGRlc3Ryb3kgdGhlIHRpbWVvdXQgbGlzdCB0aGF0IGlzIGhlbGQgaW4gdGhlIGVhc3kgaGFuZGxlLCBkbyB0aGlzICphZnRlcioKKyAgICAgbXVsdGlfZG9uZSgpIGFzIHRoYXQgbWF5IGFjdHVhbGx5IGNhbGwgQ3VybF9leHBpcmUgdGhhdCB1c2VzIHRoaXMgKi8KKyAgaWYoZGF0YS0+c3RhdGUudGltZW91dGxpc3QpIHsKKyAgICBDdXJsX2xsaXN0X2Rlc3Ryb3koZGF0YS0+c3RhdGUudGltZW91dGxpc3QsIE5VTEwpOworICAgIGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0ID0gTlVMTDsKKyAgfQorCiAgIC8qIGFzIHRoaXMgd2FzIHVzaW5nIGEgc2hhcmVkIGNvbm5lY3Rpb24gY2FjaGUgd2UgY2xlYXIgdGhlIHBvaW50ZXIgdG8gdGhhdAogICAgICBzaW5jZSB3ZSdyZSBub3QgcGFydCBvZiB0aGF0IG11bHRpIGhhbmRsZSBhbnltb3JlICovCiAgIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUgPSBOVUxMOwpAQCAtODA0LDYgKzk3NSw3IEBACiAgIHVuc2lnbmVkIGludCBjdXJsZmRzOwogICBzdHJ1Y3QgcG9sbGZkICp1ZmRzID0gTlVMTDsKICAgbG9uZyB0aW1lb3V0X2ludGVybmFsOworICBpbnQgcmV0Y29kZSA9IDA7CiAKICAgaWYoIUdPT0RfTVVMVElfSEFORExFKG11bHRpKSkKICAgICByZXR1cm4gQ1VSTE1fQkFEX0hBTkRMRTsKQEAgLTg5NiwxOCArMTA2OCwyMCBAQAogICB9CiAKICAgaWYobmZkcykgeworICAgIGludCBwb2xscmM7CiAgICAgLyogd2FpdC4uLiAqLwotICAgIGluZm9mKGRhdGEsICJDdXJsX3BvbGwoJWQgZHMsICVkIG1zKVxuIiwgbmZkcywgdGltZW91dF9tcyk7Ci0gICAgaSA9IEN1cmxfcG9sbCh1ZmRzLCBuZmRzLCB0aW1lb3V0X21zKTsKKyAgICBwb2xscmMgPSBDdXJsX3BvbGwodWZkcywgbmZkcywgdGltZW91dF9tcyk7CisgICAgREVCVUdGKGluZm9mKGRhdGEsICJDdXJsX3BvbGwoJWQgZHMsICVkIG1zKSA9PSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgbmZkcywgdGltZW91dF9tcywgcG9sbHJjKSk7CiAKLSAgICBpZihpKSB7Ci0gICAgICB1bnNpZ25lZCBpbnQgajsKKyAgICBpZihwb2xscmMgPiAwKSB7CisgICAgICByZXRjb2RlID0gcG9sbHJjOwogICAgICAgLyogY29weSByZXZlbnRzIHJlc3VsdHMgZnJvbSB0aGUgcG9sbCB0byB0aGUgY3VybF9tdWx0aV93YWl0IHBvbGwKICAgICAgICAgIHN0cnVjdCwgdGhlIGJpdCB2YWx1ZXMgb2YgdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHBvbGwoKSBpbXBsZW1lbnRhdGlvbgogICAgICAgICAgbWF5IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lcyBpbiB0aGUgcHVibGljIGxpYmN1cmwgQVBJISAqLwotICAgICAgZm9yKGogPSAwOyBqIDwgZXh0cmFfbmZkczsgaisrKSB7CisgICAgICBmb3IoaSA9IDA7IGkgPCBleHRyYV9uZmRzOyBpKyspIHsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbWFzayA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIHIgPSB1ZmRzW2N1cmxmZHMgKyBqXS5yZXZlbnRzOworICAgICAgICB1bnNpZ25lZCByID0gdWZkc1tjdXJsZmRzICsgaV0ucmV2ZW50czsKIAogICAgICAgICBpZihyICYgUE9MTElOKQogICAgICAgICAgIG1hc2sgfD0gQ1VSTF9XQUlUX1BPTExJTjsKQEAgLTkxNiwxNiArMTA5MCwxNCBAQAogICAgICAgICBpZihyICYgUE9MTFBSSSkKICAgICAgICAgICBtYXNrIHw9IENVUkxfV0FJVF9QT0xMUFJJOwogCi0gICAgICAgIGV4dHJhX2Zkc1tqXS5yZXZlbnRzID0gbWFzazsKKyAgICAgICAgZXh0cmFfZmRzW2ldLnJldmVudHMgPSBtYXNrOwogICAgICAgfQogICAgIH0KICAgfQotICBlbHNlCi0gICAgaSA9IDA7CiAKICAgZnJlZSh1ZmRzKTsKICAgaWYocmV0KQotICAgICpyZXQgPSBpOworICAgICpyZXQgPSByZXRjb2RlOwogICByZXR1cm4gQ1VSTE1fT0s7CiB9CiAKQEAgLTk1Nyw2ICsxMTI5LDE2MSBAQAogICByZXR1cm4gcmV0dmFsOwogfQogCitDVVJMTWNvZGUgQ3VybF9tdWx0aV9hZGRfcGVyZm9ybShzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgQ1VSTE1jb2RlIHJjOworCisgIHJjID0gY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpLCBkYXRhKTsKKyAgaWYoIXJjKSB7CisgICAgc3RydWN0IFNpbmdsZVJlcXVlc3QgKmsgPSAmZGF0YS0+cmVxOworCisgICAgLyogcGFzcyBpbiBOVUxMIGZvciAnY29ubicgaGVyZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGluaXQgdGhlCisgICAgICAgY29ubmVjdGlvbiwgb25seSB0aGlzIHRyYW5zZmVyICovCisgICAgQ3VybF9pbml0X2RvKGRhdGEsIE5VTEwpOworCisgICAgLyogdGFrZSB0aGlzIGhhbmRsZSB0byB0aGUgcGVyZm9ybSBzdGF0ZSByaWdodCBhd2F5ICovCisgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9QRVJGT1JNKTsKKyAgICBkYXRhLT5lYXN5X2Nvbm4gPSBjb25uOworICAgIGstPmtlZXBvbiB8PSBLRUVQX1JFQ1Y7IC8qIHNldHVwIHRvIHJlY2VpdmUhICovCisgIH0KKyAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgQ1VSTGNvZGUgbXVsdGlfcmVjb25uZWN0X3JlcXVlc3Qoc3RydWN0IGNvbm5lY3RkYXRhICoqY29ubnApCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAqY29ubnA7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKKworICAvKiBUaGlzIHdhcyBhIHJlLXVzZSBvZiBhIGNvbm5lY3Rpb24gYW5kIHdlIGdvdCBhIHdyaXRlIGVycm9yIGluIHRoZQorICAgKiBETy1waGFzZS4gVGhlbiB3ZSBESVNDT05ORUNUIHRoaXMgY29ubmVjdGlvbiBhbmQgaGF2ZSBhbm90aGVyIGF0dGVtcHQgdG8KKyAgICogQ09OTkVDVCBhbmQgdGhlbiBETyBhZ2FpbiEgVGhlIHJldHJ5IGNhbm5vdCBwb3NzaWJseSBmaW5kIGFub3RoZXIKKyAgICogY29ubmVjdGlvbiB0byByZS11c2UsIHNpbmNlIHdlIG9ubHkga2VlcCBvbmUgcG9zc2libGUgY29ubmVjdGlvbiBmb3IKKyAgICogZWFjaC4gICovCisKKyAgaW5mb2YoZGF0YSwgIlJlLXVzZWQgY29ubmVjdGlvbiBzZWVtcyBkZWFkLCBnZXQgYSBuZXcgb25lXG4iKTsKKworICBjb25uY2xvc2UoY29ubiwgIlJlY29ubmVjdCBkZWFkIGNvbm5lY3Rpb24iKTsgLyogZW5mb3JjZSBjbG9zZSAqLworICByZXN1bHQgPSBtdWx0aV9kb25lKCZjb25uLCByZXN1bHQsIEZBTFNFKTsgLyogd2UgYXJlIHNvIGRvbmUgd2l0aCB0aGlzICovCisKKyAgLyogY29ubiBtYXkgbm8gbG9uZ2VyIGJlIGEgZ29vZCBwb2ludGVyLCBjbGVhciBpdCB0byBhdm9pZCBtaXN0YWtlcyBieQorICAgICBwYXJlbnQgZnVuY3Rpb25zICovCisgICpjb25ucCA9IE5VTEw7CisKKyAgLyoKKyAgICogV2UgbmVlZCB0byBjaGVjayBmb3IgQ1VSTEVfU0VORF9FUlJPUiBoZXJlIGFzIHdlbGwuIFRoaXMgY291bGQgaGFwcGVuCisgICAqIHdoZW4gdGhlIHJlcXVlc3QgZmFpbGVkIG9uIGEgRlRQIGNvbm5lY3Rpb24gYW5kIHRodXMgbXVsdGlfZG9uZSgpIGl0c2VsZgorICAgKiB0cmllZCB0byB1c2UgdGhlIGNvbm5lY3Rpb24gKGFnYWluKS4KKyAgICovCisgIGlmKCFyZXN1bHQgfHwgKENVUkxFX1NFTkRfRVJST1IgPT0gcmVzdWx0KSkgeworICAgIGJvb2wgYXN5bmM7CisgICAgYm9vbCBwcm90b2NvbF9kb25lID0gVFJVRTsKKworICAgIC8qIE5vdywgcmVkbyB0aGUgY29ubmVjdCBhbmQgZ2V0IGEgbmV3IGNvbm5lY3Rpb24gKi8KKyAgICByZXN1bHQgPSBDdXJsX2Nvbm5lY3QoZGF0YSwgY29ubnAsICZhc3luYywgJnByb3RvY29sX2RvbmUpOworICAgIGlmKCFyZXN1bHQpIHsKKyAgICAgIC8qIFdlIGhhdmUgY29ubmVjdGVkIG9yIHNlbnQgYXdheSBhIG5hbWUgcmVzb2x2ZSBxdWVyeSBmaW5lICovCisKKyAgICAgIGNvbm4gPSAqY29ubnA7IC8qIHNldHVwIGNvbm4gdG8gYWdhaW4gcG9pbnQgdG8gc29tZXRoaW5nIG5pY2UgKi8KKyAgICAgIGlmKGFzeW5jKSB7CisgICAgICAgIC8qIE5vdywgaWYgYXN5bmMgaXMgVFJVRSBoZXJlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuYW1lCisgICAgICAgICAgIHRvIHJlc29sdmUgKi8KKyAgICAgICAgcmVzdWx0ID0gQ3VybF9yZXNvbHZlcl93YWl0X3Jlc29sdihjb25uLCBOVUxMKTsKKyAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgLyogUmVzb2x2ZWQsIGNvbnRpbnVlIHdpdGggdGhlIGNvbm5lY3Rpb24gKi8KKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hc3luY19yZXNvbHZlZChjb25uLCAmcHJvdG9jb2xfZG9uZSk7CisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBkb19jb21wbGV0ZSBpcyBjYWxsZWQgd2hlbiB0aGUgRE8gYWN0aW9ucyBhcmUgY29tcGxldGUuCisgKgorICogV2UgaW5pdCBjaHVua2luZyBhbmQgdHJhaWxlciBiaXRzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGhlcmUgaW1tZWRpYXRlbHkKKyAqIGJlZm9yZSByZWNlaXZpbmcgYW55IGhlYWRlciBkYXRhIGZvciB0aGUgY3VycmVudCByZXF1ZXN0IGluIHRoZSBwaXBlbGluZS4KKyAqLworc3RhdGljIHZvaWQgZG9fY29tcGxldGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBjb25uLT5kYXRhLT5yZXEuY2h1bms9RkFMU0U7CisgIGNvbm4tPmRhdGEtPnJlcS5tYXhmZCA9IChjb25uLT5zb2NrZmQ+Y29ubi0+d3JpdGVzb2NrZmQ/CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5zb2NrZmQ6Y29ubi0+d3JpdGVzb2NrZmQpKzE7CisgIEN1cmxfcGdyc1RpbWUoY29ubi0+ZGF0YSwgVElNRVJfUFJFVFJBTlNGRVIpOworfQorCitzdGF0aWMgQ1VSTGNvZGUgbXVsdGlfZG8oc3RydWN0IGNvbm5lY3RkYXRhICoqY29ubnAsIGJvb2wgKmRvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdD1DVVJMRV9PSzsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKmNvbm5wOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisKKyAgaWYoY29ubi0+aGFuZGxlci0+ZG9faXQpIHsKKyAgICAvKiBnZW5lcmljIHByb3RvY29sLXNwZWNpZmljIGZ1bmN0aW9uIHBvaW50ZXIgc2V0IGluIGN1cmxfY29ubmVjdCgpICovCisgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+ZG9faXQoY29ubiwgZG9uZSk7CisKKyAgICAvKiBUaGlzIHdhcyBmb3JtZXJseSBkb25lIGluIHRyYW5zZmVyLmMsIGJ1dCB3ZSBiZXR0ZXIgZG8gaXQgaGVyZSAqLworICAgIGlmKChDVVJMRV9TRU5EX0VSUk9SID09IHJlc3VsdCkgJiYgY29ubi0+Yml0cy5yZXVzZSkgeworICAgICAgLyoKKyAgICAgICAqIElmIHRoZSBjb25uZWN0aW9uIGlzIHVzaW5nIGFuIGVhc3kgaGFuZGxlLCBjYWxsIHJlY29ubmVjdAorICAgICAgICogdG8gcmUtZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlLCBsZXQgdGhlIG11bHRpIGxvZ2ljCisgICAgICAgKiBmaWd1cmUgb3V0IGhvdyB0byByZS1lc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24uCisgICAgICAgKi8KKyAgICAgIGlmKCFkYXRhLT5tdWx0aSkgeworICAgICAgICByZXN1bHQgPSBtdWx0aV9yZWNvbm5lY3RfcmVxdWVzdChjb25ucCk7CisKKyAgICAgICAgaWYoIXJlc3VsdCkgeworICAgICAgICAgIC8qIC4uLiBmaW5hbGx5IGJhY2sgdG8gYWN0dWFsbHkgcmV0cnkgdGhlIERPIHBoYXNlICovCisgICAgICAgICAgY29ubiA9ICpjb25ucDsgLyogcmUtYXNzaWduIGNvbm4gc2luY2UgbXVsdGlfcmVjb25uZWN0X3JlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgbmV3IGNvbm5lY3Rpb24gKi8KKyAgICAgICAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb19pdChjb25uLCBkb25lKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmKCFyZXN1bHQgJiYgKmRvbmUpCisgICAgICAvKiBkb19jb21wbGV0ZSBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgRE8gZnVuY3Rpb24gKi8KKyAgICAgIGRvX2NvbXBsZXRlKGNvbm4pOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBtdWx0aV9kb19tb3JlKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgRE9fTU9SRSBtdWx0aSBzdGF0ZS4gSXQgaXMgYmFzaWNhbGx5IGEKKyAqIHNlY29uZCBzdGFnZSBETyBzdGF0ZSB3aGljaCAod3JvbmdseSkgd2FzIGludHJvZHVjZWQgdG8gc3VwcG9ydCBGVFAncworICogc2Vjb25kIGNvbm5lY3Rpb24uCisgKgorICogVE9ETzogQSBmdXR1cmUgbGliY3VybCBzaG91bGQgYmUgYWJsZSB0byB3b3JrIGF3YXkgdGhpcyBzdGF0ZS4KKyAqCisgKiAnY29tcGxldGUnIGNhbiByZXR1cm4gMCBmb3IgaW5jb21wbGV0ZSwgMSBmb3IgZG9uZSBhbmQgLTEgZm9yIGdvIGJhY2sgdG8KKyAqIERPSU5HIHN0YXRlIHRoZXJlJ3MgbW9yZSB3b3JrIHRvIGRvIQorICovCisKK3N0YXRpYyBDVVJMY29kZSBtdWx0aV9kb19tb3JlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50ICpjb21wbGV0ZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0PUNVUkxFX09LOworCisgICpjb21wbGV0ZSA9IDA7CisKKyAgaWYoY29ubi0+aGFuZGxlci0+ZG9fbW9yZSkKKyAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb19tb3JlKGNvbm4sIGNvbXBsZXRlKTsKKworICBpZighcmVzdWx0ICYmICgqY29tcGxldGUgPT0gMSkpCisgICAgLyogZG9fY29tcGxldGUgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHByb3RvY29sLXNwZWNpZmljIERPIGZ1bmN0aW9uICovCisgICAgZG9fY29tcGxldGUoY29ubik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIENVUkxNY29kZSBtdWx0aV9ydW5zaW5nbGUoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgbm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpCkBAIC0xMDQyLDcgKzEzNjksNyBAQAogICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQgYWZ0ZXIgJWxkIG1pbGxpc2Vjb25kcyB3aXRoICUiCiAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIgb3V0IG9mICUiCiAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIgYnl0ZXMgcmVjZWl2ZWQiLAotICAgICAgICAgICAgICAgICAgQ3VybF90dmRpZmYoay0+bm93LCBkYXRhLT5wcm9ncmVzcy50X3N0YXJ0c2luZ2xlKSwKKyAgICAgICAgICAgICAgICAgIEN1cmxfdHZkaWZmKG5vdywgZGF0YS0+cHJvZ3Jlc3MudF9zdGFydHNpbmdsZSksCiAgICAgICAgICAgICAgICAgICBrLT5ieXRlY291bnQsIGstPnNpemUpOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIHsKQEAgLTEwNTksNyArMTM4Niw3IEBACiAgICAgICAgICAgZGlzY29ubmVjdF9jb25uID0gVFJVRTsKICAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7Ci0gICAgICAgICh2b2lkKUN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIFRSVUUpOworICAgICAgICAodm9pZCltdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgVFJVRSk7CiAgICAgICAgIC8qIFNraXAgdGhlIHN0YXRlbWFjaGluZSBhbmQgZ28gZGlyZWN0bHkgdG8gZXJyb3IgaGFuZGxpbmcgc2VjdGlvbi4gKi8KICAgICAgICAgZ290byBzdGF0ZW1hY2hpbmVfZW5kOwogICAgICAgfQpAQCAtMTEzNyw5ICsxNDY0LDE3IEBACiAgICAgewogICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICpkbnMgPSBOVUxMOwogICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gZGF0YS0+ZWFzeV9jb25uOworICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWU7CisKKyAgICAgIGlmKGNvbm4tPmJpdHMucHJveHkpCisgICAgICAgIGhvc3RuYW1lID0gY29ubi0+cHJveHkubmFtZTsKKyAgICAgIGVsc2UgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QpCisgICAgICAgIGhvc3RuYW1lID0gY29ubi0+Y29ubl90b19ob3N0Lm5hbWU7CisgICAgICBlbHNlCisgICAgICAgIGhvc3RuYW1lID0gY29ubi0+aG9zdC5uYW1lOwogCiAgICAgICAvKiBjaGVjayBpZiB3ZSBoYXZlIHRoZSBuYW1lIHJlc29sdmVkIGJ5IG5vdyAqLwotICAgICAgZG5zID0gQ3VybF9mZXRjaF9hZGRyKGNvbm4sIGNvbm4tPmhvc3QubmFtZSwgKGludCljb25uLT5wb3J0KTsKKyAgICAgIGRucyA9IEN1cmxfZmV0Y2hfYWRkcihjb25uLCBob3N0bmFtZSwgKGludCljb25uLT5wb3J0KTsKIAogICAgICAgaWYoZG5zKSB7CiAjaWZkZWYgQ1VSTFJFU19BU1lOQ0gKQEAgLTExNDcsNyArMTQ4Miw3IEBACiAgICAgICAgIGNvbm4tPmFzeW5jLmRvbmUgPSBUUlVFOwogI2VuZGlmCiAgICAgICAgIHJlc3VsdCA9IENVUkxFX09LOwotICAgICAgICBpbmZvZihkYXRhLCAiSG9zdG5hbWUgd2FzIGZvdW5kIGluIEROUyBjYWNoZVxuIik7CisgICAgICAgIGluZm9mKGRhdGEsICJIb3N0bmFtZSAnJXMnIHdhcyBmb3VuZCBpbiBETlMgY2FjaGVcbiIsIGhvc3RuYW1lKTsKICAgICAgIH0KIAogICAgICAgaWYoIWRucykKQEAgLTEyMDAsMTcgKzE1MzUsMTkgQEAKICAgICAgIC8qIHRoaXMgaXMgSFRUUC1zcGVjaWZpYywgYnV0IHNlbmRpbmcgQ09OTkVDVCB0byBhIHByb3h5IGlzIEhUVFAuLi4gKi8KICAgICAgIHJlc3VsdCA9IEN1cmxfaHR0cF9jb25uZWN0KGRhdGEtPmVhc3lfY29ubiwgJnByb3RvY29sX2Nvbm5lY3QpOwogCi0gICAgICByYyA9IENVUkxNX0NBTExfTVVMVElfUEVSRk9STTsKICAgICAgIGlmKGRhdGEtPmVhc3lfY29ubi0+Yml0cy5wcm94eV9jb25uZWN0X2Nsb3NlZCkgeworICAgICAgICByYyA9IENVUkxNX0NBTExfTVVMVElfUEVSRk9STTsKICAgICAgICAgLyogY29ubmVjdCBiYWNrIHRvIHByb3h5IGFnYWluICovCiAgICAgICAgIHJlc3VsdCA9IENVUkxFX09LOwotICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgQ1VSTEVfT0ssIEZBTFNFKTsKKyAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCBDVVJMRV9PSywgRkFMU0UpOwogICAgICAgICBtdWx0aXN0YXRlKGRhdGEsIENVUkxNX1NUQVRFX0NPTk5FQ1QpOwogICAgICAgfQogICAgICAgZWxzZSBpZighcmVzdWx0KSB7Ci0gICAgICAgIGlmKGRhdGEtPmVhc3lfY29ubi0+dHVubmVsX3N0YXRlW0ZJUlNUU09DS0VUXSA9PSBUVU5ORUxfQ09NUExFVEUpCisgICAgICAgIGlmKGRhdGEtPmVhc3lfY29ubi0+dHVubmVsX3N0YXRlW0ZJUlNUU09DS0VUXSA9PSBUVU5ORUxfQ09NUExFVEUpIHsKKyAgICAgICAgICByYyA9IENVUkxNX0NBTExfTVVMVElfUEVSRk9STTsKICAgICAgICAgICAvKiBpbml0aWF0ZSBwcm90b2NvbCBjb25uZWN0IHBoYXNlICovCiAgICAgICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9TRU5EUFJPVE9DT05ORUNUKTsKKyAgICAgICAgfQogICAgICAgfQogICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTEyNDYsNyArMTU4Myw3IEBACiAgICAgICBlbHNlIGlmKHJlc3VsdCkgewogICAgICAgICAvKiBmYWlsdXJlIGRldGVjdGVkICovCiAgICAgICAgIEN1cmxfcG9zdHRyYW5zZmVyKGRhdGEpOwotICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBUUlVFKTsKKyAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIFRSVUUpOwogICAgICAgICBkaXNjb25uZWN0X2Nvbm4gPSBUUlVFOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0xMjYzLDcgKzE2MDAsNyBAQAogICAgICAgZWxzZSBpZihyZXN1bHQpIHsKICAgICAgICAgLyogZmFpbHVyZSBkZXRlY3RlZCAqLwogICAgICAgICBDdXJsX3Bvc3R0cmFuc2ZlcihkYXRhKTsKLSAgICAgICAgQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgVFJVRSk7CisgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBUUlVFKTsKICAgICAgICAgZGlzY29ubmVjdF9jb25uID0gVFJVRTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTI4Nyw5ICsxNjI0LDkgQEAKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICAvKiBQZXJmb3JtIHRoZSBwcm90b2NvbCdzIERPIGFjdGlvbiAqLwotICAgICAgICByZXN1bHQgPSBDdXJsX2RvKCZkYXRhLT5lYXN5X2Nvbm4sICZkb3BoYXNlX2RvbmUpOworICAgICAgICByZXN1bHQgPSBtdWx0aV9kbygmZGF0YS0+ZWFzeV9jb25uLCAmZG9waGFzZV9kb25lKTsKIAotICAgICAgICAvKiBXaGVuIEN1cmxfZG8oKSByZXR1cm5zIGZhaWx1cmUsIGRhdGEtPmVhc3lfY29ubiBtaWdodCBiZSBOVUxMISAqLworICAgICAgICAvKiBXaGVuIG11bHRpX2RvKCkgcmV0dXJucyBmYWlsdXJlLCBkYXRhLT5lYXN5X2Nvbm4gbWlnaHQgYmUgTlVMTCEgKi8KIAogICAgICAgICBpZighcmVzdWx0KSB7CiAgICAgICAgICAgaWYoIWRvcGhhc2VfZG9uZSkgewpAQCAtMTI5OCw3ICsxNjM1LDcgQEAKICAgICAgICAgICAgICAgc3RydWN0IFdpbGRjYXJkRGF0YSAqd2MgPSAmZGF0YS0+d2lsZGNhcmQ7CiAgICAgICAgICAgICAgIGlmKHdjLT5zdGF0ZSA9PSBDVVJMV0NfRE9ORSB8fCB3Yy0+c3RhdGUgPT0gQ1VSTFdDX1NLSVApIHsKICAgICAgICAgICAgICAgICAvKiBza2lwIHNvbWUgc3RhdGVzIGlmIGl0IGlzIGltcG9ydGFudCAqLwotICAgICAgICAgICAgICAgIEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCBDVVJMRV9PSywgRkFMU0UpOworICAgICAgICAgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgQ1VSTEVfT0ssIEZBTFNFKTsKICAgICAgICAgICAgICAgICBtdWx0aXN0YXRlKGRhdGEsIENVUkxNX1NUQVRFX0RPTkUpOwogICAgICAgICAgICAgICAgIHJjID0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM0NSw3ICsxNjgyLDcgQEAKICAgICAgICAgICAgIHJldHJ5ID0gKG5ld3VybCk/VFJVRTpGQUxTRTsKIAogICAgICAgICAgIEN1cmxfcG9zdHRyYW5zZmVyKGRhdGEpOwotICAgICAgICAgIGRyYyA9IEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgICBkcmMgPSBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOwogCiAgICAgICAgICAgLyogV2hlbiBzZXQgdG8gcmV0cnkgdGhlIGNvbm5lY3Rpb24sIHdlIG11c3QgdG8gZ28gYmFjayB0bwogICAgICAgICAgICAqIHRoZSBDT05ORUNUIHN0YXRlICovCkBAIC0xMzgwLDcgKzE3MTcsNyBAQAogICAgICAgICAgIC8qIGZhaWx1cmUgZGV0ZWN0ZWQgKi8KICAgICAgICAgICBDdXJsX3Bvc3R0cmFuc2ZlcihkYXRhKTsKICAgICAgICAgICBpZihkYXRhLT5lYXN5X2Nvbm4pCi0gICAgICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgICAgICBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOwogICAgICAgICAgIGRpc2Nvbm5lY3RfY29ubiA9IFRSVUU7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTE0MDIsNyArMTczOSw3IEBACiAgICAgICBlbHNlIHsKICAgICAgICAgLyogZmFpbHVyZSBkZXRlY3RlZCAqLwogICAgICAgICBDdXJsX3Bvc3R0cmFuc2ZlcihkYXRhKTsKLSAgICAgICAgQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOworICAgICAgICBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOwogICAgICAgICBkaXNjb25uZWN0X2Nvbm4gPSBUUlVFOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0xNDExLDEwICsxNzQ4LDEwIEBACiAgICAgICAvKgogICAgICAgICogV2hlbiB3ZSBhcmUgY29ubmVjdGVkLCBETyBNT1JFIGFuZCB0aGVuIGdvIERPX0RPTkUKICAgICAgICAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9kb19tb3JlKGRhdGEtPmVhc3lfY29ubiwgJmNvbnRyb2wpOworICAgICAgcmVzdWx0ID0gbXVsdGlfZG9fbW9yZShkYXRhLT5lYXN5X2Nvbm4sICZjb250cm9sKTsKIAogICAgICAgLyogTm8gbmVlZCB0byByZW1vdmUgdGhpcyBoYW5kbGUgZnJvbSB0aGUgc2VuZCBwaXBlbGluZSBoZXJlIHNpbmNlIHRoYXQKLSAgICAgICAgIGlzIGRvbmUgaW4gQ3VybF9kb25lKCkgKi8KKyAgICAgICAgIGlzIGRvbmUgaW4gbXVsdGlfZG9uZSgpICovCiAgICAgICBpZighcmVzdWx0KSB7CiAgICAgICAgIGlmKGNvbnRyb2wpIHsKICAgICAgICAgICAvKiBpZiBwb3NpdGl2ZSwgYWR2YW5jZSB0byBET19ET05FCkBAIC0xNDMxLDcgKzE3NjgsNyBAQAogICAgICAgZWxzZSB7CiAgICAgICAgIC8qIGZhaWx1cmUgZGV0ZWN0ZWQgKi8KICAgICAgICAgQ3VybF9wb3N0dHJhbnNmZXIoZGF0YSk7Ci0gICAgICAgIEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKICAgICAgICAgZGlzY29ubmVjdF9jb25uID0gVFJVRTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTQ2OSw3ICsxODA2LDcgQEAKICAgICAgICAgcmVzdWx0ID0gQ3VybF9zcGVlZGNoZWNrKGRhdGEsIG5vdyk7CiAKICAgICAgIGlmKCggKGRhdGEtPnNldC5tYXhfc2VuZF9zcGVlZCA9PSAwKSB8fAotICAgICAgICAgICAoZGF0YS0+cHJvZ3Jlc3MudWxzcGVlZCA8IGRhdGEtPnNldC5tYXhfc2VuZF9zcGVlZCApKSAgJiYKKyAgICAgICAgICAgKGRhdGEtPnByb2dyZXNzLnVsc3BlZWQgPCBkYXRhLT5zZXQubWF4X3NlbmRfc3BlZWQpKSAgJiYKICAgICAgICAgICggKGRhdGEtPnNldC5tYXhfcmVjdl9zcGVlZCA9PSAwKSB8fAogICAgICAgICAgICAoZGF0YS0+cHJvZ3Jlc3MuZGxzcGVlZCA8IGRhdGEtPnNldC5tYXhfcmVjdl9zcGVlZCkpKQogICAgICAgICBtdWx0aXN0YXRlKGRhdGEsIENVUkxNX1NUQVRFX1BFUkZPUk0pOwpAQCAtMTU1MSwxMSArMTg4OCwxMiBAQAogICAgICAgICAgKiBoYXBwZW5lZCBpbiB0aGUgZGF0YSBjb25uZWN0aW9uLgogICAgICAgICAgKi8KIAotICAgICAgICBpZighKGRhdGEtPmVhc3lfY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX0RVQUwpKQorICAgICAgICBpZighKGRhdGEtPmVhc3lfY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX0RVQUwpICYmCisgICAgICAgICAgIHJlc3VsdCAhPSBDVVJMRV9IVFRQMl9TVFJFQU0pCiAgICAgICAgICAgY29ubmNsb3NlKGRhdGEtPmVhc3lfY29ubiwgIlRyYW5zZmVyIHJldHVybmVkIGVycm9yIik7CiAKICAgICAgICAgQ3VybF9wb3N0dHJhbnNmZXIoZGF0YSk7Ci0gICAgICAgIEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKICAgICAgIH0KICAgICAgIGVsc2UgaWYoZG9uZSkgewogICAgICAgICBmb2xsb3d0eXBlIGZvbGxvdz1GT0xMT1dfTk9ORTsKQEAgLTE1ODYsNyArMTkyNCw3IEBACiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvbGxvdyA9IEZPTExPV19SRVRSWTsKLSAgICAgICAgICByZXN1bHQgPSBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgQ1VSTEVfT0ssIEZBTFNFKTsKKyAgICAgICAgICByZXN1bHQgPSBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIENVUkxFX09LLCBGQUxTRSk7CiAgICAgICAgICAgaWYoIXJlc3VsdCkgewogICAgICAgICAgICAgcmVzdWx0ID0gQ3VybF9mb2xsb3coZGF0YSwgbmV3dXJsLCBmb2xsb3cpOwogICAgICAgICAgICAgaWYoIXJlc3VsdCkgewpAQCAtMTYzNiwxNCArMTk3NCwxNCBAQAogICAgICAgICBDdXJsX211bHRpX3Byb2Nlc3NfcGVuZGluZ19oYW5kbGVzKG11bHRpKTsKIAogICAgICAgICAvKiBwb3N0LXRyYW5zZmVyIGNvbW1hbmQgKi8KLSAgICAgICAgcmVzID0gQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOworICAgICAgICByZXMgPSBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOwogCiAgICAgICAgIC8qIGFsbG93IGEgcHJldmlvdXNseSBzZXQgZXJyb3IgY29kZSB0YWtlIHByZWNlZGVuY2UgKi8KICAgICAgICAgaWYoIXJlc3VsdCkKICAgICAgICAgICByZXN1bHQgPSByZXM7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgdGhlcmUgYXJlIG90aGVyIGhhbmRsZXMgb24gdGhlIHBpcGVsaW5lLCBDdXJsX2RvbmUgd29uJ3Qgc2V0CisgICAgICAgICAqIElmIHRoZXJlIGFyZSBvdGhlciBoYW5kbGVzIG9uIHRoZSBwaXBlbGluZSwgbXVsdGlfZG9uZSB3b24ndCBzZXQKICAgICAgICAgICogZWFzeV9jb25uIHRvIE5VTEwuICBJbiBzdWNoIGEgY2FzZSwgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCkgY2FuCiAgICAgICAgICAqIGFjY2VzcyBmcmVlJ2QgZGF0YSwgaWYgdGhlIGNvbm5lY3Rpb24gaXMgZnJlZSdkIGFuZCB0aGUgaGFuZGxlCiAgICAgICAgICAqIHJlbW92ZWQgYmVmb3JlIHdlIHBlcmZvcm0gdGhlIHByb2Nlc3NpbmcgaW4gQ1VSTE1fU1RBVEVfQ09NUExFVEVECkBAIC0xNjYyLDcgKzIwMDAsNyBAQAogICAgICAgfQogCiAgICAgICAvKiBhZnRlciB3ZSBoYXZlIERPTkUgd2hhdCB3ZSdyZSBzdXBwb3NlZCB0byBkbywgZ28gQ09NUExFVEVELCBhbmQKLSAgICAgICAgIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIEN1cmxfZG9uZSgpIHJldHVybmVkISAqLworICAgICAgICAgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgbXVsdGlfZG9uZSgpIHJldHVybmVkISAqLwogICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9DT01QTEVURUQpOwogICAgICAgYnJlYWs7CiAKQEAgLTE3NzgsMjcgKzIxMTYsMTIgQEAKICAgZGF0YT1tdWx0aS0+ZWFzeXA7CiAgIHdoaWxlKGRhdGEpIHsKICAgICBDVVJMTWNvZGUgcmVzdWx0OwotICAgIHN0cnVjdCBXaWxkY2FyZERhdGEgKndjID0gJmRhdGEtPndpbGRjYXJkOwogICAgIFNJR1BJUEVfVkFSSUFCTEUocGlwZV9zdCk7CiAKLSAgICBpZihkYXRhLT5zZXQud2lsZGNhcmRtYXRjaCkgewotICAgICAgaWYoIXdjLT5maWxlbGlzdCkgewotICAgICAgICBDVVJMY29kZSByZXQgPSBDdXJsX3dpbGRjYXJkX2luaXQod2MpOyAvKiBpbml0IHdpbGRjYXJkIHN0cnVjdHVyZXMgKi8KLSAgICAgICAgaWYocmV0KQotICAgICAgICAgIHJldHVybiBDVVJMTV9PVVRfT0ZfTUVNT1JZOwotICAgICAgfQotICAgIH0KLQogICAgIHNpZ3BpcGVfaWdub3JlKGRhdGEsICZwaXBlX3N0KTsKICAgICByZXN1bHQgPSBtdWx0aV9ydW5zaW5nbGUobXVsdGksIG5vdywgZGF0YSk7CiAgICAgc2lncGlwZV9yZXN0b3JlKCZwaXBlX3N0KTsKIAotICAgIGlmKGRhdGEtPnNldC53aWxkY2FyZG1hdGNoKSB7Ci0gICAgICAvKiBkZXN0cnVjdCB3aWxkY2FyZCBzdHJ1Y3R1cmVzIGlmIGl0IGlzIG5lZWRlZCAqLwotICAgICAgaWYod2MtPnN0YXRlID09IENVUkxXQ19ET05FIHx8IHJlc3VsdCkKLSAgICAgICAgQ3VybF93aWxkY2FyZF9kdG9yKHdjKTsKLSAgICB9Ci0KICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm5jb2RlID0gcmVzdWx0OwogCkBAIC0xOTY1LDcgKzIyODgsNiBAQAogICBjdXJsX3NvY2tldF90IHM7CiAgIGludCBudW07CiAgIHVuc2lnbmVkIGludCBjdXJyYWN0aW9uOwotICBib29sIHJlbW92ZV9zb2NrX2Zyb21faGFzaDsKIAogICBmb3IoaT0wOyBpPCBNQVhfU09DS1NQRVJFQVNZSEFORExFOyBpKyspCiAgICAgc29ja3NbaV0gPSBDVVJMX1NPQ0tFVF9CQUQ7CkBAIC0xOTg3LDcgKzIzMDksNyBAQAogICAgIHMgPSBzb2Nrc1tpXTsKIAogICAgIC8qIGdldCBpdCBmcm9tIHRoZSBoYXNoICovCi0gICAgZW50cnkgPSBDdXJsX2hhc2hfcGljaygmbXVsdGktPnNvY2toYXNoLCAoY2hhciAqKSZzLCBzaXplb2YocykpOworICAgIGVudHJ5ID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAKICAgICBpZihjdXJyYWN0aW9uICYgR0VUU09DS19SRUFEU09DSyhpKSkKICAgICAgIGFjdGlvbiB8PSBDVVJMX1BPTExfSU47CkBAIC0yMDMzLDU3ICsyMzU1LDUwIEBACiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgIH0KLSAgICBpZihzICE9IENVUkxfU09DS0VUX0JBRCkgewogCisgICAgZW50cnkgPSBzaF9nZXRlbnRyeSgmbXVsdGktPnNvY2toYXNoLCBzKTsKKyAgICBpZihlbnRyeSkgewogICAgICAgLyogdGhpcyBzb2NrZXQgaGFzIGJlZW4gcmVtb3ZlZC4gVGVsbCB0aGUgYXBwIHRvIHJlbW92ZSBpdCAqLwotICAgICAgcmVtb3ZlX3NvY2tfZnJvbV9oYXNoID0gVFJVRTsKKyAgICAgIGJvb2wgcmVtb3ZlX3NvY2tfZnJvbV9oYXNoID0gVFJVRTsKIAotICAgICAgZW50cnkgPSBDdXJsX2hhc2hfcGljaygmbXVsdGktPnNvY2toYXNoLCAoY2hhciAqKSZzLCBzaXplb2YocykpOwotICAgICAgaWYoZW50cnkpIHsKLSAgICAgICAgLyogY2hlY2sgaWYgdGhlIHNvY2tldCB0byBiZSByZW1vdmVkIHNlcnZlcyBhIGNvbm5lY3Rpb24gd2hpY2ggaGFzCi0gICAgICAgICAgIG90aGVyIGVhc3ktcyBpbiBhIHBpcGVsaW5lLiBJbiB0aGlzIGNhc2UgdGhlIHNvY2tldCBzaG91bGQgbm90IGJlCi0gICAgICAgICAgIHJlbW92ZWQuICovCi0gICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqZWFzeV9jb25uID0gZGF0YS0+ZWFzeV9jb25uOwotICAgICAgICBpZihlYXN5X2Nvbm4pIHsKLSAgICAgICAgICBpZihlYXN5X2Nvbm4tPnJlY3ZfcGlwZSAmJiBlYXN5X2Nvbm4tPnJlY3ZfcGlwZS0+c2l6ZSA+IDEpIHsKLSAgICAgICAgICAgIC8qIHRoZSBoYW5kbGUgc2hvdWxkIG5vdCBiZSByZW1vdmVkIGZyb20gdGhlIHBpcGUgeWV0ICovCi0gICAgICAgICAgICByZW1vdmVfc29ja19mcm9tX2hhc2ggPSBGQUxTRTsKKyAgICAgIC8qIGNoZWNrIGlmIHRoZSBzb2NrZXQgdG8gYmUgcmVtb3ZlZCBzZXJ2ZXMgYSBjb25uZWN0aW9uIHdoaWNoIGhhcworICAgICAgICAgb3RoZXIgZWFzeS1zIGluIGEgcGlwZWxpbmUuIEluIHRoaXMgY2FzZSB0aGUgc29ja2V0IHNob3VsZCBub3QgYmUKKyAgICAgICAgIHJlbW92ZWQuICovCisgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmVhc3lfY29ubiA9IGRhdGEtPmVhc3lfY29ubjsKKyAgICAgIGlmKGVhc3lfY29ubikgeworICAgICAgICBpZihlYXN5X2Nvbm4tPnJlY3ZfcGlwZSAmJiBlYXN5X2Nvbm4tPnJlY3ZfcGlwZS0+c2l6ZSA+IDEpIHsKKyAgICAgICAgICAvKiB0aGUgaGFuZGxlIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBwaXBlIHlldCAqLworICAgICAgICAgIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IEZBTFNFOwogCi0gICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHNvY2toYXNoIGVudHJ5IHRvIGluc3RlYWQgcG9pbnQgdG8gdGhlIG5leHQgaW4gbGluZQotICAgICAgICAgICAgICAgZm9yIHRoZSByZWN2X3BpcGUsIG9yIHRoZSBmaXJzdCAoaW4gY2FzZSB0aGlzIHBhcnRpY3VsYXIgZWFzeQotICAgICAgICAgICAgICAgaXNuJ3QgYWxyZWFkeSkgKi8KLSAgICAgICAgICAgIGlmKGVudHJ5LT5lYXN5ID09IGRhdGEpIHsKLSAgICAgICAgICAgICAgaWYoQ3VybF9yZWN2cGlwZV9oZWFkKGRhdGEsIGVhc3lfY29ubikpCi0gICAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnJlY3ZfcGlwZS0+aGVhZC0+bmV4dC0+cHRyOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnJlY3ZfcGlwZS0+aGVhZC0+cHRyOwotICAgICAgICAgICAgfQorICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgc29ja2hhc2ggZW50cnkgdG8gaW5zdGVhZCBwb2ludCB0byB0aGUgbmV4dCBpbiBsaW5lCisgICAgICAgICAgICAgZm9yIHRoZSByZWN2X3BpcGUsIG9yIHRoZSBmaXJzdCAoaW4gY2FzZSB0aGlzIHBhcnRpY3VsYXIgZWFzeQorICAgICAgICAgICAgIGlzbid0IGFscmVhZHkpICovCisgICAgICAgICAgaWYoZW50cnktPmVhc3kgPT0gZGF0YSkgeworICAgICAgICAgICAgaWYoQ3VybF9yZWN2cGlwZV9oZWFkKGRhdGEsIGVhc3lfY29ubikpCisgICAgICAgICAgICAgIGVudHJ5LT5lYXN5ID0gZWFzeV9jb25uLT5yZWN2X3BpcGUtPmhlYWQtPm5leHQtPnB0cjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnJlY3ZfcGlwZS0+aGVhZC0+cHRyOwogICAgICAgICAgIH0KLSAgICAgICAgICBpZihlYXN5X2Nvbm4tPnNlbmRfcGlwZSAgJiYgZWFzeV9jb25uLT5zZW5kX3BpcGUtPnNpemUgPiAxKSB7Ci0gICAgICAgICAgICAvKiB0aGUgaGFuZGxlIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBwaXBlIHlldCAqLwotICAgICAgICAgICAgcmVtb3ZlX3NvY2tfZnJvbV9oYXNoID0gRkFMU0U7Ci0KLSAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgc29ja2hhc2ggZW50cnkgdG8gaW5zdGVhZCBwb2ludCB0byB0aGUgbmV4dCBpbiBsaW5lCi0gICAgICAgICAgICAgICBmb3IgdGhlIHNlbmRfcGlwZSwgb3IgdGhlIGZpcnN0IChpbiBjYXNlIHRoaXMgcGFydGljdWxhciBlYXN5Ci0gICAgICAgICAgICAgICBpc24ndCBhbHJlYWR5KSAqLwotICAgICAgICAgICAgaWYoZW50cnktPmVhc3kgPT0gZGF0YSkgewotICAgICAgICAgICAgICBpZihDdXJsX3NlbmRwaXBlX2hlYWQoZGF0YSwgZWFzeV9jb25uKSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+ZWFzeSA9IGVhc3lfY29ubi0+c2VuZF9waXBlLT5oZWFkLT5uZXh0LT5wdHI7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyeS0+ZWFzeSA9IGVhc3lfY29ubi0+c2VuZF9waXBlLT5oZWFkLT5wdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIC8qIERvbid0IHdvcnJ5IGFib3V0IG92ZXJ3cml0aW5nIHJlY3ZfcGlwZSBoZWFkIHdpdGggc2VuZF9waXBlX2hlYWQsCi0gICAgICAgICAgICAgd2hlbiBhY3Rpb24gd2lsbCBiZSBhc2tlZCBvbiB0aGUgc29ja2V0IChzZWUgbXVsdGlfc29ja2V0KCkpLCB0aGUKLSAgICAgICAgICAgICBoZWFkIG9mIHRoZSBjb3JyZWN0IHBpcGUgd2lsbCBiZSB0YWtlbiBhY2NvcmRpbmcgdG8gdGhlCi0gICAgICAgICAgICAgYWN0aW9uLiAqLwogICAgICAgICB9CisgICAgICAgIGlmKGVhc3lfY29ubi0+c2VuZF9waXBlICAmJiBlYXN5X2Nvbm4tPnNlbmRfcGlwZS0+c2l6ZSA+IDEpIHsKKyAgICAgICAgICAvKiB0aGUgaGFuZGxlIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBwaXBlIHlldCAqLworICAgICAgICAgIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IEZBTFNFOworCisgICAgICAgICAgLyogVXBkYXRlIHRoZSBzb2NraGFzaCBlbnRyeSB0byBpbnN0ZWFkIHBvaW50IHRvIHRoZSBuZXh0IGluIGxpbmUKKyAgICAgICAgICAgICBmb3IgdGhlIHNlbmRfcGlwZSwgb3IgdGhlIGZpcnN0IChpbiBjYXNlIHRoaXMgcGFydGljdWxhciBlYXN5CisgICAgICAgICAgICAgaXNuJ3QgYWxyZWFkeSkgKi8KKyAgICAgICAgICBpZihlbnRyeS0+ZWFzeSA9PSBkYXRhKSB7CisgICAgICAgICAgICBpZihDdXJsX3NlbmRwaXBlX2hlYWQoZGF0YSwgZWFzeV9jb25uKSkKKyAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnNlbmRfcGlwZS0+aGVhZC0+bmV4dC0+cHRyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBlbnRyeS0+ZWFzeSA9IGVhc3lfY29ubi0+c2VuZF9waXBlLT5oZWFkLT5wdHI7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIERvbid0IHdvcnJ5IGFib3V0IG92ZXJ3cml0aW5nIHJlY3ZfcGlwZSBoZWFkIHdpdGggc2VuZF9waXBlX2hlYWQsCisgICAgICAgICAgIHdoZW4gYWN0aW9uIHdpbGwgYmUgYXNrZWQgb24gdGhlIHNvY2tldCAoc2VlIG11bHRpX3NvY2tldCgpKSwgdGhlCisgICAgICAgICAgIGhlYWQgb2YgdGhlIGNvcnJlY3QgcGlwZSB3aWxsIGJlIHRha2VuIGFjY29yZGluZyB0byB0aGUKKyAgICAgICAgICAgYWN0aW9uLiAqLwogICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAvKiBqdXN0IGEgcHJlY2F1dGlvbiwgdGhpcyBzb2NrZXQgcmVhbGx5IFNIT1VMRCBiZSBpbiB0aGUgaGFzaCBhbHJlYWR5Ci0gICAgICAgICAgIGJ1dCBpbiBjYXNlIGl0IGlzbid0LCB3ZSBkb24ndCBoYXZlIHRvIHRlbGwgdGhlIGFwcCB0byByZW1vdmUgaXQKLSAgICAgICAgICAgZWl0aGVyIHNpbmNlIGl0IG5ldmVyIGdvdCB0byBrbm93IGFib3V0IGl0ICovCi0gICAgICAgIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IEZBTFNFOwogCiAgICAgICBpZihyZW1vdmVfc29ja19mcm9tX2hhc2gpIHsKICAgICAgICAgLyogaW4gdGhpcyBjYXNlICdlbnRyeScgaXMgYWx3YXlzIG5vbi1OVUxMICovCkBAIC0yMDk1LDkgKzI0MTAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNvY2tldHApOwogICAgICAgICBzaF9kZWxlbnRyeSgmbXVsdGktPnNvY2toYXNoLCBzKTsKICAgICAgIH0KLQotICAgIH0KLSAgfQorICAgIH0gLyogaWYgc29ja2hhc2ggZW50cnkgZXhpc3RlZCAqLworICB9IC8qIGZvciBsb29wIG92ZXIgbnVtc29ja3MgKi8KIAogICBtZW1jcHkoZGF0YS0+c29ja2V0cywgc29ja3MsIG51bSpzaXplb2YoY3VybF9zb2NrZXRfdCkpOwogICBkYXRhLT5udW1zb2NrcyA9IG51bTsKQEAgLTIxMTksOCArMjQzMyw3IEBACiAgIGlmKG11bHRpKSB7CiAgICAgLyogdGhpcyBpcyBzZXQgaWYgdGhpcyBjb25uZWN0aW9uIGlzIHBhcnQgb2YgYSBoYW5kbGUgdGhhdCBpcyBhZGRlZCB0bwogICAgICAgIGEgbXVsdGkgaGFuZGxlLCBhbmQgb25seSB0aGVuIHRoaXMgaXMgbmVjZXNzYXJ5ICovCi0gICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5ID0KLSAgICAgIEN1cmxfaGFzaF9waWNrKCZtdWx0aS0+c29ja2hhc2gsIChjaGFyICopJnMsIHNpemVvZihzKSk7CisgICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5ID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAKICAgICBpZihlbnRyeSkgewogICAgICAgaWYobXVsdGktPnNvY2tldF9jYikKQEAgLTIxNTksNyArMjQ3Miw3IEBACiAgIC8qIG1vdmUgb3ZlciB0aGUgdGltZW91dCBsaXN0IGZvciB0aGlzIHNwZWNpZmljIGhhbmRsZSBhbmQgcmVtb3ZlIGFsbAogICAgICB0aW1lb3V0cyB0aGF0IGFyZSBub3cgcGFzc2VkIHRlbnNlIGFuZCBzdG9yZSB0aGUgbmV4dCBwZW5kaW5nCiAgICAgIHRpbWVvdXQgaW4gKnR2ICovCi0gIGZvcihlID0gbGlzdC0+aGVhZDsgZTsgKSB7CisgIGZvcihlID0gbGlzdC0+aGVhZDsgZTspIHsKICAgICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpuID0gZS0+bmV4dDsKICAgICBsb25nIGRpZmYgPSBjdXJseF90dmRpZmYoKihzdHJ1Y3QgdGltZXZhbCAqKWUtPnB0ciwgbm93KTsKICAgICBpZihkaWZmIDw9IDApCkBAIC0yMjIxLDggKzI1MzQsNyBAQAogICB9CiAgIGVsc2UgaWYocyAhPSBDVVJMX1NPQ0tFVF9USU1FT1VUKSB7CiAKLSAgICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqZW50cnkgPQotICAgICAgQ3VybF9oYXNoX3BpY2soJm11bHRpLT5zb2NraGFzaCwgKGNoYXIgKikmcywgc2l6ZW9mKHMpKTsKKyAgICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqZW50cnkgPSBzaF9nZXRlbnRyeSgmbXVsdGktPnNvY2toYXNoLCBzKTsKIAogICAgIGlmKCFlbnRyeSkKICAgICAgIC8qIFVubWF0Y2hlZCBzb2NrZXQsIHdlIGNhbid0IGFjdCBvbiBpdCBidXQgd2UgaWdub3JlIHRoaXMgZmFjdC4gIEluCkBAIC0yMzQ2LDYgKzI2NTgsMTIgQEAKICAgY2FzZSBDVVJMTU9QVF9TT0NLRVREQVRBOgogICAgIG11bHRpLT5zb2NrZXRfdXNlcnAgPSB2YV9hcmcocGFyYW0sIHZvaWQgKik7CiAgICAgYnJlYWs7CisgIGNhc2UgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OOgorICAgIG11bHRpLT5wdXNoX2NiID0gdmFfYXJnKHBhcmFtLCBjdXJsX3B1c2hfY2FsbGJhY2spOworICAgIGJyZWFrOworICBjYXNlIENVUkxNT1BUX1BVU0hEQVRBOgorICAgIG11bHRpLT5wdXNoX3VzZXJwID0gdmFfYXJnKHBhcmFtLCB2b2lkICopOworICAgIGJyZWFrOwogICBjYXNlIENVUkxNT1BUX1BJUEVMSU5JTkc6CiAgICAgbXVsdGktPnBpcGVsaW5pbmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogICAgIGJyZWFrOwpAQCAtMjcwMyw5ICszMDIxLDcgQEAKICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKnRoZXJlID0gTlVMTDsKICAgc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpID0gKHN0cnVjdCBDdXJsX211bHRpICopbXVsdGlfaGFuZGxlOwogCi0gIGlmKHMgIT0gQ1VSTF9TT0NLRVRfQkFEKQotICAgIHRoZXJlID0gQ3VybF9oYXNoX3BpY2soJm11bHRpLT5zb2NraGFzaCwgKGNoYXIgKikmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjdXJsX3NvY2tldF90KSk7CisgIHRoZXJlID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAKICAgaWYoIXRoZXJlKQogICAgIHJldHVybiBDVVJMTV9CQURfU09DS0VUOwpAQCAtMjc4Myw4ICszMDk5LDcgQEAKICAgICAgICAgICAgICAgc3RhdGVuYW1lW2RhdGEtPm1zdGF0ZV0sIGRhdGEtPm51bXNvY2tzKTsKICAgICAgIGZvcihpPTA7IGkgPCBkYXRhLT5udW1zb2NrczsgaSsrKSB7CiAgICAgICAgIGN1cmxfc29ja2V0X3QgcyA9IGRhdGEtPnNvY2tldHNbaV07Ci0gICAgICAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICplbnRyeSA9Ci0gICAgICAgICAgQ3VybF9oYXNoX3BpY2soJm11bHRpLT5zb2NraGFzaCwgKGNoYXIgKikmcywgc2l6ZW9mKHMpKTsKKyAgICAgICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5ID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlZCAiLCAoaW50KXMpOwogICAgICAgICBpZighZW50cnkpIHsKZGlmZiAtLWdpdCBhL2xpYi9tdWx0aWhhbmRsZS5oIGIvbGliL211bHRpaGFuZGxlLmgKaW5kZXggY2FkNDRkMS4uZmM4MWE1NSAxMDA2NDQKLS0tIGEvbGliL211bHRpaGFuZGxlLmgKKysrIGIvbGliL211bHRpaGFuZGxlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04Nyw2ICs4NywxMCBAQAogICBjdXJsX3NvY2tldF9jYWxsYmFjayBzb2NrZXRfY2I7CiAgIHZvaWQgKnNvY2tldF91c2VycDsKIAorICAvKiBjYWxsYmFjayBmdW5jdGlvbiBhbmQgdXNlciBkYXRhIHBvaW50ZXIgZm9yIHNlcnZlciBwdXNoICovCisgIGN1cmxfcHVzaF9jYWxsYmFjayBwdXNoX2NiOworICB2b2lkICpwdXNoX3VzZXJwOworCiAgIC8qIEhvc3RuYW1lIGNhY2hlICovCiAgIHN0cnVjdCBjdXJsX2hhc2ggaG9zdGNhY2hlOwogCmRpZmYgLS1naXQgYS9saWIvbXVsdGlpZi5oIGIvbGliL211bHRpaWYuaAppbmRleCA1MDUyZjY1Li5iMjI5ZjUzIDEwMDY0NAotLS0gYS9saWIvbXVsdGlpZi5oCisrKyBiL2xpYi9tdWx0aWlmLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04OCw0ICs4OCwxMCBAQAogCiB2b2lkIEN1cmxfbXVsdGlfY2xvc2VkKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCBzKTsKIAorLyoKKyAqIEFkZCBhIGhhbmRsZSBhbmQgbW92ZSBpdCBpbnRvIFBFUkZPUk0gc3RhdGUgYXQgb25jZS4gRm9yIHB1c2hlZCBzdHJlYW1zLgorICovCitDVVJMTWNvZGUgQ3VybF9tdWx0aV9hZGRfcGVyZm9ybShzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiAjZW5kaWYgLyogSEVBREVSX0NVUkxfTVVMVElJRl9IICovCmRpZmYgLS1naXQgYS9saWIvbmV0cmMuYyBiL2xpYi9uZXRyYy5jCmluZGV4IDA2ZjhlYTEuLjQ2ZjQyN2EgMTAwNjQ0Ci0tLSBhL2xpYi9uZXRyYy5jCisrKyBiL2xpYi9uZXRyYy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsOSArMzIsOSBAQAogI2luY2x1ZGUgInN0cmVxdWFsLmgiCiAjaW5jbHVkZSAic3RydG9rLmgiCiAjaW5jbHVkZSAicmF3c3RyLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCmRpZmYgLS1naXQgYS9saWIvbmV0cmMuaCBiL2xpYi9uZXRyYy5oCmluZGV4IGExNDU2MDEuLmQ5ODAxNjYgMTAwNjQ0Ci0tLSBhL2xpYi9uZXRyYy5oCisrKyBiL2xpYi9uZXRyYy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL25vbi1hc2NpaS5jIGIvbGliL25vbi1hc2NpaS5jCmluZGV4IDZjY2I0NDkuLjIwNWZmMDQgMTAwNjQ0Ci0tLSBhL2xpYi9ub24tYXNjaWkuYworKysgYi9saWIvbm9uLWFzY2lpLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL25vbi1hc2NpaS5oIGIvbGliL25vbi1hc2NpaS5oCmluZGV4IDhiNGI3YzIuLmYzZTIwNDkgMTAwNjQ0Ci0tLSBhL2xpYi9ub24tYXNjaWkuaAorKysgYi9saWIvbm9uLWFzY2lpLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvbm9uYmxvY2suYyBiL2xpYi9ub25ibG9jay5jCmluZGV4IDE0NDdjODcuLmI3NjQyNzggMTAwNjQ0Ci0tLSBhL2xpYi9ub25ibG9jay5jCisrKyBiL2xpYi9ub25ibG9jay5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzcsNyArNzcsNyBAQAogCiAgIC8qIEFtaWdhICovCiAgIGxvbmcgZmxhZ3MgPSBub25ibG9jayA/IDFMIDogMEw7Ci0gIHJldHVybiBJb2N0bFNvY2tldChzb2NrZmQsIEZJT05CSU8sIGZsYWdzKTsKKyAgcmV0dXJuIElvY3RsU29ja2V0KHNvY2tmZCwgRklPTkJJTywgKGNoYXIgKikmZmxhZ3MpOwogCiAjZWxpZiBkZWZpbmVkKEhBVkVfU0VUU09DS09QVF9TT19OT05CTE9DSykKIApkaWZmIC0tZ2l0IGEvbGliL25vbmJsb2NrLmggYi9saWIvbm9uYmxvY2suaAppbmRleCBiNTQwYWU0Li45OGNkYzI1IDEwMDY0NAotLS0gYS9saWIvbm9uYmxvY2suaAorKysgYi9saWIvbm9uYmxvY2suaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9ud2xpYi5jIGIvbGliL253bGliLmMKaW5kZXggYmQzZjI3ZS4uNDJiNmFhMCAxMDA2NDQKLS0tIGEvbGliL253bGliLmMKKysrIGIvbGliL253bGliLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01OCwyNiArNTgsMjYgQEAKIE5YTXV0ZXhfdCAgICpnTGliTG9jayAgID0gKE5YTXV0ZXhfdCAqKSBOVUxMOwogCiAvKiBpbnRlcm5hbCBsaWJyYXJ5IGZ1bmN0aW9uIHByb3RvdHlwZXMuLi4gKi8KLWludCAgRGlzcG9zZUxpYnJhcnlEYXRhKCB2b2lkICogKTsKLXZvaWQgRGlzcG9zZVRocmVhZERhdGEoIHZvaWQgKiApOwotaW50ICBHZXRPclNldFVwRGF0YSggaW50IGlkLCBsaWJkYXRhX3QgKipkYXRhLCBsaWJ0aHJlYWRkYXRhX3QgKip0aHJlYWRkYXRhICk7CitpbnQgIERpc3Bvc2VMaWJyYXJ5RGF0YSh2b2lkICopOwordm9pZCBEaXNwb3NlVGhyZWFkRGF0YSh2b2lkICopOworaW50ICBHZXRPclNldFVwRGF0YShpbnQgaWQsIGxpYmRhdGFfdCAqKmRhdGEsIGxpYnRocmVhZGRhdGFfdCAqKnRocmVhZGRhdGEpOwogCiAKLWludCBfTm9uQXBwU3RhcnQoIHZvaWQgICAgICAgICpOTE1IYW5kbGUsCi0gICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAqZXJyb3JTY3JlZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqY21kTGluZSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICpsb2FkRGlyUGF0aCwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIHVuaW5pdGlhbGl6ZWREYXRhTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgKk5MTUZpbGVIYW5kbGUsCi0gICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAoKnJlYWRSb3V0aW5lUCkoIGludCBjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmJ5dGVzUmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmZmVyICksCitpbnQgX05vbkFwcFN0YXJ0KHZvaWQgICAgICAgICpOTE1IYW5kbGUsCisgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICplcnJvclNjcmVlbiwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgKmNtZExpbmUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICpsb2FkRGlyUGF0aCwKKyAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgdW5pbml0aWFsaXplZERhdGFMZW5ndGgsCisgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICpOTE1GaWxlSGFuZGxlLAorICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAoKnJlYWRSb3V0aW5lUCkoaW50IGNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqYnl0ZXNSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmZmVyKSwKICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGN1c3RvbURhdGFPZmZzZXQsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBjdXN0b21EYXRhU2l6ZSwKICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIG1lc3NhZ2VDb3VudCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICoqbWVzc2FnZXMgKQorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgKiptZXNzYWdlcykKIHsKICAgTlhfTE9DS19JTkZPX0FMTE9DKGxpYmxvY2ssICJQZXItQXBwbGljYXRpb24gRGF0YSBMb2NrIiwgMCk7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQAogICogSGVyZSB3ZSBjbGVhbiB1cCBhbnkgcmVzb3VyY2VzIHdlIGFsbG9jYXRlZC4gUmVzb3VyY2UgdGFncyBpcyBhIGJpZyBwYXJ0CiAgKiBvZiB3aGF0IHdlIGNyZWF0ZWQsIGJ1dCBOZXRXYXJlIGRvZXNuJ3QgYXNrIHVzIHRvIGZyZWUgdGhvc2UuCiAgKi8KLXZvaWQgX05vbkFwcFN0b3AoIHZvaWQgKQordm9pZCBfTm9uQXBwU3RvcCh2b2lkKQogewogICAodm9pZCkgdW5yZWdpc3Rlcl9saWJyYXJ5KGdMaWJJZCk7CiAgIE5YTXV0ZXhGcmVlKGdMaWJMb2NrKTsKQEAgLTE0OSwxMyArMTQ5LDEzIEBACiAgKiB3ZSByZXR1cm4gYSBub24temVybyB2YWx1ZS4gUmlnaHQgbm93LCB0aGVyZSBpc24ndCBhbnkgcmVhc29uIG5vdCB0byBhbGxvdwogICogaXQuCiAgKi8KLWludCBfTm9uQXBwQ2hlY2tVbmxvYWQoIHZvaWQgKQoraW50IF9Ob25BcHBDaGVja1VubG9hZCh2b2lkKQogewogICAgIHJldHVybiAwOwogfQogCiBpbnQgR2V0T3JTZXRVcERhdGEoaW50IGlkLCBsaWJkYXRhX3QgKiphcHBEYXRhLAotICAgICAgICAgICAgICAgICAgIGxpYnRocmVhZGRhdGFfdCAqKnRocmVhZERhdGEgKQorICAgICAgICAgICAgICAgICAgIGxpYnRocmVhZGRhdGFfdCAqKnRocmVhZERhdGEpCiB7CiAgIGludCAgICAgICAgICAgICAgICAgZXJyOwogICBsaWJkYXRhX3QgICAgICAgICAgICphcHBfZGF0YTsKQEAgLTI3Nyw3ICsyNzcsNyBAQAogICByZXR1cm4gZXJyOwogfQogCi1pbnQgRGlzcG9zZUxpYnJhcnlEYXRhKCB2b2lkICpkYXRhICkKK2ludCBEaXNwb3NlTGlicmFyeURhdGEodm9pZCAqZGF0YSkKIHsKICAgaWYoZGF0YSkgewogICAgIHZvaWQgKnRlbmJ5dGVzID0gKChsaWJkYXRhX3QgKikgZGF0YSktPnRlbmJ5dGVzOwpAQCAtMjg5LDcgKzI4OSw3IEBACiAgIHJldHVybiAwOwogfQogCi12b2lkIERpc3Bvc2VUaHJlYWREYXRhKCB2b2lkICpkYXRhICkKK3ZvaWQgRGlzcG9zZVRocmVhZERhdGEodm9pZCAqZGF0YSkKIHsKICAgaWYoZGF0YSkgewogICAgIHZvaWQgKnR3ZW50eWJ5dGVzID0gKChsaWJ0aHJlYWRkYXRhX3QgKikgZGF0YSktPnR3ZW50eWJ5dGVzOwpAQCAtMzAzLDcgKzMwMyw3IEBACiAvKiBGb3IgbmF0aXZlIENMaWItYmFzZWQgTkxNIHNlZW1zIHdlIGNhbiBkbyBhIGJpdCBtb3JlIHNpbXBsZS4gKi8KICNpbmNsdWRlIDxud3RocmVhZC5oPgogCi1pbnQgbWFpbiAoIHZvaWQgKQoraW50IG1haW4gKHZvaWQpCiB7CiAgIC8qIGluaXRpYWxpemUgYW55IGdsb2JhbHMgaGVyZS4uLiAqLwogCmRpZmYgLS1naXQgYS9saWIvbndvcy5jIGIvbGliL253b3MuYwppbmRleCAyM2ZmMmE3Li4zODVmOWM4IDEwMDY0NAotLS0gYS9saWIvbndvcy5jCisrKyBiL2xpYi9ud29zLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpZmRlZiBfX05PVkVMTF9MSUJDX18KIC8qIEZvciBuYXRpdmUgTGliQy1iYXNlZCBOTE0gd2UgbmVlZCB0byBkbyBub3RoaW5nLiAqLwotaW50IG5ldHdhcmVfaW5pdCAoIHZvaWQgKQoraW50IG5ldHdhcmVfaW5pdCAodm9pZCkKIHsKICAgcmV0dXJuIDA7CiB9CkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiBORVRJTkVUX0RFRklORV9DT05URVhUCiAKLWludCBuZXR3YXJlX2luaXQgKCB2b2lkICkKK2ludCBuZXR3YXJlX2luaXQgKHZvaWQpCiB7CiAgIGludCByYyA9IDA7CiAgIHVuc2lnbmVkIGludCBteUhhbmRsZSA9IEdldE5MTUhhbmRsZSgpOwpAQCAtNzIsMTMgKzcyLDEzIEBACiB9CiAKIC8qIGR1bW15IGZ1bmN0aW9uIHRvIHNhdGlzZnkgbmV3ZXIgcHJlbHVkZSAqLwotaW50IF9faW5pdF9lbnZpcm9ubWVudCAoIHZvaWQgKQoraW50IF9faW5pdF9lbnZpcm9ubWVudCAodm9pZCkKIHsKICAgcmV0dXJuIDA7CiB9CiAKIC8qIGR1bW15IGZ1bmN0aW9uIHRvIHNhdGlzZnkgbmV3ZXIgcHJlbHVkZSAqLwotaW50IF9fZGVpbml0X2Vudmlyb25tZW50ICggdm9pZCApCitpbnQgX19kZWluaXRfZW52aXJvbm1lbnQgKHZvaWQpCiB7CiAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL29iam5hbWVzLXRlc3QwOC5zaCBiL2xpYi9vYmpuYW1lcy10ZXN0MDguc2gKaW5kZXggODJiZjRmOS4uNDg1OTc1NyAxMDA3NTUKLS0tIGEvbGliL29iam5hbWVzLXRlc3QwOC5zaAorKysgYi9saWIvb2JqbmFtZXMtdGVzdDA4LnNoCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvb2JqbmFtZXMtdGVzdDEwLnNoIGIvbGliL29iam5hbWVzLXRlc3QxMC5zaAppbmRleCAyZDg1YjhmLi42MjE4NGI4IDEwMDc1NQotLS0gYS9saWIvb2JqbmFtZXMtdGVzdDEwLnNoCisrKyBiL2xpYi9vYmpuYW1lcy10ZXN0MTAuc2gKQEAgLTEwLDcgKzEwLDcgQEAKICMgKgogIyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjICoKICMgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9vYmpuYW1lcy5pbmMgYi9saWIvb2JqbmFtZXMuaW5jCmluZGV4IDg3Nzg0OTIuLmI4OTU1MjggMTAwNjQ0Ci0tLSBhL2xpYi9vYmpuYW1lcy5pbmMKKysrIGIvbGliL29iam5hbWVzLmluYwpAQCAtOSw3ICs5LDcgQEAKICMgKgogIyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjICoKICMgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9vcGVubGRhcC5jIGIvbGliL29wZW5sZGFwLmMKaW5kZXggYmVlNTUyZi4uMDE1NjdhYyAxMDA2NDQKLS0tIGEvbGliL29wZW5sZGFwLmMKKysrIGIvbGliL29wZW5sZGFwLmMKQEAgLTYsMTEgKzYsMTEgQEAKICAqICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgSG93YXJkIENodSwgPGh5Y0BvcGVubGRhcC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Niw5ICs0Niw4IEBACiAjaW5jbHVkZSAiY3VybF9sZGFwLmgiCiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtNDQ2LDYgKzQ0NSw3IEBACiAgICAgZW50ID0gbGRhcF9uZXh0X21lc3NhZ2UobGktPmxkLCBlbnQpKSB7CiAgICAgc3RydWN0IGJlcnZhbCBidiwgKmJ2YWxzLCAqKmJ2cCA9ICZidmFsczsKICAgICBpbnQgYmluYXJ5ID0gMCwgbXNndHlwZTsKKyAgICBDVVJMY29kZSB3cml0ZWVycjsKIAogICAgIG1zZ3R5cGUgPSBsZGFwX21zZ3R5cGUoZW50KTsKICAgICBpZihtc2d0eXBlID09IExEQVBfUkVTX1NFQVJDSF9SRVNVTFQpIHsKQEAgLTQ4NSwxOCArNDg1LDI0IEBACiAgICAgICAqZXJyID0gQ1VSTEVfUkVDVl9FUlJPUjsKICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIkROOiAiLCA0KTsKLSAgICBpZigqZXJyKQorICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiRE46ICIsIDQpOworICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAqZXJyID0gd3JpdGVlcnI7CiAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopYnYuYnZfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidi5idl9sZW4pOwotICAgIGlmKCplcnIpCisgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKWJ2LmJ2X3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2LmJ2X2xlbik7CisgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAxKTsKLSAgICBpZigqZXJyKQorICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAxKTsKKyAgICBpZih3cml0ZWVycikgeworICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IGJ2LmJ2X2xlbiArIDU7CiAKICAgICBmb3IocmMgPSBsZGFwX2dldF9hdHRyaWJ1dGVfYmVyKGxpLT5sZCwgZW50LCBiZXIsICZidiwgYnZwKTsKQEAgLTUxMywxOCArNTE5LDI0IEBACiAKICAgICAgIGZvcihpPTA7IGJ2YWxzW2ldLmJ2X3ZhbCAhPSBOVUxMOyBpKyspIHsKICAgICAgICAgaW50IGJpbnZhbCA9IDA7Ci0gICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJcdCIsIDEpOwotICAgICAgICBpZigqZXJyKQorICAgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlx0IiwgMSk7CisgICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogCi0gICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKWJ2LmJ2X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2LmJ2X2xlbik7Ci0gICAgICAgIGlmKCplcnIpCi0gICAgICAgICAgcmV0dXJuIC0xOworICAgICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKilidi5idl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidi5idl9sZW4pOworICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAqZXJyID0gd3JpdGVlcnI7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgfQogCi0gICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSI6IiwgMSk7Ci0gICAgICAgIGlmKCplcnIpCi0gICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIjoiLCAxKTsKKyAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgKmVyciA9IHdyaXRlZXJyOworICAgICAgICAgcmV0dXJuIC0xOworICAgICAgIH0KICAgICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSBidi5idl9sZW4gKyAyOwogCiAgICAgICAgIGlmKCFiaW5hcnkpIHsKQEAgLTU1OCw0NyArNTcwLDYyIEBACiAgICAgICAgICAgICAqZXJyID0gZXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgfQotICAgICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSI6ICIsIDIpOwotICAgICAgICAgIGlmKCplcnIpCisgICAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikiOiAiLCAyKTsKKyAgICAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgIH0KIAogICAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gMjsKICAgICAgICAgICBpZih2YWxfYjY0X3N6ID4gMCkgewotICAgICAgICAgICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIHZhbF9iNjQsCisgICAgICAgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIHZhbF9iNjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsX2I2NF9zeik7Ci0gICAgICAgICAgICBpZigqZXJyKQorICAgICAgICAgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICAgICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmcmVlKHZhbF9iNjQpOwogICAgICAgICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSB2YWxfYjY0X3N6OwogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiICIsIDEpOwotICAgICAgICAgIGlmKCplcnIpCisgICAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSIgIiwgMSk7CisgICAgICAgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICB9CiAKLSAgICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgYnZhbHNbaV0uYnZfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidmFsc1tpXS5idl9sZW4pOwotICAgICAgICAgIGlmKCplcnIpCisgICAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCBidmFsc1tpXS5idl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidmFsc1tpXS5idl9sZW4pOworICAgICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAgICAqZXJyID0gd3JpdGVlcnI7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgfQogCiAgICAgICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSBidmFsc1tpXS5idl9sZW4gKyAxOwogICAgICAgICB9Ci0gICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJcbiIsIDApOwotICAgICAgICBpZigqZXJyKQorICAgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMCk7CisgICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogCiAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQrKzsKICAgICAgIH0KICAgICAgIGJlcl9tZW1mcmVlKGJ2YWxzKTsKLSAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJcbiIsIDApOwotICAgICAgaWYoKmVycikKKyAgICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAwKTsKKyAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQogICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCsrOwogICAgIH0KLSAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAwKTsKLSAgICBpZigqZXJyKQorICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAwKTsKKyAgICBpZih3cml0ZWVycikgeworICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50Kys7CiAgICAgYmVyX2ZyZWUoYmVyLCAwKTsKICAgfQpkaWZmIC0tZ2l0IGEvbGliL3BhcnNlZGF0ZS5jIGIvbGliL3BhcnNlZGF0ZS5jCmluZGV4IDYyMTY3ODguLjdhYWQ1YzIgMTAwNjQ0Ci0tLSBhL2xpYi9wYXJzZWRhdGUuYworKysgYi9saWIvcGFyc2VkYXRlLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3BhcnNlZGF0ZS5oIGIvbGliL3BhcnNlZGF0ZS5oCmluZGV4IGFkZTBmNGYuLjJlNTllYjEgMTAwNjQ0Ci0tLSBhL2xpYi9wYXJzZWRhdGUuaAorKysgYi9saWIvcGFyc2VkYXRlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvcGluZ3BvbmcuYyBiL2xpYi9waW5ncG9uZy5jCmluZGV4IDE2NzA3OTIuLmNlMmI1ODYgMTAwNjQ0Ci0tLSBhL2xpYi9waW5ncG9uZy5jCisrKyBiL2xpYi9waW5ncG9uZy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgogI2luY2x1ZGUgInZ0bHMvdnRscy5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAjaWZkZWYgVVNFX1BJTkdQT05HCkBAIC04OCw3ICs4OCw3IEBACiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhPWNvbm4tPmRhdGE7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogCi0gIGlmKHRpbWVvdXRfbXMgPD0wICkgeworICBpZih0aW1lb3V0X21zIDw9MCkgewogICAgIGZhaWxmKGRhdGEsICJzZXJ2ZXIgcmVzcG9uc2UgdGltZW91dCIpOwogICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7IC8qIGFscmVhZHkgdG9vIGxpdHRsZSB0aW1lICovCiAgIH0KZGlmZiAtLWdpdCBhL2xpYi9waW5ncG9uZy5oIGIvbGliL3Bpbmdwb25nLmgKaW5kZXggYjkyNWFiOS4uMmY2NDlkNSAxMDA2NDQKLS0tIGEvbGliL3Bpbmdwb25nLmgKKysrIGIvbGliL3Bpbmdwb25nLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvcGlwZWxpbmUuYyBiL2xpYi9waXBlbGluZS5jCmluZGV4IDFiMzg4MzYuLjk1Yjg5YjUgMTAwNjQ0Ci0tLSBhL2xpYi9waXBlbGluZS5jCisrKyBiL2xpYi9waXBlbGluZS5jCkBAIC0xMCw3ICsxMCw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIzLDEwICszMjMsMTEgQEAKIHN0YXRpYyBib29sIHBpcGVfaGVhZChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9sbGlzdCAqcGlwZWxpbmUpCiB7Ci0gIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKmN1cnIgPSBwaXBlbGluZS0+aGVhZDsKLSAgaWYoY3VycikKLSAgICByZXR1cm4gKGN1cnItPnB0ciA9PSBkYXRhKSA/IFRSVUUgOiBGQUxTRTsKLQorICBpZihwaXBlbGluZSkgeworICAgIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKmN1cnIgPSBwaXBlbGluZS0+aGVhZDsKKyAgICBpZihjdXJyKQorICAgICAgcmV0dXJuIChjdXJyLT5wdHIgPT0gZGF0YSkgPyBUUlVFIDogRkFMU0U7CisgIH0KICAgcmV0dXJuIEZBTFNFOwogfQogCmRpZmYgLS1naXQgYS9saWIvcGlwZWxpbmUuaCBiL2xpYi9waXBlbGluZS5oCmluZGV4IGJmMjI5ZjEuLmEzOWRmYTggMTAwNjQ0Ci0tLSBhL2xpYi9waXBlbGluZS5oCisrKyBiL2xpYi9waXBlbGluZS5oCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3BvcDMuYyBiL2xpYi9wb3AzLmMKaW5kZXggNTM1MTBhMi4uYTZiMmMzZiAxMDA2NDQKLS0tIGEvbGliL3BvcDMuYworKysgYi9saWIvcG9wMy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsOSArODMsOSBAQAogI2luY2x1ZGUgImN1cmxfc2FzbC5oIgogI2luY2x1ZGUgImN1cmxfbWQ1LmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiBMb2NhbCBBUEkgZnVuY3Rpb25zICovCkBAIC0yMTQsNyArMjE0LDcgQEAKIC8qIFNBU0wgcGFyYW1ldGVycyBmb3IgdGhlIHBvcDMgcHJvdG9jb2wgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgU0FTTHByb3RvIHNhc2xwb3AzID0gewogICAicG9wIiwgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlcnZpY2UgbmFtZSAqLwotICAnKycsICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29kZSByZWNlaXZlZCB3aGVuIGNvbnRpbnVhdGlvbiBpcyBleHBlY3RlZCAqLworICAnKicsICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29kZSByZWNlaXZlZCB3aGVuIGNvbnRpbnVhdGlvbiBpcyBleHBlY3RlZCAqLwogICAnKycsICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29kZSB0byByZWNlaXZlIHVwb24gYXV0aGVudGljYXRpb24gc3VjY2VzcyAqLwogICAyNTUgLSA4LCAgICAgICAgICAgICAgICAgICAgLyogTWF4aW11bSBpbml0aWFsIHJlc3BvbnNlIGxlbmd0aCAobm8gbWF4KSAqLwogICBwb3AzX3BlcmZvcm1fYXV0aCwgICAgICAgICAgLyogU2VuZCBhdXRoZW50aWNhdGlvbiBjb21tYW5kICovCkBAIC0yMjUsNyArMjI1LDExIEBACiAjaWZkZWYgVVNFX1NTTAogc3RhdGljIHZvaWQgcG9wM190b19wb3AzcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CisgIC8qIENoYW5nZSB0aGUgY29ubmVjdGlvbiBoYW5kbGVyICovCiAgIGNvbm4tPmhhbmRsZXIgPSAmQ3VybF9oYW5kbGVyX3BvcDNzOworCisgIC8qIFNldCB0aGUgY29ubmVjdGlvbidzIHVwZ3JhZGVkIHRvIFRMUyBmbGFnICovCisgIGNvbm4tPnRsc191cGdyYWRlZCA9IFRSVUU7CiB9CiAjZWxzZQogI2RlZmluZSBwb3AzX3RvX3BvcDNzKHgpIEN1cmxfbm9wX3N0bXQKQEAgLTI1NiwyMSArMjYwLDI5IEBACiAgIGlmKHBvcDNjLT5zdGF0ZSA9PSBQT1AzX0NBUEEpIHsKICAgICAvKiBEbyB3ZSBoYXZlIHRoZSB0ZXJtaW5hdGluZyBsaW5lPyAqLwogICAgIGlmKGxlbiA+PSAxICYmICFtZW1jbXAobGluZSwgIi4iLCAxKSkKKyAgICAgIC8qIFRyZWF0IHRoZSByZXNwb25zZSBhcyBhIHN1Y2Nlc3MgKi8KICAgICAgICpyZXNwID0gJysnOwogICAgIGVsc2UKKyAgICAgIC8qIFRyZWF0IHRoZSByZXNwb25zZSBhcyBhbiB1bnRhZ2dlZCBjb250aW51YXRpb24gKi8KICAgICAgICpyZXNwID0gJyonOwogCiAgICAgcmV0dXJuIFRSVUU7CiAgIH0KIAotICAvKiBEbyB3ZSBoYXZlIGEgY29tbWFuZCBvciBjb250aW51YXRpb24gcmVzcG9uc2U/ICovCi0gIGlmKChsZW4gPj0gMyAmJiAhbWVtY21wKCIrT0siLCBsaW5lLCAzKSkgfHwKLSAgICAgKGxlbiA+PSAxICYmICFtZW1jbXAoIisiLCBsaW5lLCAxKSkpIHsKKyAgLyogRG8gd2UgaGF2ZSBhIHN1Y2Nlc3MgcmVzcG9uc2U/ICovCisgIGlmKGxlbiA+PSAzICYmICFtZW1jbXAoIitPSyIsIGxpbmUsIDMpKSB7CiAgICAgKnJlc3AgPSAnKyc7CiAKICAgICByZXR1cm4gVFJVRTsKICAgfQogCisgIC8qIERvIHdlIGhhdmUgYSBjb250aW51YXRpb24gcmVzcG9uc2U/ICovCisgIGlmKGxlbiA+PSAxICYmICFtZW1jbXAoIisiLCBsaW5lLCAxKSkgeworICAgICpyZXNwID0gJyonOworCisgICAgcmV0dXJuIFRSVUU7CisgIH0KKwogICByZXR1cm4gRkFMU0U7IC8qIE5vdGhpbmcgZm9yIHVzICovCiB9CiAKQEAgLTcwMCw3ICs3MTIsNyBAQAogCiAgICh2b2lkKWluc3RhdGU7IC8qIG5vIHVzZSBmb3IgdGhpcyB5ZXQgKi8KIAotICAvKiBEbyB3ZSBoYXZlIGEgdW50YWdnZWQgcmVzcG9uc2U/ICovCisgIC8qIERvIHdlIGhhdmUgYSB1bnRhZ2dlZCBjb250aW51YXRpb24gcmVzcG9uc2U/ICovCiAgIGlmKHBvcDNjb2RlID09ICcqJykgewogICAgIC8qIERvZXMgdGhlIHNlcnZlciBzdXBwb3J0IHRoZSBTVExTIGNhcGFiaWxpdHk/ICovCiAgICAgaWYobGVuID49IDQgJiYgIW1lbWNtcChsaW5lLCAiU1RMUyIsIDQpKQpAQCAtNzQxLDggKzc1Myw4IEBACiAgICAgICAgICAgd29yZGxlbisrOwogCiAgICAgICAgIC8qIFRlc3QgdGhlIHdvcmQgZm9yIGEgbWF0Y2hpbmcgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtICovCi0gICAgICAgIGlmKChtZWNoYml0ID0gQ3VybF9zYXNsX2RlY29kZV9tZWNoKGxpbmUsIHdvcmRsZW4sICZsbGVuKSkgJiYKLSAgICAgICAgICAgbGxlbiA9PSB3b3JkbGVuKQorICAgICAgICBtZWNoYml0ID0gQ3VybF9zYXNsX2RlY29kZV9tZWNoKGxpbmUsIHdvcmRsZW4sICZsbGVuKTsKKyAgICAgICAgaWYobWVjaGJpdCAmJiBsbGVuID09IHdvcmRsZW4pCiAgICAgICAgICAgcG9wM2MtPnNhc2wuYXV0aG1lY2hzIHw9IG1lY2hiaXQ7CiAKICAgICAgICAgbGluZSArPSB3b3JkbGVuOwpAQCAtMTE1NCwxMCArMTE2Niw2IEBACiAgICh2b2lkKXByZW1hdHVyZTsKIAogICBpZighcG9wMykKLSAgICAvKiBXaGVuIHRoZSBlYXN5IGhhbmRsZSBpcyByZW1vdmVkIGZyb20gdGhlIG11bHRpIGludGVyZmFjZSB3aGlsZSBsaWJjdXJsCi0gICAgICAgaXMgc3RpbGwgdHJ5aW5nIHRvIHJlc29sdmUgdGhlIGhvc3QgbmFtZSwgdGhlIFBPUDMgc3RydWN0IGlzIG5vdCB5ZXQKLSAgICAgICBpbml0aWFsaXplZC4gSG93ZXZlciwgdGhlIHJlbW92YWwgYWN0aW9uIGNhbGxzIEN1cmxfZG9uZSgpIHdoaWNoIGluCi0gICAgICAgdHVybiBjYWxscyB0aGlzIGZ1bmN0aW9uLCBzbyB3ZSBzaW1wbHkgcmV0dXJuIHN1Y2Nlc3MuICovCiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIGlmKHN0YXR1cykgewpAQCAtMTM0Niw2ICsxMzU0LDEwIEBACiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogCisgIC8qIENsZWFyIHRoZSBUTFMgdXBncmFkZWQgZmxhZyAqLworICBjb25uLT50bHNfdXBncmFkZWQgPSBGQUxTRTsKKworICAvKiBTZXQgdXAgdGhlIHByb3h5IGlmIG5lY2Vzc2FyeSAqLwogICBpZihjb25uLT5iaXRzLmh0dHBwcm94eSAmJiAhZGF0YS0+c2V0LnR1bm5lbF90aHJ1X2h0dHBwcm94eSkgewogICAgIC8qIFVubGVzcyB3ZSBoYXZlIGFza2VkIHRvIHR1bm5lbCBQT1AzIG9wZXJhdGlvbnMgdGhyb3VnaCB0aGUgcHJveHksIHdlCiAgICAgICAgc3dpdGNoIGFuZCB1c2UgSFRUUCBvcGVyYXRpb25zIG9ubHkgKi8KZGlmZiAtLWdpdCBhL2xpYi9wb3AzLmggYi9saWIvcG9wMy5oCmluZGV4IDdiYzUzYWEuLjJkOTYxMDEgMTAwNjQ0Ci0tLSBhL2xpYi9wb3AzLmgKKysrIGIvbGliL3BvcDMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9wcm9ncmVzcy5jIGIvbGliL3Byb2dyZXNzLmMKaW5kZXggYjQ2ZTI3NC4uNzEzYWIwOCAxMDA2NDQKLS0tIGEvbGliL3Byb2dyZXNzLmMKKysrIGIvbGliL3Byb2dyZXNzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3Byb2dyZXNzLmggYi9saWIvcHJvZ3Jlc3MuaAppbmRleCBhMWU2ZjFhLi5lYTAwYWZhIDEwMDY0NAotLS0gYS9saWIvcHJvZ3Jlc3MuaAorKysgYi9saWIvcHJvZ3Jlc3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9yYXdzdHIuYyBiL2xpYi9yYXdzdHIuYwppbmRleCBlMjdkYWM0Li41NjY1ZWJkIDEwMDY0NAotLS0gYS9saWIvcmF3c3RyLmMKKysrIGIvbGliL3Jhd3N0ci5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNiArMjgsMTAgQEAKICAgIGl0cyBiZWhhdmlvciBpcyBhbHRlcmVkIGJ5IHRoZSBjdXJyZW50IGxvY2FsZS4gKi8KIGNoYXIgQ3VybF9yYXdfdG91cHBlcihjaGFyIGluKQogeworI2lmICFkZWZpbmVkKENVUkxfRE9FU19DT05WRVJTSU9OUykKKyAgaWYoaW4gPj0gJ2EnICYmIGluIDw9ICd6JykKKyAgICByZXR1cm4gKGNoYXIpKCdBJyArIGluIC0gJ2EnKTsKKyNlbHNlCiAgIHN3aXRjaCAoaW4pIHsKICAgY2FzZSAnYSc6CiAgICAgcmV0dXJuICdBJzsKQEAgLTgyLDEzICs4NiwxNSBAQAogICBjYXNlICd6JzoKICAgICByZXR1cm4gJ1onOwogICB9CisjZW5kaWYKKwogICByZXR1cm4gaW47CiB9CiAKIC8qCiAgKiBDdXJsX3Jhd19lcXVhbCgpIGlzIGZvciBkb2luZyAicmF3IiBjYXNlIGluc2Vuc2l0aXZlIHN0cmluZ3MuIFRoaXMgaXMgbWVhbnQKICAqIHRvIGJlIGxvY2FsZSBpbmRlcGVuZGVudCBhbmQgb25seSBjb21wYXJlIHN0cmluZ3Mgd2Uga25vdyBhcmUgc2FmZSBmb3IKLSAqIHRoaXMuICBTZWUgaHR0cDovL2RhbmllbC5oYXh4LnNlL2Jsb2cvMjAwOC8xMC8xNS9zdHJjYXNlY21wLWluLXR1cmtpc2gvIGZvcgorICogdGhpcy4gIFNlZSBodHRwczovL2RhbmllbC5oYXh4LnNlL2Jsb2cvMjAwOC8xMC8xNS9zdHJjYXNlY21wLWluLXR1cmtpc2gvIGZvcgogICogc29tZSBmdXJ0aGVyIGV4cGxhbmF0aW9uIHRvIHdoeSB0aGlzIGZ1bmN0aW9uIGlzIG5lY2Vzc2FyeS4KICAqCiAgKiBUaGUgZnVuY3Rpb24gaXMgY2FwYWJsZSBvZiBjb21wYXJpbmcgYS16IGNhc2UgaW5zZW5zaXRpdmVseSBldmVuIGZvcgpkaWZmIC0tZ2l0IGEvbGliL3Jhd3N0ci5oIGIvbGliL3Jhd3N0ci5oCmluZGV4IGI0OTE0NjAuLjRhZjAwZjEgMTAwNjQ0Ci0tLSBhL2xpYi9yYXdzdHIuaAorKysgYi9saWIvcmF3c3RyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvcnRzcC5jIGIvbGliL3J0c3AuYwppbmRleCBlMzMwNjlhLi41Y2IxMDQ0IDEwMDY0NAotLS0gYS9saWIvcnRzcC5jCisrKyBiL2xpYi9ydHNwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw5ICszNiw4IEBACiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTI0OSw2ICsyNDgsOCBAQAogICBjb25zdCBjaGFyICpwX3N0cmVhbV91cmkgPSBOVUxMOwogICBjb25zdCBjaGFyICpwX3RyYW5zcG9ydCA9IE5VTEw7CiAgIGNvbnN0IGNoYXIgKnBfdWFnZW50ID0gTlVMTDsKKyAgY29uc3QgY2hhciAqcF9wcm94eXVzZXJwd2QgPSBOVUxMOworICBjb25zdCBjaGFyICpwX3VzZXJwd2QgPSBOVUxMOwogCiAgICpkb25lID0gVFJVRTsKIApAQCAtMzI2LDcgKzMyNyw2IEBACiAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKICAgfQogCi0gIC8qIFRPRE86IGF1dGg/ICovCiAgIC8qIFRPRE86IHByb3h5PyAqLwogCiAgIC8qIFN0cmVhbSBVUkkuIERlZmF1bHQgdG8gc2VydmVyICcqJyBpZiBub3Qgc3BlY2lmaWVkICovCkBAIC0zOTIsNiArMzkyLDE0IEBACiAgICAgcF91YWdlbnQgPSBjb25uLT5hbGxvY3B0ci51YWdlbnQ7CiAgIH0KIAorICAvKiBzZXR1cCB0aGUgYXV0aGVudGljYXRpb24gaGVhZGVycyAqLworICByZXN1bHQgPSBDdXJsX2h0dHBfb3V0cHV0X2F1dGgoY29ubiwgcF9yZXF1ZXN0LCBwX3N0cmVhbV91cmksIEZBTFNFKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgcF9wcm94eXVzZXJwd2QgPSBjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2Q7CisgIHBfdXNlcnB3ZCA9IGNvbm4tPmFsbG9jcHRyLnVzZXJwd2Q7CisKICAgLyogUmVmZXJyZXIgKi8KICAgQ3VybF9zYWZlZnJlZShjb25uLT5hbGxvY3B0ci5yZWYpOwogICBpZihkYXRhLT5jaGFuZ2UucmVmZXJlciAmJiAhQ3VybF9jaGVja2hlYWRlcnMoY29ubiwgIlJlZmVyZXI6IikpCkBAIC00NDAsOCArNDQ4LDcgQEAKICAgICBDdXJsX2FkZF9idWZmZXJmKHJlcV9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgUlRTUC8xLjBcclxuIiAvKiBSZXF1ZXN0IFN0cmVhbS1VUkkgUlRTUC8xLjAgKi8KICAgICAgICAgICAgICAgICAgICAgICJDU2VxOiAlbGRcclxuIiwgLyogQ1NlcSAqLwotICAgICAgICAgICAgICAgICAgICAgKHBfcmVxdWVzdCA/IHBfcmVxdWVzdCA6ICIiKSwgcF9zdHJlYW1fdXJpLAotICAgICAgICAgICAgICAgICAgICAgcnRzcC0+Q1NlcV9zZW50KTsKKyAgICAgICAgICAgICAgICAgICAgIHBfcmVxdWVzdCwgcF9zdHJlYW1fdXJpLCBydHNwLT5DU2VxX3NlbnQpOwogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtNDY1LDEzICs0NzIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIHJhbmdlICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiByZWZlcnJlciAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogdXNlci1hZ2VudCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogcHJveHl1c2VycHdkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiB1c2VycHdkICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdHJhbnNwb3J0ID8gcF90cmFuc3BvcnQgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2FjY2VwdCA/IHBfYWNjZXB0IDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9hY2NlcHRfZW5jb2RpbmcgPyBwX2FjY2VwdF9lbmNvZGluZyA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfcmFuZ2UgPyBwX3JhbmdlIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9yZWZlcnJlciA/IHBfcmVmZXJyZXIgOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3VhZ2VudCA/IHBfdWFnZW50IDogIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdWFnZW50ID8gcF91YWdlbnQgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3Byb3h5dXNlcnB3ZCA/IHBfcHJveHl1c2VycHdkIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF91c2VycHdkID8gcF91c2VycHdkIDogIiIpOworCisgIC8qCisgICAqIEZyZWUgdXNlcnB3ZCBub3cgLS0tIGNhbm5vdCByZXVzZSB0aGlzIGZvciBOZWdvdGlhdGUgYW5kIHBvc3NpYmx5IE5UTE0KKyAgICogd2l0aCBiYXNpYyBhbmQgZGlnZXN0LCBpdCB3aWxsIGJlIGZyZWVkIGFueXdheSBieSB0aGUgbmV4dCByZXF1ZXN0CisgICAqLworICBDdXJsX3NhZmVmcmVlIChjb25uLT5hbGxvY3B0ci51c2VycHdkKTsKKyAgY29ubi0+YWxsb2NwdHIudXNlcnB3ZCA9IE5VTEw7CisKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL2xpYi9ydHNwLmggYi9saWIvcnRzcC5oCmluZGV4IDNmZmE3MGMuLjVhOGQ1NTUgMTAwNjQ0Ci0tLSBhL2xpYi9ydHNwLmgKKysrIGIvbGliL3J0c3AuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zZWxlY3QuYyBiL2xpYi9zZWxlY3QuYwppbmRleCAyNGRjNWZkLi5hYmY1NWQ4IDEwMDY0NAotLS0gYS9saWIvc2VsZWN0LmMKKysrIGIvbGliL3NlbGVjdC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxNiwxNSArMzE2LDE1IEBACiAgICAgICAgY3VybF9zb2NrZXRfdCBpcyB1bnNpZ25lZCBpbiBzdWNoIGNhc2VzIGFuZCB0aHVzIC0xIGlzIHRoZSBsYXJnZXN0CiAgICAgICAgdmFsdWUpLgogICAgICovCisjaWZkZWYgVVNFX1dJTlNPQ0sKICAgICByID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLAotI2lmbmRlZiBVU0VfV0lOU09DSwotICAgICAgICAgICAgICAgJmZkc19yZWFkLAotICAgICAgICAgICAgICAgJmZkc193cml0ZSwKLSNlbHNlCiAgICAgICAgICAgICAgICBmZHNfcmVhZC5mZF9jb3VudCA/ICZmZHNfcmVhZCA6IE5VTEwsCiAgICAgICAgICAgICAgICBmZHNfd3JpdGUuZmRfY291bnQgPyAmZmRzX3dyaXRlIDogTlVMTCwKLSNlbmRpZgogICAgICAgICAgICAgICAgJmZkc19lcnIsIHB0aW1lb3V0KTsKKyNlbHNlCisgICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwgJmZkc19yZWFkLCAmZmRzX3dyaXRlLCAmZmRzX2VyciwgcHRpbWVvdXQpOworI2VuZGlmCisKICAgICBpZihyICE9IC0xKQogICAgICAgYnJlYWs7CiAgICAgZXJyb3IgPSBTT0NLRVJSTk87CkBAIC01MDUsMTkgKzUwNSwxOSBAQAogICAgICAgcGVuZGluZ190di50dl9zZWMgPSAwOwogICAgICAgcGVuZGluZ190di50dl91c2VjID0gMDsKICAgICB9CisKKyNpZmRlZiBVU0VfV0lOU09DSwogICAgIHIgPSBzZWxlY3QoKGludCltYXhmZCArIDEsCi0jaWZuZGVmIFVTRV9XSU5TT0NLCi0gICAgICAgICAgICAgICAmZmRzX3JlYWQsICZmZHNfd3JpdGUsICZmZHNfZXJyLAotI2Vsc2UKICAgICAgICAgICAgICAgIC8qIFdpblNvY2sgc2VsZWN0KCkgY2FuJ3QgaGFuZGxlIGZkX3NldHMgd2l0aCB6ZXJvIGJpdHMgc2V0LCBzbwogICAgICAgICAgICAgICAgICAgZG9uJ3QgZ2l2ZSBpdCBzdWNoIGFyZ3VtZW50cy4gIFNlZSB0aGUgY29tbWVudCBhYm91dCB0aGlzIGluCiAgICAgICAgICAgICAgICAgICBDdXJsX2NoZWNrX3NvY2tldCgpLgogICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGZkc19yZWFkLmZkX2NvdW50ID8gJmZkc19yZWFkIDogTlVMTCwKICAgICAgICAgICAgICAgIGZkc193cml0ZS5mZF9jb3VudCA/ICZmZHNfd3JpdGUgOiBOVUxMLAotICAgICAgICAgICAgICAgZmRzX2Vyci5mZF9jb3VudCA/ICZmZHNfZXJyIDogTlVMTCwKKyAgICAgICAgICAgICAgIGZkc19lcnIuZmRfY291bnQgPyAmZmRzX2VyciA6IE5VTEwsIHB0aW1lb3V0KTsKKyNlbHNlCisgICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwgJmZkc19yZWFkLCAmZmRzX3dyaXRlLCAmZmRzX2VyciwgcHRpbWVvdXQpOwogI2VuZGlmCi0gICAgICAgICAgICAgICBwdGltZW91dCk7CiAgICAgaWYociAhPSAtMSkKICAgICAgIGJyZWFrOwogICAgIGVycm9yID0gU09DS0VSUk5POwpkaWZmIC0tZ2l0IGEvbGliL3NlbGVjdC5oIGIvbGliL3NlbGVjdC5oCmluZGV4IGMwMGFmZTEuLjY5NWJiNjkgMTAwNjQ0Ci0tLSBhL2xpYi9zZWxlY3QuaAorKysgYi9saWIvc2VsZWN0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2VuZGYuYyBiL2xpYi9zZW5kZi5jCmluZGV4IDVmMzlkMWYuLjIyZjNiZjIgMTAwNjQ0Ci0tLSBhL2xpYi9zZW5kZi5jCisrKyBiL2xpYi9zZW5kZi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsMTAgKzMxLDExIEBACiAjaW5jbHVkZSAic3NoLmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAic3RyZXJyb3IuaCIKKyNpbmNsdWRlICJzZWxlY3QuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0xMjAsNiArMTIxLDkwIEBACiB9CiAjZW5kaWYgLyogQ1VSTF9ET19MSU5FRU5EX0NPTlYgKi8KIAorI2lmZGVmIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQKK3N0YXRpYyB2b2lkIHByZV9yZWNlaXZlX3BsYWluKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IG51bSkKK3sKKyAgY29uc3QgY3VybF9zb2NrZXRfdCBzb2NrZmQgPSBjb25uLT5zb2NrW251bV07CisgIHN0cnVjdCBwb3N0cG9uZWRfZGF0YSAqIGNvbnN0IHBzbmQgPSAmKGNvbm4tPnBvc3Rwb25lZFtudW1dKTsKKyAgc2l6ZV90IGJ5dGVzdG9yZWN2ID0gcHNuZC0+YWxsb2NhdGVkX3NpemUgLSBwc25kLT5yZWN2X3NpemU7CisgIC8qIFdpblNvY2sgd2lsbCBkZXN0cm95IHVucmVhZCByZWNlaXZlZCBkYXRhIGlmIHNlbmQoKSBpcworICAgICBmYWlsZWQuCisgICAgIFRvIGF2b2lkIGxvc3NhZ2Ugb2YgcmVjZWl2ZWQgZGF0YSwgcmVjdigpIG11c3QgYmUKKyAgICAgcGVyZm9ybWVkIGJlZm9yZSBldmVyeSBzZW5kKCkgaWYgYW55IGluY29taW5nIGRhdGEgaXMKKyAgICAgYXZhaWxhYmxlLiBIb3dldmVyLCBza2lwIHRoaXMsIGlmIGJ1ZmZlciBpcyBhbHJlYWR5IGZ1bGwuICovCisgIGlmKChjb25uLT5oYW5kbGVyLT5wcm90b2NvbCZQUk9UT19GQU1JTFlfSFRUUCkgIT0gMCAmJgorICAgICBjb25uLT5yZWN2W251bV0gPT0gQ3VybF9yZWN2X3BsYWluICYmCisgICAgICghcHNuZC0+YnVmZmVyIHx8IGJ5dGVzdG9yZWN2KSkgeworICAgIGNvbnN0IGludCByZWFkeW1hc2sgPSBDdXJsX3NvY2tldF9jaGVjayhzb2NrZmQsIENVUkxfU09DS0VUX0JBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9TT0NLRVRfQkFELCAwKTsKKyAgICBpZihyZWFkeW1hc2sgIT0gLTEgJiYgKHJlYWR5bWFzayAmIENVUkxfQ1NFTEVDVF9JTikgIT0gMCkgeworICAgICAgLyogSGF2ZSBzb21lIGluY29taW5nIGRhdGEgKi8KKyAgICAgIGlmKCFwc25kLT5idWZmZXIpIHsKKyAgICAgICAgLyogVXNlIGJ1ZmZlciBkb3VibGUgZGVmYXVsdCBzaXplIGZvciBpbnRlcm1lZGlhdGUgYnVmZmVyICovCisgICAgICAgIHBzbmQtPmFsbG9jYXRlZF9zaXplID0gMiAqIEJVRlNJWkU7CisgICAgICAgIHBzbmQtPmJ1ZmZlciA9IG1hbGxvYyhwc25kLT5hbGxvY2F0ZWRfc2l6ZSk7CisgICAgICAgIHBzbmQtPnJlY3Zfc2l6ZSA9IDA7CisgICAgICAgIHBzbmQtPnJlY3ZfcHJvY2Vzc2VkID0gMDsKKyNpZmRlZiBERUJVR0JVSUxECisgICAgICAgIHBzbmQtPmJpbmRzb2NrID0gc29ja2ZkOyAvKiBVc2VkIG9ubHkgZm9yIERFQlVHQVNTRVJUICovCisjZW5kaWYgLyogREVCVUdCVUlMRCAqLworICAgICAgICBieXRlc3RvcmVjdiA9IHBzbmQtPmFsbG9jYXRlZF9zaXplOworICAgICAgfQorICAgICAgaWYocHNuZC0+YnVmZmVyKSB7CisgICAgICAgIHNzaXplX3QgcmVjdmVkYnl0ZXM7CisgICAgICAgIERFQlVHQVNTRVJUKHBzbmQtPmJpbmRzb2NrID09IHNvY2tmZCk7CisgICAgICAgIHJlY3ZlZGJ5dGVzID0gc3JlYWQoc29ja2ZkLCBwc25kLT5idWZmZXIgKyBwc25kLT5yZWN2X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0b3JlY3YpOworICAgICAgICBpZihyZWN2ZWRieXRlcyA+IDApCisgICAgICAgICAgcHNuZC0+cmVjdl9zaXplICs9IHJlY3ZlZGJ5dGVzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBwc25kLT5hbGxvY2F0ZWRfc2l6ZSA9IDA7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyBzc2l6ZV90IGdldF9wcmVfcmVjdmVkKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IG51bSwgY2hhciAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKK3sKKyAgc3RydWN0IHBvc3Rwb25lZF9kYXRhICogY29uc3QgcHNuZCA9ICYoY29ubi0+cG9zdHBvbmVkW251bV0pOworICBzaXplX3QgY29weXNpemU7CisgIGlmKCFwc25kLT5idWZmZXIpCisgICAgcmV0dXJuIDA7CisKKyAgREVCVUdBU1NFUlQocHNuZC0+YWxsb2NhdGVkX3NpemUgPiAwKTsKKyAgREVCVUdBU1NFUlQocHNuZC0+cmVjdl9zaXplIDw9IHBzbmQtPmFsbG9jYXRlZF9zaXplKTsKKyAgREVCVUdBU1NFUlQocHNuZC0+cmVjdl9wcm9jZXNzZWQgPD0gcHNuZC0+cmVjdl9zaXplKTsKKyAgLyogQ2hlY2sgYW5kIHByb2Nlc3MgZGF0YSB0aGF0IGFscmVhZHkgcmVjZWl2ZWQgYW5kIHN0b3JpZWQgaW4gaW50ZXJuYWwKKyAgICAgaW50ZXJtZWRpYXRlIGJ1ZmZlciAqLworICBpZihwc25kLT5yZWN2X3NpemUgPiBwc25kLT5yZWN2X3Byb2Nlc3NlZCkgeworICAgIERFQlVHQVNTRVJUKHBzbmQtPmJpbmRzb2NrID09IGNvbm4tPnNvY2tbbnVtXSk7CisgICAgY29weXNpemUgPSBDVVJMTUlOKGxlbiwgcHNuZC0+cmVjdl9zaXplIC0gcHNuZC0+cmVjdl9wcm9jZXNzZWQpOworICAgIG1lbWNweShidWYsIHBzbmQtPmJ1ZmZlciArIHBzbmQtPnJlY3ZfcHJvY2Vzc2VkLCBjb3B5c2l6ZSk7CisgICAgcHNuZC0+cmVjdl9wcm9jZXNzZWQgKz0gY29weXNpemU7CisgIH0KKyAgZWxzZQorICAgIGNvcHlzaXplID0gMDsgLyogYnVmZmVyIHdhcyBhbGxvY2F0ZWQsIGJ1dCBub3RoaW5nIHdhcyByZWNlaXZlZCAqLworCisgIC8qIEZyZWUgaW50ZXJtZWRpYXRlIGJ1ZmZlciBpZiBpdCBoYXMgbm8gdW5wcm9jZXNzZWQgZGF0YSAqLworICBpZihwc25kLT5yZWN2X3Byb2Nlc3NlZCA9PSBwc25kLT5yZWN2X3NpemUpIHsKKyAgICBmcmVlKHBzbmQtPmJ1ZmZlcik7CisgICAgcHNuZC0+YnVmZmVyID0gTlVMTDsKKyAgICBwc25kLT5hbGxvY2F0ZWRfc2l6ZSA9IDA7CisgICAgcHNuZC0+cmVjdl9zaXplID0gMDsKKyAgICBwc25kLT5yZWN2X3Byb2Nlc3NlZCA9IDA7CisjaWZkZWYgREVCVUdCVUlMRAorICAgIHBzbmQtPmJpbmRzb2NrID0gQ1VSTF9TT0NLRVRfQkFEOworI2VuZGlmIC8qIERFQlVHQlVJTEQgKi8KKyAgfQorICByZXR1cm4gKHNzaXplX3QpY29weXNpemU7Cit9CisjZWxzZSAgLyogISBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCisvKiBVc2UgImRvLW5vdGhpbmciIG1hY3JvcyBpbnN0ZWFkIG9mIGZ1bmN0aW9ucyB3aGVuIHdvcmthcm91bmQgbm90IHVzZWQgKi8KKyNkZWZpbmUgcHJlX3JlY2VpdmVfcGxhaW4oYyxuKSBkbyB7fSBXSElMRV9GQUxTRQorI2RlZmluZSBnZXRfcHJlX3JlY3ZlZChjLG4sYixsKSAwCisjZW5kaWYgLyogISBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCisKIC8qIEN1cmxfaW5mb2YoKSBpcyBmb3IgaW5mbyBtZXNzYWdlIGFsb25nIHRoZSB3YXkgKi8KIAogdm9pZCBDdXJsX2luZm9mKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBjb25zdCBjaGFyICpmbXQsIC4uLikKQEAgLTI1NCw3ICszMzksMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmNvZGUpCiB7CiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tudW1dOwotICBzc2l6ZV90IGJ5dGVzX3dyaXR0ZW4gPSBzd3JpdGUoc29ja2ZkLCBtZW0sIGxlbik7CisgIHNzaXplX3QgYnl0ZXNfd3JpdHRlbjsKKyAgLyogV2luU29jayB3aWxsIGRlc3Ryb3kgdW5yZWFkIHJlY2VpdmVkIGRhdGEgaWYgc2VuZCgpIGlzCisgICAgIGZhaWxlZC4KKyAgICAgVG8gYXZvaWQgbG9zc2FnZSBvZiByZWNlaXZlZCBkYXRhLCByZWN2KCkgbXVzdCBiZQorICAgICBwZXJmb3JtZWQgYmVmb3JlIGV2ZXJ5IHNlbmQoKSBpZiBhbnkgaW5jb21pbmcgZGF0YSBpcworICAgICBhdmFpbGFibGUuICovCisgIHByZV9yZWNlaXZlX3BsYWluKGNvbm4sIG51bSk7CisKKyNpZmRlZiBNU0dfRkFTVE9QRU4gLyogTGludXggKi8KKyAgaWYoY29ubi0+Yml0cy50Y3BfZmFzdG9wZW4pIHsKKyAgICBieXRlc193cml0dGVuID0gc2VuZHRvKHNvY2tmZCwgbWVtLCBsZW4sIE1TR19GQVNUT1BFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmlwX2FkZHItPmFpX2FkZHIsIGNvbm4tPmlwX2FkZHItPmFpX2FkZHJsZW4pOworICAgIGNvbm4tPmJpdHMudGNwX2Zhc3RvcGVuID0gRkFMU0U7CisgIH0KKyAgZWxzZQorI2VuZGlmCisgICAgYnl0ZXNfd3JpdHRlbiA9IHN3cml0ZShzb2NrZmQsIG1lbSwgbGVuKTsKIAogICAqY29kZSA9IENVUkxFX09LOwogICBpZigtMSA9PSBieXRlc193cml0dGVuKSB7CkBAIC0yNjgsNyArMzY5LDggQEAKICAgICAgIC8qIGVycm5vIG1heSBiZSBFV09VTERCTE9DSyBvciBvbiBzb21lIHN5c3RlbXMgRUFHQUlOIHdoZW4gaXQgcmV0dXJuZWQKICAgICAgICAgIGR1ZSB0byBpdHMgaW5hYmlsaXR5IHRvIHNlbmQgb2ZmIGRhdGEgd2l0aG91dCBibG9ja2luZy4gV2UgdGhlcmVmb3IKICAgICAgICAgIHRyZWF0IGJvdGggZXJyb3IgY29kZXMgdGhlIHNhbWUgaGVyZSAqLwotICAgICAgKEVXT1VMREJMT0NLID09IGVycikgfHwgKEVBR0FJTiA9PSBlcnIpIHx8IChFSU5UUiA9PSBlcnIpCisgICAgICAoRVdPVUxEQkxPQ0sgPT0gZXJyKSB8fCAoRUFHQUlOID09IGVycikgfHwgKEVJTlRSID09IGVycikgfHwKKyAgICAgIChFSU5QUk9HUkVTUyA9PSBlcnIpCiAjZW5kaWYKICAgICAgICkgewogICAgICAgLyogdGhpcyBpcyBqdXN0IGEgY2FzZSBvZiBFV09VTERCTE9DSyAqLwpAQCAtMzExLDcgKzQxMywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmNvZGUpCiB7CiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tudW1dOwotICBzc2l6ZV90IG5yZWFkID0gc3JlYWQoc29ja2ZkLCBidWYsIGxlbik7CisgIHNzaXplX3QgbnJlYWQ7CisgIC8qIENoZWNrIGFuZCByZXR1cm4gZGF0YSB0aGF0IGFscmVhZHkgcmVjZWl2ZWQgYW5kIHN0b3JpZWQgaW4gaW50ZXJuYWwKKyAgICAgaW50ZXJtZWRpYXRlIGJ1ZmZlciAqLworICBucmVhZCA9IGdldF9wcmVfcmVjdmVkKGNvbm4sIG51bSwgYnVmLCBsZW4pOworICBpZihucmVhZCA+IDApIHsKKyAgICAqY29kZSA9IENVUkxFX09LOworICAgIHJldHVybiBucmVhZDsKKyAgfQorCisgIG5yZWFkID0gc3JlYWQoc29ja2ZkLCBidWYsIGxlbik7CiAKICAgKmNvZGUgPSBDVVJMRV9PSzsKICAgaWYoLTEgPT0gbnJlYWQpIHsKQEAgLTUyMCwxMSArNjMxLDEzIEBACiAKICAgaWYoLTEgPT0gbnJlYWQpIHsKICAgICBpbnQgZXJyID0gU09DS0VSUk5POworICAgIGludCByZXR1cm5fZXJyb3I7CiAjaWZkZWYgVVNFX1dJTlNPQ0sKLSAgICBpZihXU0FFV09VTERCTE9DSyA9PSBlcnIpCisgICAgcmV0dXJuX2Vycm9yID0gV1NBRVdPVUxEQkxPQ0sgPT0gZXJyOwogI2Vsc2UKLSAgICBpZigoRVdPVUxEQkxPQ0sgPT0gZXJyKSB8fCAoRUFHQUlOID09IGVycikgfHwgKEVJTlRSID09IGVycikpCisgICAgcmV0dXJuX2Vycm9yID0gRVdPVUxEQkxPQ0sgPT0gZXJyIHx8IEVBR0FJTiA9PSBlcnIgfHwgRUlOVFIgPT0gZXJyOwogI2VuZGlmCisgICAgaWYocmV0dXJuX2Vycm9yKQogICAgICAgcmV0dXJuIENVUkxFX0FHQUlOOwogICAgIGVsc2UKICAgICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwpAQCAtNTUxLDcgKzY2NCwxMCBAQAogICBzc2l6ZV90IG5yZWFkID0gMDsKICAgc2l6ZV90IGJ5dGVzZnJvbXNvY2tldCA9IDA7CiAgIGNoYXIgKmJ1ZmZlcnRvZmlsbCA9IE5VTEw7Ci0gIGJvb2wgcGlwZWxpbmluZyA9IEN1cmxfcGlwZWxpbmVfd2FudGVkKGNvbm4tPmRhdGEtPm11bHRpLCBDVVJMUElQRV9IVFRQMSk7CisKKyAgLyogaWYgSFRUUC8xIHBpcGVsaW5pbmcgaXMgYm90aCB3YW50ZWQgYW5kIHBvc3NpYmxlICovCisgIGJvb2wgcGlwZWxpbmluZyA9IEN1cmxfcGlwZWxpbmVfd2FudGVkKGNvbm4tPmRhdGEtPm11bHRpLCBDVVJMUElQRV9IVFRQMSkgJiYKKyAgICAoY29ubi0+YnVuZGxlLT5tdWx0aXVzZSA9PSBCVU5ETEVfUElQRUxJTklORyk7CiAKICAgLyogU2V0ICdudW0nIHRvIDAgb3IgMSwgZGVwZW5kaW5nIG9uIHdoaWNoIHNvY2tldCB0aGF0IGhhcyBiZWVuIHNlbnQgaGVyZS4KICAgICAgSWYgaXQgaXMgdGhlIHNlY29uZCBzb2NrZXQsIHdlIHNldCBudW0gdG8gMS4gT3RoZXJ3aXNlIHRvIDAuIFRoaXMgbGV0cwpkaWZmIC0tZ2l0IGEvbGliL3NlbmRmLmggYi9saWIvc2VuZGYuaAppbmRleCA4NmYwNmNmLi40OGU5NDQ0IDEwMDY0NAotLS0gYS9saWIvc2VuZGYuaAorKysgYi9saWIvc2VuZGYuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zZXR1cC1vczQwMC5oIGIvbGliL3NldHVwLW9zNDAwLmgKaW5kZXggZmFlODU2Ny4uZTMyYjcyZiAxMDA2NDQKLS0tIGEvbGliL3NldHVwLW9zNDAwLmgKKysrIGIvbGliL3NldHVwLW9zNDAwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2V0dXAtdm1zLmggYi9saWIvc2V0dXAtdm1zLmgKaW5kZXggZjYxNzlhNC4uNGI3OGUwYiAxMDA2NDQKLS0tIGEvbGliL3NldHVwLXZtcy5oCisrKyBiL2xpYi9zZXR1cC12bXMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0OSw2ICsyNDksOSBAQAogI2RlZmluZSBNRDVfSW5pdCBNRDVfSU5JVAogI2RlZmluZSBNRDVfVXBkYXRlIE1ENV9VUERBVEUKICNkZWZpbmUgT1BFTlNTTF9hZGRfYWxsX2FsZ29fbm9jb25mIE9QRU5TU0xfQUREX0FMTF9BTEdPX05PQ09ORgorI2lmbmRlZiBfX1ZBWAorI2RlZmluZSBPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzIE9QRU5TU0xfTE9BRF9CVUlMVElOX01PRFVMRVMKKyNlbmRpZgogI2RlZmluZSBQRU1fcmVhZF9YNTA5IFBFTV9SRUFEX1g1MDkKICNkZWZpbmUgUEVNX3dyaXRlX2Jpb19YNTA5IFBFTV9XUklURV9CSU9fWDUwOQogI2RlZmluZSBQS0NTMTJfUEJFX2FkZCBQS0NTMTJfUEJFX0FERApAQCAtMjcyLDYgKzI3NSw3IEBACiAjZGVmaW5lIFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0IFNTTF9DVFhfU0VUX0NJUEhFUl9MSVNUCiAjZGVmaW5lIFNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQgU1NMX0NUWF9TRVRfREVGX1BBU1NXRF9DQl9VRAogI2RlZmluZSBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYiBTU0xfQ1RYX1NFVF9ERUZBVUxUX1BBU1NXRF9DQgorI2RlZmluZSBTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2sgU1NMX0NUWF9TRVRfTVNHX0NBTExCQUNLCiAjZGVmaW5lIFNTTF9DVFhfc2V0X3ZlcmlmeSBTU0xfQ1RYX1NFVF9WRVJJRlkKICNkZWZpbmUgU1NMX0NUWF91c2VfUHJpdmF0ZUtleSBTU0xfQ1RYX1VTRV9QUklWQVRFS0VZCiAjZGVmaW5lIFNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZSBTU0xfQ1RYX1VTRV9QUklWQVRFS0VZX0ZJTEUKQEAgLTMwMSw2ICszMDUsNyBAQAogI2RlZmluZSBTU0xfc2V0X2ZkIFNTTF9TRVRfRkQKICNkZWZpbmUgU1NMX3NldF9zZXNzaW9uIFNTTF9TRVRfU0VTU0lPTgogI2RlZmluZSBTU0xfc2h1dGRvd24gU1NMX1NIVVRET1dOCisjZGVmaW5lIFNTTF92ZXJzaW9uIFNTTF9WRVJTSU9OCiAjZGVmaW5lIFNTTF93cml0ZSBTU0xfV1JJVEUKICNkZWZpbmUgU1NMZWF5IFNTTEVBWQogI2RlZmluZSBTU0x2MjNfY2xpZW50X21ldGhvZCBTU0xWMjNfQ0xJRU5UX01FVEhPRApAQCAtMzI1LDYgKzMzMCw3IEBACiAjZGVmaW5lIFVJX3NldF9yZXN1bHQgVUlfU0VUX1JFU1VMVAogI2RlZmluZSBYNTA5VjNfRVhUX3ByaW50IFg1MDlWM19FWFRfUFJJTlQKICNkZWZpbmUgWDUwOV9FWFRFTlNJT05fZ2V0X2NyaXRpY2FsIFg1MDlfRVhURU5TSU9OX0dFVF9DUklUSUNBTAorI2RlZmluZSBYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YSBYNTA5X0VYVEVOU0lPTl9HRVRfREFUQQogI2RlZmluZSBYNTA5X0VYVEVOU0lPTl9nZXRfb2JqZWN0IFg1MDlfRVhURU5TSU9OX0dFVF9PQkpFQ1QKICNkZWZpbmUgWDUwOV9MT09LVVBfZmlsZSBYNTA5X0xPT0tVUF9GSUxFCiAjZGVmaW5lIFg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YSBYNTA5X05BTUVfRU5UUllfR0VUX0RBVEEKQEAgLTM0OSw2ICszNTUsMTIgQEAKICNkZWZpbmUgc2tfcG9wIFNLX1BPUAogI2RlZmluZSBza19wb3BfZnJlZSBTS19QT1BfRlJFRQogI2RlZmluZSBza192YWx1ZSBTS19WQUxVRQorI2lmZGVmIF9fVkFYCisjZGVmaW5lIE9QRU5TU0xfTk9fU0hBMjU2CisjZW5kaWYKKyNkZWZpbmUgU0hBMjU2X0ZpbmFsIFNIQTI1Nl9GSU5BTAorI2RlZmluZSBTSEEyNTZfSW5pdCBTSEEyNTZfSU5JVAorI2RlZmluZSBTSEEyNTZfVXBkYXRlIFNIQTI1Nl9VUERBVEUKIAogI2RlZmluZSBVU0VfVVBQRVJDQVNFX0dTU0FQSSAxCiAjZGVmaW5lIGdzc19zZWFsIEdTU19TRUFMCmRpZmYgLS1naXQgYS9saWIvc2hhcmUuYyBiL2xpYi9zaGFyZS5jCmluZGV4IDE3MjAyNDguLjU4YzU5MTIgMTAwNjQ0Ci0tLSBhL2xpYi9zaGFyZS5jCisrKyBiL2xpYi9zaGFyZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzEsMTQgKzcxLDE0IEBACiAgICAgLyogdGhpcyBpcyBhIHR5cGUgdGhpcyBzaGFyZSB3aWxsIHNoYXJlICovCiAgICAgdHlwZSA9IHZhX2FyZyhwYXJhbSwgaW50KTsKICAgICBzaGFyZS0+c3BlY2lmaWVyIHw9ICgxPDx0eXBlKTsKLSAgICBzd2l0Y2goIHR5cGUgKSB7CisgICAgc3dpdGNoKHR5cGUpIHsKICAgICBjYXNlIENVUkxfTE9DS19EQVRBX0ROUzoKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9DT09LSUU6CiAjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DT09LSUVTKQogICAgICAgaWYoIXNoYXJlLT5jb29raWVzKSB7Ci0gICAgICAgIHNoYXJlLT5jb29raWVzID0gQ3VybF9jb29raWVfaW5pdChOVUxMLCBOVUxMLCBOVUxMLCBUUlVFICk7CisgICAgICAgIHNoYXJlLT5jb29raWVzID0gQ3VybF9jb29raWVfaW5pdChOVUxMLCBOVUxMLCBOVUxMLCBUUlVFKTsKICAgICAgICAgaWYoIXNoYXJlLT5jb29raWVzKQogICAgICAgICAgIHJlcyA9IENVUkxTSEVfTk9NRU07CiAgICAgICB9CkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAvKiB0aGlzIGlzIGEgdHlwZSB0aGlzIHNoYXJlIHdpbGwgbm8gbG9uZ2VyIHNoYXJlICovCiAgICAgdHlwZSA9IHZhX2FyZyhwYXJhbSwgaW50KTsKICAgICBzaGFyZS0+c3BlY2lmaWVyICY9IH4oMTw8dHlwZSk7Ci0gICAgc3dpdGNoKCB0eXBlICkgeworICAgIHN3aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9ETlM6CiAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvbGliL3NoYXJlLmggYi9saWIvc2hhcmUuaAppbmRleCA4ZTY2MjliLi5kMjNkM2EwIDEwMDY0NAotLS0gYS9saWIvc2hhcmUuaAorKysgYi9saWIvc2hhcmUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zaWdwaXBlLmggYi9saWIvc2lncGlwZS5oCmluZGV4IGU4ZDJhY2QuLjY1NTljNzQgMTAwNjQ0Ci0tLSBhL2xpYi9zaWdwaXBlLmgKKysrIGIvbGliL3NpZ3BpcGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zbGlzdC5jIGIvbGliL3NsaXN0LmMKaW5kZXggOWMwYjJhNS4uZTVhZGMwZSAxMDA2NDQKLS0tIGEvbGliL3NsaXN0LmMKKysrIGIvbGliL3NsaXN0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgInNsaXN0LmgiCiAKIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KZGlmZiAtLWdpdCBhL2xpYi9zbGlzdC5oIGIvbGliL3NsaXN0LmgKaW5kZXggZWE3ZGNjNC4uYjNmNDk4YyAxMDA2NDQKLS0tIGEvbGliL3NsaXN0LmgKKysrIGIvbGliL3NsaXN0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc21iLmMgYi9saWIvc21iLmMKaW5kZXggZDQ2MWE3MS4uMmMzM2MxMSAxMDA2NDQKLS0tIGEvbGliL3NtYi5jCisrKyBiL2xpYi9zbWIuYwpAQCAtMTAsNyArMTAsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTEzMSw3ICsxMzEsNyBAQAogICAgZGVmaW5lZChfX09TNDAwX18pCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgc21iX3N3YXAxNih1bnNpZ25lZCBzaG9ydCB4KQogewotICByZXR1cm4gKHggPDwgOCkgfCAoKHggPj4gOCkgJiAweGZmKTsKKyAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydCkgKCh4IDw8IDgpIHwgKCh4ID4+IDgpICYgMHhmZikpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHNtYl9zd2FwMzIodW5zaWduZWQgaW50IHgpCkBAIC0xNDMsMTIgKzE0MywxNCBAQAogI2lmZGVmIEhBVkVfTE9OR0xPTkcKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgc21iX3N3YXA2NCh1bnNpZ25lZCBsb25nIGxvbmcgeCkKIHsKLSAgcmV0dXJuICgodW5zaWduZWQgbG9uZyBsb25nKXNtYl9zd2FwMzIoeCkgPDwgMzIpIHwgc21iX3N3YXAzMih4ID4+IDMyKTsKKyAgcmV0dXJuICgodW5zaWduZWQgbG9uZyBsb25nKSBzbWJfc3dhcDMyKCh1bnNpZ25lZCBpbnQpIHgpIDw8IDMyKSB8CisgICAgICAgICAgc21iX3N3YXAzMigodW5zaWduZWQgaW50KSAoeCA+PiAzMikpOwogfQogI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBfX2ludDY0IHNtYl9zd2FwNjQodW5zaWduZWQgX19pbnQ2NCB4KQogewotICByZXR1cm4gKCh1bnNpZ25lZCBfX2ludDY0KXNtYl9zd2FwMzIoeCkgPDwgMzIpIHwgc21iX3N3YXAzMih4ID4+IDMyKTsKKyAgcmV0dXJuICgodW5zaWduZWQgX19pbnQ2NCkgc21iX3N3YXAzMigodW5zaWduZWQgaW50KSB4KSA8PCAzMikgfAorICAgICAgICAgIHNtYl9zd2FwMzIoKHVuc2lnbmVkIGludCkgKHggPj4gMzIpKTsKIH0KICNlbmRpZgogI2Vsc2UKZGlmZiAtLWdpdCBhL2xpYi9zbWIuaCBiL2xpYi9zbWIuaAppbmRleCA3ODUyZmExLi4xYTRmNjZlIDEwMDY0NAotLS0gYS9saWIvc21iLmgKKysrIGIvbGliL3NtYi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NtdHAuYyBiL2xpYi9zbXRwLmMKaW5kZXggZGFkYTA4Ny4uMmE1YjJiZiAxMDA2NDQKLS0tIGEvbGliL3NtdHAuYworKysgYi9saWIvc210cC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODIsOSArODIsOSBAQAogI2luY2x1ZGUgImN1cmxfZ2V0aG9zdG5hbWUuaCIKICNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qIExvY2FsIEFQSSBmdW5jdGlvbnMgKi8KQEAgLTIyNCw3ICsyMjQsMTEgQEAKICNpZmRlZiBVU0VfU1NMCiBzdGF0aWMgdm9pZCBzbXRwX3RvX3NtdHBzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKKyAgLyogQ2hhbmdlIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgKi8KICAgY29ubi0+aGFuZGxlciA9ICZDdXJsX2hhbmRsZXJfc210cHM7CisKKyAgLyogU2V0IHRoZSBjb25uZWN0aW9uJ3MgdXBncmFkZWQgdG8gVExTIGZsYWcgKi8KKyAgY29ubi0+dGxzX3VwZ3JhZGVkID0gVFJVRTsKIH0KICNlbHNlCiAjZGVmaW5lIHNtdHBfdG9fc210cHMoeCkgQ3VybF9ub3Bfc3RtdApAQCAtMjg4LDcgKzI5Miw3IEBACiAgIC8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSAqLwogICBmb3IobGVuID0gc3RybGVuKG1lc3NhZ2UpOyBsZW4tLTspCiAgICAgaWYobWVzc2FnZVtsZW5dICE9ICdccicgJiYgbWVzc2FnZVtsZW5dICE9ICdcbicgJiYgbWVzc2FnZVtsZW5dICE9ICcgJyAmJgotICAgICAgICBtZXNzYWdlW2xlbl0gIT0gJ1x0JykKKyAgICAgICBtZXNzYWdlW2xlbl0gIT0gJ1x0JykKICAgICAgIGJyZWFrOwogCiAgIC8qIFRlcm1pbmF0ZSB0aGUgbWVzc2FnZSAqLwpAQCAtNDg2LDcgKzQ5MCw3IEBACiAgIC8qIENoZWNrIHdlIGhhdmUgZW5vdWdoIGRhdGEgdG8gYXV0aGVudGljYXRlIHdpdGgsIGFuZCB0aGUKICAgICAgc2VydmVyIHN1cHBvcnRzIGF1dGhlbnRpYXRpb24sIGFuZCBlbmQgdGhlIGNvbm5lY3QgcGhhc2UgaWYgbm90ICovCiAgIGlmKCFzbXRwYy0+YXV0aF9zdXBwb3J0ZWQgfHwKLSAgICAgICFDdXJsX3Nhc2xfY2FuX2F1dGhlbnRpY2F0ZSgmc210cGMtPnNhc2wsIGNvbm4pKSB7CisgICAgICFDdXJsX3Nhc2xfY2FuX2F1dGhlbnRpY2F0ZSgmc210cGMtPnNhc2wsIGNvbm4pKSB7CiAgICAgc3RhdGUoY29ubiwgU01UUF9TVE9QKTsKICAgICByZXR1cm4gcmVzdWx0OwogICB9CkBAIC01MjIsOSArNTI2LDkgQEAKICAgLyogU2VuZCB0aGUgY29tbWFuZCAqLwogICBpZihzbXRwLT5yY3B0KQogICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiJXMgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSAmJiBzbXRwLT5jdXN0b21bMF0gIT0gJ1wwJyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+Y3VzdG9tIDogIlZSRlkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPnJjcHQtPmRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+Y3VzdG9tICYmIHNtdHAtPmN1c3RvbVswXSAhPSAnXDAnID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSA6ICJWUkZZIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPnJjcHQtPmRhdGEpOwogICBlbHNlCiAgICAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmY29ubi0+cHJvdG8uc210cGMucHAsICIlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5jdXN0b20gJiYgc210cC0+Y3VzdG9tWzBdICE9ICdcMCcgPwpAQCAtNjI5LDEwICs2MzMsMTAgQEAKICAgLyogU2VuZCB0aGUgUkNQVCBUTyBjb21tYW5kICovCiAgIGlmKHNtdHAtPnJjcHQtPmRhdGFbMF0gPT0gJzwnKQogICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiUkNQVCBUTzolcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKICAgZWxzZQogICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiUkNQVCBUTzo8JXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPnJjcHQtPmRhdGEpOwogICBpZighcmVzdWx0KQogICAgIHN0YXRlKGNvbm4sIFNNVFBfUkNQVCk7CiAKQEAgLTc2Niw4ICs3NzAsOCBAQAogICAgICAgICAgIHdvcmRsZW4rKzsKIAogICAgICAgICAvKiBUZXN0IHRoZSB3b3JkIGZvciBhIG1hdGNoaW5nIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSAqLwotICAgICAgICBpZigobWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbikpICYmCi0gICAgICAgICAgIGxsZW4gPT0gd29yZGxlbikKKyAgICAgICAgbWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbik7CisgICAgICAgIGlmKG1lY2hiaXQgJiYgbGxlbiA9PSB3b3JkbGVuKQogICAgICAgICAgIHNtdHBjLT5zYXNsLmF1dGhtZWNocyB8PSBtZWNoYml0OwogCiAgICAgICAgIGxpbmUgKz0gd29yZGxlbjsKQEAgLTEyMDAsMTAgKzEyMDQsNiBAQAogICAodm9pZClwcmVtYXR1cmU7CiAKICAgaWYoIXNtdHAgfHwgIXBwLT5jb25uKQotICAgIC8qIFdoZW4gdGhlIGVhc3kgaGFuZGxlIGlzIHJlbW92ZWQgZnJvbSB0aGUgbXVsdGkgaW50ZXJmYWNlIHdoaWxlIGxpYmN1cmwKLSAgICAgICBpcyBzdGlsbCB0cnlpbmcgdG8gcmVzb2x2ZSB0aGUgaG9zdCBuYW1lLCB0aGUgU01UUCBzdHJ1Y3QgaXMgbm90IHlldAotICAgICAgIGluaXRpYWxpemVkLiBIb3dldmVyLCB0aGUgcmVtb3ZhbCBhY3Rpb24gY2FsbHMgQ3VybF9kb25lKCkgd2hpY2ggaW4KLSAgICAgICB0dXJuIGNhbGxzIHRoaXMgZnVuY3Rpb24sIHNvIHdlIHNpbXBseSByZXR1cm4gc3VjY2Vzcy4gKi8KICAgICByZXR1cm4gQ1VSTEVfT0s7CiAKICAgaWYoc3RhdHVzKSB7CkBAIC0xMjU4LDggKzEyNTgsNyBAQAogCiAgICAgICAgVE9ETzogd2hlbiB0aGUgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQsIHRoaXMgX3JlYWxseV8gc2hvdWxkIGJlIHVzaW5nCiAgICAgICAgdGhlIHNtdHBfbXVsdGlfc3RhdGVtYWNoIGZ1bmN0aW9uIGJ1dCB3ZSBoYXZlIG5vIGdlbmVyYWwgc3VwcG9ydCBmb3IKLSAgICAgICBub24tYmxvY2tpbmcgRE9ORSBvcGVyYXRpb25zLCBub3QgaW4gdGhlIG11bHRpIHN0YXRlIG1hY2hpbmUgYW5kIHdpdGgKLSAgICAgICBDdXJsX2RvbmUoKSBpbnZva2VzIG9uIHNldmVyYWwgcGxhY2VzIGluIHRoZSBjb2RlIQorICAgICAgIG5vbi1ibG9ja2luZyBET05FIG9wZXJhdGlvbnMhCiAgICAgKi8KICAgICByZXN1bHQgPSBzbXRwX2Jsb2NrX3N0YXRlbWFjaChjb25uKTsKICAgfQpAQCAtMTQ1MCw2ICsxNDQ5LDEwIEBACiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKICAgQ1VSTGNvZGUgcmVzdWx0OwogCisgIC8qIENsZWFyIHRoZSBUTFMgdXBncmFkZWQgZmxhZyAqLworICBjb25uLT50bHNfdXBncmFkZWQgPSBGQUxTRTsKKworICAvKiBTZXQgdXAgdGhlIHByb3h5IGlmIG5lY2Vzc2FyeSAqLwogICBpZihjb25uLT5iaXRzLmh0dHBwcm94eSAmJiAhZGF0YS0+c2V0LnR1bm5lbF90aHJ1X2h0dHBwcm94eSkgewogICAgIC8qIFVubGVzcyB3ZSBoYXZlIGFza2VkIHRvIHR1bm5lbCBTTVRQIG9wZXJhdGlvbnMgdGhyb3VnaCB0aGUgcHJveHksIHdlCiAgICAgICAgc3dpdGNoIGFuZCB1c2UgSFRUUCBvcGVyYXRpb25zIG9ubHkgKi8KQEAgLTE1MDIsNyArMTUwNSw3IEBACiAgICAgY29uc3QgY2hhciAqdmFsdWU7CiAKICAgICB3aGlsZSgqcHRyICYmICpwdHIgIT0gJz0nKQotICAgICAgICBwdHIrKzsKKyAgICAgIHB0cisrOwogCiAgICAgdmFsdWUgPSBwdHIgKyAxOwogCmRpZmYgLS1naXQgYS9saWIvc210cC5oIGIvbGliL3NtdHAuaAppbmRleCA5ZmJlMGM1Li42ZWJlYzE4IDEwMDY0NAotLS0gYS9saWIvc210cC5oCisrKyBiL2xpYi9zbXRwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc29ja2FkZHIuaCBiL2xpYi9zb2NrYWRkci5oCmluZGV4IDZhMjE1MWMuLjk1YmE0YzMgMTAwNjQ0Ci0tLSBhL2xpYi9zb2NrYWRkci5oCisrKyBiL2xpYi9zb2NrYWRkci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NvY2tzLmMgYi9saWIvc29ja3MuYwppbmRleCA3ZDNmNzgyLi44YzQxMjk2IDEwMDY0NAotLS0gYS9saWIvc29ja3MuYworKysgYi9saWIvc29ja3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE3Myw4ICsxNzMsOCBAQAogICAgICAgdW5zaWduZWQgc2hvcnQgaXBbNF07CiAgICAgICBDdXJsX3ByaW50YWJsZV9hZGRyZXNzKGhwLCBidWYsIHNpemVvZihidWYpKTsKIAotICAgICAgaWYoNCA9PSBzc2NhbmYoIGJ1ZiwgIiVodS4laHUuJWh1LiVodSIsCi0gICAgICAgICAgICAgICAgICAgICAgJmlwWzBdLCAmaXBbMV0sICZpcFsyXSwgJmlwWzNdKSkgeworICAgICAgaWYoNCA9PSBzc2NhbmYoYnVmLCAiJWh1LiVodS4laHUuJWh1IiwKKyAgICAgICAgICAgICAgICAgICAgICZpcFswXSwgJmlwWzFdLCAmaXBbMl0sICZpcFszXSkpIHsKICAgICAgICAgLyogU2V0IERTVElQICovCiAgICAgICAgIHNvY2tzcmVxWzRdID0gKHVuc2lnbmVkIGNoYXIpaXBbMF07CiAgICAgICAgIHNvY2tzcmVxWzVdID0gKHVuc2lnbmVkIGNoYXIpaXBbMV07CkBAIC0zMDAsOCArMzAwLDggQEAKICAgICAgICAgICAgICIsIHJlcXVlc3QgcmVqZWN0ZWQgb3IgZmFpbGVkLiIsCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKHNvY2tzcmVxWzhdIDw8IDgpIHwgc29ja3NyZXFbOV0pLAotICAgICAgICAgICAgc29ja3NyZXFbMV0pOworICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgICAgY2FzZSA5MjoKICAgICAgIGZhaWxmKGRhdGEsCkBAIC0zMTAsOCArMzEwLDggQEAKICAgICAgICAgICAgICJpZGVudGQgb24gdGhlIGNsaWVudC4iLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIGNhc2UgOTM6CiAgICAgICBmYWlsZihkYXRhLApAQCAtMzIwLDggKzMyMCw4IEBACiAgICAgICAgICAgICAicmVwb3J0IGRpZmZlcmVudCB1c2VyLWlkcy4iLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIGRlZmF1bHQ6CiAgICAgICBmYWlsZihkYXRhLApAQCAtMzI5LDggKzMyOSw4IEBACiAgICAgICAgICAgICAiLCBVbmtub3duLiIsCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKHNvY2tzcmVxWzhdIDw8IDgpIHwgc29ja3NyZXFbOV0pLAotICAgICAgICAgICAgc29ja3NyZXFbMV0pOworICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgICAgfQogICB9CkBAIC02MDMsNyArNjAzLDcgQEAKICAgICAgIGlmKGhwLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgewogICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSAxOyAvKiBBVFlQOiBJUHY0ID0gMSAqLwogCi0gICAgICAgIHNhZGRyX2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiopaHAtPmFpX2FkZHI7CisgICAgICAgIHNhZGRyX2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiopKHZvaWQqKWhwLT5haV9hZGRyOwogICAgICAgICBmb3IoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSAoKHVuc2lnbmVkIGNoYXIqKSZzYWRkcl9pbi0+c2luX2FkZHIuc19hZGRyKVtpXTsKICAgICAgICAgICBpbmZvZihkYXRhLCAiJWRcbiIsIHNvY2tzcmVxW2xlbi0xXSk7CkBAIC02MTMsNyArNjEzLDcgQEAKICAgICAgIGVsc2UgaWYoaHAtPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgewogICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSA0OyAvKiBBVFlQOiBJUHY2ID0gNCAqLwogCi0gICAgICAgIHNhZGRyX2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42KilocC0+YWlfYWRkcjsKKyAgICAgICAgc2FkZHJfaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKSh2b2lkKilocC0+YWlfYWRkcjsKICAgICAgICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAgICAgIHNvY2tzcmVxW2xlbisrXSA9ICgodW5zaWduZWQgY2hhciopJnNhZGRyX2luNi0+c2luNl9hZGRyLnM2X2FkZHIpW2ldOwogICAgICAgICB9CkBAIC02NzQsMTUgKzY3NCwxNSBAQAogICAgICAgICAgICAgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICVkLiVkLiVkLiVkOiVkLiAoJWQpIiwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzZdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs3XSwKLSAgICAgICAgICAgICgoc29ja3NyZXFbOF0gPDwgOCkgfCBzb2Nrc3JlcVs5XSksCi0gICAgICAgICAgICBzb2Nrc3JlcVsxXSk7CisgICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzhdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOV0pLAorICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOwogICAgIH0KICAgICBlbHNlIGlmKHNvY2tzcmVxWzNdID09IDMpIHsKICAgICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgICAiQ2FuJ3QgY29tcGxldGUgU09DS1M1IGNvbm5lY3Rpb24gdG8gJXM6JWQuICglZCkiLAogICAgICAgICAgICAgaG9zdG5hbWUsCi0gICAgICAgICAgICAoKHNvY2tzcmVxWzhdIDw8IDgpIHwgc29ja3NyZXFbOV0pLAotICAgICAgICAgICAgc29ja3NyZXFbMV0pOworICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKICAgICB9CiAgICAgZWxzZSBpZihzb2Nrc3JlcVszXSA9PSA0KSB7CiAgICAgICBmYWlsZihkYXRhLApAQCAtNjk2LDggKzY5Niw4IEBACiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE1XSwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTddLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMThdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxOV0sCi0gICAgICAgICAgICAoKHNvY2tzcmVxWzhdIDw8IDgpIHwgc29ja3NyZXFbOV0pLAotICAgICAgICAgICAgc29ja3NyZXFbMV0pOworICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKICAgICB9CiAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKICAgfQpkaWZmIC0tZ2l0IGEvbGliL3NvY2tzLmggYi9saWIvc29ja3MuaAppbmRleCAyOWUzYmYwLi5hNDRhZGE2IDEwMDY0NAotLS0gYS9saWIvc29ja3MuaAorKysgYi9saWIvc29ja3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zb2Nrc19nc3NhcGkuYyBiL2xpYi9zb2Nrc19nc3NhcGkuYwppbmRleCA4ZTU3NWMyLi4xMjE0MDQ4IDEwMDY0NAotLS0gYS9saWIvc29ja3NfZ3NzYXBpLmMKKysrIGIvbGliL3NvY2tzX2dzc2FwaS5jCkBAIC02LDExICs2LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIE1hcmt1cyBNb2VsbGVyLCA8bWFya3VzX21vZWxsZXJAY29tcHVzZXJ2ZS5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw5ICszMiwxMCBAQAogI2luY2x1ZGUgInRpbWV2YWwuaCIKICNpbmNsdWRlICJzb2Nrcy5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCisKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiBzdGF0aWMgZ3NzX2N0eF9pZF90IGdzc19jb250ZXh0ID0gR1NTX0NfTk9fQ09OVEVYVDsKQEAgLTEyMCw3ICsxMjEsOCBAQAogICB1bnNpZ25lZCBzaG9ydCAgIHVzX2xlbmd0aDsKICAgY2hhciAgICAgICAgICAgICAqdXNlcj1OVUxMOwogICB1bnNpZ25lZCBjaGFyIHNvY2tzcmVxWzRdOyAvKiByb29tIGZvciBHU1MtQVBJIGV4Y2hhbmdlIGhlYWRlciBvbmx5ICovCi0gIGNoYXIgKnNlcnZpY2VwdHIgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TT0NLUzVfR1NTQVBJX1NFUlZJQ0VdOworICBjb25zdCBjaGFyICpzZXJ2aWNlcHRyID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfUFJPWFlfU0VSVklDRV9OQU1FXSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdIDogInJjbWQiOwogCiAgIC8qICAgR1NTLUFQSSByZXF1ZXN0IGxvb2tzIGxpa2UKICAgICogKy0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9saWIvc29ja3Nfc3NwaS5jIGIvbGliL3NvY2tzX3NzcGkuYwppbmRleCBhNzcwOGIyLi5lYzU2NGI0IDEwMDY0NAotLS0gYS9saWIvc29ja3Nfc3NwaS5jCisrKyBiL2xpYi9zb2Nrc19zc3BpLmMKQEAgLTUsMTIgKzUsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgTWFya3VzIE1vZWxsZXIsIDxtYXJrdXNfbW9lbGxlckBjb21wdXNlcnZlLmNvbT4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVkZSAiY3VybF9zc3BpLmgiCiAjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qCkBAIC03MCw3ICs3MCw3IEBACiAgIC8qIE5lZWRzIEdTUy1BUEkgYXV0aGVudGljYXRpb24gKi8KICAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKICAgdW5zaWduZWQgbG9uZyBzc3BpX3JldF9mbGFncyA9IDA7Ci0gIGludCBnc3NfZW5jOworICB1bnNpZ25lZCBjaGFyIGdzc19lbmM7CiAgIFNlY0J1ZmZlciBzc3BpX3NlbmRfdG9rZW4sIHNzcGlfcmVjdl90b2tlbiwgc3NwaV93X3Rva2VuWzNdOwogICBTZWNCdWZmZXJEZXNjIGlucHV0X2Rlc2MsIG91dHB1dF9kZXNjLCB3cmFwX2Rlc2M7CiAgIFNlY1BrZ0NvbnRleHRfU2l6ZXMgc3NwaV9zaXplczsKQEAgLTgzLDcgKzgzLDggQEAKICAgdW5zaWduZWQgc2hvcnQgdXNfbGVuZ3RoOwogICB1bnNpZ25lZCBsb25nIHFvcDsKICAgdW5zaWduZWQgY2hhciBzb2Nrc3JlcVs0XTsgLyogcm9vbSBmb3IgR1NTLUFQSSBleGNoYW5nZSBoZWFkZXIgb25seSAqLwotICBjaGFyICpzZXJ2aWNlID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU09DS1M1X0dTU0FQSV9TRVJWSUNFXTsKKyAgY29uc3QgY2hhciAqc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfUFJPWFlfU0VSVklDRV9OQU1FXSAgOiAicmNtZCI7CiAKICAgLyogICBHU1MtQVBJIHJlcXVlc3QgbG9va3MgbGlrZQogICAgKiArLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKZGlmZiAtLWdpdCBhL2xpYi9zcGVlZGNoZWNrLmMgYi9saWIvc3BlZWRjaGVjay5jCmluZGV4IGFjNzQ0N2MuLjQ3MDZkMmQgMTAwNjQ0Ci0tLSBhL2xpYi9zcGVlZGNoZWNrLmMKKysrIGIvbGliL3NwZWVkY2hlY2suYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3BlZWRjaGVjay5oIGIvbGliL3NwZWVkY2hlY2suaAppbmRleCA3ODZjZDEyLi5lMTkyMWQ2IDEwMDY0NAotLS0gYS9saWIvc3BlZWRjaGVjay5oCisrKyBiL2xpYi9zcGVlZGNoZWNrLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3BsYXkuYyBiL2xpYi9zcGxheS5jCmluZGV4IGI4N2I2Y2YuLjdhYTJlNGIgMTAwNjQ0Ci0tLSBhL2xpYi9zcGxheS5jCisrKyBiL2xpYi9zcGxheS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zcGxheS5oIGIvbGliL3NwbGF5LmgKaW5kZXggNWY5ZWYyNC4uNDI3YmZjOCAxMDA2NDQKLS0tIGEvbGliL3NwbGF5LmgKKysrIGIvbGliL3NwbGF5LmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTcgLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01NSw3ICs1NSw3IEBACiAjZGVmaW5lIEN1cmxfc3BsYXljb21wYXJla2V5cyhpLGopICggKChpLnR2X3NlYykgIDwgKGoudHZfc2VjKSkgID8gLTEgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3NlYykgID4gKGoudHZfc2VjKSkgID8gIDEgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3VzZWMpIDwgKGoudHZfdXNlYykpID8gLTEgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3VzZWMpID4gKGoudHZfdXNlYykpID8gIDEgOiAwICkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKGkudHZfdXNlYykgPiAoai50dl91c2VjKSkgPyAgMSA6IDApKSkpCiAKICNpZmRlZiBERUJVR0JVSUxECiB2b2lkIEN1cmxfc3BsYXlwcmludChzdHJ1Y3QgQ3VybF90cmVlICogdCwgaW50IGQsIGNoYXIgb3V0cHV0KTsKZGlmZiAtLWdpdCBhL2xpYi9zc2guYyBiL2xpYi9zc2guYwppbmRleCBmMjA2NDUzLi5kNWExYTJhIDEwMDY0NAotLS0gYS9saWIvc3NoLmMKKysrIGIvbGliL3NzaC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsOSArODMsMTAgQEAKICNpbmNsdWRlICJtdWx0aWlmLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKICNpZmRlZiBXSU4zMgpAQCAtMTAxLDYgKzEwMiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhlaXIgZGVmaW5pdGlvbiBoaWRkZW4gd2VsbCAqLwogI2VuZGlmCiAKKyNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMjA2CisvKiBsaWJzc2gyX3NmdHBfc3RhdHZmcyBhbmQgZnJpZW5kcyB3ZXJlIGFkZGVkIGluIDEuMi42ICovCisjZGVmaW5lIEhBU19TVEFUVkZTX1NVUFBPUlQgMQorI2VuZGlmCisKICNkZWZpbmUgc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3IocykgY3VybHhfdWx0b3NpKGxpYnNzaDJfc2Z0cF9sYXN0X2Vycm9yKHMpKQogCiAjZGVmaW5lIHNmdHBfbGlic3NoMl9yZWFscGF0aChzLHAsdCxtKSBcCkBAIC0zNjIsNiArMzY4LDkgQEAKICAgICAiU1NIX1NGVFBfUVVPVEVfUkVOQU1FIiwKICAgICAiU1NIX1NGVFBfUVVPVEVfUk1ESVIiLAogICAgICJTU0hfU0ZUUF9RVU9URV9VTkxJTksiLAorICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUVkZTIiwKKyAgICAiU1NIX1NGVFBfR0VUSU5GTyIsCisgICAgIlNTSF9TRlRQX0ZJTEVUSU1FIiwKICAgICAiU1NIX1NGVFBfVFJBTlNfSU5JVCIsCiAgICAgIlNTSF9TRlRQX1VQTE9BRF9JTklUIiwKICAgICAiU1NIX1NGVFBfQ1JFQVRFX0RJUlNfSU5JVCIsCkBAIC00MTQsNyArNDIzLDcgQEAKICAgaWYoIXdvcmtpbmdfcGF0aCkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAotICAvKiBDaGVjayBmb3IgL34vICwgaW5kaWNhdGluZyByZWxhdGl2ZSB0byB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5ICovCisgIC8qIENoZWNrIGZvciAvfi8sIGluZGljYXRpbmcgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSAqLwogICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19TQ1ApIHsKICAgICByZWFsX3BhdGggPSBtYWxsb2Mod29ya2luZ19wYXRoX2xlbisxKTsKICAgICBpZihyZWFsX3BhdGggPT0gTlVMTCkgewpAQCAtODQ4LDcgKzg1Nyw5IEBACiAgICAgICAgICAqIGxpYnNzaDIgZXh0cmFjdCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBwcml2YXRlIGtleSBmaWxlLgogICAgICAgICAgKiBUaGlzIGlzIGRvbmUgYnkgc2ltcGx5IHBhc3Npbmcgc3NoYy0+cnNhX3B1YiA9IE5VTEwuCiAgICAgICAgICAqLwotICAgICAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFVCTElDX0tFWV0pIHsKKyAgICAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BVQkxJQ19LRVldCisgICAgICAgICAgICAvKiB0cmVhdCBlbXB0eSBzdHJpbmcgdGhlIHNhbWUgd2F5IGFzIE5VTEwgKi8KKyAgICAgICAgICAgICYmIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXVswXSkgewogICAgICAgICAgIHNzaGMtPnJzYV9wdWIgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BVQkxJQ19LRVldKTsKICAgICAgICAgICBpZighc3NoYy0+cnNhX3B1YikKICAgICAgICAgICAgIG91dF9vZl9tZW1vcnkgPSBUUlVFOwpAQCAtODY5LDcgKzg4MCw4IEBACiAKICAgICAgICAgZnJlZShob21lKTsKIAotICAgICAgICBpbmZvZihkYXRhLCAiVXNpbmcgU1NIIHB1YmxpYyBrZXkgZmlsZSAnJXMnXG4iLCBzc2hjLT5yc2FfcHViKTsKKyAgICAgICAgaWYoc3NoYy0+cnNhX3B1YikKKyAgICAgICAgICBpbmZvZihkYXRhLCAiVXNpbmcgU1NIIHB1YmxpYyBrZXkgZmlsZSAnJXMnXG4iLCBzc2hjLT5yc2FfcHViKTsKICAgICAgICAgaW5mb2YoZGF0YSwgIlVzaW5nIFNTSCBwcml2YXRlIGtleSBmaWxlICclcydcbiIsIHNzaGMtPnJzYSk7CiAKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfUEtFWSk7CkBAIC05MzUsNiArOTQ3LDcgQEAKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9IT1NUX0lOSVQpOworICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLwogICAgICAgfQogICAgICAgYnJlYWs7CiAKQEAgLTEwMTksMTEgKzEwMzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnNzaGFnZW50X2lkZW50aXR5KTsKIAogICAgICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgICBpZihyYyAhPSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgIGlmKHJjICE9IExJQlNTSDJfRVJST1JfRUFHQUlOKQogICAgICAgICAgICAgLyogdHJpZWQgYW5kIGZhaWxlZD8gZ28gdG8gbmV4dCBpZGVudGl0eSAqLwogICAgICAgICAgICAgc3NoYy0+c3NoYWdlbnRfcHJldl9pZGVudGl0eSA9IHNzaGMtPnNzaGFnZW50X2lkZW50aXR5OwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQogCkBAIC0xMDM3LDggKzEwNTAsMTAgQEAKICAgICAgICAgaW5mb2YoZGF0YSwgIkFnZW50IGJhc2VkIGF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3NmdWxcbiIpOwogICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKICAgICAgIH0KLSAgICAgIGVsc2UKKyAgICAgIGVsc2UgewogICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9LRVlfSU5JVCk7CisgICAgICAgIHJjID0gMDsgLyogY2xlYXIgcmMgYW5kIGNvbnRpbnVlICovCisgICAgICB9CiAjZW5kaWYKICAgICAgIGJyZWFrOwogCkBAIC0xMTc3LDcgKzExOTIsNyBAQAogICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7CiAgICAgICB9CiAgICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVFJBTlNfSU5JVCk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0dFVElORk8pOwogICAgICAgfQogICAgICAgYnJlYWs7CiAKQEAgLTEzNTUsNiArMTM3MCwxMiBAQAogICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1VOTElOSyk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNpZmRlZiBIQVNfU1RBVFZGU19TVVBQT1JUCisgICAgICAgIGVsc2UgaWYoY3VybF9zdHJuZXF1YWwoY21kLCAic3RhdHZmcyAiLCA4KSkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1NUQVRWRlMpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICBmYWlsZihkYXRhLCAiVW5rbm93biBTRlRQIGNvbW1hbmQiKTsKICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CkBAIC0xMzY2LDcgKzEzODcsNyBAQAogICAgICAgfQogICAgIH0KICAgICBpZighc3NoYy0+cXVvdGVfaXRlbSkgewotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVFJBTlNfSU5JVCk7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKICAgICB9CiAgICAgYnJlYWs7CiAKQEAgLTEzODUsNyArMTQwNiw3IEBACiAgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0dFVElORk8pOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTE2MDUsNiArMTYyNiw4OCBAQAogICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CiAgICAgICBicmVhazsKIAorI2lmZGVmIEhBU19TVEFUVkZTX1NVUFBPUlQKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1NUQVRWRlM6CisgICAgeworICAgICAgTElCU1NIMl9TRlRQX1NUQVRWRlMgc3RhdHZmczsKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXR2ZnMoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHZmcyk7CisKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBmYWlsZihkYXRhLCAic3RhdHZmcyBjb21tYW5kIGZhaWxlZDogJXMiLCBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSAwKSB7CisgICAgICAgIGNoYXIgKnRtcCA9IGFwcmludGYoInN0YXR2ZnM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYnNpemU6ICVsbHVcbiIgImZfZnJzaXplOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYmxvY2tzOiAlbGx1XG4iICJmX2JmcmVlOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYmF2YWlsOiAlbGx1XG4iICJmX2ZpbGVzOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfZmZyZWU6ICVsbHVcbiIgImZfZmF2YWlsOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfZnNpZDogJWxsdVxuIiAiZl9mbGFnOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfbmFtZW1heDogJWxsdVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfYnNpemUsIHN0YXR2ZnMuZl9mcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2Jsb2Nrcywgc3RhdHZmcy5mX2JmcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9iYXZhaWwsIHN0YXR2ZnMuZl9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfZmZyZWUsIHN0YXR2ZnMuZl9mYXZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2ZzaWQsIHN0YXR2ZnMuZl9mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9uYW1lbWF4KTsKKyAgICAgICAgaWYoIXRtcCkgeworICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0hFQURFUiwgdG1wLCBzdHJsZW4odG1wKSk7CisgICAgICAgIGZyZWUodG1wKTsKKyAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgU1NIX1NGVFBfR0VUSU5GTzoKKyAgICB7CisgICAgICBpZihkYXRhLT5zZXQuZ2V0X2ZpbGV0aW1lKSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0ZJTEVUSU1FKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9UUkFOU19JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU1NIX1NGVFBfRklMRVRJTUU6CisgICAgeworICAgICAgTElCU1NIMl9TRlRQX0FUVFJJQlVURVMgYXR0cnM7CisKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXRfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1RBVCwgJmF0dHJzKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSAwKSB7CisgICAgICAgIGRhdGEtPmluZm8uZmlsZXRpbWUgPSAobG9uZylhdHRycy5tdGltZTsKKyAgICAgIH0KKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVFJBTlNfSU5JVCk7CisgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFNTSF9TRlRQX1RSQU5TX0lOSVQ6CiAgICAgICBpZihkYXRhLT5zZXQudXBsb2FkKQogICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9VUExPQURfSU5JVCk7CkBAIC0xNzM3LDggKzE4NDAsOCBAQAogICAgICAgICAgICAgICAgIEJVRlNJWkUgOiBjdXJseF9zb3RvdXooZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQpOwogCiAgICAgICAgICAgICAgIHNpemVfdCBhY3R1YWxseXJlYWQgPQotICAgICAgICAgICAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwgcmVhZHRoaXNhbW91bnRub3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LmluKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR0aGlzYW1vdW50bm93LCBkYXRhLT5zdGF0ZS5pbik7CiAKICAgICAgICAgICAgICAgcGFzc2VkICs9IGFjdHVhbGx5cmVhZDsKICAgICAgICAgICAgICAgaWYoKGFjdHVhbGx5cmVhZCA9PSAwKSB8fCAoYWN0dWFsbHlyZWFkID4gcmVhZHRoaXNhbW91bnRub3cpKSB7CkBAIC0yMTQxLDcgKzIyNDQsNyBAQAogICAgICAgICAgICAgLyogZnJvbSBpcyByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSAqLwogICAgICAgICAgICAgZnJvbSArPSBzaXplOwogICAgICAgICAgIH0KLSAgICAgICAgICBpZihmcm9tID49IHNpemUpIHsKKyAgICAgICAgICBpZihmcm9tID4gc2l6ZSkgewogICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk9mZnNldCAoJSIKICAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikgd2FzIGJleW9uZCBmaWxlIHNpemUgKCUiCiAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwgZnJvbSwgYXR0cnMuZmlsZXNpemUpOwpAQCAtMjM2NSwxOSArMjQ2OCwzMCBAQAogCiAgICAgY2FzZSBTU0hfU0NQX0RPV05MT0FEX0lOSVQ6CiAgICAgeworICAgICAgY3VybF9vZmZfdCBieXRlY291bnQ7CisKICAgICAgIC8qCiAgICAgICAgKiBXZSBtdXN0IGNoZWNrIHRoZSByZW1vdGUgZmlsZTsgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgbm8gdmFsdWVzIHdpbGwKICAgICAgICAqIGJlIHNldCBpbiBzYgogICAgICAgICovCi0gICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgIGN1cmxfb2ZmX3QgYnl0ZWNvdW50OwogCi0gICAgICAvKiBjbGVhciB0aGUgc3RydWN0IHNjcCByZWN2IHdpbGwgZmlsbCBpbiAqLwotICAgICAgbWVtc2V0KCZzYiwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7CisgICAgICAgLyoKKyAgICAgICAgKiBJZiBzdXBwb3J0IGZvciA+MkdCIGZpbGVzIGV4aXN0cywgdXNlIGl0LgorICAgICAgICAqLwogCiAgICAgICAvKiBnZXQgYSBmcmVzaCBuZXcgY2hhbm5lbCBmcm9tIHRoZSBzc2ggbGF5ZXIgKi8KKyNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNIDwgMHgwMTA3MDAKKyAgICAgIHN0cnVjdCBzdGF0IHNiOworICAgICAgbWVtc2V0KCZzYiwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7CiAgICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IGxpYnNzaDJfc2NwX3JlY3Yoc3NoYy0+c3NoX3Nlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cF9zY3AtPnBhdGgsICZzYik7CisjZWxzZQorICAgICAgbGlic3NoMl9zdHJ1Y3Rfc3RhdCBzYjsKKyAgICAgIG1lbXNldCgmc2IsIDAsIHNpemVvZihsaWJzc2gyX3N0cnVjdF9zdGF0KSk7CisgICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IGxpYnNzaDJfc2NwX3JlY3YyKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnRwX3NjcC0+cGF0aCwgJnNiKTsKKyNlbmRpZgorCiAgICAgICBpZighc3NoYy0+c3NoX2NoYW5uZWwpIHsKICAgICAgICAgaWYobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pID09CiAgICAgICAgICAgIExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CkBAIC0yOTYzLDggKzMwNzcsNyBAQAogCiAgICAgICAgVE9ETzogd2hlbiB0aGUgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQsIHRoaXMgX3JlYWxseV8gc2hvdWxkIGJlIHVzaW5nCiAgICAgICAgdGhlIHNzaF9tdWx0aV9zdGF0ZW1hY2ggZnVuY3Rpb24gYnV0IHdlIGhhdmUgbm8gZ2VuZXJhbCBzdXBwb3J0IGZvcgotICAgICAgIG5vbi1ibG9ja2luZyBET05FIG9wZXJhdGlvbnMsIG5vdCBpbiB0aGUgbXVsdGkgc3RhdGUgbWFjaGluZSBhbmQgd2l0aAotICAgICAgIEN1cmxfZG9uZSgpIGludm9rZXMgb24gc2V2ZXJhbCBwbGFjZXMgaW4gdGhlIGNvZGUhCisgICAgICAgbm9uLWJsb2NraW5nIERPTkUgb3BlcmF0aW9ucyEKICAgICAqLwogICAgIHJlc3VsdCA9IHNzaF9ibG9ja19zdGF0ZW1hY2goY29ubiwgRkFMU0UpOwogICB9CmRpZmYgLS1naXQgYS9saWIvc3NoLmggYi9saWIvc3NoLmgKaW5kZXggYjNjYzU0Yy4uNWI0Yjc4ZiAxMDA2NDQKLS0tIGEvbGliL3NzaC5oCisrKyBiL2xpYi9zc2guaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY2LDYgKzY2LDkgQEAKICAgU1NIX1NGVFBfUVVPVEVfUkVOQU1FLAogICBTU0hfU0ZUUF9RVU9URV9STURJUiwKICAgU1NIX1NGVFBfUVVPVEVfVU5MSU5LLAorICBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTLAorICBTU0hfU0ZUUF9HRVRJTkZPLAorICBTU0hfU0ZUUF9GSUxFVElNRSwKICAgU1NIX1NGVFBfVFJBTlNfSU5JVCwKICAgU1NIX1NGVFBfVVBMT0FEX0lOSVQsCiAgIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQsCmRpZmYgLS1naXQgYS9saWIvc3RyZHVwLmMgYi9saWIvc3RyZHVwLmMKaW5kZXggNTY4NWI4MS4uMjNmNTU0ZSAxMDA2NDQKLS0tIGEvbGliL3N0cmR1cC5jCisrKyBiL2xpYi9zdHJkdXAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDcgKzE5LDExIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgInN0cmR1cC5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAKZGlmZiAtLWdpdCBhL2xpYi9zdHJkdXAuaCBiL2xpYi9zdHJkdXAuaAppbmRleCAyM2E3MWY4Li40YzQ4Y2E0IDEwMDY0NAotLS0gYS9saWIvc3RyZHVwLmgKKysrIGIvbGliL3N0cmR1cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N0cmVxdWFsLmMgYi9saWIvc3RyZXF1YWwuYwppbmRleCA1ZjJmNTA4Li4wMWMzNzg0IDEwMDY0NAotLS0gYS9saWIvc3RyZXF1YWwuYworKysgYi9saWIvc3RyZXF1YWwuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3RyZXF1YWwuaCBiL2xpYi9zdHJlcXVhbC5oCmluZGV4IDExN2EzMDUuLmZmNTZkZjUgMTAwNjQ0Ci0tLSBhL2xpYi9zdHJlcXVhbC5oCisrKyBiL2xpYi9zdHJlcXVhbC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N0cmVycm9yLmMgYi9saWIvc3RyZXJyb3IuYwppbmRleCBjYmM1YzQ3Li4wZTI2OGQ1IDEwMDY0NAotLS0gYS9saWIvc3RyZXJyb3IuYworKysgYi9saWIvc3RyZXJyb3IuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM5LDEwICszOSwxNCBAQAogI2luY2x1ZGUgPGlkbmEuaD4KICNlbmRpZgogCisjaWZkZWYgVVNFX1dJTkRPV1NfU1NQSQorI2luY2x1ZGUgImN1cmxfc3NwaS5oIgorI2VuZGlmCisKICNpbmNsdWRlICJzdHJlcnJvci5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIGNvbnN0IGNoYXIgKgpAQCAtMzAxLDYgKzMwNSw5IEBACiAgIGNhc2UgQ1VSTEVfU1NMX0lOVkFMSURDRVJUU1RBVFVTOgogICAgIHJldHVybiAiU1NMIHNlcnZlciBjZXJ0aWZpY2F0ZSBzdGF0dXMgdmVyaWZpY2F0aW9uIEZBSUxFRCI7CiAKKyAgY2FzZSBDVVJMRV9IVFRQMl9TVFJFQU06CisgICAgcmV0dXJuICJTdHJlYW0gZXJyb3IgaW4gdGhlIEhUVFAvMiBmcmFtaW5nIGxheWVyIjsKKwogICAgIC8qIGVycm9yIGNvZGVzIG5vdCB1c2VkIGJ5IGN1cnJlbnQgbGliY3VybCAqLwogICBjYXNlIENVUkxFX09CU09MRVRFMjA6CiAgIGNhc2UgQ1VSTEVfT0JTT0xFVEUyNDoKQEAgLTgyNCw2ICs4MzEsOSBAQAogICAgIGNhc2UgU0VDX0VfT0s6CiAgICAgICB0eHQgPSAiTm8gZXJyb3IiOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBDUllQVF9FX1JFVk9LRUQ6CisgICAgICB0eHQgPSAiQ1JZUFRfRV9SRVZPS0VEIjsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgU0VDX0VfQUxHT1JJVEhNX01JU01BVENIOgogICAgICAgdHh0ID0gIlNFQ19FX0FMR09SSVRITV9NSVNNQVRDSCI7CiAgICAgICBicmVhazsKQEAgLTEwNjksMTQgKzEwNzksMTMgQEAKICAgICBzdHJuY3B5KG91dGJ1ZiwgdHh0LCBvdXRtYXgpOwogICBlbHNlIGlmKGVyciA9PSBTRUNfRV9JTExFR0FMX01FU1NBR0UpCiAgICAgc25wcmludGYob3V0YnVmLCBvdXRtYXgsCi0gICAgICAgICAgICAgIlNFQ19FX0lMTEVHQUxfTUVTU0FHRSAoMHglMDRYJTA0WCkgLSBUaGlzIGVycm9yIHVzdWFsbHkgb2NjdXJzICIKKyAgICAgICAgICAgICAiU0VDX0VfSUxMRUdBTF9NRVNTQUdFICgweCUwOFgpIC0gVGhpcyBlcnJvciB1c3VhbGx5IG9jY3VycyAiCiAgICAgICAgICAgICAgIndoZW4gYSBmYXRhbCBTU0wvVExTIGFsZXJ0IGlzIHJlY2VpdmVkIChlLmcuIGhhbmRzaGFrZSBmYWlsZWQpLiAiCiAgICAgICAgICAgICAgIk1vcmUgZGV0YWlsIG1heSBiZSBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgU3lzdGVtIGV2ZW50IGxvZy4iLAotICAgICAgICAgICAgIChlcnIgPj4gMTYpICYgMHhmZmZmLCBlcnIgJiAweGZmZmYpOworICAgICAgICAgICAgIGVycik7CiAgIGVsc2UgewogICAgIHN0ciA9IHR4dGJ1ZjsKLSAgICBzbnByaW50Zih0eHRidWYsIHNpemVvZih0eHRidWYpLCAiJXMgKDB4JTA0WCUwNFgpIiwKLSAgICAgICAgICAgICB0eHQsIChlcnIgPj4gMTYpICYgMHhmZmZmLCBlcnIgJiAweGZmZmYpOworICAgIHNucHJpbnRmKHR4dGJ1Ziwgc2l6ZW9mKHR4dGJ1ZiksICIlcyAoMHglMDhYKSIsIHR4dCwgZXJyKTsKICAgICB0eHRidWZbc2l6ZW9mKHR4dGJ1ZiktMV0gPSAnXDAnOwogCiAjaWZkZWYgX1dJTjMyX1dDRQpkaWZmIC0tZ2l0IGEvbGliL3N0cmVycm9yLmggYi9saWIvc3RyZXJyb3IuaAppbmRleCBmMWIyMjIxLi5hZThjOTZiIDEwMDY0NAotLS0gYS9saWIvc3RyZXJyb3IuaAorKysgYi9saWIvc3RyZXJyb3IuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJ0b2suYyBiL2xpYi9zdHJ0b2suYwppbmRleCAwZDMxMzUxLi40NjBlYjg3IDEwMDY0NAotLS0gYS9saWIvc3RydG9rLmMKKysrIGIvbGliL3N0cnRvay5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJ0b2suaCBiL2xpYi9zdHJ0b2suaAppbmRleCAxMTQ3ZDcwLi45MGI4MzFlIDEwMDY0NAotLS0gYS9saWIvc3RydG9rLmgKKysrIGIvbGliL3N0cnRvay5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N0cnRvb2ZmdC5jIGIvbGliL3N0cnRvb2ZmdC5jCmluZGV4IDAzYTk3ZTguLjZkNWQyZDUgMTAwNjQ0Ci0tLSBhL2xpYi9zdHJ0b29mZnQuYworKysgYi9saWIvc3RydG9vZmZ0LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N0cnRvb2ZmdC5oIGIvbGliL3N0cnRvb2ZmdC5oCmluZGV4IDc1YzczZDQuLmY0MDM5ZjMgMTAwNjQ0Ci0tLSBhL2xpYi9zdHJ0b29mZnQuaAorKysgYi9saWIvc3RydG9vZmZ0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3lzdGVtX3dpbjMyLmMgYi9saWIvc3lzdGVtX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNkMzBiNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXN0ZW1fd2luMzIuYwpAQCAtMCwwICsxLDEzMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChXSU4zMikKKworI2lmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgKCFkZWZpbmVkKENVUkxfRElTQUJMRV9URUxORVQpICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKFVTRV9XSU5TT0NLKSkKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorI2luY2x1ZGUgInN5c3RlbV93aW4zMi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisjaWYgIWRlZmluZWQoTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpCisjZGVmaW5lIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIICAweDAwMDAwMDA4CisjZW5kaWYKKworI2lmICFkZWZpbmVkKExPQURfTElCUkFSWV9TRUFSQ0hfU1lTVEVNMzIpCisjZGVmaW5lIExPQURfTElCUkFSWV9TRUFSQ0hfU1lTVEVNMzIgICAweDAwMDAwODAwCisjZW5kaWYKKworLyogV2UgdXNlIG91ciBvd24gdHlwZWRlZiBoZXJlIHNpbmNlIHNvbWUgaGVhZGVycyBtaWdodCBsYWNrIHRoZXNlICovCit0eXBlZGVmIEhNT0RVTEUgKEFQSUVOVFJZICpMT0FETElCUkFSWUVYX0ZOKShMUENUU1RSLCBIQU5ETEUsIERXT1JEKTsKKworLyogU2VlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIHdpbmJhc2UuaCAqLworI2lmZGVmIFVOSUNPREUKKyMgIGlmZGVmIF9XSU4zMl9XQ0UKKyMgICAgZGVmaW5lIExPQURMSUJBUllFWCAgTCJMb2FkTGlicmFyeUV4VyIKKyMgIGVsc2UKKyMgICAgZGVmaW5lIExPQURMSUJBUllFWCAgIkxvYWRMaWJyYXJ5RXhXIgorIyAgZW5kaWYKKyNlbHNlCisjICBkZWZpbmUgTE9BRExJQkFSWUVYICAgICJMb2FkTGlicmFyeUV4QSIKKyNlbmRpZgorCisvKgorICogQ3VybF9sb2FkX2xpYnJhcnkoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBkeW5hbWljYWxseSBsb2FkIERMTHMgdXNpbmcgdGhlIG1vc3Qgc2VjdXJlIG1ldGhvZCBhdmFpbGFibGUKKyAqIGZvciB0aGUgdmVyc2lvbiBvZiBXaW5kb3dzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgb24uCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBmaWxlbmFtZSAgW2luXSAtIFRoZSBmaWxlbmFtZSBvciBmdWxsIHBhdGggb2YgdGhlIERMTCB0byBsb2FkLiBJZiBvbmx5IHRoZQorICogICAgICAgICAgICAgICAgICBmaWxlbmFtZSBpcyBwYXNzZWQgdGhlbiB0aGUgRExMIHdpbGwgYmUgbG9hZGVkIGZyb20gdGhlCisgKiAgICAgICAgICAgICAgICAgIFdpbmRvd3Mgc3lzdGVtIGRpcmVjdG9yeS4KKyAqCisgKiBSZXR1cm5zIHRoZSBoYW5kbGUgb2YgdGhlIG1vZHVsZSBvbiBzdWNjZXNzOyBvdGhlcndpc2UgTlVMTC4KKyAqLworSE1PRFVMRSBDdXJsX2xvYWRfbGlicmFyeShMUENUU1RSIGZpbGVuYW1lKQoreworICBITU9EVUxFIGhNb2R1bGUgPSBOVUxMOworICBMT0FETElCUkFSWUVYX0ZOIHBMb2FkTGlicmFyeUV4ID0gTlVMTDsKKworICAvKiBHZXQgYSBoYW5kbGUgdG8ga2VybmVsMzIgc28gd2UgY2FuIGFjY2VzcyBpdCdzIGZ1bmN0aW9ucyBhdCBydW50aW1lICovCisgIEhNT0RVTEUgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoImtlcm5lbDMyIikpOworICBpZighaEtlcm5lbDMyKQorICAgIHJldHVybiBOVUxMOworCisgIC8qIEF0dGVtcHQgdG8gZmluZCBMb2FkTGlicmFyeUV4KCkgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwCisgICAgIGFuZCBhYm92ZSAqLworICBwTG9hZExpYnJhcnlFeCA9IChMT0FETElCUkFSWUVYX0ZOKSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsIExPQURMSUJBUllFWCk7CisKKyAgLyogRGV0ZWN0IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHBhdGggaW4gdGhlIGZpbGVuYW1lIGFuZCBsb2FkIHRoZSBsaWJyYXJ5IGlmCisgICAgIHRoZXJlIGlzLiBOb3RlOiBCb3RoIGJhY2sgc2xhc2hlcyBhbmQgZm9yd2FyZCBzbGFzaGVzIGhhdmUgYmVlbiBzdXBwb3J0ZWQKKyAgICAgc2luY2UgdGhlIGVhcmxpZXIgZGF5cyBvZiBET1MgYXQgYW4gQVBJIGxldmVsIGFsdGhvdWdoIHRoZXkgYXJlIG5vdAorICAgICBzdXBwb3J0ZWQgYnkgY29tbWFuZCBwcm9tcHQgKi8KKyAgaWYoX3Rjc3BicmsoZmlsZW5hbWUsIFRFWFQoIlxcLyIpKSkKKyAgICBoTW9kdWxlID0gcExvYWRMaWJyYXJ5RXggPworICAgICAgcExvYWRMaWJyYXJ5RXgoZmlsZW5hbWUsIE5VTEwsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKSA6CisgICAgICBMb2FkTGlicmFyeShmaWxlbmFtZSk7CisgIC8qIERldGVjdCBpZiBLQjI1MzM2MjMgaXMgaW5zdGFsbGVkLCBhcyBMT0FEX0xJQkFSWV9TRUFSQ0hfU1lTVEVNMzIgaXMgb25seQorICAgICBzdXBwb3J0ZWQgb24gV2luZG93cyBWaXN0YSwgV2luZG93cyBTZXJ2ZXIgMjAwOCwgV2luZG93cyA3IGFuZCBXaW5kb3dzCisgICAgIFNlcnZlciAyMDA4IFIyIHdpdGggdGhpcyBwYXRjaCBvciBuYXRpdmVseSBvbiBXaW5kb3dzIDggYW5kIGFib3ZlICovCisgIGVsc2UgaWYocExvYWRMaWJyYXJ5RXggJiYgR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLCAiQWRkRGxsRGlyZWN0b3J5IikpIHsKKyAgICAvKiBMb2FkIHRoZSBETEwgZnJvbSB0aGUgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5ICovCisgICAgaE1vZHVsZSA9IHBMb2FkTGlicmFyeUV4KGZpbGVuYW1lLCBOVUxMLCBMT0FEX0xJQlJBUllfU0VBUkNIX1NZU1RFTTMyKTsKKyAgfQorICBlbHNlIHsKKyAgICAvKiBBdHRlbXB0IHRvIGdldCB0aGUgV2luZG93cyBzeXN0ZW0gcGF0aCAqLworICAgIFVJTlQgc3lzdGVtZGlybGVuID0gR2V0U3lzdGVtRGlyZWN0b3J5KE5VTEwsIDApOworICAgIGlmKHN5c3RlbWRpcmxlbikgeworICAgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBmdWxsIERMTCBwYXRoIChSb29tIGZvciB0aGUgbnVsbCB0ZXJtaW5hdG9yCisgICAgICAgICBpcyBpbmNsdWRlZCBpbiBzeXN0ZW1kaXJsZW4pICovCisgICAgICBzaXplX3QgZmlsZW5hbWVsZW4gPSBfdGNzbGVuKGZpbGVuYW1lKTsKKyAgICAgIFRDSEFSICpwYXRoID0gbWFsbG9jKHNpemVvZihUQ0hBUikgKiAoc3lzdGVtZGlybGVuICsgMSArIGZpbGVuYW1lbGVuKSk7CisgICAgICBpZihwYXRoICYmIEdldFN5c3RlbURpcmVjdG9yeShwYXRoLCBzeXN0ZW1kaXJsZW4pKSB7CisgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgZnVsbCBETEwgcGF0aCAqLworICAgICAgICBfdGNzY3B5KHBhdGggKyBfdGNzbGVuKHBhdGgpLCBURVhUKCJcXCIpKTsKKyAgICAgICAgX3Rjc2NweShwYXRoICsgX3Rjc2xlbihwYXRoKSwgZmlsZW5hbWUpOworCisgICAgICAgIC8qIExvYWQgdGhlIERMTCBmcm9tIHRoZSBXaW5kb3dzIHN5c3RlbSBkaXJlY3RvcnkgKi8KKyAgICAgICAgaE1vZHVsZSA9IHBMb2FkTGlicmFyeUV4ID8KKyAgICAgICAgICBwTG9hZExpYnJhcnlFeChwYXRoLCBOVUxMLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCkgOgorICAgICAgICAgIExvYWRMaWJyYXJ5KHBhdGgpOworCisgICAgICAgIGZyZWUocGF0aCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGhNb2R1bGU7Cit9CisKKyNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJIHx8ICghQ1VSTF9ESVNBQkxFX1RFTE5FVCAmJiBVU0VfV0lOU09DSykgKi8KKworI2VuZGlmIC8qIFdJTjMyICovCmRpZmYgLS1naXQgYS9saWIvc3lzdGVtX3dpbjMyLmggYi9saWIvc3lzdGVtX3dpbjMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjMTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXN0ZW1fd2luMzIuaApAQCAtMCwwICsxLDM5IEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1NZU1RFTV9XSU4zMl9ICisjZGVmaW5lIEhFQURFUl9DVVJMX1NZU1RFTV9XSU4zMl9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiBkZWZpbmVkKFdJTjMyKQorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSB8fCAoIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1RFTE5FVCkgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoVVNFX1dJTlNPQ0spKQorCisvKiBUaGlzIGlzIHVzZWQgdG8gZHluYW1pY2FsbHkgbG9hZCBETExzICovCitITU9EVUxFIEN1cmxfbG9hZF9saWJyYXJ5KExQQ1RTVFIgZmlsZW5hbWUpOworCisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSB8fCAoIUNVUkxfRElTQUJMRV9URUxORVQgJiYgVVNFX1dJTlNPQ0spICovCisKKyNlbmRpZiAvKiBXSU4zMiAqLworCisjZW5kaWYgLyogSEVBREVSX0NVUkxfU1lTVEVNX1dJTjMyX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi90ZWxuZXQuYyBiL2xpYi90ZWxuZXQuYwppbmRleCBhYWJmOTlkLi44NzBhMWI4IDEwMDY0NAotLS0gYS9saWIvdGVsbmV0LmMKKysrIGIvbGliL3RlbG5ldC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgInRlbG5ldC5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIKICNpbmNsdWRlICJwcm9ncmVzcy5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAic3lzdGVtX3dpbjMyLmgiCiAKICNkZWZpbmUgIFRFTE9QVFMKICNkZWZpbmUgIFRFTENNRFMKQEAgLTYyLDcgKzYyLDggQEAKICNpbmNsdWRlICJyYXdzdHIuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTkxLDcgKzkyLDcgQEAKIAogI2lmZGVmIFVTRV9XSU5TT0NLCiB0eXBlZGVmIEZBUlBST0MgV1NPQ0syX0ZVTkM7Ci1zdGF0aWMgQ1VSTGNvZGUgY2hlY2tfd3NvY2syICggc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgKTsKK3N0YXRpYyBDVVJMY29kZSBjaGVja193c29jazIgKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKICNlbmRpZgogCiBzdGF0aWMKQEAgLTE5OCw3ICsxOTksNyBAQAogCiAjaWZkZWYgVVNFX1dJTlNPQ0sKIHN0YXRpYyBDVVJMY29kZQotY2hlY2tfd3NvY2syICggc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgKQorY2hlY2tfd3NvY2syKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewogICBpbnQgZXJyOwogICBXT1JEIHdWZXJzaW9uUmVxdWVzdGVkOwpAQCAtMTMzNCw3ICsxMzM1LDcgQEAKIAogICAvKiBPSywgc28gd2UgaGF2ZSBXaW5Tb2NrIDIuMC4gIFdlIG5lZWQgdG8gZHluYW1pY2FsbHkgKi8KICAgLyogbG9hZCB3czJfMzIuZGxsIGFuZCBnZXQgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIHdlIG5lZWQuICovCi0gIHdzb2NrMiA9IExvYWRMaWJyYXJ5KFRFWFQoIldTMl8zMi5ETEwiKSk7CisgIHdzb2NrMiA9IEN1cmxfbG9hZF9saWJyYXJ5KFRFWFQoIldTMl8zMi5ETEwiKSk7CiAgIGlmKHdzb2NrMiA9PSBOVUxMKSB7CiAgICAgZmFpbGYoZGF0YSwgImZhaWxlZCB0byBsb2FkIFdTMl8zMi5ETEwgKCVkKSIsIEVSUk5PKTsKICAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CkBAIC0xNDIzLDggKzE0MjQsOCBAQAogICAgICAgZm9yKDs7KSB7CiAgICAgICAgIGlmKGRhdGEtPnNldC5pc19mcmVhZF9zZXQpIHsKICAgICAgICAgICAvKiByZWFkIGZyb20gdXNlci1zdXBwbGllZCBtZXRob2QgKi8KLSAgICAgICAgICByZXN1bHQgPSAoaW50KWRhdGEtPnNldC5mcmVhZF9mdW5jKGJ1ZiwgMSwgQlVGU0laRSAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuaW4pOworICAgICAgICAgIHJlc3VsdCA9IChpbnQpZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhidWYsIDEsIEJVRlNJWkUgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7CiAgICAgICAgICAgaWYocmVzdWx0ID09IENVUkxfUkVBREZVTkNfQUJPUlQpIHsKICAgICAgICAgICAgIGtlZXBvbiA9IEZBTFNFOwogICAgICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfUkVBRF9FUlJPUjsKQEAgLTE1NjMsMTMgKzE1NjQsMTMgQEAKICAgcGZkWzBdLmZkID0gc29ja2ZkOwogICBwZmRbMF0uZXZlbnRzID0gUE9MTElOOwogCi0gIGlmKGRhdGEtPnNldC5mcmVhZF9mdW5jICE9IChjdXJsX3JlYWRfY2FsbGJhY2spZnJlYWQpIHsKKyAgaWYoZGF0YS0+c2V0LmlzX2ZyZWFkX3NldCkgewogICAgIHBvbGxfY250ID0gMTsKICAgICBpbnRlcnZhbF9tcyA9IDEwMDsgLyogcG9sbCB1c2VyLXN1cHBsaWVkIHJlYWQgZnVuY3Rpb24gKi8KICAgfQogICBlbHNlIHsKICAgICAvKiByZWFsbHkgdXNpbmcgZnJlYWQsIHNvIGluZmlsZSBpcyBhIEZJTEUqICovCi0gICAgcGZkWzFdLmZkID0gZmlsZW5vKChGSUxFICopZGF0YS0+c2V0LmluKTsKKyAgICBwZmRbMV0uZmQgPSBmaWxlbm8oKEZJTEUgKilkYXRhLT5zdGF0ZS5pbik7CiAgICAgcGZkWzFdLmV2ZW50cyA9IFBPTExJTjsKICAgICBwb2xsX2NudCA9IDI7CiAgICAgaW50ZXJ2YWxfbXMgPSAxICogMTAwMDsKQEAgLTE2MjgsNyArMTYyOSw4IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgLyogcmVhZCBmcm9tIHVzZXItc3VwcGxpZWQgbWV0aG9kICovCi0gICAgICAgIG5yZWFkID0gKGludClkYXRhLT5zZXQuZnJlYWRfZnVuYyhidWYsIDEsIEJVRlNJWkUgLSAxLCBkYXRhLT5zZXQuaW4pOworICAgICAgICBucmVhZCA9IChpbnQpZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhidWYsIDEsIEJVRlNJWkUgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7CiAgICAgICAgIGlmKG5yZWFkID09IENVUkxfUkVBREZVTkNfQUJPUlQpIHsKICAgICAgICAgICBrZWVwb24gPSBGQUxTRTsKICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2xpYi90ZWxuZXQuaCBiL2xpYi90ZWxuZXQuaAppbmRleCBkZGI5ZTU0Li40MTlhMzk5IDEwMDY0NAotLS0gYS9saWIvdGVsbmV0LmgKKysrIGIvbGliL3RlbG5ldC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKaW5kZXggNGM1Nzk2Zi4uM2MzZWI1ZSAxMDA2NDQKLS0tIGEvbGliL3RmdHAuYworKysgYi9saWIvdGZ0cC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTcsMTAgKzU3LDEwIEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAic3BlZWRjaGVjay5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMzEyLDE0ICszMTIsMTQgQEAKIHsKICAgc2l6ZV90IGxvYzsKIAotICBsb2MgPSBDdXJsX3N0cm5sZW4oIGJ1ZiwgbGVuICk7CisgIGxvYyA9IEN1cmxfc3RybmxlbihidWYsIGxlbik7CiAgIGxvYysrOyAvKiBOVUxMIHRlcm0gKi8KIAogICBpZihsb2MgPj0gbGVuKQogICAgIHJldHVybiBOVUxMOwogICAqb3B0aW9uID0gYnVmOwogCi0gIGxvYyArPSBDdXJsX3N0cm5sZW4oIGJ1Zitsb2MsIGxlbi1sb2MgKTsKKyAgbG9jICs9IEN1cmxfc3RybmxlbihidWYrbG9jLCBsZW4tbG9jKTsKICAgbG9jKys7IC8qIE5VTEwgdGVybSAqLwogCiAgIGlmKGxvYyA+IGxlbikKQEAgLTM1Miw3ICszNTIsNyBAQAogICAgIGlmKGNoZWNrcHJlZml4KG9wdGlvbiwgVEZUUF9PUFRJT05fQkxLU0laRSkpIHsKICAgICAgIGxvbmcgYmxrc2l6ZTsKIAotICAgICAgYmxrc2l6ZSA9IHN0cnRvbCggdmFsdWUsIE5VTEwsIDEwICk7CisgICAgICBibGtzaXplID0gc3RydG9sKHZhbHVlLCBOVUxMLCAxMCk7CiAKICAgICAgIGlmKCFibGtzaXplKSB7CiAgICAgICAgIGZhaWxmKGRhdGEsICJpbnZhbGlkIGJsb2Nrc2l6ZSB2YWx1ZSBpbiBPQUNLIHBhY2tldCIpOwpAQCAtMzg0LDcgKzM4NCw3IEBACiAgICAgZWxzZSBpZihjaGVja3ByZWZpeChvcHRpb24sIFRGVFBfT1BUSU9OX1RTSVpFKSkgewogICAgICAgbG9uZyB0c2l6ZSA9IDA7CiAKLSAgICAgIHRzaXplID0gc3RydG9sKCB2YWx1ZSwgTlVMTCwgMTAgKTsKKyAgICAgIHRzaXplID0gc3RydG9sKHZhbHVlLCBOVUxMLCAxMCk7CiAgICAgICBpbmZvZihkYXRhLCAiJXMgKCVsZClcbiIsICJ0c2l6ZSBwYXJzZWQgZnJvbSBPQUNLIiwgdHNpemUpOwogCiAgICAgICAvKiB0c2l6ZSBzaG91bGQgYmUgaWdub3JlZCBvbiB1cGxvYWQ6IFdobyBjYXJlcyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUKQEAgLTQwNSw3ICs0MDUsNyBAQAogc3RhdGljIHNpemVfdCB0ZnRwX29wdGlvbl9hZGQodGZ0cF9zdGF0ZV9kYXRhX3QgKnN0YXRlLCBzaXplX3QgY3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGNvbnN0IGNoYXIgKm9wdGlvbikKIHsKLSAgaWYoKCBzdHJsZW4ob3B0aW9uKSArIGNzaXplICsgMSApID4gKHNpemVfdClzdGF0ZS0+Ymxrc2l6ZSkKKyAgaWYoKCBzdHJsZW4ob3B0aW9uKSArIGNzaXplICsgMSkgPiAoc2l6ZV90KXN0YXRlLT5ibGtzaXplKQogICAgIHJldHVybiAwOwogICBzdHJjcHkoYnVmLCBvcHRpb24pOwogICByZXR1cm4gc3RybGVuKG9wdGlvbikgKyAxOwpAQCAtNDk0LDMzICs0OTQsMzYgQEAKICAgICAgICAgICAgICAiJXMlYyVzJWMiLCBmaWxlbmFtZSwgJ1wwJywgIG1vZGUsICdcMCcpOwogICAgIHNieXRlcyA9IDQgKyBzdHJsZW4oZmlsZW5hbWUpICsgc3RybGVuKG1vZGUpOwogCi0gICAgLyogYWRkIHRzaXplIG9wdGlvbiAqLwotICAgIGlmKGRhdGEtPnNldC51cGxvYWQgJiYgKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpKQotICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QsCi0gICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKLSAgICBlbHNlCi0gICAgICBzdHJjcHkoYnVmLCAiMCIpOyAvKiB0aGUgZGVzdGluYXRpb24gaXMgbGFyZ2UgZW5vdWdoICovCisgICAgLyogb3B0aW9uYWwgYWRkaXRpb24gb2YgVEZUUCBvcHRpb25zICovCisgICAgaWYoIWRhdGEtPnNldC50ZnRwX25vX29wdGlvbnMpIHsKKyAgICAgIC8qIGFkZCB0c2l6ZSBvcHRpb24gKi8KKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQgJiYgKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpKQorICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCwKKyAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSk7CisgICAgICBlbHNlCisgICAgICAgIHN0cmNweShidWYsICIwIik7IC8qIHRoZSBkZXN0aW5hdGlvbiBpcyBsYXJnZSBlbm91Z2ggKi8KIAotICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9UU0laRSk7Ci0gICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywgYnVmKTsKLSAgICAvKiBhZGQgYmxrc2l6ZSBvcHRpb24gKi8KLSAgICBzbnByaW50ZiggYnVmLCBzaXplb2YoYnVmKSwgIiVkIiwgc3RhdGUtPnJlcXVlc3RlZF9ibGtzaXplICk7Ci0gICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGVFBfT1BUSU9OX0JMS1NJWkUpOwotICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsIGJ1ZiApOworICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9UU0laRSk7CisgICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsIGJ1Zik7CisgICAgICAvKiBhZGQgYmxrc2l6ZSBvcHRpb24gKi8KKyAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHN0YXRlLT5yZXF1ZXN0ZWRfYmxrc2l6ZSk7CisgICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGVFBfT1BUSU9OX0JMS1NJWkUpOworICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLCBidWYpOwogCi0gICAgLyogYWRkIHRpbWVvdXQgb3B0aW9uICovCi0gICAgc25wcmludGYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHN0YXRlLT5yZXRyeV90aW1lKTsKLSAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fSU5URVJWQUwpOwotICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsIGJ1ZiApOworICAgICAgLyogYWRkIHRpbWVvdXQgb3B0aW9uICovCisgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJWQiLCBzdGF0ZS0+cmV0cnlfdGltZSk7CisgICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGVFBfT1BUSU9OX0lOVEVSVkFMKTsKKyAgICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywgYnVmKTsKKyAgICB9CiAKICAgICAvKiB0aGUgdHlwZWNhc2UgZm9yIHRoZSAzcmQgYXJndW1lbnQgaXMgbW9zdGx5IGZvciBzeXN0ZW1zIHRoYXQgZG8KICAgICAgICBub3QgaGF2ZSBhIHNpemVfdCBhcmd1bWVudCwgbGlrZSBvbGRlciB1bml4ZXMgdGhhdCB3YW50IGFuICdpbnQnICovCkBAIC05NTcsNyArOTYwLDcgQEAKICAgLyogYWxsb2MgcGt0IGJ1ZmZlcnMgYmFzZWQgb24gc3BlY2lmaWVkIGJsa3NpemUgKi8KICAgaWYoY29ubi0+ZGF0YS0+c2V0LnRmdHBfYmxrc2l6ZSkgewogICAgIGJsa3NpemUgPSAoaW50KWNvbm4tPmRhdGEtPnNldC50ZnRwX2Jsa3NpemU7Ci0gICAgaWYoYmxrc2l6ZSA+IFRGVFBfQkxLU0laRV9NQVggfHwgYmxrc2l6ZSA8IFRGVFBfQkxLU0laRV9NSU4gKQorICAgIGlmKGJsa3NpemUgPiBURlRQX0JMS1NJWkVfTUFYIHx8IGJsa3NpemUgPCBURlRQX0JMS1NJWkVfTUlOKQogICAgICAgcmV0dXJuIENVUkxFX1RGVFBfSUxMRUdBTDsKICAgfQogCkBAIC05NzUsNyArOTc4LDcgQEAKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAKLSAgLyogd2UgZG9uJ3Qga2VlcCBURlRQIGNvbm5lY3Rpb25zIHVwIGJhc2NpYWxseSBiZWNhdXNlIHRoZXJlJ3Mgbm9uZSBvciB2ZXJ5CisgIC8qIHdlIGRvbid0IGtlZXAgVEZUUCBjb25uZWN0aW9ucyB1cCBiYXNpY2FsbHkgYmVjYXVzZSB0aGVyZSdzIG5vbmUgb3IgdmVyeQogICAgKiBsaXR0bGUgZ2FpbiBmb3IgVURQICovCiAgIGNvbm5jbG9zZShjb25uLCAiVEZUUCIpOwogCmRpZmYgLS1naXQgYS9saWIvdGZ0cC5oIGIvbGliL3RmdHAuaAppbmRleCAxMTdiNDBmLi5jMjMyNWIyIDEwMDY0NAotLS0gYS9saWIvdGZ0cC5oCisrKyBiL2xpYi90ZnRwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvdGltZXZhbC5jIGIvbGliL3RpbWV2YWwuYwppbmRleCA0NTczMWFjLi42MjlmMWM4IDEwMDY0NAotLS0gYS9saWIvdGltZXZhbC5jCisrKyBiL2xpYi90aW1ldmFsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMTMsMTAgKzExMywxOCBAQAogICogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBtb3JlIHJlY2VudCB0aW1lLCBhcyBvdGhlcndpc2UKICAqIHdlJ2xsIGdldCBhIHdlaXJkIG5lZ2F0aXZlIHRpbWUtZGlmZiBiYWNrLi4uCiAgKgotICogUmV0dXJuczogdGhlIHRpbWUgZGlmZmVyZW5jZSBpbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLgorICogUmV0dXJuczogdGhlIHRpbWUgZGlmZmVyZW5jZSBpbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBGb3IgbGFyZ2UgZGlmZnMgaXQKKyAqIHJldHVybnMgMHg3ZmZmZmZmZiBvbiAzMmJpdCB0aW1lX3Qgc3lzdGVtcy4KICAqLwogbG9uZyBjdXJseF90dmRpZmYoc3RydWN0IHRpbWV2YWwgbmV3ZXIsIHN0cnVjdCB0aW1ldmFsIG9sZGVyKQogeworI2lmIFNJWkVPRl9USU1FX1QgPCA4CisgIC8qIGZvciAzMmJpdCB0aW1lX3Qgc3lzdGVtcywgYWRkIGEgcHJlY2F1dGlvbiB0byBhdm9pZCBvdmVyZmxvdyBmb3IgcmVhbGx5CisgICAgIGJpZyB0aW1lIGRpZmZlcmVuY2VzICovCisgIHRpbWVfdCBkaWZmID0gbmV3ZXIudHZfc2VjLW9sZGVyLnR2X3NlYzsKKyAgaWYoZGlmZiA+PSAoMHg3ZmZmZmZmZi8xMDAwKSkKKyAgICByZXR1cm4gMHg3ZmZmZmZmZjsKKyNlbmRpZgogICByZXR1cm4gKG5ld2VyLnR2X3NlYy1vbGRlci50dl9zZWMpKjEwMDArCiAgICAgKGxvbmcpKG5ld2VyLnR2X3VzZWMtb2xkZXIudHZfdXNlYykvMTAwMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi90aW1ldmFsLmggYi9saWIvdGltZXZhbC5oCmluZGV4IDNmMWI5ZWEuLjUwYzMxYTIgMTAwNjQ0Ci0tLSBhL2xpYi90aW1ldmFsLmgKKysrIGIvbGliL3RpbWV2YWwuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi90cmFuc2Zlci5jIGIvbGliL3RyYW5zZmVyLmMKaW5kZXggMjhjYzYxZS4uNGExMmVlOSAxMDA2NDQKLS0tIGEvbGliL3RyYW5zZmVyLmMKKysrIGIvbGliL3RyYW5zZmVyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03MSwxNyArNzEsMTMgQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJnZXRpbmZvLmgiCiAjaW5jbHVkZSAidnRscy92dGxzLmgiCi0jaW5jbHVkZSAiaHR0cF9kaWdlc3QuaCIKLSNpbmNsdWRlICJjdXJsX250bG0uaCIKLSNpbmNsdWRlICJodHRwX25lZ290aWF0ZS5oIgotI2luY2x1ZGUgInNoYXJlLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTExNSw4ICsxMTEsOCBAQAogCiAgIC8qIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHNpemVfdCwgc28gd2UgdHlwZWNhc3QgdG8gaW50IHRvIHByZXZlbnQgd2FybmluZ3MKICAgICAgd2l0aCBwaWNreSBjb21waWxlcnMgKi8KLSAgbnJlYWQgPSAoaW50KWRhdGEtPnNldC5mcmVhZF9mdW5jKGRhdGEtPnJlcS51cGxvYWRfZnJvbWhlcmUsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzaXplLCBkYXRhLT5zZXQuaW4pOworICBucmVhZCA9IChpbnQpZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5yZXEudXBsb2FkX2Zyb21oZXJlLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzaXplLCBkYXRhLT5zdGF0ZS5pbik7CiAKICAgaWYobnJlYWQgPT0gQ1VSTF9SRUFERlVOQ19BQk9SVCkgewogICAgIGZhaWxmKGRhdGEsICJvcGVyYXRpb24gYWJvcnRlZCBieSBjYWxsYmFjayIpOwpAQCAtMjg5LDggKzI4NSw4IEBACiAgICAgICAvKiBJZiBubyBDVVJMT1BUX1JFQURGVU5DVElPTiBpcyB1c2VkLCB3ZSBrbm93IHRoYXQgd2Ugb3BlcmF0ZSBvbiBhCiAgICAgICAgICBnaXZlbiBGSUxFICogc3RyZWFtIGFuZCB3ZSBjYW4gYWN0dWFsbHkgYXR0ZW1wdCB0byByZXdpbmQgdGhhdAogICAgICAgICAgb3Vyc2VsdmVzIHdpdGggZnNlZWsoKSAqLwotICAgICAgaWYoZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPT0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZCkgewotICAgICAgICBpZigtMSAhPSBmc2VlayhkYXRhLT5zZXQuaW4sIDAsIFNFRUtfU0VUKSkKKyAgICAgIGlmKGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMgPT0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZCkgeworICAgICAgICBpZigtMSAhPSBmc2VlayhkYXRhLT5zdGF0ZS5pbiwgMCwgU0VFS19TRVQpKQogICAgICAgICAgIC8qIHN1Y2Nlc3NmdWwgcmV3aW5kICovCiAgICAgICAgICAgcmV0dXJuIENVUkxFX09LOwogICAgICAgfQpAQCAtMzk5LDYgKzM5NSw3IEBACiAgIHNpemVfdCBleGNlc3MgPSAwOyAvKiBleGNlc3MgYnl0ZXMgcmVhZCAqLwogICBib29sIGlzX2VtcHR5X2RhdGEgPSBGQUxTRTsKICAgYm9vbCByZWFkbW9yZSA9IEZBTFNFOyAvKiB1c2VkIGJ5IFJUUCB0byBzaWduYWwgZm9yIG1vcmUgZGF0YSAqLworICBpbnQgbWF4bG9vcHMgPSAxMDA7CiAKICAgKmRvbmUgPSBGQUxTRTsKIApAQCAtNDA5LDcgKzQwNiwxOCBAQAogICAgICAgZGF0YS0+c2V0LmJ1ZmZlcl9zaXplIDogQlVGU0laRTsKICAgICBzaXplX3QgYnl0ZXN0b3JlYWQgPSBidWZmZXJzaXplOwogCi0gICAgaWYoay0+c2l6ZSAhPSAtMSAmJiAhay0+aGVhZGVyKSB7CisgICAgaWYoCisjaWYgZGVmaW5lZChVU0VfTkdIVFRQMikKKyAgICAgICAvKiBGb3IgSFRUUC8yLCByZWFkIGRhdGEgd2l0aG91dCBjYXJpbmcgYWJvdXQgdGhlIGNvbnRlbnQKKyAgICAgICAgICBsZW5ndGguIFRoaXMgaXMgc2FmZSBiZWNhdXNlIGJvZHkgaW4gSFRUUC8yIGlzIGFsd2F5cworICAgICAgICAgIHNlZ21lbnRlZCB0aGFua3MgdG8gaXRzIGZyYW1pbmcgbGF5ZXIuIE1lYW53aGlsZSwgd2UgaGF2ZSB0bworICAgICAgICAgIGNhbGwgQ3VybF9yZWFkIHRvIGVuc3VyZSB0aGF0IGh0dHAyX2hhbmRsZV9zdHJlYW1fY2xvc2UgaXMKKyAgICAgICAgICBjYWxsZWQgd2hlbiB3ZSByZWFkIGFsbCBpbmNvbWluZyBieXRlcyBmb3IgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgc3RyZWFtLiAqLworICAgICAgICEoKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgUFJPVE9fRkFNSUxZX0hUVFApICYmCisgICAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9PSAyMCkgJiYKKyNlbmRpZgorICAgICAgIGstPnNpemUgIT0gLTEgJiYgIWstPmhlYWRlcikgewogICAgICAgLyogbWFrZSBzdXJlIHdlIGRvbid0IHJlYWQgInRvbyBtdWNoIiBpZiB3ZSBjYW4gaGVscCBpdCBzaW5jZSB3ZQogICAgICAgICAgbWlnaHQgYmUgcGlwZWxpbmluZyBhbmQgdGhlbiBzb21lb25lIGVsc2UgbWlnaHQgd2FudCB0byByZWFkIHdoYXQKICAgICAgICAgIGZvbGxvd3MhICovCkBAIC02ODYsNyArNjk0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIG5yZWFkID0gKHNzaXplX3QpIChrLT5tYXhkb3dubG9hZCAtIGstPmJ5dGVjb3VudCk7Ci0gICAgICAgIGlmKG5yZWFkIDwgMCApIC8qIHRoaXMgc2hvdWxkIGJlIHVudXN1YWwgKi8KKyAgICAgICAgaWYobnJlYWQgPCAwKSAvKiB0aGlzIHNob3VsZCBiZSB1bnVzdWFsICovCiAgICAgICAgICAgbnJlYWQgPSAwOwogCiAgICAgICAgIGstPmtlZXBvbiAmPSB+S0VFUF9SRUNWOyAvKiB3ZSdyZSBkb25lIHJlYWRpbmcgKi8KQEAgLTc1Niw3ICs3NjQsNiBAQAogICAgICAgICAgICAgICByZXN1bHQgPSBDdXJsX3VuZW5jb2RlX2d6aXBfd3JpdGUoY29ubiwgaywgbnJlYWQpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIENPTVBSRVNTOgogICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBmYWlsZiAoZGF0YSwgIlVucmVjb2duaXplZCBjb250ZW50IGVuY29kaW5nIHR5cGUuICIKICAgICAgICAgICAgICAgICAgICAibGliY3VybCB1bmRlcnN0YW5kcyBgaWRlbnRpdHknLCBgZGVmbGF0ZScgYW5kIGBnemlwJyAiCkBAIC03NzIsNyArNzc5LDcgQEAKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgfQogCi0gICAgfSAvKiBpZighIGhlYWRlciBhbmQgZGF0YSB0byByZWFkICkgKi8KKyAgICB9IC8qIGlmKCFoZWFkZXIgYW5kIGRhdGEgdG8gcmVhZCkgKi8KIAogICAgIGlmKGNvbm4tPmhhbmRsZXItPnJlYWR3cml0ZSAmJgogICAgICAgIChleGNlc3MgPiAwICYmICFjb25uLT5iaXRzLnN0cmVhbV93YXNfcmV3b3VuZCkpIHsKQEAgLTc5NSwxMCArODAyLDEwIEBACiAgICAgICBrLT5rZWVwb24gJj0gfktFRVBfUkVDVjsKICAgICB9CiAKLSAgfSB3aGlsZShkYXRhX3BlbmRpbmcoY29ubikpOworICB9IHdoaWxlKGRhdGFfcGVuZGluZyhjb25uKSAmJiBtYXhsb29wcy0tKTsKIAogICBpZigoKGstPmtlZXBvbiAmIChLRUVQX1JFQ1Z8S0VFUF9TRU5EKSkgPT0gS0VFUF9TRU5EKSAmJgotICAgICBjb25uLT5iaXRzLmNsb3NlICkgeworICAgICBjb25uLT5iaXRzLmNsb3NlKSB7CiAgICAgLyogV2hlbiB3ZSd2ZSByZWFkIHRoZSBlbnRpcmUgdGhpbmcgYW5kIHRoZSBjbG9zZSBiaXQgaXMgc2V0LCB0aGUgc2VydmVyCiAgICAgICAgbWF5IG5vdyBjbG9zZSB0aGUgY29ubmVjdGlvbi4gSWYgdGhlcmUncyBub3cgYW55IGtpbmQgb2Ygc2VuZGluZyBnb2luZwogICAgICAgIG9uIGZyb20gb3VyIHNpZGUsIHdlIG5lZWQgdG8gc3RvcCB0aGF0IGltbWVkaWF0ZWx5LiAqLwpAQCAtODA5LDYgKzgxNiwyMCBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKK3N0YXRpYyBDVVJMY29kZSBkb25lX3NlbmRpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2luZ2xlUmVxdWVzdCAqaykKK3sKKyAgay0+a2VlcG9uICY9IH5LRUVQX1NFTkQ7IC8qIHdlJ3JlIGRvbmUgd3JpdGluZyAqLworCisgIGlmKGNvbm4tPmJpdHMucmV3aW5kYWZ0ZXJzZW5kKSB7CisgICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF9yZWFkcmV3aW5kKGNvbm4pOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgcmV0dXJuIENVUkxFX09LOworfQorCisKIC8qCiAgKiBTZW5kIGRhdGEgdG8gdXBsb2FkIHRvIHRoZSBzZXJ2ZXIsIHdoZW4gdGhlIHNvY2tldCBpcyB3cml0YWJsZS4KICAqLwpAQCAtODgwLDE0ICs5MDEsOSBAQAogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGVsc2UgaWYobnJlYWQ8PTApIHsKLSAgICAgICAgLyogZG9uZSAqLwotICAgICAgICBrLT5rZWVwb24gJj0gfktFRVBfU0VORDsgLyogd2UncmUgZG9uZSB3cml0aW5nICovCi0KLSAgICAgICAgaWYoY29ubi0+Yml0cy5yZXdpbmRhZnRlcnNlbmQpIHsKLSAgICAgICAgICByZXN1bHQgPSBDdXJsX3JlYWRyZXdpbmQoY29ubik7Ci0gICAgICAgICAgaWYocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBkb25lX3NlbmRpbmcoY29ubiwgayk7CisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBicmVhazsKICAgICAgIH0KIApAQCAtOTI0LDcgKzk0MCw4IEBACiAgICAgICAgICAgICBpZighZGF0YS0+c2V0LmNybGYpIHsKICAgICAgICAgICAgICAgLyogd2UncmUgaGVyZSBvbmx5IGJlY2F1c2UgRlRQIGlzIGluIEFTQ0lJIG1vZGUuLi4KICAgICAgICAgICAgICAgICAgYnVtcCBpbmZpbGVzaXplIGZvciB0aGUgTEYgd2UganVzdCBhZGRlZCAqLwotICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKys7CisgICAgICAgICAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpCisgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSsrOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCkBAIC05OTYsOCArMTAxMyw5IEBACiAgICAgICBkYXRhLT5yZXEudXBsb2FkX3ByZXNlbnQgPSAwOyAvKiBubyBtb3JlIGJ5dGVzIGxlZnQgKi8KIAogICAgICAgaWYoay0+dXBsb2FkX2RvbmUpIHsKLSAgICAgICAgLyogc3dpdGNoIG9mZiB3cml0aW5nLCB3ZSdyZSBkb25lISAqLwotICAgICAgICBrLT5rZWVwb24gJj0gfktFRVBfU0VORDsgLyogd2UncmUgZG9uZSB3cml0aW5nICovCisgICAgICAgIHJlc3VsdCA9IGRvbmVfc2VuZGluZyhjb25uLCBrKTsKKyAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICB9CiAgICAgfQogCkBAIC0xMjg1LDggKzEzMDMsMTggQEAKICAgcmV0dXJuIChsb25nKXJ2OwogfQogCisvKiBDdXJsX2luaXRfQ09OTkVDVCgpIGdldHMgY2FsbGVkIGVhY2ggdGltZSB0aGUgaGFuZGxlIHN3aXRjaGVzIHRvIENPTk5FQ1QKKyAgIHdoaWNoIG1lYW5zIHRoaXMgZ2V0cyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzdWJzZXF1ZW50IHJlZGlyZWN0IGV0YyAqLwordm9pZCBDdXJsX2luaXRfQ09OTkVDVChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKK3sKKyAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyA9IGRhdGEtPnNldC5mcmVhZF9mdW5jX3NldDsKKyAgZGF0YS0+c3RhdGUuaW4gPSBkYXRhLT5zZXQuaW5fc2V0OworfQorCiAvKgotICogQ3VybF9wcmV0cmFuc2ZlcigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgYSB0cmFuc2ZlciBzdGFydHMuCisgKiBDdXJsX3ByZXRyYW5zZmVyKCkgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBhIHRyYW5zZmVyIHN0YXJ0cywgYW5kIG9ubHkKKyAqIG9uY2UgZm9yIG9uZSB0cmFuc2ZlciBubyBtYXR0ZXIgaWYgaXQgaGFzIHJlZGlyZWN0cyBvciBkbyBtdWx0aS1wYXNzCisgKiBhdXRoZW50aWNhdGlvbiBldGMuCiAgKi8KIENVUkxjb2RlIEN1cmxfcHJldHJhbnNmZXIoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpCiB7CkBAIC0xMzE1LDYgKzEzNDMsMTEgQEAKICAgQ3VybF9zYWZlZnJlZShkYXRhLT5pbmZvLndvdWxkcmVkaXJlY3QpOwogICBkYXRhLT5pbmZvLndvdWxkcmVkaXJlY3QgPSBOVUxMOwogCisgIGlmKGRhdGEtPnNldC5odHRwcmVxID09IEhUVFBSRVFfUFVUKQorICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPSBkYXRhLT5zZXQuZmlsZXNpemU7CisgIGVsc2UKKyAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID0gZGF0YS0+c2V0LnBvc3RmaWVsZHNpemU7CisKICAgLyogSWYgdGhlcmUgaXMgYSBsaXN0IG9mIGNvb2tpZSBmaWxlcyB0byByZWFkLCBkbyBpdCBub3chICovCiAgIGlmKGRhdGEtPmNoYW5nZS5jb29raWVsaXN0KQogICAgIEN1cmxfY29va2llX2xvYWRmaWxlcyhkYXRhKTsKQEAgLTEzNTIsNiArMTM4NSwxNiBAQAogICAgICAgIGNvbnNpZGVyIHRvIGJlIGZpbmUgKi8KICAgICBkYXRhLT5zdGF0ZS5hdXRoaG9zdC5waWNrZWQgJj0gZGF0YS0+c3RhdGUuYXV0aGhvc3Qud2FudDsKICAgICBkYXRhLT5zdGF0ZS5hdXRocHJveHkucGlja2VkICY9IGRhdGEtPnN0YXRlLmF1dGhwcm94eS53YW50OworCisgICAgaWYoZGF0YS0+c2V0LndpbGRjYXJkbWF0Y2gpIHsKKyAgICAgIHN0cnVjdCBXaWxkY2FyZERhdGEgKndjID0gJmRhdGEtPndpbGRjYXJkOworICAgICAgaWYoIXdjLT5maWxlbGlzdCkgeworICAgICAgICByZXN1bHQgPSBDdXJsX3dpbGRjYXJkX2luaXQod2MpOyAvKiBpbml0IHdpbGRjYXJkIHN0cnVjdHVyZXMgKi8KKyAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgfQorICAgIH0KKwogICB9CiAKICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzODAsMTYgKzE0MjMsMTggQEAKICAqLwogc3RhdGljIHNpemVfdCBzdHJsZW5fdXJsKGNvbnN0IGNoYXIgKnVybCkKIHsKLSAgY29uc3QgY2hhciAqcHRyOworICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdHI7CiAgIHNpemVfdCBuZXdsZW49MDsKICAgYm9vbCBsZWZ0PVRSVUU7IC8qIGxlZnQgc2lkZSBvZiB0aGUgPyAqLwogCi0gIGZvcihwdHI9dXJsOyAqcHRyOyBwdHIrKykgeworICBmb3IocHRyPSh1bnNpZ25lZCBjaGFyICopdXJsOyAqcHRyOyBwdHIrKykgewogICAgIHN3aXRjaCgqcHRyKSB7CiAgICAgY2FzZSAnPyc6CiAgICAgICBsZWZ0PUZBTFNFOwogICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgZGVmYXVsdDoKKyAgICAgIGlmKCpwdHIgPj0gMHg4MCkKKyAgICAgICAgbmV3bGVuICs9IDI7CiAgICAgICBuZXdsZW4rKzsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJyAnOgpAQCAtMTQxMCw5ICsxNDU1LDkgQEAKIHsKICAgLyogd2UgbXVzdCBhZGQgdGhpcyB3aXRoIHdoaXRlc3BhY2UtcmVwbGFjaW5nICovCiAgIGJvb2wgbGVmdD1UUlVFOwotICBjb25zdCBjaGFyICppcHRyOworICBjb25zdCB1bnNpZ25lZCBjaGFyICppcHRyOwogICBjaGFyICpvcHRyID0gb3V0cHV0OwotICBmb3IoaXB0ciA9IHVybDsgICAgLyogcmVhZCBmcm9tIGhlcmUgKi8KKyAgZm9yKGlwdHIgPSAodW5zaWduZWQgY2hhciAqKXVybDsgICAgLyogcmVhZCBmcm9tIGhlcmUgKi8KICAgICAgICppcHRyOyAgICAgICAgIC8qIHVudGlsIHplcm8gYnl0ZSAqLwogICAgICAgaXB0cisrKSB7CiAgICAgc3dpdGNoKCppcHRyKSB7CkBAIC0xNDIwLDcgKzE0NjUsMTIgQEAKICAgICAgIGxlZnQ9RkFMU0U7CiAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBkZWZhdWx0OgotICAgICAgKm9wdHIrKz0qaXB0cjsKKyAgICAgIGlmKCppcHRyID49IDB4ODApIHsKKyAgICAgICAgc25wcmludGYob3B0ciwgNCwgIiUlJTAyeCIsICppcHRyKTsKKyAgICAgICAgb3B0ciArPSAzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICAqb3B0cisrPSppcHRyOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnICc6CiAgICAgICBpZihsZWZ0KSB7CkBAIC0xNjY4LDIzICsxNzE4LDIxIEBACiAgICAgbmV3dXJsID0gYWJzb2x1dGU7CiAgIH0KICAgZWxzZSB7CisgICAgLyogVGhlIG5ldyBVUkwgTUFZIGNvbnRhaW4gc3BhY2Ugb3IgaGlnaCBieXRlIHZhbHVlcywgdGhhdCBtZWFucyBhIG1pZ2h0eQorICAgICAgIHN0dXBpZCByZWRpcmVjdCBVUkwgYnV0IHdlIHN0aWxsIG1ha2UgYW4gZWZmb3J0IHRvIGRvICJyaWdodCIuICovCisgICAgY2hhciAqbmV3ZXN0OworICAgIHNpemVfdCBuZXdsZW4gPSBzdHJsZW5fdXJsKG5ld3VybCk7CisKICAgICAvKiBUaGlzIGlzIGFuIGFic29sdXRlIFVSTCwgZG9uJ3QgYWxsb3cgdGhlIGN1c3RvbSBwb3J0IG51bWJlciAqLwogICAgIGRpc2FsbG93cG9ydCA9IFRSVUU7CiAKLSAgICBpZihzdHJjaHIobmV3dXJsLCAnICcpKSB7Ci0gICAgICAvKiBUaGlzIG5ldyBVUkwgY29udGFpbnMgYXQgbGVhc3Qgb25lIHNwYWNlLCB0aGlzIGlzIGEgbWlnaHR5IHN0dXBpZAotICAgICAgICAgcmVkaXJlY3QgYnV0IHdlIHN0aWxsIG1ha2UgYW4gZWZmb3J0IHRvIGRvICJyaWdodCIuICovCi0gICAgICBjaGFyICpuZXdlc3Q7Ci0gICAgICBzaXplX3QgbmV3bGVuID0gc3RybGVuX3VybChuZXd1cmwpOworICAgIG5ld2VzdCA9IG1hbGxvYyhuZXdsZW4rMSk7IC8qIGdldCBtZW1vcnkgZm9yIHRoaXMgKi8KKyAgICBpZighbmV3ZXN0KQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgc3RyY3B5X3VybChuZXdlc3QsIG5ld3VybCk7IC8qIGNyZWF0ZSBhIHNwYWNlLWZyZWUgVVJMICovCiAKLSAgICAgIG5ld2VzdCA9IG1hbGxvYyhuZXdsZW4rMSk7IC8qIGdldCBtZW1vcnkgZm9yIHRoaXMgKi8KLSAgICAgIGlmKCFuZXdlc3QpCi0gICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgc3RyY3B5X3VybChuZXdlc3QsIG5ld3VybCk7IC8qIGNyZWF0ZSBhIHNwYWNlLWZyZWUgVVJMICovCi0KLSAgICAgIGZyZWUobmV3dXJsKTsgLyogdGhhdCB3YXMgbm8gZ29vZCAqLwotICAgICAgbmV3dXJsID0gbmV3ZXN0OyAvKiB1c2UgdGhpcyBpbnN0ZWFkIG5vdyAqLwotICAgIH0KKyAgICBmcmVlKG5ld3VybCk7IC8qIHRoYXQgd2FzIG5vIGdvb2QgKi8KKyAgICBuZXd1cmwgPSBuZXdlc3Q7IC8qIHVzZSB0aGlzIGluc3RlYWQgbm93ICovCiAKICAgfQogCkBAIC0xODEwLDYzICsxODU4LDYgQEAKICNlbmRpZiAvKiBDVVJMX0RJU0FCTEVfSFRUUCAqLwogfQogCi1DVVJMY29kZQotQ3VybF9yZWNvbm5lY3RfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKipjb25ucCkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9ICpjb25ucDsKLSAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwotCi0gIC8qIFRoaXMgd2FzIGEgcmUtdXNlIG9mIGEgY29ubmVjdGlvbiBhbmQgd2UgZ290IGEgd3JpdGUgZXJyb3IgaW4gdGhlCi0gICAqIERPLXBoYXNlLiBUaGVuIHdlIERJU0NPTk5FQ1QgdGhpcyBjb25uZWN0aW9uIGFuZCBoYXZlIGFub3RoZXIgYXR0ZW1wdCB0bwotICAgKiBDT05ORUNUIGFuZCB0aGVuIERPIGFnYWluISBUaGUgcmV0cnkgY2Fubm90IHBvc3NpYmx5IGZpbmQgYW5vdGhlcgotICAgKiBjb25uZWN0aW9uIHRvIHJlLXVzZSwgc2luY2Ugd2Ugb25seSBrZWVwIG9uZSBwb3NzaWJsZSBjb25uZWN0aW9uIGZvcgotICAgKiBlYWNoLiAgKi8KLQotICBpbmZvZihkYXRhLCAiUmUtdXNlZCBjb25uZWN0aW9uIHNlZW1zIGRlYWQsIGdldCBhIG5ldyBvbmVcbiIpOwotCi0gIGNvbm5jbG9zZShjb25uLCAiUmVjb25uZWN0IGRlYWQgY29ubmVjdGlvbiIpOyAvKiBlbmZvcmNlIGNsb3NlICovCi0gIHJlc3VsdCA9IEN1cmxfZG9uZSgmY29ubiwgcmVzdWx0LCBGQUxTRSk7IC8qIHdlIGFyZSBzbyBkb25lIHdpdGggdGhpcyAqLwotCi0gIC8qIGNvbm4gbWF5IG5vIGxvbmdlciBiZSBhIGdvb2QgcG9pbnRlciwgY2xlYXIgaXQgdG8gYXZvaWQgbWlzdGFrZXMgYnkKLSAgICAgcGFyZW50IGZ1bmN0aW9ucyAqLwotICAqY29ubnAgPSBOVUxMOwotCi0gIC8qCi0gICAqIEFjY29yZGluZyB0byBidWcgcmVwb3J0ICMxMzMwMzEwLiBXZSBuZWVkIHRvIGNoZWNrIGZvciBDVVJMRV9TRU5EX0VSUk9SCi0gICAqIGhlcmUgYXMgd2VsbC4gSSBmaWd1cmUgdGhpcyBjb3VsZCBoYXBwZW4gd2hlbiB0aGUgcmVxdWVzdCBmYWlsZWQgb24gYSBGVFAKLSAgICogY29ubmVjdGlvbiBhbmQgdGh1cyBDdXJsX2RvbmUoKSBpdHNlbGYgdHJpZWQgdG8gdXNlIHRoZSBjb25uZWN0aW9uCi0gICAqIChhZ2FpbikuIFNsaWdodCBMYWNrIG9mIGZlZWRiYWNrIGluIHRoZSByZXBvcnQsIGJ1dCBJIGRvbid0IHRoaW5rIHRoaXMKLSAgICogZXh0cmEgY2hlY2sgY2FuIGRvIG11Y2ggaGFybS4KLSAgICovCi0gIGlmKCFyZXN1bHQgfHwgKENVUkxFX1NFTkRfRVJST1IgPT0gcmVzdWx0KSkgewotICAgIGJvb2wgYXN5bmM7Ci0gICAgYm9vbCBwcm90b2NvbF9kb25lID0gVFJVRTsKLQotICAgIC8qIE5vdywgcmVkbyB0aGUgY29ubmVjdCBhbmQgZ2V0IGEgbmV3IGNvbm5lY3Rpb24gKi8KLSAgICByZXN1bHQgPSBDdXJsX2Nvbm5lY3QoZGF0YSwgY29ubnAsICZhc3luYywgJnByb3RvY29sX2RvbmUpOwotICAgIGlmKCFyZXN1bHQpIHsKLSAgICAgIC8qIFdlIGhhdmUgY29ubmVjdGVkIG9yIHNlbnQgYXdheSBhIG5hbWUgcmVzb2x2ZSBxdWVyeSBmaW5lICovCi0KLSAgICAgIGNvbm4gPSAqY29ubnA7IC8qIHNldHVwIGNvbm4gdG8gYWdhaW4gcG9pbnQgdG8gc29tZXRoaW5nIG5pY2UgKi8KLSAgICAgIGlmKGFzeW5jKSB7Ci0gICAgICAgIC8qIE5vdywgaWYgYXN5bmMgaXMgVFJVRSBoZXJlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuYW1lCi0gICAgICAgICAgIHRvIHJlc29sdmUgKi8KLSAgICAgICAgcmVzdWx0ID0gQ3VybF9yZXNvbHZlcl93YWl0X3Jlc29sdihjb25uLCBOVUxMKTsKLSAgICAgICAgaWYocmVzdWx0KQotICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgLyogUmVzb2x2ZWQsIGNvbnRpbnVlIHdpdGggdGhlIGNvbm5lY3Rpb24gKi8KLSAgICAgICAgcmVzdWx0ID0gQ3VybF9hc3luY19yZXNvbHZlZChjb25uLCAmcHJvdG9jb2xfZG9uZSk7Ci0gICAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KIC8qIFJldHVybnMgQ1VSTEVfT0sgKmFuZCogc2V0cyAnKnVybCcgaWYgYSByZXF1ZXN0IHJldHJ5IGlzIHdhbnRlZC4KIAogICAgTk9URTogdGhhdCB0aGUgKnVybCBpcyBtYWxsb2MoKWVkLiAqLwpkaWZmIC0tZ2l0IGEvbGliL3RyYW5zZmVyLmggYi9saWIvdHJhbnNmZXIuaAppbmRleCAzMTZhZWFlLi44MDIzNDRmIDEwMDY0NAotLS0gYS9saWIvdHJhbnNmZXIuaAorKysgYi9saWIvdHJhbnNmZXIuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDYgKzIyLDggQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCit2b2lkIEN1cmxfaW5pdF9DT05ORUNUKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKKwogQ1VSTGNvZGUgQ3VybF9wcmV0cmFuc2ZlcihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CiBDVVJMY29kZSBDdXJsX3NlY29uZF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX3Bvc3R0cmFuc2ZlcihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CkBAIC00Nyw3ICs0OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwogQ1VSTGNvZGUgQ3VybF9yZWFkcmV3aW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX2ZpbGxyZWFkYnVmZmVyKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IGJ5dGVzLCBpbnQgKm5yZWFkcCk7Ci1DVVJMY29kZSBDdXJsX3JlY29ubmVjdF9yZXF1ZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqKmNvbm5wKTsKIENVUkxjb2RlIEN1cmxfcmV0cnlfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNoYXIgKip1cmwpOwogYm9vbCBDdXJsX21lZXRzX3RpbWVjb25kaXRpb24oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIHRpbWVfdCB0aW1lb2Zkb2MpOwogCmRpZmYgLS1naXQgYS9saWIvdXJsLmMgYi9saWIvdXJsLmMKaW5kZXggMTcyNzliYi4uMmEzMDI2NiAxMDA2NDQKLS0tIGEvbGliL3VybC5jCisrKyBiL2xpYi91cmwuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc1LDcgKzc1LDcgQEAKICNlbmRpZgogI2VsaWYgZGVmaW5lZChVU0VfV0lOMzJfSUROKQogLyogcHJvdG90eXBlIGZvciBjdXJsX3dpbjMyX2lkbl90b19hc2NpaSgpICovCi1pbnQgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpOworYm9vbCBjdXJsX3dpbjMyX2lkbl90b19hc2NpaShjb25zdCBjaGFyICppbiwgY2hhciAqKm91dCk7CiAjZW5kaWYgIC8qIFVTRV9MSUJJRE4gKi8KIAogI2luY2x1ZGUgInVybGRhdGEuaCIKQEAgLTExMSw2ICsxMTEsNyBAQAogI2luY2x1ZGUgInRlbG5ldC5oIgogI2luY2x1ZGUgInRmdHAuaCIKICNpbmNsdWRlICJodHRwLmgiCisjaW5jbHVkZSAiaHR0cDIuaCIKICNpbmNsdWRlICJmaWxlLmgiCiAjaW5jbHVkZSAiY3VybF9sZGFwLmgiCiAjaW5jbHVkZSAic3NoLmgiCkBAIC0xMTgsNyArMTE5LDcgQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCi0jaW5jbHVkZSAiY3VybF9udGxtLmgiCisjaW5jbHVkZSAiaHR0cF9udGxtLmgiCiAjaW5jbHVkZSAiY3VybF9udGxtX3diLmgiCiAjaW5jbHVkZSAic29ja3MuaCIKICNpbmNsdWRlICJjdXJsX3J0bXAuaCIKQEAgLTEyOSwyMCArMTMwLDE4IEBACiAjaW5jbHVkZSAicGlwZWxpbmUuaCIKICNpbmNsdWRlICJkb3Rkb3QuaCIKICNpbmNsdWRlICJzdHJkdXAuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiBMb2NhbCBzdGF0aWMgcHJvdG90eXBlcyAqLwogc3RhdGljIHN0cnVjdCBjb25uZWN0ZGF0YSAqCi1maW5kX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOwotc3RhdGljIHN0cnVjdCBjb25uZWN0ZGF0YSAqCiBmaW5kX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb25faW5fYnVuZGxlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGJ1bmRsZSAqYnVuZGxlKTsKIHN0YXRpYyB2b2lkIGNvbm5fZnJlZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOworc3RhdGljIHZvaWQgZnJlZV9maXhlZF9ob3N0bmFtZShzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpOwogc3RhdGljIHZvaWQgc2lnbmFsUGlwZUNsb3NlKHN0cnVjdCBjdXJsX2xsaXN0ICpwaXBlbGluZSwgYm9vbCBwaXBlX2Jyb2tlKTsKLXN0YXRpYyBDVVJMY29kZSBkb19pbml0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBzdGF0aWMgQ1VSTGNvZGUgcGFyc2VfdXJsX2xvZ2luKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKip1c2VycHRyLCBjaGFyICoqcGFzc3dkcHRyLApAQCAtMTUwLDYgKzE0OSw4IEBACiBzdGF0aWMgQ1VSTGNvZGUgcGFyc2VfbG9naW5fZGV0YWlscyhjb25zdCBjaGFyICpsb2dpbiwgY29uc3Qgc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKip1c2VycHRyLCBjaGFyICoqcGFzc3dkcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm9wdGlvbnNwdHIpOworc3RhdGljIHVuc2lnbmVkIGludCBnZXRfcHJvdG9jb2xfZmFtaWx5KHVuc2lnbmVkIGludCBwcm90b2NvbCk7CisKIC8qCiAgKiBQcm90b2NvbCB0YWJsZS4KICAqLwpAQCAtMjk2LDcgKzI5Nyw3IEBACiAgIGRhdGEtPmNoYW5nZS51cmwgPSBOVUxMOwogfQogCi1zdGF0aWMgQ1VSTGNvZGUgc2V0c3Ryb3B0KGNoYXIgKipjaGFycCwgY2hhciAqcykKK3N0YXRpYyBDVVJMY29kZSBzZXRzdHJvcHQoY2hhciAqKmNoYXJwLCBjb25zdCBjaGFyICpzKQogewogICAvKiBSZWxlYXNlIHRoZSBwcmV2aW91cyBzdG9yYWdlIGF0IGBjaGFycCcgYW5kIHJlcGxhY2UgYnkgYSBkeW5hbWljIHN0b3JhZ2UKICAgICAgY29weSBvZiBgcycuIFJldHVybiBDVVJMRV9PSyBvciBDVVJMRV9PVVRfT0ZfTUVNT1JZLiAqLwpAQCAtMzA0LDEyICszMDUsMTIgQEAKICAgQ3VybF9zYWZlZnJlZSgqY2hhcnApOwogCiAgIGlmKHMpIHsKLSAgICBzID0gc3RyZHVwKHMpOworICAgIGNoYXIgKnN0ciA9IHN0cmR1cChzKTsKIAotICAgIGlmKCFzKQorICAgIGlmKCFzdHIpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAotICAgICpjaGFycCA9IHM7CisgICAgKmNoYXJwID0gc3RyOwogICB9CiAKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtNDgzLDYgKzQ4NCwxMiBAQAogICAgIEN1cmxfc2hhcmVfdW5sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX1NIQVJFKTsKICAgfQogCisgIGlmKGRhdGEtPnNldC53aWxkY2FyZG1hdGNoKSB7CisgICAgLyogZGVzdHJ1Y3Qgd2lsZGNhcmQgc3RydWN0dXJlcyBpZiBpdCBpcyBuZWVkZWQgKi8KKyAgICBzdHJ1Y3QgV2lsZGNhcmREYXRhICp3YyA9ICZkYXRhLT53aWxkY2FyZDsKKyAgICBDdXJsX3dpbGRjYXJkX2R0b3Iod2MpOworICB9CisKICAgQ3VybF9mcmVlc2V0KGRhdGEpOwogICBmcmVlKGRhdGEpOwogICByZXR1cm4gQ1VSTEVfT0s7CkBAIC00OTcsMTQgKzUwNCwxNCBAQAogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKIAogICBzZXQtPm91dCA9IHN0ZG91dDsgLyogZGVmYXVsdCBvdXRwdXQgdG8gc3Rkb3V0ICovCi0gIHNldC0+aW4gID0gc3RkaW47ICAvKiBkZWZhdWx0IGlucHV0IGZyb20gc3RkaW4gKi8KKyAgc2V0LT5pbl9zZXQgPSBzdGRpbjsgIC8qIGRlZmF1bHQgaW5wdXQgZnJvbSBzdGRpbiAqLwogICBzZXQtPmVyciAgPSBzdGRlcnI7ICAvKiBkZWZhdWx0IHN0ZGVyciB0byBzdGRlcnIgKi8KIAogICAvKiB1c2UgZndyaXRlIGFzIGRlZmF1bHQgZnVuY3Rpb24gdG8gc3RvcmUgb3V0cHV0ICovCiAgIHNldC0+ZndyaXRlX2Z1bmMgPSAoY3VybF93cml0ZV9jYWxsYmFjaylmd3JpdGU7CiAKICAgLyogdXNlIGZyZWFkIGFzIGRlZmF1bHQgZnVuY3Rpb24gdG8gcmVhZCBpbnB1dCAqLwotICBzZXQtPmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKWZyZWFkOworICBzZXQtPmZyZWFkX2Z1bmNfc2V0ID0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZDsKICAgc2V0LT5pc19mcmVhZF9zZXQgPSAwOwogICBzZXQtPmlzX2Z3cml0ZV9zZXQgPSAwOwogCkBAIC01NzAsMzMgKzU3NywxNiBAQAogICAgKiBzZWVtIG5vdCB0byBmb2xsb3cgcmZjMTk2MSBzZWN0aW9uIDQuMy80LjQKICAgICovCiAgIHNldC0+c29ja3M1X2dzc2FwaV9uZWMgPSBGQUxTRTsKLSAgLyogc2V0IGRlZmF1bHQgR1NTLUFQSSBzZXJ2aWNlIG5hbWUgKi8KLSAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZzZXQtPnN0cltTVFJJTkdfU09DS1M1X0dTU0FQSV9TRVJWSUNFXSwKLSAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIENVUkxfREVGQVVMVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKLQotICAvKiBzZXQgZGVmYXVsdCBuZWdvdGlhdGUgcHJveHkgc2VydmljZSBuYW1lICovCi0gIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0sCi0gICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBDVVJMX0RFRkFVTFRfUFJPWFlfU0VSVklDRV9OQU1FKTsKLSAgaWYocmVzdWx0KQotICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgLyogc2V0IGRlZmF1bHQgbmVnb3RpYXRlIHNlcnZpY2UgbmFtZSAqLwotICByZXN1bHQgPSBzZXRzdHJvcHQoJnNldC0+c3RyW1NUUklOR19TRVJWSUNFX05BTUVdLAotICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgQ1VSTF9ERUZBVUxUX1NFUlZJQ0VfTkFNRSk7Ci0gIGlmKHJlc3VsdCkKLSAgICByZXR1cm4gcmVzdWx0OwogI2VuZGlmCiAKICAgLyogVGhpcyBpcyBvdXIgcHJlZmVycmVkIENBIGNlcnQgYnVuZGxlL3BhdGggc2luY2UgaW5zdGFsbCB0aW1lICovCiAjaWYgZGVmaW5lZChDVVJMX0NBX0JVTkRMRSkKLSAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZzZXQtPnN0cltTVFJJTkdfU1NMX0NBRklMRV0sIChjaGFyICopIENVUkxfQ0FfQlVORExFKTsKKyAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZzZXQtPnN0cltTVFJJTkdfU1NMX0NBRklMRV0sIENVUkxfQ0FfQlVORExFKTsKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAjZW5kaWYKICNpZiBkZWZpbmVkKENVUkxfQ0FfUEFUSCkKLSAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZzZXQtPnN0cltTVFJJTkdfU1NMX0NBUEFUSF0sIChjaGFyICopIENVUkxfQ0FfUEFUSCk7CisgIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1NTTF9DQVBBVEhdLCBDVVJMX0NBX1BBVEgpOwogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgpAQCAtNjExLDEyICs2MDEsMTUgQEAKICAgc2V0LT50Y3Bfa2VlcGFsaXZlID0gRkFMU0U7CiAgIHNldC0+dGNwX2tlZXBpbnR2bCA9IDYwOwogICBzZXQtPnRjcF9rZWVwaWRsZSA9IDYwOworICBzZXQtPnRjcF9mYXN0b3BlbiA9IEZBTFNFOwogCiAgIHNldC0+c3NsX2VuYWJsZV9ucG4gPSBUUlVFOwogICBzZXQtPnNzbF9lbmFibGVfYWxwbiA9IFRSVUU7CiAKICAgc2V0LT5leHBlY3RfMTAwX3RpbWVvdXQgPSAxMDAwTDsgLyogV2FpdCBmb3IgYSBzZWNvbmQgYnkgZGVmYXVsdC4gKi8KICAgc2V0LT5zZXBfaGVhZGVycyA9IFRSVUU7IC8qIHNlcGFyYXRlZCBoZWFkZXIgbGlzdHMgYnkgZGVmYXVsdCAqLworCisgIEN1cmxfaHR0cDJfaW5pdF91c2Vyc2V0KHNldCk7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTY3NCw2ICs2NjcsOCBAQAogICAgIGRhdGEtPndpbGRjYXJkLmZpbGVsaXN0ID0gTlVMTDsKICAgICBkYXRhLT5zZXQuZm5tYXRjaCA9IFpFUk9fTlVMTDsKICAgICBkYXRhLT5zZXQubWF4Y29ubmVjdHMgPSBERUZBVUxUX0NPTk5DQUNIRV9TSVpFOyAvKiBmb3IgZWFzeSBoYW5kbGVzICovCisKKyAgICBDdXJsX2h0dHAyX2luaXRfc3RhdGUoJmRhdGEtPnN0YXRlKTsKICAgfQogCiAgIGlmKHJlc3VsdCkgewpAQCAtNzA2LDcgKzcwMSw3IEBACiAgIGNhc2UgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRToKICAgICAvKiByZW1lbWJlciB3ZSB3YW50IHRoaXMgZW5hYmxlZCAqLwogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7Ci0gICAgZGF0YS0+c2V0Lmdsb2JhbF9kbnNfY2FjaGUgPSAoMCAhPSBhcmcpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0Lmdsb2JhbF9kbnNfY2FjaGUgPSAoMCAhPSBhcmcpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNUOgogICAgIC8qIHNldCBhIGxpc3Qgb2YgY2lwaGVyIHdlIHdhbnQgdG8gdXNlIGluIHRoZSBTU0wgY29ubmVjdGlvbiAqLwpAQCAtNzQxLDMzICs3MzYsMzMgQEAKICAgICAgKiBXaGVuIHRoaXMgdHJhbnNmZXIgaXMgZG9uZSwgaXQgbXVzdCBub3QgYmUgbGVmdCB0byBiZSByZXVzZWQgYnkgYQogICAgICAqIHN1YnNlcXVlbnQgdHJhbnNmZXIgYnV0IHNoYWxsIGJlIGNsb3NlZCBpbW1lZGlhdGVseS4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQucmV1c2VfZm9yYmlkID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQucmV1c2VfZm9yYmlkID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9GUkVTSF9DT05ORUNUOgogICAgIC8qCiAgICAgICogVGhpcyB0cmFuc2ZlciBzaGFsbCBub3QgdXNlIGEgcHJldmlvdXNseSBjYWNoZWQgY29ubmVjdGlvbiBidXQKICAgICAgKiBzaG91bGQgYmUgbWFkZSB3aXRoIGEgZnJlc2ggbmV3IGNvbm5lY3QhCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnJldXNlX2ZyZXNoID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQucmV1c2VfZnJlc2ggPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1ZFUkJPU0U6CiAgICAgLyoKICAgICAgKiBWZXJib3NlIG1lYW5zIGluZm9mKCkgY2FsbHMgdGhhdCBnaXZlIGEgbG90IG9mIGluZm9ybWF0aW9uIGFib3V0CiAgICAgICogdGhlIGNvbm5lY3Rpb24gYW5kIHRyYW5zZmVyIHByb2NlZHVyZXMgYXMgd2VsbCBhcyBpbnRlcm5hbCBjaG9pY2VzLgogICAgICAqLwotICAgIGRhdGEtPnNldC52ZXJib3NlID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQudmVyYm9zZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfSEVBREVSOgogICAgIC8qCiAgICAgICogU2V0IHRvIGluY2x1ZGUgdGhlIGhlYWRlciBpbiB0aGUgZ2VuZXJhbCBkYXRhIG91dHB1dCBzdHJlYW0uCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmluY2x1ZGVfaGVhZGVyID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaW5jbHVkZV9oZWFkZXIgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX05PUFJPR1JFU1M6CiAgICAgLyoKICAgICAgKiBTaHV0IG9mZiB0aGUgaW50ZXJuYWwgc3VwcG9ydGVkIHByb2dyZXNzIG1ldGVyCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmhpZGVfcHJvZ3Jlc3MgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5oaWRlX3Byb2dyZXNzID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgaWYoZGF0YS0+c2V0LmhpZGVfcHJvZ3Jlc3MpCiAgICAgICBkYXRhLT5wcm9ncmVzcy5mbGFncyB8PSBQR1JTX0hJREU7CiAgICAgZWxzZQpAQCAtNzc3LDE0ICs3NzIsMTQgQEAKICAgICAvKgogICAgICAqIERvIG5vdCBpbmNsdWRlIHRoZSBib2R5IHBhcnQgaW4gdGhlIG91dHB1dCBkYXRhIHN0cmVhbS4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQub3B0X25vX2JvZHkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5vcHRfbm9fYm9keSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfRkFJTE9ORVJST1I6CiAgICAgLyoKICAgICAgKiBEb24ndCBvdXRwdXQgdGhlID49NDAwIGVycm9yIGNvZGUgSFRNTC1wYWdlLCBidXQgaW5zdGVhZCBvbmx5CiAgICAgICogcmV0dXJuIGVycm9yLgogICAgICAqLwotICAgIGRhdGEtPnNldC5odHRwX2ZhaWxfb25fZXJyb3IgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX2ZhaWxfb25fZXJyb3IgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1VQTE9BRDoKICAgY2FzZSBDVVJMT1BUX1BVVDoKQEAgLTc5Miw3ICs3ODcsNyBAQAogICAgICAqIFdlIHdhbnQgdG8gc2VudCBkYXRhIHRvIHRoZSByZW1vdGUgaG9zdC4gSWYgdGhpcyBpcyBIVFRQLCB0aGF0IGVxdWFscwogICAgICAqIHVzaW5nIHRoZSBQVVQgcmVxdWVzdC4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQudXBsb2FkID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQudXBsb2FkID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkgewogICAgICAgLyogSWYgdGhpcyBpcyBIVFRQLCBQVVQgaXMgd2hhdCdzIG5lZWRlZCB0byAidXBsb2FkIiAqLwogICAgICAgZGF0YS0+c2V0Lmh0dHByZXEgPSBIVFRQUkVRX1BVVDsKQEAgLTgwOCw3ICs4MDMsNyBAQAogICAgICAqIFRyeSB0byBnZXQgdGhlIGZpbGUgdGltZSBvZiB0aGUgcmVtb3RlIGRvY3VtZW50LiBUaGUgdGltZSB3aWxsCiAgICAgICogbGF0ZXIgKHBvc3NpYmx5KSBiZWNvbWUgYXZhaWxhYmxlIHVzaW5nIGN1cmxfZWFzeV9nZXRpbmZvKCkuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmdldF9maWxldGltZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmdldF9maWxldGltZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlM6CiAgICAgLyoKQEAgLTgzNiwxMSArODMxLDE4IEBACiAgICAgICogT3B0aW9uIHRoYXQgc3BlY2lmaWVzIGhvdyBxdWlja2x5IGFuIHNlcnZlciByZXNwb25zZSBtdXN0IGJlIG9idGFpbmVkCiAgICAgICogYmVmb3JlIGl0IGlzIGNvbnNpZGVyZWQgZmFpbHVyZS4gRm9yIHBpbmdwb25nIHByb3RvY29scy4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuc2VydmVyX3Jlc3BvbnNlX3RpbWVvdXQgPSB2YV9hcmcoIHBhcmFtICwgbG9uZyApICogMTAwMDsKKyAgICBkYXRhLT5zZXQuc2VydmVyX3Jlc3BvbnNlX3RpbWVvdXQgPSB2YV9hcmcocGFyYW0sIGxvbmcpICogMTAwMDsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUzoKKyAgICAvKgorICAgICAqIE9wdGlvbiB0aGF0IHByZXZlbnRzIGxpYmN1cmwgZnJvbSBzZW5kaW5nIFRGVFAgb3B0aW9uIHJlcXVlc3RzIHRvIHRoZQorICAgICAqIHNlcnZlci4KKyAgICAgKi8KKyAgICBkYXRhLT5zZXQudGZ0cF9ub19vcHRpb25zID0gdmFfYXJnKHBhcmFtLCBsb25nKSAhPSAwOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfVEZUUF9CTEtTSVpFOgogICAgIC8qCi0gICAgICogVEZUUCBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlIGJsb2NrIHNpemUgdG8gdXNlIGZvciBkYXRhIHRyYW5zbWlzc2lvbgorICAgICAqIFRGVFAgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBibG9jayBzaXplIHRvIHVzZSBmb3IgZGF0YSB0cmFuc21pc3Npb24uCiAgICAgICovCiAgICAgZGF0YS0+c2V0LnRmdHBfYmxrc2l6ZSA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAgICAgYnJlYWs7CkBAIC04NDksMTMgKzg1MSwxMyBAQAogICAgICAqIEFuIG9wdGlvbiB0aGF0IGNoYW5nZXMgdGhlIGNvbW1hbmQgdG8gb25lIHRoYXQgYXNrcyBmb3IgYSBsaXN0CiAgICAgICogb25seSwgbm8gZmlsZSBpbmZvIGRldGFpbHMuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmZ0cF9saXN0X29ubHkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5mdHBfbGlzdF9vbmx5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9BUFBFTkQ6CiAgICAgLyoKICAgICAgKiBXZSB3YW50IHRvIHVwbG9hZCBhbmQgYXBwZW5kIHRvIGFuIGV4aXN0aW5nIGZpbGUuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmZ0cF9hcHBlbmQgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5mdHBfYXBwZW5kID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRDoKICAgICAvKgpAQCAtODgzLDcgKzg4NSw3IEBACiAgICAgICoKICAgICAgKiBUcmFuc2ZlciB1c2luZyBBU0NJSSAoaW5zdGVhZCBvZiBCSU5BUlkpLgogICAgICAqLwotICAgIGRhdGEtPnNldC5wcmVmZXJfYXNjaWkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5wcmVmZXJfYXNjaWkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1RJTUVDT05ESVRJT046CiAgICAgLyoKQEAgLTkxNiw3ICs5MTgsNyBAQAogICAgIC8qCiAgICAgICogU3dpdGNoIG9uIGF1dG9tYXRpYyByZWZlcmVyIHRoYXQgZ2V0cyBzZXQgaWYgY3VybCBmb2xsb3dzIGxvY2F0aW9ucy4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaHR0cF9hdXRvX3JlZmVyZXIgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX2F1dG9fcmVmZXJlciA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkc6CkBAIC05MzIsMTggKzkzNCwxOSBAQAogICAgIGFyZ3B0ciA9IHZhX2FyZyhwYXJhbSwgY2hhciAqKTsKICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0VOQ09ESU5HXSwKICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3B0ciAmJiAhKmFyZ3B0cik/Ci0gICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIEFMTF9DT05URU5UX0VOQ09ESU5HUzogYXJncHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgQUxMX0NPTlRFTlRfRU5DT0RJTkdTOiBhcmdwdHIpOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORzoKLSAgICBkYXRhLT5zZXQuaHR0cF90cmFuc2Zlcl9lbmNvZGluZyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0Lmh0dHBfdHJhbnNmZXJfZW5jb2RpbmcgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OOgogICAgIC8qCiAgICAgICogRm9sbG93IExvY2F0aW9uOiBoZWFkZXIgaGludHMgb24gYSBIVFRQLXNlcnZlci4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaHR0cF9mb2xsb3dfbG9jYXRpb24gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX2ZvbGxvd19sb2NhdGlvbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSDoKQEAgLTk1Miw3ICs5NTUsNyBAQAogICAgICAqIGhvc3RuYW1lIGNoYW5nZWQuCiAgICAgICovCiAgICAgZGF0YS0+c2V0Lmh0dHBfZGlzYWJsZV9ob3N0bmFtZV9jaGVja19iZWZvcmVfYXV0aGVudGljYXRpb24gPQotICAgICAgKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICAgICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9NQVhSRURJUlM6CkBAIC0xMjEzLDcgKzEyMTYsNyBAQAogICAgICAqIFdlIHJ1biBtb3N0bHkgd2l0aCB0aGUgb3JpZ2luYWwgY29va2llIHNwZWMsIGFzIGhhcmRseSBhbnlvbmUgaW1wbGVtZW50cwogICAgICAqIGFueXRoaW5nIGVsc2UuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmNvb2tpZXNlc3Npb24gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5jb29raWVzZXNzaW9uID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0NPT0tJRUxJU1Q6CkBAIC0xMjkwLDcgKzEyOTMsNyBAQAogICAgICAqLwogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAjaWZuZGVmIFVTRV9OR0hUVFAyCi0gICAgaWYoYXJnID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkKKyAgICBpZihhcmcgPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikKICAgICAgIHJldHVybiBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKICNlbmRpZgogICAgIGRhdGEtPnNldC5odHRwdmVyc2lvbiA9IGFyZzsKQEAgLTEzMTIsNyArMTMxNSw3IEBACiAKICAgICAvKiB0aGUgRElHRVNUX0lFIGJpdCBpcyBvbmx5IHVzZWQgdG8gc2V0IGEgc3BlY2lhbCBtYXJrZXIsIGZvciBhbGwgdGhlCiAgICAgICAgcmVzdCB3ZSBuZWVkIHRvIGhhbmRsZSBpdCBhcyBub3JtYWwgRElHRVNUICovCi0gICAgZGF0YS0+c3RhdGUuYXV0aGhvc3QuaWVzdHlsZSA9IChhdXRoICYgQ1VSTEFVVEhfRElHRVNUX0lFKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnN0YXRlLmF1dGhob3N0Lmllc3R5bGUgPSAoYXV0aCAmIENVUkxBVVRIX0RJR0VTVF9JRSkgPyBUUlVFIDogRkFMU0U7CiAKICAgICBpZihhdXRoICYgQ1VSTEFVVEhfRElHRVNUX0lFKSB7CiAgICAgICBhdXRoIHw9IENVUkxBVVRIX0RJR0VTVDsgLyogc2V0IHN0YW5kYXJkIGRpZ2VzdCBiaXQgKi8KQEAgLTEzNzUsNyArMTM3OCw4IEBACiAgICAgLyoKICAgICAgKiBUdW5uZWwgb3BlcmF0aW9ucyB0aHJvdWdoIHRoZSBwcm94eSBpbnN0ZWFkIG9mIG5vcm1hbCBwcm94eSB1c2UKICAgICAgKi8KLSAgICBkYXRhLT5zZXQudHVubmVsX3RocnVfaHR0cHByb3h5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQudHVubmVsX3RocnVfaHR0cHByb3h5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX1BST1hZUE9SVDoKQEAgLTE0MDEsNyArMTQwNSw3IEBACiAKICAgICAvKiB0aGUgRElHRVNUX0lFIGJpdCBpcyBvbmx5IHVzZWQgdG8gc2V0IGEgc3BlY2lhbCBtYXJrZXIsIGZvciBhbGwgdGhlCiAgICAgICAgcmVzdCB3ZSBuZWVkIHRvIGhhbmRsZSBpdCBhcyBub3JtYWwgRElHRVNUICovCi0gICAgZGF0YS0+c3RhdGUuYXV0aHByb3h5Lmllc3R5bGUgPSAoYXV0aCAmIENVUkxBVVRIX0RJR0VTVF9JRSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zdGF0ZS5hdXRocHJveHkuaWVzdHlsZSA9IChhdXRoICYgQ1VSTEFVVEhfRElHRVNUX0lFKSA/IFRSVUUgOiBGQUxTRTsKIAogICAgIGlmKGF1dGggJiBDVVJMQVVUSF9ESUdFU1RfSUUpIHsKICAgICAgIGF1dGggfD0gQ1VSTEFVVEhfRElHRVNUOyAvKiBzZXQgc3RhbmRhcmQgZGlnZXN0IGJpdCAqLwpAQCAtMTQ3NiwzMiArMTQ4MCwyOCBAQAogI2VuZGlmICAgLyogQ1VSTF9ESVNBQkxFX1BST1hZICovCiAKICNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIGNhc2UgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0U6CisgIGNhc2UgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQzoKICAgICAvKgotICAgICAqIFNldCBHU1MtQVBJIHNlcnZpY2UgbmFtZQorICAgICAqIFNldCBmbGFnIGZvciBORUMgU09DSzUgc3VwcG9ydAogICAgICAqLwotICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfU09DS1M1X0dTU0FQSV9TRVJWSUNFXSwKLSAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHBhcmFtLCBjaGFyICopKTsKKyAgICBkYXRhLT5zZXQuc29ja3M1X2dzc2FwaV9uZWMgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAorICBjYXNlIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFOgogICBjYXNlIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FOgogICAgIC8qCi0gICAgICogU2V0IG5lZ290aWF0ZSBwcm94eSBzZXJ2aWNlIG5hbWUKKyAgICAgKiBTZXQgcHJveHkgYXV0aGVudGljYXRpb24gc2VydmljZSBuYW1lIGZvciBLZXJiZXJvcyA1IGFuZCBTUE5FR08KICAgICAgKi8KICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7CiAgICAgYnJlYWs7CisjZW5kaWYKIAotICBjYXNlIENVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUM6Ci0gICAgLyoKLSAgICAgKiBzZXQgZmxhZyBmb3IgbmVjIHNvY2tzNSBzdXBwb3J0Ci0gICAgICovCi0gICAgZGF0YS0+c2V0LnNvY2tzNV9nc3NhcGlfbmVjID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKLSAgICBicmVhazsKLQorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkgfHwgZGVmaW5lZChVU0VfS0VSQkVST1M1KSB8fCBcCisgICAgZGVmaW5lZChVU0VfU1BORUdPKQogICBjYXNlIENVUkxPUFRfU0VSVklDRV9OQU1FOgogICAgIC8qCi0gICAgICogU2V0IG5lZ290aWF0ZSBzZXJ2aWNlIGlkZW50aXR5CisgICAgICogU2V0IGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZSBmb3IgRElHRVNULU1ENSwgS2VyYmVyb3MgNSBhbmQgU1BORUdPCiAgICAgICovCiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOwpAQCAtMTUzNSwyMCArMTUzNSwxOSBAQAogICAgICAqLwogICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfRlRQUE9SVF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7Ci0gICAgZGF0YS0+c2V0LmZ0cF91c2VfcG9ydCA9IChOVUxMICE9IGRhdGEtPnNldC5zdHJbU1RSSU5HX0ZUUFBPUlRdKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmZ0cF91c2VfcG9ydCA9IChkYXRhLT5zZXQuc3RyW1NUUklOR19GVFBQT1JUXSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZUUF9VU0VfRVBSVDoKLSAgICBkYXRhLT5zZXQuZnRwX3VzZV9lcHJ0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX3VzZV9lcHJ0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZUUF9VU0VfRVBTVjoKLSAgICBkYXRhLT5zZXQuZnRwX3VzZV9lcHN2ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX3VzZV9lcHN2ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZUUF9VU0VfUFJFVDoKLSAgICBkYXRhLT5zZXQuZnRwX3VzZV9wcmV0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX3VzZV9wcmV0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZUUF9TU0xfQ0NDOgpAQCAtMTU2MCw3ICsxNTU5LDcgQEAKICAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBGVFBfU0tJUF9QQVNWX0lQLCB3aGljaCB3aWxsIGRpc2FibGUvZW5hYmxlIHRoZQogICAgICAqIGJ5cGFzcyBvZiB0aGUgSVAgYWRkcmVzcyBpbiBQQVNWIHJlc3BvbnNlcy4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuZnRwX3NraXBfaXAgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5mdHBfc2tpcF9pcCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9SRUFEREFUQToKQEAgLTE1NjgsNyArMTU2Nyw3IEBACiAgICAgICogRklMRSBwb2ludGVyIHRvIHJlYWQgdGhlIGZpbGUgdG8gYmUgdXBsb2FkZWQgZnJvbS4gT3IgcG9zc2libHkKICAgICAgKiB1c2VkIGFzIGFyZ3VtZW50IHRvIHRoZSByZWFkIGNhbGxiYWNrLgogICAgICAqLwotICAgIGRhdGEtPnNldC5pbiA9IHZhX2FyZyhwYXJhbSwgdm9pZCAqKTsKKyAgICBkYXRhLT5zZXQuaW5fc2V0ID0gdmFfYXJnKHBhcmFtLCB2b2lkICopOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfSU5GSUxFU0laRToKICAgICAvKgpAQCAtMTY5Niw3ICsxNjk1LDcgQEAKIAogICBjYXNlIENVUkxPUFRfWE9BVVRIMl9CRUFSRVI6CiAgICAgLyoKLSAgICAgKiBYT0FVVEgyIGJlYXJlciB0b2tlbiB0byB1c2UgaW4gdGhlIG9wZXJhdGlvbgorICAgICAqIE9BdXRoIDIuMCBiZWFyZXIgdG9rZW4gdG8gdXNlIGluIHRoZSBvcGVyYXRpb24KICAgICAgKi8KICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7CkBAIC0xODYzLDExICsxODYyLDExIEBACiAgICAgLyoKICAgICAgKiBSZWFkIGRhdGEgY2FsbGJhY2sKICAgICAgKi8KLSAgICBkYXRhLT5zZXQuZnJlYWRfZnVuYyA9IHZhX2FyZyhwYXJhbSwgY3VybF9yZWFkX2NhbGxiYWNrKTsKLSAgICBpZighZGF0YS0+c2V0LmZyZWFkX2Z1bmMpIHsKKyAgICBkYXRhLT5zZXQuZnJlYWRfZnVuY19zZXQgPSB2YV9hcmcocGFyYW0sIGN1cmxfcmVhZF9jYWxsYmFjayk7CisgICAgaWYoIWRhdGEtPnNldC5mcmVhZF9mdW5jX3NldCkgewogICAgICAgZGF0YS0+c2V0LmlzX2ZyZWFkX3NldCA9IDA7CiAgICAgICAvKiBXaGVuIHNldCB0byBOVUxMLCByZXNldCB0byBvdXIgaW50ZXJuYWwgZGVmYXVsdCBmdW5jdGlvbiAqLwotICAgICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKWZyZWFkOworICAgICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmNfc2V0ID0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZDsKICAgICB9CiAgICAgZWxzZQogICAgICAgZGF0YS0+c2V0LmlzX2ZyZWFkX3NldCA9IDE7CkBAIC0xOTY4LDcgKzE5NjcsNyBAQAogICAgIC8qCiAgICAgICogS2x1ZGd5IG9wdGlvbiB0byBlbmFibGUgQ1JMRiBjb252ZXJzaW9ucy4gU3ViamVjdCBmb3IgcmVtb3ZhbC4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuY3JsZiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmNybGYgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfSU5URVJGQUNFOgpAQCAtMTk5Nyw3ICsxOTk2LDcgQEAKICAgICAgKi8KICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0tSQl9MRVZFTF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7Ci0gICAgZGF0YS0+c2V0LmtyYiA9IChOVUxMICE9IGRhdGEtPnNldC5zdHJbU1RSSU5HX0tSQl9MRVZFTF0pP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmtyYiA9IChkYXRhLT5zZXQuc3RyW1NUUklOR19LUkJfTEVWRUxdKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OOgogICAgIC8qCkBAIC0yMDA5LDcgKzIwMDgsNyBAQAogICAgIC8qCiAgICAgICogRW5hYmxlIHBlZXIgU1NMIHZlcmlmeWluZy4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5zc2wudmVyaWZ5cGVlciA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfU1NMX1ZFUklGWUhPU1Q6CiAgICAgLyoKQEAgLTIwMjcsNyArMjAyNiw3IEBACiAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwogICAgIH0KIAotICAgIGRhdGEtPnNldC5zc2wudmVyaWZ5aG9zdCA9ICgwICE9IGFyZyk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeWhvc3QgPSAoMCAhPSBhcmcpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUzoKICAgICAvKgpAQCAtMjAzOCw3ICsyMDM3LDcgQEAKICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGRhdGEtPnNldC5zc2wudmVyaWZ5c3RhdHVzID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeXN0YXR1cyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTjoKICNpZmRlZiBoYXZlX2N1cmxzc2xfc3NsX2N0eApAQCAtMjA2OSwyMiArMjA2OCwyNiBAQAogICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGF0YS0+c2V0LnNzbC5mYWxzZXN0YXJ0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsLmZhbHNlc3RhcnQgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0NFUlRJTkZPOgogI2lmZGVmIGhhdmVfY3VybHNzbF9jZXJ0aW5mbwotICAgIGRhdGEtPnNldC5zc2wuY2VydGluZm8gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5zc2wuY2VydGluZm8gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICNlbHNlCiAgICAgcmVzdWx0ID0gQ1VSTEVfTk9UX0JVSUxUX0lOOwogI2VuZGlmCiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVk6CisjaWZkZWYgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAvKiBvbmx5IGJ5IHN1cHBvcnRlZCBiYWNrZW5kcyAqLwogICAgIC8qCiAgICAgICogU2V0IHBpbm5lZCBwdWJsaWMga2V5IGZvciBTU0wgY29ubmVjdGlvbi4KICAgICAgKiBTcGVjaWZ5IGZpbGUgbmFtZSBvZiB0aGUgcHVibGljIGtleSBpbiBERVIgZm9ybWF0LgogICAgICAqLwogICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7CisjZWxzZQorICAgIHJlc3VsdCA9IENVUkxFX05PVF9CVUlMVF9JTjsKKyNlbmRpZgogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfQ0FJTkZPOgogICAgIC8qCkBAIC0yMTM2LDcgKzIxMzksNyBAQAogICAgICAqLwogICAgIGRhdGEtPnNldC5idWZmZXJfc2l6ZSA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAKLSAgICBpZigoZGF0YS0+c2V0LmJ1ZmZlcl9zaXplPiAoQlVGU0laRSAtMSApKSB8fAorICAgIGlmKChkYXRhLT5zZXQuYnVmZmVyX3NpemU+IChCVUZTSVpFIC0xKSkgfHwKICAgICAgICAoZGF0YS0+c2V0LmJ1ZmZlcl9zaXplIDwgMSkpCiAgICAgICBkYXRhLT5zZXQuYnVmZmVyX3NpemUgPSAwOyAvKiBodWdlIGludGVybmFsIGRlZmF1bHQgKi8KIApAQCAtMjE0Nyw3ICsyMTUwLDcgQEAKICAgICAgKiBUaGUgYXBwbGljYXRpb24gYXNrcyBub3QgdG8gc2V0IGFueSBzaWduYWwoKSBvciBhbGFybSgpIGhhbmRsZXJzLAogICAgICAqIGV2ZW4gd2hlbiB1c2luZyBhIHRpbWVvdXQuCiAgICAgICovCi0gICAgZGF0YS0+c2V0Lm5vX3NpZ25hbCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0Lm5vX3NpZ25hbCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9TSEFSRToKQEAgLTIyMzUsNyArMjIzOCw4IEBACiAKICAgY2FzZSBDVVJMT1BUX1NTTF9PUFRJT05TOgogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7Ci0gICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfYmVhc3QgPSBhcmcmQ1VSTFNTTE9QVF9BTExPV19CRUFTVD9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5zc2xfZW5hYmxlX2JlYXN0ID0gISEoYXJnICYgQ1VSTFNTTE9QVF9BTExPV19CRUFTVCk7CisgICAgZGF0YS0+c2V0LnNzbF9ub19yZXZva2UgPSAhIShhcmcgJiBDVVJMU1NMT1BUX05PX1JFVk9LRSk7CiAgICAgYnJlYWs7CiAKICNlbmRpZgpAQCAtMjI2Miw3ICsyMjY2LDcgQEAKICAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBUQ1BfTk9ERUxBWSwgd2hpY2ggd2lsbCBkaXNhYmxlL2VuYWJsZSB0aGUgTmFnbGUKICAgICAgKiBhbGdvcml0aG0KICAgICAgKi8KLSAgICBkYXRhLT5zZXQudGNwX25vZGVsYXkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC50Y3Bfbm9kZWxheSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfQUNDT1VOVDoKQEAgLTIyNzEsMTQgKzIyNzUsMTQgQEAKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RIOgotICAgIGRhdGEtPnNldC5pZ25vcmVjbCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0Lmlnbm9yZWNsID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0NPTk5FQ1RfT05MWToKICAgICAvKgogICAgICAqIE5vIGRhdGEgdHJhbnNmZXIsIHNldCB1cCBjb25uZWN0aW9uIGFuZCBsZXQgYXBwbGljYXRpb24gdXNlIHRoZSBzb2NrZXQKICAgICAgKi8KLSAgICBkYXRhLT5zZXQuY29ubmVjdF9vbmx5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuY29ubmVjdF9vbmx5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSOgpAQCAtMjMzMSw3ICsyMzM1LDcgQEAKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRToKLSAgICBkYXRhLT5zZXQuc3NsLnNlc3Npb25pZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbC5zZXNzaW9uaWQgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogI2lmZGVmIFVTRV9MSUJTU0gyCkBAIC0yMzkyLDE0ICsyMzk2LDE0IEBACiAgICAgLyoKICAgICAgKiBkaXNhYmxlIGxpYmN1cmwgdHJhbnNmZXIgZW5jb2RpbmcgaXMgdXNlZAogICAgICAqLwotICAgIGRhdGEtPnNldC5odHRwX3RlX3NraXAgPSAoMCA9PSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX3RlX3NraXAgPSAoMCA9PSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HOgogICAgIC8qCiAgICAgICogcmF3IGRhdGEgcGFzc2VkIHRvIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGNvbnRlbnQgZW5jb2RpbmcgaXMgdXNlZAogICAgICAqLwotICAgIGRhdGEtPnNldC5odHRwX2NlX3NraXAgPSAoMCA9PSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX2NlX3NraXAgPSAoMCA9PSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVM6CkBAIC0yNDQxLDYgKzI0NDUsMTIgQEAKICAgICBkYXRhLT5zZXQucmVkaXJfcHJvdG9jb2xzID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKICAgICBicmVhazsKIAorICBjYXNlIENVUkxPUFRfREVGQVVMVF9QUk9UT0NPTDoKKyAgICAvKiBTZXQgdGhlIHByb3RvY29sIHRvIHVzZSB3aGVuIHRoZSBVUkwgZG9lc24ndCBpbmNsdWRlIGFueSBwcm90b2NvbCAqLworICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfREVGQVVMVF9QUk9UT0NPTF0sCisgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7CisgICAgYnJlYWs7CisKICAgY2FzZSBDVVJMT1BUX01BSUxfRlJPTToKICAgICAvKiBTZXQgdGhlIFNNVFAgbWFpbCBvcmlnaW5hdG9yICovCiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0ZST01dLApAQCAtMjU3Myw3ICsyNTgzLDcgQEAKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfV0lMRENBUkRNQVRDSDoKLSAgICBkYXRhLT5zZXQud2lsZGNhcmRtYXRjaCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LndpbGRjYXJkbWF0Y2ggPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0NIVU5LX0JHTl9GVU5DVElPTjoKICAgICBkYXRhLT5zZXQuY2h1bmtfYmduID0gdmFfYXJnKHBhcmFtLCBjdXJsX2NodW5rX2Jnbl9jYWxsYmFjayk7CkBAIC0yNjI0LDcgKzI2MzQsNyBAQAogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFOgotICAgIGRhdGEtPnNldC50Y3Bfa2VlcGFsaXZlID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQudGNwX2tlZXBhbGl2ZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfVENQX0tFRVBJRExFOgogICAgIGRhdGEtPnNldC50Y3Bfa2VlcGlkbGUgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwpAQCAtMjYzMiwxMSArMjY0MiwxOCBAQAogICBjYXNlIENVUkxPUFRfVENQX0tFRVBJTlRWTDoKICAgICBkYXRhLT5zZXQudGNwX2tlZXBpbnR2bCA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAgICAgYnJlYWs7CisgIGNhc2UgQ1VSTE9QVF9UQ1BfRkFTVE9QRU46CisjaWYgZGVmaW5lZChDT05ORUNUX0RBVEFfSURFTVBPVEVOVCkgfHwgZGVmaW5lZChNU0dfRkFTVE9QRU4pCisgICAgZGF0YS0+c2V0LnRjcF9mYXN0b3BlbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisjZWxzZQorICAgIHJlc3VsdCA9IENVUkxFX05PVF9CVUlMVF9JTjsKKyNlbmRpZgorICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfU1NMX0VOQUJMRV9OUE46Ci0gICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsX2VuYWJsZV9ucG4gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9FTkFCTEVfQUxQTjoKLSAgICBkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICNpZmRlZiBVU0VfVU5JWF9TT0NLRVRTCkBAIC0yNjQ3LDEwICsyNjY0LDM2IEBACiAjZW5kaWYKIAogICBjYXNlIENVUkxPUFRfUEFUSF9BU19JUzoKLSAgICBkYXRhLT5zZXQucGF0aF9hc19pcyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnBhdGhfYXNfaXMgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1BJUEVXQUlUOgotICAgIGRhdGEtPnNldC5waXBld2FpdCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnBpcGV3YWl0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTE9QVF9TVFJFQU1fV0VJR0hUOgorI2lmbmRlZiBVU0VfTkdIVFRQMgorICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisjZWxzZQorICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CisgICAgaWYoKGFyZz49MSkgJiYgKGFyZyA8PSAyNTYpKQorICAgICAgZGF0YS0+c2V0LnN0cmVhbV93ZWlnaHQgPSAoaW50KWFyZzsKKyAgICBicmVhazsKKyNlbmRpZgorICBjYXNlIENVUkxPUFRfU1RSRUFNX0RFUEVORFM6CisgIGNhc2UgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FOgorICB7CisjaWZuZGVmIFVTRV9OR0hUVFAyCisgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKKyNlbHNlCisgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRlcCA9IHZhX2FyZyhwYXJhbSwgc3RydWN0IFNlc3Npb25IYW5kbGUgKik7CisgICAgaWYoZGVwICYmIEdPT0RfRUFTWV9IQU5ETEUoZGVwKSkgeworICAgICAgZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX29uID0gZGVwOworICAgICAgZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX2UgPSAob3B0aW9uID09IENVUkxPUFRfU1RSRUFNX0RFUEVORFNfRSk7CisgICAgfQorICAgIGJyZWFrOworI2VuZGlmCisgIH0KKyAgY2FzZSBDVVJMT1BUX0NPTk5FQ1RfVE86CisgICAgZGF0YS0+c2V0LmNvbm5lY3RfdG8gPSB2YV9hcmcocGFyYW0sIHN0cnVjdCBjdXJsX3NsaXN0ICopOwogICAgIGJyZWFrOwogICBkZWZhdWx0OgogICAgIC8qIHVua25vd24gdGFnIGFuZCBpdHMgY29tcGFuaW9uLCBqdXN0IGlnbm9yZTogKi8KQEAgLTI2NjEsNiArMjcwNCw0NSBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCisjaWZkZWYgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORAorc3RhdGljIHZvaWQgY29ubl9yZXNldF9wb3N0cG9uZWRfZGF0YShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBudW0pCit7CisgIHN0cnVjdCBwb3N0cG9uZWRfZGF0YSAqIGNvbnN0IHBzbmQgPSAmKGNvbm4tPnBvc3Rwb25lZFtudW1dKTsKKyAgaWYocHNuZC0+YnVmZmVyKSB7CisgICAgREVCVUdBU1NFUlQocHNuZC0+YWxsb2NhdGVkX3NpemUgPiAwKTsKKyAgICBERUJVR0FTU0VSVChwc25kLT5yZWN2X3NpemUgPD0gcHNuZC0+YWxsb2NhdGVkX3NpemUpOworICAgIERFQlVHQVNTRVJUKHBzbmQtPnJlY3Zfc2l6ZSA/CisgICAgICAgICAgICAgICAgKHBzbmQtPnJlY3ZfcHJvY2Vzc2VkIDwgcHNuZC0+cmVjdl9zaXplKSA6CisgICAgICAgICAgICAgICAgKHBzbmQtPnJlY3ZfcHJvY2Vzc2VkID09IDApKTsKKyAgICBERUJVR0FTU0VSVChwc25kLT5iaW5kc29jayAhPSBDVVJMX1NPQ0tFVF9CQUQpOworICAgIGZyZWUocHNuZC0+YnVmZmVyKTsKKyAgICBwc25kLT5idWZmZXIgPSBOVUxMOworICAgIHBzbmQtPmFsbG9jYXRlZF9zaXplID0gMDsKKyAgICBwc25kLT5yZWN2X3NpemUgPSAwOworICAgIHBzbmQtPnJlY3ZfcHJvY2Vzc2VkID0gMDsKKyNpZmRlZiBERUJVR0JVSUxECisgICAgcHNuZC0+YmluZHNvY2sgPSBDVVJMX1NPQ0tFVF9CQUQ7IC8qIHVzZWQgb25seSBmb3IgREVCVUdBU1NFUlQgKi8KKyNlbmRpZiAvKiBERUJVR0JVSUxEICovCisgIH0KKyAgZWxzZSB7CisgICAgREVCVUdBU1NFUlQgKHBzbmQtPmFsbG9jYXRlZF9zaXplID09IDApOworICAgIERFQlVHQVNTRVJUIChwc25kLT5yZWN2X3NpemUgPT0gMCk7CisgICAgREVCVUdBU1NFUlQgKHBzbmQtPnJlY3ZfcHJvY2Vzc2VkID09IDApOworICAgIERFQlVHQVNTRVJUIChwc25kLT5iaW5kc29jayA9PSBDVVJMX1NPQ0tFVF9CQUQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5fcmVzZXRfYWxsX3Bvc3Rwb25lZF9kYXRhKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgY29ubl9yZXNldF9wb3N0cG9uZWRfZGF0YShjb25uLCAwKTsKKyAgY29ubl9yZXNldF9wb3N0cG9uZWRfZGF0YShjb25uLCAxKTsKK30KKyNlbHNlICAvKiAhIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQgKi8KKy8qIFVzZSAiZG8tbm90aGluZyIgbWFjcm9zIGluc3RlYWQgb2YgZnVuY3Rpb25zIHdoZW4gd29ya2Fyb3VuZCBub3QgdXNlZCAqLworI2RlZmluZSBjb25uX3Jlc2V0X3Bvc3Rwb25lZF9kYXRhKGMsbikgZG8ge30gV0hJTEVfRkFMU0UKKyNkZWZpbmUgY29ubl9yZXNldF9hbGxfcG9zdHBvbmVkX2RhdGEoYykgZG8ge30gV0hJTEVfRkFMU0UKKyNlbmRpZiAvKiAhIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQgKi8KKwogc3RhdGljIHZvaWQgY29ubl9mcmVlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKICAgaWYoIWNvbm4pCkBAIC0yNjkxLDcgKzI3NzMsNyBAQAogCiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+dXNlcik7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+cGFzc3dkKTsKLSAgQ3VybF9zYWZlZnJlZShjb25uLT54b2F1dGgyX2JlYXJlcik7CisgIEN1cmxfc2FmZWZyZWUoY29ubi0+b2F1dGhfYmVhcmVyKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5vcHRpb25zKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5wcm94eXVzZXIpOwogICBDdXJsX3NhZmVmcmVlKGNvbm4tPnByb3h5cGFzc3dkKTsKQEAgLTI3MDcsOSArMjc4OSwxMiBAQAogICBDdXJsX3NhZmVmcmVlKGNvbm4tPmFsbG9jcHRyLnJ0c3BfdHJhbnNwb3J0KTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT50cmFpbGVyKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5ob3N0LnJhd2FsbG9jKTsgLyogaG9zdCBuYW1lIGJ1ZmZlciAqLworICBDdXJsX3NhZmVmcmVlKGNvbm4tPmNvbm5fdG9faG9zdC5yYXdhbGxvYyk7IC8qIGhvc3QgbmFtZSBidWZmZXIgKi8KICAgQ3VybF9zYWZlZnJlZShjb25uLT5wcm94eS5yYXdhbGxvYyk7IC8qIHByb3h5IG5hbWUgYnVmZmVyICovCiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+bWFzdGVyX2J1ZmZlcik7CiAKKyAgY29ubl9yZXNldF9hbGxfcG9zdHBvbmVkX2RhdGEoY29ubik7CisKICAgQ3VybF9sbGlzdF9kZXN0cm95KGNvbm4tPnNlbmRfcGlwZSwgTlVMTCk7CiAgIEN1cmxfbGxpc3RfZGVzdHJveShjb25uLT5yZWN2X3BpcGUsIE5VTEwpOwogCkBAIC0yNzY0LDIzICsyODQ5LDkgQEAKICAgaW5mb2YoZGF0YSwgIkNsb3NpbmcgY29ubmVjdGlvbiAlbGRcbiIsIGNvbm4tPmNvbm5lY3Rpb25faWQpOwogICBDdXJsX2Nvbm5jYWNoZV9yZW1vdmVfY29ubihkYXRhLT5zdGF0ZS5jb25uX2NhY2hlLCBjb25uKTsKIAotI2lmIGRlZmluZWQoVVNFX0xJQklETikKLSAgaWYoY29ubi0+aG9zdC5lbmNhbGxvYykKLSAgICBpZG5fZnJlZShjb25uLT5ob3N0LmVuY2FsbG9jKTsgLyogZW5jb2RlZCBob3N0IG5hbWUgYnVmZmVyLCBtdXN0IGJlIGZyZWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggaWRuX2ZyZWUoKSBzaW5jZSB0aGlzIHdhcyBhbGxvY2F0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgbGliaWRuICovCi0gIGlmKGNvbm4tPnByb3h5LmVuY2FsbG9jKQotICAgIGlkbl9mcmVlKGNvbm4tPnByb3h5LmVuY2FsbG9jKTsgLyogZW5jb2RlZCBwcm94eSBuYW1lIGJ1ZmZlciwgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWQgd2l0aCBpZG5fZnJlZSgpIHNpbmNlIHRoaXMgd2FzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWQgYnkgbGliaWRuICovCi0jZWxpZiBkZWZpbmVkKFVTRV9XSU4zMl9JRE4pCi0gIGZyZWUoY29ubi0+aG9zdC5lbmNhbGxvYyk7IC8qIGVuY29kZWQgaG9zdCBuYW1lIGJ1ZmZlciwgbXVzdCBiZSBmcmVlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkbl9mcmVlKCkgc2luY2UgdGhpcyB3YXMgYWxsb2NhdGVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpICovCi0gIGZyZWUoY29ubi0+cHJveHkuZW5jYWxsb2MpOyAvKiBlbmNvZGVkIHByb3h5IG5hbWUgYnVmZmVyLCBtdXN0IGJlIGZyZWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGlkbl9mcmVlKCkgc2luY2UgdGhpcyB3YXMgYWxsb2NhdGVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3dpbjMyX2lkbl90b19hc2NpaSAqLwotI2VuZGlmCisgIGZyZWVfZml4ZWRfaG9zdG5hbWUoJmNvbm4tPmhvc3QpOworICBmcmVlX2ZpeGVkX2hvc3RuYW1lKCZjb25uLT5jb25uX3RvX2hvc3QpOworICBmcmVlX2ZpeGVkX2hvc3RuYW1lKCZjb25uLT5wcm94eSk7CiAKICAgQ3VybF9zc2xfY2xvc2UoY29ubiwgRklSU1RTT0NLRVQpOwogCkBAIC0yODMxLDcgKzI5MDIsNyBAQAogICAgICAgcmV0dXJuIFRSVUU7CiAKICAgICBpZihDdXJsX3BpcGVsaW5lX3dhbnRlZChoYW5kbGUtPm11bHRpLCBDVVJMUElQRV9NVUxUSVBMRVgpICYmCi0gICAgICAgKGhhbmRsZS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkpCisgICAgICAgKGhhbmRsZS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzIpKQogICAgICAgLyogYWxsb3dzIEhUVFAvMiAqLwogICAgICAgcmV0dXJuIFRSVUU7CiAgIH0KQEAgLTI4NDEsMTUgKzI5MTIsMTcgQEAKIGludCBDdXJsX3JlbW92ZUhhbmRsZUZyb21QaXBlbGluZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX2xsaXN0ICpwaXBlbGluZSkKIHsKLSAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqY3VycjsKKyAgaWYocGlwZWxpbmUpIHsKKyAgICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpjdXJyOwogCi0gIGN1cnIgPSBwaXBlbGluZS0+aGVhZDsKLSAgd2hpbGUoY3VycikgewotICAgIGlmKGN1cnItPnB0ciA9PSBoYW5kbGUpIHsKLSAgICAgIEN1cmxfbGxpc3RfcmVtb3ZlKHBpcGVsaW5lLCBjdXJyLCBOVUxMKTsKLSAgICAgIHJldHVybiAxOyAvKiB3ZSByZW1vdmVkIGEgaGFuZGxlICovCisgICAgY3VyciA9IHBpcGVsaW5lLT5oZWFkOworICAgIHdoaWxlKGN1cnIpIHsKKyAgICAgIGlmKGN1cnItPnB0ciA9PSBoYW5kbGUpIHsKKyAgICAgICAgQ3VybF9sbGlzdF9yZW1vdmUocGlwZWxpbmUsIGN1cnIsIE5VTEwpOworICAgICAgICByZXR1cm4gMTsgLyogd2UgcmVtb3ZlZCBhIGhhbmRsZSAqLworICAgICAgfQorICAgICAgY3VyciA9IGN1cnItPm5leHQ7CiAgICAgfQotICAgIGN1cnIgPSBjdXJyLT5uZXh0OwogICB9CiAKICAgcmV0dXJuIDA7CkBAIC0yOTI5LDggKzMwMDIsOCBAQAogICogUmV0dXJucyB0aGUgcG9pbnRlciB0byB0aGUgb2xkZXN0IGlkbGUgY29ubmVjdGlvbiwgb3IgTlVMTCBpZiBub25lIHdhcwogICogZm91bmQuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgY29ubmVjdGRhdGEgKgotZmluZF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQorc3RydWN0IGNvbm5lY3RkYXRhICoKK0N1cmxfb2xkZXN0X2lkbGVfY29ubmVjdGlvbihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKICAgc3RydWN0IGNvbm5jYWNoZSAqYmMgPSBkYXRhLT5zdGF0ZS5jb25uX2NhY2hlOwogICBzdHJ1Y3QgY3VybF9oYXNoX2l0ZXJhdG9yIGl0ZXI7CkBAIC0zMTA2LDE0ICszMTc5LDIwIEBACiB7CiAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY2hlY2s7CiAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY2hvc2VuID0gMDsKKyAgYm9vbCBmb3VuZFBlbmRpbmdDYW5kaWRhdGUgPSBGQUxTRTsKICAgYm9vbCBjYW5QaXBlbGluZSA9IElzUGlwZWxpbmluZ1Bvc3NpYmxlKGRhdGEsIG5lZWRsZSk7Ci0jaWZkZWYgVVNFX05UTE0KLSAgYm9vbCB3YW50TlRMTWh0dHAgPSAoKGRhdGEtPnN0YXRlLmF1dGhob3N0LndhbnQgJiBDVVJMQVVUSF9OVExNKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAoZGF0YS0+c3RhdGUuYXV0aGhvc3Qud2FudCAmIENVUkxBVVRIX05UTE1fV0IpKSAmJgotICAgIChuZWVkbGUtPmhhbmRsZXItPnByb3RvY29sICYgUFJPVE9fRkFNSUxZX0hUVFApID8gVFJVRSA6IEZBTFNFOwotI2VuZGlmCiAgIHN0cnVjdCBjb25uZWN0YnVuZGxlICpidW5kbGU7CiAKKyNpZmRlZiBVU0VfTlRMTQorICBib29sIHdhbnROVExNaHR0cCA9ICgoZGF0YS0+c3RhdGUuYXV0aGhvc3Qud2FudCAmCisgICAgICAgICAgICAgICAgICAgICAgKENVUkxBVVRIX05UTE0gfCBDVVJMQVVUSF9OVExNX1dCKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAobmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCAmIFBST1RPX0ZBTUlMWV9IVFRQKSk7CisgIGJvb2wgd2FudFByb3h5TlRMTWh0dHAgPSAobmVlZGxlLT5iaXRzLnByb3h5X3VzZXJfcGFzc3dkICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGEtPnN0YXRlLmF1dGhwcm94eS53YW50ICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChDVVJMQVVUSF9OVExNIHwgQ1VSTEFVVEhfTlRMTV9XQikpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCAmIFBST1RPX0ZBTUlMWV9IVFRQKSkpOworI2VuZGlmCisKICAgKmZvcmNlX3JldXNlID0gRkFMU0U7CiAgICp3YWl0cGlwZSA9IEZBTFNFOwogCkBAIC0zMTMxLDkgKzMyMTAsMTkgQEAKICAgICAgIG1heF9waXBlbGluZV9sZW5ndGgoZGF0YS0+bXVsdGkpOjA7CiAgICAgc2l6ZV90IGJlc3RfcGlwZV9sZW4gPSBtYXhfcGlwZV9sZW47CiAgICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqY3VycjsKKyAgICBjb25zdCBjaGFyICpob3N0bmFtZTsKIAotICAgIGluZm9mKGRhdGEsICJGb3VuZCBidW5kbGUgZm9yIGhvc3QgJXM6ICVwXG4iLAotICAgICAgICAgIG5lZWRsZS0+aG9zdC5uYW1lLCAodm9pZCAqKWJ1bmRsZSk7CisgICAgaWYobmVlZGxlLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICAgIGhvc3RuYW1lID0gbmVlZGxlLT5jb25uX3RvX2hvc3QubmFtZTsKKyAgICBlbHNlCisgICAgICBob3N0bmFtZSA9IG5lZWRsZS0+aG9zdC5uYW1lOworCisgICAgaW5mb2YoZGF0YSwgIkZvdW5kIGJ1bmRsZSBmb3IgaG9zdCAlczogJXAgWyVzXVxuIiwKKyAgICAgICAgICBob3N0bmFtZSwgKHZvaWQgKilidW5kbGUsCisgICAgICAgICAgKGJ1bmRsZS0+bXVsdGl1c2U9PSBCVU5ETEVfUElQRUxJTklORz8KKyAgICAgICAgICAgImNhbiBwaXBlbGluZSI6CisgICAgICAgICAgIChidW5kbGUtPm11bHRpdXNlPT0gQlVORExFX01VTFRJUExFWD8KKyAgICAgICAgICAgICJjYW4gbXVsdGlwbGV4Ijoic2VyaWFsbHkiKSkpOwogCiAgICAgLyogV2UgY2FuJ3QgcGlwZSBpZiB3ZSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IHRoZSBzZXJ2ZXIgKi8KICAgICBpZihjYW5QaXBlbGluZSkgewpAQCAtMzE0NywxOSArMzIzNiwyNyBAQAogICAgICAgICBpbmZvZihkYXRhLCAiU2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aS11c2UgKHlldClcbiIpOwogICAgICAgICBjYW5QaXBlbGluZSA9IEZBTFNFOwogICAgICAgfQorICAgICAgaWYoKGJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX1BJUEVMSU5JTkcpICYmCisgICAgICAgICAhQ3VybF9waXBlbGluZV93YW50ZWQoZGF0YS0+bXVsdGksIENVUkxQSVBFX0hUVFAxKSkgeworICAgICAgICAvKiBub3QgYXNrZWQgZm9yLCBzd2l0Y2ggb2ZmICovCisgICAgICAgIGluZm9mKGRhdGEsICJDb3VsZCBwaXBlbGluZSwgYnV0IG5vdCBhc2tlZCB0byFcbiIpOworICAgICAgICBjYW5QaXBlbGluZSA9IEZBTFNFOworICAgICAgfQorICAgICAgZWxzZSBpZigoYnVuZGxlLT5tdWx0aXVzZSA9PSBCVU5ETEVfTVVMVElQTEVYKSAmJgorICAgICAgICAgICAgICAhQ3VybF9waXBlbGluZV93YW50ZWQoZGF0YS0+bXVsdGksIENVUkxQSVBFX01VTFRJUExFWCkpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIkNvdWxkIG11bHRpcGxleCwgYnV0IG5vdCBhc2tlZCB0byFcbiIpOworICAgICAgICBjYW5QaXBlbGluZSA9IEZBTFNFOworICAgICAgfQogICAgIH0KIAogICAgIGN1cnIgPSBidW5kbGUtPmNvbm5fbGlzdC0+aGVhZDsKICAgICB3aGlsZShjdXJyKSB7CiAgICAgICBib29sIG1hdGNoID0gRkFMU0U7Ci0jaWYgZGVmaW5lZChVU0VfTlRMTSkKLSAgICAgIGJvb2wgY3JlZGVudGlhbHNNYXRjaCA9IEZBTFNFOwotI2VuZGlmCiAgICAgICBzaXplX3QgcGlwZUxlbjsKIAogICAgICAgLyoKLSAgICAgICAqIE5vdGUgdGhhdCBpZiB3ZSB1c2UgYSBIVFRQIHByb3h5LCB3ZSBjaGVjayBjb25uZWN0aW9ucyB0byB0aGF0Ci0gICAgICAgKiBwcm94eSBhbmQgbm90IHRvIHRoZSBhY3R1YWwgcmVtb3RlIHNlcnZlci4KKyAgICAgICAqIE5vdGUgdGhhdCBpZiB3ZSB1c2UgYSBIVFRQIHByb3h5IGluIG5vcm1hbCBtb2RlIChubyB0dW5uZWxpbmcpLCB3ZQorICAgICAgICogY2hlY2sgY29ubmVjdGlvbnMgdG8gdGhhdCBwcm94eSBhbmQgbm90IHRvIHRoZSBhY3R1YWwgcmVtb3RlIHNlcnZlci4KICAgICAgICAqLwogICAgICAgY2hlY2sgPSBjdXJyLT5wdHI7CiAgICAgICBjdXJyID0gY3Vyci0+bmV4dDsKQEAgLTMyMDUsNiArMzMwMiw4IEBACiAKICAgICAgICAgaWYoKGNoZWNrLT5zb2NrW0ZJUlNUU09DS0VUXSA9PSBDVVJMX1NPQ0tFVF9CQUQpIHx8CiAgICAgICAgICAgIGNoZWNrLT5iaXRzLmNsb3NlKSB7CisgICAgICAgICAgaWYoIWNoZWNrLT5iaXRzLmNsb3NlKQorICAgICAgICAgICAgZm91bmRQZW5kaW5nQ2FuZGlkYXRlID0gVFJVRTsKICAgICAgICAgICAvKiBEb24ndCBwaWNrIGEgY29ubmVjdGlvbiB0aGF0IGhhc24ndCBjb25uZWN0ZWQgeWV0IG9yIHRoYXQgaXMgZ29pbmcKICAgICAgICAgICAgICB0byBnZXQgY2xvc2VkLiAqLwogICAgICAgICAgIGluZm9mKGRhdGEsICJDb25uZWN0aW9uICMlbGQgaXNuJ3Qgb3BlbiBlbm91Z2gsIGNhbid0IHJldXNlXG4iLApAQCAtMzIyMyw3ICszMzIyLDggQEAKICAgICAgIGlmKChuZWVkbGUtPmhhbmRsZXItPmZsYWdzJlBST1RPUFRfU1NMKSAhPQogICAgICAgICAgKGNoZWNrLT5oYW5kbGVyLT5mbGFncyZQUk9UT1BUX1NTTCkpCiAgICAgICAgIC8qIGRvbid0IGRvIG1peGVkIFNTTCBhbmQgbm9uLVNTTCBjb25uZWN0aW9ucyAqLwotICAgICAgICBpZighKG5lZWRsZS0+aGFuZGxlci0+cHJvdG9jb2wgJiBjaGVjay0+aGFuZGxlci0+cHJvdG9jb2wpKQorICAgICAgICBpZihnZXRfcHJvdG9jb2xfZmFtaWx5KGNoZWNrLT5oYW5kbGVyLT5wcm90b2NvbCkgIT0KKyAgICAgICAgICAgbmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCB8fCAhY2hlY2stPnRsc191cGdyYWRlZCkKICAgICAgICAgICAvKiBleGNlcHQgcHJvdG9jb2xzIHRoYXQgaGF2ZSBiZWVuIHVwZ3JhZGVkIHZpYSBUTFMgKi8KICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMzIzNyw2ICszMzM3LDI1IEBACiAgICAgICAgIC8qIGRvbid0IGRvIG1peGVkIHByb3h5IGFuZCBub24tcHJveHkgY29ubmVjdGlvbnMgKi8KICAgICAgICAgY29udGludWU7CiAKKyAgICAgIGlmKG5lZWRsZS0+Yml0cy5wcm94eSAmJgorICAgICAgICAgKG5lZWRsZS0+cHJveHl0eXBlICE9IGNoZWNrLT5wcm94eXR5cGUgfHwKKyAgICAgICAgICBuZWVkbGUtPmJpdHMuaHR0cHByb3h5ICE9IGNoZWNrLT5iaXRzLmh0dHBwcm94eSB8fAorICAgICAgICAgIG5lZWRsZS0+Yml0cy50dW5uZWxfcHJveHkgIT0gY2hlY2stPmJpdHMudHVubmVsX3Byb3h5IHx8CisgICAgICAgICAgIUN1cmxfcmF3X2VxdWFsKG5lZWRsZS0+cHJveHkubmFtZSwgY2hlY2stPnByb3h5Lm5hbWUpIHx8CisgICAgICAgICAgbmVlZGxlLT5wb3J0ICE9IGNoZWNrLT5wb3J0KSkKKyAgICAgICAgLyogZG9uJ3QgbWl4IGNvbm5lY3Rpb25zIHRoYXQgdXNlIGRpZmZlcmVudCBwcm94aWVzICovCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZihuZWVkbGUtPmJpdHMuY29ubl90b19ob3N0ICE9IGNoZWNrLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICAgICAgLyogZG9uJ3QgbWl4IGNvbm5lY3Rpb25zIHRoYXQgdXNlIHRoZSAiY29ubmVjdCB0byBob3N0IiBmZWF0dXJlIGFuZAorICAgICAgICAgKiBjb25uZWN0aW9ucyB0aGF0IGRvbid0IHVzZSB0aGlzIGZlYXR1cmUgKi8KKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmKG5lZWRsZS0+Yml0cy5jb25uX3RvX3BvcnQgIT0gY2hlY2stPmJpdHMuY29ubl90b19wb3J0KQorICAgICAgICAvKiBkb24ndCBtaXggY29ubmVjdGlvbnMgdGhhdCB1c2UgdGhlICJjb25uZWN0IHRvIHBvcnQiIGZlYXR1cmUgYW5kCisgICAgICAgICAqIGNvbm5lY3Rpb25zIHRoYXQgZG9uJ3QgdXNlIHRoaXMgZmVhdHVyZSAqLworICAgICAgICBjb250aW51ZTsKKwogICAgICAgaWYoIWNhblBpcGVsaW5lICYmIGNoZWNrLT5pbnVzZSkKICAgICAgICAgLyogdGhpcyByZXF1ZXN0IGNhbid0IGJlIHBpcGVsaW5lZCBidXQgdGhlIGNoZWNrZWQgY29ubmVjdGlvbiBpcwogICAgICAgICAgICBhbHJlYWR5IGluIHVzZSBzbyB3ZSBza2lwIGl0ICovCkBAIC0zMjYyLDM3ICszMzgxLDMzIEBACiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAgIGlmKCghKG5lZWRsZS0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX0NSRURTUEVSUkVRVUVTVCkpCi0jaWZkZWYgVVNFX05UTE0KLSAgICAgICAgIHx8ICh3YW50TlRMTWh0dHAgfHwgY2hlY2stPm50bG0uc3RhdGUgIT0gTlRMTVNUQVRFX05PTkUpCi0jZW5kaWYKLSAgICAgICAgKSB7Ci0gICAgICAgIC8qIFRoaXMgcHJvdG9jb2wgcmVxdWlyZXMgY3JlZGVudGlhbHMgcGVyIGNvbm5lY3Rpb24gb3IgaXMgSFRUUCtOVExNLAorICAgICAgaWYoIShuZWVkbGUtPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9DUkVEU1BFUlJFUVVFU1QpKSB7CisgICAgICAgIC8qIFRoaXMgcHJvdG9jb2wgcmVxdWlyZXMgY3JlZGVudGlhbHMgcGVyIGNvbm5lY3Rpb24sCiAgICAgICAgICAgIHNvIHZlcmlmeSB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBzYW1lIG5hbWUgYW5kIHBhc3N3b3JkIGFzIHdlbGwgKi8KICAgICAgICAgaWYoIXN0cmVxdWFsKG5lZWRsZS0+dXNlciwgY2hlY2stPnVzZXIpIHx8CiAgICAgICAgICAgICFzdHJlcXVhbChuZWVkbGUtPnBhc3N3ZCwgY2hlY2stPnBhc3N3ZCkpIHsKICAgICAgICAgICAvKiBvbmUgb2YgdGhlbSB3YXMgZGlmZmVyZW50ICovCiAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSNpZiBkZWZpbmVkKFVTRV9OVExNKQotICAgICAgICBjcmVkZW50aWFsc01hdGNoID0gVFJVRTsKLSNlbmRpZgogICAgICAgfQogCi0gICAgICBpZighbmVlZGxlLT5iaXRzLmh0dHBwcm94eSB8fCBuZWVkbGUtPmhhbmRsZXItPmZsYWdzJlBST1RPUFRfU1NMIHx8Ci0gICAgICAgICAobmVlZGxlLT5iaXRzLmh0dHBwcm94eSAmJiBjaGVjay0+Yml0cy5odHRwcHJveHkgJiYKLSAgICAgICAgICBuZWVkbGUtPmJpdHMudHVubmVsX3Byb3h5ICYmIGNoZWNrLT5iaXRzLnR1bm5lbF9wcm94eSAmJgotICAgICAgICAgIEN1cmxfcmF3X2VxdWFsKG5lZWRsZS0+cHJveHkubmFtZSwgY2hlY2stPnByb3h5Lm5hbWUpICYmCi0gICAgICAgICAgKG5lZWRsZS0+cG9ydCA9PSBjaGVjay0+cG9ydCkpKSB7CisgICAgICBpZighbmVlZGxlLT5iaXRzLmh0dHBwcm94eSB8fCAobmVlZGxlLT5oYW5kbGVyLT5mbGFncyZQUk9UT1BUX1NTTCkgfHwKKyAgICAgICAgIChuZWVkbGUtPmJpdHMuaHR0cHByb3h5ICYmIG5lZWRsZS0+Yml0cy50dW5uZWxfcHJveHkpKSB7CiAgICAgICAgIC8qIFRoZSByZXF1ZXN0ZWQgY29ubmVjdGlvbiBkb2VzIG5vdCB1c2UgYSBIVFRQIHByb3h5IG9yIGl0IHVzZXMgU1NMIG9yCi0gICAgICAgICAgIGl0IGlzIGEgbm9uLVNTTCBwcm90b2NvbCB0dW5uZWxlZCBvdmVyIHRoZSBzYW1lIGh0dHAgcHJveHkgbmFtZSBhbmQKLSAgICAgICAgICAgcG9ydCBudW1iZXIgb3IgaXQgaXMgYSBub24tU1NMIHByb3RvY29sIHdoaWNoIGlzIGFsbG93ZWQgdG8gYmUKLSAgICAgICAgICAgdXBncmFkZWQgdmlhIFRMUyAqLwotCisgICAgICAgICAgIGl0IGlzIGEgbm9uLVNTTCBwcm90b2NvbCB0dW5uZWxlZCBvdmVyIHRoZSBzYW1lIEhUVFAgcHJveHkgbmFtZSBhbmQKKyAgICAgICAgICAgcG9ydCBudW1iZXIgKi8KICAgICAgICAgaWYoKEN1cmxfcmF3X2VxdWFsKG5lZWRsZS0+aGFuZGxlci0+c2NoZW1lLCBjaGVjay0+aGFuZGxlci0+c2NoZW1lKSB8fAotICAgICAgICAgICAgbmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCAmIGNoZWNrLT5oYW5kbGVyLT5wcm90b2NvbCkgJiYKKyAgICAgICAgICAgIChnZXRfcHJvdG9jb2xfZmFtaWx5KGNoZWNrLT5oYW5kbGVyLT5wcm90b2NvbCkgPT0KKyAgICAgICAgICAgICBuZWVkbGUtPmhhbmRsZXItPnByb3RvY29sICYmIGNoZWNrLT50bHNfdXBncmFkZWQpKSAmJgorICAgICAgICAgICAoIW5lZWRsZS0+Yml0cy5jb25uX3RvX2hvc3QgfHwgQ3VybF9yYXdfZXF1YWwoCisgICAgICAgICAgICBuZWVkbGUtPmNvbm5fdG9faG9zdC5uYW1lLCBjaGVjay0+Y29ubl90b19ob3N0Lm5hbWUpKSAmJgorICAgICAgICAgICAoIW5lZWRsZS0+Yml0cy5jb25uX3RvX3BvcnQgfHwKKyAgICAgICAgICAgICBuZWVkbGUtPmNvbm5fdG9fcG9ydCA9PSBjaGVjay0+Y29ubl90b19wb3J0KSAmJgogICAgICAgICAgICBDdXJsX3Jhd19lcXVhbChuZWVkbGUtPmhvc3QubmFtZSwgY2hlY2stPmhvc3QubmFtZSkgJiYKICAgICAgICAgICAgbmVlZGxlLT5yZW1vdGVfcG9ydCA9PSBjaGVjay0+cmVtb3RlX3BvcnQpIHsKKyAgICAgICAgICAvKiBUaGUgc2NoZW1lcyBtYXRjaCBvciB0aGUgdGhlIHByb3RvY29sIGZhbWlseSBpcyB0aGUgc2FtZSBhbmQgdGhlCisgICAgICAgICAgICAgcHJldmlvdXMgY29ubmVjdGlvbiB3YXMgVExTIHVwZ3JhZGVkLCBhbmQgdGhlIGhvc3RuYW1lIGFuZCBob3N0CisgICAgICAgICAgICAgcG9ydCBtYXRjaCAqLwogICAgICAgICAgIGlmKG5lZWRsZS0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkgewogICAgICAgICAgICAgLyogVGhpcyBpcyBhIFNTTCBjb25uZWN0aW9uIHNvIHZlcmlmeSB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBzYW1lCiAgICAgICAgICAgICAgICBTU0wgb3B0aW9ucyBhcyB3ZWxsICovCkBAIC0zMzA1LDYgKzM0MjAsNyBAQAogICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYoY2hlY2stPnNzbFtGSVJTVFNPQ0tFVF0uc3RhdGUgIT0gc3NsX2Nvbm5lY3Rpb25fY29tcGxldGUpIHsKKyAgICAgICAgICAgICAgZm91bmRQZW5kaW5nQ2FuZGlkYXRlID0gVFJVRTsKICAgICAgICAgICAgICAgREVCVUdGKGluZm9mKGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiAjJWxkIGhhcyBub3Qgc3RhcnRlZCBTU0wgY29ubmVjdCwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHJldXNlXG4iLApAQCAtMzMxNSwxNiArMzQzMSwxMCBAQAogICAgICAgICAgIG1hdGNoID0gVFJVRTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgZWxzZSB7IC8qIFRoZSByZXF1ZXN0ZWQgbmVlZGxlIGNvbm5lY3Rpb24gaXMgdXNpbmcgYSBwcm94eSwKLSAgICAgICAgICAgICAgICBpcyB0aGUgY2hlY2tlZCBvbmUgdXNpbmcgdGhlIHNhbWUgaG9zdCwgcG9ydCBhbmQgdHlwZT8gKi8KLSAgICAgICAgaWYoY2hlY2stPmJpdHMucHJveHkgJiYKLSAgICAgICAgICAgKG5lZWRsZS0+cHJveHl0eXBlID09IGNoZWNrLT5wcm94eXR5cGUpICYmCi0gICAgICAgICAgIChuZWVkbGUtPmJpdHMudHVubmVsX3Byb3h5ID09IGNoZWNrLT5iaXRzLnR1bm5lbF9wcm94eSkgJiYKLSAgICAgICAgICAgQ3VybF9yYXdfZXF1YWwobmVlZGxlLT5wcm94eS5uYW1lLCBjaGVjay0+cHJveHkubmFtZSkgJiYKLSAgICAgICAgICAgbmVlZGxlLT5wb3J0ID09IGNoZWNrLT5wb3J0KSB7Ci0gICAgICAgICAgLyogVGhpcyBpcyB0aGUgc2FtZSBwcm94eSBjb25uZWN0aW9uLCB1c2UgaXQhICovCi0gICAgICAgICAgbWF0Y2ggPSBUUlVFOwotICAgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogVGhlIHJlcXVlc3RlZCBjb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzYW1lIEhUVFAgcHJveHkgaW4gbm9ybWFsCisgICAgICAgICAgIG1vZGUgKG5vIHR1bm5lbGluZykgKi8KKyAgICAgICAgbWF0Y2ggPSBUUlVFOwogICAgICAgfQogCiAgICAgICBpZihtYXRjaCkgewpAQCAtMzMzNSwyMCArMzQ0NSw0NyBAQAogICAgICAgICAgICBwb3NzaWJsZS4gKEVzcGVjaWFsbHkgd2UgbXVzdCBub3QgcmV1c2UgdGhlIHNhbWUgY29ubmVjdGlvbiBpZgogICAgICAgICAgICBwYXJ0d2F5IHRocm91Z2ggYSBoYW5kc2hha2UhKSAqLwogICAgICAgICBpZih3YW50TlRMTWh0dHApIHsKLSAgICAgICAgICBpZihjcmVkZW50aWFsc01hdGNoICYmIGNoZWNrLT5udGxtLnN0YXRlICE9IE5UTE1TVEFURV9OT05FKSB7Ci0gICAgICAgICAgICBjaG9zZW4gPSBjaGVjazsKKyAgICAgICAgICBpZighc3RyZXF1YWwobmVlZGxlLT51c2VyLCBjaGVjay0+dXNlcikgfHwKKyAgICAgICAgICAgICAhc3RyZXF1YWwobmVlZGxlLT5wYXNzd2QsIGNoZWNrLT5wYXNzd2QpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihjaGVjay0+bnRsbS5zdGF0ZSAhPSBOVExNU1RBVEVfTk9ORSkgeworICAgICAgICAgIC8qIENvbm5lY3Rpb24gaXMgdXNpbmcgTlRMTSBhdXRoIGJ1dCB3ZSBkb24ndCB3YW50IE5UTE0gKi8KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCisgICAgICAgIC8qIFNhbWUgZm9yIFByb3h5IE5UTE0gYXV0aGVudGljYXRpb24gKi8KKyAgICAgICAgaWYod2FudFByb3h5TlRMTWh0dHApIHsKKyAgICAgICAgICAvKiBCb3RoIGNoZWNrLT5wcm94eXVzZXIgYW5kIGNoZWNrLT5wcm94eXBhc3N3ZCBjYW4gYmUgTlVMTCAqLworICAgICAgICAgIGlmKCFjaGVjay0+cHJveHl1c2VyIHx8ICFjaGVjay0+cHJveHlwYXNzd2QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIGlmKCFzdHJlcXVhbChuZWVkbGUtPnByb3h5dXNlciwgY2hlY2stPnByb3h5dXNlcikgfHwKKyAgICAgICAgICAgICAhc3RyZXF1YWwobmVlZGxlLT5wcm94eXBhc3N3ZCwgY2hlY2stPnByb3h5cGFzc3dkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoY2hlY2stPnByb3h5bnRsbS5zdGF0ZSAhPSBOVExNU1RBVEVfTk9ORSkgeworICAgICAgICAgIC8qIFByb3h5IGNvbm5lY3Rpb24gaXMgdXNpbmcgTlRMTSBhdXRoIGJ1dCB3ZSBkb24ndCB3YW50IE5UTE0gKi8KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKHdhbnROVExNaHR0cCB8fCB3YW50UHJveHlOVExNaHR0cCkgeworICAgICAgICAgIC8qIENyZWRlbnRpYWxzIGFyZSBhbHJlYWR5IGNoZWNrZWQsIHdlIGNhbiB1c2UgdGhpcyBjb25uZWN0aW9uICovCisgICAgICAgICAgY2hvc2VuID0gY2hlY2s7CisKKyAgICAgICAgICBpZigod2FudE5UTE1odHRwICYmCisgICAgICAgICAgICAgKGNoZWNrLT5udGxtLnN0YXRlICE9IE5UTE1TVEFURV9OT05FKSkgfHwKKyAgICAgICAgICAgICAgKHdhbnRQcm94eU5UTE1odHRwICYmCisgICAgICAgICAgICAgICAoY2hlY2stPnByb3h5bnRsbS5zdGF0ZSAhPSBOVExNU1RBVEVfTk9ORSkpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IHVzZSB0aGlzIGNvbm5lY3Rpb24sIG5vIG90aGVyICovCiAgICAgICAgICAgICAqZm9yY2VfcmV1c2UgPSBUUlVFOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYoY3JlZGVudGlhbHNNYXRjaCkKLSAgICAgICAgICAgIC8qIHRoaXMgaXMgYSBiYWNrdXAgY2hvaWNlICovCi0gICAgICAgICAgICBjaG9zZW4gPSBjaGVjazsKKworICAgICAgICAgIC8qIENvbnRpbnVlIGxvb2sgdXAgZm9yIGEgYmV0dGVyIGNvbm5lY3Rpb24gKi8KICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgaWYoY2FuUGlwZWxpbmUpIHsKICAgICAgICAgICAvKiBXZSBjYW4gcGlwZWxpbmUgaWYgd2Ugd2FudCB0by4gTGV0J3MgY29udGludWUgbG9va2luZyBmb3IKICAgICAgICAgICAgICB0aGUgb3B0aW1hbCBjb25uZWN0aW9uIHRvIHVzZSwgaS5lIHRoZSBzaG9ydGVzdCBwaXBlIHRoYXQgaXMgbm90CkBAIC0zNDEzLDM5ICszNTUwLDEzIEBACiAgICAgcmV0dXJuIFRSVUU7IC8qIHllcywgd2UgZm91bmQgb25lIHRvIHVzZSEgKi8KICAgfQogCi0gIHJldHVybiBGQUxTRTsgLyogbm8gbWF0Y2hpbmcgY29ubmVjdGluZyBleGlzdHMgKi8KLX0KLQotLyogTWFyayB0aGUgY29ubmVjdGlvbiBhcyAnaWRsZScsIG9yIGNsb3NlIGl0IGlmIHRoZSBjYWNoZSBpcyBmdWxsLgotICAgUmV0dXJucyBUUlVFIGlmIHRoZSBjb25uZWN0aW9uIGlzIGtlcHQsIG9yIEZBTFNFIGlmIGl0IHdhcyBjbG9zZWQuICovCi1zdGF0aWMgYm9vbAotQ29ubmVjdGlvbkRvbmUoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLXsKLSAgLyogZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzIGNhbiBiZSBuZWdhdGl2ZSwgZGVhbCB3aXRoIGl0LiAqLwotICBzaXplX3QgbWF4Y29ubmVjdHMgPQotICAgIChkYXRhLT5tdWx0aS0+bWF4Y29ubmVjdHMgPCAwKSA/IGRhdGEtPm11bHRpLT5udW1fZWFzeSAqIDQ6Ci0gICAgZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzOwotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm5fY2FuZGlkYXRlID0gTlVMTDsKLQotICAvKiBNYXJrIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gYXMgJ3VudXNlZCcgKi8KLSAgY29ubi0+aW51c2UgPSBGQUxTRTsKLQotICBpZihtYXhjb25uZWN0cyA+IDAgJiYKLSAgICAgZGF0YS0+c3RhdGUuY29ubl9jYWNoZS0+bnVtX2Nvbm5lY3Rpb25zID4gbWF4Y29ubmVjdHMpIHsKLSAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiBjYWNoZSBpcyBmdWxsLCBjbG9zaW5nIHRoZSBvbGRlc3Qgb25lLlxuIik7Ci0KLSAgICBjb25uX2NhbmRpZGF0ZSA9IGZpbmRfb2xkZXN0X2lkbGVfY29ubmVjdGlvbihkYXRhKTsKLQotICAgIGlmKGNvbm5fY2FuZGlkYXRlKSB7Ci0gICAgICAvKiBTZXQgdGhlIGNvbm5lY3Rpb24ncyBvd25lciBjb3JyZWN0bHkgKi8KLSAgICAgIGNvbm5fY2FuZGlkYXRlLT5kYXRhID0gZGF0YTsKLQotICAgICAgLyogdGhlIHdpbm5lciBnZXRzIHRoZSBob25vdXIgb2YgYmVpbmcgZGlzY29ubmVjdGVkICovCi0gICAgICAodm9pZClDdXJsX2Rpc2Nvbm5lY3QoY29ubl9jYW5kaWRhdGUsIC8qIGRlYWRfY29ubmVjdGlvbiAqLyBGQUxTRSk7Ci0gICAgfQorICBpZihmb3VuZFBlbmRpbmdDYW5kaWRhdGUgJiYgZGF0YS0+c2V0LnBpcGV3YWl0KSB7CisgICAgaW5mb2YoZGF0YSwKKyAgICAgICAgICAiRm91bmQgcGVuZGluZyBjYW5kaWRhdGUgZm9yIHJldXNlIGFuZCBDVVJMT1BUX1BJUEVXQUlUIGlzIHNldFxuIik7CisgICAgKndhaXRwaXBlID0gVFJVRTsKICAgfQogCi0gIHJldHVybiAoY29ubl9jYW5kaWRhdGUgPT0gY29ubikgPyBGQUxTRSA6IFRSVUU7CisgIHJldHVybiBGQUxTRTsgLyogbm8gbWF0Y2hpbmcgY29ubmVjdGluZyBleGlzdHMgKi8KIH0KIAogLyogYWZ0ZXIgYSBUQ1AgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgaGFzIGJlZW4gdmVyaWZpZWQsIHRoaXMgZnVuY3Rpb24gZG9lcwpAQCAtMzQ2NywxNiArMzU3OCwyNyBAQAogICBjYXNlIENVUkxQUk9YWV9TT0NLUzU6CiAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNV9IT1NUTkFNRToKICAgICByZXR1cm4gQ3VybF9TT0NLUzUoY29ubi0+cHJveHl1c2VyLCBjb25uLT5wcm94eXBhc3N3ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLCBjb25uLT5yZW1vdGVfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgPyBjb25uLT5jb25uX3RvX2hvc3QubmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPyBjb25uLT5jb25uX3RvX3BvcnQgOgorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgRklSU1RTT0NLRVQsIGNvbm4pOwogCiAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNDoKLSAgICByZXR1cm4gQ3VybF9TT0NLUzQoY29ubi0+cHJveHl1c2VyLCBjb25uLT5ob3N0Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnJlbW90ZV9wb3J0LCBGSVJTVFNPQ0tFVCwgY29ubiwgRkFMU0UpOworICAgIHJldHVybiBDdXJsX1NPQ0tTNChjb25uLT5wcm94eXVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID8gY29ubi0+Y29ubl90b19ob3N0Lm5hbWUgOgorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19wb3J0ID8gY29ubi0+Y29ubl90b19wb3J0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cmVtb3RlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgIEZJUlNUU09DS0VULCBjb25uLCBGQUxTRSk7CiAKICAgY2FzZSBDVVJMUFJPWFlfU09DS1M0QToKLSAgICByZXR1cm4gQ3VybF9TT0NLUzQoY29ubi0+cHJveHl1c2VyLCBjb25uLT5ob3N0Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnJlbW90ZV9wb3J0LCBGSVJTVFNPQ0tFVCwgY29ubiwgVFJVRSk7CisgICAgcmV0dXJuIEN1cmxfU09DS1M0KGNvbm4tPnByb3h5dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgPyBjb25uLT5jb25uX3RvX2hvc3QubmFtZSA6CisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPyBjb25uLT5jb25uX3RvX3BvcnQgOgorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgRklSU1RTT0NLRVQsIGNvbm4sIFRSVUUpOwogCiAjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX1BST1hZICovCiAgIGNhc2UgQ1VSTFBST1hZX0hUVFA6CkBAIC0zNjUxLDE3ICszNzczLDE2IEBACiAgIGlmKHJjICE9IElETkFfU1VDQ0VTUykKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgLyogV2FybmluZzogZXJyX3BvcyByZWNlaXZlcyAidGhlIGRlY29kZWQgY2hhcmFjdGVyIG9mZnNldCByYXRoZXIgdGhhbiB0aGUKKyAgICAgYnl0ZSBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nLiIgQW5kIGFzIG9mIGxpYmlkbiAxLjMyIHRoYXQgY2hhcmFjdGVyIG9mZnNldAorICAgICBpcyBmb3IgVVRGLTgsIGV2ZW4gaWYgdGhlIHBhc3NlZCBpbiBzdHJpbmcgaXMgYW5vdGhlciBsb2NhbGUuICovCiAgIHJjID0gdGxkX2NoZWNrX2x6KHVjX25hbWUsICZlcnJfcG9zLCBOVUxMKTsKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwogI2lmZGVmIEhBVkVfVExEX1NUUkVSUk9SCiAgIGlmKHJjICE9IFRMRF9TVUNDRVNTKQogICAgIHRsZF9lcnJtc2cgPSB0bGRfc3RyZXJyb3IoKFRsZF9yYylyYyk7CiAjZW5kaWYKLSAgaWYocmMgPT0gVExEX0lOVkFMSUQpCi0gICAgaW5mb2YoZGF0YSwgIldBUk5JTkc6ICVzOyBwb3MgJXUgPSBgJWMnLzB4JTAyWFxuIiwKLSAgICAgICAgICB0bGRfZXJybXNnLCBlcnJfcG9zLCB1Y19uYW1lW2Vycl9wb3NdLAotICAgICAgICAgIHVjX25hbWVbZXJyX3Bvc10gJiAyNTUpOwotICBlbHNlIGlmKHJjICE9IFRMRF9TVUNDRVNTKQorICBpZihyYyAhPSBUTERfU1VDQ0VTUykKICAgICBpbmZvZihkYXRhLCAiV0FSTklORzogVExEIGNoZWNrIGZvciAlcyBmYWlsZWQ7ICVzXG4iLAogICAgICAgICAgIHVjX25hbWUsIHRsZF9lcnJtc2cpOwogI2VuZGlmIC8qIENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MgKi8KQEAgLTM2OTgsNDkgKzM4MTksNjQgQEAKICAgICAgICB0aGVyZSdzIG5vIHVzZSBmb3IgaXQgKi8KICAgICBob3N0LT5uYW1lW2xlbi0xXT0wOwogCisgIC8qIENoZWNrIG5hbWUgZm9yIG5vbi1BU0NJSSBhbmQgY29udmVydCBob3N0bmFtZSB0byBBQ0UgZm9ybSBpZiB3ZSBjYW4gKi8KICAgaWYoIWlzX0FTQ0lJX25hbWUoaG9zdC0+bmFtZSkpIHsKICNpZmRlZiBVU0VfTElCSUROCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAqIENoZWNrIG5hbWUgZm9yIG5vbi1BU0NJSSBhbmQgY29udmVydCBob3N0bmFtZSB0byBBQ0UgZm9ybS4KLSAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gIGlmKHN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbihMSUJJRE5fUkVRVUlSRURfVkVSU0lPTikpIHsKLSAgICBjaGFyICphY2VfaG9zdG5hbWUgPSBOVUxMOwotICAgIGludCByYyA9IGlkbmFfdG9fYXNjaWlfbHooaG9zdC0+bmFtZSwgJmFjZV9ob3N0bmFtZSwgMCk7Ci0gICAgaW5mb2YgKGRhdGEsICJJbnB1dCBkb21haW4gZW5jb2RlZCBhcyBgJXMnXG4iLAotICAgICAgICAgICBzdHJpbmdwcmVwX2xvY2FsZV9jaGFyc2V0ICgpKTsKLSAgICBpZihyYyAhPSBJRE5BX1NVQ0NFU1MpCi0gICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gQUNFOyAlc1xuIiwKLSAgICAgICAgICAgIGhvc3QtPm5hbWUsIEN1cmxfaWRuX3N0cmVycm9yKGNvbm4sIHJjKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAvKiB0bGRfY2hlY2tfbmFtZSgpIGRpc3BsYXlzIGEgd2FybmluZyBpZiB0aGUgaG9zdCBuYW1lIGNvbnRhaW5zCi0gICAgICAgICAiaWxsZWdhbCIgY2hhcmFjdGVycyBmb3IgdGhpcyBUTEQgKi8KLSAgICAgICh2b2lkKXRsZF9jaGVja19uYW1lKGRhdGEsIGFjZV9ob3N0bmFtZSk7CisgICAgaWYoc3RyaW5ncHJlcF9jaGVja192ZXJzaW9uKExJQklETl9SRVFVSVJFRF9WRVJTSU9OKSkgeworICAgICAgY2hhciAqYWNlX2hvc3RuYW1lID0gTlVMTDsKIAotICAgICAgaG9zdC0+ZW5jYWxsb2MgPSBhY2VfaG9zdG5hbWU7Ci0gICAgICAvKiBjaGFuZ2UgdGhlIG5hbWUgcG9pbnRlciB0byBwb2ludCB0byB0aGUgZW5jb2RlZCBob3N0bmFtZSAqLwotICAgICAgaG9zdC0+bmFtZSA9IGhvc3QtPmVuY2FsbG9jOworICAgICAgaW50IHJjID0gaWRuYV90b19hc2NpaV9seihob3N0LT5uYW1lLCAmYWNlX2hvc3RuYW1lLCAwKTsKKyAgICAgIGluZm9mKGRhdGEsICJJbnB1dCBkb21haW4gZW5jb2RlZCBhcyBgJXMnXG4iLAorICAgICAgICAgICAgc3RyaW5ncHJlcF9sb2NhbGVfY2hhcnNldCgpKTsKKyAgICAgIGlmKHJjID09IElETkFfU1VDQ0VTUykgeworICAgICAgICAvKiB0bGRfY2hlY2tfbmFtZSgpIGRpc3BsYXlzIGEgd2FybmluZyBpZiB0aGUgaG9zdCBuYW1lIGNvbnRhaW5zCisgICAgICAgICAgICJpbGxlZ2FsIiBjaGFyYWN0ZXJzIGZvciB0aGlzIFRMRCAqLworICAgICAgICAodm9pZCl0bGRfY2hlY2tfbmFtZShkYXRhLCBhY2VfaG9zdG5hbWUpOworCisgICAgICAgIGhvc3QtPmVuY2FsbG9jID0gYWNlX2hvc3RuYW1lOworICAgICAgICAvKiBjaGFuZ2UgdGhlIG5hbWUgcG9pbnRlciB0byBwb2ludCB0byB0aGUgZW5jb2RlZCBob3N0bmFtZSAqLworICAgICAgICBob3N0LT5uYW1lID0gaG9zdC0+ZW5jYWxsb2M7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gY29udmVydCAlcyB0byBBQ0U7ICVzXG4iLCBob3N0LT5uYW1lLAorICAgICAgICAgICAgICBDdXJsX2lkbl9zdHJlcnJvcihjb25uLCByYykpOwogICAgIH0KLSAgfQogI2VsaWYgZGVmaW5lZChVU0VfV0lOMzJfSUROKQotICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgKiBDaGVjayBuYW1lIGZvciBub24tQVNDSUkgYW5kIGNvbnZlcnQgaG9zdG5hbWUgdG8gQUNFIGZvcm0uCi0gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgIGNoYXIgKmFjZV9ob3N0bmFtZSA9IE5VTEw7Ci0gICAgaW50IHJjID0gY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoaG9zdC0+bmFtZSwgJmFjZV9ob3N0bmFtZSk7Ci0gICAgaWYocmMgPT0gMCkKLSAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gY29udmVydCAlcyB0byBBQ0U7XG4iLAotICAgICAgICAgICAgaG9zdC0+bmFtZSk7Ci0gICAgZWxzZSB7CisKKyAgICBpZihjdXJsX3dpbjMyX2lkbl90b19hc2NpaShob3N0LT5uYW1lLCAmYWNlX2hvc3RuYW1lKSkgewogICAgICAgaG9zdC0+ZW5jYWxsb2MgPSBhY2VfaG9zdG5hbWU7CiAgICAgICAvKiBjaGFuZ2UgdGhlIG5hbWUgcG9pbnRlciB0byBwb2ludCB0byB0aGUgZW5jb2RlZCBob3N0bmFtZSAqLwogICAgICAgaG9zdC0+bmFtZSA9IGhvc3QtPmVuY2FsbG9jOwogICAgIH0KKyAgICBlbHNlCisgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gQUNFO1xuIiwgaG9zdC0+bmFtZSk7CiAjZWxzZQogICAgIGluZm9mKGRhdGEsICJJRE4gc3VwcG9ydCBub3QgcHJlc2VudCwgY2FuJ3QgcGFyc2UgVW5pY29kZSBkb21haW5zXG4iKTsKICNlbmRpZgogICB9CiB9CiAKKy8qCisgKiBGcmVlcyBkYXRhIGFsbG9jYXRlZCBieSBmaXhfaG9zdG5hbWUoKQorICovCitzdGF0aWMgdm9pZCBmcmVlX2ZpeGVkX2hvc3RuYW1lKHN0cnVjdCBob3N0bmFtZSAqaG9zdCkKK3sKKyNpZiBkZWZpbmVkKFVTRV9MSUJJRE4pCisgIGlmKGhvc3QtPmVuY2FsbG9jKSB7CisgICAgaWRuX2ZyZWUoaG9zdC0+ZW5jYWxsb2MpOyAvKiBtdXN0IGJlIGZyZWVkIHdpdGggaWRuX2ZyZWUoKSBzaW5jZSB0aGlzIHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGVkIGJ5IGxpYmlkbiAqLworICAgIGhvc3QtPmVuY2FsbG9jID0gTlVMTDsKKyAgfQorI2VsaWYgZGVmaW5lZChVU0VfV0lOMzJfSUROKQorICBmcmVlKGhvc3QtPmVuY2FsbG9jKTsgLyogbXVzdCBiZSBmcmVlZCB3aXRoaWRuX2ZyZWUoKSBzaW5jZSB0aGlzIHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGVkIGJ5IGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpICovCisgIGhvc3QtPmVuY2FsbG9jID0gTlVMTDsKKyNlbHNlCisgICh2b2lkKWhvc3Q7CisjZW5kaWYKK30KKwogc3RhdGljIHZvaWQgbGxpc3RfZHRvcih2b2lkICp1c2VyLCB2b2lkICplbGVtZW50KQogewogICAodm9pZCl1c2VyOwpAQCAtMzc3MCw2ICszOTA2LDEwIEBACiAgIGNvbm4tPmNvbm5lY3Rpb25faWQgPSAtMTsgICAgLyogbm8gSUQgKi8KICAgY29ubi0+cG9ydCA9IC0xOyAvKiB1bmtub3duIGF0IHRoaXMgcG9pbnQgKi8KICAgY29ubi0+cmVtb3RlX3BvcnQgPSAtMTsgLyogdW5rbm93biAqLworI2lmIGRlZmluZWQoVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCkgJiYgZGVmaW5lZChERUJVR0JVSUxEKQorICBjb25uLT5wb3N0cG9uZWRbMF0uYmluZHNvY2sgPSBDVVJMX1NPQ0tFVF9CQUQ7IC8qIG5vIGZpbGUgZGVzY3JpcHRvciAqLworICBjb25uLT5wb3N0cG9uZWRbMV0uYmluZHNvY2sgPSBDVVJMX1NPQ0tFVF9CQUQ7IC8qIG5vIGZpbGUgZGVzY3JpcHRvciAqLworI2VuZGlmIC8qIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQgJiYgREVCVUdCVUlMRCAqLwogCiAgIC8qIERlZmF1bHQgcHJvdG9jb2wtaW5kZXBlbmRlbnQgYmVoYXZpb3IgZG9lc24ndCBzdXBwb3J0IHBlcnNpc3RlbnQKICAgICAgY29ubmVjdGlvbnMsIHNvIHdlIHNldCB0aGlzIHRvIGZvcmNlLWNsb3NlLiBQcm90b2NvbHMgdGhhdCBzdXBwb3J0CkBAIC0zNzk2LDE3ICszOTM2LDE4IEBACiAgIC8qIG5vdGUgdGhhdCB0aGVzZSB0d28gcHJveHkgYml0cyBhcmUgbm93IGp1c3Qgb24gd2hhdCBsb29rcyB0byBiZQogICAgICByZXF1ZXN0ZWQsIHRoZXkgbWF5IGJlIGFsdGVyZWQgZG93biB0aGUgcm9hZCAqLwogICBjb25uLT5iaXRzLnByb3h5ID0gKGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZXSAmJgotICAgICAgICAgICAgICAgICAgICAgICpkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV0pP1RSVUU6RkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgKmRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZXSkgPyBUUlVFIDogRkFMU0U7CiAgIGNvbm4tPmJpdHMuaHR0cHByb3h5ID0gKGNvbm4tPmJpdHMucHJveHkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbm4tPnByb3h5dHlwZSA9PSBDVVJMUFJPWFlfSFRUUCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cHJveHl0eXBlID09IENVUkxQUk9YWV9IVFRQXzFfMCkpP1RSVUU6RkFMU0U7Ci0gIGNvbm4tPmJpdHMucHJveHlfdXNlcl9wYXNzd2QgPQotICAgIChOVUxMICE9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZVVNFUk5BTUVdKT9UUlVFOkZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cHJveHl0eXBlID09IENVUkxQUk9YWV9IVFRQXzFfMCkpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSA6IEZBTFNFOworICBjb25uLT5iaXRzLnByb3h5X3VzZXJfcGFzc3dkID0gKGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZVVNFUk5BTUVdKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIDogRkFMU0U7CiAgIGNvbm4tPmJpdHMudHVubmVsX3Byb3h5ID0gZGF0YS0+c2V0LnR1bm5lbF90aHJ1X2h0dHBwcm94eTsKIAogI2VuZGlmIC8qIENVUkxfRElTQUJMRV9QUk9YWSAqLwogCi0gIGNvbm4tPmJpdHMudXNlcl9wYXNzd2QgPSAoTlVMTCAhPSBkYXRhLT5zZXQuc3RyW1NUUklOR19VU0VSTkFNRV0pP1RSVUU6RkFMU0U7CisgIGNvbm4tPmJpdHMudXNlcl9wYXNzd2QgPSAoZGF0YS0+c2V0LnN0cltTVFJJTkdfVVNFUk5BTUVdKSA/IFRSVUUgOiBGQUxTRTsKICAgY29ubi0+Yml0cy5mdHBfdXNlX2Vwc3YgPSBkYXRhLT5zZXQuZnRwX3VzZV9lcHN2OwogICBjb25uLT5iaXRzLmZ0cF91c2VfZXBydCA9IGRhdGEtPnNldC5mdHBfdXNlX2VwcnQ7CiAKQEAgLTQwMjgsMjcgKzQxNjksMzAgQEAKICAgICAgIH0KIAogICAgICAgLyoKLSAgICAgICAqIFNpbmNlIHRoZXJlIHdhcyBubyBwcm90b2NvbCBwYXJ0IHNwZWNpZmllZCwgd2UgZ3Vlc3Mgd2hhdCBwcm90b2NvbCBpdAotICAgICAgICogaXMgYmFzZWQgb24gdGhlIGZpcnN0IGxldHRlcnMgb2YgdGhlIHNlcnZlciBuYW1lLgorICAgICAgICogU2luY2UgdGhlcmUgd2FzIG5vIHByb3RvY29sIHBhcnQgc3BlY2lmaWVkIGluIHRoZSBVUkwgdXNlIHRoZQorICAgICAgICogdXNlci1zcGVjaWZpZWQgZGVmYXVsdCBwcm90b2NvbC4gSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIGRlZmF1bHQgbWFrZSBhCisgICAgICAgKiBndWVzcyBieSBtYXRjaGluZyBzb21lIHByb3RvY29scyBhZ2FpbnN0IHRoZSBob3N0J3Mgb3V0ZXJtb3N0CisgICAgICAgKiBzdWItZG9tYWluIG5hbWUuIEZpbmFsbHkgaWYgdGhlcmUgd2FzIG5vIG1hdGNoIHVzZSBIVFRQLgogICAgICAgICovCiAKLSAgICAgIC8qIE5vdGU6IGlmIHlvdSBhZGQgYSBuZXcgcHJvdG9jb2wsIHBsZWFzZSB1cGRhdGUgdGhlIGxpc3QgaW4KLSAgICAgICAqIGxpYi92ZXJzaW9uLmMgdG9vISAqLwotCi0gICAgICBpZihjaGVja3ByZWZpeCgiRlRQLiIsIGNvbm4tPmhvc3QubmFtZSkpCi0gICAgICAgIHByb3RvcCA9ICJmdHAiOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiRElDVC4iLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICBwcm90b3AgPSAiRElDVCI7Ci0gICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJMREFQLiIsIGNvbm4tPmhvc3QubmFtZSkpCi0gICAgICAgIHByb3RvcCA9ICJMREFQIjsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIklNQVAuIiwgY29ubi0+aG9zdC5uYW1lKSkKLSAgICAgICAgcHJvdG9wID0gIklNQVAiOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiU01UUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICBwcm90b3AgPSAic210cCI7Ci0gICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJQT1AzLiIsIGNvbm4tPmhvc3QubmFtZSkpCi0gICAgICAgIHByb3RvcCA9ICJwb3AzIjsKLSAgICAgIGVsc2UgewotICAgICAgICBwcm90b3AgPSAiaHR0cCI7CisgICAgICBwcm90b3AgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19ERUZBVUxUX1BST1RPQ09MXTsKKyAgICAgIGlmKCFwcm90b3ApIHsKKyAgICAgICAgLyogTm90ZTogaWYgeW91IGFkZCBhIG5ldyBwcm90b2NvbCwgcGxlYXNlIHVwZGF0ZSB0aGUgbGlzdCBpbgorICAgICAgICAgKiBsaWIvdmVyc2lvbi5jIHRvbyEgKi8KKyAgICAgICAgaWYoY2hlY2twcmVmaXgoIkZUUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJmdHAiOworICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJESUNULiIsIGNvbm4tPmhvc3QubmFtZSkpCisgICAgICAgICAgcHJvdG9wID0gIkRJQ1QiOworICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJMREFQLiIsIGNvbm4tPmhvc3QubmFtZSkpCisgICAgICAgICAgcHJvdG9wID0gIkxEQVAiOworICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJJTUFQLiIsIGNvbm4tPmhvc3QubmFtZSkpCisgICAgICAgICAgcHJvdG9wID0gIklNQVAiOworICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJTTVRQLiIsIGNvbm4tPmhvc3QubmFtZSkpCisgICAgICAgICAgcHJvdG9wID0gInNtdHAiOworICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJQT1AzLiIsIGNvbm4tPmhvc3QubmFtZSkpCisgICAgICAgICAgcHJvdG9wID0gInBvcDMiOworICAgICAgICBlbHNlCisgICAgICAgICAgcHJvdG9wID0gImh0dHAiOwogICAgICAgfQogCiAgICAgICAqcHJvdF9taXNzaW5nID0gVFJVRTsgLyogbm90IGdpdmVuIGluIFVSTCAqLwpAQCAtNDI3Myw3ICs0NDE3LDcgQEAKICAgICBlbHNlCiAgICAgICBzLT5yYW5nZSA9IHN0cmR1cChkYXRhLT5zZXQuc3RyW1NUUklOR19TRVRfUkFOR0VdKTsKIAotICAgIHMtPnJhbmdlc3RyaW5nYWxsb2MgPSAocy0+cmFuZ2UpP1RSVUU6RkFMU0U7CisgICAgcy0+cmFuZ2VzdHJpbmdhbGxvYyA9IChzLT5yYW5nZSkgPyBUUlVFIDogRkFMU0U7CiAKICAgICBpZighcy0+cmFuZ2UpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKQEAgLTQzMzIsMTEgKzQ0NzYsNiBAQAogICAgICAgIHdhcyB2ZXJ5IGxpa2VseSBhbHJlYWR5IHNldCB0byB0aGUgcHJveHkgcG9ydCAqLwogICAgIGNvbm4tPnBvcnQgPSBwLT5kZWZwb3J0OwogCi0gIC8qIG9ubHkgaWYgcmVtb3RlX3BvcnQgd2FzIG5vdCBhbHJlYWR5IHBhcnNlZCBvZmYgdGhlIFVSTCB3ZSB1c2UgdGhlCi0gICAgIGRlZmF1bHQgcG9ydCBudW1iZXIgKi8KLSAgaWYoY29ubi0+cmVtb3RlX3BvcnQgPCAwKQotICAgIGNvbm4tPnJlbW90ZV9wb3J0ID0gKHVuc2lnbmVkIHNob3J0KWNvbm4tPmdpdmVuLT5kZWZwb3J0OwotCiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIApAQCAtNDYxMSw3ICs0NzUwLDcgQEAKICAgICAgIGlmKHN0cm5jbXAoIiUyNSIsIHB0ciwgMykpCiAgICAgICAgIGluZm9mKGRhdGEsICJQbGVhc2UgVVJMIGVuY29kZSAlJSBhcyAlJTI1LCBzZWUgUkZDIDY4NzQuXG4iKTsKICAgICAgIHB0cisrOwotICAgICAgLyogQWxsb3cgdW5yZXNlcmVkIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBpbiBSRkMgMzk4NiAqLworICAgICAgLyogQWxsb3cgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW4gUkZDIDM5ODYgKi8KICAgICAgIHdoaWxlKCpwdHIgJiYgKElTQUxQSEEoKnB0cikgfHwgSVNYRElHSVQoKnB0cikgfHwgKCpwdHIgPT0gJy0nKSB8fAogICAgICAgICAgICAgICAgICAgICAgKCpwdHIgPT0gJy4nKSB8fCAoKnB0ciA9PSAnXycpIHx8ICgqcHRyID09ICd+JykpKQogICAgICAgICBwdHIrKzsKQEAgLTQ2MzEsMTAgKzQ3NzAsMjQgQEAKICAgLyogR2V0IHBvcnQgbnVtYmVyIG9mZiBwcm94eS5zZXJ2ZXIuY29tOjEwODAgKi8KICAgcHJveF9wb3J0bm8gPSBzdHJjaHIocG9ydHB0ciwgJzonKTsKICAgaWYocHJveF9wb3J0bm8pIHsKKyAgICBjaGFyICplbmRwID0gTlVMTDsKKyAgICBsb25nIHBvcnQgPSAwOwogICAgICpwcm94X3BvcnRubyA9IDB4MDsgLyogY3V0IG9mZiBudW1iZXIgZnJvbSBob3N0IG5hbWUgKi8KICAgICBwcm94X3BvcnRubyArKzsKICAgICAvKiBub3cgc2V0IHRoZSBsb2NhbCBwb3J0IG51bWJlciAqLwotICAgIGNvbm4tPnBvcnQgPSBzdHJ0b2wocHJveF9wb3J0bm8sIE5VTEwsIDEwKTsKKyAgICBwb3J0ID0gc3RydG9sKHByb3hfcG9ydG5vLCAmZW5kcCwgMTApOworICAgIGlmKChlbmRwICYmICplbmRwICYmICgqZW5kcCAhPSAnLycpICYmICgqZW5kcCAhPSAnICcpKSB8fAorICAgICAgIChwb3J0IDwgMCkgfHwgKHBvcnQgPiA2NTUzNSkpIHsKKyAgICAgIC8qIG1lYW50IHRvIGRldGVjdCBmb3IgZXhhbXBsZSBpbnZhbGlkIElQdjYgbnVtZXJpY2FsIGFkZHJlc3NlcyB3aXRob3V0CisgICAgICAgICBicmFja2V0czogIjJhMDA6ZmFjMDphMDAwOjo3OjEzIi4gQWNjZXB0IGEgdHJhaWxpbmcgc2xhc2ggb25seQorICAgICAgICAgYmVjYXVzZSB3ZSB0aGVuIGFsbG93ICJVUkwgc3R5bGUiIHdpdGggdGhlIG51bWJlciBmb2xsb3dlZCBieSBhCisgICAgICAgICBzbGFzaCwgdXNlZCBpbiBjdXJsIHRlc3QgY2FzZXMgYWxyZWFkeS4gU3BhY2UgaXMgYWxzbyBhbiBhY2NlcHRhYmxlCisgICAgICAgICB0ZXJtaW5hdGluZyBzeW1ib2wuICovCisgICAgICBpbmZvZihkYXRhLCAiTm8gdmFsaWQgcG9ydCBudW1iZXIgaW4gcHJveHkgc3RyaW5nICglcylcbiIsCisgICAgICAgICAgICBwcm94X3BvcnRubyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGNvbm4tPnBvcnQgPSBwb3J0OwogICB9CiAgIGVsc2UgewogICAgIGlmKHByb3h5cHRyWzBdPT0nLycpCkBAIC00NjQ3LDcgKzQ4MDAsNyBAQAogICAgICAgIGEgc2xhc2ggc28gd2Ugc3RyaXAgZXZlcnl0aGluZyBmcm9tIHRoZSBmaXJzdCBzbGFzaCAqLwogICAgIGF0c2lnbiA9IHN0cmNocihwcm94eXB0ciwgJy8nKTsKICAgICBpZihhdHNpZ24pCi0gICAgICAqYXRzaWduID0gMHgwOyAvKiBjdXQgb2ZmIHBhdGggcGFydCBmcm9tIGhvc3QgbmFtZSAqLworICAgICAgKmF0c2lnbiA9ICdcMCc7IC8qIGN1dCBvZmYgcGF0aCBwYXJ0IGZyb20gaG9zdCBuYW1lICovCiAKICAgICBpZihkYXRhLT5zZXQucHJveHlwb3J0KQogICAgICAgLyogTm9uZSBnaXZlbiBpbiB0aGUgcHJveHkgc3RyaW5nLCB0aGVuIGdldCB0aGUgZGVmYXVsdCBvbmUgaWYgaXQgaXMKQEAgLTUwNTEsNiArNTIwNCwxMiBAQAogICAgICAgICAgdXNlIHRoZSBkZWZhdWx0IHBvcnQuIEZpcmVmb3ggYW5kIENocm9tZSBib3RoIGRvIHRoYXQuICovCiAgICAgICAqcG9ydHB0ciA9ICdcMCc7CiAgIH0KKworICAvKiBvbmx5IGlmIHJlbW90ZV9wb3J0IHdhcyBub3QgYWxyZWFkeSBwYXJzZWQgb2ZmIHRoZSBVUkwgd2UgdXNlIHRoZQorICAgICBkZWZhdWx0IHBvcnQgbnVtYmVyICovCisgIGlmKGNvbm4tPnJlbW90ZV9wb3J0IDwgMCkKKyAgICBjb25uLT5yZW1vdGVfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCljb25uLT5naXZlbi0+ZGVmcG9ydDsKKwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKQEAgLTUwOTMsNyArNTI1Miw3IEBACiAgICAgICAgICAgICBET1RfQ0hBUiAibmV0cmMgZmlsZTsgdXNpbmcgZGVmYXVsdHNcbiIsCiAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUpOwogICAgIH0KLSAgICBlbHNlIGlmKHJldCA8IDAgKSB7CisgICAgZWxzZSBpZihyZXQgPCAwKSB7CiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC01MTU2LDYgKzUzMTUsMjE0IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBQYXJzZXMgYSAiaG9zdDpwb3J0IiBzdHJpbmcgdG8gY29ubmVjdCB0by4KKyAqIFRoZSBob3N0bmFtZSBhbmQgdGhlIHBvcnQgbWF5IGJlIGVtcHR5OyBpbiB0aGlzIGNhc2UsIE5VTEwgaXMgcmV0dXJuZWQgZm9yCisgKiB0aGUgaG9zdG5hbWUgYW5kIC0xIGZvciB0aGUgcG9ydC4KKyAqLworc3RhdGljIENVUkxjb2RlIHBhcnNlX2Nvbm5lY3RfdG9faG9zdF9wb3J0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmhvc3RuYW1lX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBvcnRfcmVzdWx0KQoreworICBjaGFyICpob3N0X2R1cDsKKyAgY2hhciAqaG9zdHB0cjsKKyAgY2hhciAqaG9zdF9wb3J0bm87CisgIGNoYXIgKnBvcnRwdHI7CisgIGludCBwb3J0ID0gLTE7CisKKyAgKmhvc3RuYW1lX3Jlc3VsdCA9IE5VTEw7CisgICpwb3J0X3Jlc3VsdCA9IC0xOworCisgIGlmKCFob3N0IHx8ICEqaG9zdCkKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgaG9zdF9kdXAgPSBzdHJkdXAoaG9zdCk7CisgIGlmKCFob3N0X2R1cCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBob3N0cHRyID0gaG9zdF9kdXA7CisKKyAgLyogc3RhcnQgc2Nhbm5pbmcgZm9yIHBvcnQgbnVtYmVyIGF0IHRoaXMgcG9pbnQgKi8KKyAgcG9ydHB0ciA9IGhvc3RwdHI7CisKKyAgLyogZGV0ZWN0IGFuZCBleHRyYWN0IFJGQzY4NzQtc3R5bGUgSVB2Ni1hZGRyZXNzZXMgKi8KKyAgaWYoKmhvc3RwdHIgPT0gJ1snKSB7CisgICAgY2hhciAqcHRyID0gKytob3N0cHRyOyAvKiBhZHZhbmNlIGJleW9uZCB0aGUgaW5pdGlhbCBicmFja2V0ICovCisgICAgd2hpbGUoKnB0ciAmJiAoSVNYRElHSVQoKnB0cikgfHwgKCpwdHIgPT0gJzonKSB8fCAoKnB0ciA9PSAnLicpKSkKKyAgICAgIHB0cisrOworICAgIGlmKCpwdHIgPT0gJyUnKSB7CisgICAgICAvKiBUaGVyZSBtaWdodCBiZSBhIHpvbmUgaWRlbnRpZmllciAqLworICAgICAgaWYoc3RybmNtcCgiJTI1IiwgcHRyLCAzKSkKKyAgICAgICAgaW5mb2YoZGF0YSwgIlBsZWFzZSBVUkwgZW5jb2RlICUlIGFzICUlMjUsIHNlZSBSRkMgNjg3NC5cbiIpOworICAgICAgcHRyKys7CisgICAgICAvKiBBbGxvdyB1bnJlc2VydmVkIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBpbiBSRkMgMzk4NiAqLworICAgICAgd2hpbGUoKnB0ciAmJiAoSVNBTFBIQSgqcHRyKSB8fCBJU1hESUdJVCgqcHRyKSB8fCAoKnB0ciA9PSAnLScpIHx8CisgICAgICAgICAgICAgICAgICAgICAoKnB0ciA9PSAnLicpIHx8ICgqcHRyID09ICdfJykgfHwgKCpwdHIgPT0gJ34nKSkpCisgICAgICAgIHB0cisrOworICAgIH0KKyAgICBpZigqcHRyID09ICddJykKKyAgICAgIC8qIHllcHMsIGl0IGVuZGVkIG5pY2VseSB3aXRoIGEgYnJhY2tldCBhcyB3ZWxsICovCisgICAgICAqcHRyKysgPSAnXDAnOworICAgIGVsc2UKKyAgICAgIGluZm9mKGRhdGEsICJJbnZhbGlkIElQdjYgYWRkcmVzcyBmb3JtYXRcbiIpOworICAgIHBvcnRwdHIgPSBwdHI7CisgICAgLyogTm90ZSB0aGF0IGlmIHRoaXMgZGlkbid0IGVuZCB3aXRoIGEgYnJhY2tldCwgd2Ugc3RpbGwgYWR2YW5jZWQgdGhlCisgICAgICogaG9zdHB0ciBmaXJzdCwgYnV0IEkgY2FuJ3Qgc2VlIGFueXRoaW5nIHdyb25nIHdpdGggdGhhdCBhcyBubyBob3N0CisgICAgICogbmFtZSBub3IgYSBudW1lcmljIGNhbiBsZWdhbGx5IHN0YXJ0IHdpdGggYSBicmFja2V0LgorICAgICAqLworICB9CisKKyAgLyogR2V0IHBvcnQgbnVtYmVyIG9mZiBzZXJ2ZXIuY29tOjEwODAgKi8KKyAgaG9zdF9wb3J0bm8gPSBzdHJjaHIocG9ydHB0ciwgJzonKTsKKyAgaWYoaG9zdF9wb3J0bm8pIHsKKyAgICBjaGFyICplbmRwID0gTlVMTDsKKyAgICAqaG9zdF9wb3J0bm8gPSAnXDAnOyAvKiBjdXQgb2ZmIG51bWJlciBmcm9tIGhvc3QgbmFtZSAqLworICAgIGhvc3RfcG9ydG5vKys7CisgICAgaWYoKmhvc3RfcG9ydG5vKSB7CisgICAgICBsb25nIHBvcnRwYXJzZSA9IHN0cnRvbChob3N0X3BvcnRubywgJmVuZHAsIDEwKTsKKyAgICAgIGlmKChlbmRwICYmICplbmRwKSB8fCAocG9ydHBhcnNlIDwgMCkgfHwgKHBvcnRwYXJzZSA+IDY1NTM1KSkgeworICAgICAgICBpbmZvZihkYXRhLCAiTm8gdmFsaWQgcG9ydCBudW1iZXIgaW4gY29ubmVjdCB0byBob3N0IHN0cmluZyAoJXMpXG4iLAorICAgICAgICAgICAgICBob3N0X3BvcnRubyk7CisgICAgICAgIGhvc3RwdHIgPSBOVUxMOworICAgICAgICBwb3J0ID0gLTE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHBvcnQgPSAoaW50KXBvcnRwYXJzZTsgLyogd2Uga25vdyBpdCB3aWxsIGZpdCAqLworICAgIH0KKyAgfQorCisgIC8qIG5vdywgY2xvbmUgdGhlIGNsZWFuZWQgaG9zdCBuYW1lICovCisgIGlmKGhvc3RwdHIpIHsKKyAgICAqaG9zdG5hbWVfcmVzdWx0ID0gc3RyZHVwKGhvc3RwdHIpOworICAgIGlmKCEqaG9zdG5hbWVfcmVzdWx0KSB7CisgICAgICBmcmVlKGhvc3RfZHVwKTsKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIH0KKyAgfQorCisgICpwb3J0X3Jlc3VsdCA9IHBvcnQ7CisKKyAgZnJlZShob3N0X2R1cCk7CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKKyAqIFBhcnNlcyBvbmUgImNvbm5lY3QgdG8iIHN0cmluZyBpbiB0aGUgZm9ybToKKyAqICJIT1NUOlBPUlQ6Q09OTkVDVC1UTy1IT1NUOkNPTk5FQ1QtVE8tUE9SVCIuCisgKi8KK3N0YXRpYyBDVVJMY29kZSBwYXJzZV9jb25uZWN0X3RvX3N0cmluZyhzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29ubl90b19ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipob3N0X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBvcnRfcmVzdWx0KQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgY29uc3QgY2hhciAqcHRyID0gY29ubl90b19ob3N0OworICBpbnQgaG9zdF9tYXRjaCA9IEZBTFNFOworICBpbnQgcG9ydF9tYXRjaCA9IEZBTFNFOworCisgIGlmKCpwdHIgPT0gJzonKSB7CisgICAgLyogYW4gZW1wdHkgaG9zdG5hbWUgYWx3YXlzIG1hdGNoZXMgKi8KKyAgICBob3N0X21hdGNoID0gVFJVRTsKKyAgICBwdHIrKzsKKyAgfQorICBlbHNlIHsKKyAgICAvKiBjaGVjayB3aGV0aGVyIHRoZSBVUkwncyBob3N0bmFtZSBtYXRjaGVzICovCisgICAgc2l6ZV90IGhvc3RuYW1lX3RvX21hdGNoX2xlbjsKKyAgICBjaGFyICpob3N0bmFtZV90b19tYXRjaCA9IGFwcmludGYoIiVzJXMlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuaXB2Nl9pcCA/ICJbIiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuaXB2Nl9pcCA/ICJdIiA6ICIiKTsKKyAgICBpZighaG9zdG5hbWVfdG9fbWF0Y2gpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICBob3N0bmFtZV90b19tYXRjaF9sZW4gPSBzdHJsZW4oaG9zdG5hbWVfdG9fbWF0Y2gpOworICAgIGhvc3RfbWF0Y2ggPSBjdXJsX3N0cm5lcXVhbChwdHIsIGhvc3RuYW1lX3RvX21hdGNoLCBob3N0bmFtZV90b19tYXRjaF9sZW4pOworICAgIGZyZWUoaG9zdG5hbWVfdG9fbWF0Y2gpOworICAgIHB0ciArPSBob3N0bmFtZV90b19tYXRjaF9sZW47CisKKyAgICBob3N0X21hdGNoID0gaG9zdF9tYXRjaCAmJiAqcHRyID09ICc6JzsKKyAgICBwdHIrKzsKKyAgfQorCisgIGlmKGhvc3RfbWF0Y2gpIHsKKyAgICBpZigqcHRyID09ICc6JykgeworICAgICAgLyogYW4gZW1wdHkgcG9ydCBhbHdheXMgbWF0Y2hlcyAqLworICAgICAgcG9ydF9tYXRjaCA9IFRSVUU7CisgICAgICBwdHIrKzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBjaGVjayB3aGV0aGVyIHRoZSBVUkwncyBwb3J0IG1hdGNoZXMgKi8KKyAgICAgIGNoYXIgKnB0cl9uZXh0ID0gc3RyY2hyKHB0ciwgJzonKTsKKyAgICAgIGlmKHB0cl9uZXh0KSB7CisgICAgICAgIGNoYXIgKmVuZHAgPSBOVUxMOworICAgICAgICBsb25nIHBvcnRfdG9fbWF0Y2ggPSBzdHJ0b2wocHRyLCAmZW5kcCwgMTApOworICAgICAgICBpZigoZW5kcCA9PSBwdHJfbmV4dCkgJiYgKHBvcnRfdG9fbWF0Y2ggPT0gY29ubi0+cmVtb3RlX3BvcnQpKSB7CisgICAgICAgICAgcG9ydF9tYXRjaCA9IFRSVUU7CisgICAgICAgICAgcHRyID0gcHRyX25leHQgKyAxOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYoaG9zdF9tYXRjaCAmJiBwb3J0X21hdGNoKSB7CisgICAgLyogcGFyc2UgdGhlIGhvc3RuYW1lIGFuZCBwb3J0IHRvIGNvbm5lY3QgdG8gKi8KKyAgICByZXN1bHQgPSBwYXJzZV9jb25uZWN0X3RvX2hvc3RfcG9ydChkYXRhLCBwdHIsIGhvc3RfcmVzdWx0LCBwb3J0X3Jlc3VsdCk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogUHJvY2Vzc2VzIGFsbCBzdHJpbmdzIGluIHRoZSAiY29ubmVjdCB0byIgc2xpc3QsIGFuZCB1c2VzIHRoZSAiY29ubmVjdAorICogdG8gaG9zdCIgYW5kICJjb25uZWN0IHRvIHBvcnQiIG9mIHRoZSBmaXJzdCBzdHJpbmcgdGhhdCBtYXRjaGVzLgorICovCitzdGF0aWMgQ1VSTGNvZGUgcGFyc2VfY29ubmVjdF90b19zbGlzdChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0ICpjb25uX3RvX2hvc3QpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBjaGFyICpob3N0ID0gTlVMTDsKKyAgaW50IHBvcnQgPSAwOworCisgIHdoaWxlKGNvbm5fdG9faG9zdCAmJiAhaG9zdCkgeworICAgIHJlc3VsdCA9IHBhcnNlX2Nvbm5lY3RfdG9fc3RyaW5nKGRhdGEsIGNvbm4sIGNvbm5fdG9faG9zdC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG9zdCwgJnBvcnQpOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBpZihob3N0ICYmICpob3N0KSB7CisgICAgICBib29sIGlwdjZob3N0OworICAgICAgY29ubi0+Y29ubl90b19ob3N0LnJhd2FsbG9jID0gaG9zdDsKKyAgICAgIGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lID0gaG9zdDsKKyAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID0gVFJVRTsKKworICAgICAgaXB2Nmhvc3QgPSBzdHJjaHIoaG9zdCwgJzonKSAhPSBOVUxMOworICAgICAgaW5mb2YoZGF0YSwgIkNvbm5lY3RpbmcgdG8gaG9zdG5hbWU6ICVzJXMlc1xuIiwKKyAgICAgICAgICAgIGlwdjZob3N0ID8gIlsiIDogIiIsIGhvc3QsIGlwdjZob3N0ID8gIl0iIDogIiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIG5vICJjb25uZWN0IHRvIGhvc3QiICovCisgICAgICBjb25uLT5iaXRzLmNvbm5fdG9faG9zdCA9IEZBTFNFOworICAgICAgZnJlZShob3N0KTsKKyAgICB9CisKKyAgICBpZihwb3J0ID49IDApIHsKKyAgICAgIGNvbm4tPmNvbm5fdG9fcG9ydCA9IHBvcnQ7CisgICAgICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA9IFRSVUU7CisgICAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGluZyB0byBwb3J0OiAlZFxuIiwgcG9ydCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogbm8gImNvbm5lY3QgdG8gcG9ydCIgKi8KKyAgICAgIGNvbm4tPmJpdHMuY29ubl90b19wb3J0ID0gRkFMU0U7CisgICAgfQorCisgICAgY29ubl90b19ob3N0ID0gY29ubl90b19ob3N0LT5uZXh0OworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFJlc29sdmUgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciBvciBwcm94eQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC01MTgwLDkgKzU1NDcsNiBAQAogICAgIGludCByYzsKICAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKmhvc3RhZGRyOwogCi0gICAgLyogc2V0IGEgcG9pbnRlciB0byB0aGUgaG9zdG5hbWUgd2UgZGlzcGxheSAqLwotICAgIGZpeF9ob3N0bmFtZShkYXRhLCBjb25uLCAmY29ubi0+aG9zdCk7Ci0KICNpZmRlZiBVU0VfVU5JWF9TT0NLRVRTCiAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfVU5JWF9TT0NLRVRfUEFUSF0pIHsKICAgICAgIC8qIFVuaXggZG9tYWluIHNvY2tldHMgYXJlIGxvY2FsLiBUaGUgaG9zdCBnZXRzIGlnbm9yZWQsIGp1c3QgdXNlIHRoZQpAQCAtNTIxMCwxMiArNTU3NCwyMSBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIGlmKCFjb25uLT5wcm94eS5uYW1lIHx8ICEqY29ubi0+cHJveHkubmFtZSkgeworICAgICAgc3RydWN0IGhvc3RuYW1lICpjb25uaG9zdDsKKyAgICAgIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KQorICAgICAgICBjb25uaG9zdCA9ICZjb25uLT5jb25uX3RvX2hvc3Q7CisgICAgICBlbHNlCisgICAgICAgIGNvbm5ob3N0ID0gJmNvbm4tPmhvc3Q7CisKICAgICAgIC8qIElmIG5vdCBjb25uZWN0aW5nIHZpYSBhIHByb3h5LCBleHRyYWN0IHRoZSBwb3J0IGZyb20gdGhlIFVSTCwgaWYgaXQgaXMKICAgICAgICAqIHRoZXJlLCB0aHVzIG92ZXJyaWRpbmcgYW55IGRlZmF1bHRzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIHNldCBhYm92ZS4gKi8KLSAgICAgIGNvbm4tPnBvcnQgPSAgY29ubi0+cmVtb3RlX3BvcnQ7IC8qIGl0IGlzIHRoZSBzYW1lIHBvcnQgKi8KKyAgICAgIGlmKGNvbm4tPmJpdHMuY29ubl90b19wb3J0KQorICAgICAgICBjb25uLT5wb3J0ID0gY29ubi0+Y29ubl90b19wb3J0OworICAgICAgZWxzZQorICAgICAgICBjb25uLT5wb3J0ID0gY29ubi0+cmVtb3RlX3BvcnQ7IC8qIGl0IGlzIHRoZSBzYW1lIHBvcnQgKi8KIAogICAgICAgLyogUmVzb2x2ZSB0YXJnZXQgaG9zdCByaWdodCBvbiAqLwotICAgICAgcmMgPSBDdXJsX3Jlc29sdl90aW1lb3V0KGNvbm4sIGNvbm4tPmhvc3QubmFtZSwgKGludCljb25uLT5wb3J0LAorICAgICAgcmMgPSBDdXJsX3Jlc29sdl90aW1lb3V0KGNvbm4sIGNvbm5ob3N0LT5uYW1lLCAoaW50KWNvbm4tPnBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvc3RhZGRyLCB0aW1lb3V0X21zKTsKICAgICAgIGlmKHJjID09IENVUkxSRVNPTFZfUEVORElORykKICAgICAgICAgKmFzeW5jID0gVFJVRTsKQEAgLTUyMjQsNyArNTU5Nyw3IEBACiAgICAgICAgIHJlc3VsdCA9IENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKIAogICAgICAgZWxzZSBpZighaG9zdGFkZHIpIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkbid0IHJlc29sdmUgaG9zdCAnJXMnIiwgY29ubi0+aG9zdC5kaXNwbmFtZSk7CisgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZG4ndCByZXNvbHZlIGhvc3QgJyVzJyIsIGNvbm5ob3N0LT5kaXNwbmFtZSk7CiAgICAgICAgIHJlc3VsdCA9ICBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsKICAgICAgICAgLyogZG9uJ3QgcmV0dXJuIHlldCwgd2UgbmVlZCB0byBjbGVhbiB1cCB0aGUgdGltZW91dCBmaXJzdCAqLwogICAgICAgfQpAQCAtNTIzMiw5ICs1NjA1LDYgQEAKICAgICBlbHNlIHsKICAgICAgIC8qIFRoaXMgaXMgYSBwcm94eSB0aGF0IGhhc24ndCBiZWVuIHJlc29sdmVkIHlldC4gKi8KIAotICAgICAgLyogSUROLWZpeCB0aGUgcHJveHkgbmFtZSAqLwotICAgICAgZml4X2hvc3RuYW1lKGRhdGEsIGNvbm4sICZjb25uLT5wcm94eSk7Ci0KICAgICAgIC8qIHJlc29sdmUgcHJveHkgKi8KICAgICAgIHJjID0gQ3VybF9yZXNvbHZfdGltZW91dChjb25uLCBjb25uLT5wcm94eS5uYW1lLCAoaW50KWNvbm4tPnBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvc3RhZGRyLCB0aW1lb3V0X21zKTsKQEAgLTUyNjYsNiArNTYzNiw3IEBACiBzdGF0aWMgdm9pZCByZXVzZV9jb25uKHN0cnVjdCBjb25uZWN0ZGF0YSAqb2xkX2Nvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKKyAgZnJlZV9maXhlZF9ob3N0bmFtZSgmb2xkX2Nvbm4tPnByb3h5KTsKICAgZnJlZShvbGRfY29ubi0+cHJveHkucmF3YWxsb2MpOwogCiAgIC8qIGZyZWUgdGhlIFNTTCBjb25maWcgc3RydWN0IGZyb20gdGhpcyBjb25uZWN0aW9uIHN0cnVjdCBhcyB0aGlzIHdhcwpAQCAtNTMwMCwxMiArNTY3MSwyMiBAQAogCiAgIC8qIGhvc3QgY2FuIGNoYW5nZSwgd2hlbiBkb2luZyBrZWVwYWxpdmUgd2l0aCBhIHByb3h5IG9yIGlmIHRoZSBjYXNlIGlzCiAgICAgIGRpZmZlcmVudCB0aGlzIHRpbWUgZXRjICovCisgIGZyZWVfZml4ZWRfaG9zdG5hbWUoJmNvbm4tPmhvc3QpOworICBmcmVlX2ZpeGVkX2hvc3RuYW1lKCZjb25uLT5jb25uX3RvX2hvc3QpOwogICBDdXJsX3NhZmVmcmVlKGNvbm4tPmhvc3QucmF3YWxsb2MpOworICBDdXJsX3NhZmVmcmVlKGNvbm4tPmNvbm5fdG9faG9zdC5yYXdhbGxvYyk7CiAgIGNvbm4tPmhvc3Q9b2xkX2Nvbm4tPmhvc3Q7CisgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID0gb2xkX2Nvbm4tPmJpdHMuY29ubl90b19ob3N0OworICBjb25uLT5jb25uX3RvX2hvc3QgPSBvbGRfY29ubi0+Y29ubl90b19ob3N0OworICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA9IG9sZF9jb25uLT5iaXRzLmNvbm5fdG9fcG9ydDsKKyAgY29ubi0+Y29ubl90b19wb3J0ID0gb2xkX2Nvbm4tPmNvbm5fdG9fcG9ydDsKIAogICAvKiBwZXJzaXN0IGNvbm5lY3Rpb24gaW5mbyBpbiBzZXNzaW9uIGhhbmRsZSAqLwogICBDdXJsX3BlcnNpc3Rjb25uaW5mbyhjb25uKTsKIAorICBjb25uX3Jlc2V0X2FsbF9wb3N0cG9uZWRfZGF0YShvbGRfY29ubik7IC8qIGZyZWUgYnVmZmVycyAqLworICBjb25uX3Jlc2V0X2FsbF9wb3N0cG9uZWRfZGF0YShjb25uKTsgICAgIC8qIHJlc2V0IHVucHJvY2Vzc2VkIGRhdGEgKi8KKwogICAvKiByZS11c2UgaW5pdCAqLwogICBjb25uLT5iaXRzLnJldXNlID0gVFJVRTsgLyogeWVzLCB3ZSdyZSByZS11c2luZyBoZXJlICovCiAKQEAgLTU0NDgsNiArNTgyOSw3IEBACiAgICAgICAgd2UncmUgZ29ubmEgZm9sbG93IGEgTG9jYXRpb246IGxhdGVyIG9yLi4uIHRoZW4gd2UgbmVlZCB0aGUgcHJvdG9jb2wKICAgICAgICBwYXJ0IGFkZGVkIHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIFVSTC4gKi8KICAgICBjaGFyICpyZXVybDsKKyAgICBjaGFyICpjaF9sb3dlcjsKIAogICAgIHJldXJsID0gYXByaW50ZigiJXM6Ly8lcyIsIGNvbm4tPmhhbmRsZXItPnNjaGVtZSwgZGF0YS0+Y2hhbmdlLnVybCk7CiAKQEAgLTU0NTYsNiArNTgzOCwxMCBAQAogICAgICAgZ290byBvdXQ7CiAgICAgfQogCisgICAgLyogQ2hhbmdlIHByb3RvY29sIHByZWZpeCB0byBsb3dlci1jYXNlICovCisgICAgZm9yKGNoX2xvd2VyID0gcmV1cmw7ICpjaF9sb3dlciAhPSAnOic7IGNoX2xvd2VyKyspCisgICAgICAqY2hfbG93ZXIgPSAoY2hhcilUT0xPV0VSKCpjaF9sb3dlcik7CisKICAgICBpZihkYXRhLT5jaGFuZ2UudXJsX2FsbG9jKSB7CiAgICAgICBDdXJsX3NhZmVmcmVlKGRhdGEtPmNoYW5nZS51cmwpOwogICAgICAgZGF0YS0+Y2hhbmdlLnVybF9hbGxvYyA9IEZBTFNFOwpAQCAtNTQ4NCw4ICs1ODcwLDggQEAKICAgfQogCiAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0pIHsKLSAgICBjb25uLT54b2F1dGgyX2JlYXJlciA9IHN0cmR1cChkYXRhLT5zZXQuc3RyW1NUUklOR19CRUFSRVJdKTsKLSAgICBpZighY29ubi0+eG9hdXRoMl9iZWFyZXIpIHsKKyAgICBjb25uLT5vYXV0aF9iZWFyZXIgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSk7CisgICAgaWYoIWNvbm4tPm9hdXRoX2JlYXJlcikgewogICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU2MDUsNiArNTk5MSw0OCBAQAogICAgIGdvdG8gb3V0OwogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqIFByb2Nlc3MgdGhlICJjb25uZWN0IHRvIiBsaW5rZWQgbGlzdCBvZiBob3N0bmFtZS9wb3J0IG1hcHBpbmdzLgorICAgKiBEbyB0aGlzIGFmdGVyIHRoZSByZW1vdGUgcG9ydCBudW1iZXIgaGFzIGJlZW4gZml4ZWQgaW4gdGhlIFVSTC4KKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIHJlc3VsdCA9IHBhcnNlX2Nvbm5lY3RfdG9fc2xpc3QoZGF0YSwgY29ubiwgZGF0YS0+c2V0LmNvbm5lY3RfdG8pOworICBpZihyZXN1bHQpCisgICAgZ290byBvdXQ7CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICogSUROLWZpeCB0aGUgaG9zdG5hbWVzCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICBmaXhfaG9zdG5hbWUoZGF0YSwgY29ubiwgJmNvbm4tPmhvc3QpOworICBpZihjb25uLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICBmaXhfaG9zdG5hbWUoZGF0YSwgY29ubiwgJmNvbm4tPmNvbm5fdG9faG9zdCk7CisgIGlmKGNvbm4tPnByb3h5Lm5hbWUgJiYgKmNvbm4tPnByb3h5Lm5hbWUpCisgICAgZml4X2hvc3RuYW1lKGRhdGEsIGNvbm4sICZjb25uLT5wcm94eSk7CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICogQ2hlY2sgd2hldGhlciB0aGUgaG9zdCBhbmQgdGhlICJjb25uZWN0IHRvIGhvc3QiIGFyZSBlcXVhbC4KKyAgICogRG8gdGhpcyBhZnRlciB0aGUgaG9zdG5hbWVzIGhhdmUgYmVlbiBJRE4tZml4ZWQgLgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgJiYKKyAgICAgIEN1cmxfcmF3X2VxdWFsKGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lLCBjb25uLT5ob3N0Lm5hbWUpKSB7CisgICAgY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgPSBGQUxTRTsKKyAgfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqIENoZWNrIHdoZXRoZXIgdGhlIHBvcnQgYW5kIHRoZSAiY29ubmVjdCB0byBwb3J0IiBhcmUgZXF1YWwuCisgICAqIERvIHRoaXMgYWZ0ZXIgdGhlIHJlbW90ZSBwb3J0IG51bWJlciBoYXMgYmVlbiBmaXhlZCBpbiB0aGUgVVJMLgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgaWYoY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgJiYgY29ubi0+Y29ubl90b19wb3J0ID09IGNvbm4tPnJlbW90ZV9wb3J0KSB7CisgICAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPSBGQUxTRTsKKyAgfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqIElmIHRoZSAiY29ubmVjdCB0byIgZmVhdHVyZSBpcyB1c2VkIHdpdGggYW4gSFRUUCBwcm94eSwKKyAgICogd2Ugc2V0IHRoZSB0dW5uZWxfcHJveHkgYml0LgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgaWYoKGNvbm4tPmJpdHMuY29ubl90b19ob3N0IHx8IGNvbm4tPmJpdHMuY29ubl90b19wb3J0KSAmJgorICAgICAgY29ubi0+Yml0cy5odHRwcHJveHkpCisgICAgY29ubi0+Yml0cy50dW5uZWxfcHJveHkgPSBUUlVFOworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqIFNldHVwIGludGVybmFscyBkZXBlbmRpbmcgb24gcHJvdG9jb2wuIE5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIKICAgICogd2UgZmlndXJlZCBvdXQgd2hhdC9pZiBwcm94eSB0byB1c2UuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNTYxNyw2ICs2MDQ1LDggQEAKICAgY29ubi0+cmVjdltTRUNPTkRBUllTT0NLRVRdID0gQ3VybF9yZWN2X3BsYWluOwogICBjb25uLT5zZW5kW1NFQ09OREFSWVNPQ0tFVF0gPSBDdXJsX3NlbmRfcGxhaW47CiAKKyAgY29ubi0+Yml0cy50Y3BfZmFzdG9wZW4gPSBkYXRhLT5zZXQudGNwX2Zhc3RvcGVuOworCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKiBmaWxlOiBpcyBhIHNwZWNpYWwgY2FzZSBpbiB0aGF0IGl0IGRvZXNuJ3QgbmVlZCBhIG5ldHdvcmsgY29ubmVjdGlvbgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC01NjUxLDcgKzYwODEsNyBAQAogICAgIH0KIAogICAgIC8qIHNpbmNlIHdlIHNraXAgZG9faW5pdCgpICovCi0gICAgZG9faW5pdChjb25uKTsKKyAgICBDdXJsX2luaXRfZG8oZGF0YSwgY29ubik7CiAKICAgICBnb3RvIG91dDsKICAgfQpAQCAtNTczMiw5ICs2MTYyLDYgQEAKICAgICBjb25uID0gY29ubl90ZW1wOwogICAgICppbl9jb25uZWN0ID0gY29ubjsKIAotICAgIC8qIHNldCBhIHBvaW50ZXIgdG8gdGhlIGhvc3RuYW1lIHdlIGRpc3BsYXkgKi8KLSAgICBmaXhfaG9zdG5hbWUoZGF0YSwgY29ubiwgJmNvbm4tPmhvc3QpOwotCiAgICAgaW5mb2YoZGF0YSwgIlJlLXVzaW5nIGV4aXN0aW5nIGNvbm5lY3Rpb24hICgjJWxkKSB3aXRoICVzICVzXG4iLAogICAgICAgICAgIGNvbm4tPmNvbm5lY3Rpb25faWQsCiAgICAgICAgICAgY29ubi0+Yml0cy5wcm94eT8icHJveHkiOiJob3N0IiwKQEAgLTU3NDYsNiArNjE3MywxNSBAQAogICAgICAgIGNvbm5lY3Rpb25zIHdlIGFyZSBhbGxvd2VkIHRvIG9wZW4uICovCiAgICAgc3RydWN0IGNvbm5lY3RidW5kbGUgKmJ1bmRsZSA9IE5VTEw7CiAKKyAgICBpZihjb25uLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfQUxQTl9OUE4pIHsKKyAgICAgIC8qIFRoZSBwcm90b2NvbCB3YW50cyBpdCwgc28gc2V0IHRoZSBiaXRzIGlmIGVuYWJsZWQgaW4gdGhlIGVhc3kgaGFuZGxlCisgICAgICAgICAoZGVmYXVsdCkgKi8KKyAgICAgIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pCisgICAgICAgIGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuID0gVFJVRTsKKyAgICAgIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX25wbikKKyAgICAgICAgY29ubi0+Yml0cy50bHNfZW5hYmxlX25wbiA9IFRSVUU7CisgICAgfQorCiAgICAgaWYod2FpdHBpcGUpCiAgICAgICAvKiBUaGVyZSBpcyBhIGNvbm5lY3Rpb24gdGhhdCAqbWlnaHQqIGJlY29tZSB1c2FibGUgZm9yIHBpcGVsaW5pbmcKICAgICAgICAgICJzb29uIiwgYW5kIHdlIHdhaXQgZm9yIHRoYXQgKi8KQEAgLTU3NzgsNyArNjIxNCw3IEBACiAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm5fY2FuZGlkYXRlOwogCiAgICAgICAvKiBUaGUgY2FjaGUgaXMgZnVsbC4gTGV0J3Mgc2VlIGlmIHdlIGNhbiBraWxsIGEgY29ubmVjdGlvbi4gKi8KLSAgICAgIGNvbm5fY2FuZGlkYXRlID0gZmluZF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKGRhdGEpOworICAgICAgY29ubl9jYW5kaWRhdGUgPSBDdXJsX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oZGF0YSk7CiAKICAgICAgIGlmKGNvbm5fY2FuZGlkYXRlKSB7CiAgICAgICAgIC8qIFNldCB0aGUgY29ubmVjdGlvbidzIG93bmVyIGNvcnJlY3RseSwgdGhlbiBraWxsIGl0ICovCkBAIC01ODE2LDEyICs2MjUyLDE0IEBACiAgICAgICAgZGF0YS0+c3RhdGUuYXV0aGhvc3QuZG9uZSkgewogICAgICAgaW5mb2YoZGF0YSwgIk5UTE0gcGlja2VkIEFORCBhdXRoIGRvbmUgc2V0LCBjbGVhciBwaWNrZWQhXG4iKTsKICAgICAgIGRhdGEtPnN0YXRlLmF1dGhob3N0LnBpY2tlZCA9IENVUkxBVVRIX05PTkU7CisgICAgICBkYXRhLT5zdGF0ZS5hdXRoaG9zdC5kb25lID0gRkFMU0U7CiAgICAgfQogCiAgICAgaWYoKGRhdGEtPnN0YXRlLmF1dGhwcm94eS5waWNrZWQgJiAoQ1VSTEFVVEhfTlRMTSB8IENVUkxBVVRIX05UTE1fV0IpKSAmJgogICAgICAgIGRhdGEtPnN0YXRlLmF1dGhwcm94eS5kb25lKSB7CiAgICAgICBpbmZvZihkYXRhLCAiTlRMTS1wcm94eSBwaWNrZWQgQU5EIGF1dGggZG9uZSBzZXQsIGNsZWFyIHBpY2tlZCFcbiIpOwogICAgICAgZGF0YS0+c3RhdGUuYXV0aHByb3h5LnBpY2tlZCA9IENVUkxBVVRIX05PTkU7CisgICAgICBkYXRhLT5zdGF0ZS5hdXRocHJveHkuZG9uZSA9IEZBTFNFOwogICAgIH0KICNlbmRpZgogICB9CkBAIC01ODMwLDcgKzYyNjgsNyBAQAogICBjb25uLT5pbnVzZSA9IFRSVUU7CiAKICAgLyogU2V0dXAgYW5kIGluaXQgc3R1ZmYgYmVmb3JlIERPIHN0YXJ0cywgaW4gcHJlcGFyaW5nIGZvciB0aGUgdHJhbnNmZXIuICovCi0gIGRvX2luaXQoY29ubik7CisgIEN1cmxfaW5pdF9kbyhkYXRhLCBjb25uKTsKIAogICAvKgogICAgKiBTZXR1cCB3aGF0ZXZlciBuZWNlc3NhcnkgZm9yIGEgcmVzdW1lZCB0cmFuc2ZlcgpAQCAtNTk4OCwxNDQgKzY0MjYsMjUgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1VSTGNvZGUgQ3VybF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqKmNvbm5wLAotICAgICAgICAgICAgICAgICAgIENVUkxjb2RlIHN0YXR1cywgIC8qIGFuIGVycm9yIGlmIHRoaXMgaXMgY2FsbGVkIGFmdGVyIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Igd2FzIGRldGVjdGVkICovCi0gICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtYXR1cmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdDsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uOwotICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YTsKLQotICBERUJVR0FTU0VSVCgqY29ubnApOwotCi0gIGNvbm4gPSAqY29ubnA7Ci0gIGRhdGEgPSBjb25uLT5kYXRhOwotCi0gIERFQlVHRihpbmZvZihkYXRhLCAiQ3VybF9kb25lXG4iKSk7Ci0KLSAgaWYoZGF0YS0+c3RhdGUuZG9uZSkKLSAgICAvKiBTdG9wIGlmIEN1cmxfZG9uZSgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkICovCi0gICAgcmV0dXJuIENVUkxFX09LOwotCi0gIEN1cmxfZ2V0b2ZmX2FsbF9waXBlbGluZXMoZGF0YSwgY29ubik7Ci0KLSAgLyogQ2xlYW51cCBwb3NzaWJsZSByZWRpcmVjdCBqdW5rICovCi0gIGZyZWUoZGF0YS0+cmVxLm5ld3VybCk7Ci0gIGRhdGEtPnJlcS5uZXd1cmwgPSBOVUxMOwotICBmcmVlKGRhdGEtPnJlcS5sb2NhdGlvbik7Ci0gIGRhdGEtPnJlcS5sb2NhdGlvbiA9IE5VTEw7Ci0KLSAgc3dpdGNoKHN0YXR1cykgewotICBjYXNlIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s6Ci0gIGNhc2UgQ1VSTEVfUkVBRF9FUlJPUjoKLSAgY2FzZSBDVVJMRV9XUklURV9FUlJPUjoKLSAgICAvKiBXaGVuIHdlJ3JlIGFib3J0ZWQgZHVlIHRvIGEgY2FsbGJhY2sgcmV0dXJuIGNvZGUgaXQgYmFzaWNhbGx5IGhhdmUgdG8KLSAgICAgICBiZSBjb3VudGVkIGFzIHByZW1hdHVyZSBhcyB0aGVyZSBpcyB0cm91YmxlIGFoZWFkIGlmIHdlIGRvbid0LiBXZSBoYXZlCi0gICAgICAgbWFueSBjYWxsYmFja3MgYW5kIHByb3RvY29scyB3b3JrIGRpZmZlcmVudGx5LCB3ZSBjb3VsZCBwb3RlbnRpYWxseSBkbwotICAgICAgIHRoaXMgbW9yZSBmaW5lLWdyYWluZWQgaW4gdGhlIGZ1dHVyZS4gKi8KLSAgICBwcmVtYXR1cmUgPSBUUlVFOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0KLSAgLyogdGhpcyBjYWxscyB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgZnVuY3Rpb24gcG9pbnRlciBwcmV2aW91c2x5IHNldCAqLwotICBpZihjb25uLT5oYW5kbGVyLT5kb25lKQotICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvbmUoY29ubiwgc3RhdHVzLCBwcmVtYXR1cmUpOwotICBlbHNlCi0gICAgcmVzdWx0ID0gc3RhdHVzOwotCi0gIGlmKCFyZXN1bHQgJiYgQ3VybF9wZ3JzRG9uZShjb25uKSkKLSAgICByZXN1bHQgPSBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOwotCi0gIGlmKChjb25uLT5zZW5kX3BpcGUtPnNpemUgKyBjb25uLT5yZWN2X3BpcGUtPnNpemUgIT0gMCAmJgotICAgICAgIWRhdGEtPnNldC5yZXVzZV9mb3JiaWQgJiYKLSAgICAgICFjb25uLT5iaXRzLmNsb3NlKSkgewotICAgIC8qIFN0b3AgaWYgcGlwZWxpbmUgaXMgbm90IGVtcHR5IGFuZCB3ZSBkbyBub3QgaGF2ZSB0byBjbG9zZQotICAgICAgIGNvbm5lY3Rpb24uICovCi0gICAgREVCVUdGKGluZm9mKGRhdGEsICJDb25uZWN0aW9uIHN0aWxsIGluIHVzZSwgbm8gbW9yZSBDdXJsX2RvbmUgbm93IVxuIikpOwotICAgIHJldHVybiBDVVJMRV9PSzsKLSAgfQotCi0gIGRhdGEtPnN0YXRlLmRvbmUgPSBUUlVFOyAvKiBjYWxsZWQganVzdCBub3chICovCi0gIEN1cmxfcmVzb2x2ZXJfY2FuY2VsKGNvbm4pOwotCi0gIGlmKGNvbm4tPmRuc19lbnRyeSkgewotICAgIEN1cmxfcmVzb2x2X3VubG9jayhkYXRhLCBjb25uLT5kbnNfZW50cnkpOyAvKiBkb25lIHdpdGggdGhpcyAqLwotICAgIGNvbm4tPmRuc19lbnRyeSA9IE5VTEw7Ci0gIH0KLQotICAvKiBpZiB0aGUgdHJhbnNmZXIgd2FzIGNvbXBsZXRlZCBpbiBhIHBhdXNlZCBzdGF0ZSB0aGVyZSBjYW4gYmUgYnVmZmVyZWQKLSAgICAgZGF0YSBsZWZ0IHRvIHdyaXRlIGFuZCB0aGVuIGtpbGwgKi8KLSAgZnJlZShkYXRhLT5zdGF0ZS50ZW1wd3JpdGUpOwotICBkYXRhLT5zdGF0ZS50ZW1wd3JpdGUgPSBOVUxMOwotCi0gIC8qIGlmIGRhdGEtPnNldC5yZXVzZV9mb3JiaWQgaXMgVFJVRSwgaXQgbWVhbnMgdGhlIGxpYmN1cmwgY2xpZW50IGhhcwotICAgICBmb3JjZWQgdXMgdG8gY2xvc2UgdGhpcyBjb25uZWN0aW9uLiBUaGlzIGlzIGlnbm9yZWQgZm9yIHJlcXVlc3RzIHRha2luZwotICAgICBwbGFjZSBpbiBhIE5UTE0gYXV0aGVudGljYXRpb24gaGFuZHNoYWtlCi0KLSAgICAgaWYgY29ubi0+Yml0cy5jbG9zZSBpcyBUUlVFLCBpdCBtZWFucyB0aGF0IHRoZSBjb25uZWN0aW9uIHNob3VsZCBiZQotICAgICBjbG9zZWQgaW4gc3BpdGUgb2YgYWxsIG91ciBlZmZvcnRzIHRvIGJlIG5pY2UsIGR1ZSB0byBwcm90b2NvbAotICAgICByZXN0cmljdGlvbnMgaW4gb3VyIG9yIHRoZSBzZXJ2ZXIncyBlbmQKLQotICAgICBpZiBwcmVtYXR1cmUgaXMgVFJVRSwgaXQgbWVhbnMgdGhpcyBjb25uZWN0aW9uIHdhcyBzYWlkIHRvIGJlIERPTkUgYmVmb3JlCi0gICAgIHRoZSBlbnRpcmUgcmVxdWVzdCBvcGVyYXRpb24gaXMgY29tcGxldGUgYW5kIHRodXMgd2UgY2FuJ3Qga25vdyBpbiB3aGF0Ci0gICAgIHN0YXRlIGl0IGlzIGZvciByZS11c2luZywgc28gd2UncmUgZm9yY2VkIHRvIGNsb3NlIGl0LiBJbiBhIHBlcmZlY3Qgd29ybGQKLSAgICAgd2UgY2FuIGFkZCBjb2RlIHRoYXQga2VlcCB0cmFjayBvZiBpZiB3ZSByZWFsbHkgbXVzdCBjbG9zZSBpdCBoZXJlIG9yIG5vdCwKLSAgICAgYnV0IGN1cnJlbnRseSB3ZSBoYXZlIG5vIHN1Y2ggZGV0YWlsIGtub3dsZWRnZS4KLSAgKi8KLQotICBpZigoZGF0YS0+c2V0LnJldXNlX2ZvcmJpZAotI2lmIGRlZmluZWQoVVNFX05UTE0pCi0gICAgICAmJiAhKGNvbm4tPm50bG0uc3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUyIHx8Ci0gICAgICAgICAgIGNvbm4tPnByb3h5bnRsbS5zdGF0ZSA9PSBOVExNU1RBVEVfVFlQRTIpCi0jZW5kaWYKLSAgICAgKSB8fCBjb25uLT5iaXRzLmNsb3NlIHx8IHByZW1hdHVyZSkgewotICAgIENVUkxjb2RlIHJlczIgPSBDdXJsX2Rpc2Nvbm5lY3QoY29ubiwgcHJlbWF0dXJlKTsgLyogY2xvc2UgY29ubmVjdGlvbiAqLwotCi0gICAgLyogSWYgd2UgaGFkIGFuIGVycm9yIGFscmVhZHksIG1ha2Ugc3VyZSB3ZSByZXR1cm4gdGhhdCBvbmUuIEJ1dAotICAgICAgIGlmIHdlIGdvdCBhIG5ldyBlcnJvciwgcmV0dXJuIHRoYXQuICovCi0gICAgaWYoIXJlc3VsdCAmJiByZXMyKQotICAgICAgcmVzdWx0ID0gcmVzMjsKLSAgfQotICBlbHNlIHsKLSAgICAvKiB0aGUgY29ubmVjdGlvbiBpcyBubyBsb25nZXIgaW4gdXNlICovCi0gICAgaWYoQ29ubmVjdGlvbkRvbmUoZGF0YSwgY29ubikpIHsKLSAgICAgIC8qIHJlbWVtYmVyIHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgY29ubmVjdGlvbiAqLwotICAgICAgZGF0YS0+c3RhdGUubGFzdGNvbm5lY3QgPSBjb25uOwotCi0gICAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiAjJWxkIHRvIGhvc3QgJXMgbGVmdCBpbnRhY3RcbiIsCi0gICAgICAgICAgICBjb25uLT5jb25uZWN0aW9uX2lkLAotICAgICAgICAgICAgY29ubi0+Yml0cy5odHRwcHJveHk/Y29ubi0+cHJveHkuZGlzcG5hbWU6Y29ubi0+aG9zdC5kaXNwbmFtZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGRhdGEtPnN0YXRlLmxhc3Rjb25uZWN0ID0gTlVMTDsKLSAgfQotCi0gICpjb25ucCA9IE5VTEw7IC8qIHRvIG1ha2UgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGJldHRlciBkZXRlY3QgdGhhdAotICAgICAgICAgICAgICAgICAgICB0aGlzIHdhcyBlaXRoZXIgY2xvc2VkIG9yIGhhbmRlZCBvdmVyIHRvIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlIGhlcmUsIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIHVzZWQgZnJvbSB0aGlzIHBvaW50IG9uCi0gICAgICAgICAgICAgICAgICovCi0gIEN1cmxfZnJlZV9yZXF1ZXN0X3N0YXRlKGRhdGEpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KIC8qCi0gKiBkb19pbml0KCkgaW5pdHMgdGhlIHJlYWR3cml0ZSBzZXNzaW9uLiBUaGlzIGlzIGluaXRlZCBlYWNoIHRpbWUgKGluIHRoZSBETwotICogZnVuY3Rpb24gYmVmb3JlIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBETyBmdW5jdGlvbnMgYXJlIGludm9rZWQpIGZvciBhCi0gKiB0cmFuc2Zlciwgc29tZXRpbWVzIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIFNlc3Npb25IYW5kbGUuIE1ha2Ugc3VyZQorICogQ3VybF9pbml0X2RvKCkgaW5pdHMgdGhlIHJlYWR3cml0ZSBzZXNzaW9uLiBUaGlzIGlzIGluaXRlZCBlYWNoIHRpbWUgKGluCisgKiB0aGUgRE8gZnVuY3Rpb24gYmVmb3JlIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBETyBmdW5jdGlvbnMgYXJlIGludm9rZWQpIGZvcgorICogYSB0cmFuc2Zlciwgc29tZXRpbWVzIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIFNlc3Npb25IYW5kbGUuIE1ha2Ugc3VyZQogICogbm90aGluZyBpbiBoZXJlIGRlcGVuZHMgb24gc3R1ZmYgdGhhdCBhcmUgc2V0dXAgZHluYW1pY2FsbHkgZm9yIHRoZQogICogdHJhbnNmZXIuCisgKgorICogQWxsb3cgdGhpcyBmdW5jdGlvbiB0byBnZXQgY2FsbGVkIHdpdGggJ2Nvbm4nIHNldCB0byBOVUxMLgogICovCiAKLXN0YXRpYyBDVVJMY29kZSBkb19pbml0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK0NVUkxjb2RlIEN1cmxfaW5pdF9kbyhzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCBTaW5nbGVSZXF1ZXN0ICprID0gJmRhdGEtPnJlcTsKIAotICBkYXRhLT5zdGF0ZS5kb25lID0gRkFMU0U7IC8qIEN1cmxfZG9uZSgpIGlzIG5vdCBjYWxsZWQgeWV0ICovCi0gIGNvbm4tPmJpdHMuZG9fbW9yZSA9IEZBTFNFOyAvKiBieSBkZWZhdWx0IHRoZXJlJ3Mgbm8gY3VybF9kb19tb3JlKCkgdG8gdXNlICovCisgIGlmKGNvbm4pCisgICAgY29ubi0+Yml0cy5kb19tb3JlID0gRkFMU0U7IC8qIGJ5IGRlZmF1bHQgdGhlcmUncyBubyBjdXJsX2RvX21vcmUoKSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2UgKi8KKworICBkYXRhLT5zdGF0ZS5kb25lID0gRkFMU0U7IC8qICpfZG9uZSgpIGlzIG5vdCBjYWxsZWQgeWV0ICovCiAgIGRhdGEtPnN0YXRlLmV4cGVjdDEwMGhlYWRlciA9IEZBTFNFOwogCiAgIGlmKGRhdGEtPnNldC5vcHRfbm9fYm9keSkKQEAgLTYxNTksODAgKzY0NzgsMTExIEBACiB9CiAKIC8qCi0gKiBkb19jb21wbGV0ZSBpcyBjYWxsZWQgd2hlbiB0aGUgRE8gYWN0aW9ucyBhcmUgY29tcGxldGUuCi0gKgotICogV2UgaW5pdCBjaHVua2luZyBhbmQgdHJhaWxlciBiaXRzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGhlcmUgaW1tZWRpYXRlbHkKLSAqIGJlZm9yZSByZWNlaXZpbmcgYW55IGhlYWRlciBkYXRhIGZvciB0aGUgY3VycmVudCByZXF1ZXN0IGluIHRoZSBwaXBlbGluZS4KLSAqLwotc3RhdGljIHZvaWQgZG9fY29tcGxldGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorKiBnZXRfcHJvdG9jb2xfZmFtaWx5KCkKKyoKKyogVGhpcyBpcyB1c2VkIHRvIHJldHVybiB0aGUgcHJvdG9jb2wgZmFtaWx5IGZvciBhIGdpdmVuIHByb3RvY29sLgorKgorKiBQYXJhbWV0ZXJzOgorKgorKiBwcm90b2NvbCAgW2luXSAgLSBBIHNpbmdsZSBiaXQgcHJvdG9jb2wgaWRlbnRpZmllciBzdWNoIGFzIEhUVFAgb3IgSFRUUFMuCisqCisqIFJldHVybnMgdGhlIGZhbWlseSBhcyBhIHNpbmdsZSBiaXQgcHJvdG9jb2wgaWRlbnRpZmllci4KKyovCisKK3Vuc2lnbmVkIGludCBnZXRfcHJvdG9jb2xfZmFtaWx5KHVuc2lnbmVkIGludCBwcm90b2NvbCkKIHsKLSAgY29ubi0+ZGF0YS0+cmVxLmNodW5rPUZBTFNFOwotICBjb25uLT5kYXRhLT5yZXEubWF4ZmQgPSAoY29ubi0+c29ja2ZkPmNvbm4tPndyaXRlc29ja2ZkPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+c29ja2ZkOmNvbm4tPndyaXRlc29ja2ZkKSsxOwotICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX1BSRVRSQU5TRkVSKTsKLX0KKyAgdW5zaWduZWQgaW50IGZhbWlseTsKIAotQ1VSTGNvZGUgQ3VybF9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKipjb25ucCwgYm9vbCAqZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0PUNVUkxFX09LOwotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAqY29ubnA7Ci0gIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3dpdGNoKHByb3RvY29sKSB7CisgIGNhc2UgQ1VSTFBST1RPX0hUVFA6CisgIGNhc2UgQ1VSTFBST1RPX0hUVFBTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19IVFRQOworICAgIGJyZWFrOwogCi0gIGlmKGNvbm4tPmhhbmRsZXItPmRvX2l0KSB7Ci0gICAgLyogZ2VuZXJpYyBwcm90b2NvbC1zcGVjaWZpYyBmdW5jdGlvbiBwb2ludGVyIHNldCBpbiBjdXJsX2Nvbm5lY3QoKSAqLwotICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvX2l0KGNvbm4sIGRvbmUpOworICBjYXNlIENVUkxQUk9UT19GVFA6CisgIGNhc2UgQ1VSTFBST1RPX0ZUUFM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX0ZUUDsKKyAgICBicmVhazsKIAotICAgIC8qIFRoaXMgd2FzIGZvcm1lcmx5IGRvbmUgaW4gdHJhbnNmZXIuYywgYnV0IHdlIGJldHRlciBkbyBpdCBoZXJlICovCi0gICAgaWYoKENVUkxFX1NFTkRfRVJST1IgPT0gcmVzdWx0KSAmJiBjb25uLT5iaXRzLnJldXNlKSB7Ci0gICAgICAvKgotICAgICAgICogSWYgdGhlIGNvbm5lY3Rpb24gaXMgdXNpbmcgYW4gZWFzeSBoYW5kbGUsIGNhbGwgcmVjb25uZWN0Ci0gICAgICAgKiB0byByZS1lc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24uICBPdGhlcndpc2UsIGxldCB0aGUgbXVsdGkgbG9naWMKLSAgICAgICAqIGZpZ3VyZSBvdXQgaG93IHRvIHJlLWVzdGFibGlzaCB0aGUgY29ubmVjdGlvbi4KLSAgICAgICAqLwotICAgICAgaWYoIWRhdGEtPm11bHRpKSB7Ci0gICAgICAgIHJlc3VsdCA9IEN1cmxfcmVjb25uZWN0X3JlcXVlc3QoY29ubnApOworICBjYXNlIENVUkxQUk9UT19TQ1A6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1NDUDsKKyAgICBicmVhazsKIAotICAgICAgICBpZighcmVzdWx0KSB7Ci0gICAgICAgICAgLyogLi4uIGZpbmFsbHkgYmFjayB0byBhY3R1YWxseSByZXRyeSB0aGUgRE8gcGhhc2UgKi8KLSAgICAgICAgICBjb25uID0gKmNvbm5wOyAvKiByZS1hc3NpZ24gY29ubiBzaW5jZSBDdXJsX3JlY29ubmVjdF9yZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uICovCi0gICAgICAgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+ZG9faXQoY29ubiwgZG9uZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgIGNhc2UgQ1VSTFBST1RPX1NGVFA6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1NGVFA7CisgICAgYnJlYWs7CiAKLSAgICBpZighcmVzdWx0ICYmICpkb25lKQotICAgICAgLyogZG9fY29tcGxldGUgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHByb3RvY29sLXNwZWNpZmljIERPIGZ1bmN0aW9uICovCi0gICAgICBkb19jb21wbGV0ZShjb25uKTsKKyAgY2FzZSBDVVJMUFJPVE9fVEVMTkVUOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19URUxORVQ7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fTERBUDoKKyAgY2FzZSBDVVJMUFJPVE9fTERBUFM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX0xEQVA7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fRElDVDoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fRElDVDsKKyAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19GSUxFOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19GSUxFOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1RGVFA6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1RGVFA7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fSU1BUDoKKyAgY2FzZSBDVVJMUFJPVE9fSU1BUFM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX0lNQVA7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fUE9QMzoKKyAgY2FzZSBDVVJMUFJPVE9fUE9QM1M6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1BPUDM7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fU01UUDoKKyAgY2FzZSBDVVJMUFJPVE9fU01UUFM6CisgICAgICBmYW1pbHkgPSBDVVJMUFJPVE9fU01UUDsKKyAgICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1JUU1A6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1JUU1A7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fUlRNUDoKKyAgY2FzZSBDVVJMUFJPVE9fUlRNUFM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1JUTVA7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fUlRNUFQ6CisgIGNhc2UgQ1VSTFBST1RPX1JUTVBUUzoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fUlRNUFQ7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fUlRNUEU6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1JUTVBFOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1JUTVBURToKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fUlRNUFRFOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX0dPUEhFUjoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fR09QSEVSOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1NNQjoKKyAgY2FzZSBDVVJMUFJPVE9fU01CUzoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fU01COworICAgIGJyZWFrOworCisgIGRlZmF1bHQ6CisgICAgICBmYW1pbHkgPSAwOworICAgICAgYnJlYWs7CiAgIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KIAotLyoKLSAqIEN1cmxfZG9fbW9yZSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIERPX01PUkUgbXVsdGkgc3RhdGUuIEl0IGlzIGJhc2ljYWxseSBhCi0gKiBzZWNvbmQgc3RhZ2UgRE8gc3RhdGUgd2hpY2ggKHdyb25nbHkpIHdhcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgRlRQJ3MKLSAqIHNlY29uZCBjb25uZWN0aW9uLgotICoKLSAqIFRPRE86IEEgZnV0dXJlIGxpYmN1cmwgc2hvdWxkIGJlIGFibGUgdG8gd29yayBhd2F5IHRoaXMgc3RhdGUuCi0gKgotICogJ2NvbXBsZXRlJyBjYW4gcmV0dXJuIDAgZm9yIGluY29tcGxldGUsIDEgZm9yIGRvbmUgYW5kIC0xIGZvciBnbyBiYWNrIHRvCi0gKiBET0lORyBzdGF0ZSB0aGVyZSdzIG1vcmUgd29yayB0byBkbyEKLSAqLwotCi1DVVJMY29kZSBDdXJsX2RvX21vcmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgKmNvbXBsZXRlKQotewotICBDVVJMY29kZSByZXN1bHQ9Q1VSTEVfT0s7Ci0KLSAgKmNvbXBsZXRlID0gMDsKLQotICBpZihjb25uLT5oYW5kbGVyLT5kb19tb3JlKQotICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvX21vcmUoY29ubiwgY29tcGxldGUpOwotCi0gIGlmKCFyZXN1bHQgJiYgKCpjb21wbGV0ZSA9PSAxKSkKLSAgICAvKiBkb19jb21wbGV0ZSBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgRE8gZnVuY3Rpb24gKi8KLSAgICBkb19jb21wbGV0ZShjb25uKTsKLQotICByZXR1cm4gcmVzdWx0OworICByZXR1cm4gZmFtaWx5OwogfQpkaWZmIC0tZ2l0IGEvbGliL3VybC5oIGIvbGliL3VybC5oCmluZGV4IGU0OWI3NzIuLjJiMjU3MzEgMTAwNjQ0Ci0tLSBhL2xpYi91cmwuaAorKysgYi9saWIvdXJsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNyw2ICsyNyw3IEBACiAgKiBQcm90b3R5cGVzIGZvciBsaWJyYXJ5LXdpZGUgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHVybC5jCiAgKi8KIAorQ1VSTGNvZGUgQ3VybF9pbml0X2RvKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogQ1VSTGNvZGUgQ3VybF9vcGVuKHN0cnVjdCBTZXNzaW9uSGFuZGxlICoqY3VybCk7CiBDVVJMY29kZSBDdXJsX2luaXRfdXNlcmRlZmluZWQoc3RydWN0IFVzZXJEZWZpbmVkICpzZXQpOwogQ1VSTGNvZGUgQ3VybF9zZXRvcHQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIENVUkxvcHRpb24gb3B0aW9uLApAQCAtMzYsOSArMzcsNiBAQAogQ1VSTGNvZGUgQ3VybF9jbG9zZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7IC8qIG9wcG9zaXRlIG9mIGN1cmxfb3BlbigpICovCiBDVVJMY29kZSBDdXJsX2Nvbm5lY3Qoc3RydWN0IFNlc3Npb25IYW5kbGUgKiwgc3RydWN0IGNvbm5lY3RkYXRhICoqLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmFzeW5jLCBib29sICpwcm90b2NvbF9jb25uZWN0KTsKLUNVUkxjb2RlIEN1cmxfZG8oc3RydWN0IGNvbm5lY3RkYXRhICoqLCBib29sICpkb25lKTsKLUNVUkxjb2RlIEN1cmxfZG9fbW9yZShzdHJ1Y3QgY29ubmVjdGRhdGEgKiwgaW50ICpjb21wbGV0ZWQpOwotQ1VSTGNvZGUgQ3VybF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqKiwgQ1VSTGNvZGUsIGJvb2wgcHJlbWF0dXJlKTsKIENVUkxjb2RlIEN1cmxfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKiwgYm9vbCBkZWFkX2Nvbm5lY3Rpb24pOwogQ1VSTGNvZGUgQ3VybF9wcm90b2NvbF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CiBDVVJMY29kZSBDdXJsX3Byb3RvY29sX2Nvbm5lY3Rpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKQEAgLTU5LDYgKzU3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9sbGlzdCAqcGlwZWxpbmUpOwogaW50IEN1cmxfcmVtb3ZlSGFuZGxlRnJvbVBpcGVsaW5lKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfbGxpc3QgKnBpcGVsaW5lKTsKK3N0cnVjdCBjb25uZWN0ZGF0YSAqCitDdXJsX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOwogLyogcmVtb3ZlIHRoZSBzcGVjaWZpZWQgY29ubmVjdGlvbiBmcm9tIGFsbCAocG9zc2libGUpIHBpcGVsaW5lcyBhbmQgcmVsYXRlZAogICAgcXVldWVzICovCiB2b2lkIEN1cmxfZ2V0b2ZmX2FsbF9waXBlbGluZXMoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCkBAIC02NywxMSArNjcsNiBAQAogdm9pZCBDdXJsX2Nsb3NlX2Nvbm5lY3Rpb25zKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKIAogI2RlZmluZSBDVVJMX0RFRkFVTFRfUFJPWFlfUE9SVCAxMDgwIC8qIGRlZmF1bHQgcHJveHkgcG9ydCB1bmxlc3Mgc3BlY2lmaWVkICovCi0jZGVmaW5lIENVUkxfREVGQVVMVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgInJjbWQiIC8qIGRlZmF1bHQgc29ja3M1IGdzc2FwaQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlICovCi0jZGVmaW5lIENVUkxfREVGQVVMVF9QUk9YWV9TRVJWSUNFX05BTUUgIkhUVFAiIC8qIGRlZmF1bHQgbmVnb3RpYXRlIHByb3h5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgKi8KLSNkZWZpbmUgQ1VSTF9ERUZBVUxUX1NFUlZJQ0VfTkFNRSAiSFRUUCIgIC8qIGRlZmF1bHQgbmVnb3RpYXRlIHNlcnZpY2UgKi8KIAogQ1VSTGNvZGUgQ3VybF9jb25uZWN0ZWRfcHJveHkoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKIApkaWZmIC0tZ2l0IGEvbGliL3VybGRhdGEuaCBiL2xpYi91cmxkYXRhLmgKaW5kZXggMDViZGE3OS4uMjU1OTRkMyAxMDA2NDQKLS0tIGEvbGliL3VybGRhdGEuaAorKysgYi9saWIvdXJsZGF0YS5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtOTMsNyArOTMsMTUgQEAKICNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CiAjZW5kaWYKIAotI2lmZGVmIFVTRV9QT0xBUlNTTAorI2lmZGVmIFVTRV9NQkVEVExTCisKKyNpbmNsdWRlIDxtYmVkdGxzL3NzbC5oPgorI2luY2x1ZGUgPG1iZWR0bHMvdmVyc2lvbi5oPgorI2luY2x1ZGUgPG1iZWR0bHMvZW50cm9weS5oPgorI2luY2x1ZGUgPG1iZWR0bHMvY3RyX2RyYmcuaD4KKworI2VsaWYgZGVmaW5lZCBVU0VfUE9MQVJTU0wKKwogI2luY2x1ZGUgPHBvbGFyc3NsL3NzbC5oPgogI2luY2x1ZGUgPHBvbGFyc3NsL3ZlcnNpb24uaD4KICNpZiBQT0xBUlNTTF9WRVJTSU9OX05VTUJFUjwweDAxMDEwMDAwCkBAIC0xMDIsNiArMTEwLDcgQEAKICNpbmNsdWRlIDxwb2xhcnNzbC9lbnRyb3B5Lmg+CiAjaW5jbHVkZSA8cG9sYXJzc2wvY3RyX2RyYmcuaD4KICNlbmRpZiAvKiBQT0xBUlNTTF9WRVJTSU9OX05VTUJFUjwweDAxMDEwMDAwICovCisKICNlbmRpZiAvKiBVU0VfUE9MQVJTU0wgKi8KIAogI2lmZGVmIFVTRV9DWUFTU0wKQEAgLTE5OCw2ICsyMDcsOCBAQAogI2RlZmluZSBIRUFERVJTSVpFIDI1NgogCiAjZGVmaW5lIENVUkxFQVNZX01BR0lDX05VTUJFUiAweGMwZGVkYmFkVQorI2RlZmluZSBHT09EX0VBU1lfSEFORExFKHgpIFwKKyAgKCh4KSAmJiAoKChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqKSh4KSktPm1hZ2ljID09IENVUkxFQVNZX01BR0lDX05VTUJFUikpCiAKIC8qIFNvbWUgY29udmVuaWVuY2UgbWFjcm9zIHRvIGdldCB0aGUgbGFyZ2VyL3NtYWxsZXIgdmFsdWUgb3V0IG9mIHR3byBnaXZlbi4KICAgIFdlIHByZWZpeCB3aXRoIENVUkwgdG8gcHJldmVudCBuYW1lIGNvbGxpc2lvbnMuICovCkBAIC0yNjMsNjEgKzI3NCw1NyBAQAogICAgICBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uLiAqLwogICBib29sIHVzZTsKICAgc3NsX2Nvbm5lY3Rpb25fc3RhdGUgc3RhdGU7Ci0jaWZkZWYgVVNFX09QRU5TU0wKKyAgc3NsX2Nvbm5lY3Rfc3RhdGUgY29ubmVjdGluZ19zdGF0ZTsKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQogICAvKiB0aGVzZSBvbmVzIHJlcXVpcmVzIHNwZWNpZmljIFNTTC10eXBlcyAqLwogICBTU0xfQ1RYKiBjdHg7CiAgIFNTTCogICAgIGhhbmRsZTsKICAgWDUwOSogICAgc2VydmVyX2NlcnQ7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7Ci0jZW5kaWYgLyogVVNFX09QRU5TU0wgKi8KLSNpZmRlZiBVU0VfR05VVExTCisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCiAgIGdudXRsc19zZXNzaW9uX3Qgc2Vzc2lvbjsKICAgZ251dGxzX2NlcnRpZmljYXRlX2NyZWRlbnRpYWxzX3QgY3JlZDsKICNpZmRlZiBVU0VfVExTX1NSUAogICBnbnV0bHNfc3JwX2NsaWVudF9jcmVkZW50aWFsc190IHNycF9jbGllbnRfY3JlZDsKICNlbmRpZgotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmIC8qIFVTRV9HTlVUTFMgKi8KLSNpZmRlZiBVU0VfUE9MQVJTU0wKKyNlbGlmIGRlZmluZWQoVVNFX01CRURUTFMpCisgIG1iZWR0bHNfY3RyX2RyYmdfY29udGV4dCBjdHJfZHJiZzsKKyAgbWJlZHRsc19lbnRyb3B5X2NvbnRleHQgZW50cm9weTsKKyAgbWJlZHRsc19zc2xfY29udGV4dCBzc2w7CisgIGludCBzZXJ2ZXJfZmQ7CisgIG1iZWR0bHNfeDUwOV9jcnQgY2FjZXJ0OworICBtYmVkdGxzX3g1MDlfY3J0IGNsaWNlcnQ7CisgIG1iZWR0bHNfeDUwOV9jcmwgY3JsOworICBtYmVkdGxzX3BrX2NvbnRleHQgcGs7CisgIG1iZWR0bHNfc3NsX2NvbmZpZyBjb25maWc7CisgIGNvbnN0IGNoYXIgKnByb3RvY29sc1szXTsKKyNlbGlmIGRlZmluZWQoVVNFX1BPTEFSU1NMKQogICBjdHJfZHJiZ19jb250ZXh0IGN0cl9kcmJnOwogICBlbnRyb3B5X2NvbnRleHQgZW50cm9weTsKICAgc3NsX2NvbnRleHQgc3NsOwotICBzc2xfc2Vzc2lvbiBzc247CiAgIGludCBzZXJ2ZXJfZmQ7CiAgIHg1MDlfY3J0IGNhY2VydDsKICAgeDUwOV9jcnQgY2xpY2VydDsKICAgeDUwOV9jcmwgY3JsOwogICByc2FfY29udGV4dCByc2E7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7Ci0jZW5kaWYgLyogVVNFX1BPTEFSU1NMICovCi0jaWZkZWYgVVNFX0NZQVNTTAorI2VsaWYgZGVmaW5lZChVU0VfQ1lBU1NMKQogICBTU0xfQ1RYKiBjdHg7CiAgIFNTTCogICAgIGhhbmRsZTsKLSAgc3NsX2Nvbm5lY3Rfc3RhdGUgY29ubmVjdGluZ19zdGF0ZTsKLSNlbmRpZiAvKiBVU0VfQ1lBU1NMICovCi0jaWZkZWYgVVNFX05TUworI2VsaWYgZGVmaW5lZChVU0VfTlNTKQogICBQUkZpbGVEZXNjICpoYW5kbGU7CiAgIGNoYXIgKmNsaWVudF9uaWNrbmFtZTsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE7CiAgIHN0cnVjdCBjdXJsX2xsaXN0ICpvYmpfbGlzdDsKICAgUEsxMUdlbmVyaWNPYmplY3QgKm9ial9jbGljZXJ0OwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmIC8qIFVTRV9OU1MgKi8KLSNpZmRlZiBVU0VfR1NLSVQKKyNlbGlmIGRlZmluZWQoVVNFX0dTS0lUKQogICBnc2tfaGFuZGxlIGhhbmRsZTsKICAgaW50IGlvY3BvcnQ7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7Ci0jZW5kaWYKLSNpZmRlZiBVU0VfQVhUTFMKKyNlbGlmIGRlZmluZWQoVVNFX0FYVExTKQogICBTU0xfQ1RYKiBzc2xfY3R4OwogICBTU0wqICAgICBzc2w7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7Ci0jZW5kaWYgLyogVVNFX0FYVExTICovCi0jaWZkZWYgVVNFX1NDSEFOTkVMCisjZWxpZiBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkKICAgc3RydWN0IGN1cmxfc2NoYW5uZWxfY3JlZCAqY3JlZDsKICAgc3RydWN0IGN1cmxfc2NoYW5uZWxfY3R4dCAqY3R4dDsKICAgU2VjUGtnQ29udGV4dF9TdHJlYW1TaXplcyBzdHJlYW1fc2l6ZXM7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7CiAgIHNpemVfdCBlbmNkYXRhX2xlbmd0aCwgZGVjZGF0YV9sZW5ndGg7CiAgIHNpemVfdCBlbmNkYXRhX29mZnNldCwgZGVjZGF0YV9vZmZzZXQ7CiAgIHVuc2lnbmVkIGNoYXIgKmVuY2RhdGFfYnVmZmVyLCAqZGVjZGF0YV9idWZmZXI7CkBAIC0zMjUsMTQgKzMzMiwxNCBAQAogICBDVVJMY29kZSByZWN2X3VucmVjb3ZlcmFibGVfZXJyOyAvKiBzY2hhbm5lbF9yZWN2IGhhZCBhbiB1bnJlY292ZXJhYmxlIGVyciAqLwogICBib29sIHJlY3Zfc3NwaV9jbG9zZV9ub3RpZnk7IC8qIHRydWUgaWYgY29ubmVjdGlvbiBjbG9zZWQgYnkgY2xvc2Vfbm90aWZ5ICovCiAgIGJvb2wgcmVjdl9jb25uZWN0aW9uX2Nsb3NlZDsgLyogdHJ1ZSBpZiBjb25uZWN0aW9uIGNsb3NlZCwgcmVnYXJkbGVzcyBob3cgKi8KLSNlbmRpZiAvKiBVU0VfU0NIQU5ORUwgKi8KLSNpZmRlZiBVU0VfREFSV0lOU1NMCisjZWxpZiBkZWZpbmVkKFVTRV9EQVJXSU5TU0wpCiAgIFNTTENvbnRleHRSZWYgc3NsX2N0eDsKICAgY3VybF9zb2NrZXRfdCBzc2xfc29ja2ZkOwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwogICBib29sIHNzbF9kaXJlY3Rpb247IC8qIHRydWUgaWYgd3JpdGluZywgZmFsc2UgaWYgcmVhZGluZyAqLwogICBzaXplX3Qgc3NsX3dyaXRlX2J1ZmZlcmVkX2xlbmd0aDsKLSNlbmRpZiAvKiBVU0VfREFSV0lOU1NMICovCisjZWxpZiBkZWZpbmVkKFVTRV9TU0wpCisjZXJyb3IgIlNTTCBiYWNrZW5kIHNwZWNpZmljIGluZm9ybWF0aW9uIG1pc3NpbmcgZnJvbSBzc2xfY29ubmVjdF9kYXRhIgorI2VuZGlmCiB9OwogCiBzdHJ1Y3Qgc3NsX2NvbmZpZ19kYXRhIHsKQEAgLTM2NiwxMCArMzczLDEyIEBACiAvKiBpbmZvcm1hdGlvbiBzdG9yZWQgYWJvdXQgb25lIHNpbmdsZSBTU0wgc2Vzc2lvbiAqLwogc3RydWN0IGN1cmxfc3NsX3Nlc3Npb24gewogICBjaGFyICpuYW1lOyAgICAgICAvKiBob3N0IG5hbWUgZm9yIHdoaWNoIHRoaXMgSUQgd2FzIHVzZWQgKi8KKyAgY2hhciAqY29ubl90b19ob3N0OyAvKiBob3N0IG5hbWUgZm9yIHRoZSBjb25uZWN0aW9uIChtYXkgYmUgTlVMTCkgKi8KICAgdm9pZCAqc2Vzc2lvbmlkOyAgLyogYXMgcmV0dXJuZWQgZnJvbSB0aGUgU1NMIGxheWVyICovCiAgIHNpemVfdCBpZHNpemU7ICAgIC8qIGlmIGtub3duLCBvdGhlcndpc2UgMCAqLwogICBsb25nIGFnZTsgICAgICAgICAvKiBqdXN0IGEgbnVtYmVyLCB0aGUgaGlnaGVyIHRoZSBtb3JlIHJlY2VudCAqLwotICBpbnQgcmVtb3RlX3BvcnQ7ICAvKiByZW1vdGUgcG9ydCB0byBjb25uZWN0IHRvICovCisgIGludCByZW1vdGVfcG9ydDsgIC8qIHJlbW90ZSBwb3J0ICovCisgIGludCBjb25uX3RvX3BvcnQ7IC8qIHJlbW90ZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiAobWF5IGJlIC0xKSAqLwogICBzdHJ1Y3Qgc3NsX2NvbmZpZ19kYXRhIHNzbF9jb25maWc7IC8qIHNldHVwIGZvciB0aGlzIHNlc3Npb24gKi8KIH07CiAKQEAgLTQ1NSw3ICs0NjQsNyBAQAogI2lmZGVmIEhBVkVfR1NTQVBJCiAgIE9NX3VpbnQzMiBzdGF0dXM7CiAgIGdzc19jdHhfaWRfdCBjb250ZXh0OwotICBnc3NfbmFtZV90IHNlcnZlcl9uYW1lOworICBnc3NfbmFtZV90IHNwbjsKICAgZ3NzX2J1ZmZlcl9kZXNjIG91dHB1dF90b2tlbjsKICNlbHNlCiAjaWZkZWYgVVNFX1dJTkRPV1NfU1NQSQpAQCAtNDY0LDcgKzQ3Myw3IEBACiAgIEN0eHRIYW5kbGUgKmNvbnRleHQ7CiAgIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZIGlkZW50aXR5OwogICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqcF9pZGVudGl0eTsKLSAgVENIQVIgKnNlcnZlcl9uYW1lOworICBUQ0hBUiAqc3BuOwogICBzaXplX3QgdG9rZW5fbWF4OwogICBCWVRFICpvdXRwdXRfdG9rZW47CiAgIHNpemVfdCBvdXRwdXRfdG9rZW5fbGVuZ3RoOwpAQCAtNDgxLDYgKzQ5MCwxMCBAQAogICAvKiBhbHdheXMgbW9kaWZ5IGJpdHMuY2xvc2Ugd2l0aCB0aGUgY29ubmNsb3NlKCkgYW5kIGNvbm5rZWVwKCkgbWFjcm9zISAqLwogICBib29sIGNsb3NlOyAvKiBpZiBzZXQsIHdlIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFmdGVyIHRoaXMgcmVxdWVzdCAqLwogICBib29sIHJldXNlOyAvKiBpZiBzZXQsIHRoaXMgaXMgYSByZS11c2VkIGNvbm5lY3Rpb24gKi8KKyAgYm9vbCBjb25uX3RvX2hvc3Q7IC8qIGlmIHNldCwgdGhpcyBjb25uZWN0aW9uIGhhcyBhICJjb25uZWN0IHRvIGhvc3QiCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG92ZXJyaWRlcyB0aGUgaG9zdCBpbiB0aGUgVVJMICovCisgIGJvb2wgY29ubl90b19wb3J0OyAvKiBpZiBzZXQsIHRoaXMgY29ubmVjdGlvbiBoYXMgYSAiY29ubmVjdCB0byBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBvdmVycmlkZXMgdGhlIHBvcnQgaW4gdGhlIFVSTCAocmVtb3RlIHBvcnQpICovCiAgIGJvb2wgcHJveHk7IC8qIGlmIHNldCwgdGhpcyB0cmFuc2ZlciBpcyBkb25lIHRocm91Z2ggYSBwcm94eSAtIGFueSB0eXBlICovCiAgIGJvb2wgaHR0cHByb3h5OyAgICAvKiBpZiBzZXQsIHRoaXMgdHJhbnNmZXIgaXMgZG9uZSB0aHJvdWdoIGEgaHR0cCBwcm94eSAqLwogICBib29sIHVzZXJfcGFzc3dkOyAgICAvKiBkbyB3ZSB1c2UgdXNlcitwYXNzd29yZCBmb3IgdGhpcyBjb25uZWN0aW9uPyAqLwpAQCAtNTI5LDYgKzU0MiwxMCBAQAogICAgICAgICAgICAgICAgICBjb25uZWN0aW9uICovCiAgIGJvb2wgdHlwZV9zZXQ7ICAvKiB0eXBlPSB3YXMgdXNlZCBpbiB0aGUgVVJMICovCiAgIGJvb2wgbXVsdGlwbGV4OyAvKiBjb25uZWN0aW9uIGlzIG11bHRpcGxleGVkICovCisKKyAgYm9vbCB0Y3BfZmFzdG9wZW47IC8qIHVzZSBUQ1AgRmFzdCBPcGVuICovCisgIGJvb2wgdGxzX2VuYWJsZV9ucG47ICAvKiBUTFMgTlBOIGV4dGVuc2lvbj8gKi8KKyAgYm9vbCB0bHNfZW5hYmxlX2FscG47IC8qIFRMUyBBTFBOIGV4dGVuc2lvbj8gKi8KIH07CiAKIHN0cnVjdCBob3N0bmFtZSB7CkBAIC02NTgsNyArNjc1LDYgQEAKICNkZWZpbmUgSURFTlRJVFkgMCAgICAgICAgICAgICAgLyogTm8gZW5jb2RpbmcgKi8KICNkZWZpbmUgREVGTEFURSAxICAgICAgICAgICAgICAgLyogemxpYiBkZWZsYXRlIFtSRkMgMTk1MCAmIDE5NTFdICovCiAjZGVmaW5lIEdaSVAgMiAgICAgICAgICAgICAgICAgIC8qIGd6aXAgYWxnb3JpdGhtIFtSRkMgMTk1Ml0gKi8KLSNkZWZpbmUgQ09NUFJFU1MgMyAgICAgICAgICAgICAgLyogTm90IGhhbmRsZWQsIGFkZGVkIGZvciBjb21wbGV0ZW5lc3MgKi8KIAogI2lmZGVmIEhBVkVfTElCWgogICB6bGliSW5pdFN0YXRlIHpsaWJfaW5pdDsgICAgICAvKiBwb3NzaWJsZSB6bGliIGluaXQgc3RhdGU7CkBAIC04MDEsNyArODE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgcXVlcnkgc3RyaW5ncyAoP2Zvbz1iYXIpICEgKi8KICNkZWZpbmUgUFJPVE9QVF9DUkVEU1BFUlJFUVVFU1QgKDE8PDcpIC8qIHJlcXVpcmVzIGxvZ2luIGNyZWRlbnRpYWxzIHBlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBpbnN0ZWFkIG9mIHBlciBjb25uZWN0aW9uICovCi0KKyNkZWZpbmUgUFJPVE9QVF9BTFBOX05QTiAoMTw8OCkgLyogc2V0IEFMUE4gYW5kL29yIE5QTiBmb3IgdGhpcyAqLwogCiAvKiByZXR1cm4gdGhlIGNvdW50IG9mIGJ5dGVzIHNlbnQsIG9yIC0xIG9uIGVycm9yICovCiB0eXBlZGVmIHNzaXplX3QgKEN1cmxfc2VuZCkoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCAvKiBjb25uZWN0aW9uIGRhdGEgKi8KQEAgLTgxNyw2ICs4MzMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCAgICAgICAgICAgICAgIC8qIG1heCBhbW91bnQgdG8gcmVhZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICplcnIpOyAgICAgICAgICAgLyogZXJyb3IgdG8gcmV0dXJuICovCiAKKyNpZmRlZiBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5ECitzdHJ1Y3QgcG9zdHBvbmVkX2RhdGEgeworICBjaGFyICpidWZmZXI7ICAgICAgICAgIC8qIFRlbXBvcmFsIHN0b3JlIGZvciByZWNlaXZlZCBkYXRhIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRpbmcsIG11c3QgYmUgZnJlZWQgKi8KKyAgc2l6ZV90IGFsbG9jYXRlZF9zaXplOyAvKiBTaXplIG9mIHRlbXBvcmFsIHN0b3JlICovCisgIHNpemVfdCByZWN2X3NpemU7ICAgICAgLyogU2l6ZSBvZiByZWNlaXZlZCBkYXRhIGR1cmluZyBzZW5kaW5nICovCisgIHNpemVfdCByZWN2X3Byb2Nlc3NlZDsgLyogU2l6ZSBvZiBwcm9jZXNzZWQgcGFydCBvZiBwb3N0cG9uZWQgZGF0YSAqLworI2lmZGVmIERFQlVHQlVJTEQKKyAgY3VybF9zb2NrZXRfdCBiaW5kc29jazsvKiBTdHJ1Y3R1cmUgbXVzdCBiZSBib3VuZCB0byBzcGVjaWZpYyBzb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCBvbmx5IGZvciBERUJVR0FTU0VSVCAqLworI2VuZGlmIC8qIERFQlVHQlVJTEQgKi8KK307CisjZW5kaWYgLyogVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLworCiAvKgogICogVGhlIGNvbm5lY3RkYXRhIHN0cnVjdCBjb250YWlucyBhbGwgZmllbGRzIGFuZCB2YXJpYWJsZXMgdGhhdCBzaG91bGQgYmUKICAqIHVuaXF1ZSBmb3IgYW4gZW50aXJlIGNvbm5lY3Rpb24uCkBAIC04NjYsMTAgKzg5NiwxNCBAQAogICBpbnQgc29ja3R5cGU7ICAvKiBTT0NLX1NUUkVBTSBvciBTT0NLX0RHUkFNICovCiAKICAgc3RydWN0IGhvc3RuYW1lIGhvc3Q7CisgIHN0cnVjdCBob3N0bmFtZSBjb25uX3RvX2hvc3Q7IC8qIHRoZSBob3N0IHRvIGNvbm5lY3QgdG8uIHZhbGlkIG9ubHkgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cy5jb25uX3RvX2hvc3QgaXMgc2V0ICovCiAgIHN0cnVjdCBob3N0bmFtZSBwcm94eTsKIAogICBsb25nIHBvcnQ7ICAgICAgIC8qIHdoaWNoIHBvcnQgdG8gdXNlIGxvY2FsbHkgKi8KLSAgaW50IHJlbW90ZV9wb3J0OyAvKiB3aGF0IHJlbW90ZSBwb3J0IHRvIGNvbm5lY3QgdG8sIG5vdCB0aGUgcHJveHkgcG9ydCEgKi8KKyAgaW50IHJlbW90ZV9wb3J0OyAvKiB0aGUgcmVtb3RlIHBvcnQsIG5vdCB0aGUgcHJveHkgcG9ydCEgKi8KKyAgaW50IGNvbm5fdG9fcG9ydDsgLyogdGhlIHJlbW90ZSBwb3J0IHRvIGNvbm5lY3QgdG8uIHZhbGlkIG9ubHkgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgYml0cy5jb25uX3RvX3BvcnQgaXMgc2V0ICovCiAKICAgLyogJ3ByaW1hcnlfaXAnIGFuZCAncHJpbWFyeV9wb3J0JyBnZXQgZmlsbGVkIHdpdGggcGVlcidzIG51bWVyaWNhbAogICAgICBpcCBhZGRyZXNzIGFuZCBwb3J0IG51bWJlciB3aGVuZXZlciBhbiBvdXRnb2luZyBjb25uZWN0aW9uIGlzCkBAIC04OTIsNyArOTI2LDcgQEAKICAgY2hhciAqcGFzc3dkOyAgLyogcGFzc3dvcmQgc3RyaW5nLCBhbGxvY2F0ZWQgKi8KICAgY2hhciAqb3B0aW9uczsgLyogb3B0aW9ucyBzdHJpbmcsIGFsbG9jYXRlZCAqLwogCi0gIGNoYXIgKnhvYXV0aDJfYmVhcmVyOyAvKiBiZWFyZXIgdG9rZW4gZm9yIHhvYXV0aDIsIGFsbG9jYXRlZCAqLworICBjaGFyICpvYXV0aF9iZWFyZXI7IC8qIGJlYXJlciB0b2tlbiBmb3IgT0F1dGggMi4wLCBhbGxvY2F0ZWQgKi8KIAogICBjaGFyICpwcm94eXVzZXI7ICAgIC8qIHByb3h5IHVzZXIgbmFtZSBzdHJpbmcsIGFsbG9jYXRlZCAqLwogICBjaGFyICpwcm94eXBhc3N3ZDsgIC8qIHByb3h5IHBhc3N3b3JkIHN0cmluZywgYWxsb2NhdGVkICovCkBAIC05MTEsOCArOTQ1LDEyIEBACiAgIEN1cmxfcmVjdiAqcmVjdlsyXTsKICAgQ3VybF9zZW5kICpzZW5kWzJdOwogCisjaWZkZWYgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORAorICBzdHJ1Y3QgcG9zdHBvbmVkX2RhdGEgcG9zdHBvbmVkWzJdOyAvKiB0d28gYnVmZmVycyBmb3IgdHdvIHNvY2tldHMgKi8KKyNlbmRpZiAvKiBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCiAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhIHNzbFsyXTsgLyogdGhpcyBpcyBmb3Igc3NsLXN0dWZmICovCiAgIHN0cnVjdCBzc2xfY29uZmlnX2RhdGEgc3NsX2NvbmZpZzsKKyAgYm9vbCB0bHNfdXBncmFkZWQ7CiAKICAgc3RydWN0IENvbm5lY3RCaXRzIGJpdHM7ICAgIC8qIHZhcmlvdXMgc3RhdGUtZmxhZ3MgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwogCkBAIC0xMjE3LDExICsxMjU1LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIC8gc2Vjb25kICovCiAgIGJvb2wgdGhpc19pc19hX2ZvbGxvdzsgLyogdGhpcyBpcyBhIGZvbGxvd2VkIExvY2F0aW9uOiByZXF1ZXN0ICovCiAKLSAgY2hhciAqZmlyc3RfaG9zdDsgLyogaWYgc2V0LCB0aGlzIHNob3VsZCBiZSB0aGUgaG9zdCBuYW1lIHRoYXQgd2Ugd2lsbAorICBjaGFyICpmaXJzdF9ob3N0OyAvKiBob3N0IG5hbWUgb2YgdGhlIGZpcnN0IChub3QgZm9sbG93ZWQpIHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgICAgIGlmIHNldCwgdGhpcyBzaG91bGQgYmUgdGhlIGhvc3QgbmFtZSB0aGF0IHdlIHdpbGwKICAgICAgICAgICAgICAgICAgICAgICAgc2VudCBhdXRob3JpemF0aW9uIHRvLCBubyBlbHNlLiBVc2VkIHRvIG1ha2UgTG9jYXRpb246CiAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBub3Qga2VlcCBzZW5kaW5nIHVzZXIrcGFzc3dvcmQuLi4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgICBzdHJkdXAoKSBkYXRhLgogICAgICAgICAgICAgICAgICAgICAqLworICBpbnQgZmlyc3RfcmVtb3RlX3BvcnQ7IC8qIHJlbW90ZSBwb3J0IG9mIHRoZSBmaXJzdCAobm90IGZvbGxvd2VkKSByZXF1ZXN0ICovCiAgIHN0cnVjdCBjdXJsX3NzbF9zZXNzaW9uICpzZXNzaW9uOyAvKiBhcnJheSBvZiAnbWF4X3NzbF9zZXNzaW9ucycgc2l6ZSAqLwogICBsb25nIHNlc3Npb25hZ2U7ICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHRoZSBtb3N0IHJlY2VudCBzZXNzaW9uICovCiAgIGNoYXIgKnRlbXB3cml0ZTsgICAgICAvKiBhbGxvY2F0ZWQgYnVmZmVyIHRvIGtlZXAgZGF0YSBpbiB3aGVuIGEgd3JpdGUKQEAgLTEzMDUsMTIgKzEzNDUsMTkgQEAKICAgY3VybF9vZmZfdCBpbmZpbGVzaXplOyAvKiBzaXplIG9mIGZpbGUgdG8gdXBsb2FkLCAtMSBtZWFucyB1bmtub3duLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcGllZCBmcm9tIHNldC5maWxlc2l6ZSBhdCBzdGFydCBvZiBvcGVyYXRpb24gKi8KIAotICBpbnQgZHJhaW47IC8qIEluY3JlYXNlZCB3aGVuIHRoaXMgc3RyZWFtIGhhcyBkYXRhIHRvIHJlYWQsIGV2ZW4gaWYgaXRzCi0gICAgICAgICAgICAgICAgc29ja2V0IG5vdCBuZWNlc3NhcmlseSBpcyByZWFkYWJsZS4gRGVjcmVhc2VkIHdoZW4KLSAgICAgICAgICAgICAgICBjaGVja2VkLiAqLworICBzaXplX3QgZHJhaW47IC8qIEluY3JlYXNlZCB3aGVuIHRoaXMgc3RyZWFtIGhhcyBkYXRhIHRvIHJlYWQsIGV2ZW4gaWYgaXRzCisgICAgICAgICAgICAgICAgICAgc29ja2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpcyByZWFkYWJsZS4gRGVjcmVhc2VkIHdoZW4KKyAgICAgICAgICAgICAgICAgICBjaGVja2VkLiAqLwogICBib29sIGRvbmU7IC8qIHNldCB0byBGQUxTRSB3aGVuIEN1cmxfZG8oKSBpcyBjYWxsZWQgYW5kIHNldCB0byBUUlVFIHdoZW4KICAgICAgICAgICAgICAgICBDdXJsX2RvbmUoKSBpcyBjYWxsZWQsIHRvIHByZXZlbnQgQ3VybF9kb25lKCkgdG8gZ2V0IGludm9rZWQKICAgICAgICAgICAgICAgICB0d2ljZSB3aGVuIHRoZSBtdWx0aSBpbnRlcmZhY2UgaXMgdXNlZC4gKi8KKworICBjdXJsX3JlYWRfY2FsbGJhY2sgZnJlYWRfZnVuYzsgLyogcmVhZCBjYWxsYmFjay9mdW5jdGlvbiAqLworICB2b2lkICppbjsgICAgICAgICAgICAgICAgICAgICAgLyogQ1VSTE9QVF9SRUFEREFUQSAqLworCisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpzdHJlYW1fZGVwZW5kc19vbjsKKyAgYm9vbCBzdHJlYW1fZGVwZW5kc19lOyAvKiBzZXQgb3IgZG9uJ3Qgc2V0IHRoZSBFeGNsdXNpdmUgYml0ICovCisgIGludCBzdHJlYW1fd2VpZ2h0OwogfTsKIAogCkBAIC0xMzQ5LDYgKzEzOTYsNyBAQAogICBTVFJJTkdfQ09PS0lFLCAgICAgICAgICAvKiBIVFRQIGNvb2tpZSBzdHJpbmcgdG8gc2VuZCAqLwogICBTVFJJTkdfQ09PS0lFSkFSLCAgICAgICAvKiBkdW1wIGFsbCBjb29raWVzIHRvIHRoaXMgZmlsZSAqLwogICBTVFJJTkdfQ1VTVE9NUkVRVUVTVCwgICAvKiBIVFRQL0ZUUC9SVFNQIHJlcXVlc3QvbWV0aG9kIHRvIHVzZSAqLworICBTVFJJTkdfREVGQVVMVF9QUk9UT0NPTCwgLyogUHJvdG9jb2wgdG8gdXNlIHdoZW4gdGhlIFVSTCBkb2Vzbid0IHNwZWNpZnkgKi8KICAgU1RSSU5HX0RFVklDRSwgICAgICAgICAgLyogbG9jYWwgbmV0d29yayBpbnRlcmZhY2UvYWRkcmVzcyB0byB1c2UgKi8KICAgU1RSSU5HX0VOQ09ESU5HLCAgICAgICAgLyogQWNjZXB0LUVuY29kaW5nIHN0cmluZyAqLwogICBTVFJJTkdfRlRQX0FDQ09VTlQsICAgICAvKiBmdHAgYWNjb3VudCBkYXRhICovCkBAIC0xMzkwLDggKzE0MzgsMTAgQEAKICAgU1RSSU5HX1NTSF9LTk9XTkhPU1RTLCAgLyogZmlsZSBuYW1lIG9mIGtub3duaG9zdHMgZmlsZSAqLwogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICBTVFJJTkdfU09DS1M1X0dTU0FQSV9TRVJWSUNFLCAvKiBHU1NBUEkgc2VydmljZSBuYW1lICovCiAgIFNUUklOR19QUk9YWV9TRVJWSUNFX05BTUUsIC8qIFByb3h5IHNlcnZpY2UgbmFtZSAqLworI2VuZGlmCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKSB8fCBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9TUE5FR08pCiAgIFNUUklOR19TRVJWSUNFX05BTUUsICAgIC8qIFNlcnZpY2UgbmFtZSAqLwogI2VuZGlmCiAgIFNUUklOR19NQUlMX0ZST00sCkBAIC0xNDI2LDcgKzE0NzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgcHJveHkgc3RyaW5nIGZlYXR1cmVzIGEgIjpbcG9ydF0iIHRoYXQgb25lIHdpbGwgb3ZlcnJpZGUKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuICovCiAgIHZvaWQgKm91dDsgICAgICAgICAvKiBDVVJMT1BUX1dSSVRFREFUQSAqLwotICB2b2lkICppbjsgICAgICAgICAgLyogQ1VSTE9QVF9SRUFEREFUQSAqLworICB2b2lkICppbl9zZXQ7ICAgICAgLyogQ1VSTE9QVF9SRUFEREFUQSAqLwogICB2b2lkICp3cml0ZWhlYWRlcjsgLyogd3JpdGUgdGhlIGhlYWRlciB0byB0aGlzIGlmIG5vbi1OVUxMICovCiAgIHZvaWQgKnJ0cF9vdXQ7ICAgICAvKiB3cml0ZSBSVFAgdG8gdGhpcyBpZiBub24tTlVMTCAqLwogICBsb25nIHVzZV9wb3J0OyAgICAgLyogd2hpY2ggcG9ydCB0byB1c2UgKHdoZW4gbm90IHVzaW5nIGRlZmF1bHQpICovCkBAIC0xNDUxLDcgKzE1MDEsNyBAQAogICBjdXJsX3dyaXRlX2NhbGxiYWNrIGZ3cml0ZV9mdW5jOyAgIC8qIGZ1bmN0aW9uIHRoYXQgc3RvcmVzIHRoZSBvdXRwdXQgKi8KICAgY3VybF93cml0ZV9jYWxsYmFjayBmd3JpdGVfaGVhZGVyOyAvKiBmdW5jdGlvbiB0aGF0IHN0b3JlcyBoZWFkZXJzICovCiAgIGN1cmxfd3JpdGVfY2FsbGJhY2sgZndyaXRlX3J0cDsgICAgLyogZnVuY3Rpb24gdGhhdCBzdG9yZXMgaW50ZXJsZWF2ZWQgUlRQICovCi0gIGN1cmxfcmVhZF9jYWxsYmFjayBmcmVhZF9mdW5jOyAgICAgLyogZnVuY3Rpb24gdGhhdCByZWFkcyB0aGUgaW5wdXQgKi8KKyAgY3VybF9yZWFkX2NhbGxiYWNrIGZyZWFkX2Z1bmNfc2V0OyAvKiBmdW5jdGlvbiB0aGF0IHJlYWRzIHRoZSBpbnB1dCAqLwogICBpbnQgaXNfZnJlYWRfc2V0OyAvKiBib29sZWFuLCBoYXMgcmVhZCBjYWxsYmFjayBiZWVuIHNldCB0byBub24tTlVMTD8gKi8KICAgaW50IGlzX2Z3cml0ZV9zZXQ7IC8qIGJvb2xlYW4sIGhhcyB3cml0ZSBjYWxsYmFjayBiZWVuIHNldCB0byBub24tTlVMTD8gKi8KICAgY3VybF9wcm9ncmVzc19jYWxsYmFjayBmcHJvZ3Jlc3M7IC8qIE9MRCBhbmQgZGVwcmVjYXRlZCBwcm9ncmVzcyBjYWxsYmFjayAgKi8KQEAgLTE0ODMsNyArMTUzMyw4IEBACiAgIGxvbmcgY29ubmVjdHRpbWVvdXQ7ICAvKiBpbiBtaWxsaXNlY29uZHMsIDAgbWVhbnMgbm8gdGltZW91dCAqLwogICBsb25nIGFjY2VwdHRpbWVvdXQ7ICAgLyogaW4gbWlsbGlzZWNvbmRzLCAwIG1lYW5zIG5vIHRpbWVvdXQgKi8KICAgbG9uZyBzZXJ2ZXJfcmVzcG9uc2VfdGltZW91dDsgLyogaW4gbWlsbGlzZWNvbmRzLCAwIG1lYW5zIG5vIHRpbWVvdXQgKi8KLSAgbG9uZyB0ZnRwX2Jsa3NpemUgOyAvKiBpbiBieXRlcywgMCBtZWFucyB1c2UgZGVmYXVsdCAqLworICBsb25nIHRmdHBfYmxrc2l6ZTsgICAgLyogaW4gYnl0ZXMsIDAgbWVhbnMgdXNlIGRlZmF1bHQgKi8KKyAgYm9vbCB0ZnRwX25vX29wdGlvbnM7IC8qIGRvIG5vdCBzZW5kIFRGVFAgb3B0aW9ucyByZXF1ZXN0cyAqLwogICBjdXJsX29mZl90IGZpbGVzaXplOyAgLyogc2l6ZSBvZiBmaWxlIHRvIHVwbG9hZCwgLTEgbWVhbnMgdW5rbm93biAqLwogICBsb25nIGxvd19zcGVlZF9saW1pdDsgLyogYnl0ZXMvc2Vjb25kICovCiAgIGxvbmcgbG93X3NwZWVkX3RpbWU7ICAvKiBudW1iZXIgb2Ygc2Vjb25kcyAqLwpAQCAtMTUwOCw2ICsxNTU5LDggQEAKICAgc3RydWN0IGN1cmxfc2xpc3QgKnRlbG5ldF9vcHRpb25zOyAvKiBsaW5rZWQgbGlzdCBvZiB0ZWxuZXQgb3B0aW9ucyAqLwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqcmVzb2x2ZTsgICAgIC8qIGxpc3Qgb2YgbmFtZXMgdG8gYWRkL3JlbW92ZSBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE5TIGNhY2hlICovCisgIHN0cnVjdCBjdXJsX3NsaXN0ICpjb25uZWN0X3RvOyAvKiBsaXN0IG9mIGhvc3Q6cG9ydCBtYXBwaW5ncyB0byBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhvc3RuYW1lIGFuZCBwb3J0IHRvIGNvbm5lY3QgdG8gKi8KICAgY3VybF9UaW1lQ29uZCB0aW1lY29uZGl0aW9uOyAvKiBraW5kIG9mIHRpbWUvZGF0ZSBjb21wYXJpc29uICovCiAgIHRpbWVfdCB0aW1ldmFsdWU7ICAgICAgIC8qIHdoYXQgdGltZSB0byBjb21wYXJlIHdpdGggKi8KICAgQ3VybF9IdHRwUmVxIGh0dHByZXE7ICAgLyogd2hhdCBraW5kIG9mIEhUVFAgcmVxdWVzdCAoaWYgYW55KSBpcyB0aGlzICovCkBAIC0xNTU1LDcgKzE2MDgsNiBAQAogICBib29sIGh0dHBfc2V0X3JlZmVyZXI7IC8qIGlzIGEgY3VzdG9tIHJlZmVyZXIgdXNlZCAqLwogICBib29sIGh0dHBfYXV0b19yZWZlcmVyOyAvKiBzZXQgImNvcnJlY3QiIHJlZmVyZXIgd2hlbiBmb2xsb3dpbmcgbG9jYXRpb246ICovCiAgIGJvb2wgb3B0X25vX2JvZHk7ICAgICAgLyogYXMgc2V0IHdpdGggQ1VSTE9QVF9OT0JPRFkgKi8KLSAgYm9vbCBzZXRfcG9ydDsgICAgICAgICAvKiBjdXN0b20gcG9ydCBudW1iZXIgdXNlZCAqLwogICBib29sIHVwbG9hZDsgICAgICAgICAgIC8qIHVwbG9hZCByZXF1ZXN0ICovCiAgIGVudW0gQ1VSTF9ORVRSQ19PUFRJT04KICAgICAgICB1c2VfbmV0cmM7ICAgICAgICAvKiBkZWZpbmVkIGluIGluY2x1ZGUvY3VybC5oICovCkBAIC0xNTgwLDYgKzE2MzIsNyBAQAogICBib29sIGNvbm5lY3Rfb25seTsgICAgIC8qIG1ha2UgY29ubmVjdGlvbiwgbGV0IGFwcGxpY2F0aW9uIHVzZSB0aGUgc29ja2V0ICovCiAgIGJvb2wgc3NsX2VuYWJsZV9iZWFzdDsgLyogZXNwZWNpYWxseSBhbGxvdyB0aGlzIGZsYXcgZm9yIGludGVyb3BlcmFiaWxpdHkncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNha2UqLworICBib29sIHNzbF9ub19yZXZva2U7ICAgIC8qIGRpc2FibGUgU1NMIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzICovCiAgIGxvbmcgc3NoX2F1dGhfdHlwZXM7ICAgLyogYWxsb3dlZCBTU0ggYXV0aCB0eXBlcyAqLwogICBib29sIGh0dHBfdGVfc2tpcDsgICAgIC8qIHBhc3MgdGhlIHJhdyBib2R5IGRhdGEgdG8gdGhlIHVzZXIsIGV2ZW4gd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyLWVuY29kZWQgKGNodW5rZWQsIGNvbXByZXNzZWQpICovCkBAIC0xNTk0LDcgKzE2NDcsNyBAQAogICBsb25nIGFsbG93ZWRfcHJvdG9jb2xzOwogICBsb25nIHJlZGlyX3Byb3RvY29sczsKICNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIGxvbmcgc29ja3M1X2dzc2FwaV9uZWM7IC8qIGZsYWcgdG8gc3VwcG9ydCBuZWMgc29ja3M1IHNlcnZlciAqLworICBib29sIHNvY2tzNV9nc3NhcGlfbmVjOyAvKiBGbGFnIHRvIHN1cHBvcnQgTkVDIFNPQ0tTNSBzZXJ2ZXIgKi8KICNlbmRpZgogICBzdHJ1Y3QgY3VybF9zbGlzdCAqbWFpbF9yY3B0OyAvKiBsaW5rZWQgbGlzdCBvZiBtYWlsIHJlY2lwaWVudHMgKi8KICAgYm9vbCBzYXNsX2lyOyAgICAgICAgIC8qIEVuYWJsZS9kaXNhYmxlIFNBU0wgaW5pdGlhbCByZXNwb25zZSAqLwpAQCAtMTYxNiwxNSArMTY2OSwyMCBAQAogICBib29sIHRjcF9rZWVwYWxpdmU7ICAgIC8qIHVzZSBUQ1Aga2VlcGFsaXZlcyAqLwogICBsb25nIHRjcF9rZWVwaWRsZTsgICAgIC8qIHNlY29uZHMgaW4gaWRsZSBiZWZvcmUgc2VuZGluZyBrZWVwYWxpdmUgcHJvYmUgKi8KICAgbG9uZyB0Y3Bfa2VlcGludHZsOyAgICAvKiBzZWNvbmRzIGJldHdlZW4gVENQIGtlZXBhbGl2ZSBwcm9iZXMgKi8KKyAgYm9vbCB0Y3BfZmFzdG9wZW47ICAgICAvKiB1c2UgVENQIEZhc3QgT3BlbiAqLwogCiAgIHNpemVfdCBtYXhjb25uZWN0czsgIC8qIE1heCBpZGxlIGNvbm5lY3Rpb25zIGluIHRoZSBjb25uZWN0aW9uIGNhY2hlICovCiAKLSAgYm9vbCBzc2xfZW5hYmxlX25wbjsgIC8qIFRMUyBOUE4gZXh0ZW5zaW9uPyAqLwotICBib29sIHNzbF9lbmFibGVfYWxwbjsgLyogVExTIEFMUE4gZXh0ZW5zaW9uPyAqLworICBib29sIHNzbF9lbmFibGVfbnBuOyAgICAgIC8qIFRMUyBOUE4gZXh0ZW5zaW9uPyAqLworICBib29sIHNzbF9lbmFibGVfYWxwbjsgICAgIC8qIFRMUyBBTFBOIGV4dGVuc2lvbj8gKi8KICAgYm9vbCBwYXRoX2FzX2lzOyAgICAgIC8qIGFsbG93IGRvdGRvdHM/ICovCiAgIGJvb2wgcGlwZXdhaXQ7ICAgICAgICAvKiB3YWl0IGZvciBwaXBlL211bHRpcGxleCBzdGF0dXMgYmVmb3JlIHN0YXJ0aW5nIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjb25uZWN0aW9uICovCiAgIGxvbmcgZXhwZWN0XzEwMF90aW1lb3V0OyAvKiBpbiBtaWxsaXNlY29uZHMgKi8KKworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqc3RyZWFtX2RlcGVuZHNfb247CisgIGJvb2wgc3RyZWFtX2RlcGVuZHNfZTsgLyogc2V0IG9yIGRvbid0IHNldCB0aGUgRXhjbHVzaXZlIGJpdCAqLworICBpbnQgc3RyZWFtX3dlaWdodDsKIH07CiAKIHN0cnVjdCBOYW1lcyB7CmRpZmYgLS1naXQgYS9saWIvdmF1dGgvY2xlYXJ0ZXh0LmMgYi9saWIvdmF1dGgvY2xlYXJ0ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAwM2Y1MQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9jbGVhcnRleHQuYwpAQCAtMCwwICsxLDE1NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKiBSRkM0NjE2IFBMQUlOIGF1dGhlbnRpY2F0aW9uCisgKiBEcmFmdCAgIExPR0lOIFNBU0wgTWVjaGFuaXNtIDxkcmFmdC1tdXJjaGlzb24tc2FzbC1sb2dpbi0wMC50eHQ+CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorI2luY2x1ZGUgInVybGRhdGEuaCIKKworI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKKyNpbmNsdWRlICJjdXJsX21kNS5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAic3RydG9rLmgiCisjaW5jbHVkZSAic3RyZXF1YWwuaCIKKyNpbmNsdWRlICJyYXdzdHIuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgUExBSU4gbWVzc2FnZSByZWFkeQorICogZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfcGxhaW5fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIGNoYXIgKnBsYWluYXV0aDsKKyAgc2l6ZV90IHVsZW47CisgIHNpemVfdCBwbGVuOworCisgIHVsZW4gPSBzdHJsZW4odXNlcnApOworICBwbGVuID0gc3RybGVuKHBhc3N3ZHApOworCisgIHBsYWluYXV0aCA9IG1hbGxvYygyICogdWxlbiArIHBsZW4gKyAyKTsKKyAgaWYoIXBsYWluYXV0aCkgeworICAgICpvdXRsZW4gPSAwOworICAgICpvdXRwdHIgPSBOVUxMOworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogQ2FsY3VsYXRlIHRoZSByZXBseSAqLworICBtZW1jcHkocGxhaW5hdXRoLCB1c2VycCwgdWxlbik7CisgIHBsYWluYXV0aFt1bGVuXSA9ICdcMCc7CisgIG1lbWNweShwbGFpbmF1dGggKyB1bGVuICsgMSwgdXNlcnAsIHVsZW4pOworICBwbGFpbmF1dGhbMiAqIHVsZW4gKyAxXSA9ICdcMCc7CisgIG1lbWNweShwbGFpbmF1dGggKyAyICogdWxlbiArIDIsIHBhc3N3ZHAsIHBsZW4pOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlcGx5ICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCBwbGFpbmF1dGgsIDIgKiB1bGVuICsgcGxlbiArIDIsIG91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxlbik7CisgIGZyZWUocGxhaW5hdXRoKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIExPR0lOIG1lc3NhZ2UgY29udGFpbmluZyB0aGUKKyAqIHVzZXIgbmFtZSBvciBwYXNzd29yZCByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHZhbHVlcCAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIG9yIHVzZXIncyBwYXNzd29yZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2xvZ2luX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWVwLCBjaGFyICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQoreworICBzaXplX3QgdmxlbiA9IHN0cmxlbih2YWx1ZXApOworCisgIGlmKCF2bGVuKSB7CisgICAgLyogQ2FsY3VsYXRlIGFuIGVtcHR5IHJlcGx5ICovCisgICAgKm91dHB0ciA9IHN0cmR1cCgiPSIpOworICAgIGlmKCpvdXRwdHIpIHsKKyAgICAgICpvdXRsZW4gPSAoc2l6ZV90KSAxOworICAgICAgcmV0dXJuIENVUkxFX09LOworICAgIH0KKworICAgICpvdXRsZW4gPSAwOworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgdmFsdWUgKi8KKyAgcmV0dXJuIEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCB2YWx1ZXAsIHZsZW4sIG91dHB0ciwgb3V0bGVuKTsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfZXh0ZXJuYWxfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBFWFRFUk5BTCBtZXNzYWdlIGNvbnRhaW5pbmcKKyAqIHRoZSB1c2VyIG5hbWUgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VyICAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2V4dGVybmFsX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKK3sKKyAgLyogVGhpcyBpcyB0aGUgc2FtZSBmb3JtYXR0aW5nIGFzIHRoZSBsb2dpbiBtZXNzYWdlICovCisgIHJldHVybiBDdXJsX2F1dGhfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgdXNlciwgb3V0cHRyLCBvdXRsZW4pOworfQpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL2NyYW0uYyBiL2xpYi92YXV0aC9jcmFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QwMmUwNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9jcmFtLmMKQEAgLTAsMCArMSwxMzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDMjE5NSBDUkFNLU1ENSBhdXRoZW50aWNhdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAiY3VybF9obWFjLmgiCisjaW5jbHVkZSAiY3VybF9tZDUuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYW4gYWxyZWFkeSBlbmNvZGVkIENSQU0tTUQ1IGNoYWxsZW5nZSBtZXNzYWdlLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2UoY29uc3QgY2hhciAqY2hsZzY0LCBjaGFyICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGNobGc2NGxlbiA9IHN0cmxlbihjaGxnNjQpOworCisgICpvdXRwdHIgPSBOVUxMOworICAqb3V0bGVuID0gMDsKKworICAvKiBEZWNvZGUgdGhlIGNoYWxsZW5nZSBpZiBuZWNlc3NhcnkgKi8KKyAgaWYoY2hsZzY0bGVuICYmICpjaGxnNjQgIT0gJz0nKQorICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICh1bnNpZ25lZCBjaGFyICoqKSBvdXRwdHIsIG91dGxlbik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfY3JhbV9tZDVfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBDUkFNLU1ENSByZXNwb25zZSBtZXNzYWdlIHJlYWR5CisgKiBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIGNobGcgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlLgorICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2NyYW1fbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICBITUFDX2NvbnRleHQgKmN0eHQ7CisgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RfTEVOXTsKKyAgY2hhciAqcmVzcG9uc2U7CisKKyAgaWYoY2hsZykKKyAgICBjaGxnbGVuID0gc3RybGVuKGNobGcpOworCisgIC8qIENvbXB1dGUgdGhlIGRpZ2VzdCB1c2luZyB0aGUgcGFzc3dvcmQgYXMgdGhlIGtleSAqLworICBjdHh0ID0gQ3VybF9ITUFDX2luaXQoQ3VybF9ITUFDX01ENSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHBhc3N3ZHApKSk7CisgIGlmKCFjdHh0KQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIFVwZGF0ZSB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIGNoYWxsZW5nZSAqLworICBpZihjaGxnbGVuID4gMCkKKyAgICBDdXJsX0hNQUNfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNobGcsCisgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoY2hsZ2xlbikpOworCisgIC8qIEZpbmFsaXNlIHRoZSBkaWdlc3QgKi8KKyAgQ3VybF9ITUFDX2ZpbmFsKGN0eHQsIGRpZ2VzdCk7CisKKyAgLyogR2VuZXJhdGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3BvbnNlID0gYXByaW50ZigKKyAgICAiJXMgJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCisgICAgdXNlcnAsIGRpZ2VzdFswXSwgZGlnZXN0WzFdLCBkaWdlc3RbMl0sIGRpZ2VzdFszXSwgZGlnZXN0WzRdLAorICAgIGRpZ2VzdFs1XSwgZGlnZXN0WzZdLCBkaWdlc3RbN10sIGRpZ2VzdFs4XSwgZGlnZXN0WzldLCBkaWdlc3RbMTBdLAorICAgIGRpZ2VzdFsxMV0sIGRpZ2VzdFsxMl0sIGRpZ2VzdFsxM10sIGRpZ2VzdFsxNF0sIGRpZ2VzdFsxNV0pOworICBpZighcmVzcG9uc2UpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KKyAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIHJlc3BvbnNlLCAwLCBvdXRwdHIsIG91dGxlbik7CisKKyAgZnJlZShyZXNwb25zZSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8qICFDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggKi8KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9kaWdlc3QuYyBiL2xpYi92YXV0aC9kaWdlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmNmMDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL2RpZ2VzdC5jCkBAIC0wLDAgKzEsODgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFJGQzI4MzEgRElHRVNULU1ENSBhdXRoZW50aWNhdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAidmF1dGgvZGlnZXN0LmgiCisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAiY3VybF9obWFjLmgiCisjaW5jbHVkZSAiY3VybF9tZDUuaCIKKyNpbmNsdWRlICJ2dGxzL3Z0bHMuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgInN0cnRvay5oIgorI2luY2x1ZGUgInJhd3N0ci5oIgorI2luY2x1ZGUgIm5vbi1hc2NpaS5oIiAvKiBpbmNsdWRlZCBmb3IgQ3VybF9jb252ZXJ0Xy4uLiBwcm90b3R5cGVzICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworI2lmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisjZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfQVVUSCAgICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX0FVVEhfSU5UICAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9BVVRIX0NPTkYgICAgICAgICgxIDw8IDIpCisKKyNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCAgICAgICJhdXRoIgorI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCAgImF1dGgtaW50IgorI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0NPTkYgImF1dGgtY29uZiIKKworLyogVGhlIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WIG1hY3JvIGJlbG93IGlzIGZvciBub24tQVNDSUkgbWFjaGluZXMuCisgICBJdCBjb252ZXJ0cyBkaWdlc3QgdGV4dCB0byBBU0NJSSBzbyB0aGUgTUQ1IHdpbGwgYmUgY29ycmVjdCBmb3IKKyAgIHdoYXQgdWx0aW1hdGVseSBnb2VzIG92ZXIgdGhlIG5ldHdvcmsuCisqLworI2RlZmluZSBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihhLCBiKSBcCisgIHJlc3VsdCA9IEN1cmxfY29udmVydF90b19uZXR3b3JrKGEsIChjaGFyICopYiwgc3RybGVuKChjb25zdCBjaGFyKiliKSk7IFwKKyAgaWYocmVzdWx0KSB7IFwKKyAgICBmcmVlKGIpOyBcCisgICAgcmV0dXJuIHJlc3VsdDsgXAorICB9CisjZW5kaWYgLyogIVVTRV9XSU5ET1dTX1NTUEkgKi8KKworYm9vbCBDdXJsX2F1dGhfZGlnZXN0X2dldF9wYWlyKGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqdmFsdWUsIGNoYXIgKmNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZHB0cikKK3sKKyAgaW50IGM7CisgIGJvb2wgc3RhcnRzX3dpdGhfcXVvdGUgPSBGQUxTRTsKKyAgYm9vbCBlc2NhcGUgPSBGQUxTRTsKKworICBmb3IoYyA9IERJR0VTVF9NQVhfVkFMVUVfTEVOR1RIIC0gMTsgKCpzdHIgJiYgKCpzdHIgIT0gJz0nKSAmJiBjLS0pOykKKyAgICAqdmFsdWUrKyA9ICpzdHIrKzsKKyAgKnZhbHVlID0gMDsKKworICBpZignPScgIT0gKnN0cisrKQorICAgIC8qIGVlaywgbm8gbWF0Y2ggKi8KKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYoJ1wiJyA9PSAqc3RyKSB7CisgICAgLyogVGhpcyBzdGFydHMgd2l0aCBhIHF1b3RlIHNvIGl0IG11c3QgZW5kIHdpdGggb25lIGFzIHdlbGwhICovCisgICAgc3RyKys7CisgICAgc3RhcnRzX3dpdGhfcXVvdGUgPSBUUlVFOworICB9CisKKyAgZm9yKGMgPSBESUdFU1RfTUFYX0NPTlRFTlRfTEVOR1RIIC0gMTsgKnN0ciAmJiBjLS07IHN0cisrKSB7CisgICAgc3dpdGNoKCpzdHIpIHsKKyAgICBjYXNlICdcXCc6CisgICAgICBpZighZXNjYXBlKSB7CisgICAgICAgIC8qIHBvc3NpYmx5IHRoZSBzdGFydCBvZiBhbiBlc2NhcGVkIHF1b3RlICovCisgICAgICAgIGVzY2FwZSA9IFRSVUU7CisgICAgICAgICpjb250ZW50KysgPSAnXFwnOyAvKiBFdmVuIHRob3VnaCB0aGlzIGlzIGFuIGVzY2FwZSBjaGFyYWN0ZXIsIHdlIHN0aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZSBpdCBhcy1pcyBpbiB0aGUgdGFyZ2V0IGJ1ZmZlciAqLworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnLCc6CisgICAgICBpZighc3RhcnRzX3dpdGhfcXVvdGUpIHsKKyAgICAgICAgLyogVGhpcyBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgaWYgd2UgZGlkbid0IGdldCBhIHN0YXJ0aW5nCisgICAgICAgICAgIHF1b3RlIGFuZCB0aGVuIHdlIGRvICJzbG9wcHkiIHBhcnNpbmcgKi8KKyAgICAgICAgYyA9IDA7IC8qIHRoZSBlbmQgKi8KKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgJ1xyJzoKKyAgICBjYXNlICdcbic6CisgICAgICAvKiBlbmQgb2Ygc3RyaW5nICovCisgICAgICBjID0gMDsKKyAgICAgIGNvbnRpbnVlOworCisgICAgY2FzZSAnXCInOgorICAgICAgaWYoIWVzY2FwZSAmJiBzdGFydHNfd2l0aF9xdW90ZSkgeworICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nICovCisgICAgICAgIGMgPSAwOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGVzY2FwZSA9IEZBTFNFOworICAgICpjb250ZW50KysgPSAqc3RyOworICB9CisKKyAgKmNvbnRlbnQgPSAwOworICAqZW5kcHRyID0gc3RyOworCisgIHJldHVybiBUUlVFOworfQorCisjaWYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKKy8qIENvbnZlcnQgbWQ1IGNodW5rIHRvIFJGQzI2MTcgKHNlY3Rpb24gMy4xLjMpIC1zdWl0YWJsZSBhc2NpaSBzdHJpbmcqLworc3RhdGljIHZvaWQgYXV0aF9kaWdlc3RfbWQ1X3RvX2FzY2lpKHVuc2lnbmVkIGNoYXIgKnNvdXJjZSwgLyogMTYgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXN0KSAvKiAzMyBieXRlcyAqLworeworICBpbnQgaTsKKyAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBzbnByaW50ZigoY2hhciAqKSAmZGVzdFtpICogMl0sIDMsICIlMDJ4Iiwgc291cmNlW2ldKTsKK30KKworLyogUGVyZm9ybSBxdW90ZWQtc3RyaW5nIGVzY2FwaW5nIGFzIGRlc2NyaWJlZCBpbiBSRkMyNjE2IGFuZCBpdHMgZXJyYXRhICovCitzdGF0aWMgY2hhciAqYXV0aF9kaWdlc3Rfc3RyaW5nX3F1b3RlZChjb25zdCBjaGFyICpzb3VyY2UpCit7CisgIGNoYXIgKmRlc3QsICpkOworICBjb25zdCBjaGFyICpzID0gc291cmNlOworICBzaXplX3QgbiA9IDE7IC8qIG51bGwgdGVybWluYXRvciAqLworCisgIC8qIENhbGN1bGF0ZSBzaXplIG5lZWRlZCAqLworICB3aGlsZSgqcykgeworICAgICsrbjsKKyAgICBpZigqcyA9PSAnIicgfHwgKnMgPT0gJ1xcJykgeworICAgICAgKytuOworICAgIH0KKyAgICArK3M7CisgIH0KKworICBkZXN0ID0gbWFsbG9jKG4pOworICBpZihkZXN0KSB7CisgICAgcyA9IHNvdXJjZTsKKyAgICBkID0gZGVzdDsKKyAgICB3aGlsZSgqcykgeworICAgICAgaWYoKnMgPT0gJyInIHx8ICpzID09ICdcXCcpIHsKKyAgICAgICAgKmQrKyA9ICdcXCc7CisgICAgICB9CisgICAgICAqZCsrID0gKnMrKzsKKyAgICB9CisgICAgKmQgPSAwOworICB9CisKKyAgcmV0dXJuIGRlc3Q7Cit9CisKKy8qIFJldHJpZXZlcyB0aGUgdmFsdWUgZm9yIGEgY29ycmVzcG9uZGluZyBrZXkgZnJvbSB0aGUgY2hhbGxlbmdlIHN0cmluZworICogcmV0dXJucyBUUlVFIGlmIHRoZSBrZXkgY291bGQgYmUgZm91bmQsIEZBTFNFIGlmIGl0IGRvZXMgbm90IGV4aXN0cworICovCitzdGF0aWMgYm9vbCBhdXRoX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfdmFsX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBlbmRfY2hhcikKK3sKKyAgY2hhciAqZmluZF9wb3M7CisgIHNpemVfdCBpOworCisgIGZpbmRfcG9zID0gc3Ryc3RyKGNobGcsIGtleSk7CisgIGlmKCFmaW5kX3BvcykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZmluZF9wb3MgKz0gc3RybGVuKGtleSk7CisKKyAgZm9yKGkgPSAwOyAqZmluZF9wb3MgJiYgKmZpbmRfcG9zICE9IGVuZF9jaGFyICYmIGkgPCBtYXhfdmFsX2xlbiAtIDE7ICsraSkKKyAgICB2YWx1ZVtpXSA9ICpmaW5kX3BvcysrOworICB2YWx1ZVtpXSA9ICdcMCc7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBhdXRoX2RpZ2VzdF9nZXRfcW9wX3ZhbHVlcyhjb25zdCBjaGFyICpvcHRpb25zLCBpbnQgKnZhbHVlKQoreworICBjaGFyICp0bXA7CisgIGNoYXIgKnRva2VuOworICBjaGFyICp0b2tfYnVmOworCisgIC8qIEluaXRpYWxpc2UgdGhlIG91dHB1dCAqLworICAqdmFsdWUgPSAwOworCisgIC8qIFRva2VuaXNlIHRoZSBsaXN0IG9mIHFvcCB2YWx1ZXMuIFVzZSBhIHRlbXBvcmFyeSBjbG9uZSBvZiB0aGUgYnVmZmVyIHNpbmNlCisgICAgIHN0cnRva19yKCkgcnVpbnMgaXQuICovCisgIHRtcCA9IHN0cmR1cChvcHRpb25zKTsKKyAgaWYoIXRtcCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICB0b2tlbiA9IHN0cnRva19yKHRtcCwgIiwiLCAmdG9rX2J1Zik7CisgIHdoaWxlKHRva2VuICE9IE5VTEwpIHsKKyAgICBpZihDdXJsX3Jhd19lcXVhbCh0b2tlbiwgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCkpCisgICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIOworICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEhfSU5UKSkKKyAgICAgICp2YWx1ZSB8PSBESUdFU1RfUU9QX1ZBTFVFX0FVVEhfSU5UOworICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEhfQ09ORikpCisgICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIX0NPTkY7CisKKyAgICB0b2tlbiA9IHN0cnRva19yKE5VTEwsICIsIiwgJnRva19idWYpOworICB9CisKKyAgZnJlZSh0bXApOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKKyAqIGF1dGhfZGVjb2RlX2RpZ2VzdF9tZDVfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIGludGVybmFsbHkgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBESUdFU1QtTUQ1IGNoYWxsZW5nZQorICogbWVzc2FnZSBpbnRvIHRoZSBzZXBlcmF0ZSBhdHRyaWJ1dGVzLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIG5vbmNlICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSBub25jZSB3aWxsIGJlIHN0b3JlZC4KKyAqIG5sZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBub25jZSBidWZmZXIuCisgKiByZWFsbSAgIFtpbi9vdXRdIC0gVGhlIGJ1ZmZlciB3aGVyZSB0aGUgcmVhbG0gd2lsbCBiZSBzdG9yZWQuCisgKiBybGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgcmVhbG0gYnVmZmVyLgorICogYWxnICAgICBbaW4vb3V0XSAtIFRoZSBidWZmZXIgd2hlcmUgdGhlIGFsZ29yaXRobSB3aWxsIGJlIHN0b3JlZC4KKyAqIGFsZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBhbGdvcml0aG0gYnVmZmVyLgorICogcW9wICAgICBbaW4vb3V0XSAtIFRoZSBidWZmZXIgd2hlcmUgdGhlIHFvcC1vcHRpb25zIHdpbGwgYmUgc3RvcmVkLgorICogcWxlbiAgICBbaW5dICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIHFvcCBidWZmZXIuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitzdGF0aWMgQ1VSTGNvZGUgYXV0aF9kZWNvZGVfZGlnZXN0X21kNV9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbm9uY2UsIHNpemVfdCBubGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZWFsbSwgc2l6ZV90IHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFsZywgc2l6ZV90IGFsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnFvcCwgc2l6ZV90IHFsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICBzaXplX3QgY2hsZzY0bGVuID0gc3RybGVuKGNobGc2NCk7CisKKyAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgaWYoY2hsZzY0bGVuICYmICpjaGxnNjQgIT0gJz0nKSB7CisgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmNobGcsICZjaGxnbGVuKTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICBpZighY2hsZykKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisKKyAgLyogUmV0cmlldmUgbm9uY2Ugc3RyaW5nIGZyb20gdGhlIGNoYWxsZW5nZSAqLworICBpZighYXV0aF9kaWdlc3RfZ2V0X2tleV92YWx1ZSgoY2hhciAqKSBjaGxnLCAibm9uY2U9XCIiLCBub25jZSwgbmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wiJykpIHsKKyAgICBmcmVlKGNobGcpOworICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgfQorCisgIC8qIFJldHJpZXZlIHJlYWxtIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KKyAgaWYoIWF1dGhfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKikgY2hsZywgInJlYWxtPVwiIiwgcmVhbG0sIHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIicpKSB7CisgICAgLyogQ2hhbGxlbmdlIGRvZXMgbm90IGhhdmUgYSByZWFsbSwgc2V0IGVtcHR5IHN0cmluZyBbUkZDMjgzMV0gcGFnZSA2ICovCisgICAgc3RyY3B5KHJlYWxtLCAiIik7CisgIH0KKworICAvKiBSZXRyaWV2ZSBhbGdvcml0aG0gc3RyaW5nIGZyb20gdGhlIGNoYWxsZW5nZSAqLworICBpZighYXV0aF9kaWdlc3RfZ2V0X2tleV92YWx1ZSgoY2hhciAqKSBjaGxnLCAiYWxnb3JpdGhtPSIsIGFsZywgYWxlbiwgJywnKSkgeworICAgIGZyZWUoY2hsZyk7CisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogUmV0cmlldmUgcW9wLW9wdGlvbnMgc3RyaW5nIGZyb20gdGhlIGNoYWxsZW5nZSAqLworICBpZighYXV0aF9kaWdlc3RfZ2V0X2tleV92YWx1ZSgoY2hhciAqKSBjaGxnLCAicW9wPVwiIiwgcW9wLCBxbGVuLCAnXCInKSkgeworICAgIGZyZWUoY2hsZyk7CisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgZnJlZShjaGxnKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBESUdFU1QtTUQ1IHJlc3BvbnNlIG1lc3NhZ2UKKyAqIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgorICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiBzZXJ2aWNlIFtpbl0gICAgIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIGh0dHAsIHNtdHAsIHBvcCBvciBpbWFwLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGk7CisgIE1ENV9jb250ZXh0ICpjdHh0OworICBjaGFyICpyZXNwb25zZSA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RfTEVOXTsKKyAgY2hhciBIQTFfaGV4WzIgKiBNRDVfRElHRVNUX0xFTiArIDFdOworICBjaGFyIEhBMl9oZXhbMiAqIE1ENV9ESUdFU1RfTEVOICsgMV07CisgIGNoYXIgcmVzcF9oYXNoX2hleFsyICogTUQ1X0RJR0VTVF9MRU4gKyAxXTsKKyAgY2hhciBub25jZVs2NF07CisgIGNoYXIgcmVhbG1bMTI4XTsKKyAgY2hhciBhbGdvcml0aG1bNjRdOworICBjaGFyIHFvcF9vcHRpb25zWzY0XTsKKyAgaW50IHFvcF92YWx1ZXM7CisgIGNoYXIgY25vbmNlWzMzXTsKKyAgdW5zaWduZWQgaW50IGVudHJvcHlbNF07CisgIGNoYXIgbm9uY2VDb3VudFtdID0gIjAwMDAwMDAxIjsKKyAgY2hhciBtZXRob2RbXSAgICAgPSAiQVVUSEVOVElDQVRFIjsKKyAgY2hhciBxb3BbXSAgICAgICAgPSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIOworICBjaGFyICpzcG4gICAgICAgICA9IE5VTEw7CisKKyAgLyogRGVjb2RlIHRoZSBjaGFsbGFuZ2UgbWVzc2FnZSAqLworICByZXN1bHQgPSBhdXRoX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoY2hsZzY0LCBub25jZSwgc2l6ZW9mKG5vbmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBzaXplb2YocmVhbG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtLCBzaXplb2YoYWxnb3JpdGhtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFvcF9vcHRpb25zLCBzaXplb2YocW9wX29wdGlvbnMpKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgLyogV2Ugb25seSBzdXBwb3J0IG1kNSBzZXNzaW9ucyAqLworICBpZihzdHJjbXAoYWxnb3JpdGhtLCAibWQ1LXNlc3MiKSAhPSAwKQorICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKworICAvKiBHZXQgdGhlIHFvcC12YWx1ZXMgZnJvbSB0aGUgcW9wLW9wdGlvbnMgKi8KKyAgcmVzdWx0ID0gYXV0aF9kaWdlc3RfZ2V0X3FvcF92YWx1ZXMocW9wX29wdGlvbnMsICZxb3BfdmFsdWVzKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgLyogV2Ugb25seSBzdXBwb3J0IGF1dGggcXVhbGl0eS1vZi1wcm90ZWN0aW9uICovCisgIGlmKCEocW9wX3ZhbHVlcyAmIERJR0VTVF9RT1BfVkFMVUVfQVVUSCkpCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworCisgIC8qIEdlbmVyYXRlIDE2IGJ5dGVzIG9mIHJhbmRvbSBkYXRhICovCisgIGVudHJvcHlbMF0gPSBDdXJsX3JhbmQoZGF0YSk7CisgIGVudHJvcHlbMV0gPSBDdXJsX3JhbmQoZGF0YSk7CisgIGVudHJvcHlbMl0gPSBDdXJsX3JhbmQoZGF0YSk7CisgIGVudHJvcHlbM10gPSBDdXJsX3JhbmQoZGF0YSk7CisKKyAgLyogQ29udmVydCB0aGUgcmFuZG9tIGRhdGEgaW50byBhIDMyIGJ5dGUgaGV4IHN0cmluZyAqLworICBzbnByaW50Zihjbm9uY2UsIHNpemVvZihjbm9uY2UpLCAiJTA4eCUwOHglMDh4JTA4eCIsCisgICAgICAgICAgIGVudHJvcHlbMF0sIGVudHJvcHlbMV0sIGVudHJvcHlbMl0sIGVudHJvcHlbM10pOworCisgIC8qIFNvIGZhciBzbyBnb29kLCBub3cgY2FsY3VsYXRlIEExIGFuZCBIKEExKSBhY2NvcmRpbmcgdG8gUkZDIDI4MzEgKi8KKyAgY3R4dCA9IEN1cmxfTUQ1X2luaXQoQ3VybF9ESUdFU1RfTUQ1KTsKKyAgaWYoIWN0eHQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHVzZXJwLAorICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbih1c2VycCkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByZWFsbSwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4ocmVhbG0pKSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4ocGFzc3dkcCkpKTsKKyAgQ3VybF9NRDVfZmluYWwoY3R4dCwgZGlnZXN0KTsKKworICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOworICBpZighY3R4dCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgZGlnZXN0LCBNRDVfRElHRVNUX0xFTik7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2UsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG5vbmNlKSkpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNub25jZSwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oY25vbmNlKSkpOworICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOworCisgIC8qIENvbnZlcnQgY2FsY3VsYXRlZCAxNiBvY3RldCBoZXggaW50byAzMiBieXRlcyBzdHJpbmcgKi8KKyAgZm9yKGkgPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU47IGkrKykKKyAgICBzbnByaW50ZigmSEExX2hleFsyICogaV0sIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKKworICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCisgIHNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgcmVhbG0sIE5VTEwpOworICBpZighc3BuKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIENhbGN1bGF0ZSBIKEEyKSAqLworICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOworICBpZighY3R4dCkgeworICAgIGZyZWUoc3BuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obWV0aG9kKSkpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNwbiwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3BuKSkpOworICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOworCisgIGZvcihpID0gMDsgaSA8IE1ENV9ESUdFU1RfTEVOOyBpKyspCisgICAgc25wcmludGYoJkhBMl9oZXhbMiAqIGldLCAzLCAiJTAyeCIsIGRpZ2VzdFtpXSk7CisKKyAgLyogTm93IGNhbGN1bGF0ZSB0aGUgcmVzcG9uc2UgaGFzaCAqLworICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOworICBpZighY3R4dCkgeworICAgIGZyZWUoc3BuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIEhBMV9oZXgsIDIgKiBNRDVfRElHRVNUX0xFTik7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2UsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG5vbmNlKSkpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2VDb3VudCwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obm9uY2VDb3VudCkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjbm9uY2UsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKGNub25jZSkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBxb3AsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHFvcCkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIEhBMl9oZXgsIDIgKiBNRDVfRElHRVNUX0xFTik7CisgIEN1cmxfTUQ1X2ZpbmFsKGN0eHQsIGRpZ2VzdCk7CisKKyAgZm9yKGkgPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU47IGkrKykKKyAgICBzbnByaW50ZigmcmVzcF9oYXNoX2hleFsyICogaV0sIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKKworICAvKiBHZW5lcmF0ZSB0aGUgcmVzcG9uc2UgKi8KKyAgcmVzcG9uc2UgPSBhcHJpbnRmKCJ1c2VybmFtZT1cIiVzXCIscmVhbG09XCIlc1wiLG5vbmNlPVwiJXNcIiwiCisgICAgICAgICAgICAgICAgICAgICAiY25vbmNlPVwiJXNcIixuYz1cIiVzXCIsZGlnZXN0LXVyaT1cIiVzXCIscmVzcG9uc2U9JXMsIgorICAgICAgICAgICAgICAgICAgICAgInFvcD0lcyIsCisgICAgICAgICAgICAgICAgICAgICB1c2VycCwgcmVhbG0sIG5vbmNlLAorICAgICAgICAgICAgICAgICAgICAgY25vbmNlLCBub25jZUNvdW50LCBzcG4sIHJlc3BfaGFzaF9oZXgsIHFvcCk7CisgIGZyZWUoc3BuKTsKKyAgaWYoIXJlc3BvbnNlKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCByZXNwb25zZSwgMCwgb3V0cHRyLCBvdXRsZW4pOworCisgIGZyZWUocmVzcG9uc2UpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBIVFRQIERJR0VTVCBjaGFsbGVuZ2UgbWVzc2FnZSBpbnRvIHRoZSBzZXBlcmF0ZQorICogYXR0cmlidXRlcy4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGNobGcgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBkaWdlc3QgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpCit7CisgIGJvb2wgYmVmb3JlID0gRkFMU0U7IC8qIGdvdCBhIG5vbmNlIGJlZm9yZSAqLworICBib29sIGZvdW5kQXV0aCA9IEZBTFNFOworICBib29sIGZvdW5kQXV0aEludCA9IEZBTFNFOworICBjaGFyICp0b2tlbiA9IE5VTEw7CisgIGNoYXIgKnRtcCA9IE5VTEw7CisKKyAgLyogSWYgd2UgYWxyZWFkeSBoYXZlIHJlY2VpdmVkIGEgbm9uY2UsIGtlZXAgdGhhdCBpbiBtaW5kICovCisgIGlmKGRpZ2VzdC0+bm9uY2UpCisgICAgYmVmb3JlID0gVFJVRTsKKworICAvKiBDbGVhbiB1cCBhbnkgZm9ybWVyIGxlZnRvdmVycyBhbmQgaW5pdGlhbGlzZSB0byBkZWZhdWx0cyAqLworICBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoZGlnZXN0KTsKKworICBmb3IoOzspIHsKKyAgICBjaGFyIHZhbHVlW0RJR0VTVF9NQVhfVkFMVUVfTEVOR1RIXTsKKyAgICBjaGFyIGNvbnRlbnRbRElHRVNUX01BWF9DT05URU5UX0xFTkdUSF07CisKKyAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCisgICAgd2hpbGUoKmNobGcgJiYgSVNTUEFDRSgqY2hsZykpCisgICAgICBjaGxnKys7CisKKyAgICAvKiBFeHRyYWN0IGEgdmFsdWU9Y29udGVudCBwYWlyICovCisgICAgaWYoQ3VybF9hdXRoX2RpZ2VzdF9nZXRfcGFpcihjaGxnLCB2YWx1ZSwgY29udGVudCwgJmNobGcpKSB7CisgICAgICBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgIm5vbmNlIikpIHsKKyAgICAgICAgZnJlZShkaWdlc3QtPm5vbmNlKTsKKyAgICAgICAgZGlnZXN0LT5ub25jZSA9IHN0cmR1cChjb250ZW50KTsKKyAgICAgICAgaWYoIWRpZ2VzdC0+bm9uY2UpCisgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICB9CisgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAic3RhbGUiKSkgeworICAgICAgICBpZihDdXJsX3Jhd19lcXVhbChjb250ZW50LCAidHJ1ZSIpKSB7CisgICAgICAgICAgZGlnZXN0LT5zdGFsZSA9IFRSVUU7CisgICAgICAgICAgZGlnZXN0LT5uYyA9IDE7IC8qIHdlIG1ha2UgYSBuZXcgbm9uY2Ugbm93ICovCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJyZWFsbSIpKSB7CisgICAgICAgIGZyZWUoZGlnZXN0LT5yZWFsbSk7CisgICAgICAgIGRpZ2VzdC0+cmVhbG0gPSBzdHJkdXAoY29udGVudCk7CisgICAgICAgIGlmKCFkaWdlc3QtPnJlYWxtKQorICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgfQorICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgIm9wYXF1ZSIpKSB7CisgICAgICAgIGZyZWUoZGlnZXN0LT5vcGFxdWUpOworICAgICAgICBkaWdlc3QtPm9wYXF1ZSA9IHN0cmR1cChjb250ZW50KTsKKyAgICAgICAgaWYoIWRpZ2VzdC0+b3BhcXVlKQorICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgfQorICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgInFvcCIpKSB7CisgICAgICAgIGNoYXIgKnRva19idWY7CisgICAgICAgIC8qIFRva2VuaXplIHRoZSBsaXN0IGFuZCBjaG9vc2UgYXV0aCBpZiBwb3NzaWJsZSwgdXNlIGEgdGVtcG9yYXJ5CisgICAgICAgICAgIGNsb25lIG9mIHRoZSBidWZmZXIgc2luY2Ugc3RydG9rX3IoKSBydWlucyBpdCAqLworICAgICAgICB0bXAgPSBzdHJkdXAoY29udGVudCk7CisgICAgICAgIGlmKCF0bXApCisgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICAgICAgdG9rZW4gPSBzdHJ0b2tfcih0bXAsICIsIiwgJnRva19idWYpOworICAgICAgICB3aGlsZSh0b2tlbiAhPSBOVUxMKSB7CisgICAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpKSB7CisgICAgICAgICAgICBmb3VuZEF1dGggPSBUUlVFOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCkpIHsKKyAgICAgICAgICAgIGZvdW5kQXV0aEludCA9IFRSVUU7CisgICAgICAgICAgfQorICAgICAgICAgIHRva2VuID0gc3RydG9rX3IoTlVMTCwgIiwiLCAmdG9rX2J1Zik7CisgICAgICAgIH0KKworICAgICAgICBmcmVlKHRtcCk7CisKKyAgICAgICAgLyogU2VsZWN0IG9ubHkgYXV0aCBvciBhdXRoLWludC4gT3RoZXJ3aXNlLCBpZ25vcmUgKi8KKyAgICAgICAgaWYoZm91bmRBdXRoKSB7CisgICAgICAgICAgZnJlZShkaWdlc3QtPnFvcCk7CisgICAgICAgICAgZGlnZXN0LT5xb3AgPSBzdHJkdXAoRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSCk7CisgICAgICAgICAgaWYoIWRpZ2VzdC0+cW9wKQorICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihmb3VuZEF1dGhJbnQpIHsKKyAgICAgICAgICBmcmVlKGRpZ2VzdC0+cW9wKTsKKyAgICAgICAgICBkaWdlc3QtPnFvcCA9IHN0cmR1cChESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCk7CisgICAgICAgICAgaWYoIWRpZ2VzdC0+cW9wKQorICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJhbGdvcml0aG0iKSkgeworICAgICAgICBmcmVlKGRpZ2VzdC0+YWxnb3JpdGhtKTsKKyAgICAgICAgZGlnZXN0LT5hbGdvcml0aG0gPSBzdHJkdXAoY29udGVudCk7CisgICAgICAgIGlmKCFkaWdlc3QtPmFsZ29yaXRobSkKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgICAgICBpZihDdXJsX3Jhd19lcXVhbChjb250ZW50LCAiTUQ1LXNlc3MiKSkKKyAgICAgICAgICBkaWdlc3QtPmFsZ28gPSBDVVJMRElHRVNUQUxHT19NRDVTRVNTOworICAgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKGNvbnRlbnQsICJNRDUiKSkKKyAgICAgICAgICBkaWdlc3QtPmFsZ28gPSBDVVJMRElHRVNUQUxHT19NRDU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogVW5rbm93biBzcGVjaWZpZXIsIGlnbm9yZSBpdCEgKi8KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgYnJlYWs7IC8qIFdlJ3JlIGRvbmUgaGVyZSAqLworCisgICAgLyogUGFzcyBhbGwgYWRkaXRpb25hbCBzcGFjZXMgaGVyZSAqLworICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQorICAgICAgY2hsZysrOworCisgICAgLyogQWxsb3cgdGhlIGxpc3QgdG8gYmUgY29tbWEtc2VwYXJhdGVkICovCisgICAgaWYoJywnID09ICpjaGxnKQorICAgICAgY2hsZysrOworICB9CisKKyAgLyogV2UgaGFkIGEgbm9uY2Ugc2luY2UgYmVmb3JlLCBhbmQgd2UgZ290IGFub3RoZXIgb25lIG5vdyB3aXRob3V0CisgICAgICdzdGFsZT10cnVlJy4gVGhpcyBtZWFucyB3ZSBwcm92aWRlZCBiYWQgY3JlZGVudGlhbHMgaW4gdGhlIHByZXZpb3VzCisgICAgIHJlcXVlc3QgKi8KKyAgaWYoYmVmb3JlICYmICFkaWdlc3QtPnN0YWxlKQorICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKworICAvKiBXZSBnb3QgdGhpcyBoZWFkZXIgd2l0aG91dCBhIG5vbmNlLCB0aGF0J3MgYSBiYWQgRGlnZXN0IGxpbmUhICovCisgIGlmKCFkaWdlc3QtPm5vbmNlKQorICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhUVFAgRElHRVNUIHJlc3BvbnNlIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcKKyAqIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIHJlcXVlc3QgW2luXSAgICAgLSBUaGUgSFRUUCByZXF1ZXN0LgorICogdXJpcGF0aCBbaW5dICAgICAtIFRoZSBwYXRoIG9mIHRoZSBIVFRQIHVyaS4KKyAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXJpcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIHVuc2lnbmVkIGNoYXIgbWQ1YnVmWzE2XTsgLyogMTYgYnl0ZXMvMTI4IGJpdHMgKi8KKyAgdW5zaWduZWQgY2hhciByZXF1ZXN0X2RpZ2VzdFszM107CisgIHVuc2lnbmVkIGNoYXIgKm1kNXRoaXM7CisgIHVuc2lnbmVkIGNoYXIgaGExWzMzXTsgICAgLyogMzIgZGlnaXRzIGFuZCAxIHplcm8gYnl0ZSAqLworICB1bnNpZ25lZCBjaGFyIGhhMlszM107ICAgIC8qIDMyIGRpZ2l0cyBhbmQgMSB6ZXJvIGJ5dGUgKi8KKyAgY2hhciBjbm9uY2VidWZbMzNdOworICBjaGFyICpjbm9uY2UgPSBOVUxMOworICBzaXplX3QgY25vbmNlX3N6ID0gMDsKKyAgY2hhciAqdXNlcnBfcXVvdGVkOworICBjaGFyICpyZXNwb25zZSA9IE5VTEw7CisgIGNoYXIgKnRtcCA9IE5VTEw7CisKKyAgaWYoIWRpZ2VzdC0+bmMpCisgICAgZGlnZXN0LT5uYyA9IDE7CisKKyAgaWYoIWRpZ2VzdC0+Y25vbmNlKSB7CisgICAgc25wcmludGYoY25vbmNlYnVmLCBzaXplb2YoY25vbmNlYnVmKSwgIiUwOHglMDh4JTA4eCUwOHgiLAorICAgICAgICAgICAgIEN1cmxfcmFuZChkYXRhKSwgQ3VybF9yYW5kKGRhdGEpLAorICAgICAgICAgICAgIEN1cmxfcmFuZChkYXRhKSwgQ3VybF9yYW5kKGRhdGEpKTsKKworICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCBjbm9uY2VidWYsIHN0cmxlbihjbm9uY2VidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY25vbmNlLCAmY25vbmNlX3N6KTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgZGlnZXN0LT5jbm9uY2UgPSBjbm9uY2U7CisgIH0KKworICAvKgorICAgIElmIHRoZSBhbGdvcml0aG0gaXMgIk1ENSIgb3IgdW5zcGVjaWZpZWQgKHdoaWNoIHRoZW4gZGVmYXVsdHMgdG8gTUQ1KToKKworICAgICAgQTEgPSB1bnEodXNlcm5hbWUtdmFsdWUpICI6IiB1bnEocmVhbG0tdmFsdWUpICI6IiBwYXNzd2QKKworICAgIElmIHRoZSBhbGdvcml0aG0gaXMgIk1ENS1zZXNzIiB0aGVuOgorCisgICAgICBBMSA9IEgodW5xKHVzZXJuYW1lLXZhbHVlKSAiOiIgdW5xKHJlYWxtLXZhbHVlKSAiOiIgcGFzc3dkKSAiOiIKKyAgICAgICAgICAgdW5xKG5vbmNlLXZhbHVlKSAiOiIgdW5xKGNub25jZS12YWx1ZSkKKyAgKi8KKworICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKikKKyAgICBhcHJpbnRmKCIlczolczolcyIsIHVzZXJwLCBkaWdlc3QtPnJlYWxtLCBwYXNzd2RwKTsKKyAgaWYoIW1kNXRoaXMpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgbWQ1dGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCisgIEN1cmxfbWQ1aXQobWQ1YnVmLCBtZDV0aGlzKTsKKyAgZnJlZShtZDV0aGlzKTsKKyAgYXV0aF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgaGExKTsKKworICBpZihkaWdlc3QtPmFsZ28gPT0gQ1VSTERJR0VTVEFMR09fTUQ1U0VTUykgeworICAgIC8qIG5vbmNlIGFuZCBjbm9uY2UgYXJlIE9VVFNJREUgdGhlIGhhc2ggKi8KKyAgICB0bXAgPSBhcHJpbnRmKCIlczolczolcyIsIGhhMSwgZGlnZXN0LT5ub25jZSwgZGlnZXN0LT5jbm9uY2UpOworICAgIGlmKCF0bXApCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIHRtcCk7IC8qIENvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCisgICAgQ3VybF9tZDVpdChtZDVidWYsICh1bnNpZ25lZCBjaGFyICopIHRtcCk7CisgICAgZnJlZSh0bXApOworICAgIGF1dGhfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIGhhMSk7CisgIH0KKworICAvKgorICAgIElmIHRoZSAicW9wIiBkaXJlY3RpdmUncyB2YWx1ZSBpcyAiYXV0aCIgb3IgaXMgdW5zcGVjaWZpZWQsIHRoZW4gQTIgaXM6CisKKyAgICAgIEEyID0gTWV0aG9kICI6IiBkaWdlc3QtdXJpLXZhbHVlCisKKyAgICBJZiB0aGUgInFvcCIgdmFsdWUgaXMgImF1dGgtaW50IiwgdGhlbiBBMiBpczoKKworICAgICAgQTIgPSBNZXRob2QgIjoiIGRpZ2VzdC11cmktdmFsdWUgIjoiIEgoZW50aXR5LWJvZHkpCisKKyAgICAoVGhlICJNZXRob2QiIHZhbHVlIGlzIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIGFzIHNwZWNpZmllZCBpbiBzZWN0aW9uCisgICAgNS4xLjEgb2YgUkZDIDI2MTYpCisgICovCisKKyAgbWQ1dGhpcyA9ICh1bnNpZ25lZCBjaGFyICopIGFwcmludGYoIiVzOiVzIiwgcmVxdWVzdCwgdXJpcGF0aCk7CisKKyAgaWYoZGlnZXN0LT5xb3AgJiYgQ3VybF9yYXdfZXF1YWwoZGlnZXN0LT5xb3AsICJhdXRoLWludCIpKSB7CisgICAgLyogV2UgZG9uJ3Qgc3VwcG9ydCBhdXRoLWludCBmb3IgUFVUIG9yIFBPU1QgYXQgdGhlIG1vbWVudC4KKyAgICAgICBUT0RPOiByZXBsYWNlIG1kNSBvZiBlbXB0eSBzdHJpbmcgd2l0aCBlbnRpdHktYm9keSBmb3IgUFVUL1BPU1QgKi8KKyAgICB1bnNpZ25lZCBjaGFyICptZDV0aGlzMiA9ICh1bnNpZ25lZCBjaGFyICopCisgICAgICBhcHJpbnRmKCIlczolcyIsIG1kNXRoaXMsICJkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIpOworICAgIGZyZWUobWQ1dGhpcyk7CisgICAgbWQ1dGhpcyA9IG1kNXRoaXMyOworICB9CisKKyAgaWYoIW1kNXRoaXMpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgbWQ1dGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCisgIEN1cmxfbWQ1aXQobWQ1YnVmLCBtZDV0aGlzKTsKKyAgZnJlZShtZDV0aGlzKTsKKyAgYXV0aF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgaGEyKTsKKworICBpZihkaWdlc3QtPnFvcCkgeworICAgIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKSBhcHJpbnRmKCIlczolczolMDh4OiVzOiVzOiVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+Y25vbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cW9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMik7CisgIH0KKyAgZWxzZSB7CisgICAgbWQ1dGhpcyA9ICh1bnNpZ25lZCBjaGFyICopIGFwcmludGYoIiVzOiVzOiVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTIpOworICB9CisKKyAgaWYoIW1kNXRoaXMpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgbWQ1dGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCisgIEN1cmxfbWQ1aXQobWQ1YnVmLCBtZDV0aGlzKTsKKyAgZnJlZShtZDV0aGlzKTsKKyAgYXV0aF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgcmVxdWVzdF9kaWdlc3QpOworCisgIC8qIEZvciB0ZXN0IGNhc2UgNjQgKHNub29wZWQgZnJvbSBhIE1vemlsbGEgMS4zYSByZXF1ZXN0KQorCisgICAgIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0idGVzdHVzZXIiLCByZWFsbT0idGVzdHJlYWxtIiwgXAorICAgICBub25jZT0iMTA1MzYwNDE0NSIsIHVyaT0iLzY0IiwgcmVzcG9uc2U9ImM1NWY3ZjMwZDgzZDc3NGEzZDJkY2FjZjcyNWFiYWNhIgorCisgICAgIERpZ2VzdCBwYXJhbWV0ZXJzIGFyZSBhbGwgcXVvdGVkIHN0cmluZ3MuICBVc2VybmFtZSB3aGljaCBpcyBwcm92aWRlZCBieQorICAgICB0aGUgdXNlciB3aWxsIG5lZWQgZG91YmxlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgd2l0aGluIGl0IGVzY2FwZWQuICBGb3IKKyAgICAgdGhlIG90aGVyIGZpZWxkcywgdGhpcyBzaG91bGRuJ3QgYmUgYW4gaXNzdWUuICByZWFsbSwgbm9uY2UsIGFuZCBvcGFxdWUKKyAgICAgYXJlIGNvcGllZCBhcyBpcyBmcm9tIHRoZSBzZXJ2ZXIsIGVzY2FwZXMgYW5kIGFsbC4gIGNub25jZSBpcyBnZW5lcmF0ZWQKKyAgICAgd2l0aCB3ZWItc2FmZSBjaGFyYWN0ZXJzLiAgdXJpIGlzIGFscmVhZHkgcGVyY2VudCBlbmNvZGVkLiAgbmMgaXMgOCBoZXgKKyAgICAgY2hhcmFjdGVycy4gIGFsZ29yaXRobSBhbmQgcW9wIHdpdGggc3RhbmRhcmQgdmFsdWVzIG9ubHkgY29udGFpbiB3ZWItc2FmZQorICAgICBjaGFyYWN0ZXJzLgorICAqLworICB1c2VycF9xdW90ZWQgPSBhdXRoX2RpZ2VzdF9zdHJpbmdfcXVvdGVkKHVzZXJwKTsKKyAgaWYoIXVzZXJwX3F1b3RlZCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBpZihkaWdlc3QtPnFvcCkgeworICAgIHJlc3BvbnNlID0gYXByaW50ZigidXNlcm5hbWU9XCIlc1wiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJyZWFsbT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgIm5vbmNlPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAidXJpPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAiY25vbmNlPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAibmM9JTA4eCwgIgorICAgICAgICAgICAgICAgICAgICAgICAicW9wPSVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJyZXNwb25zZT1cIiVzXCIiLAorICAgICAgICAgICAgICAgICAgICAgICB1c2VycF9xdW90ZWQsCisgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cmVhbG0sCisgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVyaXBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+Y25vbmNlLAorICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5jLAorICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnFvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kaWdlc3QpOworCisgICAgaWYoQ3VybF9yYXdfZXF1YWwoZGlnZXN0LT5xb3AsICJhdXRoIikpCisgICAgICBkaWdlc3QtPm5jKys7IC8qIFRoZSBuYyAoZnJvbSBSRkMpIGhhcyB0byBiZSBhIDggaGV4IGRpZ2l0IG51bWJlciAwCisgICAgICAgICAgICAgICAgICAgICAgIHBhZGRlZCB3aGljaCB0ZWxscyB0byB0aGUgc2VydmVyIGhvdyBtYW55IHRpbWVzIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHNhbWUgbm9uY2UgaW4gdGhlIHFvcD1hdXRoIG1vZGUgKi8KKyAgfQorICBlbHNlIHsKKyAgICByZXNwb25zZSA9IGFwcmludGYoInVzZXJuYW1lPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAicmVhbG09XCIlc1wiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJub25jZT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgInVyaT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgInJlc3BvbnNlPVwiJXNcIiIsCisgICAgICAgICAgICAgICAgICAgICAgIHVzZXJwX3F1b3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5yZWFsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdXJpcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kaWdlc3QpOworICB9CisgIGZyZWUodXNlcnBfcXVvdGVkKTsKKyAgaWYoIXJlc3BvbnNlKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIEFkZCB0aGUgb3B0aW9uYWwgZmllbGRzICovCisgIGlmKGRpZ2VzdC0+b3BhcXVlKSB7CisgICAgLyogQXBwZW5kIHRoZSBvcGFxdWUgKi8KKyAgICB0bXAgPSBhcHJpbnRmKCIlcywgb3BhcXVlPVwiJXNcIiIsIHJlc3BvbnNlLCBkaWdlc3QtPm9wYXF1ZSk7CisgICAgZnJlZShyZXNwb25zZSk7CisgICAgaWYoIXRtcCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgcmVzcG9uc2UgPSB0bXA7CisgIH0KKworICBpZihkaWdlc3QtPmFsZ29yaXRobSkgeworICAgIC8qIEFwcGVuZCB0aGUgYWxnb3JpdGhtICovCisgICAgdG1wID0gYXByaW50ZigiJXMsIGFsZ29yaXRobT1cIiVzXCIiLCByZXNwb25zZSwgZGlnZXN0LT5hbGdvcml0aG0pOworICAgIGZyZWUocmVzcG9uc2UpOworICAgIGlmKCF0bXApCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIHJlc3BvbnNlID0gdG1wOworICB9CisKKyAgLyogUmV0dXJuIHRoZSBvdXRwdXQgKi8KKyAgKm91dHB0ciA9IHJlc3BvbnNlOworICAqb3V0bGVuID0gc3RybGVuKHJlc3BvbnNlKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgZGlnZXN0IHNwZWNpZmljIGRhdGEuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkaWdlc3QgICAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCisgKgorICovCit2b2lkIEN1cmxfYXV0aF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KQoreworICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+bm9uY2UpOworICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+Y25vbmNlKTsKKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPnJlYWxtKTsKKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPm9wYXF1ZSk7CisgIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5xb3ApOworICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+YWxnb3JpdGhtKTsKKworICBkaWdlc3QtPm5jID0gMDsKKyAgZGlnZXN0LT5hbGdvID0gQ1VSTERJR0VTVEFMR09fTUQ1OyAvKiBkZWZhdWx0IGFsZ29yaXRobSAqLworICBkaWdlc3QtPnN0YWxlID0gRkFMU0U7IC8qIGRlZmF1bHQgbWVhbnMgbm9ybWFsLCBub3Qgc3RhbGUgKi8KK30KKyNlbmRpZiAgLyogIVVTRV9XSU5ET1dTX1NTUEkgKi8KKworI2VuZGlmICAvKiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggKi8KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9kaWdlc3QuaCBiL2xpYi92YXV0aC9kaWdlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzIyZGNlCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL2RpZ2VzdC5oCkBAIC0wLDAgKzEsNDMgQEAKKyNpZm5kZWYgSEVBREVSX0NVUkxfRElHRVNUX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfRElHRVNUX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorCisjZGVmaW5lIERJR0VTVF9NQVhfVkFMVUVfTEVOR1RIICAgICAgICAgICAyNTYKKyNkZWZpbmUgRElHRVNUX01BWF9DT05URU5UX0xFTkdUSCAgICAgICAgIDEwMjQKKworZW51bSB7CisgIENVUkxESUdFU1RBTEdPX01ENSwKKyAgQ1VSTERJR0VTVEFMR09fTUQ1U0VTUworfTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3QgdGhlIHJlYWxtIGZyb20gYSBjaGFsbGVuZ2UgbWVzc2FnZSAqLworYm9vbCBDdXJsX2F1dGhfZGlnZXN0X2dldF9wYWlyKGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqdmFsdWUsIGNoYXIgKmNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZHB0cik7CisKKyNlbmRpZgorCisjZW5kaWYgLyogSEVBREVSX0NVUkxfRElHRVNUX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9kaWdlc3Rfc3NwaS5jIGIvbGliL3ZhdXRoL2RpZ2VzdF9zc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzZDA4ZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9kaWdlc3Rfc3NwaS5jCkBAIC0wLDAgKzEsNTI3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKiBSRkMyODMxIERJR0VTVC1NRDUgYXV0aGVudGljYXRpb24KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAidmF1dGgvZGlnZXN0LmgiCisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisjaW5jbHVkZSAic3RyZHVwLmgiCisjaW5jbHVkZSAicmF3c3RyLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBESUdFU1QtTUQ1IHJlc3BvbnNlIG1lc3NhZ2UKKyAqIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogc2VydmljZSBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyBodHRwLCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIFRDSEFSICpzcG4gPSBOVUxMOworICBzaXplX3QgY2hsZ2xlbiA9IDA7CisgIHNpemVfdCB0b2tlbl9tYXggPSAwOworICB1bnNpZ25lZCBjaGFyICppbnB1dF90b2tlbiA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIgKm91dHB1dF90b2tlbiA9IE5VTEw7CisgIENyZWRIYW5kbGUgY3JlZGVudGlhbHM7CisgIEN0eHRIYW5kbGUgY29udGV4dDsKKyAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOworICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSBpZGVudGl0eTsKKyAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgKnBfaWRlbnRpdHk7CisgIFNlY0J1ZmZlciBjaGxnX2J1ZjsKKyAgU2VjQnVmZmVyIHJlc3BfYnVmOworICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKKyAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7CisgIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7CisgIHVuc2lnbmVkIGxvbmcgYXR0cnM7CisgIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLworCisgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgIGlmKHN0cmxlbihjaGxnNjQpICYmICpjaGxnNjQgIT0gJz0nKSB7CisgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmlucHV0X3Rva2VuLCAmY2hsZ2xlbik7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgaWYoIWlucHV0X3Rva2VuKSB7CisgICAgaW5mb2YoZGF0YSwgIkRJR0VTVC1NRDUgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IGNoYWxsZW5nZSBtZXNzYWdlKVxuIik7CisKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIH0KKworICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgRGlnZXN0U1NQICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9ESUdFU1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBmcmVlKGlucHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisgIH0KKworICB0b2tlbl9tYXggPSBTZWN1cml0eVBhY2thZ2UtPmNiTWF4VG9rZW47CisKKyAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7CisKKyAgLyogQWxsb2NhdGUgb3VyIHJlc3BvbnNlIGJ1ZmZlciAqLworICBvdXRwdXRfdG9rZW4gPSBtYWxsb2ModG9rZW5fbWF4KTsKKyAgaWYoIW91dHB1dF90b2tlbikgeworICAgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCisgIHNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgZGF0YS0+ZWFzeV9jb25uLT5ob3N0Lm5hbWUsIE5VTEwpOworICBpZighc3BuKSB7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworICAgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBpZih1c2VycCAmJiAqdXNlcnApIHsKKyAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJmlkZW50aXR5KTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIGZyZWUoc3BuKTsKKyAgICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKyAgICAgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICBwX2lkZW50aXR5ID0gJmlkZW50aXR5OworICB9CisgIGVsc2UKKyAgICAvKiBVc2UgdGhlIGN1cnJlbnQgV2luZG93cyB1c2VyICovCisgICAgcF9pZGVudGl0eSA9IE5VTEw7CisKKyAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlZGVudGlhbHMsICZleHBpcnkpOworCisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgeworICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworICAgIGZyZWUoc3BuKTsKKyAgICBmcmVlKG91dHB1dF90b2tlbik7CisgICAgZnJlZShpbnB1dF90b2tlbik7CisKKyAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworICB9CisKKyAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICBjaGxnX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIGNobGdfZGVzYy5jQnVmZmVycyAgPSAxOworICBjaGxnX2Rlc2MucEJ1ZmZlcnMgID0gJmNobGdfYnVmOworICBjaGxnX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICBjaGxnX2J1Zi5wdkJ1ZmZlciAgID0gaW5wdXRfdG9rZW47CisgIGNobGdfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7CisKKyAgLyogU2V0dXAgdGhlIHJlc3BvbnNlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICByZXNwX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIHJlc3BfZGVzYy5jQnVmZmVycyAgPSAxOworICByZXNwX2Rlc2MucEJ1ZmZlcnMgID0gJnJlc3BfYnVmOworICByZXNwX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICByZXNwX2J1Zi5wdkJ1ZmZlciAgID0gb3V0cHV0X3Rva2VuOworICByZXNwX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKHRva2VuX21heCk7CisKKyAgLyogR2VuZXJhdGUgb3VyIHJlc3BvbnNlIG1lc3NhZ2UgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoJmNyZWRlbnRpYWxzLCBOVUxMLCBzcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsICZjaGxnX2Rlc2MsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LCAmcmVzcF9kZXNjLCAmYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHBpcnkpOworCisgIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKKyAgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKKyAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4oJmNyZWRlbnRpYWxzLCAmcmVzcF9kZXNjKTsKKyAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkgeworICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKKyAgICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKyAgICBmcmVlKHNwbik7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworICAgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgIH0KKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLworICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKikgb3V0cHV0X3Rva2VuLCByZXNwX2J1Zi5jYkJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB0ciwgb3V0bGVuKTsKKworICAvKiBGcmVlIG91ciBoYW5kbGVzICovCisgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoJmNvbnRleHQpOworICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7CisKKyAgLyogRnJlZSB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCisgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworCisgIC8qIEZyZWUgdGhlIFNQTiAqLworICBmcmVlKHNwbik7CisKKyAgLyogRnJlZSB0aGUgcmVzcG9uc2UgYnVmZmVyICovCisgIGZyZWUob3V0cHV0X3Rva2VuKTsKKworICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDdXJsX292ZXJyaWRlX3NzcGlfaHR0cF9yZWFsbSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZSBkb21haW4gaW4gYSBTU1BJIGlkZW50aXR5IHN0cnVjdHVyZQorICogVGhlIHJlYWxtIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBjaGFsbGVuZ2UgbWVzc2FnZSBhbmQgdXNlZCBhcyB0aGUKKyAqIGRvbWFpbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBleHBsaWNpdGx5IHNldC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGNobGcgICAgIFtpbl0gICAgIC0gVGhlIGNoYWxsZW5nZSBtZXNzYWdlLgorICogaWRlbnRpdHkgW2luL291dF0gLSBUaGUgaWRlbnRpdHkgc3RydWN0dXJlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9vdmVycmlkZV9zc3BpX2h0dHBfcmVhbG0oY29uc3QgY2hhciAqY2hsZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZICppZGVudGl0eSkKK3sKKyAgeGNoYXJwX3UgZG9tYWluLCBkdXBfZG9tYWluOworCisgIC8qIElmIGRvbWFpbiBpcyBibGFuayBvciB1bnNldCwgY2hlY2sgY2hhbGxlbmdlIG1lc3NhZ2UgZm9yIHJlYWxtICovCisgIGlmKCFpZGVudGl0eS0+RG9tYWluIHx8ICFpZGVudGl0eS0+RG9tYWluTGVuZ3RoKSB7CisgICAgZm9yKDs7KSB7CisgICAgICBjaGFyIHZhbHVlW0RJR0VTVF9NQVhfVkFMVUVfTEVOR1RIXTsKKyAgICAgIGNoYXIgY29udGVudFtESUdFU1RfTUFYX0NPTlRFTlRfTEVOR1RIXTsKKworICAgICAgLyogUGFzcyBhbGwgYWRkaXRpb25hbCBzcGFjZXMgaGVyZSAqLworICAgICAgd2hpbGUoKmNobGcgJiYgSVNTUEFDRSgqY2hsZykpCisgICAgICAgIGNobGcrKzsKKworICAgICAgLyogRXh0cmFjdCBhIHZhbHVlPWNvbnRlbnQgcGFpciAqLworICAgICAgaWYoQ3VybF9hdXRoX2RpZ2VzdF9nZXRfcGFpcihjaGxnLCB2YWx1ZSwgY29udGVudCwgJmNobGcpKSB7CisgICAgICAgIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAicmVhbG0iKSkgeworCisgICAgICAgICAgLyogU2V0dXAgaWRlbnRpdHkncyBkb21haW4gYW5kIGxlbmd0aCAqLworICAgICAgICAgIGRvbWFpbi50Y2hhcl9wdHIgPSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcigoY2hhciAqKSBjb250ZW50KTsKKyAgICAgICAgICBpZighZG9tYWluLnRjaGFyX3B0cikKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgICAgICAgZHVwX2RvbWFpbi50Y2hhcl9wdHIgPSBfdGNzZHVwKGRvbWFpbi50Y2hhcl9wdHIpOworICAgICAgICAgIGlmKCFkdXBfZG9tYWluLnRjaGFyX3B0cikgeworICAgICAgICAgICAgQ3VybF91bmljb2RlZnJlZShkb21haW4udGNoYXJfcHRyKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgIH0KKworICAgICAgICAgIGZyZWUoaWRlbnRpdHktPkRvbWFpbik7CisgICAgICAgICAgaWRlbnRpdHktPkRvbWFpbiA9IGR1cF9kb21haW4udGJ5dGVfcHRyOworICAgICAgICAgIGlkZW50aXR5LT5Eb21haW5MZW5ndGggPSBjdXJseF91enRvdWwoX3Rjc2xlbihkdXBfZG9tYWluLnRjaGFyX3B0cikpOworICAgICAgICAgIGR1cF9kb21haW4udGNoYXJfcHRyID0gTlVMTDsKKworICAgICAgICAgIEN1cmxfdW5pY29kZWZyZWUoZG9tYWluLnRjaGFyX3B0cik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgLyogVW5rbm93biBzcGVjaWZpZXIsIGlnbm9yZSBpdCEgKi8KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBicmVhazsgLyogV2UncmUgZG9uZSBoZXJlICovCisKKyAgICAgIC8qIFBhc3MgYWxsIGFkZGl0aW9uYWwgc3BhY2VzIGhlcmUgKi8KKyAgICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQorICAgICAgICBjaGxnKys7CisKKyAgICAgIC8qIEFsbG93IHRoZSBsaXN0IHRvIGJlIGNvbW1hLXNlcGFyYXRlZCAqLworICAgICAgaWYoJywnID09ICpjaGxnKQorICAgICAgICBjaGxnKys7CisgICAgfQorICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgSFRUUCBESUdFU1QgY2hhbGxlbmdlIG1lc3NhZ2UgaW50byB0aGUgc2VwZXJhdGUKKyAqIGF0dHJpYnV0ZXMuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBjaGxnICAgIFtpbl0gICAgIC0gVGhlIGNoYWxsZW5nZSBtZXNzYWdlLgorICogZGlnZXN0ICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoY29uc3QgY2hhciAqY2hsZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KQoreworICBzaXplX3QgY2hsZ2xlbiA9IHN0cmxlbihjaGxnKTsKKworICAvKiBXZSBoYWQgYW4gaW5wdXQgdG9rZW4gYmVmb3JlIGFuZCB3ZSBnb3QgYW5vdGhlciBvbmUgbm93LiBUaGlzIG1lYW5zIHdlCisgICAgIHByb3ZpZGVkIGJhZCBjcmVkZW50aWFscyBpbiB0aGUgcHJldmlvdXMgcmVxdWVzdC4gKi8KKyAgaWYoZGlnZXN0LT5pbnB1dF90b2tlbikKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisKKyAgLyogU2ltcGx5IHN0b3JlIHRoZSBjaGFsbGVuZ2UgZm9yIHVzZSBsYXRlciAqLworICBkaWdlc3QtPmlucHV0X3Rva2VuID0gKEJZVEUgKikgQ3VybF9tZW1kdXAoY2hsZywgY2hsZ2xlbik7CisgIGlmKCFkaWdlc3QtPmlucHV0X3Rva2VuKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIGRpZ2VzdC0+aW5wdXRfdG9rZW5fbGVuID0gY2hsZ2xlbjsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhUVFAgRElHRVNUIHJlc3BvbnNlIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcKKyAqIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgorICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiByZXF1ZXN0IFtpbl0gICAgIC0gVGhlIEhUVFAgcmVxdWVzdC4KKyAqIHVyaXBhdGggW2luXSAgICAgLSBUaGUgcGF0aCBvZiB0aGUgSFRUUCB1cmkuCisgKiBkaWdlc3QgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVyaXBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgc2l6ZV90IHRva2VuX21heDsKKyAgQ3JlZEhhbmRsZSBjcmVkZW50aWFsczsKKyAgQ3R4dEhhbmRsZSBjb250ZXh0OworICBjaGFyICpyZXNwOworICBCWVRFICpvdXRwdXRfdG9rZW47CisgIFBTZWNQa2dJbmZvIFNlY3VyaXR5UGFja2FnZTsKKyAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgaWRlbnRpdHk7CisgIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZICpwX2lkZW50aXR5OworICBTZWNCdWZmZXIgY2hsZ19idWZbM107CisgIFNlY0J1ZmZlciByZXNwX2J1ZjsKKyAgU2VjQnVmZmVyRGVzYyBjaGxnX2Rlc2M7CisgIFNlY0J1ZmZlckRlc2MgcmVzcF9kZXNjOworICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKyAgVENIQVIgKnNwbjsKKworICAodm9pZCkgZGF0YTsKKworICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgRGlnZXN0U1NQICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9ESUdFU1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCisgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKKworICB0b2tlbl9tYXggPSBTZWN1cml0eVBhY2thZ2UtPmNiTWF4VG9rZW47CisKKyAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7CisKKyAgLyogQWxsb2NhdGUgdGhlIG91dHB1dCBidWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBtYXggdG9rZW4gc2l6ZSBhcyBpbmRpY2F0ZWQKKyAgICAgYnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgKi8KKyAgb3V0cHV0X3Rva2VuID0gbWFsbG9jKHRva2VuX21heCk7CisgIGlmKCFvdXRwdXRfdG9rZW4pCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgaWYodXNlcnAgJiYgKnVzZXJwKSB7CisgICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgIGlmKEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlcnAsIHBhc3N3ZHAsICZpZGVudGl0eSkpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBkb21haW4gKi8KKyAgICBpZihDdXJsX292ZXJyaWRlX3NzcGlfaHR0cF9yZWFsbSgoY29uc3QgY2hhciopIGRpZ2VzdC0+aW5wdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkZW50aXR5KSkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgIHBfaWRlbnRpdHkgPSAmaWRlbnRpdHk7CisgIH0KKyAgZWxzZQorICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KKyAgICBwX2lkZW50aXR5ID0gTlVMTDsKKworICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2lkZW50aXR5LCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVkZW50aWFscywgJmV4cGlyeSk7CisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgeworICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgIH0KKworICAvKiBTZXR1cCB0aGUgY2hhbGxlbmdlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyIGlmIHByZXNlbnQgKi8KKyAgY2hsZ19kZXNjLnVsVmVyc2lvbiAgICA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICBjaGxnX2Rlc2MuY0J1ZmZlcnMgICAgID0gMzsKKyAgY2hsZ19kZXNjLnBCdWZmZXJzICAgICA9IGNobGdfYnVmOworICBjaGxnX2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICBjaGxnX2J1ZlswXS5wdkJ1ZmZlciAgID0gZGlnZXN0LT5pbnB1dF90b2tlbjsKKyAgY2hsZ19idWZbMF0uY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChkaWdlc3QtPmlucHV0X3Rva2VuX2xlbik7CisgIGNobGdfYnVmWzFdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfUEtHX1BBUkFNUzsKKyAgY2hsZ19idWZbMV0ucHZCdWZmZXIgICA9ICh2b2lkICopIHJlcXVlc3Q7CisgIGNobGdfYnVmWzFdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoc3RybGVuKChjb25zdCBjaGFyICopIHJlcXVlc3QpKTsKKyAgY2hsZ19idWZbMl0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9QS0dfUEFSQU1TOworICBjaGxnX2J1ZlsyXS5wdkJ1ZmZlciAgID0gTlVMTDsKKyAgY2hsZ19idWZbMl0uY2JCdWZmZXIgICA9IDA7CisKKyAgLyogU2V0dXAgdGhlIHJlc3BvbnNlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICByZXNwX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIHJlc3BfZGVzYy5jQnVmZmVycyAgPSAxOworICByZXNwX2Rlc2MucEJ1ZmZlcnMgID0gJnJlc3BfYnVmOworICByZXNwX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICByZXNwX2J1Zi5wdkJ1ZmZlciAgID0gb3V0cHV0X3Rva2VuOworICByZXNwX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKHRva2VuX21heCk7CisKKyAgc3BuID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIoKGNoYXIgKikgdXJpcGF0aCk7CisgIGlmKCFzcG4pIHsKKyAgICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKyAgICBmcmVlKG91dHB1dF90b2tlbik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIC8qIEdlbmVyYXRlIG91ciByZXBvbnNlIG1lc3NhZ2UgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoJmNyZWRlbnRpYWxzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTQ19SRVFfVVNFX0hUVFBfU1RZTEUsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGxnX2Rlc2MsIDAsICZjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcF9kZXNjLCAmYXR0cnMsICZleHBpcnkpOworICBDdXJsX3VuaWNvZGVmcmVlKHNwbik7CisKKyAgaWYoc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX05FRURFRCB8fAorICAgICBzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKQorICAgIHNfcFNlY0ZuLT5Db21wbGV0ZUF1dGhUb2tlbigmY3JlZGVudGlhbHMsICZyZXNwX2Rlc2MpOworICBlbHNlIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKSB7CisgICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOworCisgICAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICByZXNwID0gbWFsbG9jKHJlc3BfYnVmLmNiQnVmZmVyICsgMSk7CisgIGlmKCFyZXNwKSB7CisgICAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dCgmY29udGV4dCk7CisgICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOworCisgICAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBDb3B5IHRoZSBnZW5lcmF0ZWQgcmVwb25zZSAqLworICBtZW1jcHkocmVzcCwgcmVzcF9idWYucHZCdWZmZXIsIHJlc3BfYnVmLmNiQnVmZmVyKTsKKyAgcmVzcFtyZXNwX2J1Zi5jYkJ1ZmZlcl0gPSAweDAwOworCisgIC8qIFJldHVybiB0aGUgcmVzcG9uc2UgKi8KKyAgKm91dHB0ciA9IHJlc3A7CisgICpvdXRsZW4gPSByZXNwX2J1Zi5jYkJ1ZmZlcjsKKworICAvKiBGcmVlIG91ciBoYW5kbGVzICovCisgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoJmNvbnRleHQpOworICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7CisKKyAgLyogRnJlZSB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCisgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworCisgIC8qIEZyZWUgdGhlIHJlc3BvbnNlIGJ1ZmZlciAqLworICBmcmVlKG91dHB1dF90b2tlbik7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2RpZ2VzdF9jbGVhbnVwKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGRpZ2VzdCBzcGVjaWZpYyBkYXRhLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGlnZXN0ICAgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorICoKKyAqLwordm9pZCBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKK3sKKyAgLyogRnJlZSB0aGUgaW5wdXQgdG9rZW4gKi8KKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPmlucHV0X3Rva2VuKTsKKworICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCisgIGRpZ2VzdC0+aW5wdXRfdG9rZW5fbGVuID0gMDsKK30KKworI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgJiYgIUNVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc2FzbF9nc3NhcGkuYyBiL2xpYi92YXV0aC9rcmI1X2dzc2FwaS5jCnNpbWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIGxpYi9jdXJsX3Nhc2xfZ3NzYXBpLmMKcmVuYW1lIHRvIGxpYi92YXV0aC9rcmI1X2dzc2FwaS5jCmluZGV4IDNjNmYzY2UuLjk3NTY3NWIgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3Nhc2xfZ3NzYXBpLmMKKysrIGIvbGliL3ZhdXRoL2tyYjVfZ3NzYXBpLmMKQEAgLTUsMTIgKzUsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE1LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgogICogQ29weXJpZ2h0IChDKSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKICNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKQEAgLTQxLDI1ICs0Miw3IEBACiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoKLSogQ3VybF9zYXNsX2J1aWxkX2dzc2FwaV9zcG4oKQotKgotKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nIGluIHRoZSBmb3JtYXQgc2VydmljZUBob3N0LgotKgotKiBQYXJhbWV0ZXJzOgotKgotKiBzZXJpdmNlICBbaW5dIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIHd3dywgc210cCwgcG9wIG9yIGltYXAuCi0qIGhvc3QgICAgIFtpbl0gLSBUaGUgaG9zdCBuYW1lIG9yIHJlYWxtLgotKgotKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIFNQTi4KLSovCi1jaGFyICpDdXJsX3Nhc2xfYnVpbGRfZ3NzYXBpX3Nwbihjb25zdCBjaGFyICpzZXJ2aWNlLCBjb25zdCBjaGFyICpob3N0KQotewotICAvKiBHZW5lcmF0ZSBhbmQgcmV0dXJuIG91ciBTUE4gKi8KLSAgcmV0dXJuIGFwcmludGYoIiVzQCVzIiwgc2VydmljZSwgaG9zdCk7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2UoKQorICogQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHVzZXIgdG9rZW4KICAqIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KQEAgLTY5LDIyICs1MiwyNCBAQAogICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCiAgKiB1c2VycCAgICAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCiAgKiBwYXNzZHdwICAgICBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCi0gKiBzZXJ2aWNlICAgICBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgorICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBob3N0ICAgICAgICBbaW5bICAgICAtIFRoZSBob3N0IG5hbWUuCiAgKiBtdXR1YWxfYXV0aCBbaW5dICAgICAtIEZsYWcgc3BlY2lmaW5nIHdoZXRoZXIgb3Igbm90IG11dHVhbCBhdXRoZW50aWNhdGlvbgogICogICAgICAgICAgICAgICAgICAgICAgICBpcyBlbmFibGVkLgogICogY2hsZzY0ICAgICAgW2luXSAgICAgLSBQb2ludGVyIHRvIHRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UKICAqICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KLSAqIGtyYjUgICAgICAgIFtpbi9vdXRdIC0gVGhlIGdzc2FwaSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIGtyYjUgICAgICAgIFtpbi9vdXRdIC0gVGhlIEtlcmJlcm9zIDUgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCiAgKiBvdXRwdHIgICAgICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CiAgKiAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCiAgKiBvdXRsZW4gICAgICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgogICoKICAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KICAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgbXV0dWFsX2F1dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LApAQCAtOTMsOSArNzgsOSBAQAogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgc2l6ZV90IGNobGdsZW4gPSAwOwogICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKLSAgT01fdWludDMyIGdzc19zdGF0dXM7Ci0gIE9NX3VpbnQzMiBnc3NfbWFqb3Jfc3RhdHVzOwotICBPTV91aW50MzIgZ3NzX21pbm9yX3N0YXR1czsKKyAgT01fdWludDMyIG1ham9yX3N0YXR1czsKKyAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKKyAgT01fdWludDMyIHVudXNlZF9zdGF0dXM7CiAgIGdzc19idWZmZXJfZGVzYyBzcG5fdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CiAgIGdzc19idWZmZXJfZGVzYyBpbnB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKICAgZ3NzX2J1ZmZlcl9kZXNjIG91dHB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKQEAgLTEwMywxMCArODgsOSBAQAogICAodm9pZCkgdXNlcnA7CiAgICh2b2lkKSBwYXNzd2RwOwogCi0gIGlmKGtyYjUtPmNvbnRleHQgPT0gR1NTX0NfTk9fQ09OVEVYVCkgeworICBpZigha3JiNS0+c3BuKSB7CiAgICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLwotICAgIGNoYXIgKnNwbiA9IEN1cmxfc2FzbF9idWlsZF9nc3NhcGlfc3BuKHNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZWFzeV9jb25uLT5ob3N0Lm5hbWUpOworICAgIGNoYXIgKnNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgTlVMTCwgaG9zdCk7CiAgICAgaWYoIXNwbikKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCkBAIC0xMTUsMTAgKzk5LDExIEBACiAgICAgc3BuX3Rva2VuLmxlbmd0aCA9IHN0cmxlbihzcG4pOwogCiAgICAgLyogSW1wb3J0IHRoZSBTUE4gKi8KLSAgICBnc3NfbWFqb3Jfc3RhdHVzID0gZ3NzX2ltcG9ydF9uYW1lKCZnc3NfbWlub3Jfc3RhdHVzLCAmc3BuX3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UsICZrcmI1LT5zcG4pOwotICAgIGlmKEdTU19FUlJPUihnc3NfbWFqb3Jfc3RhdHVzKSkgewotICAgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsIGdzc19taW5vcl9zdGF0dXMsICJnc3NfaW1wb3J0X25hbWUoKSBmYWlsZWQ6ICIpOworICAgIG1ham9yX3N0YXR1cyA9IGdzc19pbXBvcnRfbmFtZSgmbWlub3Jfc3RhdHVzLCAmc3BuX3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwgJmtyYjUtPnNwbik7CisgICAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKKyAgICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCAiZ3NzX2ltcG9ydF9uYW1lKCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKIAogICAgICAgZnJlZShzcG4pOwogCkBAIC0xMjcsOSArMTEyLDEwIEBACiAKICAgICBmcmVlKHNwbik7CiAgIH0KLSAgZWxzZSB7CisKKyAgaWYoY2hsZzY0ICYmICpjaGxnNjQpIHsKICAgICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICAgIGlmKHN0cmxlbihjaGxnNjQpICYmICpjaGxnNjQgIT0gJz0nKSB7CisgICAgaWYoKmNobGc2NCAhPSAnPScpIHsKICAgICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7CiAgICAgICBpZihyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDcsMjUgKzEzMywyNiBAQAogICAgIGlucHV0X3Rva2VuLmxlbmd0aCA9IGNobGdsZW47CiAgIH0KIAotICBnc3NfbWFqb3Jfc3RhdHVzID0gQ3VybF9nc3NfaW5pdF9zZWNfY29udGV4dChkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3NzX21pbm9yX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtyYjUtPmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPnNwbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkN1cmxfa3JiNV9tZWNoX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTk9fQ0hBTk5FTF9CSU5ESU5HUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXR1YWxfYXV0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIG1ham9yX3N0YXR1cyA9IEN1cmxfZ3NzX2luaXRfc2VjX2NvbnRleHQoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrcmI1LT5jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPnNwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ3VybF9rcmI1X21lY2hfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05PX0NIQU5ORUxfQklORElOR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0dWFsX2F1dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKKyAgLyogRnJlZSB0aGUgZGVjb2RlZCBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KICAgZnJlZShpbnB1dF90b2tlbi52YWx1ZSk7CiAKLSAgaWYoR1NTX0VSUk9SKGdzc19tYWpvcl9zdGF0dXMpKSB7CisgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CiAgICAgaWYob3V0cHV0X3Rva2VuLnZhbHVlKQotICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZnc3Nfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKKyAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CiAKLSAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgZ3NzX21pbm9yX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgImdzc19pbml0X3NlY19jb250ZXh0KCkgZmFpbGVkOiAiKTsKKyAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19pbml0X3NlY19jb250ZXh0KCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKICAgfQpAQCAtMTc1LDE0ICsxNjIsMTkgQEAKICAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKikgb3V0cHV0X3Rva2VuLnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfdG9rZW4ubGVuZ3RoLCBvdXRwdHIsIG91dGxlbik7CiAKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZvdXRwdXRfdG9rZW4pOworICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisgIH0KKyAgZWxzZSBpZihtdXR1YWxfYXV0aCkgeworICAgICpvdXRwdHIgPSBzdHJkdXAoIiIpOworICAgIGlmKCEqb3V0cHRyKQorICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKCkKKyAqIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoKQogICoKICAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgc2VjdXJpdHkKICAqIHRva2VuIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KQEAgLTE5MSwxNCArMTgzLDE0IEBACiAgKgogICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KICAqIGNobGc2NCAgW2luXSAgICAgLSBQb2ludGVyIHRvIHRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIGtyYjUgICAgW2luL291dF0gLSBUaGUgZ3NzYXBpIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICoga3JiNSAgICBbaW4vb3V0XSAtIFRoZSBLZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgogICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CiAgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KICAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KICAqCiAgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCiAgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLApAQCAtMjA5LDkgKzIwMSw5IEBACiAgIHNpemVfdCBtZXNzYWdlbGVuID0gMDsKICAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7CiAgIHVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UgPSBOVUxMOwotICBPTV91aW50MzIgZ3NzX3N0YXR1czsKLSAgT01fdWludDMyIGdzc19tYWpvcl9zdGF0dXM7Ci0gIE9NX3VpbnQzMiBnc3NfbWlub3Jfc3RhdHVzOworICBPTV91aW50MzIgbWFqb3Jfc3RhdHVzOworICBPTV91aW50MzIgbWlub3Jfc3RhdHVzOworICBPTV91aW50MzIgdW51c2VkX3N0YXR1czsKICAgZ3NzX2J1ZmZlcl9kZXNjIGlucHV0X3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOwogICBnc3NfYnVmZmVyX2Rlc2Mgb3V0cHV0X3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOwogICB1bnNpZ25lZCBpbnQgaW5kYXRhID0gMDsKQEAgLTIzNywxMiArMjI5LDEyIEBACiAgIH0KIAogICAvKiBHZXQgdGhlIGZ1bGx5IHF1YWxpZmllZCB1c2VybmFtZSBiYWNrIGZyb20gdGhlIGNvbnRleHQgKi8KLSAgZ3NzX21ham9yX3N0YXR1cyA9IGdzc19pbnF1aXJlX2NvbnRleHQoJmdzc19taW5vcl9zdGF0dXMsIGtyYjUtPmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Ci0gIGlmKEdTU19FUlJPUihnc3NfbWFqb3Jfc3RhdHVzKSkgewotICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCBnc3NfbWlub3Jfc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAiZ3NzX2lucXVpcmVfY29udGV4dCgpIGZhaWxlZDogIik7CisgIG1ham9yX3N0YXR1cyA9IGdzc19pbnF1aXJlX2NvbnRleHQoJm1pbm9yX3N0YXR1cywga3JiNS0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsICJnc3NfaW5xdWlyZV9jb250ZXh0KCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKICAgICBmcmVlKGNobGcpOwogCkBAIC0yNTAsMTAgKzI0MiwxMSBAQAogICB9CiAKICAgLyogQ29udmVydCB0aGUgdXNlcm5hbWUgZnJvbSBpbnRlcm5hbCBmb3JtYXQgdG8gYSBkaXNwbGF5YWJsZSB0b2tlbiAqLwotICBnc3NfbWFqb3Jfc3RhdHVzID0gZ3NzX2Rpc3BsYXlfbmFtZSgmZ3NzX21pbm9yX3N0YXR1cywgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZV90b2tlbiwgTlVMTCk7Ci0gIGlmKEdTU19FUlJPUihnc3NfbWFqb3Jfc3RhdHVzKSkgewotICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCBnc3NfbWlub3Jfc3RhdHVzLCAiZ3NzX2Rpc3BsYXlfbmFtZSgpIGZhaWxlZDogIik7CisgIG1ham9yX3N0YXR1cyA9IGdzc19kaXNwbGF5X25hbWUoJm1pbm9yX3N0YXR1cywgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lX3Rva2VuLCBOVUxMKTsKKyAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKKyAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19kaXNwbGF5X25hbWUoKSBmYWlsZWQ6ICIsCisgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKIAogICAgIGZyZWUoY2hsZyk7CiAKQEAgLTI2NSwxMiArMjU4LDEzIEBACiAgIGlucHV0X3Rva2VuLmxlbmd0aCA9IGNobGdsZW47CiAKICAgLyogRGVjcnlwdCB0aGUgaW5ib3VuZCBjaGFsbGVuZ2UgYW5kIG9idGFpbiB0aGUgcW9wICovCi0gIGdzc19tYWpvcl9zdGF0dXMgPSBnc3NfdW53cmFwKCZnc3NfbWlub3Jfc3RhdHVzLCBrcmI1LT5jb250ZXh0LCAmaW5wdXRfdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfdG9rZW4sIE5VTEwsICZxb3ApOwotICBpZihHU1NfRVJST1IoZ3NzX21ham9yX3N0YXR1cykpIHsKLSAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgZ3NzX21pbm9yX3N0YXR1cywgImdzc191bndyYXAoKSBmYWlsZWQ6ICIpOworICBtYWpvcl9zdGF0dXMgPSBnc3NfdW53cmFwKCZtaW5vcl9zdGF0dXMsIGtyYjUtPmNvbnRleHQsICZpbnB1dF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLCBOVUxMLCAmcW9wKTsKKyAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKKyAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc191bndyYXAoKSBmYWlsZWQ6ICIsCisgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKIAotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CiAgICAgZnJlZShjaGxnKTsKIAogICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKQEAgLTI4MCw3ICsyNzQsNyBAQAogICBpZihvdXRwdXRfdG9rZW4ubGVuZ3RoICE9IDQpIHsKICAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChpbnZhbGlkIHNlY3VyaXR5IGRhdGEpXG4iKTsKIAotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CiAgICAgZnJlZShjaGxnKTsKIAogICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKQEAgLTI4OCw3ICsyODIsNyBAQAogCiAgIC8qIENvcHkgdGhlIGRhdGEgb3V0IGFuZCBmcmVlIHRoZSBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KICAgbWVtY3B5KCZpbmRhdGEsIG91dHB1dF90b2tlbi52YWx1ZSwgNCk7Ci0gIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CiAgIGZyZWUoY2hsZyk7CiAKICAgLyogRXh0cmFjdCB0aGUgc2VjdXJpdHkgbGF5ZXIgKi8KQEAgLTI5Niw3ICsyOTAsNyBAQAogICBpZighKHNlY19sYXllciAmIEdTU0FVVEhfUF9OT05FKSkgewogICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGludmFsaWQgc2VjdXJpdHkgbGF5ZXIpXG4iKTsKIAotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CiAKICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CiAgIH0KQEAgLTMxNCwxNCArMzA4LDE0IEBACiAgIG1lc3NhZ2VsZW4gPSBzaXplb2Yob3V0ZGF0YSkgKyB1c2VybmFtZV90b2tlbi5sZW5ndGggKyAxOwogICBtZXNzYWdlID0gbWFsbG9jKG1lc3NhZ2VsZW4pOwogICBpZighbWVzc2FnZSkgewotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CiAKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCiAgIC8qIFBvcHVsYXRlIHRoZSBtZXNzYWdlIHdpdGggdGhlIHNlY3VyaXR5IGxheWVyLCBjbGllbnQgc3VwcG9ydGVkIHJlY2VpdmUKICAgICAgbWVzc2FnZSBzaXplIGFuZCBhdXRob3JpemF0aW9uIGlkZW50aXR5IGluY2x1ZGluZyB0aGUgMHgwMCBiYXNlZAotICAgICB0ZXJtaW5hdG9yLiBOb3RlOiBEaXNwaXRlIFJGQzQ3NTIgU2VjdGlvbiAzLjEgc3RhdGluZyAiVGhlIGF1dGhvcml6YXRpb24KKyAgICAgdGVybWluYXRvci4gTm90ZTogRGVzcGl0ZSBSRkM0NzUyIFNlY3Rpb24gMy4xIHN0YXRpbmcgIlRoZSBhdXRob3JpemF0aW9uCiAgICAgIGlkZW50aXR5IGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggdGhlIHplcm8tdmFsdWVkICgleDAwKSBvY3RldC4iIGl0IHNlZW1zCiAgICAgIG5lY2Vzc2FyeSB0byBpbmNsdWRlIGl0LiAqLwogICBvdXRkYXRhID0gaHRvbmwobWF4X3NpemUpIHwgc2VjX2xheWVyOwpAQCAtMzMxLDE4ICszMjUsMTkgQEAKICAgbWVzc2FnZVttZXNzYWdlbGVuIC0gMV0gPSAnXDAnOwogCiAgIC8qIEZyZWUgdGhlIHVzZXJuYW1lIHRva2VuIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCi0gIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKKyAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmdXNlcm5hbWVfdG9rZW4pOwogCiAgIC8qIFNldHVwIHRoZSAiYXV0aGVudGljYXRpb24gZGF0YSIgc2VjdXJpdHkgYnVmZmVyICovCiAgIGlucHV0X3Rva2VuLnZhbHVlID0gbWVzc2FnZTsKICAgaW5wdXRfdG9rZW4ubGVuZ3RoID0gbWVzc2FnZWxlbjsKIAogICAvKiBFbmNyeXB0IHRoZSBkYXRhICovCi0gIGdzc19tYWpvcl9zdGF0dXMgPSBnc3Nfd3JhcCgmZ3NzX21pbm9yX3N0YXR1cywga3JiNS0+Y29udGV4dCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX1FPUF9ERUZBVUxULCAmaW5wdXRfdG9rZW4sIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuKTsKLSAgaWYoR1NTX0VSUk9SKGdzc19tYWpvcl9zdGF0dXMpKSB7Ci0gICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsIGdzc19taW5vcl9zdGF0dXMsICJnc3Nfd3JhcCgpIGZhaWxlZDogIik7CisgIG1ham9yX3N0YXR1cyA9IGdzc193cmFwKCZtaW5vcl9zdGF0dXMsIGtyYjUtPmNvbnRleHQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX1FPUF9ERUZBVUxULCAmaW5wdXRfdG9rZW4sIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfdG9rZW4pOworICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgeworICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCAiZ3NzX3dyYXAoKSBmYWlsZWQ6ICIsCisgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKIAogICAgIGZyZWUobWVzc2FnZSk7CiAKQEAgLTM1NCw3ICszNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3Rva2VuLmxlbmd0aCwgb3V0cHRyLCBvdXRsZW4pOwogCiAgIC8qIEZyZWUgdGhlIG91dHB1dCBidWZmZXIgKi8KLSAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZnc3Nfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKKyAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKIAogICAvKiBGcmVlIHRoZSBtZXNzYWdlIGJ1ZmZlciAqLwogICBmcmVlKG1lc3NhZ2UpOwpAQCAtMzYzLDE2ICszNTgsMTYgQEAKIH0KIAogLyoKLSAqIEN1cmxfc2FzbF9nc3NhcGlfY2xlYW51cCgpCisgKiBDdXJsX2F1dGhfZ3NzYXBpX2NsZWFudXAoKQogICoKLSAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgZ3NzYXBpIHNwZWNpZmljIGRhdGEuCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHNwZWNpZmljIGRhdGEuCiAgKgogICogUGFyYW1ldGVyczoKICAqCi0gKiBrcmI1ICAgICBbaW4vb3V0XSAtIFRoZSBrZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCisgKiBrcmI1ICAgICBbaW4vb3V0XSAtIFRoZSBLZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCiAgKgogICovCi12b2lkIEN1cmxfc2FzbF9nc3NhcGlfY2xlYW51cChzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSkKK3ZvaWQgQ3VybF9hdXRoX2dzc2FwaV9jbGVhbnVwKHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1KQogewogICBPTV91aW50MzIgbWlub3Jfc3RhdHVzOwogCmRpZmYgLS1naXQgYS9saWIvdmF1dGgva3JiNV9zc3BpLmMgYi9saWIvdmF1dGgva3JiNV9zc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1NmE2NAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9rcmI1X3NzcGkuYwpAQCAtMCwwICsxLDQ5NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDNDc1MiBUaGUgS2VyYmVyb3MgVjUgKCJHU1NBUEkiKSBTQVNMIE1lY2hhbmlzbQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpICYmIGRlZmluZWQoVVNFX0tFUkJFUk9TNSkKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSB1c2VyIHRva2VuCisgKiBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgICAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHVzZXJwICAgICAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCisgKiBwYXNzZHdwICAgICBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiBzZXJ2aWNlICAgICBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyBodHRwLCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIGhvc3QgICAgICAgIFtpbl0gICAgIC0gVGhlIGhvc3QgbmFtZS4KKyAqIG11dHVhbF9hdXRoIFtpbl0gICAgIC0gRmxhZyBzcGVjaWZpbmcgd2hldGhlciBvciBub3QgbXV0dWFsIGF1dGhlbnRpY2F0aW9uCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQuCisgKiBjaGxnNjQgICAgICBbaW5dICAgICAtIFRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIGtyYjUgICAgICAgIFtpbi9vdXRdIC0gVGhlIEtlcmJlcm9zIDUgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBvdXRwdHIgICAgICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gICAgICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgbXV0dWFsX2F1dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKKyAgQ3R4dEhhbmRsZSBjb250ZXh0OworICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7CisgIFNlY0J1ZmZlciBjaGxnX2J1ZjsKKyAgU2VjQnVmZmVyIHJlc3BfYnVmOworICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKKyAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7CisgIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7CisgIHVuc2lnbmVkIGxvbmcgYXR0cnM7CisgIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLworCisgIGlmKCFrcmI1LT5zcG4pIHsKKyAgICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCisgICAga3JiNS0+c3BuID0gQ3VybF9hdXRoX2J1aWxkX3NwbihzZXJ2aWNlLCBob3N0LCBOVUxMKTsKKyAgICBpZigha3JiNS0+c3BuKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBpZigha3JiNS0+b3V0cHV0X3Rva2VuKSB7CisgICAgLyogUXVlcnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgZm9yIEtlcmJlcm9zICovCisgICAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5U2VjdXJpdHlQYWNrYWdlSW5mbygoVENIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoU1BfTkFNRV9LRVJCRVJPUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKKyAgICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisgICAgfQorCisgICAga3JiNS0+dG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOworCisgICAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKKworICAgIC8qIEFsbG9jYXRlIG91ciByZXNwb25zZSBidWZmZXIgKi8KKyAgICBrcmI1LT5vdXRwdXRfdG9rZW4gPSBtYWxsb2Moa3JiNS0+dG9rZW5fbWF4KTsKKyAgICBpZigha3JiNS0+b3V0cHV0X3Rva2VuKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBpZigha3JiNS0+Y3JlZGVudGlhbHMpIHsKKyAgICAvKiBEbyB3ZSBoYXZlIGNyZWRpZW50aWFscyB0byB1c2Ugb3IgYXJlIHdlIHVzaW5nIHNpbmdsZSBzaWduLW9uPyAqLworICAgIGlmKHVzZXJwICYmICp1c2VycCkgeworICAgICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJmtyYjUtPmlkZW50aXR5KTsKKyAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgICAga3JiNS0+cF9pZGVudGl0eSA9ICZrcmI1LT5pZGVudGl0eTsKKyAgICB9CisgICAgZWxzZQorICAgICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLworICAgICAga3JiNS0+cF9pZGVudGl0eSA9IE5VTEw7CisKKyAgICAvKiBBbGxvY2F0ZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgICAga3JiNS0+Y3JlZGVudGlhbHMgPSBtYWxsb2Moc2l6ZW9mKENyZWRIYW5kbGUpKTsKKyAgICBpZigha3JiNS0+Y3JlZGVudGlhbHMpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIG1lbXNldChrcmI1LT5jcmVkZW50aWFscywgMCwgc2l6ZW9mKENyZWRIYW5kbGUpKTsKKworICAgIC8qIEFjcXVpcmUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVYVChTUF9OQU1FX0tFUkJFUk9TKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JiNS0+cF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPmNyZWRlbnRpYWxzLCAmZXhwaXJ5KTsKKyAgICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCisgICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworCisgICAgLyogQWxsb2NhdGUgb3VyIG5ldyBjb250ZXh0IGhhbmRsZSAqLworICAgIGtyYjUtPmNvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKEN0eHRIYW5kbGUpKTsKKyAgICBpZigha3JiNS0+Y29udGV4dCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgbWVtc2V0KGtyYjUtPmNvbnRleHQsIDAsIHNpemVvZihDdHh0SGFuZGxlKSk7CisgIH0KKworICBpZihjaGxnNjQgJiYgKmNobGc2NCkgeworICAgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgICAgaWYoKmNobGc2NCAhPSAnPScpIHsKKyAgICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICAgIGlmKCFjaGxnKSB7CisgICAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOworCisgICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgICAgfQorCisgICAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICAgIGNobGdfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgICBjaGxnX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgICBjaGxnX2Rlc2MucEJ1ZmZlcnMgID0gJmNobGdfYnVmOworICAgIGNobGdfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgICAgY2hsZ19idWYucHZCdWZmZXIgICA9IGNobGc7CisgICAgY2hsZ19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChjaGxnbGVuKTsKKyAgfQorCisgIC8qIFNldHVwIHRoZSByZXNwb25zZSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgcmVzcF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICByZXNwX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgcmVzcF9kZXNjLnBCdWZmZXJzICA9ICZyZXNwX2J1ZjsKKyAgcmVzcF9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgcmVzcF9idWYucHZCdWZmZXIgICA9IGtyYjUtPm91dHB1dF90b2tlbjsKKyAgcmVzcF9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChrcmI1LT50b2tlbl9tYXgpOworCisgIC8qIEdlbmVyYXRlIG91ciBjaGFsbGVuZ2UtcmVzcG9uc2UgbWVzc2FnZSAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChrcmI1LT5jcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hsZyA/IGtyYjUtPmNvbnRleHQgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5zcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtdXR1YWxfYXV0aCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0NfUkVRX01VVFVBTF9BVVRIIDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFNFQ1VSSVRZX05BVElWRV9EUkVQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGxnID8gJmNobGdfZGVzYyA6IE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcF9kZXNjLCAmYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHBpcnkpOworCisgIC8qIEZyZWUgdGhlIGRlY29kZWQgY2hhbGxlbmdlIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIGZyZWUoY2hsZyk7CisKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LICYmIHN0YXR1cyAhPSBTRUNfSV9DT05USU5VRV9ORUVERUQpIHsKKyAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgfQorCisgIGlmKG1lbWNtcCgmY29udGV4dCwga3JiNS0+Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKSkgeworICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoa3JiNS0+Y29udGV4dCk7CisKKyAgICBtZW1jcHkoa3JiNS0+Y29udGV4dCwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisgIH0KKworICBpZihyZXNwX2J1Zi5jYkJ1ZmZlcikgeworICAgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIHJlc3BfYnVmLnB2QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwX2J1Zi5jYkJ1ZmZlciwgb3V0cHRyLCBvdXRsZW4pOworICB9CisgIGVsc2UgaWYobXV0dWFsX2F1dGgpIHsKKyAgICAqb3V0cHRyID0gc3RyZHVwKCIiKTsKKyAgICBpZighKm91dHB0cikKKyAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSBzZWN1cml0eQorICogdG9rZW4gbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBrcmI1ICAgIFtpbi9vdXRdIC0gVGhlIEtlcmJlcm9zIDUgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICBzaXplX3QgbWVzc2FnZWxlbiA9IDA7CisgIHNpemVfdCBhcHBkYXRhbGVuID0gMDsKKyAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIgKnRyYWlsZXIgPSBOVUxMOworICB1bnNpZ25lZCBjaGFyICptZXNzYWdlID0gTlVMTDsKKyAgdW5zaWduZWQgY2hhciAqcGFkZGluZyA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIgKmFwcGRhdGEgPSBOVUxMOworICBTZWNCdWZmZXIgaW5wdXRfYnVmWzJdOworICBTZWNCdWZmZXIgd3JhcF9idWZbM107CisgIFNlY0J1ZmZlckRlc2MgaW5wdXRfZGVzYzsKKyAgU2VjQnVmZmVyRGVzYyB3cmFwX2Rlc2M7CisgIHVuc2lnbmVkIGxvbmcgaW5kYXRhID0gMDsKKyAgdW5zaWduZWQgbG9uZyBvdXRkYXRhID0gMDsKKyAgdW5zaWduZWQgbG9uZyBxb3AgPSAwOworICB1bnNpZ25lZCBsb25nIHNlY19sYXllciA9IDA7CisgIHVuc2lnbmVkIGxvbmcgbWF4X3NpemUgPSAwOworICBTZWNQa2dDb250ZXh0X1NpemVzIHNpemVzOworICBTZWNQa2dDcmVkZW50aWFsc19OYW1lcyBuYW1lczsKKyAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKKyAgY2hhciAqdXNlcl9uYW1lOworCisgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGlucHV0IG1lc3NhZ2UgKi8KKyAgaWYoc3RybGVuKGNobGc2NCkgJiYgKmNobGc2NCAhPSAnPScpIHsKKyAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgIGlmKCFjaGxnKSB7CisgICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgc2VjdXJpdHkgbWVzc2FnZSlcbiIpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogR2V0IG91ciByZXNwb25zZSBzaXplIGluZm9ybWF0aW9uICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeUNvbnRleHRBdHRyaWJ1dGVzKGtyYjUtPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19BVFRSX1NJWkVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZXMpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBmcmVlKGNobGcpOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBHZXQgdGhlIGZ1bGx5IHF1YWxpZmllZCB1c2VybmFtZSBiYWNrIGZyb20gdGhlIGNvbnRleHQgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5Q3JlZGVudGlhbHNBdHRyaWJ1dGVzKGtyYjUtPmNyZWRlbnRpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfQVRUUl9OQU1FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lcyk7CisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgeworICAgIGZyZWUoY2hsZyk7CisKKyAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgfQorCisgIC8qIFNldHVwIHRoZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICBpbnB1dF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICBpbnB1dF9kZXNjLmNCdWZmZXJzID0gMjsKKyAgaW5wdXRfZGVzYy5wQnVmZmVycyA9IGlucHV0X2J1ZjsKKyAgaW5wdXRfYnVmWzBdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfU1RSRUFNOworICBpbnB1dF9idWZbMF0ucHZCdWZmZXIgPSBjaGxnOworICBpbnB1dF9idWZbMF0uY2JCdWZmZXIgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7CisgIGlucHV0X2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX0RBVEE7CisgIGlucHV0X2J1ZlsxXS5wdkJ1ZmZlciA9IE5VTEw7CisgIGlucHV0X2J1ZlsxXS5jYkJ1ZmZlciA9IDA7CisKKyAgLyogRGVjcnlwdCB0aGUgaW5ib3VuZCBjaGFsbGVuZ2UgYW5kIG9idGFpbiB0aGUgcW9wICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5EZWNyeXB0TWVzc2FnZShrcmI1LT5jb250ZXh0LCAmaW5wdXRfZGVzYywgMCwgJnFvcCk7CisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgeworICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHNlY3VyaXR5IG1lc3NhZ2UpXG4iKTsKKworICAgIGZyZWUoY2hsZyk7CisKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIH0KKworICAvKiBOb3QgNCBvY3RldHMgbG9uZyBzbyBmYWlsIGFzIHBlciBSRkM0NzUyIFNlY3Rpb24gMy4xICovCisgIGlmKGlucHV0X2J1ZlsxXS5jYkJ1ZmZlciAhPSA0KSB7CisgICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoaW52YWxpZCBzZWN1cml0eSBkYXRhKVxuIik7CisKKyAgICBmcmVlKGNobGcpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogQ29weSB0aGUgZGF0YSBvdXQgYW5kIGZyZWUgdGhlIGNoYWxsZW5nZSBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBtZW1jcHkoJmluZGF0YSwgaW5wdXRfYnVmWzFdLnB2QnVmZmVyLCA0KTsKKyAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKGlucHV0X2J1ZlsxXS5wdkJ1ZmZlcik7CisgIGZyZWUoY2hsZyk7CisKKyAgLyogRXh0cmFjdCB0aGUgc2VjdXJpdHkgbGF5ZXIgKi8KKyAgc2VjX2xheWVyID0gaW5kYXRhICYgMHgwMDAwMDBGRjsKKyAgaWYoIShzZWNfbGF5ZXIgJiBLRVJCX1dSQVBfTk9fRU5DUllQVCkpIHsKKyAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChpbnZhbGlkIHNlY3VyaXR5IGxheWVyKVxuIik7CisKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIH0KKworICAvKiBFeHRyYWN0IHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB0aGUgc2VydmVyIGNhbiByZWNlaXZlICovCisgIG1heF9zaXplID0gbnRvaGwoaW5kYXRhICYgMHhGRkZGRkYwMCk7CisgIGlmKG1heF9zaXplID4gMCkgeworICAgIC8qIFRoZSBzZXJ2ZXIgaGFzIHRvbGQgdXMgaXQgc3VwcG9ydHMgYSBtYXhpbXVtIHJlY2VpdmUgYnVmZmVyLCBob3dldmVyLCBhcworICAgICAgIHdlIGRvbid0IHJlcXVpcmUgb25lIHVubGVzcyB3ZSBhcmUgZW5jcnlwdGluZyBkYXRhLCB3ZSB0ZWxsIHRoZSBzZXJ2ZXIKKyAgICAgICBvdXIgcmVjZWl2ZSBidWZmZXIgaXMgemVyby4gKi8KKyAgICBtYXhfc2l6ZSA9IDA7CisgIH0KKworICAvKiBBbGxvY2F0ZSB0aGUgdHJhaWxlciAqLworICB0cmFpbGVyID0gbWFsbG9jKHNpemVzLmNiU2VjdXJpdHlUcmFpbGVyKTsKKyAgaWYoIXRyYWlsZXIpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgLyogQ29udmVydCB0aGUgdXNlciBuYW1lIHRvIFVURjggd2hlbiBvcGVyYXRpbmcgd2l0aCBVbmljb2RlICovCisgIHVzZXJfbmFtZSA9IEN1cmxfY29udmVydF90Y2hhcl90b19VVEY4KG5hbWVzLnNVc2VyTmFtZSk7CisgIGlmKCF1c2VyX25hbWUpIHsKKyAgICBmcmVlKHRyYWlsZXIpOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBBbGxvY2F0ZSBvdXIgbWVzc2FnZSAqLworICBtZXNzYWdlbGVuID0gc2l6ZW9mKG91dGRhdGEpICsgc3RybGVuKHVzZXJfbmFtZSkgKyAxOworICBtZXNzYWdlID0gbWFsbG9jKG1lc3NhZ2VsZW4pOworICBpZighbWVzc2FnZSkgeworICAgIGZyZWUodHJhaWxlcik7CisgICAgQ3VybF91bmljb2RlZnJlZSh1c2VyX25hbWUpOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBQb3B1bGF0ZSB0aGUgbWVzc2FnZSB3aXRoIHRoZSBzZWN1cml0eSBsYXllciwgY2xpZW50IHN1cHBvcnRlZCByZWNlaXZlCisgICAgIG1lc3NhZ2Ugc2l6ZSBhbmQgYXV0aG9yaXphdGlvbiBpZGVudGl0eSBpbmNsdWRpbmcgdGhlIDB4MDAgYmFzZWQKKyAgICAgdGVybWluYXRvci4gTm90ZTogRGVzcGl0ZSBSRkM0NzUyIFNlY3Rpb24gMy4xIHN0YXRpbmcgIlRoZSBhdXRob3JpemF0aW9uCisgICAgIGlkZW50aXR5IGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggdGhlIHplcm8tdmFsdWVkICgleDAwKSBvY3RldC4iIGl0IHNlZW1zCisgICAgIG5lY2Vzc2FyeSB0byBpbmNsdWRlIGl0LiAqLworICBvdXRkYXRhID0gaHRvbmwobWF4X3NpemUpIHwgc2VjX2xheWVyOworICBtZW1jcHkobWVzc2FnZSwgJm91dGRhdGEsIHNpemVvZihvdXRkYXRhKSk7CisgIHN0cmNweSgoY2hhciAqKSBtZXNzYWdlICsgc2l6ZW9mKG91dGRhdGEpLCB1c2VyX25hbWUpOworICBDdXJsX3VuaWNvZGVmcmVlKHVzZXJfbmFtZSk7CisKKyAgLyogQWxsb2NhdGUgdGhlIHBhZGRpbmcgKi8KKyAgcGFkZGluZyA9IG1hbGxvYyhzaXplcy5jYkJsb2NrU2l6ZSk7CisgIGlmKCFwYWRkaW5nKSB7CisgICAgZnJlZShtZXNzYWdlKTsKKyAgICBmcmVlKHRyYWlsZXIpOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBTZXR1cCB0aGUgImF1dGhlbnRpY2F0aW9uIGRhdGEiIHNlY3VyaXR5IGJ1ZmZlciAqLworICB3cmFwX2Rlc2MudWxWZXJzaW9uICAgID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIHdyYXBfZGVzYy5jQnVmZmVycyAgICAgPSAzOworICB3cmFwX2Rlc2MucEJ1ZmZlcnMgICAgID0gd3JhcF9idWY7CisgIHdyYXBfYnVmWzBdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgIHdyYXBfYnVmWzBdLnB2QnVmZmVyICAgPSB0cmFpbGVyOworICB3cmFwX2J1ZlswXS5jYkJ1ZmZlciAgID0gc2l6ZXMuY2JTZWN1cml0eVRyYWlsZXI7CisgIHdyYXBfYnVmWzFdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfREFUQTsKKyAgd3JhcF9idWZbMV0ucHZCdWZmZXIgICA9IG1lc3NhZ2U7CisgIHdyYXBfYnVmWzFdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobWVzc2FnZWxlbik7CisgIHdyYXBfYnVmWzJdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfUEFERElORzsKKyAgd3JhcF9idWZbMl0ucHZCdWZmZXIgICA9IHBhZGRpbmc7CisgIHdyYXBfYnVmWzJdLmNiQnVmZmVyICAgPSBzaXplcy5jYkJsb2NrU2l6ZTsKKworICAvKiBFbmNyeXB0IHRoZSBkYXRhICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5FbmNyeXB0TWVzc2FnZShrcmI1LT5jb250ZXh0LCBLRVJCX1dSQVBfTk9fRU5DUllQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cmFwX2Rlc2MsIDApOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBmcmVlKHBhZGRpbmcpOworICAgIGZyZWUobWVzc2FnZSk7CisgICAgZnJlZSh0cmFpbGVyKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogQWxsb2NhdGUgdGhlIGVuY3J5cHRpb24gKHdyYXApIGJ1ZmZlciAqLworICBhcHBkYXRhbGVuID0gd3JhcF9idWZbMF0uY2JCdWZmZXIgKyB3cmFwX2J1ZlsxXS5jYkJ1ZmZlciArCisgICAgICAgICAgICAgICB3cmFwX2J1ZlsyXS5jYkJ1ZmZlcjsKKyAgYXBwZGF0YSA9IG1hbGxvYyhhcHBkYXRhbGVuKTsKKyAgaWYoIWFwcGRhdGEpIHsKKyAgICBmcmVlKHBhZGRpbmcpOworICAgIGZyZWUobWVzc2FnZSk7CisgICAgZnJlZSh0cmFpbGVyKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogUG9wdWxhdGUgdGhlIGVuY3J5cHRpb24gYnVmZmVyICovCisgIG1lbWNweShhcHBkYXRhLCB3cmFwX2J1ZlswXS5wdkJ1ZmZlciwgd3JhcF9idWZbMF0uY2JCdWZmZXIpOworICBvZmZzZXQgKz0gd3JhcF9idWZbMF0uY2JCdWZmZXI7CisgIG1lbWNweShhcHBkYXRhICsgb2Zmc2V0LCB3cmFwX2J1ZlsxXS5wdkJ1ZmZlciwgd3JhcF9idWZbMV0uY2JCdWZmZXIpOworICBvZmZzZXQgKz0gd3JhcF9idWZbMV0uY2JCdWZmZXI7CisgIG1lbWNweShhcHBkYXRhICsgb2Zmc2V0LCB3cmFwX2J1ZlsyXS5wdkJ1ZmZlciwgd3JhcF9idWZbMl0uY2JCdWZmZXIpOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKSBhcHBkYXRhLCBhcHBkYXRhbGVuLCBvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsZW4pOworCisgIC8qIEZyZWUgYWxsIG9mIG91ciBsb2NhbCBidWZmZXJzICovCisgIGZyZWUoYXBwZGF0YSk7CisgIGZyZWUocGFkZGluZyk7CisgIGZyZWUobWVzc2FnZSk7CisgIGZyZWUodHJhaWxlcik7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9nc3NhcGlfY2xlYW51cCgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBHU1NBUEkgKEtlcmJlcm9zIFY1KSBzcGVjaWZpYyBkYXRhLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICoga3JiNSAgICAgW2luL291dF0gLSBUaGUgS2VyYmVyb3MgNSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorICoKKyAqLwordm9pZCBDdXJsX2F1dGhfZ3NzYXBpX2NsZWFudXAoc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUpCit7CisgIC8qIEZyZWUgb3VyIHNlY3VyaXR5IGNvbnRleHQgKi8KKyAgaWYoa3JiNS0+Y29udGV4dCkgeworICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoa3JiNS0+Y29udGV4dCk7CisgICAgZnJlZShrcmI1LT5jb250ZXh0KTsKKyAgICBrcmI1LT5jb250ZXh0ID0gTlVMTDsKKyAgfQorCisgIC8qIEZyZWUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICBpZihrcmI1LT5jcmVkZW50aWFscykgeworICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoa3JiNS0+Y3JlZGVudGlhbHMpOworICAgIGZyZWUoa3JiNS0+Y3JlZGVudGlhbHMpOworICAgIGtyYjUtPmNyZWRlbnRpYWxzID0gTlVMTDsKKyAgfQorCisgIC8qIEZyZWUgb3VyIGlkZW50aXR5ICovCisgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KGtyYjUtPnBfaWRlbnRpdHkpOworICBrcmI1LT5wX2lkZW50aXR5ID0gTlVMTDsKKworICAvKiBGcmVlIHRoZSBTUE4gYW5kIG91dHB1dCB0b2tlbiAqLworICBDdXJsX3NhZmVmcmVlKGtyYjUtPnNwbik7CisgIEN1cmxfc2FmZWZyZWUoa3JiNS0+b3V0cHV0X3Rva2VuKTsKKworICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCisgIGtyYjUtPnRva2VuX21heCA9IDA7Cit9CisKKyNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJICYmIFVTRV9LRVJCRVJPUzUqLwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbnRsbV9tc2dzLmMgYi9saWIvdmF1dGgvbnRsbS5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGxpYi9jdXJsX250bG1fbXNncy5jCnJlbmFtZSB0byBsaWIvdmF1dGgvbnRsbS5jCmluZGV4IDdmMDdkZWMuLmUyN2Y0MjMgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG1fbXNncy5jCisrKyBiL2xpYi92YXV0aC9udGxtLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw3IEBACiAgKiBOVExNIGRldGFpbHM6CiAgKgogICogaHR0cDovL2RhdmVucG9ydC5zb3VyY2Vmb3JnZS5uZXQvbnRsbS5odG1sCi0gKiBodHRwOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKKyAqIGh0dHBzOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKICAqLwogCiAjZGVmaW5lIERFQlVHX01FIDAKQEAgLTQ5LDggKzQ5LDggQEAKICNlbmRpZgogCiAjZGVmaW5lIEJVSUxESU5HX0NVUkxfTlRMTV9NU0dTX0MKLSNpbmNsdWRlICJjdXJsX250bG1fbXNncy5oIgotI2luY2x1ZGUgImN1cmxfc2FzbC5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAidmF1dGgvbnRsbS5oIgogI2luY2x1ZGUgImN1cmxfZW5kaWFuLmgiCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIApAQCAtMTM4LDcgKzEzOCw5IEBACiBzdGF0aWMgdm9pZCBudGxtX3ByaW50X2hleChGSUxFICpoYW5kbGUsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKIHsKICAgY29uc3QgY2hhciAqcCA9IGJ1ZjsKLSAgKHZvaWQpaGFuZGxlOworCisgICh2b2lkKSBoYW5kbGU7CisKICAgZnByaW50ZihzdGRlcnIsICIweCIpOwogICB3aGlsZShsZW4tLSA+IDApCiAgICAgZnByaW50ZihzdGRlcnIsICIlMDIuMngiLCAodW5zaWduZWQgaW50KSpwKyspOwpAQCAtMTUwLDcgKzE1Miw3IEBACiAvKgogICogbnRsbV9kZWNvZGVfdHlwZTJfdGFyZ2V0KCkKICAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIHRoZSAidGFyZ2V0IGluZm8iIGluIHRoZSBudGxtIHR5cGUtMiBtZXNzYWdlCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIHRoZSAidGFyZ2V0IGluZm8iIGluIHRoZSBOVExNIHR5cGUtMiBtZXNzYWdlCiAgKiByZWNlaXZlZC4KICAqCiAgKiBQYXJhbWV0ZXJzOgpAQCAtMTU4LDcgKzE2MCw3IEBACiAgKiBkYXRhICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCiAgKiBidWZmZXIgICAgW2luXSAgICAgLSBUaGUgZGVjb2RlZCB0eXBlLTIgbWVzc2FnZS4KICAqIHNpemUgICAgICBbaW5dICAgICAtIFRoZSBpbnB1dCBidWZmZXIgc2l6ZSwgYXQgbGVhc3QgMzIgYnl0ZXMuCi0gKiBudGxtICAgICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG50bG0gICAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgogICoKICAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KICAqLwpAQCAtMTcwLDYgKzE3MiwxMCBAQAogICB1bnNpZ25lZCBzaG9ydCB0YXJnZXRfaW5mb19sZW4gPSAwOwogICB1bnNpZ25lZCBpbnQgdGFyZ2V0X2luZm9fb2Zmc2V0ID0gMDsKIAorI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgKHZvaWQpIGRhdGE7CisjZW5kaWYKKwogICBpZihzaXplID49IDQ4KSB7CiAgICAgdGFyZ2V0X2luZm9fbGVuID0gQ3VybF9yZWFkMTZfbGUoJmJ1ZmZlcls0MF0pOwogICAgIHRhcmdldF9pbmZvX29mZnNldCA9IEN1cmxfcmVhZDMyX2xlKCZidWZmZXJbNDRdKTsKQEAgLTIxMSw3ICsyMTcsNyBAQAogKi8KIAogLyoKLSAqIEN1cmxfc2FzbF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKCkKKyAqIEN1cmxfYXV0aF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMiBtZXNzYWdlLiBUaGUgbWVzc2FnZQogICogaXMgZmlyc3QgZGVjb2RlZCBmcm9tIGEgYmFzZTY0IHN0cmluZyBpbnRvIGEgcmF3IE5UTE0gbWVzc2FnZSBhbmQgY2hlY2tlZApAQCAtMjIyLDExICsyMjgsMTEgQEAKICAqCiAgKiBkYXRhICAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KICAqIHR5cGUybXNnIFtpbl0gICAgIC0gVGhlIGJhc2U2NCBlbmNvZGVkIHR5cGUtMiBtZXNzYWdlLgotICogbnRsbSAgICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG50bG0gICAgIFtpbi9vdXRdIC0gVGhlIE5UTE0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCiAgKgogICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgogICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZTJtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pCiB7CkBAIC0zMjMsNyArMzI5LDcgQEAKIH0KIAogLyoKLSAqIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKCkKKyAqIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE5UTE0gdHlwZS0xIG1lc3NhZ2UgcmVhZHkgZm9yCiAgKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGUgdGltZSBjcnlwdG8gQVBJLgpAQCAtMzMyLDE0ICszMzgsMTQgQEAKICAqCiAgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCiAgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIG50bG0gICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KICAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQogICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCiAgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCiAgKgogICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgogICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25zdCBjaGFyICp1c2VycCwKK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbnN0IGNoYXIgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQpAQCAtMzcyLDcgKzM3OCw3IEBACiAgICh2b2lkKXBhc3N3ZHA7CiAKICAgLyogQ2xlYW4gdXAgYW55IGZvcm1lciBsZWZ0b3ZlcnMgYW5kIGluaXRpYWxpc2UgdG8gZGVmYXVsdHMgKi8KLSAgQ3VybF9zYXNsX250bG1fY2xlYW51cChudGxtKTsKKyAgQ3VybF9hdXRoX250bG1fY2xlYW51cChudGxtKTsKIAogI2lmIFVTRV9OVFJFU1BPTlNFUyAmJiBVU0VfTlRMTTJTRVNTSU9OCiAjZGVmaW5lIE5UTE0yRkxBRyBOVExNRkxBR19ORUdPVElBVEVfTlRMTTJfS0VZCkBAIC00NDIsNyArNDQ4LDcgQEAKIH0KIAogLyoKLSAqIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKCkKKyAqIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE5UTE0gdHlwZS0zIG1lc3NhZ2UgcmVhZHkgZm9yCiAgKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGUgdGltZSBjcnlwdG8gQVBJLgpAQCAtNDUyLDE0ICs0NTgsMTQgQEAKICAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCiAgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCiAgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIG50bG0gICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KICAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQogICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCiAgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCiAgKgogICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgogICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtLApAQCAtODA5LDkgKzgxNSwyOCBAQAogICAvKiBSZXR1cm4gd2l0aCBiaW5hcnkgYmxvYiBlbmNvZGVkIGludG8gYmFzZTY0ICovCiAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShOVUxMLCAoY2hhciAqKW50bG1idWYsIHNpemUsIG91dHB0ciwgb3V0bGVuKTsKIAotICBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKG50bG0pOworICBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKG50bG0pOwogCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisqIEN1cmxfYXV0aF9udGxtX2NsZWFudXAoKQorKgorKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIE5UTE0gc3BlY2lmaWMgZGF0YS4KKyoKKyogUGFyYW1ldGVyczoKKyoKKyogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCisqCisqLwordm9pZCBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKK3sKKyAgLyogRnJlZSB0aGUgdGFyZ2V0IGluZm8gKi8KKyAgQ3VybF9zYWZlZnJlZShudGxtLT50YXJnZXRfaW5mbyk7CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBudGxtLT50YXJnZXRfaW5mb19sZW4gPSAwOworfQorCiAjZW5kaWYgLyogVVNFX05UTE0gJiYgIVVTRV9XSU5ET1dTX1NTUEkgKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG1fbXNncy5oIGIvbGliL3ZhdXRoL250bG0uaApzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBsaWIvY3VybF9udGxtX21zZ3MuaApyZW5hbWUgdG8gbGliL3ZhdXRoL250bG0uaAppbmRleCAyYTcxNDMxLi5iMTRlN2E1IDEwMDY0NAotLS0gYS9saWIvY3VybF9udGxtX21zZ3MuaAorKysgYi9saWIvdmF1dGgvbnRsbS5oCkBAIC0xLDUgKzEsNSBAQAotI2lmbmRlZiBIRUFERVJfQ1VSTF9OVExNX01TR1NfSAotI2RlZmluZSBIRUFERVJfQ1VSTF9OVExNX01TR1NfSAorI2lmbmRlZiBIRUFERVJfQ1VSTF9OVExNX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfTlRMTV9ICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCiAgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE0MCw0ICsxNDAsNCBAQAogCiAjZW5kaWYgLyogVVNFX05UTE0gKi8KIAotI2VuZGlmIC8qIEhFQURFUl9DVVJMX05UTE1fTVNHU19IICovCisjZW5kaWYgLyogSEVBREVSX0NVUkxfTlRMTV9IICovCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvbnRsbV9zc3BpLmMgYi9saWIvdmF1dGgvbnRsbV9zc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMyZTI3MAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9udGxtX3NzcGkuYwpAQCAtMCwwICsxLDMxNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSAmJiBkZWZpbmVkKFVTRV9OVExNKQorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTEgbWVzc2FnZSByZWFkeSBmb3IKKyAqIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7CisgIFNlY0J1ZmZlciB0eXBlXzFfYnVmOworICBTZWNCdWZmZXJEZXNjIHR5cGVfMV9kZXNjOworICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKworICAvKiBDbGVhbiB1cCBhbnkgZm9ybWVyIGxlZnRvdmVycyBhbmQgaW5pdGlhbGlzZSB0byBkZWZhdWx0cyAqLworICBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKG50bG0pOworCisgIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBOVExNICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9OVExNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQorICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisKKyAgbnRsbS0+dG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOworCisgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOworCisgIC8qIEFsbG9jYXRlIG91ciBvdXRwdXQgYnVmZmVyICovCisgIG50bG0tPm91dHB1dF90b2tlbiA9IG1hbGxvYyhudGxtLT50b2tlbl9tYXgpOworICBpZighbnRsbS0+b3V0cHV0X3Rva2VuKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIGlmKHVzZXJwICYmICp1c2VycCkgeworICAgIENVUkxjb2RlIHJlc3VsdDsKKworICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICByZXN1bHQgPSBDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXJwLCBwYXNzd2RwLCAmbnRsbS0+aWRlbnRpdHkpOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBBbGxvdyBwcm9wZXIgY2xlYW51cCBvZiB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgbnRsbS0+cF9pZGVudGl0eSA9ICZudGxtLT5pZGVudGl0eTsKKyAgfQorICBlbHNlCisgICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLworICAgIG50bG0tPnBfaWRlbnRpdHkgPSBOVUxMOworCisgIC8qIEFsbG9jYXRlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgbnRsbS0+Y3JlZGVudGlhbHMgPSBtYWxsb2Moc2l6ZW9mKENyZWRIYW5kbGUpKTsKKyAgaWYoIW50bG0tPmNyZWRlbnRpYWxzKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIG1lbXNldChudGxtLT5jcmVkZW50aWFscywgMCwgc2l6ZW9mKENyZWRIYW5kbGUpKTsKKworICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfTlRMTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+cF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5jcmVkZW50aWFscywgJmV4cGlyeSk7CisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKKyAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworCisgIC8qIEFsbG9jYXRlIG91ciBuZXcgY29udGV4dCBoYW5kbGUgKi8KKyAgbnRsbS0+Y29udGV4dCA9IG1hbGxvYyhzaXplb2YoQ3R4dEhhbmRsZSkpOworICBpZighbnRsbS0+Y29udGV4dCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBtZW1zZXQobnRsbS0+Y29udGV4dCwgMCwgc2l6ZW9mKEN0eHRIYW5kbGUpKTsKKworICAvKiBTZXR1cCB0aGUgdHlwZS0xICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICB0eXBlXzFfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgdHlwZV8xX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgdHlwZV8xX2Rlc2MucEJ1ZmZlcnMgID0gJnR5cGVfMV9idWY7CisgIHR5cGVfMV9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgdHlwZV8xX2J1Zi5wdkJ1ZmZlciAgID0gbnRsbS0+b3V0cHV0X3Rva2VuOworICB0eXBlXzFfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobnRsbS0+dG9rZW5fbWF4KTsKKworICAvKiBHZW5lcmF0ZSBvdXIgdHlwZS0xIG1lc3NhZ2UgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQobnRsbS0+Y3JlZGVudGlhbHMsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU0VDVVJJVFlfTkVUV09SS19EUkVQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5jb250ZXh0LCAmdHlwZV8xX2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdHRycywgJmV4cGlyeSk7CisgIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKKyAgICBzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKQorICAgIHNfcFNlY0ZuLT5Db21wbGV0ZUF1dGhUb2tlbihudGxtLT5jb250ZXh0LCAmdHlwZV8xX2Rlc2MpOworICBlbHNlIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKQorICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgIHJldHVybiBDdXJsX2Jhc2U2NF9lbmNvZGUoTlVMTCwgKGNoYXIgKikgbnRsbS0+b3V0cHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfMV9idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMiBtZXNzYWdlLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB0eXBlMm1zZyBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCB0eXBlLTIgbWVzc2FnZS4KKyAqIG50bG0gICAgIFtpbi9vdXRdIC0gVGhlIE5UTE0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUybXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgdW5zaWduZWQgY2hhciAqdHlwZTIgPSBOVUxMOworICBzaXplX3QgdHlwZTJfbGVuID0gMDsKKworI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgKHZvaWQpIGRhdGE7CisjZW5kaWYKKworICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCB0eXBlLTIgbWVzc2FnZSAqLworICBpZihzdHJsZW4odHlwZTJtc2cpICYmICp0eXBlMm1zZyAhPSAnPScpIHsKKyAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUodHlwZTJtc2csICZ0eXBlMiwgJnR5cGUyX2xlbik7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHlwZS0yIG1lc3NhZ2UgKi8KKyAgaWYoIXR5cGUyKSB7CisgICAgaW5mb2YoZGF0YSwgIk5UTE0gaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHR5cGUtMiBtZXNzYWdlKVxuIik7CisKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIH0KKworICAvKiBTaW1wbHkgc3RvcmUgdGhlIGNoYWxsZW5nZSBmb3IgdXNlIGxhdGVyICovCisgIG50bG0tPmlucHV0X3Rva2VuID0gdHlwZTI7CisgIG50bG0tPmlucHV0X3Rva2VuX2xlbiA9IHR5cGUyX2xlbjsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorKiBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZSgpCisgKiBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMyBtZXNzYWdlIHJlYWR5IGZvcgorICogc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBTZWNCdWZmZXIgdHlwZV8yX2J1ZjsKKyAgU2VjQnVmZmVyIHR5cGVfM19idWY7CisgIFNlY0J1ZmZlckRlc2MgdHlwZV8yX2Rlc2M7CisgIFNlY0J1ZmZlckRlc2MgdHlwZV8zX2Rlc2M7CisgIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7CisgIHVuc2lnbmVkIGxvbmcgYXR0cnM7CisgIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLworCisgICh2b2lkKSBwYXNzd2RwOworICAodm9pZCkgdXNlcnA7CisKKyAgLyogU2V0dXAgdGhlIHR5cGUtMiAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICB0eXBlXzJfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgdHlwZV8yX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgdHlwZV8yX2Rlc2MucEJ1ZmZlcnMgID0gJnR5cGVfMl9idWY7CisgIHR5cGVfMl9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgdHlwZV8yX2J1Zi5wdkJ1ZmZlciAgID0gbnRsbS0+aW5wdXRfdG9rZW47CisgIHR5cGVfMl9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChudGxtLT5pbnB1dF90b2tlbl9sZW4pOworCisgIC8qIFNldHVwIHRoZSB0eXBlLTMgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCisgIHR5cGVfM19kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICB0eXBlXzNfZGVzYy5jQnVmZmVycyAgPSAxOworICB0eXBlXzNfZGVzYy5wQnVmZmVycyAgPSAmdHlwZV8zX2J1ZjsKKyAgdHlwZV8zX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICB0eXBlXzNfYnVmLnB2QnVmZmVyICAgPSBudGxtLT5vdXRwdXRfdG9rZW47CisgIHR5cGVfM19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChudGxtLT50b2tlbl9tYXgpOworCisgIC8qIEdlbmVyYXRlIG91ciB0eXBlLTMgbWVzc2FnZSAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChudGxtLT5jcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopIFRFWFQoIiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBTRUNVUklUWV9ORVRXT1JLX0RSRVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlXzJfZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbnRsbS0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGVfM19kZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cnMsICZleHBpcnkpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBpbmZvZihkYXRhLCAiTlRMTSBoYW5kc2hha2UgZmFpbHVyZSAodHlwZS0zIG1lc3NhZ2UpOiBTdGF0dXM9JXhcbiIsCisgICAgICAgICAgc3RhdHVzKTsKKworICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICB9CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KKyAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIG50bG0tPm91dHB1dF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfM19idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKKworICBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKG50bG0pOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIE5UTE0gc3BlY2lmaWMgZGF0YS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorICoKKyAqLwordm9pZCBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKK3sKKyAgLyogRnJlZSBvdXIgc2VjdXJpdHkgY29udGV4dCAqLworICBpZihudGxtLT5jb250ZXh0KSB7CisgICAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dChudGxtLT5jb250ZXh0KTsKKyAgICBmcmVlKG50bG0tPmNvbnRleHQpOworICAgIG50bG0tPmNvbnRleHQgPSBOVUxMOworICB9CisKKyAgLyogRnJlZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIGlmKG50bG0tPmNyZWRlbnRpYWxzKSB7CisgICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZShudGxtLT5jcmVkZW50aWFscyk7CisgICAgZnJlZShudGxtLT5jcmVkZW50aWFscyk7CisgICAgbnRsbS0+Y3JlZGVudGlhbHMgPSBOVUxMOworICB9CisKKyAgLyogRnJlZSBvdXIgaWRlbnRpdHkgKi8KKyAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkobnRsbS0+cF9pZGVudGl0eSk7CisgIG50bG0tPnBfaWRlbnRpdHkgPSBOVUxMOworCisgIC8qIEZyZWUgdGhlIGlucHV0IGFuZCBvdXRwdXQgdG9rZW5zICovCisgIEN1cmxfc2FmZWZyZWUobnRsbS0+aW5wdXRfdG9rZW4pOworICBDdXJsX3NhZmVmcmVlKG50bG0tPm91dHB1dF90b2tlbik7CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBudGxtLT50b2tlbl9tYXggPSAwOworfQorCisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAmJiBVU0VfTlRMTSAqLwpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL29hdXRoMi5jIGIvbGliL3ZhdXRoL29hdXRoMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjY2RmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvb2F1dGgyLmMKQEAgLTAsMCArMSw4NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKiBSRkM2NzQ5IE9BdXRoIDIuMCBBdXRob3JpemF0aW9uIEZyYW1ld29yaworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBPQXV0aCAyLjAgbWVzc2FnZSByZWFkeSBmb3IKKyAqIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGFbaW5dICAgICAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VyW2luXSAgICAgICAgIC0gVGhlIHVzZXIgbmFtZS4KKyAqIGhvc3RbaW5dICAgICAgICAgLSBUaGUgaG9zdCBuYW1lKGZvciBPQVVUSEJFQVJFUikuCisgKiBwb3J0W2luXSAgICAgICAgIC0gVGhlIHBvcnQoZm9yIE9BVVRIQkVBUkVSIHdoZW4gbm90IFBvcnQgODApLgorICogYmVhcmVyW2luXSAgICAgICAtIFRoZSBiZWFyZXIgdG9rZW4uCisgKiBvdXRwdHJbaW4gLyBvdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuW291dF0gICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9uZyBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgY2hhciAqb2F1dGggPSBOVUxMOworCisgIC8qIEdlbmVyYXRlIHRoZSBtZXNzYWdlICovCisgIGlmKGhvc3QgPT0gTlVMTCAmJiAocG9ydCA9PSAwIHx8IHBvcnQgPT0gODApKQorICAgIG9hdXRoID0gYXByaW50ZigidXNlcj0lc1wxYXV0aD1CZWFyZXIgJXNcMVwxIiwgdXNlciwgYmVhcmVyKTsKKyAgZWxzZSBpZihwb3J0ID09IDAgfHwgcG9ydCA9PSA4MCkKKyAgICBvYXV0aCA9IGFwcmludGYoInVzZXI9JXNcMWhvc3Q9JXNcMWF1dGg9QmVhcmVyICVzXDFcMSIsIHVzZXIsIGhvc3QsCisgICAgICAgICAgICAgICAgICAgIGJlYXJlcik7CisgIGVsc2UKKyAgICBvYXV0aCA9IGFwcmludGYoInVzZXI9JXNcMWhvc3Q9JXNcMXBvcnQ9JWxkXDFhdXRoPUJlYXJlciAlc1wxXDEiLCB1c2VyLAorICAgICAgICAgICAgICAgICAgICBob3N0LCBwb3J0LCBiZWFyZXIpOworICBpZighb2F1dGgpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVwbHkgKi8KKyAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIG9hdXRoLCBzdHJsZW4ob2F1dGgpLCBvdXRwdHIsIG91dGxlbik7CisKKyAgZnJlZShvYXV0aCk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9zcG5lZ29fZ3NzYXBpLmMgYi9saWIvdmF1dGgvc3BuZWdvX2dzc2FwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczOWUzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvc3BuZWdvX2dzc2FwaS5jCkBAIC0wLDAgKzEsMjYwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFJGQzQxNzggU2ltcGxlIGFuZCBQcm90ZWN0ZWQgR1NTLUFQSSBOZWdvdGlhdGlvbiBNZWNoYW5pc20KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgJiYgZGVmaW5lZChVU0VfU1BORUdPKQorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgImN1cmxfZ3NzYXBpLmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfZGVjb2RlX3NwbmVnb19tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBTUE5FR08gKE5lZ290aWF0ZSkgY2hhbGxlbmdlCisgKiBtZXNzYWdlLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VycCAgICAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgorICogcGFzc2R3cCAgICAgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBob3N0ICAgICAgICBbaW5dICAgICAtIFRoZSBob3N0IG5hbWUuCisgKiBjaGxnNjQgICAgICBbaW5dICAgICAtIFRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIG5lZ28gICAgICAgIFtpbi9vdXRdIC0gVGhlIE5lZ290aWF0ZSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfc3BuZWdvX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdvKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKKyAgT01fdWludDMyIG1ham9yX3N0YXR1czsKKyAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKKyAgT01fdWludDMyIHVudXNlZF9zdGF0dXM7CisgIGdzc19idWZmZXJfZGVzYyBzcG5fdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CisgIGdzc19idWZmZXJfZGVzYyBpbnB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKKyAgZ3NzX2J1ZmZlcl9kZXNjIG91dHB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKKworICAodm9pZCkgdXNlcjsKKyAgKHZvaWQpIHBhc3N3b3JkOworCisgIGlmKG5lZ28tPmNvbnRleHQgJiYgbmVnby0+c3RhdHVzID09IEdTU19TX0NPTVBMRVRFKSB7CisgICAgLyogV2UgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IG91ciBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uLCBidXQgc2VydmVyCisgICAgICogcmVqZWN0ZWQgaXQgKHNpbmNlIHdlJ3JlIGFnYWluIGhlcmUpLiBFeGl0IHdpdGggYW4gZXJyb3Igc2luY2Ugd2UKKyAgICAgKiBjYW4ndCBpbnZlbnQgYW55dGhpbmcgYmV0dGVyICovCisgICAgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKG5lZ28pOworICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgIH0KKworICBpZighbmVnby0+c3BuKSB7CisgICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLworICAgIGNoYXIgKnNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgTlVMTCwgaG9zdCk7CisgICAgaWYoIXNwbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgLyogUG9wdWxhdGUgdGhlIFNQTiBzdHJ1Y3R1cmUgKi8KKyAgICBzcG5fdG9rZW4udmFsdWUgPSBzcG47CisgICAgc3BuX3Rva2VuLmxlbmd0aCA9IHN0cmxlbihzcG4pOworCisgICAgLyogSW1wb3J0IHRoZSBTUE4gKi8KKyAgICBtYWpvcl9zdGF0dXMgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yX3N0YXR1cywgJnNwbl90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWdvLT5zcG4pOworICAgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19pbXBvcnRfbmFtZSgpIGZhaWxlZDogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CisKKyAgICAgIGZyZWUoc3BuKTsKKworICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgfQorCisgICAgZnJlZShzcG4pOworICB9CisKKyAgaWYoY2hsZzY0ICYmICpjaGxnNjQpIHsKKyAgICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICAgIGlmKCpjaGxnNjQgIT0gJz0nKSB7CisgICAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgICBpZighY2hsZykgeworICAgICAgaW5mb2YoZGF0YSwgIlNQTkVHTyBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgY2hhbGxlbmdlIG1lc3NhZ2UpXG4iKTsKKworICAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICAgIH0KKworICAgIC8qIFNldHVwIHRoZSBjaGFsbGVuZ2UgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgICBpbnB1dF90b2tlbi52YWx1ZSA9IGNobGc7CisgICAgaW5wdXRfdG9rZW4ubGVuZ3RoID0gY2hsZ2xlbjsKKyAgfQorCisgIC8qIEdlbmVyYXRlIG91ciBjaGFsbGVuZ2UtcmVzcG9uc2UgbWVzc2FnZSAqLworICBtYWpvcl9zdGF0dXMgPSBDdXJsX2dzc19pbml0X3NlY19jb250ZXh0KGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVnby0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5zcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkN1cmxfc3BuZWdvX21lY2hfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05PX0NIQU5ORUxfQklORElOR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBDdXJsX3NhZmVmcmVlKGlucHV0X3Rva2VuLnZhbHVlKTsKKworICBuZWdvLT5zdGF0dXMgPSBtYWpvcl9zdGF0dXM7CisgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgaWYob3V0cHV0X3Rva2VuLnZhbHVlKQorICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKKworICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCAiZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBmYWlsZWQ6ICIsCisgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYoIW91dHB1dF90b2tlbi52YWx1ZSB8fCAhb3V0cHV0X3Rva2VuLmxlbmd0aCkgeworICAgIGlmKG91dHB1dF90b2tlbi52YWx1ZSkKKyAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIG5lZ28tPm91dHB1dF90b2tlbiA9IG91dHB1dF90b2tlbjsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX3NwbmVnb19tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIFNQTkVHTyAoTmVnb3RpYXRlKSByZXNwb25zZQorICogbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiBuZWdvICAgICAgICBbaW4vb3V0XSAtIFRoZSBOZWdvdGlhdGUgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBvdXRwdHIgICAgICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gICAgICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9zcG5lZ29fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIE9NX3VpbnQzMiBtaW5vcl9zdGF0dXM7CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgYWxyZWFkeSBnZW5lcmF0ZWQgcmVzcG9uc2UgKi8KKyAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5vdXRwdXRfdG9rZW4udmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5vdXRwdXRfdG9rZW4ubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHRyLCBvdXRsZW4pOworCisgIGlmKHJlc3VsdCkgeworICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWlub3Jfc3RhdHVzLCAmbmVnby0+b3V0cHV0X3Rva2VuKTsKKyAgICBuZWdvLT5vdXRwdXRfdG9rZW4udmFsdWUgPSBOVUxMOworICAgIG5lZ28tPm91dHB1dF90b2tlbi5sZW5ndGggPSAwOworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIGlmKCEqb3V0cHRyIHx8ICEqb3V0bGVuKSB7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZtaW5vcl9zdGF0dXMsICZuZWdvLT5vdXRwdXRfdG9rZW4pOworICAgIG5lZ28tPm91dHB1dF90b2tlbi52YWx1ZSA9IE5VTEw7CisgICAgbmVnby0+b3V0cHV0X3Rva2VuLmxlbmd0aCA9IDA7CisKKyAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0FDQ0VTU19ERU5JRUQ7CisgIH0KKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfc3BuZWdvX2NsZWFudXAoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgU1BORUdPIChOZWdvdGlhdGUpIHNwZWNpZmljIGRhdGEuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBuZWdvICAgICBbaW4vb3V0XSAtIFRoZSBOZWdvdGlhdGUgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KKyAqCisgKi8KK3ZvaWQgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKHN0cnVjdCBuZWdvdGlhdGVkYXRhKiBuZWdvKQoreworICBPTV91aW50MzIgbWlub3Jfc3RhdHVzOworCisgIC8qIEZyZWUgb3VyIHNlY3VyaXR5IGNvbnRleHQgKi8KKyAgaWYobmVnby0+Y29udGV4dCAhPSBHU1NfQ19OT19DT05URVhUKSB7CisgICAgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dCgmbWlub3Jfc3RhdHVzLCAmbmVnby0+Y29udGV4dCwgR1NTX0NfTk9fQlVGRkVSKTsKKyAgICBuZWdvLT5jb250ZXh0ID0gR1NTX0NfTk9fQ09OVEVYVDsKKyAgfQorCisgIC8qIEZyZWUgdGhlIG91dHB1dCB0b2tlbiAqLworICBpZihuZWdvLT5vdXRwdXRfdG9rZW4udmFsdWUpIHsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbm9yX3N0YXR1cywgJm5lZ28tPm91dHB1dF90b2tlbik7CisgICAgbmVnby0+b3V0cHV0X3Rva2VuLnZhbHVlID0gTlVMTDsKKyAgICBuZWdvLT5vdXRwdXRfdG9rZW4ubGVuZ3RoID0gMDsKKworICB9CisKKyAgLyogRnJlZSB0aGUgU1BOICovCisgIGlmKG5lZ28tPnNwbiAhPSBHU1NfQ19OT19OQU1FKSB7CisgICAgZ3NzX3JlbGVhc2VfbmFtZSgmbWlub3Jfc3RhdHVzLCAmbmVnby0+c3BuKTsKKyAgICBuZWdvLT5zcG4gPSBHU1NfQ19OT19OQU1FOworICB9CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBuZWdvLT5zdGF0dXMgPSAwOworfQorCisjZW5kaWYgLyogSEFWRV9HU1NBUEkgJiYgVVNFX1NQTkVHTyAqLwpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL3NwbmVnb19zc3BpLmMgYi9saWIvdmF1dGgvc3BuZWdvX3NzcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTc0NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL3NwbmVnb19zc3BpLmMKQEAgLTAsMCArMSwyOTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDNDE3OCBTaW1wbGUgYW5kIFByb3RlY3RlZCBHU1MtQVBJIE5lZ290aWF0aW9uIE1lY2hhbmlzbQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpICYmIGRlZmluZWQoVVNFX1NQTkVHTykKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyoKKyAqIEN1cmxfYXV0aF9kZWNvZGVfc3BuZWdvX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYW4gYWxyZWFkeSBlbmNvZGVkIFNQTkVHTyAoTmVnb3RpYXRlKSBjaGFsbGVuZ2UKKyAqIG1lc3NhZ2UuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgICAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHVzZXJwICAgICAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCisgKiBwYXNzZHdwICAgICBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiBzZXJ2aWNlICAgICBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyBodHRwLCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIGhvc3QgICAgICAgIFtpbl0gICAgIC0gVGhlIGhvc3QgbmFtZS4KKyAqIGNobGc2NCAgICAgIFtpbl0gICAgIC0gVGhlIG9wdGlvbmFsIGJhc2U2NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlLgorICogbmVnbyAgICAgICAgW2luL291dF0gLSBUaGUgTmVnb3RpYXRlIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2RlY29kZV9zcG5lZ29fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ28pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzaXplX3QgY2hsZ2xlbiA9IDA7CisgIHVuc2lnbmVkIGNoYXIgKmNobGcgPSBOVUxMOworICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7CisgIFNlY0J1ZmZlciBjaGxnX2J1ZjsKKyAgU2VjQnVmZmVyIHJlc3BfYnVmOworICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKKyAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7CisgIHVuc2lnbmVkIGxvbmcgYXR0cnM7CisgIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLworCisjaWYgZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQorICAodm9pZCkgZGF0YTsKKyNlbmRpZgorCisgIGlmKG5lZ28tPmNvbnRleHQgJiYgbmVnby0+c3RhdHVzID09IFNFQ19FX09LKSB7CisgICAgLyogV2UgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IG91ciBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uLCBidXQgc2VydmVyCisgICAgICogcmVqZWN0ZWQgaXQgKHNpbmNlIHdlJ3JlIGFnYWluIGhlcmUpLiBFeGl0IHdpdGggYW4gZXJyb3Igc2luY2Ugd2UKKyAgICAgKiBjYW4ndCBpbnZlbnQgYW55dGhpbmcgYmV0dGVyICovCisgICAgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKG5lZ28pOworICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgIH0KKworICBpZighbmVnby0+c3BuKSB7CisgICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLworICAgIG5lZ28tPnNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgaG9zdCwgTlVMTCk7CisgICAgaWYoIW5lZ28tPnNwbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYoIW5lZ28tPm91dHB1dF90b2tlbikgeworICAgIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBOZWdvdGlhdGUgKi8KKyAgICBuZWdvLT5zdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVYVChTUF9OQU1FX05FR09USUFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKKyAgICBpZihuZWdvLT5zdGF0dXMgIT0gU0VDX0VfT0spCisgICAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworCisgICAgbmVnby0+dG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOworCisgICAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKKworICAgIC8qIEFsbG9jYXRlIG91ciBvdXRwdXQgYnVmZmVyICovCisgICAgbmVnby0+b3V0cHV0X3Rva2VuID0gbWFsbG9jKG5lZ28tPnRva2VuX21heCk7CisgICAgaWYoIW5lZ28tPm91dHB1dF90b2tlbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworIH0KKworICBpZighbmVnby0+Y3JlZGVudGlhbHMpIHsKKyAgICAvKiBEbyB3ZSBoYXZlIGNyZWRpZW50aWFscyB0byB1c2Ugb3IgYXJlIHdlIHVzaW5nIHNpbmdsZSBzaWduLW9uPyAqLworICAgIGlmKHVzZXIgJiYgKnVzZXIpIHsKKyAgICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICAgIHJlc3VsdCA9IEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlciwgcGFzc3dvcmQsICZuZWdvLT5pZGVudGl0eSk7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICAgIG5lZ28tPnBfaWRlbnRpdHkgPSAmbmVnby0+aWRlbnRpdHk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KKyAgICAgIG5lZ28tPnBfaWRlbnRpdHkgPSBOVUxMOworCisgICAgLyogQWxsb2NhdGUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICAgIG5lZ28tPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7CisgICAgaWYoIW5lZ28tPmNyZWRlbnRpYWxzKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBtZW1zZXQobmVnby0+Y3JlZGVudGlhbHMsIDAsIHNpemVvZihDcmVkSGFuZGxlKSk7CisKKyAgICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgICBuZWdvLT5zdGF0dXMgPQorICAgICAgc19wU2VjRm4tPkFjcXVpcmVDcmVkZW50aWFsc0hhbmRsZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKilURVhUKFNQX05BTUVfTkVHT1RJQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ28tPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ28tPmNyZWRlbnRpYWxzLCAmZXhwaXJ5KTsKKyAgICBpZihuZWdvLT5zdGF0dXMgIT0gU0VDX0VfT0spCisgICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworCisgICAgLyogQWxsb2NhdGUgb3VyIG5ldyBjb250ZXh0IGhhbmRsZSAqLworICAgIG5lZ28tPmNvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKEN0eHRIYW5kbGUpKTsKKyAgICBpZighbmVnby0+Y29udGV4dCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgbWVtc2V0KG5lZ28tPmNvbnRleHQsIDAsIHNpemVvZihDdHh0SGFuZGxlKSk7CisgIH0KKworICBpZihjaGxnNjQgJiYgKmNobGc2NCkgeworICAgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgICAgaWYoKmNobGc2NCAhPSAnPScpIHsKKyAgICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICAgIGlmKCFjaGxnKSB7CisgICAgICBpbmZvZihkYXRhLCAiU1BORUdPIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOworCisgICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgICAgfQorCisgICAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICAgIGNobGdfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgICBjaGxnX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgICBjaGxnX2Rlc2MucEJ1ZmZlcnMgID0gJmNobGdfYnVmOworICAgIGNobGdfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgICAgY2hsZ19idWYucHZCdWZmZXIgICA9IGNobGc7CisgICAgY2hsZ19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChjaGxnbGVuKTsKKyAgfQorCisgIC8qIFNldHVwIHRoZSByZXNwb25zZSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgcmVzcF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICByZXNwX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgcmVzcF9kZXNjLnBCdWZmZXJzICA9ICZyZXNwX2J1ZjsKKyAgcmVzcF9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgcmVzcF9idWYucHZCdWZmZXIgICA9IG5lZ28tPm91dHB1dF90b2tlbjsKKyAgcmVzcF9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChuZWdvLT50b2tlbl9tYXgpOworCisgIC8qIEdlbmVyYXRlIG91ciBjaGFsbGVuZ2UtcmVzcG9uc2UgbWVzc2FnZSAqLworICBuZWdvLT5zdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChuZWdvLT5jcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hsZyA/IG5lZ28tPmNvbnRleHQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnby0+c3BuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0NfUkVRX0NPTkZJREVOVElBTElUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU0VDVVJJVFlfTkFUSVZFX0RSRVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNobGcgPyAmY2hsZ19kZXNjIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbmVnby0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3BfZGVzYywgJmF0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhwaXJ5KTsKKworICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBmcmVlKGNobGcpOworCisgIGlmKEdTU19FUlJPUihuZWdvLT5zdGF0dXMpKSB7CisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBpZihuZWdvLT5zdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8CisgICAgIG5lZ28tPnN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUpIHsKKyAgICBuZWdvLT5zdGF0dXMgPSBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4obmVnby0+Y29udGV4dCwgJnJlc3BfZGVzYyk7CisgICAgaWYoR1NTX0VSUk9SKG5lZ28tPnN0YXR1cykpIHsKKyAgICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICAgIH0KKyAgfQorCisgIG5lZ28tPm91dHB1dF90b2tlbl9sZW5ndGggPSByZXNwX2J1Zi5jYkJ1ZmZlcjsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9zcG5lZ29fbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBTUE5FR08gKE5lZ290aWF0ZSkgcmVzcG9uc2UKKyAqIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogbmVnbyAgICAgICAgW2luL291dF0gLSBUaGUgTmVnb3RpYXRlIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICAgICAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICAgICAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfc3BuZWdvX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIGFscmVhZHkgZ2VuZXJhdGVkIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKSBuZWdvLT5vdXRwdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5vdXRwdXRfdG9rZW5fbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHRyLCBvdXRsZW4pOworCisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIGlmKCEqb3V0cHRyIHx8ICEqb3V0bGVuKQorICAgIHJldHVybiBDVVJMRV9SRU1PVEVfQUNDRVNTX0RFTklFRDsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfc3BuZWdvX2NsZWFudXAoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgU1BORUdPIChOZWdvdGlhdGUpIHNwZWNpZmljIGRhdGEuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBuZWdvICAgICBbaW4vb3V0XSAtIFRoZSBOZWdvdGlhdGUgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KKyAqCisgKi8KK3ZvaWQgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKHN0cnVjdCBuZWdvdGlhdGVkYXRhKiBuZWdvKQoreworICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCisgIGlmKG5lZ28tPmNvbnRleHQpIHsKKyAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KG5lZ28tPmNvbnRleHQpOworICAgIGZyZWUobmVnby0+Y29udGV4dCk7CisgICAgbmVnby0+Y29udGV4dCA9IE5VTEw7CisgIH0KKworICAvKiBGcmVlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgaWYobmVnby0+Y3JlZGVudGlhbHMpIHsKKyAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKG5lZ28tPmNyZWRlbnRpYWxzKTsKKyAgICBmcmVlKG5lZ28tPmNyZWRlbnRpYWxzKTsKKyAgICBuZWdvLT5jcmVkZW50aWFscyA9IE5VTEw7CisgIH0KKworICAvKiBGcmVlIG91ciBpZGVudGl0eSAqLworICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShuZWdvLT5wX2lkZW50aXR5KTsKKyAgbmVnby0+cF9pZGVudGl0eSA9IE5VTEw7CisKKyAgLyogRnJlZSB0aGUgU1BOIGFuZCBvdXRwdXQgdG9rZW4gKi8KKyAgQ3VybF9zYWZlZnJlZShuZWdvLT5zcG4pOworICBDdXJsX3NhZmVmcmVlKG5lZ28tPm91dHB1dF90b2tlbik7CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBuZWdvLT5zdGF0dXMgPSAwOworICBuZWdvLT50b2tlbl9tYXggPSAwOworfQorCisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAmJiBVU0VfU1BORUdPICovCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvdmF1dGguYyBiL2xpYi92YXV0aC92YXV0aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMmUyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvdmF1dGguYwpAQCAtMCwwICsxLDEwNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaW5jbHVkZSAidmF1dGguaCIKKyNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfYnVpbGRfc3BuKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0czoKKyAqCisgKiBzZXJ2aWNlL2hvc3RAcmVhbG0gKE5vdCBjdXJyZW50bHkgdXNlZCkKKyAqIHNlcnZpY2UvaG9zdCAgICAgICAoTm90IHVzZWQgYnkgR1NTLUFQSSkKKyAqIHNlcnZpY2VAcmVhbG0gICAgICAoTm90IHVzZWQgYnkgV2luZG93cyBTU1BJKQorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogc2VydmljZSAgW2luXSAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyBodHRwLCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIGhvc3QgICAgIFtpbl0gLSBUaGUgaG9zdCBuYW1lLgorICogcmVhbG0gICAgW2luXSAtIFRoZSByZWFsbS4KKyAqCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIFNQTi4KKyAqLworI2lmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCitjaGFyICpDdXJsX2F1dGhfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYWxtKQoreworICBjaGFyICpzcG4gPSBOVUxMOworCisgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KKyAgaWYoaG9zdCAmJiByZWFsbSkKKyAgICBzcG4gPSBhcHJpbnRmKCIlcy8lc0AlcyIsIHNlcnZpY2UsIGhvc3QsIHJlYWxtKTsKKyAgZWxzZSBpZihob3N0KQorICAgIHNwbiA9IGFwcmludGYoIiVzLyVzIiwgc2VydmljZSwgaG9zdCk7CisgIGVsc2UgaWYocmVhbG0pCisgICAgc3BuID0gYXByaW50ZigiJXNAJXMiLCBzZXJ2aWNlLCByZWFsbSk7CisKKyAgLyogUmV0dXJuIG91ciBuZXdseSBhbGxvY2F0ZWQgU1BOICovCisgIHJldHVybiBzcG47Cit9CisjZWxzZQorVENIQVIgKkN1cmxfYXV0aF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYWxtKQoreworICBjaGFyICp1dGY4X3NwbiA9IE5VTEw7CisgIFRDSEFSICp0Y2hhcl9zcG4gPSBOVUxMOworCisgICh2b2lkKSByZWFsbTsKKworICAvKiBOb3RlOiBXZSBjb3VsZCB1c2UgRHNNYWtlU1BOKCkgb3IgRHNDbGllbnRNYWtlU3BuRm9yVGFyZ2V0U2VydmVyKCkgcmF0aGVyCisgICAgIHRoYW4gZG9pbmcgdGhpcyBvdXJzZWx2ZXMgYnV0IHRoZSBmaXJzdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiBXaW5kb3dzIFhQCisgICAgIGFuZCBXaW5kb3dzIFNlcnZlciAyMDAzIGFuZCB0aGUgbGF0dGVyIGlzIG9ubHkgYXZhaWxhYmxlIGluIFdpbmRvd3MgMjAwMAorICAgICBidXQgbm90IFdpbmRvd3M5NS85OC9NRSBvciBXaW5kb3dzIE5UNC4wIHVubGVzcyB0aGUgQWN0aXZlIERpcmVjdG9yeQorICAgICBDbGllbnQgRXh0ZW5zaW9ucyBhcmUgaW5zdGFsbGVkLiBBcyBzdWNoIGl0IGlzIGZhciBzaW1wbGVyIGZvciB1cyB0bworICAgICBmb3JtdWxhdGUgdGhlIFNQTiBpbnN0ZWFkLiAqLworCisgIC8qIEdlbmVyYXRlIG91ciBVVEY4IGJhc2VkIFNQTiAqLworICB1dGY4X3NwbiA9IGFwcmludGYoIiVzLyVzIiwgc2VydmljZSwgaG9zdCk7CisgIGlmKCF1dGY4X3NwbikgeworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLyogQWxsb2NhdGUgb3VyIFRDSEFSIGJhc2VkIFNQTiAqLworICB0Y2hhcl9zcG4gPSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcih1dGY4X3Nwbik7CisgIGlmKCF0Y2hhcl9zcG4pIHsKKyAgICBmcmVlKHV0Zjhfc3BuKTsKKworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLyogUmVsZWFzZSB0aGUgVVRGOCB2YXJpYW50IHdoZW4gb3BlcmF0aW5nIHdpdGggVW5pY29kZSAqLworICBDdXJsX3VuaWNvZGVmcmVlKHV0Zjhfc3BuKTsKKworICAvKiBSZXR1cm4gb3VyIG5ld2x5IGFsbG9jYXRlZCBTUE4gKi8KKyAgcmV0dXJuIHRjaGFyX3NwbjsKK30KKyNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJICovCisKZGlmZiAtLWdpdCBhL2xpYi92YXV0aC92YXV0aC5oIGIvbGliL3ZhdXRoL3ZhdXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM1MTMxYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC92YXV0aC5oCkBAIC0wLDAgKzEsMTg5IEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1ZBVVRIX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfVkFVVEhfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitzdHJ1Y3QgU2Vzc2lvbkhhbmRsZTsKKworI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKK3N0cnVjdCBkaWdlc3RkYXRhOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9OVExNKQorc3RydWN0IG50bG1kYXRhOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCitzdHJ1Y3Qga2VyYmVyb3M1ZGF0YTsKKyNlbmRpZgorCisjaWYgKGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkpICYmIGRlZmluZWQoVVNFX1NQTkVHTykKK3N0cnVjdCBuZWdvdGlhdGVkYXRhOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisjZGVmaW5lIEdTU19FUlJPUihzdGF0dXMpIChzdGF0dXMgJiAweDgwMDAwMDAwKQorI2VuZGlmCisKKy8qIFRoaXMgaXMgdXNlZCB0byBidWlsZCBhIFNQTiBzdHJpbmcgKi8KKyNpZiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorY2hhciAqQ3VybF9hdXRoX2J1aWxkX3Nwbihjb25zdCBjaGFyICpzZXJ2aWNlLCBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFsbSk7CisjZWxzZQorVENIQVIgKkN1cmxfYXV0aF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYWxtKTsKKyNlbmRpZgorCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBQTEFJTiBjbGVhcnRleHQgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBMT0dJTiBjbGVhcnRleHQgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlcCwgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIEVYVEVSTkFMIGNsZWFydGV4dCBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2V4dGVybmFsX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7CisKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCisvKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgQ1JBTS1NRDUgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfY3JhbV9tZDVfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnNjQsIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBDUkFNLU1ENSByZXNwb25zZSBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2NyYW1fbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBIVFRQIERJR0VTVCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCk7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhUVFAgRElHRVNUIHJlc3BvbnNlIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGRpZ2VzdCBzcGVjaWZpYyBkYXRhICovCit2b2lkIEN1cmxfYXV0aF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KTsKKyNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICovCisKKyNpZiBkZWZpbmVkKFVTRV9OVExNKQorLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgTlRMTSB0eXBlLTEgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIGJhc2U2NCBlbmNvZGVkIE5UTE0gdHlwZS0yIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZTJtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBOVExNIHR5cGUtMyBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBOVExNIHNwZWNpZmljIGRhdGEgKi8KK3ZvaWQgQ3VybF9hdXRoX250bG1fY2xlYW51cChzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pOworI2VuZGlmIC8qIFVTRV9OVExNICovCisKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIE9BdXRoIDIuMCBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX29hdXRoX2JlYXJlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb25nIHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJlYXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworI2lmIGRlZmluZWQoVVNFX0tFUkJFUk9TNSkKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHVzZXIgdG9rZW4KKyAgIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG11dHVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSBzZWN1cml0eQorICAgdG9rZW4gbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgR1NTQVBJIHNwZWNpZmljIGRhdGEgKi8KK3ZvaWQgQ3VybF9hdXRoX2dzc2FwaV9jbGVhbnVwKHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1KTsKKyNlbmRpZiAvKiBVU0VfS0VSQkVST1M1ICovCisKKyNpZiAoZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSkgJiYgZGVmaW5lZChVU0VfU1BORUdPKQorLyogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIGJhc2U2NCBlbmNvZGVkIFNQTkVHTyAoTmVnb3RpYXRlKSBjaGFsbGVuZ2UKKyAgIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfc3BuZWdvX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3b29kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdvKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgU1BORUdPIChOZWdvdGlhdGUpIHJlc3BvbnNlCisgICBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX3NwbmVnb19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIFNQTkVHTyBzcGVjaWZpZWMgZGF0YSAqLwordm9pZCBDdXJsX2F1dGhfc3BuZWdvX2NsZWFudXAoc3RydWN0IG5lZ290aWF0ZWRhdGEqIG5lZ28pOworCisjZW5kaWYgLyogKEhBVkVfR1NTQVBJIHx8IFVTRV9XSU5ET1dTX1NTUEkpICYmIFVTRV9TUE5FR08gKi8KKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX1ZBVVRIX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZXJzaW9uLmMgYi9saWIvdmVyc2lvbi5jCmluZGV4IDE3MjdjNWEuLjEyOTI0NDUgMTAwNjQ0Ci0tLSBhL2xpYi92ZXJzaW9uLmMKKysrIGIvbGliL3ZlcnNpb24uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5jbHVkZSA8c3RyaW5ncHJlcC5oPgogI2VuZGlmCiAKKyNpZmRlZiBVU0VfTElCUFNMCisjaW5jbHVkZSA8bGlicHNsLmg+CisjZW5kaWYKKwogI2lmIGRlZmluZWQoSEFWRV9JQ09OVikgJiYgZGVmaW5lZChDVVJMX0RPRVNfQ09OVkVSU0lPTlMpCiAjaW5jbHVkZSA8aWNvbnYuaD4KICNlbmRpZgpAQCAtNjAsMTMgKzY0LDI3IEBACiAjZGVmaW5lIENVUkxfTElCU1NIMl9WRVJTSU9OIExJQlNTSDJfVkVSU0lPTgogI2VuZGlmCiAKK3ZvaWQgQ3VybF92ZXJzaW9uX2luaXQodm9pZCk7CisKKy8qIEZvciB0aHJlYWQgc2FmZXR5IHB1cnBvc2VzIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGdsb2JhbF9pbml0IHNvIHRoYXQKKyAgIHRoZSBzdGF0aWMgZGF0YSBpbiBib3RoIHZlcnNpb24gZnVuY3Rpb25zIGlzIGluaXRpYWxpemVkLiAqLwordm9pZCBDdXJsX3ZlcnNpb25faW5pdCh2b2lkKQoreworICBjdXJsX3ZlcnNpb24oKTsKKyAgY3VybF92ZXJzaW9uX2luZm8oQ1VSTFZFUlNJT05fTk9XKTsKK30KKwogY2hhciAqY3VybF92ZXJzaW9uKHZvaWQpCiB7CisgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogICBzdGF0aWMgY2hhciB2ZXJzaW9uWzIwMF07CiAgIGNoYXIgKnB0ciA9IHZlcnNpb247CiAgIHNpemVfdCBsZW47CiAgIHNpemVfdCBsZWZ0ID0gc2l6ZW9mKHZlcnNpb24pOwogCisgIGlmKGluaXRpYWxpemVkKQorICAgIHJldHVybiB2ZXJzaW9uOworCiAgIHN0cmNweShwdHIsIExJQkNVUkxfTkFNRSAiLyIgTElCQ1VSTF9WRVJTSU9OKTsKICAgbGVuID0gc3RybGVuKHB0cik7CiAgIGxlZnQgLT0gbGVuOwpAQCAtMTAwLDYgKzExOCwxMSBAQAogICAgIHB0ciArPSBsZW47CiAgIH0KICNlbmRpZgorI2lmZGVmIFVTRV9MSUJQU0wKKyAgbGVuID0gc25wcmludGYocHRyLCBsZWZ0LCAiIGxpYnBzbC8lcyIsIHBzbF9nZXRfdmVyc2lvbigpKTsKKyAgbGVmdCAtPSBsZW47CisgIHB0ciArPSBsZW47CisjZW5kaWYKICNpZmRlZiBVU0VfV0lOMzJfSUROCiAgIGxlbiA9IHNucHJpbnRmKHB0ciwgbGVmdCwgIiBXaW5JRE4iKTsKICAgbGVmdCAtPSBsZW47CkBAIC0xNTEsNiArMTc0LDcgQEAKICAgfQogI2VuZGlmCiAKKyAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICByZXR1cm4gdmVyc2lvbjsKIH0KIApAQCAtMjk3LDYgKzMyMSw5IEBACiAjaWYgZGVmaW5lZChVU0VfVU5JWF9TT0NLRVRTKQogICB8IENVUkxfVkVSU0lPTl9VTklYX1NPQ0tFVFMKICNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0xJQlBTTCkKKyAgfCBDVVJMX1ZFUlNJT05fUFNMCisjZW5kaWYKICAgLAogICBOVUxMLCAvKiBzc2xfdmVyc2lvbiAqLwogICAwLCAgICAvKiBzc2xfdmVyc2lvbl9udW0sIHRoaXMgaXMga2VwdCBhdCB6ZXJvICovCkBAIC0zMTEsMTIgKzMzOCwxOCBAQAogCiBjdXJsX3ZlcnNpb25faW5mb19kYXRhICpjdXJsX3ZlcnNpb25faW5mbyhDVVJMdmVyc2lvbiBzdGFtcCkKIHsKKyAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAjaWZkZWYgVVNFX0xJQlNTSDIKICAgc3RhdGljIGNoYXIgc3NoX2J1ZmZlcls4MF07CiAjZW5kaWYKLQogI2lmZGVmIFVTRV9TU0wKICAgc3RhdGljIGNoYXIgc3NsX2J1ZmZlcls4MF07CisjZW5kaWYKKworICBpZihpbml0aWFsaXplZCkKKyAgICByZXR1cm4gJnZlcnNpb25faW5mbzsKKworI2lmZGVmIFVTRV9TU0wKICAgQ3VybF9zc2xfdmVyc2lvbihzc2xfYnVmZmVyLCBzaXplb2Yoc3NsX2J1ZmZlcikpOwogICB2ZXJzaW9uX2luZm8uc3NsX3ZlcnNpb24gPSBzc2xfYnVmZmVyOwogI2VuZGlmCkBAIC0zNTgsNSArMzkxLDYgQEAKIAogICAodm9pZClzdGFtcDsgLyogYXZvaWQgY29tcGlsZXIgd2FybmluZ3MsIHdlIGRvbid0IHVzZSB0aGlzICovCiAKKyAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICByZXR1cm4gJnZlcnNpb25faW5mbzsKIH0KZGlmZiAtLWdpdCBhL2xpYi92dGxzL2F4dGxzLmMgYi9saWIvdnRscy9heHRscy5jCmluZGV4IDEwMzg0MzIuLjBhZmNmYWEgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2F4dGxzLmMKKysrIGIvbGliL3Z0bHMvYXh0bHMuYwpAQCAtNiwxMSArNiwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCBEaXJlY1RWLCBDb250YWN0OiBFcmljIEh1LCA8ZWh1QGRpcmVjdHYuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxMCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxOCw3ICs1MTgsNyBAQAogCiAgIGluZm9mKGNvbm4tPmRhdGEsICIgIGF4dGxzX3NlbmRcbiIpOwogCi0gIGlmKHJjIDwgMCApIHsKKyAgaWYocmMgPCAwKSB7CiAgICAgKmVyciA9IG1hcF9lcnJvcl90b19jdXJsKHJjKTsKICAgICByYyA9IC0xOyAvKiBnZW5lcmljIGVycm9yIGNvZGUgZm9yIHNlbmQgZmFpbHVyZSAqLwogICB9CmRpZmYgLS1naXQgYS9saWIvdnRscy9heHRscy5oIGIvbGliL3Z0bHMvYXh0bHMuaAppbmRleCAyMjNlY2I4Li5iOWQ0NDFmIDEwMDY0NAotLS0gYS9saWIvdnRscy9heHRscy5oCisrKyBiL2xpYi92dGxzL2F4dGxzLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvdnRscy9jeWFzc2wuYyBiL2xpYi92dGxzL2N5YXNzbC5jCmluZGV4IDQwZGJiZTEuLmRhNzM3YzcgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2N5YXNzbC5jCisrKyBiL2xpYi92dGxzL2N5YXNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogI2RlZmluZSBXT0xGU1NMX09QVElPTlNfSUdOT1JFX1NZUwogLyogQ3lhU1NMJ3MgdmVyc2lvbi5oLCB3aGljaCBzaG91bGQgY29udGFpbiBvbmx5IHRoZSB2ZXJzaW9uLCBzaG91bGQgY29tZQogYmVmb3JlIGFsbCBvdGhlciBDeWFTU0wgaW5jbHVkZXMgYW5kIGJlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGJ1aWxkIGNvbmZpZwotYWthIG9wdGlvbnMuaC4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA0LzAwNjkuaHRtbCAqLworYWthIG9wdGlvbnMuaC4gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNC8wMDY5Lmh0bWwgKi8KICNpbmNsdWRlIDxjeWFzc2wvdmVyc2lvbi5oPgogI2lmIGRlZmluZWQoSEFWRV9DWUFTU0xfT1BUSU9OU19IKSAmJiAoTElCQ1lBU1NMX1ZFUlNJT05fSEVYID4gMHgwMzAwNDAwOCkKICNpZiBkZWZpbmVkKENZQVNTTF9BUEkpIHx8IGRlZmluZWQoV09MRlNTTF9BUEkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCi0jaW5jbHVkZSAiY3lhc3NsLmgiCiAjaW5jbHVkZSAidnRscy5oIgogI2luY2x1ZGUgInBhcnNlZGF0ZS5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIgLyogZm9yIHRoZSBjb25uZWN0IHRpbWVvdXQgKi8KQEAgLTY3LDYgKzY2LDkgQEAKICNpbmNsdWRlIDxjeWFzc2wvZXJyb3IuaD4KICNlbmRpZgogI2luY2x1ZGUgPGN5YXNzbC9jdGFvY3J5cHQvcmFuZG9tLmg+CisjaW5jbHVkZSA8Y3lhc3NsL2N0YW9jcnlwdC9zaGEyNTYuaD4KKworI2luY2x1ZGUgImN5YXNzbC5oIgogCiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKQEAgLTc2LDYgKzc4LDM4IEBACiAjZGVmaW5lIENZQVNTTF9NQVhfRVJST1JfU1ogODAKICNlbmRpZgogCisvKiBUbyBkZXRlcm1pbmUgd2hhdCBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3ZSByZWx5IG9uIG9uZSBvciBib3RoIG9mOgorICAgLSB0aGUgdXNlcidzIG9wdGlvbnMuaCBnZW5lcmF0ZWQgYnkgQ3lhU1NML3dvbGZTU0wKKyAgIC0gdGhlIHN5bWJvbHMgZGV0ZWN0ZWQgYnkgY3VybCdzIGNvbmZpZ3VyZQorICAgU2luY2UgdGhleSBhcmUgbWFya2VkbHkgZGlmZmVyZW50IGZyb20gb25lIGFub3RoZXIsIGFuZCBvbmUgb3IgdGhlIG90aGVyIG1heQorICAgbm90IGJlIGF2YWlsYWJsZSwgd2UgZG8gc29tZSBjaGVja2luZyBiZWxvdyB0byBicmluZyB0aGluZ3MgaW4gc3luYy4gKi8KKworLyogSEFWRV9BTFBOIGlzIHdvbGZTU0wncyBidWlsZCB0aW1lIHN5bWJvbCBmb3IgZW5hYmxpbmcgQUxQTiBpbiBvcHRpb25zLmguICovCisjaWZuZGVmIEhBVkVfQUxQTgorI2lmZGVmIEhBVkVfV09MRlNTTF9VU0VBTFBOCisjZGVmaW5lIEhBVkVfQUxQTgorI2VuZGlmCisjZW5kaWYKKworLyogV09MRlNTTF9BTExPV19TU0xWMyBpcyB3b2xmU1NMJ3MgYnVpbGQgdGltZSBzeW1ib2wgZm9yIGVuYWJsaW5nIFNTTHYzIGluCisgICBvcHRpb25zLmgsIGJ1dCBpcyBvbmx5IHNlZW4gaW4gPj0gMy42LjYgc2luY2UgdGhhdCdzIHdoZW4gdGhleSBzdGFydGVkCisgICBkaXNhYmxpbmcgU1NMdjMgYnkgZGVmYXVsdC4gKi8KKyNpZm5kZWYgV09MRlNTTF9BTExPV19TU0xWMworI2lmIChMSUJDWUFTU0xfVkVSU0lPTl9IRVggPCAweDAzMDA2MDA2KSB8fCBcCisgICAgZGVmaW5lZChIQVZFX1dPTEZTU0xWM19DTElFTlRfTUVUSE9EKQorI2RlZmluZSBXT0xGU1NMX0FMTE9XX1NTTFYzCisjZW5kaWYKKyNlbmRpZgorCisvKiBIQVZFX1NVUFBPUlRFRF9DVVJWRVMgaXMgd29sZlNTTCdzIGJ1aWxkIHRpbWUgc3ltYm9sIGZvciBlbmFibGluZyB0aGUgRUNDCisgICBzdXBwb3J0ZWQgY3VydmUgZXh0ZW5zaW9uIGluIG9wdGlvbnMuaC4gTm90ZSBFQ0MgaXMgZW5hYmxlZCBzZXBhcmF0ZWx5LiAqLworI2lmbmRlZiBIQVZFX1NVUFBPUlRFRF9DVVJWRVMKKyNpZiBkZWZpbmVkKEhBVkVfQ1lBU1NMX0NUWF9VU0VTVVBQT1JURURDVVJWRSkgfHwgXAorICAgIGRlZmluZWQoSEFWRV9XT0xGU1NMX0NUWF9VU0VTVVBQT1JURURDVVJWRSkKKyNkZWZpbmUgSEFWRV9TVVBQT1JURURfQ1VSVkVTCisjZW5kaWYKKyNlbmRpZgorCiBzdGF0aWMgQ3VybF9yZWN2IGN5YXNzbF9yZWN2Owogc3RhdGljIEN1cmxfc2VuZCBjeWFzc2xfc2VuZDsKIApAQCAtMTQyLDggKzE3NiwxMyBAQAogICAgIHVzZV9zbmkoVFJVRSk7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYzOgorI2lmZGVmIFdPTEZTU0xfQUxMT1dfU1NMVjMKICAgICByZXFfbWV0aG9kID0gU1NMdjNfY2xpZW50X21ldGhvZCgpOwogICAgIHVzZV9zbmkoRkFMU0UpOworI2Vsc2UKKyAgICBmYWlsZihkYXRhLCAiTm8gc3VwcG9ydCBmb3IgU1NMdjMiKTsKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworI2VuZGlmCiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYyOgogICAgIGZhaWxmKGRhdGEsICJDeWFTU0wgZG9lcyBub3Qgc3VwcG9ydCBTU0x2MiIpOwpAQCAtMjcyLDYgKzMxMSwxNiBAQAogICB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1VQUE9SVEVEX0NVUlZFUworICAvKiBDeWFTU0wvd29sZlNTTCBkb2VzIG5vdCBzZW5kIHRoZSBzdXBwb3J0ZWQgRUNDIGN1cnZlcyBleHQgYXV0b21hdGljYWxseToKKyAgICAgaHR0cHM6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC9pc3N1ZXMvMzY2CisgICAgIFRoZSBzdXBwb3J0ZWQgY3VydmVzIGJlbG93IGFyZSB0aG9zZSBhbHNvIHN1cHBvcnRlZCBieSBPcGVuU1NMIDEuMC4yIGFuZAorICAgICBpbiB0aGUgc2FtZSBvcmRlci4gKi8KKyAgQ3lhU1NMX0NUWF9Vc2VTdXBwb3J0ZWRDdXJ2ZShjb25zc2wtPmN0eCwgMHgxNyk7IC8qIHNlY3AyNTZyMSAqLworICBDeWFTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlKGNvbnNzbC0+Y3R4LCAweDE5KTsgLyogc2VjcDUyMXIxICovCisgIEN5YVNTTF9DVFhfVXNlU3VwcG9ydGVkQ3VydmUoY29uc3NsLT5jdHgsIDB4MTgpOyAvKiBzZWNwMzg0cjEgKi8KKyNlbmRpZgorCiAgIC8qIGdpdmUgYXBwbGljYXRpb24gYSBjaGFuY2UgdG8gaW50ZXJmZXJlIHdpdGggU1NMIHNldCB1cC4gKi8KICAgaWYoZGF0YS0+c2V0LnNzbC5mc3NsY3R4KSB7CiAgICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CkBAIC0zMDEsNiArMzUwLDMzIEBACiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAorI2lmZGVmIEhBVkVfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIGNoYXIgcHJvdG9jb2xzWzEyOF07CisgICAgKnByb3RvY29scyA9ICdcMCc7CisKKyAgICAvKiB3b2xmU1NMJ3MgQUxQTiBwcm90b2NvbCBuYW1lIGxpc3QgZm9ybWF0IGlzIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZgorICAgICAgIHByb3RvY29scyBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIHByZWZlcmVuY2UsIGVnOiAiaDIsaHR0cC8xLjEiICovCisKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CisgICAgICBzdHJjcHkocHJvdG9jb2xzICsgc3RybGVuKHByb3RvY29scyksIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCAiLCIpOworICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOworICAgIH0KKyNlbmRpZgorCisgICAgc3RyY3B5KHByb3RvY29scyArIHN0cmxlbihwcm90b2NvbHMpLCBBTFBOX0hUVFBfMV8xKTsKKyAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIEFMUE5fSFRUUF8xXzEpOworCisgICAgaWYod29sZlNTTF9Vc2VBTFBOKGNvbnNzbC0+aGFuZGxlLCBwcm90b2NvbHMsCisgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZClzdHJsZW4ocHJvdG9jb2xzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgV09MRlNTTF9BTFBOX0NPTlRJTlVFX09OX01JU01BVENIKSAhPSBTU0xfU1VDQ0VTUykgeworICAgICAgZmFpbGYoZGF0YSwgIlNTTDogZmFpbGVkIHNldHRpbmcgQUxQTiBwcm90b2NvbHMiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgIH0KKyNlbmRpZiAvKiBIQVZFX0FMUE4gKi8KKwogICAvKiBDaGVjayBpZiB0aGVyZSdzIGEgY2FjaGVkIElEIHdlIGNhbi9zaG91bGQgdXNlIGhlcmUhICovCiAgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJnNzbF9zZXNzaW9uaWQsIE5VTEwpKSB7CiAgICAgLyogd2UgZ290IGEgc2Vzc2lvbiBpZCwgdXNlIGl0ISAqLwpAQCAtNDA1LDYgKzQ4MSw3IEBACiAgIH0KIAogICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSkgeworI2lmZGVmIEtFRVBfUEVFUl9DRVJUCiAgICAgWDUwOSAqeDUwOTsKICAgICBjb25zdCBjaGFyICp4NTA5X2RlcjsKICAgICBpbnQgeDUwOV9kZXJfbGVuOwpAQCAtNDMzLDE1ICs1MTAsNTUgQEAKICAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0sCisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXB1YmtleS0+aGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3QpKHB1YmtleS0+ZW5kIC0gcHVia2V5LT5oZWFkZXIpKTsKICAgICBpZihyZXN1bHQpIHsKICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IHB1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggcGlubmVkIHB1YmxpYyBrZXkhIik7CiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyNlbHNlCisgICAgZmFpbGYoZGF0YSwgIkxpYnJhcnkgbGFja3MgcGlubmluZyBzdXBwb3J0IGJ1aWx0LWluIik7CisgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKKyNlbmRpZgogICB9CiAKKyNpZmRlZiBIQVZFX0FMUE4KKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKKyAgICBpbnQgcmM7CisgICAgY2hhciAqcHJvdG9jb2wgPSBOVUxMOworICAgIHVuc2lnbmVkIHNob3J0IHByb3RvY29sX2xlbiA9IDA7CisKKyAgICByYyA9IHdvbGZTU0xfQUxQTl9HZXRQcm90b2NvbChjb25zc2wtPmhhbmRsZSwgJnByb3RvY29sLCAmcHJvdG9jb2xfbGVuKTsKKworICAgIGlmKHJjID09IFNTTF9TVUNDRVNTKSB7CisgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgc2VydmVyIGFjY2VwdGVkIHRvIHVzZSAlLipzXG4iLCBwcm90b2NvbF9sZW4sCisgICAgICAgICAgICBwcm90b2NvbCk7CisKKyAgICAgIGlmKHByb3RvY29sX2xlbiA9PSBBTFBOX0hUVFBfMV8xX0xFTkdUSCAmJgorICAgICAgICAgIW1lbWNtcChwcm90b2NvbCwgQUxQTl9IVFRQXzFfMSwgQUxQTl9IVFRQXzFfMV9MRU5HVEgpKQorICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE7CisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICAgIGVsc2UgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzIgJiYKKyAgICAgICAgICAgICAgcHJvdG9jb2xfbGVuID09IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4gJiYKKyAgICAgICAgICAgICAgIW1lbWNtcChwcm90b2NvbCwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKQorICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yOworI2VuZGlmCisgICAgICBlbHNlCisgICAgICAgIGluZm9mKGRhdGEsICJBTFBOLCB1bnJlY29nbml6ZWQgcHJvdG9jb2wgJS4qc1xuIiwgcHJvdG9jb2xfbGVuLAorICAgICAgICAgICAgICBwcm90b2NvbCk7CisgICAgfQorICAgIGVsc2UgaWYocmMgPT0gU1NMX0FMUE5fTk9UX0ZPVU5EKQorICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBkaWQgbm90IGFncmVlIHRvIGEgcHJvdG9jb2xcbiIpOworICAgIGVsc2UgeworICAgICAgZmFpbGYoZGF0YSwgIkFMUE4sIGZhaWx1cmUgZ2V0dGluZyBwcm90b2NvbCwgZXJyb3IgJWQiLCByYyk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorICB9CisjZW5kaWYgLyogSEFWRV9BTFBOICovCisKICAgY29uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMzsKICAgaW5mb2YoZGF0YSwgIlNTTCBjb25uZWN0ZWRcbiIpOwogCkBAIC03NzAsNCArODg3LDE2IEBACiAgIHJldHVybiAwOwogfQogCit2b2lkIEN1cmxfY3lhc3NsX3NoYTI1NnN1bShjb25zdCB1bnNpZ25lZCBjaGFyICp0bXAsIC8qIGlucHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0gLyogb3V0cHV0ICovLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB1bnVzZWQpCit7CisgIFNoYTI1NiBTSEEyNTZwdzsKKyAgKHZvaWQpdW51c2VkOworICBJbml0U2hhMjU2KCZTSEEyNTZwdyk7CisgIFNoYTI1NlVwZGF0ZSgmU0hBMjU2cHcsIHRtcCwgKHdvcmQzMil0bXBsZW4pOworICBTaGEyNTZGaW5hbCgmU0hBMjU2cHcsIHNoYTI1NnN1bSk7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvY3lhc3NsLmggYi9saWIvdnRscy9jeWFzc2wuaAppbmRleCAxMjYzOGE3Li4xMTA2MTI1IDEwMDY0NAotLS0gYS9saWIvdnRscy9jeWFzc2wuaAorKysgYi9saWIvdnRscy9jeWFzc2wuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI1LDYgKzI1LDE4IEBACiAKICNpZmRlZiBVU0VfQ1lBU1NMCiAKKy8qIEtFRVBfUEVFUl9DRVJUIGlzIGEgcHJvZHVjdCBvZiB0aGUgcHJlc2VuY2Ugb2YgYnVpbGQgdGltZSBzeW1ib2wKKyAgIE9QRU5TU0xfRVhUUkEgd2l0aG91dCBOT19DRVJUUywgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uLiBLRUVQX1BFRVJfQ0VSVCBpcworICAgaW4gd29sZlNTTCdzIHNldHRpbmdzLmgsIGFuZCB0aGUgbGF0dGVyIHR3byBhcmUgYnVpbGQgdGltZSBzeW1ib2xzIGluCisgICBvcHRpb25zLmguICovCisjaWZuZGVmIEtFRVBfUEVFUl9DRVJUCisjaWYgZGVmaW5lZChIQVZFX0NZQVNTTF9HRVRfUEVFUl9DRVJUSUZJQ0FURSkgfHwgXAorICAgIGRlZmluZWQoSEFWRV9XT0xGU1NMX0dFVF9QRUVSX0NFUlRJRklDQVRFKSB8fCBcCisgICAgKGRlZmluZWQoT1BFTlNTTF9FWFRSQSkgJiYgIWRlZmluZWQoTk9fQ0VSVFMpKQorI2RlZmluZSBLRUVQX1BFRVJfQ0VSVAorI2VuZGlmCisjZW5kaWYKKwogQ1VSTGNvZGUgQ3VybF9jeWFzc2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpOwogYm9vbCBDdXJsX2N5YXNzbF9kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhKiBjb25uLCBpbnQgY29ubmluZGV4KTsKIGludCBDdXJsX2N5YXNzbF9zaHV0ZG93bihzdHJ1Y3QgY29ubmVjdGRhdGEqIGNvbm4sIGludCBzb2NraW5kZXgpOwpAQCAtNDIsNiArNTQsMTAgQEAKIGludCBDdXJsX2N5YXNzbF9yYW5kb20oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmVudHJvcHksCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpOwordm9pZCBDdXJsX2N5YXNzbF9zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSwgLyogb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdW51c2VkKTsKIAogLyogU2V0IHRoZSBBUEkgYmFja2VuZCBkZWZpbml0aW9uIHRvIFNjaGFubmVsICovCiAjZGVmaW5lIENVUkxfU1NMX0JBQ0tFTkQgQ1VSTFNTTEJBQ0tFTkRfQ1lBU1NMCkBAIC00OSw2ICs2NSwxMSBAQAogLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfU1NMX0NUWF8qICovCiAjZGVmaW5lIGhhdmVfY3VybHNzbF9zc2xfY3R4IDEKIAorI2lmZGVmIEtFRVBfUEVFUl9DRVJUCisvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgKi8KKyNkZWZpbmUgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAxCisjZW5kaWYKKwogLyogQVBJIHNldHVwIGZvciBDeWFTU0wgKi8KICNkZWZpbmUgY3VybHNzbF9pbml0IEN1cmxfY3lhc3NsX2luaXQKICNkZWZpbmUgY3VybHNzbF9jbGVhbnVwKCkgQ3VybF9ub3Bfc3RtdApAQCAtNjUsNiArODYsNyBAQAogI2RlZmluZSBjdXJsc3NsX2NoZWNrX2N4bih4KSAoKHZvaWQpeCwgLTEpCiAjZGVmaW5lIGN1cmxzc2xfZGF0YV9wZW5kaW5nKHgseSkgQ3VybF9jeWFzc2xfZGF0YV9wZW5kaW5nKHgseSkKICNkZWZpbmUgY3VybHNzbF9yYW5kb20oeCx5LHopIEN1cmxfY3lhc3NsX3JhbmRvbSh4LHkseikKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgQ3VybF9jeWFzc2xfc2hhMjU2c3VtKGEsYixjLGQpCiAKICNlbmRpZiAvKiBVU0VfQ1lBU1NMICovCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfQ1lBU1NMX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92dGxzL2RhcndpbnNzbC5jIGIvbGliL3Z0bHMvZGFyd2luc3NsLmMKaW5kZXggMDNhZGNlZi4uNzFkMzc5YiAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvZGFyd2luc3NsLmMKKysrIGIvbGliL3Z0bHMvZGFyd2luc3NsLmMKQEAgLTEwLDcgKzEwLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03ODEsNyArNzgxLDcgQEAKICAgaW50IG1pYlsyXTsKICAgY2hhciAqb3NfdmVyc2lvbjsKICAgc2l6ZV90IG9zX3ZlcnNpb25fbGVuOwotICBjaGFyICpvc192ZXJzaW9uX21ham9yLCAqb3NfdmVyc2lvbl9taW5vci8qLCAqb3NfdmVyc2lvbl9wb2ludCovOworICBjaGFyICpvc192ZXJzaW9uX21ham9yLCAqb3NfdmVyc2lvbl9taW5vcjsKICAgY2hhciAqdG9rX2J1ZjsKIAogICAvKiBHZXQgdGhlIERhcndpbiBrZXJuZWwgdmVyc2lvbiBmcm9tIHRoZSBrZXJuZWwgdXNpbmcgc3lzY3RsKCk6ICovCkBAIC04MDAsNyArODAwLDYgQEAKICAgLyogUGFyc2UgdGhlIHZlcnNpb246ICovCiAgIG9zX3ZlcnNpb25fbWFqb3IgPSBzdHJ0b2tfcihvc192ZXJzaW9uLCAiLiIsICZ0b2tfYnVmKTsKICAgb3NfdmVyc2lvbl9taW5vciA9IHN0cnRva19yKE5VTEwsICIuIiwgJnRva19idWYpOwotICAvKm9zX3ZlcnNpb25fcG9pbnQgPSBzdHJ0b2tfcihOVUxMLCAiLiIsICZ0b2tfYnVmKTsqLwogICAqbWFqb3IgPSBhdG9pKG9zX3ZlcnNpb25fbWFqb3IpOwogICAqbWlub3IgPSBhdG9pKG9zX3ZlcnNpb25fbWlub3IpOwogICBmcmVlKG9zX3ZlcnNpb24pOwpAQCAtMTI4MiwxNCArMTI4MSwyMSBAQAogI2lmIENVUkxfQlVJTERfTUFDXzEwXzYgfHwgQ1VSTF9CVUlMRF9JT1MKICAgLyogU25vdyBMZW9wYXJkIGludHJvZHVjZWQgdGhlIFNTTFNldFNlc3Npb25PcHRpb24oKSBmdW5jdGlvbiwgYnV0IGR1ZSB0bwogICAgICBhIGxpYnJhcnkgYnVnIHdpdGggdGhlIHdheSB0aGUga1NTTFNlc3Npb25PcHRpb25CcmVha09uU2VydmVyQXV0aCBmbGFnCi0gICAgIHdvcmtzLCBpdCBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgdW5kZXIgU25vdyBMZW9wYXJkIG9yIExpb24uCisgICAgIHdvcmtzLCBpdCBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgdW5kZXIgU25vdyBMZW9wYXJkLCBMaW9uIG9yCisgICAgIE1vdW50YWluIExpb24uCiAgICAgIFNvIHdlIG5lZWQgdG8gY2FsbCBTU0xTZXRFbmFibGVDZXJ0VmVyaWZ5KCkgb24gdGhvc2Ugb2xkZXIgY2F0cyBpbiBvcmRlcgogICAgICB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gaWYgdGhlIHVzZXIgdHVybmVkIHRoYXQgb2ZmLgogICAgICAoU2VjdXJlVHJhbnNwb3J0IHdpbGwgYWx3YXlzIHZhbGlkYXRlIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBieQotICAgICBkZWZhdWx0LikgKi8KLSAgLyogKE5vdGU6IERhcndpbiAxMi54LnggaXMgTW91bnRhaW4gTGlvbi4pICovCisgICAgIGRlZmF1bHQuKQorICBOb3RlOgorICBEYXJ3aW4gMTEueC54IGlzIExpb24gKDEwLjcpCisgIERhcndpbiAxMi54LnggaXMgTW91bnRhaW4gTGlvbiAoMTAuOCkKKyAgRGFyd2luIDEzLngueCBpcyBNYXZlcmlja3MgKDEwLjkpCisgIERhcndpbiAxNC54LnggaXMgWW9zZW1pdGUgKDEwLjEwKQorICBEYXJ3aW4gMTUueC54IGlzIEVsIENhcGl0YW4gKDEwLjExKQorICAqLwogI2lmIENVUkxfQlVJTERfTUFDCi0gIGlmKFNTTFNldFNlc3Npb25PcHRpb24gIT0gTlVMTCAmJiBkYXJ3aW52ZXJfbWFqID49IDEyKSB7CisgIGlmKFNTTFNldFNlc3Npb25PcHRpb24gIT0gTlVMTCAmJiBkYXJ3aW52ZXJfbWFqID49IDEzKSB7CiAjZWxzZQogICBpZihTU0xTZXRTZXNzaW9uT3B0aW9uICE9IE5VTEwpIHsKICNlbmRpZiAvKiBDVVJMX0JVSUxEX01BQyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvZGFyd2luc3NsLmggYi9saWIvdnRscy9kYXJ3aW5zc2wuaAppbmRleCAzYmI2OWMwLi44YjE4NWI2IDEwMDY0NAotLS0gYS9saWIvdnRscy9kYXJ3aW5zc2wuaAorKysgYi9saWIvdnRscy9kYXJ3aW5zc2wuaApAQCAtMTIsNyArMTIsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi92dGxzL2dza2l0LmMgYi9saWIvdnRscy9nc2tpdC5jCmluZGV4IGQ4ODRiZDQuLmE5YThhOTEgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2dza2l0LmMKKysrIGIvbGliL3Z0bHMvZ3NraXQuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04NzQsNyArODc0LDcgQEAKICAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CiAgICAgQ3VybF9wYXJzZVg1MDkoJng1MDksIGNlcnQsIGNlcnRlbmQpOwogICAgIHAgPSAmeDUwOS5zdWJqZWN0UHVibGljS2V5SW5mbzsKLSAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShwdHIsIHAtPmhlYWRlciwgcC0+ZW5kIC0gcC0+aGVhZGVyKTsKKyAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLCBwdHIsIHAtPmhlYWRlciwgcC0+ZW5kIC0gcC0+aGVhZGVyKTsKICAgICBpZihyZXN1bHQpIHsKICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IHB1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggcGlubmVkIHB1YmxpYyBrZXkhIik7CiAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvZ3NraXQuaCBiL2xpYi92dGxzL2dza2l0LmgKaW5kZXggYWYzMWZhZi4uNDE0ODNjYiAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvZ3NraXQuaAorKysgYi9saWIvdnRscy9nc2tpdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvZ3Rscy5jIGIvbGliL3Z0bHMvZ3Rscy5jCmluZGV4IDFkYjMxZTQuLjFiNWE2YTQgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2d0bHMuYworKysgYi9saWIvdnRscy9ndGxzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw2ICszOSw3IEBACiAjaWZkZWYgVVNFX0dOVVRMU19ORVRUTEUKICNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CiAjaW5jbHVkZSA8bmV0dGxlL21kNS5oPgorI2luY2x1ZGUgPG5ldHRsZS9zaGEyLmg+CiAjZWxzZQogI2luY2x1ZGUgPGdjcnlwdC5oPgogI2VuZGlmCkBAIC02MSw3ICs2Miw3IEBACiAKIC8qCiAgU29tZSBoYWNraXNoIGNhc3QgbWFjcm9zIGJhc2VkIG9uOgotIGh0dHA6Ly9saWJyYXJ5Lmdub21lLm9yZy9kZXZlbC9nbGliL3Vuc3RhYmxlL2dsaWItVHlwZS1Db252ZXJzaW9uLU1hY3Jvcy5odG1sCisgaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1UeXBlLUNvbnZlcnNpb24tTWFjcm9zLmh0bWwKICovCiAjaWZuZGVmIEdOVVRMU19QT0lOVEVSX1RPX0lOVF9DQVNUCiAjZGVmaW5lIEdOVVRMU19QT0lOVEVSX1RPX0lOVF9DQVNUKHApICgoaW50KSAobG9uZykgKHApKQpAQCAtNDg2LDYgKzQ4NywxNCBAQAogICB9CiAjZW5kaWYKIAorI2lmZGVmIENVUkxfQ0FfRkFMTEJBQ0sKKyAgLyogdXNlIHN5c3RlbSBjYSBjZXJ0aWZpY2F0ZSBzdG9yZSBhcyBmYWxsYmFjayAqLworICBpZihkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIgJiYKKyAgICAgIShkYXRhLT5zZXQuc3NsLkNBZmlsZSB8fCBkYXRhLT5zZXQuc3NsLkNBcGF0aCkpIHsKKyAgICBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfc3lzdGVtX3RydXN0KGNvbm4tPnNzbFtzb2NraW5kZXhdLmNyZWQpOworICB9CisjZW5kaWYKKwogICBpZihkYXRhLT5zZXQuc3NsLkNSTGZpbGUpIHsKICAgICAvKiBzZXQgdGhlIENSTCBsaXN0IGZpbGUgKi8KICAgICByYyA9IGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9jcmxfZmlsZShjb25uLT5zc2xbc29ja2luZGV4XS5jcmVkLApAQCAtNjMyLDEyICs2NDEsMTIgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFTX0FMUE4KLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIGludCBjdXIgPSAwOwogICAgIGdudXRsc19kYXR1bV90IHByb3RvY29sc1syXTsKIAogI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkgeworICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CiAgICAgICBwcm90b2NvbHNbY3VyXS5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQ7CiAgICAgICBwcm90b2NvbHNbY3VyXS5zaXplID0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTjsKICAgICAgIGN1cisrOwpAQCAtNjU1LDE1ICs2NjQsNDQgQEAKICNlbmRpZgogCiAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdKSB7Ci0gICAgaWYoZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9maWxlKAotICAgICAgICAgY29ubi0+c3NsW3NvY2tpbmRleF0uY3JlZCwKLSAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAotICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA/Ci0gICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVldIDogZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF0sCi0gICAgICAgICBkb19maWxlX3R5cGUoZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF9UWVBFXSkgKSAhPQotICAgICAgIEdOVVRMU19FX1NVQ0NFU1MpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJlcnJvciByZWFkaW5nIFguNTA5IGtleSBvciBjZXJ0aWZpY2F0ZSBmaWxlIik7CisgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZX1BBU1NXRF0pIHsKKyNpZiBIQVZFX0dOVVRMU19DRVJUSUZJQ0FURV9TRVRfWDUwOV9LRVlfRklMRTIKKyAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBzdXBwb3J0ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcyA9CisgICAgICAgIEdOVVRMU19QS0NTX1VTRV9QS0NTMTJfM0RFUyB8IEdOVVRMU19QS0NTX1VTRV9QS0NTMTJfQVJDRk9VUiB8CisgICAgICAgIEdOVVRMU19QS0NTX1VTRV9QS0NTMTJfUkMyXzQwIHwgR05VVExTX1BLQ1NfVVNFX1BCRVMyXzNERVMgfAorICAgICAgICBHTlVUTFNfUEtDU19VU0VfUEJFUzJfQUVTXzEyOCB8IEdOVVRMU19QS0NTX1VTRV9QQkVTMl9BRVNfMTkyIHwKKyAgICAgICAgR05VVExTX1BLQ1NfVVNFX1BCRVMyX0FFU18yNTY7CisgICAgICByYyA9IGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9rZXlfZmlsZTIoCisgICAgICAgICAgIGNvbm4tPnNzbFtzb2NraW5kZXhdLmNyZWQsCisgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAorICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVldID8KKyAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA6IGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAorICAgICAgICAgICBkb19maWxlX3R5cGUoZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF9UWVBFXSksCisgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV9QQVNTV0RdLAorICAgICAgICAgICBzdXBwb3J0ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcyk7CisgICAgICBpZihyYyAhPSBHTlVUTFNfRV9TVUNDRVNTKSB7CisgICAgICAgIGZhaWxmKGRhdGEsCisgICAgICAgICAgICAgICJlcnJvciByZWFkaW5nIFguNTA5IHBvdGVudGlhbGx5LWVuY3J5cHRlZCBrZXkgZmlsZTogJXMiLAorICAgICAgICAgICAgICBnbnV0bHNfc3RyZXJyb3IocmMpKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgICAgfQorI2Vsc2UKKyAgICAgIGZhaWxmKGRhdGEsICJnbnV0bHMgbGFja3Mgc3VwcG9ydCBmb3IgZW5jcnlwdGVkIGtleSBmaWxlcyIpOwogICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgcmMgPSBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUoCisgICAgICAgICAgIGNvbm4tPnNzbFtzb2NraW5kZXhdLmNyZWQsCisgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAorICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVldID8KKyAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA6IGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAorICAgICAgICAgICBkb19maWxlX3R5cGUoZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF9UWVBFXSkgKTsKKyAgICAgIGlmKHJjICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgImVycm9yIHJlYWRpbmcgWC41MDkga2V5IG9yIGNlcnRpZmljYXRlIGZpbGU6ICVzIiwKKyAgICAgICAgICAgICAgZ251dGxzX3N0cmVycm9yKHJjKSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICAgIH0KICAgICB9CiAgIH0KIApAQCAtNzIzLDcgKzc2MSw4IEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIENVUkxjb2RlIHBrcF9waW5fcGVlcl9wdWJrZXkoZ251dGxzX3g1MDlfY3J0X3QgY2VydCwKK3N0YXRpYyBDVVJMY29kZSBwa3BfcGluX3BlZXJfcHVia2V5KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ251dGxzX3g1MDlfY3J0X3QgY2VydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBpbm5lZHB1YmtleSkKIHsKICAgLyogU2NyYXRjaCAqLwpAQCAtNzY4LDcgKzgwNyw3IEBACiAgICAgLyogRW5kIEd5cmF0aW9ucyAqLwogCiAgICAgLyogVGhlIG9uZSBnb29kIGV4aXQgcG9pbnQgKi8KLSAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShwaW5uZWRwdWJrZXksIGJ1ZmYxLCBsZW4xKTsKKyAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLCBwaW5uZWRwdWJrZXksIGJ1ZmYxLCBsZW4xKTsKICAgfSB3aGlsZSgwKTsKIAogICBpZihOVUxMICE9IGtleSkKQEAgLTExNTEsNyArMTE5MCw3IEBACiAKICAgcHRyID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV07CiAgIGlmKHB0cikgewotICAgIHJlc3VsdCA9IHBrcF9waW5fcGVlcl9wdWJrZXkoeDUwOV9jZXJ0LCBwdHIpOworICAgIHJlc3VsdCA9IHBrcF9waW5fcGVlcl9wdWJrZXkoZGF0YSwgeDUwOV9jZXJ0LCBwdHIpOwogICAgIGlmKHJlc3VsdCAhPSBDVVJMRV9PSykgewogICAgICAgZmFpbGYoZGF0YSwgIlNTTDogcHVibGljIGtleSBkb2VzIG5vdCBtYXRjaCBwaW5uZWQgcHVibGljIGtleSEiKTsKICAgICAgIGdudXRsc194NTA5X2NydF9kZWluaXQoeDUwOV9jZXJ0KTsKQEAgLTEyMDEsNyArMTI0MCw3IEBACiAgIGluZm9mKGRhdGEsICJcdCBjb21wcmVzc2lvbjogJXNcbiIsIHB0cik7CiAKICNpZmRlZiBIQVNfQUxQTgotICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuKSB7CisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CiAgICAgcmMgPSBnbnV0bHNfYWxwbl9nZXRfc2VsZWN0ZWRfcHJvdG9jb2woc2Vzc2lvbiwgJnByb3RvKTsKICAgICBpZihyYyA9PSAwKSB7CiAgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgc2VydmVyIGFjY2VwdGVkIHRvIHVzZSAlLipzXG4iLCBwcm90by5zaXplLApAQCAtMTIxMSw3ICsxMjUwLDcgQEAKICAgICAgIGlmKHByb3RvLnNpemUgPT0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTiAmJgogICAgICAgICAgIW1lbWNtcChOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsIHByb3RvLmRhdGEsCiAgICAgICAgICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKSB7Ci0gICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKICAgICAgIH0KICAgICAgIGVsc2UKICNlbmRpZgpAQCAtMTM0Miw3ICsxMzgxLDcgQEAKIHsKICAgc3NpemVfdCByYyA9IGdudXRsc19yZWNvcmRfc2VuZChjb25uLT5zc2xbc29ja2luZGV4XS5zZXNzaW9uLCBtZW0sIGxlbik7CiAKLSAgaWYocmMgPCAwICkgeworICBpZihyYyA8IDApIHsKICAgICAqY3VybGNvZGUgPSAocmMgPT0gR05VVExTX0VfQUdBSU4pCiAgICAgICA/IENVUkxFX0FHQUlOCiAgICAgICA6IENVUkxFX1NFTkRfRVJST1I7CkBAIC0xNTU3LDYgKzE1OTYsMjUgQEAKICNlbmRpZgogfQogCit2b2lkIEN1cmxfZ3Rsc19zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtLCAvKiBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2hhMjU2bGVuKQoreworI2lmIGRlZmluZWQoVVNFX0dOVVRMU19ORVRUTEUpCisgIHN0cnVjdCBzaGEyNTZfY3R4IFNIQTI1NnB3OworICBzaGEyNTZfaW5pdCgmU0hBMjU2cHcpOworICBzaGEyNTZfdXBkYXRlKCZTSEEyNTZwdywgKHVuc2lnbmVkIGludCl0bXBsZW4sIHRtcCk7CisgIHNoYTI1Nl9kaWdlc3QoJlNIQTI1NnB3LCAodW5zaWduZWQgaW50KXNoYTI1Nmxlbiwgc2hhMjU2c3VtKTsKKyNlbGlmIGRlZmluZWQoVVNFX0dOVVRMUykKKyAgZ2NyeV9tZF9oZF90IFNIQTI1NnB3OworICBnY3J5X21kX29wZW4oJlNIQTI1NnB3LCBHQ1JZX01EX1NIQTI1NiwgMCk7CisgIGdjcnlfbWRfd3JpdGUoU0hBMjU2cHcsIHRtcCwgdG1wbGVuKTsKKyAgbWVtY3B5KHNoYTI1NnN1bSwgZ2NyeV9tZF9yZWFkIChTSEEyNTZwdywgMCksIHNoYTI1Nmxlbik7CisgIGdjcnlfbWRfY2xvc2UoU0hBMjU2cHcpOworI2VuZGlmCit9CisKIGJvb2wgQ3VybF9ndGxzX2NlcnRfc3RhdHVzX3JlcXVlc3Qodm9pZCkKIHsKICNpZmRlZiBIQVNfT0NTUApkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvZ3Rscy5oIGIvbGliL3Z0bHMvZ3Rscy5oCmluZGV4IGRjYWU0NDIuLjYxMWEyZjQgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2d0bHMuaAorKysgYi9saWIvdnRscy9ndGxzLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00OCw2ICs0OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWQ1c3VtLCAvKiBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWQ1bGVuKTsKK3ZvaWQgQ3VybF9ndGxzX3NoYTI1NnN1bShjb25zdCB1bnNpZ25lZCBjaGFyICp0bXAsIC8qIGlucHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0sIC8qIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaGEyNTZsZW4pOwogCiBib29sIEN1cmxfZ3Rsc19jZXJ0X3N0YXR1c19yZXF1ZXN0KHZvaWQpOwogCkBAIC02MCw2ICs2NCw5IEBACiAvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgQ1VSTE9QVF9DRVJUSU5GTyAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfY2VydGluZm8gMQogCisvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgKi8KKyNkZWZpbmUgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAxCisKIC8qIEFQSSBzZXR1cCBmb3IgR251VExTICovCiAjZGVmaW5lIGN1cmxzc2xfaW5pdCBDdXJsX2d0bHNfaW5pdAogI2RlZmluZSBjdXJsc3NsX2NsZWFudXAgQ3VybF9ndGxzX2NsZWFudXAKQEAgLTc3LDYgKzg0LDcgQEAKICNkZWZpbmUgY3VybHNzbF9kYXRhX3BlbmRpbmcoeCx5KSAoKHZvaWQpeCwgKHZvaWQpeSwgMCkKICNkZWZpbmUgY3VybHNzbF9yYW5kb20oeCx5LHopIEN1cmxfZ3Rsc19yYW5kb20oeCx5LHopCiAjZGVmaW5lIGN1cmxzc2xfbWQ1c3VtKGEsYixjLGQpIEN1cmxfZ3Rsc19tZDVzdW0oYSxiLGMsZCkKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgQ3VybF9ndGxzX3NoYTI1NnN1bShhLGIsYyxkKQogI2RlZmluZSBjdXJsc3NsX2NlcnRfc3RhdHVzX3JlcXVlc3QoKSBDdXJsX2d0bHNfY2VydF9zdGF0dXNfcmVxdWVzdCgpCiAKICNlbmRpZiAvKiBVU0VfR05VVExTICovCmRpZmYgLS1naXQgYS9saWIvdnRscy9tYmVkdGxzLmMgYi9saWIvdnRscy9tYmVkdGxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwYjk0OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92dGxzL21iZWR0bHMuYwpAQCAtMCwwICsxLDg2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDEwIC0gMjAxMSwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFNvdXJjZSBmaWxlIGZvciBhbGwgbWJlZFRMUy1zcGVjaWZpYyBjb2RlIGZvciB0aGUgVExTL1NTTCBsYXllci4gTm8gY29kZQorICogYnV0IHZ0bHMuYyBzaG91bGQgZXZlciBjYWxsIG9yIHVzZSB0aGVzZSBmdW5jdGlvbnMuCisgKgorICovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfTUJFRFRMUworCisjaW5jbHVkZSA8bWJlZHRscy9uZXQuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3NzbC5oPgorI2luY2x1ZGUgPG1iZWR0bHMvY2VydHMuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3g1MDkuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3ZlcnNpb24uaD4KKworI2luY2x1ZGUgPG1iZWR0bHMvZXJyb3IuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL2VudHJvcHkuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL2N0cl9kcmJnLmg+CisjaW5jbHVkZSA8bWJlZHRscy9zaGEyNTYuaD4KKworI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgImluZXRfcHRvbi5oIgorI2luY2x1ZGUgIm1iZWR0bHMuaCIKKyNpbmNsdWRlICJ2dGxzLmgiCisjaW5jbHVkZSAicGFyc2VkYXRlLmgiCisjaW5jbHVkZSAiY29ubmVjdC5oIiAvKiBmb3IgdGhlIGNvbm5lY3QgdGltZW91dCAqLworI2luY2x1ZGUgInNlbGVjdC5oIgorI2luY2x1ZGUgInJhd3N0ci5oIgorI2luY2x1ZGUgInBvbGFyc3NsX3RocmVhZGxvY2suaCIKKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKiBhcHBseSB0aHJlYWRpbmc/ICovCisjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgfHwgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikKKyNkZWZpbmUgVEhSRUFESU5HX1NVUFBPUlQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUSFJFQURJTkdfU1VQUE9SVCkKK3N0YXRpYyBtYmVkdGxzX2VudHJvcHlfY29udGV4dCBlbnRyb3B5OworCitzdGF0aWMgaW50IGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCA9IDA7CisKKy8qIHN0YXJ0IG9mIGVudHJvcHlfaW5pdF9tdXRleCgpICovCitzdGF0aWMgdm9pZCBlbnRyb3B5X2luaXRfbXV0ZXgobWJlZHRsc19lbnRyb3B5X2NvbnRleHQgKmN0eCkKK3sKKyAgLyogbG9jayAwID0gZW50cm9weV9pbml0X211dGV4KCkgKi8KKyAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbigwKTsKKyAgaWYoZW50cm9weV9pbml0X2luaXRpYWxpemVkID09IDApIHsKKyAgICBtYmVkdGxzX2VudHJvcHlfaW5pdChjdHgpOworICAgIGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCA9IDE7CisgIH0KKyAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDApOworfQorLyogZW5kIG9mIGVudHJvcHlfaW5pdF9tdXRleCgpICovCisKKy8qIHN0YXJ0IG9mIGVudHJvcHlfZnVuY19tdXRleCgpICovCitzdGF0aWMgaW50IGVudHJvcHlfZnVuY19tdXRleCh2b2lkICpkYXRhLCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBsZW4pCit7CisgIGludCByZXQ7CisgIC8qIGxvY2sgMSA9IGVudHJvcHlfZnVuY19tdXRleCgpICovCisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMSk7CisgIHJldCA9IG1iZWR0bHNfZW50cm9weV9mdW5jKGRhdGEsIG91dHB1dCwgbGVuKTsKKyAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDEpOworCisgIHJldHVybiByZXQ7Cit9CisvKiBlbmQgb2YgZW50cm9weV9mdW5jX211dGV4KCkgKi8KKworI2VuZGlmIC8qIFRIUkVBRElOR19TVVBQT1JUICovCisKKy8qIERlZmluZSB0aGlzIHRvIGVuYWJsZSBsb3RzIG9mIGRlYnVnZ2luZyBmb3IgbWJlZFRMUyAqLworI3VuZGVmIE1CRURUTFNfREVCVUcKKworI2lmZGVmIE1CRURUTFNfREVCVUcKK3N0YXRpYyB2b2lkIG1iZWRfZGVidWcodm9pZCAqY29udGV4dCwgaW50IGxldmVsLCBjb25zdCBjaGFyICpmX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lX25iLCBjb25zdCBjaGFyICpsaW5lKQoreworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IE5VTEw7CisKKyAgaWYoIWNvbnRleHQpCisgICAgcmV0dXJuOworCisgIGRhdGEgPSAoc3RydWN0IFNlc3Npb25IYW5kbGUgKiljb250ZXh0OworCisgIGluZm9mKGRhdGEsICIlcyIsIGxpbmUpOworICAodm9pZCkgbGV2ZWw7Cit9CisjZWxzZQorI2VuZGlmCisKKy8qIEFMUE4gZm9yIGh0dHAyPyAqLworI2lmZGVmIFVTRV9OR0hUVFAyCisjICB1bmRlZiBIQVNfQUxQTgorIyAgaWZkZWYgTUJFRFRMU19TU0xfQUxQTgorIyAgICBkZWZpbmUgSEFTX0FMUE4KKyMgIGVuZGlmCisjZW5kaWYKKworCisvKgorICogIHByb2ZpbGUKKyAqLworY29uc3QgbWJlZHRsc194NTA5X2NydF9wcm9maWxlIG1iZWR0bHNfeDUwOV9jcnRfcHJvZmlsZV9mciA9Cit7CisgIC8qIEhhc2hlcyBmcm9tIFNIQS0xIGFuZCBhYm92ZSAqLworICBNQkVEVExTX1g1MDlfSURfRkxBRyhNQkVEVExTX01EX1NIQTEpIHwKKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9SSVBFTUQxNjApIHwKKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9TSEEyMjQpIHwKKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9TSEEyNTYpIHwKKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9TSEEzODQpIHwKKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9TSEE1MTIpLAorICAweEZGRkZGRkYsIC8qIEFueSBQSyBhbGcgICAgKi8KKyAgMHhGRkZGRkZGLCAvKiBBbnkgY3VydmUgICAgICovCisgIDEwMjQsICAgICAgLyogUlNBIG1pbiBrZXkgbGVuICovCit9OworCisvKiBTZWUgaHR0cHM6Ly90bHMubWJlZC5vcmcvZGlzY3Vzc2lvbnMvZ2VuZXJpYy8KKyAgIGhvd3RvLWRldGVybWluZS1leGFjdC1idWZmZXItbGVuLWZvci1tYmVkdGxzX3BrX3dyaXRlX3B1YmtleV9kZXIKKyovCisjZGVmaW5lIFJTQV9QVUJfREVSX01BWF9CWVRFUyAgICgzOCArIDIgKiBNQkVEVExTX01QSV9NQVhfU0laRSkKKyNkZWZpbmUgRUNQX1BVQl9ERVJfTUFYX0JZVEVTICAgKDMwICsgMiAqIE1CRURUTFNfRUNQX01BWF9CWVRFUykKKworI2RlZmluZSBQVUJfREVSX01BWF9CWVRFUyAgIChSU0FfUFVCX0RFUl9NQVhfQllURVMgPiBFQ1BfUFVCX0RFUl9NQVhfQllURVMgPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QVUJfREVSX01BWF9CWVRFUyA6IEVDUF9QVUJfREVSX01BWF9CWVRFUykKKworc3RhdGljIEN1cmxfcmVjdiBtYmVkX3JlY3Y7CitzdGF0aWMgQ3VybF9zZW5kIG1iZWRfc2VuZDsKKworc3RhdGljIENVUkxjb2RlCittYmVkX2Nvbm5lY3Rfc3RlcDEoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCit7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEqIGNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisKKyAgYm9vbCBzbmkgPSBUUlVFOyAvKiBkZWZhdWx0IGlzIFNOSSBlbmFibGVkICovCisgIGludCByZXQgPSAtMTsKKyNpZmRlZiBFTkFCTEVfSVBWNgorICBzdHJ1Y3QgaW42X2FkZHIgYWRkcjsKKyNlbHNlCisgIHN0cnVjdCBpbl9hZGRyIGFkZHI7CisjZW5kaWYKKyAgdm9pZCAqb2xkX3Nlc3Npb24gPSBOVUxMOworICBjaGFyIGVycm9yYnVmWzEyOF07CisgIGVycm9yYnVmWzBdPTA7CisKKyAgLyogbWJlZFRMUyBvbmx5IHN1cHBvcnRzIFNTTHYzIGFuZCBUTFN2MSAqLworICBpZihkYXRhLT5zZXQuc3NsLnZlcnNpb24gPT0gQ1VSTF9TU0xWRVJTSU9OX1NTTHYyKSB7CisgICAgZmFpbGYoZGF0YSwgIm1iZWRUTFMgZG9lcyBub3Qgc3VwcG9ydCBTU0x2MiIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorICBlbHNlIGlmKGRhdGEtPnNldC5zc2wudmVyc2lvbiA9PSBDVVJMX1NTTFZFUlNJT05fU1NMdjMpCisgICAgc25pID0gRkFMU0U7IC8qIFNTTHYzIGhhcyBubyBTTkkgKi8KKworI2lmZGVmIFRIUkVBRElOR19TVVBQT1JUCisgIGVudHJvcHlfaW5pdF9tdXRleCgmZW50cm9weSk7CisgIG1iZWR0bHNfY3RyX2RyYmdfaW5pdCgmY29ubnNzbC0+Y3RyX2RyYmcpOworCisgIHJldCA9IG1iZWR0bHNfY3RyX2RyYmdfc2VlZCgmY29ubnNzbC0+Y3RyX2RyYmcsIGVudHJvcHlfZnVuY19tdXRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnRyb3B5LCBOVUxMLCAwKTsKKyAgaWYocmV0KSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICBmYWlsZihkYXRhLCAiRmFpbGVkIC0gbWJlZFRMUzogY3RyX2RyYmdfaW5pdCByZXR1cm5lZCAoLTB4JTA0WCkgJXNcbiIsCisgICAgICAgICAgLXJldCwgZXJyb3JidWYpOworICB9CisjZWxzZQorICBtYmVkdGxzX2VudHJvcHlfaW5pdCgmY29ubnNzbC0+ZW50cm9weSk7CisgIG1iZWR0bHNfY3RyX2RyYmdfaW5pdCgmY29ubnNzbC0+Y3RyX2RyYmcpOworCisgIHJldCA9IG1iZWR0bHNfY3RyX2RyYmdfc2VlZCgmY29ubnNzbC0+Y3RyX2RyYmcsIG1iZWR0bHNfZW50cm9weV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmVudHJvcHksIE5VTEwsIDApOworICBpZihyZXQpIHsKKyNpZmRlZiBNQkVEVExTX0VSUk9SX0MKKyAgICBtYmVkdGxzX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOworI2VuZGlmIC8qIE1CRURUTFNfRVJST1JfQyAqLworICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgLSBtYmVkVExTOiBjdHJfZHJiZ19pbml0IHJldHVybmVkICgtMHglMDRYKSAlc1xuIiwKKyAgICAgICAgICAtcmV0LCBlcnJvcmJ1Zik7CisgIH0KKyNlbmRpZiAvKiBUSFJFQURJTkdfU1VQUE9SVCAqLworCisgIC8qIExvYWQgdGhlIHRydXN0ZWQgQ0EgKi8KKyAgbWJlZHRsc194NTA5X2NydF9pbml0KCZjb25uc3NsLT5jYWNlcnQpOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DQUZJTEVdKSB7CisgICAgcmV0ID0gbWJlZHRsc194NTA5X2NydF9wYXJzZV9maWxlKCZjb25uc3NsLT5jYWNlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DQUZJTEVdKTsKKworICAgIGlmKHJldDwwKSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgICBtYmVkdGxzX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOworI2VuZGlmIC8qIE1CRURUTFNfRVJST1JfQyAqLworICAgICAgZmFpbGYoZGF0YSwgIkVycm9yIHJlYWRpbmcgY2EgY2VydCBmaWxlICVzIC0gbWJlZFRMUzogKC0weCUwNFgpICVzIiwKKyAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DQUZJTEVdLCAtcmV0LCBlcnJvcmJ1Zik7CisKKyAgICAgIGlmKGRhdGEtPnNldC5zc2wudmVyaWZ5cGVlcikKKyAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKKyAgICB9CisgIH0KKworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIXSkgeworICAgIHJldCA9IG1iZWR0bHNfeDUwOV9jcnRfcGFyc2VfcGF0aCgmY29ubnNzbC0+Y2FjZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIXSk7CisKKyAgICBpZihyZXQ8MCkgeworI2lmZGVmIE1CRURUTFNfRVJST1JfQworICAgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIGNhIGNlcnQgcGF0aCAlcyAtIG1iZWRUTFM6ICgtMHglMDRYKSAlcyIsCisgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIXSwgLXJldCwgZXJyb3JidWYpOworCisgICAgICBpZihkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIpCisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7CisgICAgfQorICB9CisKKyAgLyogTG9hZCB0aGUgY2xpZW50IGNlcnRpZmljYXRlICovCisgIG1iZWR0bHNfeDUwOV9jcnRfaW5pdCgmY29ubnNzbC0+Y2xpY2VydCk7CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF0pIHsKKyAgICByZXQgPSBtYmVkdGxzX3g1MDlfY3J0X3BhcnNlX2ZpbGUoJmNvbm5zc2wtPmNsaWNlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdKTsKKworICAgIGlmKHJldCkgeworI2lmZGVmIE1CRURUTFNfRVJST1JfQworICAgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIGNsaWVudCBjZXJ0IGZpbGUgJXMgLSBtYmVkVExTOiAoLTB4JTA0WCkgJXMiLAorICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfQ0VSVF0sIC1yZXQsIGVycm9yYnVmKTsKKworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DRVJUUFJPQkxFTTsKKyAgICB9CisgIH0KKworICAvKiBMb2FkIHRoZSBjbGllbnQgcHJpdmF0ZSBrZXkgKi8KKyAgbWJlZHRsc19wa19pbml0KCZjb25uc3NsLT5wayk7CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSkgeworICAgIHJldCA9IG1iZWR0bHNfcGtfcGFyc2Vfa2V5ZmlsZSgmY29ubnNzbC0+cGssIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV9QQVNTV0RdKTsKKyAgICBpZihyZXQgPT0gMCAmJiAhbWJlZHRsc19wa19jYW5fZG8oJmNvbm5zc2wtPnBrLCBNQkVEVExTX1BLX1JTQSkpCisgICAgICByZXQgPSBNQkVEVExTX0VSUl9QS19UWVBFX01JU01BVENIOworCisgICAgaWYocmV0KSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgICBtYmVkdGxzX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOworI2VuZGlmIC8qIE1CRURUTFNfRVJST1JfQyAqLworICAgICAgZmFpbGYoZGF0YSwgIkVycm9yIHJlYWRpbmcgcHJpdmF0ZSBrZXkgJXMgLSBtYmVkVExTOiAoLTB4JTA0WCkgJXMiLAorICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSwgLXJldCwgZXJyb3JidWYpOworCisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NFUlRQUk9CTEVNOworICAgIH0KKyAgfQorCisgIC8qIExvYWQgdGhlIENSTCAqLworICBtYmVkdGxzX3g1MDlfY3JsX2luaXQoJmNvbm5zc2wtPmNybCk7CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NSTEZJTEVdKSB7CisgICAgcmV0ID0gbWJlZHRsc194NTA5X2NybF9wYXJzZV9maWxlKCZjb25uc3NsLT5jcmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFXSk7CisKKyAgICBpZihyZXQpIHsKKyNpZmRlZiBNQkVEVExTX0VSUk9SX0MKKyAgICAgIG1iZWR0bHNfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CisjZW5kaWYgLyogTUJFRFRMU19FUlJPUl9DICovCisgICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBDUkwgZmlsZSAlcyAtIG1iZWRUTFM6ICgtMHglMDRYKSAlcyIsCisgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ1JMRklMRV0sIC1yZXQsIGVycm9yYnVmKTsKKworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DUkxfQkFERklMRTsKKyAgICB9CisgIH0KKworICBpbmZvZihkYXRhLCAibWJlZFRMUzogQ29ubmVjdGluZyB0byAlczolZFxuIiwKKyAgICAgICAgY29ubi0+aG9zdC5uYW1lLCBjb25uLT5yZW1vdGVfcG9ydCk7CisKKyAgbWJlZHRsc19zc2xfY29uZmlnX2luaXQoJmNvbm5zc2wtPmNvbmZpZyk7CisKKyAgbWJlZHRsc19zc2xfaW5pdCgmY29ubnNzbC0+c3NsKTsKKyAgaWYobWJlZHRsc19zc2xfc2V0dXAoJmNvbm5zc2wtPnNzbCwgJmNvbm5zc2wtPmNvbmZpZykpIHsKKyAgICBmYWlsZihkYXRhLCAibWJlZFRMUzogc3NsX2luaXQgZmFpbGVkIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisgIHJldCA9IG1iZWR0bHNfc3NsX2NvbmZpZ19kZWZhdWx0cygmY29ubnNzbC0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfSVNfQ0xJRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfVFJBTlNQT1JUX1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX1BSRVNFVF9ERUZBVUxUKTsKKyAgaWYocmV0KSB7CisgICAgZmFpbGYoZGF0YSwgIm1iZWRUTFM6IHNzbF9jb25maWcgZmFpbGVkIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisKKyAgLyogbmV3IHByb2ZpbGUgd2l0aCBSU0EgbWluIGtleSBsZW4gPSAxMDI0IC4uLiAqLworICBtYmVkdGxzX3NzbF9jb25mX2NlcnRfcHJvZmlsZSgmY29ubnNzbC0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWJlZHRsc194NTA5X2NydF9wcm9maWxlX2ZyKTsKKworICBzd2l0Y2goZGF0YS0+c2V0LnNzbC52ZXJzaW9uKSB7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxOgorICAgIG1iZWR0bHNfc3NsX2NvbmZfbWluX3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8xKTsKKyAgICBpbmZvZihkYXRhLCAibWJlZFRMUzogU2V0IG1pbiBTU0wgdmVyc2lvbiB0byBUTFMgMS4wXG4iKTsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6CisgICAgbWJlZHRsc19zc2xfY29uZl9taW5fdmVyc2lvbigmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9NQUpPUl9WRVJTSU9OXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9NSU5PUl9WRVJTSU9OXzApOworICAgIG1iZWR0bHNfc3NsX2NvbmZfbWF4X3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8wKTsKKyAgICBpbmZvZihkYXRhLCAibWJlZFRMUzogU2V0IFNTTCB2ZXJzaW9uIHRvIFNTTHYzXG4iKTsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMDoKKyAgICBtYmVkdGxzX3NzbF9jb25mX21pbl92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMSk7CisgICAgbWJlZHRsc19zc2xfY29uZl9tYXhfdmVyc2lvbigmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9NQUpPUl9WRVJTSU9OXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9NSU5PUl9WRVJTSU9OXzEpOworICAgIGluZm9mKGRhdGEsICJtYmVkVExTOiBTZXQgU1NMIHZlcnNpb24gdG8gVExTIDEuMFxuIik7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzE6CisgICAgbWJlZHRsc19zc2xfY29uZl9taW5fdmVyc2lvbigmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9NQUpPUl9WRVJTSU9OXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9NSU5PUl9WRVJTSU9OXzIpOworICAgIG1iZWR0bHNfc3NsX2NvbmZfbWF4X3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8yKTsKKyAgICBpbmZvZihkYXRhLCAibWJlZFRMUzogU2V0IFNTTCB2ZXJzaW9uIHRvIFRMUyAxLjFcbiIpOworICAgIGJyZWFrOworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOgorICAgIG1iZWR0bHNfc3NsX2NvbmZfbWluX3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8zKTsKKyAgICBtYmVkdGxzX3NzbF9jb25mX21heF92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMyk7CisgICAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IFNldCBTU0wgdmVyc2lvbiB0byBUTFMgMS4yXG4iKTsKKyAgICBicmVhazsKKyAgZGVmYXVsdDoKKyAgICBmYWlsZihkYXRhLCAibWJlZFRMUzogVW5zdXBwb3J0ZWQgU1NMIHByb3RvY29sIHZlcnNpb24iKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICBtYmVkdGxzX3NzbF9jb25mX2F1dGhtb2RlKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX1ZFUklGWV9PUFRJT05BTCk7CisKKyAgbWJlZHRsc19zc2xfY29uZl9ybmcoJmNvbm5zc2wtPmNvbmZpZywgbWJlZHRsc19jdHJfZHJiZ19yYW5kb20sCisgICAgICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5jdHJfZHJiZyk7CisgIG1iZWR0bHNfc3NsX3NldF9iaW8oJmNvbm5zc2wtPnNzbCwgJmNvbm4tPnNvY2tbc29ja2luZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICBtYmVkdGxzX25ldF9zZW5kLAorICAgICAgICAgICAgICAgICAgICAgIG1iZWR0bHNfbmV0X3JlY3YsCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCAvKiAgcmV2X3RpbWVvdXQoKSAqLyk7CisKKyAgbWJlZHRsc19zc2xfY29uZl9jaXBoZXJzdWl0ZXMoJmNvbm5zc2wtPmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWJlZHRsc19zc2xfbGlzdF9jaXBoZXJzdWl0ZXMoKSk7CisgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zZXNzaW9uLCBOVUxMKSkgeworICAgIHJldCA9IG1iZWR0bHNfc3NsX3NldF9zZXNzaW9uKCZjb25uc3NsLT5zc2wsIG9sZF9zZXNzaW9uKTsKKyAgICBpZihyZXQpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJtYmVkdGxzX3NzbF9zZXRfc2Vzc2lvbiByZXR1cm5lZCAtMHgleCIsIC1yZXQpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKyAgICBpbmZvZihkYXRhLCAibWJlZFRMUyByZS11c2luZyBzZXNzaW9uXG4iKTsKKyAgfQorCisgIG1iZWR0bHNfc3NsX2NvbmZfY2FfY2hhaW4oJmNvbm5zc2wtPmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+Y2FjZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5jcmwpOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0pIHsKKyAgICBtYmVkdGxzX3NzbF9jb25mX293bl9jZXJ0KCZjb25uc3NsLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+Y2xpY2VydCwgJmNvbm5zc2wtPnBrKTsKKyAgfQorICBpZihtYmVkdGxzX3NzbF9zZXRfaG9zdG5hbWUoJmNvbm5zc2wtPnNzbCwgY29ubi0+aG9zdC5uYW1lKSkgeworICAgIC8qIG1iZWR0bHNfc3NsX3NldF9ob3N0bmFtZSgpIHNldHMgdGhlIG5hbWUgdG8gdXNlIGluIENOL1NBTiBjaGVja3MgKmFuZCoKKyAgICAgICB0aGUgbmFtZSB0byBzZXQgaW4gdGhlIFNOSSBleHRlbnNpb24uIFNvIGV2ZW4gaWYgY3VybCBjb25uZWN0cyB0byBhCisgICAgICAgaG9zdCBzcGVjaWZpZWQgYXMgYW4gSVAgYWRkcmVzcywgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQuICovCisgICAgZmFpbGYoZGF0YSwgImNvdWxkbid0IHNldCBob3N0bmFtZSBpbiBtYmVkVExTIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisKKyNpZmRlZiBIQVNfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIGNvbnN0IGNoYXIgKipwID0gJmNvbm5zc2wtPnByb3RvY29sc1swXTsKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKQorICAgICAgKnArKyA9IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRDsKKyNlbmRpZgorICAgICpwKysgPSBBTFBOX0hUVFBfMV8xOworICAgICpwID0gTlVMTDsKKyAgICAvKiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2xvbmUgdGhlIHByb3RvY29scyBhcnJheSwgd2hpY2ggaXMgd2h5IHdlIG5lZWQKKyAgICAgICB0byBrZWVwIGl0IGFyb3VuZCAqLworICAgIGlmKG1iZWR0bHNfc3NsX2NvbmZfYWxwbl9wcm90b2NvbHMoJmNvbm5zc2wtPmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5wcm90b2NvbHNbMF0pKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHNldHRpbmcgQUxQTiBwcm90b2NvbHMiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgICAgZm9yKHAgPSAmY29ubnNzbC0+cHJvdG9jb2xzWzBdOyAqcDsgKytwKQorICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCAqcCk7CisgIH0KKyNlbmRpZgorCisjaWZkZWYgTUJFRFRMU19ERUJVRworICBtYmVkdGxzX3NzbF9jb25mX2RiZygmY29ubnNzbC0+Y29uZmlnLCBtYmVkdGxzX2RlYnVnLCBkYXRhKTsKKyNlbmRpZgorCisgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIENVUkxjb2RlCittYmVkX2Nvbm5lY3Rfc3RlcDIoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCit7CisgIGludCByZXQ7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEqIGNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisgIGNvbnN0IG1iZWR0bHNfeDUwOV9jcnQgKnBlZXJjZXJ0OworCisjaWZkZWYgSEFTX0FMUE4KKyAgY29uc3QgY2hhciogbmV4dF9wcm90b2NvbDsKKyNlbmRpZgorCisgIGNoYXIgZXJyb3JidWZbMTI4XTsKKyAgZXJyb3JidWZbMF0gPSAwOworCisgIGNvbm4tPnJlY3Zbc29ja2luZGV4XSA9IG1iZWRfcmVjdjsKKyAgY29ubi0+c2VuZFtzb2NraW5kZXhdID0gbWJlZF9zZW5kOworCisgIHJldCA9IG1iZWR0bHNfc3NsX2hhbmRzaGFrZSgmY29ubnNzbC0+c3NsKTsKKworICBpZihyZXQgPT0gTUJFRFRMU19FUlJfU1NMX1dBTlRfUkVBRCkgeworICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmc7CisgICAgcmV0dXJuIENVUkxFX09LOworICB9CisgIGVsc2UgaWYocmV0ID09IE1CRURUTFNfRVJSX1NTTF9XQU5UX1dSSVRFKSB7CisgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzJfd3JpdGluZzsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KKyAgZWxzZSBpZihyZXQpIHsKKyNpZmRlZiBNQkVEVExTX0VSUk9SX0MKKyAgICBtYmVkdGxzX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOworI2VuZGlmIC8qIE1CRURUTFNfRVJST1JfQyAqLworICAgIGZhaWxmKGRhdGEsICJzc2xfaGFuZHNoYWtlIHJldHVybmVkIC0gbWJlZFRMUzogKC0weCUwNFgpICVzIiwKKyAgICAgICAgICAtcmV0LCBlcnJvcmJ1Zik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisKKyAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IEhhbmRzaGFrZSBjb21wbGV0ZSwgY2lwaGVyIGlzICVzXG4iLAorICAgICAgICBtYmVkdGxzX3NzbF9nZXRfY2lwaGVyc3VpdGUoJmNvbm4tPnNzbFtzb2NraW5kZXhdLnNzbCkKKyAgICApOworCisgIHJldCA9IG1iZWR0bHNfc3NsX2dldF92ZXJpZnlfcmVzdWx0KCZjb25uLT5zc2xbc29ja2luZGV4XS5zc2wpOworCisgIGlmKHJldCAmJiBkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIpIHsKKyAgICBpZihyZXQgJiBNQkVEVExTX1g1MDlfQkFEQ0VSVF9FWFBJUkVEKQorICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9FWFBJUkVEIik7CisKKyAgICBpZihyZXQgJiBNQkVEVExTX1g1MDlfQkFEQ0VSVF9SRVZPS0VEKSB7CisgICAgICBmYWlsZihkYXRhLCAiQ2VydCB2ZXJpZnkgZmFpbGVkOiBCQURDRVJUX1JFVk9LRUQiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0FDRVJUOworICAgIH0KKworICAgIGlmKHJldCAmIE1CRURUTFNfWDUwOV9CQURDRVJUX0NOX01JU01BVENIKQorICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9DTl9NSVNNQVRDSCIpOworCisgICAgaWYocmV0ICYgTUJFRFRMU19YNTA5X0JBRENFUlRfTk9UX1RSVVNURUQpCisgICAgICBmYWlsZihkYXRhLCAiQ2VydCB2ZXJpZnkgZmFpbGVkOiBCQURDRVJUX05PVF9UUlVTVEVEIik7CisKKyAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOworICB9CisKKyAgcGVlcmNlcnQgPSBtYmVkdGxzX3NzbF9nZXRfcGVlcl9jZXJ0KCZjb25uc3NsLT5zc2wpOworCisgIGlmKHBlZXJjZXJ0ICYmIGRhdGEtPnNldC52ZXJib3NlKSB7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZnNpemUgPSAxNjM4NDsKKyAgICBjaGFyICpidWZmZXIgPSBtYWxsb2MoYnVmc2l6ZSk7CisKKyAgICBpZighYnVmZmVyKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBpZihtYmVkdGxzX3g1MDlfY3J0X2luZm8oYnVmZmVyLCBidWZzaXplLCAiKiAiLCBwZWVyY2VydCkgPiAwKQorICAgICAgaW5mb2YoZGF0YSwgIkR1bXBpbmcgY2VydCBpbmZvOlxuJXNcbiIsIGJ1ZmZlcik7CisgICAgZWxzZQorICAgICAgaW5mb2YoZGF0YSwgIlVuYWJsZSB0byBkdW1wIGNlcnRpZmljYXRlIGluZm9ybWF0aW9uLlxuIik7CisKKyAgICBmcmVlKGJ1ZmZlcik7CisgIH0KKworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSkgeworICAgIGludCBzaXplOworICAgIENVUkxjb2RlIHJlc3VsdDsKKyAgICBtYmVkdGxzX3g1MDlfY3J0ICpwOworICAgIHVuc2lnbmVkIGNoYXIgcHVia2V5W1BVQl9ERVJfTUFYX0JZVEVTXTsKKworICAgIGlmKCFwZWVyY2VydCB8fCAhcGVlcmNlcnQtPnJhdy5wIHx8ICFwZWVyY2VydC0+cmF3LmxlbikgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBkdWUgdG8gbWlzc2luZyBwZWVyIGNlcnRpZmljYXRlIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIHAgPSBjYWxsb2MoMSwgc2l6ZW9mKCpwKSk7CisKKyAgICBpZighcCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgbWJlZHRsc194NTA5X2NydF9pbml0KHApOworCisgICAgLyogTWFrZSBhIGNvcHkgb2Ygb3VyIGNvbnN0IHBlZXJjZXJ0IGJlY2F1c2UgbWJlZHRsc19wa193cml0ZV9wdWJrZXlfZGVyCisgICAgICAgbmVlZHMgYSBub24tY29uc3Qga2V5LCBmb3Igbm93LgorICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9BUk1tYmVkL21iZWR0bHMvaXNzdWVzLzM5NiAqLworICAgIGlmKG1iZWR0bHNfeDUwOV9jcnRfcGFyc2VfZGVyKHAsIHBlZXJjZXJ0LT5yYXcucCwgcGVlcmNlcnQtPnJhdy5sZW4pKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIGNvcHlpbmcgcGVlciBjZXJ0aWZpY2F0ZSIpOworICAgICAgbWJlZHRsc194NTA5X2NydF9mcmVlKHApOworICAgICAgZnJlZShwKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgc2l6ZSA9IG1iZWR0bHNfcGtfd3JpdGVfcHVia2V5X2RlcigmcC0+cGssIHB1YmtleSwgUFVCX0RFUl9NQVhfQllURVMpOworCisgICAgaWYoc2l6ZSA8PSAwKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIGNvcHlpbmcgcHVibGljIGtleSBmcm9tIHBlZXIgY2VydGlmaWNhdGUiKTsKKyAgICAgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIC8qIG1iZWR0bHNfcGtfd3JpdGVfcHVia2V5X2RlciB3cml0ZXMgZGF0YSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICovCisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHVia2V5W1BVQl9ERVJfTUFYX0JZVEVTIC0gc2l6ZV0sIHNpemUpOworICAgIGlmKHJlc3VsdCkgeworICAgICAgbWJlZHRsc194NTA5X2NydF9mcmVlKHApOworICAgICAgZnJlZShwKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgbWJlZHRsc194NTA5X2NydF9mcmVlKHApOworICAgIGZyZWUocCk7CisgIH0KKworI2lmZGVmIEhBU19BTFBOCisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CisgICAgbmV4dF9wcm90b2NvbCA9IG1iZWR0bHNfc3NsX2dldF9hbHBuX3Byb3RvY29sKCZjb25uc3NsLT5zc2wpOworCisgICAgaWYobmV4dF9wcm90b2NvbCkgeworICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJXNcbiIsIG5leHRfcHJvdG9jb2wpOworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgICBpZighc3RybmNtcChuZXh0X3Byb3RvY29sLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsCisgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSAmJgorICAgICAgICAgIW5leHRfcHJvdG9jb2xbTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTl0pIHsKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBpZighc3RybmNtcChuZXh0X3Byb3RvY29sLCBBTFBOX0hUVFBfMV8xLCBBTFBOX0hUVFBfMV8xX0xFTkdUSCkgJiYKKyAgICAgICAgICAgIW5leHRfcHJvdG9jb2xbQUxQTl9IVFRQXzFfMV9MRU5HVEhdKSB7CisgICAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBkaWQgbm90IGFncmVlIHRvIGEgcHJvdG9jb2xcbiIpOworICAgIH0KKyAgfQorI2VuZGlmCisKKyAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzM7CisgIGluZm9mKGRhdGEsICJTU0wgY29ubmVjdGVkXG4iKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDVVJMY29kZQorbWJlZF9jb25uZWN0X3N0ZXAzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQoreworICBDVVJMY29kZSByZXRjb2RlID0gQ1VSTEVfT0s7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHZvaWQgKm9sZF9zc2xfc2Vzc2lvbmlkID0gTlVMTDsKKyAgbWJlZHRsc19zc2xfc2Vzc2lvbiAqb3VyX3NzbF9zZXNzaW9uaWQ7CisgIGludCByZXQ7CisKKyAgREVCVUdBU1NFUlQoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKTsKKworICBvdXJfc3NsX3Nlc3Npb25pZCA9IG1hbGxvYyhzaXplb2YobWJlZHRsc19zc2xfc2Vzc2lvbikpOworICBpZighb3VyX3NzbF9zZXNzaW9uaWQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgbWJlZHRsc19zc2xfc2Vzc2lvbl9pbml0KG91cl9zc2xfc2Vzc2lvbmlkKTsKKworICByZXQgPSBtYmVkdGxzX3NzbF9nZXRfc2Vzc2lvbigmY29ubnNzbC0+c3NsLCBvdXJfc3NsX3Nlc3Npb25pZCk7CisgIGlmKHJldCkgeworICAgIGZhaWxmKGRhdGEsICJtYmVkdGxzX3NzbF9nZXRfc2Vzc2lvbiByZXR1cm5lZCAtMHgleCIsIC1yZXQpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorCisgIC8qIElmIHRoZXJlJ3MgYWxyZWFkeSBhIG1hdGNoaW5nIHNlc3Npb24gaW4gdGhlIGNhY2hlLCBkZWxldGUgaXQgKi8KKyAgaWYoIUN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmb2xkX3NzbF9zZXNzaW9uaWQsIE5VTEwpKQorICAgIEN1cmxfc3NsX2RlbHNlc3Npb25pZChjb25uLCBvbGRfc3NsX3Nlc3Npb25pZCk7CisKKyAgcmV0Y29kZSA9IEN1cmxfc3NsX2FkZHNlc3Npb25pZChjb25uLCBvdXJfc3NsX3Nlc3Npb25pZCwgMCk7CisgIGlmKHJldGNvZGUpIHsKKyAgICBmcmVlKG91cl9zc2xfc2Vzc2lvbmlkKTsKKyAgICBmYWlsZihkYXRhLCAiZmFpbGVkIHRvIHN0b3JlIHNzbCBzZXNzaW9uIik7CisgICAgcmV0dXJuIHJldGNvZGU7CisgIH0KKworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfZG9uZTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG1iZWRfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbWVtLCBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpjdXJsY29kZSkKK3sKKyAgaW50IHJldCA9IC0xOworCisgIHJldCA9IG1iZWR0bHNfc3NsX3dyaXRlKCZjb25uLT5zc2xbc29ja2luZGV4XS5zc2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopbWVtLCBsZW4pOworCisgIGlmKHJldCA8IDApIHsKKyAgICAqY3VybGNvZGUgPSAocmV0ID09IE1CRURUTFNfRVJSX1NTTF9XQU5UX1dSSVRFKSA/CisgICAgICBDVVJMRV9BR0FJTiA6IENVUkxFX1NFTkRfRVJST1I7CisgICAgcmV0ID0gLTE7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkIEN1cmxfbWJlZHRsc19jbG9zZV9hbGwoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpCit7CisgICh2b2lkKWRhdGE7Cit9CisKK3ZvaWQgQ3VybF9tYmVkdGxzX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgbWJlZHRsc19wa19mcmVlKCZjb25uLT5zc2xbc29ja2luZGV4XS5wayk7CisgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uY2xpY2VydCk7CisgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uY2FjZXJ0KTsKKyAgbWJlZHRsc194NTA5X2NybF9mcmVlKCZjb25uLT5zc2xbc29ja2luZGV4XS5jcmwpOworICBtYmVkdGxzX3NzbF9jb25maWdfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uY29uZmlnKTsKKyAgbWJlZHRsc19zc2xfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uc3NsKTsKKyAgbWJlZHRsc19jdHJfZHJiZ19mcmVlKCZjb25uLT5zc2xbc29ja2luZGV4XS5jdHJfZHJiZyk7CisjaWZuZGVmIFRIUkVBRElOR19TVVBQT1JUCisgIG1iZWR0bHNfZW50cm9weV9mcmVlKCZjb25uLT5zc2xbc29ja2luZGV4XS5lbnRyb3B5KTsKKyNlbmRpZiAvKiBUSFJFQURJTkdfU1VQUE9SVCAqLworfQorCitzdGF0aWMgc3NpemVfdCBtYmVkX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmZlcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKmN1cmxjb2RlKQoreworICBpbnQgcmV0ID0gLTE7CisgIHNzaXplX3QgbGVuID0gLTE7CisKKyAgbWVtc2V0KGJ1ZiwgMCwgYnVmZmVyc2l6ZSk7CisgIHJldCA9IG1iZWR0bHNfc3NsX3JlYWQoJmNvbm4tPnNzbFtudW1dLnNzbCwgKHVuc2lnbmVkIGNoYXIgKilidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZSk7CisKKyAgaWYocmV0IDw9IDApIHsKKyAgICBpZihyZXQgPT0gTUJFRFRMU19FUlJfU1NMX1BFRVJfQ0xPU0VfTk9USUZZKQorICAgICAgcmV0dXJuIDA7CisKKyAgICAqY3VybGNvZGUgPSAocmV0ID09IE1CRURUTFNfRVJSX1NTTF9XQU5UX1JFQUQpID8KKyAgICAgIENVUkxFX0FHQUlOIDogQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBsZW4gPSByZXQ7CisKKyAgcmV0dXJuIGxlbjsKK30KKwordm9pZCBDdXJsX21iZWR0bHNfc2Vzc2lvbl9mcmVlKHZvaWQgKnB0cikKK3sKKyAgbWJlZHRsc19zc2xfc2Vzc2lvbl9mcmVlKHB0cik7CisgIGZyZWUocHRyKTsKK30KKworc2l6ZV90IEN1cmxfbWJlZHRsc192ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCit7CisgIHVuc2lnbmVkIGludCB2ZXJzaW9uID0gbWJlZHRsc192ZXJzaW9uX2dldF9udW1iZXIoKTsKKyAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIm1iZWRUTFMvJWQuJWQuJWQiLCB2ZXJzaW9uPj4yNCwKKyAgICAgICAgICAgICAgICAgICh2ZXJzaW9uPj4xNikmMHhmZiwgKHZlcnNpb24+PjgpJjB4ZmYpOworfQorCitzdGF0aWMgQ1VSTGNvZGUKK21iZWRfY29ubmVjdF9jb21tb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICBib29sIG5vbmJsb2NraW5nLAorICAgICAgICAgICAgICAgICAgICBib29sICpkb25lKQoreworICBDVVJMY29kZSByZXRjb2RlOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKKyAgbG9uZyB0aW1lb3V0X21zOworICBpbnQgd2hhdDsKKworICAvKiBjaGVjayBpZiB0aGUgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkICovCisgIGlmKHNzbF9jb25uZWN0aW9uX2NvbXBsZXRlID09IGNvbm5zc2wtPnN0YXRlKSB7CisgICAgKmRvbmUgPSBUUlVFOworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorCisgIGlmKHNzbF9jb25uZWN0XzE9PWNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICAvKiBGaW5kIG91dCBob3cgbXVjaCBtb3JlIHRpbWUgd2UncmUgYWxsb3dlZCAqLworICAgIHRpbWVvdXRfbXMgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOworCisgICAgaWYodGltZW91dF9tcyA8IDApIHsKKyAgICAgIC8qIG5vIG5lZWQgdG8gY29udGludWUgaWYgdGltZSBhbHJlYWR5IGlzIHVwICovCisgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKyAgICB9CisgICAgcmV0Y29kZSA9IG1iZWRfY29ubmVjdF9zdGVwMShjb25uLCBzb2NraW5kZXgpOworICAgIGlmKHJldGNvZGUpCisgICAgICByZXR1cm4gcmV0Y29kZTsKKyAgfQorCisgIHdoaWxlKHNzbF9jb25uZWN0XzIgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSB8fAorICAgICAgICBzc2xfY29ubmVjdF8yX3JlYWRpbmcgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSB8fAorICAgICAgICBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgeworCisgICAgLyogY2hlY2sgYWxsb3dlZCB0aW1lIGxlZnQgKi8KKyAgICB0aW1lb3V0X21zID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBUUlVFKTsKKworICAgIGlmKHRpbWVvdXRfbXMgPCAwKSB7CisgICAgICAvKiBubyBuZWVkIHRvIGNvbnRpbnVlIGlmIHRpbWUgYWxyZWFkeSBpcyB1cCAqLworICAgICAgZmFpbGYoZGF0YSwgIlNTTCBjb25uZWN0aW9uIHRpbWVvdXQiKTsKKyAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgfQorCisgICAgLyogaWYgc3NsIGlzIGV4cGVjdGluZyBzb21ldGhpbmcsIGNoZWNrIGlmIGl0J3MgYXZhaWxhYmxlLiAqLworICAgIGlmKGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPT0gc3NsX2Nvbm5lY3RfMl9yZWFkaW5nCisgICAgICAgfHwgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9PSBzc2xfY29ubmVjdF8yX3dyaXRpbmcpIHsKKworICAgICAgY3VybF9zb2NrZXRfdCB3cml0ZWZkID0gc3NsX2Nvbm5lY3RfMl93cml0aW5nPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworICAgICAgY3VybF9zb2NrZXRfdCByZWFkZmQgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmc9PQorICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlP3NvY2tmZDpDVVJMX1NPQ0tFVF9CQUQ7CisKKyAgICAgIHdoYXQgPSBDdXJsX3NvY2tldF9yZWFkeShyZWFkZmQsIHdyaXRlZmQsIG5vbmJsb2NraW5nID8gMCA6IHRpbWVvdXRfbXMpOworICAgICAgaWYod2hhdCA8IDApIHsKKyAgICAgICAgLyogZmF0YWwgZXJyb3IgKi8KKyAgICAgICAgZmFpbGYoZGF0YSwgInNlbGVjdC9wb2xsIG9uIFNTTCBzb2NrZXQsIGVycm5vOiAlZCIsIFNPQ0tFUlJOTyk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoMCA9PSB3aGF0KSB7CisgICAgICAgIGlmKG5vbmJsb2NraW5nKSB7CisgICAgICAgICAgKmRvbmUgPSBGQUxTRTsKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgLyogdGltZW91dCAqLworICAgICAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgLyogc29ja2V0IGlzIHJlYWRhYmxlIG9yIHdyaXRhYmxlICovCisgICAgfQorCisgICAgLyogUnVuIHRyYW5zYWN0aW9uLCBhbmQgcmV0dXJuIHRvIHRoZSBjYWxsZXIgaWYgaXQgZmFpbGVkIG9yIGlmCisgICAgICogdGhpcyBjb25uZWN0aW9uIGlzIHBhcnQgb2YgYSBtdWx0aSBoYW5kbGUgYW5kIHRoaXMgbG9vcCB3b3VsZAorICAgICAqIGV4ZWN1dGUgYWdhaW4uIFRoaXMgcGVybWl0cyB0aGUgb3duZXIgb2YgYSBtdWx0aSBoYW5kbGUgdG8KKyAgICAgKiBhYm9ydCBhIGNvbm5lY3Rpb24gYXR0ZW1wdCBiZWZvcmUgc3RlcDIgaGFzIGNvbXBsZXRlZCB3aGlsZQorICAgICAqIGVuc3VyaW5nIHRoYXQgYSBjbGllbnQgdXNpbmcgc2VsZWN0KCkgb3IgZXBvbGwoKSB3aWxsIGFsd2F5cworICAgICAqIGhhdmUgYSB2YWxpZCBmZHNldCB0byB3YWl0IG9uLgorICAgICAqLworICAgIHJldGNvZGUgPSBtYmVkX2Nvbm5lY3Rfc3RlcDIoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXRjb2RlIHx8IChub25ibG9ja2luZyAmJgorICAgICAgICAgICAgICAgICAgIChzc2xfY29ubmVjdF8yID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpKSkKKyAgICAgIHJldHVybiByZXRjb2RlOworCisgIH0gLyogcmVwZWF0IHN0ZXAyIHVudGlsIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGRvbmUuICovCisKKyAgaWYoc3NsX2Nvbm5lY3RfMz09Y29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgeworICAgIHJldGNvZGUgPSBtYmVkX2Nvbm5lY3Rfc3RlcDMoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXRjb2RlKQorICAgICAgcmV0dXJuIHJldGNvZGU7CisgIH0KKworICBpZihzc2xfY29ubmVjdF9kb25lPT1jb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7CisgICAgY29ubnNzbC0+c3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKKyAgICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSBtYmVkX3JlY3Y7CisgICAgY29ubi0+c2VuZFtzb2NraW5kZXhdID0gbWJlZF9zZW5kOworICAgICpkb25lID0gVFJVRTsKKyAgfQorICBlbHNlCisgICAgKmRvbmUgPSBGQUxTRTsKKworICAvKiBSZXNldCBvdXIgY29ubmVjdCBzdGF0ZSBtYWNoaW5lICovCisgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8xOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworQ1VSTGNvZGUKK0N1cmxfbWJlZHRsc19jb25uZWN0X25vbmJsb2NraW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb25lKQoreworICByZXR1cm4gbWJlZF9jb25uZWN0X2NvbW1vbihjb25uLCBzb2NraW5kZXgsIFRSVUUsIGRvbmUpOworfQorCisKK0NVUkxjb2RlCitDdXJsX21iZWR0bHNfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQoreworICBDVVJMY29kZSByZXRjb2RlOworICBib29sIGRvbmUgPSBGQUxTRTsKKworICByZXRjb2RlID0gbWJlZF9jb25uZWN0X2NvbW1vbihjb25uLCBzb2NraW5kZXgsIEZBTFNFLCAmZG9uZSk7CisgIGlmKHJldGNvZGUpCisgICAgcmV0dXJuIHJldGNvZGU7CisKKyAgREVCVUdBU1NFUlQoZG9uZSk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogcmV0dXJuIDAgZXJyb3IgaW5pdGlhbGl6aW5nIFNTTAorICogcmV0dXJuIDEgU1NMIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseQorICovCitpbnQgQ3VybF9tYmVkdGxzX2luaXQodm9pZCkKK3sKKyAgcmV0dXJuIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9zZXR1cCgpOworfQorCit2b2lkIEN1cmxfbWJlZHRsc19jbGVhbnVwKHZvaWQpCit7CisgICh2b2lkKUN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCk7Cit9CisKK2ludCBDdXJsX21iZWR0bHNfZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgbWJlZHRsc19zc2xfY29udGV4dCAqc3NsID0KKyAgICAobWJlZHRsc19zc2xfY29udGV4dCAqKSZjb25uLT5zc2xbc29ja2luZGV4XS5zc2w7CisgIHJldHVybiBzc2wtPmluX21zZ2xlbiAhPSAwOworfQorCisjZW5kaWYgLyogVVNFX01CRURUTFMgKi8KZGlmZiAtLWdpdCBhL2xpYi92dGxzL21iZWR0bHMuaCBiL2xpYi92dGxzL21iZWR0bHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTE3ZmZmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Z0bHMvbWJlZHRscy5oCkBAIC0wLDAgKzEsODAgQEAKKyNpZm5kZWYgSEVBREVSX0NVUkxfTUJFRFRMU19ICisjZGVmaW5lIEhFQURFUl9DVVJMX01CRURUTFNfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIFVTRV9NQkVEVExTCisKKyNpbmNsdWRlIDxtYmVkdGxzL3NoYTI1Ni5oPgorCisvKiBDYWxsZWQgb24gZmlyc3QgdXNlIG1iZWRUTFMsIHNldHVwIHRocmVhZGluZyBpZiBzdXBwb3J0ZWQgKi8KK2ludCAgQ3VybF9tYmVkdGxzX2luaXQodm9pZCk7Cit2b2lkIEN1cmxfbWJlZHRsc19jbGVhbnVwKHZvaWQpOworaW50IEN1cmxfbWJlZHRsc19kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKKworQ1VSTGNvZGUgQ3VybF9tYmVkdGxzX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKKworQ1VSTGNvZGUgQ3VybF9tYmVkdGxzX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSk7CisKKy8qIHRlbGwgbWJlZFRMUyB0byBjbG9zZSBkb3duIGFsbCBvcGVuIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb25uZWN0aW9ucyAoYW5kCisgICB0aHVzIHNlc3Npb24gSUQgY2FjaGluZyBldGMpICovCit2b2lkIEN1cmxfbWJlZHRsc19jbG9zZV9hbGwoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOworCisgLyogY2xvc2UgYSBTU0wgY29ubmVjdGlvbiAqLwordm9pZCBDdXJsX21iZWR0bHNfY2xvc2Uoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKKwordm9pZCBDdXJsX21iZWR0bHNfc2Vzc2lvbl9mcmVlKHZvaWQgKnB0cik7CitzaXplX3QgQ3VybF9tYmVkdGxzX3ZlcnNpb24oY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7CitpbnQgQ3VybF9tYmVkdGxzX3NodXRkb3duKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCk7CisKKy8qIHRoaXMgYmFja2VuZHMgc3VwcG9ydHMgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgKi8KKyNkZWZpbmUgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAxCisKKy8qIEFQSSBzZXR1cCBmb3IgbWJlZFRMUyAqLworI2RlZmluZSBjdXJsc3NsX2luaXQoKSBDdXJsX21iZWR0bHNfaW5pdCgpCisjZGVmaW5lIGN1cmxzc2xfY2xlYW51cCgpIEN1cmxfbWJlZHRsc19jbGVhbnVwKCkKKyNkZWZpbmUgY3VybHNzbF9jb25uZWN0IEN1cmxfbWJlZHRsc19jb25uZWN0CisjZGVmaW5lIGN1cmxzc2xfY29ubmVjdF9ub25ibG9ja2luZyBDdXJsX21iZWR0bHNfY29ubmVjdF9ub25ibG9ja2luZworI2RlZmluZSBjdXJsc3NsX3Nlc3Npb25fZnJlZSh4KSAgQ3VybF9tYmVkdGxzX3Nlc3Npb25fZnJlZSh4KQorI2RlZmluZSBjdXJsc3NsX2Nsb3NlX2FsbCBDdXJsX21iZWR0bHNfY2xvc2VfYWxsCisjZGVmaW5lIGN1cmxzc2xfY2xvc2UgQ3VybF9tYmVkdGxzX2Nsb3NlCisjZGVmaW5lIGN1cmxzc2xfc2h1dGRvd24oeCx5KSAwCisjZGVmaW5lIGN1cmxzc2xfc2V0X2VuZ2luZSh4LHkpICh4PXgsIHk9eSwgQ1VSTEVfTk9UX0JVSUxUX0lOKQorI2RlZmluZSBjdXJsc3NsX3NldF9lbmdpbmVfZGVmYXVsdCh4KSAoeD14LCBDVVJMRV9OT1RfQlVJTFRfSU4pCisjZGVmaW5lIGN1cmxzc2xfZW5naW5lc19saXN0KHgpICh4PXgsIChzdHJ1Y3QgY3VybF9zbGlzdCAqKU5VTEwpCisjZGVmaW5lIGN1cmxzc2xfdmVyc2lvbiBDdXJsX21iZWR0bHNfdmVyc2lvbgorI2RlZmluZSBjdXJsc3NsX2NoZWNrX2N4bih4KSAoeD14LCAtMSkKKyNkZWZpbmUgY3VybHNzbF9kYXRhX3BlbmRpbmcoeCx5KSBDdXJsX21iZWR0bHNfZGF0YV9wZW5kaW5nKHgsIHkpCisjZGVmaW5lIENVUkxfU1NMX0JBQ0tFTkQgQ1VSTFNTTEJBQ0tFTkRfTUJFRFRMUworI2RlZmluZSBjdXJsc3NsX3NoYTI1NnN1bShhLGIsYyxkKSBtYmVkdGxzX3NoYTI1NihhLGIsYywwKQorCisvKiBUaGlzIG1pZ2h0IGNhdXNlIGxpYmN1cmwgdG8gdXNlIGEgd2Vla2VyIHJhbmRvbSEKKyAgIFRPRE86IGltcGxlbWVudCBwcm9wZXIgdXNlIG9mIFBvbGFyc3NsJ3MgQ1RSLURSQkcgb3IgSE1BQy1EUkJHIGFuZCB1c2UgdGhhdAorKi8KKyNkZWZpbmUgY3VybHNzbF9yYW5kb20oeCx5LHopICh4PXgsIHk9eSwgej16LCBDVVJMRV9OT1RfQlVJTFRfSU4pCisKKyNlbmRpZiAvKiBVU0VfTUJFRFRMUyAqLworI2VuZGlmIC8qIEhFQURFUl9DVVJMX01CRURUTFNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvbnNzLmMgYi9saWIvdnRscy9uc3MuYwppbmRleCA1NDM0Y2UzLi4wMmM4NzI3IDEwMDY0NAotLS0gYS9saWIvdnRscy9uc3MuYworKysgYi9saWIvdnRscy9uc3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIxMSwxNiArMjExLDIyIEBACiAgIFBSQm9vbCBmb3VuZDsKICAgY2hhciAqY2lwaGVyOwogCisgIC8qIHVzZSBhY2Nlc3NvcnMgdG8gYXZvaWQgZHluYW1pYyBsaW5raW5nIGlzc3VlcyBhZnRlciBhbiB1cGRhdGUgb2YgTlNTICovCisgIGNvbnN0IFBSVWludDE2IG51bV9pbXBsZW1lbnRlZF9jaXBoZXJzID0gU1NMX0dldE51bUltcGxlbWVudGVkQ2lwaGVycygpOworICBjb25zdCBQUlVpbnQxNiAqaW1wbGVtZW50ZWRfY2lwaGVycyA9IFNTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMoKTsKKyAgaWYoIWltcGxlbWVudGVkX2NpcGhlcnMpCisgICAgcmV0dXJuIFNFQ0ZhaWx1cmU7CisKICAgLyogRmlyc3QgZGlzYWJsZSBhbGwgY2lwaGVycy4gVGhpcyB1c2VzIGEgZGlmZmVyZW50IG1heCB2YWx1ZSBpbiBjYXNlCiAgICAqIE5TUyBhZGRzIG1vcmUgY2lwaGVycyBsYXRlciB3ZSBkb24ndCB3YW50IHRoZW0gYXZhaWxhYmxlIGJ5CiAgICAqIGFjY2lkZW50CiAgICAqLwotICBmb3IoaT0wOyBpPFNTTF9OdW1JbXBsZW1lbnRlZENpcGhlcnM7IGkrKykgewotICAgIFNTTF9DaXBoZXJQcmVmU2V0KG1vZGVsLCBTU0xfSW1wbGVtZW50ZWRDaXBoZXJzW2ldLCBQUl9GQUxTRSk7CisgIGZvcihpID0gMDsgaSA8IG51bV9pbXBsZW1lbnRlZF9jaXBoZXJzOyBpKyspIHsKKyAgICBTU0xfQ2lwaGVyUHJlZlNldChtb2RlbCwgaW1wbGVtZW50ZWRfY2lwaGVyc1tpXSwgUFJfRkFMU0UpOwogICB9CiAKICAgLyogU2V0IGV2ZXJ5IGVudHJ5IGluIG91ciBsaXN0IHRvIGZhbHNlICovCi0gIGZvcihpPTA7IGk8TlVNX09GX0NJUEhFUlM7IGkrKykgeworICBmb3IoaSA9IDA7IGkgPCBOVU1fT0ZfQ0lQSEVSUzsgaSsrKSB7CiAgICAgY2lwaGVyX3N0YXRlW2ldID0gUFJfRkFMU0U7CiAgIH0KIApAQCAtMjY5LDIxICsyNzUsMjEgQEAKIH0KIAogLyoKLSAqIEdldCB0aGUgbnVtYmVyIG9mIGNpcGhlcnMgdGhhdCBhcmUgZW5hYmxlZC4gV2UgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lCisgKiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgY2lwaGVyLXN1aXRlIGlzIGVuYWJsZWQuIFVzZWQgdG8gZGV0ZXJtaW5lCiAgKiBpZiB3ZSBuZWVkIHRvIGNhbGwgTlNTX1NldERvbWVzdGljUG9saWN5KCkgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGNpcGhlcnMuCiAgKi8KLXN0YXRpYyBpbnQgbnVtX2VuYWJsZWRfY2lwaGVycyh2b2lkKQorc3RhdGljIGJvb2wgYW55X2NpcGhlcl9lbmFibGVkKHZvaWQpCiB7Ci0gIFBSSW50MzIgcG9saWN5ID0gMDsKLSAgaW50IGNvdW50ID0gMDsKICAgdW5zaWduZWQgaW50IGk7CiAKICAgZm9yKGk9MDsgaTxOVU1fT0ZfQ0lQSEVSUzsgaSsrKSB7CisgICAgUFJJbnQzMiBwb2xpY3kgPSAwOwogICAgIFNTTF9DaXBoZXJQb2xpY3lHZXQoY2lwaGVybGlzdFtpXS5udW0sICZwb2xpY3kpOwogICAgIGlmKHBvbGljeSkKLSAgICAgIGNvdW50Kys7CisgICAgICByZXR1cm4gVFJVRTsKICAgfQotICByZXR1cm4gY291bnQ7CisKKyAgcmV0dXJuIEZBTFNFOwogfQogCiAvKgpAQCAtMzIyLDggKzMyOCw4IEBACiAgICAgLyogbm8gc3VjaCBmaWxlIGV4aXN0cywgdXNlIHRoZSBzdHJpbmcgYXMgbmlja25hbWUgKi8KICAgICByZXR1cm4gc3RyZHVwKHN0cik7CiAKLSAgLyogc2VhcmNoIHRoZSBsYXN0IHNsYXNoOyB3ZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzbGFzaCBpbiBhIGZpbGUgbmFtZSAqLwotICBuID0gc3RycmNocihzdHIsICcvJyk7CisgIC8qIHNlYXJjaCB0aGUgZmlyc3Qgc2xhc2g7IHdlIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHNsYXNoIGluIGEgZmlsZSBuYW1lICovCisgIG4gPSBzdHJjaHIoc3RyLCAnLycpOwogICBpZighbikgewogICAgIGluZm9mKGRhdGEsICJ3YXJuaW5nOiBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgXCIlc1wiIGhhbmRsZWQgYXMgbmlja25hbWU7ICIKICAgICAgICAgICAicGxlYXNlIHVzZSBcIi4vJXNcIiB0byBmb3JjZSBmaWxlIG5hbWVcbiIsIHN0ciwgc3RyKTsKQEAgLTY5MCw3ICs2OTYsNyBAQAogICB1bnNpZ25lZCBpbnQgYnVmbGVuOwogICBTU0xOZXh0UHJvdG9TdGF0ZSBzdGF0ZTsKIAotICBpZighY29ubi0+ZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuICYmICFjb25uLT5kYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuKSB7CisgIGlmKCFjb25uLT5iaXRzLnRsc19lbmFibGVfbnBuICYmICFjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIHJldHVybjsKICAgfQogCkBAIC03MTQsNyArNzIwLDcgQEAKICNpZmRlZiBVU0VfTkdIVFRQMgogICAgIGlmKGJ1ZmxlbiA9PSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOICYmCiAgICAgICAgIW1lbWNtcChOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsIGJ1ZiwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTikpIHsKLSAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKKyAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CiAgICAgfQogICAgIGVsc2UKICNlbmRpZgpAQCAtOTIyLDEyICs5MjgsNiBAQAogICBTRUNTdGF0dXMgcmVzPVNFQ1N1Y2Nlc3M7CiAgIHZvaWQgKnByb3RvX3dpbiA9IE5VTEw7CiAKLSAgLyoKLSAgICBQUkFyZW5hUG9vbCAgICp0bXBBcmVuYSA9IE5VTEw7Ci0gICAgQ0VSVEF1dGhLZXlJRCAqYXV0aG9yaXR5S2V5SUQgPSBOVUxMOwotICAgIFNFQ0lURU0gICAgICAgKmNhbmFtZSA9IE5VTEw7Ci0gICovCi0KICAgY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUoc29jayk7CiAgIGNlcnRfaXNzdWVyID0gQ0VSVF9GaW5kQ2VydElzc3VlcihjZXJ0LCBQUl9Ob3coKSwgY2VydFVzYWdlT2JqZWN0U2lnbmVyKTsKIApAQCAtOTY3LDggKzk2Nyw3IEBACiAgICAgICBTRUNJdGVtICpjZXJ0X2RlciA9IFBLMTFfREVSRW5jb2RlUHVibGljS2V5KHB1YmtleSk7CiAgICAgICBpZihjZXJ0X2RlcikgewogICAgICAgICAvKiBjb21wYXJlIHRoZSBwdWJsaWMga2V5IHdpdGggdGhlIHBpbm5lZCBwdWJsaWMga2V5ICovCi0gICAgICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KHBpbm5lZHB1YmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9kZXItPmRhdGEsCisgICAgICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KGRhdGEsIHBpbm5lZHB1YmtleSwgY2VydF9kZXItPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfZGVyLT5sZW4pOwogICAgICAgICBTRUNJVEVNX0ZyZWVJdGVtKGNlcnRfZGVyLCBQUl9UUlVFKTsKICAgICAgIH0KQEAgLTEyMjMsNyArMTIyMiw3IEBACiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogCi0gIGlmKG51bV9lbmFibGVkX2NpcGhlcnMoKSA9PSAwKQorICBpZighYW55X2NpcGhlcl9lbmFibGVkKCkpCiAgICAgTlNTX1NldERvbWVzdGljUG9saWN5KCk7CiAKICAgaW5pdGlhbGl6ZWQgPSAxOwpAQCAtMTc0NSwxNCArMTc0NCwxNCBAQAogI2VuZGlmCiAKICNpZmRlZiBTU0xfRU5BQkxFX05QTgotICBpZihTU0xfT3B0aW9uU2V0KGNvbm5zc2wtPmhhbmRsZSwgU1NMX0VOQUJMRV9OUE4sIGRhdGEtPnNldC5zc2xfZW5hYmxlX25wbgotICAgICAgICA/IFBSX1RSVUUgOiBQUl9GQUxTRSkgIT0gU0VDU3VjY2VzcykKKyAgaWYoU1NMX09wdGlvblNldChjb25uc3NsLT5oYW5kbGUsIFNTTF9FTkFCTEVfTlBOLCBjb25uLT5iaXRzLnRsc19lbmFibGVfbnBuCisgICAgICAgICAgICAgICAgICAgPyBQUl9UUlVFIDogUFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCiAgICAgZ290byBlcnJvcjsKICNlbmRpZgogCiAjaWZkZWYgU1NMX0VOQUJMRV9BTFBOCi0gIGlmKFNTTF9PcHRpb25TZXQoY29ubnNzbC0+aGFuZGxlLCBTU0xfRU5BQkxFX0FMUE4sIGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4KLSAgICAgICAgPyBQUl9UUlVFIDogUFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCisgIGlmKFNTTF9PcHRpb25TZXQoY29ubnNzbC0+aGFuZGxlLCBTU0xfRU5BQkxFX0FMUE4sIGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuCisgICAgICAgICAgICAgICAgICAgPyBQUl9UUlVFIDogUFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCiAgICAgZ290byBlcnJvcjsKICNlbmRpZgogCkBAIC0xNzY5LDEyICsxNzY4LDEyIEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoU1NMX0VOQUJMRV9OUE4pIHx8IGRlZmluZWQoU1NMX0VOQUJMRV9BTFBOKQotICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9ucG4gfHwgZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfbnBuIHx8IGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CiAgICAgaW50IGN1ciA9IDA7CiAgICAgdW5zaWduZWQgY2hhciBwcm90b2NvbHNbMTI4XTsKIAogI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkgeworICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CiAgICAgICBwcm90b2NvbHNbY3VyKytdID0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTjsKICAgICAgIG1lbWNweSgmcHJvdG9jb2xzW2N1cl0sIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKTsKQEAgLTE3OTIsOSArMTc5MSwxNyBAQAogCiAKICAgLyogRm9yY2UgaGFuZHNoYWtlIG9uIG5leHQgSS9PICovCi0gIFNTTF9SZXNldEhhbmRzaGFrZShjb25uc3NsLT5oYW5kbGUsIC8qIGFzU2VydmVyICovIFBSX0ZBTFNFKTsKKyAgaWYoU1NMX1Jlc2V0SGFuZHNoYWtlKGNvbm5zc2wtPmhhbmRsZSwgLyogYXNTZXJ2ZXIgKi8gUFJfRkFMU0UpCisgICAgICAhPSBTRUNTdWNjZXNzKQorICAgIGdvdG8gZXJyb3I7CiAKLSAgU1NMX1NldFVSTChjb25uc3NsLT5oYW5kbGUsIGNvbm4tPmhvc3QubmFtZSk7CisgIC8qIHByb3BhZ2F0ZSBob3N0bmFtZSB0byB0aGUgVExTIGxheWVyICovCisgIGlmKFNTTF9TZXRVUkwoY29ubnNzbC0+aGFuZGxlLCBjb25uLT5ob3N0Lm5hbWUpICE9IFNFQ1N1Y2Nlc3MpCisgICAgZ290byBlcnJvcjsKKworICAvKiBwcmV2ZW50IE5TUyBmcm9tIHJlLXVzaW5nIHRoZSBzZXNzaW9uIGZvciBhIGRpZmZlcmVudCBob3N0bmFtZSAqLworICBpZihTU0xfU2V0U29ja1BlZXJJRChjb25uc3NsLT5oYW5kbGUsIGNvbm4tPmhvc3QubmFtZSkgIT0gU0VDU3VjY2VzcykKKyAgICBnb3RvIGVycm9yOwogCiAgIHJldHVybiBDVVJMRV9PSzsKIApAQCAtMjA0MSw2ICsyMDQ4LDE5IEBACiAgIFBLMTFfRGVzdHJveUNvbnRleHQoTUQ1cHcsIFBSX1RSVUUpOwogfQogCit2b2lkIEN1cmxfbnNzX3NoYTI1NnN1bShjb25zdCB1bnNpZ25lZCBjaGFyICp0bXAsIC8qIGlucHV0ICovCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtLCAvKiBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaGEyNTZsZW4pCit7CisgIFBLMTFDb250ZXh0ICpTSEEyNTZwdyA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNfT0lEX1NIQTI1Nik7CisgIHVuc2lnbmVkIGludCBTSEEyNTZvdXQ7CisKKyAgUEsxMV9EaWdlc3RPcChTSEEyNTZwdywgdG1wLCBjdXJseF91enRvdWkodG1wbGVuKSk7CisgIFBLMTFfRGlnZXN0RmluYWwoU0hBMjU2cHcsIHNoYTI1NnN1bSwgJlNIQTI1Nm91dCwgY3VybHhfdXp0b3VpKHNoYTI1NmxlbikpOworICBQSzExX0Rlc3Ryb3lDb250ZXh0KFNIQTI1NnB3LCBQUl9UUlVFKTsKK30KKwogYm9vbCBDdXJsX25zc19jZXJ0X3N0YXR1c19yZXF1ZXN0KHZvaWQpCiB7CiAjaWZkZWYgU1NMX0VOQUJMRV9PQ1NQX1NUQVBMSU5HCmRpZmYgLS1naXQgYS9saWIvdnRscy9uc3NnLmggYi9saWIvdnRscy9uc3NnLmgKaW5kZXggZDBlNzQxMi4uZTM4OGVjMCAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvbnNzZy5oCisrKyBiL2xpYi92dGxzL25zc2cuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDYgKzU2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptZDVzdW0sIC8qIG91dHB1dCAqLwogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1kNWxlbik7CiAKK3ZvaWQgQ3VybF9uc3Nfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0sIC8qIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNoYTI1Nmxlbik7CisKIGJvb2wgQ3VybF9uc3NfY2VydF9zdGF0dXNfcmVxdWVzdCh2b2lkKTsKIAogYm9vbCBDdXJsX25zc19mYWxzZV9zdGFydCh2b2lkKTsKQEAgLTY5LDYgKzc0LDkgQEAKIC8qIHRoaXMgYmFja2VuZCBzdXBwb3J0cyBDVVJMT1BUX0NFUlRJTkZPICovCiAjZGVmaW5lIGhhdmVfY3VybHNzbF9jZXJ0aW5mbyAxCiAKKy8qIHRoaXMgYmFja2VuZHMgc3VwcG9ydHMgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgKi8KKyNkZWZpbmUgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAxCisKIC8qIEFQSSBzZXR1cCBmb3IgTlNTICovCiAjZGVmaW5lIGN1cmxzc2xfaW5pdCBDdXJsX25zc19pbml0CiAjZGVmaW5lIGN1cmxzc2xfY2xlYW51cCBDdXJsX25zc19jbGVhbnVwCkBAIC04OSw2ICs5Nyw3IEBACiAjZGVmaW5lIGN1cmxzc2xfZGF0YV9wZW5kaW5nKHgseSkgKCh2b2lkKXgsICh2b2lkKXksIDApCiAjZGVmaW5lIGN1cmxzc2xfcmFuZG9tKHgseSx6KSBDdXJsX25zc19yYW5kb20oeCx5LHopCiAjZGVmaW5lIGN1cmxzc2xfbWQ1c3VtKGEsYixjLGQpIEN1cmxfbnNzX21kNXN1bShhLGIsYyxkKQorI2RlZmluZSBjdXJsc3NsX3NoYTI1NnN1bShhLGIsYyxkKSBDdXJsX25zc19zaGEyNTZzdW0oYSxiLGMsZCkKICNkZWZpbmUgY3VybHNzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KCkgQ3VybF9uc3NfY2VydF9zdGF0dXNfcmVxdWVzdCgpCiAjZGVmaW5lIGN1cmxzc2xfZmFsc2Vfc3RhcnQoKSBDdXJsX25zc19mYWxzZV9zdGFydCgpCiAKZGlmZiAtLWdpdCBhL2xpYi92dGxzL29wZW5zc2wuYyBiL2xpYi92dGxzL29wZW5zc2wuYwppbmRleCAwMmRlNDZmLi4zYTRiZGU1IDEwMDY0NAotLS0gYS9saWIvdnRscy9vcGVuc3NsLmMKKysrIGIvbGliL3Z0bHMvb3BlbnNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjgsNyArNjgsNyBAQAogI2luY2x1ZGUgPG9wZW5zc2wvcGtjczEyLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBIQVZFX0JPUklOR1NTTAorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwOGZMKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX09DU1ApCiAjaW5jbHVkZSA8b3BlbnNzbC9vY3NwLmg+CiAjZW5kaWYKIApAQCAtODMsMjMgKzgzLDggQEAKICNlcnJvciAiT1BFTlNTTF9WRVJTSU9OX05VTUJFUiBub3QgZGVmaW5lZCIKICNlbmRpZgogCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA3MDAxTCAmJiAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKLS8qIEVOR0lORV9sb2FkX3ByaXZhdGVfa2V5KCkgdGFrZXMgZm91ciBhcmd1bWVudHMgKi8KLSNkZWZpbmUgSEFWRV9FTkdJTkVfTE9BRF9GT1VSX0FSR1MKKyNpZiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9FTkdJTkVfSCkKICNpbmNsdWRlIDxvcGVuc3NsL3VpLmg+Ci0jZWxzZQotLyogRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXkoKSB0YWtlcyB0aHJlZSBhcmd1bWVudHMgKi8KLSN1bmRlZiBIQVZFX0VOR0lORV9MT0FEX0ZPVVJfQVJHUwotI2VuZGlmCi0KLSNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTAzMDAxTCkgJiYgXAotICAgIGRlZmluZWQoSEFWRV9PUEVOU1NMX1BLQ1MxMl9IKSAmJiBcCi0gICAgIWRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCi0vKiBPcGVuU1NMIGhhcyBQS0NTIDEyIHN1cHBvcnQsIEJvcmluZ1NTTCBkb2VzIG5vdCAqLwotI2RlZmluZSBIQVZFX1BLQ1MxMl9TVVBQT1JUCi0jZWxzZQotLyogT3BlblNTTCBkb2VzIG5vdCBoYXZlIFBLQ1MxMiBzdXBwb3J0ICovCi0jdW5kZWYgSEFWRV9QS0NTMTJfU1VQUE9SVAogI2VuZGlmCiAKICNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDkwMDBMCkBAIC0xMDgsMTggKzkzLDEzIEBACiAjZGVmaW5lIFNTTF9NRVRIT0RfUVVBTAogI2VuZGlmCiAKLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDcwMDBMCi0vKiAwLjkuNiBkaWRuJ3QgaGF2ZSBYNTA5X1NUT1JFX3NldF9mbGFncygpICovCi0jZGVmaW5lIEhBVkVfWDUwOV9TVE9SRV9TRVRfRkxBR1MgMQotI2Vsc2UKLSNkZWZpbmUgWDUwOV9TVE9SRV9zZXRfZmxhZ3MoeCx5KSBDdXJsX25vcF9zdG10Ci0jZW5kaWYKLQotI2lmZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCi0vKiBCb3JpbmdTU0wgaGFzIG5vIEVSUl9yZW1vdmVfc3RhdGUoKSAqLwotI2RlZmluZSBFUlJfcmVtb3ZlX3N0YXRlKHgpCi0jZWxpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAwMDAwTCkKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAwMDAwTCkKICNkZWZpbmUgSEFWRV9FUlJfUkVNT1ZFX1RIUkVBRF9TVEFURSAxCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwNEwpICYmIFwKKyAgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisvKiBPcGVuU1NMIDEuMS4wIGRlcHJlY2F0ZXMgdGhlIGZ1bmN0aW9uICovCisjZGVmaW5lIEhBVkVfRVJSX1JFTU9WRV9USFJFQURfU1RBVEVfREVQUkVDQVRFRCAxCisjZW5kaWYKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoSEFWRV9TU0xWMl9DTElFTlRfTUVUSE9EKSB8fCBcCkBAIC0xMjgsMTkgKzEwOCwzMyBAQAogI2RlZmluZSBPUEVOU1NMX05PX1NTTDIKICNlbmRpZgogCi0jaWYgZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKLSNkZWZpbmUgTk9fUkFORF9TRUVEIDEKLS8qIEluIEJvcmluZ1NTTCBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcyBkb2VzIG5vdGhpbmcgKi8KLSNkZWZpbmUgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKQotLyogQm9yaW5nU1NMIGRvZXMgbm90IGhhdmUgQ09ORl9tb2R1bGVzX2xvYWRfZmlsZSAqLwotI2RlZmluZSBDT05GX21vZHVsZXNfbG9hZF9maWxlKGEsYixjKQorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDBMKSAmJiAvKiBPcGVuU1NMIDEuMS4wKyAqLyBcCisgICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorI2RlZmluZSBTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zKCkgU1NMX2xpYnJhcnlfaW5pdCgpCisjZGVmaW5lIFNTTEVBWV9WRVJTSU9OX05VTUJFUiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSCisjZGVmaW5lIEhBVkVfWDUwOV9HRVQwX0VYVEVOU0lPTlMgMSAvKiBhZGRlZCBpbiAxLjEuMCAtcHJlMSAqLworI2RlZmluZSBIQVZFX09QQVFVRV9FVlBfUEtFWSAxIC8qIHNpbmNlIDEuMS4wIC1wcmUzICovCisjZGVmaW5lIEhBVkVfT1BBUVVFX1JTQV9EU0FfREggMSAvKiBzaW5jZSAxLjEuMCAtcHJlNSAqLwogI2VuZGlmCiAKLSNpZmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTAotLyogbm90IHByZXNlbnQgaW4gQm9yaW5nU1NMICovCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwZkwpICYmIC8qIDEuMC4yIG9yIGxhdGVyICovIFwKKyAgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisjZGVmaW5lIEhBVkVfWDUwOV9HRVQwX1NJR05BVFVSRSAxCisjZW5kaWYKKworI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODA4ZkwpCisvKiBub3QgcHJlc2VudCBpbiBvbGRlciBPcGVuU1NMICovCiAjZGVmaW5lIE9QRU5TU0xfbG9hZF9idWlsdGluX21vZHVsZXMoeCkKICNlbmRpZgogCisjaWYgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyNkZWZpbmUgT1NTTF9QQUNLQUdFICJMaWJyZVNTTCIKKyNlbGlmIGRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCisjZGVmaW5lIE9TU0xfUEFDS0FHRSAiQm9yaW5nU1NMIgorI2Vsc2UKKyNkZWZpbmUgT1NTTF9QQUNLQUdFICJPcGVuU1NMIgorI2VuZGlmCisKIC8qCiAgKiBOdW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBmcm9tIHRoZSByYW5kb20gbnVtYmVyIHNlZWQgZmlsZS4gVGhpcyBtdXN0IGJlCiAgKiBhIGZpbml0ZSB2YWx1ZSAoYmVjYXVzZSBzb21lIGVudHJvcHkgImZpbGVzIiBsaWtlIC9kZXYvdXJhbmRvbSBoYXZlCkBAIC0xNzEsNyArMTY1LDYgQEAKICAqIHBhc3MgaW4gYW4gYXJndW1lbnQgdGhhdCBpcyBuZXZlciB1c2VkLgogICovCiAKLSNpZm5kZWYgTk9fUkFORF9TRUVECiAjaWZkZWYgSEFWRV9SQU5EX1NUQVRVUwogI2RlZmluZSBzZWVkX2Vub3VnaCh4KSByYW5kX2Vub3VnaCgpCiBzdGF0aWMgYm9vbCByYW5kX2Vub3VnaCh2b2lkKQpAQCAtMjY4LDExICsyNjEsNiBAQAogICAgIHNzbF9zZWVkZWQgPSBUUlVFOwogICB9CiB9Ci0jZWxzZQotLyogQm9yaW5nU1NMIG5lZWRzIG5vIHNlZWRpbmcgKi8KLSNkZWZpbmUgQ3VybF9vc3NsX3NlZWQoeCkKLSNlbmRpZgotCiAKICNpZm5kZWYgU1NMX0ZJTEVUWVBFX0VOR0lORQogI2RlZmluZSBTU0xfRklMRVRZUEVfRU5HSU5FIDQyCkBAIC0yOTUsNyArMjgzLDcgQEAKICAgcmV0dXJuIC0xOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfRU5HSU5FX0gpICYmIGRlZmluZWQoSEFWRV9FTkdJTkVfTE9BRF9GT1VSX0FSR1MpCisjaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfRU5HSU5FX0gpCiAvKgogICogU3VwcGx5IGRlZmF1bHQgcGFzc3dvcmQgdG8gdGhlIGVuZ2luZSB1c2VyIGludGVyZmFjZSBjb252ZXJzYXRpb24uCiAgKiBUaGUgcGFzc3dvcmQgaXMgcGFzc2VkIGJ5IE9wZW5TU0wgZW5naW5lIGZyb20gRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXkoKQpAQCAtMzY5LDcgKzM1Nyw4IEBACiAgICAgICBpZihTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9maWxlKSAhPSAxKSB7CiAgICAgICAgIGZhaWxmKGRhdGEsCi0gICAgICAgICAgICAgICJjb3VsZCBub3QgbG9hZCBQRU0gY2xpZW50IGNlcnRpZmljYXRlLCBPcGVuU1NMIGVycm9yICVzLCAiCisgICAgICAgICAgICAgICJjb3VsZCBub3QgbG9hZCBQRU0gY2xpZW50IGNlcnRpZmljYXRlLCAiIE9TU0xfUEFDS0FHRQorICAgICAgICAgICAgICAiIGVycm9yICVzLCAiCiAgICAgICAgICAgICAgICIobm8ga2V5IGZvdW5kLCB3cm9uZyBwYXNzIHBocmFzZSwgb3Igd3JvbmcgZmlsZSBmb3JtYXQ/KSIsCiAgICAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCBOVUxMKSApOwogICAgICAgICByZXR1cm4gMDsKQEAgLTM4NCw3ICszNzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfdHlwZSkgIT0gMSkgewogICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgQVNOMSBjbGllbnQgY2VydGlmaWNhdGUsIE9wZW5TU0wgZXJyb3IgJXMsICIKKyAgICAgICAgICAgICAgImNvdWxkIG5vdCBsb2FkIEFTTjEgY2xpZW50IGNlcnRpZmljYXRlLCAiIE9TU0xfUEFDS0FHRQorICAgICAgICAgICAgICAiIGVycm9yICVzLCAiCiAgICAgICAgICAgICAgICIobm8ga2V5IGZvdW5kLCB3cm9uZyBwYXNzIHBocmFzZSwgb3Igd3JvbmcgZmlsZSBmb3JtYXQ/KSIsCiAgICAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCBOVUxMKSApOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NSwxMiArNDM1LDExIEBACiAKICAgICBjYXNlIFNTTF9GSUxFVFlQRV9QS0NTMTI6CiAgICAgewotI2lmZGVmIEhBVkVfUEtDUzEyX1NVUFBPUlQKKyNpZmRlZiBIQVZFX09QRU5TU0xfUEtDUzEyX0gKICAgICAgIEZJTEUgKmY7CiAgICAgICBQS0NTMTIgKnAxMjsKICAgICAgIEVWUF9QS0VZICpwcmk7CiAgICAgICBTVEFDS19PRihYNTA5KSAqY2EgPSBOVUxMOwotICAgICAgaW50IGk7CiAKICAgICAgIGYgPSBmb3BlbihjZXJ0X2ZpbGUsICJyYiIpOwogICAgICAgaWYoIWYpIHsKQEAgLTQ3MCw3ICs0NTksOCBAQAogICAgICAgaWYoIVBLQ1MxMl9wYXJzZShwMTIsIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV9QQVNTV0RdLCAmcHJpLCAmeDUwOSwKICAgICAgICAgICAgICAgICAgICAgICAgJmNhKSkgewogICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgICAiY291bGQgbm90IHBhcnNlIFBLQ1MxMiBmaWxlLCBjaGVjayBwYXNzd29yZCwgT3BlblNTTCBlcnJvciAlcyIsCisgICAgICAgICAgICAgICJjb3VsZCBub3QgcGFyc2UgUEtDUzEyIGZpbGUsIGNoZWNrIHBhc3N3b3JkLCAiIE9TU0xfUEFDS0FHRQorICAgICAgICAgICAgICAiIGVycm9yICVzIiwKICAgICAgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCksIE5VTEwpICk7CiAgICAgICAgIFBLQ1MxMl9mcmVlKHAxMik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDgwLDcgKzQ3MCw4IEBACiAKICAgICAgIGlmKFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlKGN0eCwgeDUwOSkgIT0gMSkgewogICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgUEtDUzEyIGNsaWVudCBjZXJ0aWZpY2F0ZSwgT3BlblNTTCBlcnJvciAlcyIsCisgICAgICAgICAgICAgICJjb3VsZCBub3QgbG9hZCBQS0NTMTIgY2xpZW50IGNlcnRpZmljYXRlLCAiIE9TU0xfUEFDS0FHRQorICAgICAgICAgICAgICAiIGVycm9yICVzIiwKICAgICAgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCksIE5VTEwpICk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgIH0KQEAgLTQ5Nyw4ICs0ODgsOCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgICB9CiAgICAgICAvKiBTZXQgQ2VydGlmaWNhdGUgVmVyaWZpY2F0aW9uIGNoYWluICovCi0gICAgICBpZihjYSAmJiBza19YNTA5X251bShjYSkpIHsKLSAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2tfWDUwOV9udW0oY2EpOyBpKyspIHsKKyAgICAgIGlmKGNhKSB7CisgICAgICAgIHdoaWxlKHNrX1g1MDlfbnVtKGNhKSkgewogICAgICAgICAgIC8qCiAgICAgICAgICAgICogTm90ZSB0aGF0IHNrX1g1MDlfcG9wKCkgaXMgdXNlZCBiZWxvdyB0byBtYWtlIHN1cmUgdGhlIGNlcnQgaXMKICAgICAgICAgICAgKiByZW1vdmVkIGZyb20gdGhlIHN0YWNrIHByb3Blcmx5IGJlZm9yZSBnZXR0aW5nIHBhc3NlZCB0bwpAQCAtNTA4LDYgKzQ5OSw3IEBACiAgICAgICAgICAgICovCiAgICAgICAgICAgWDUwOSAqeCA9IHNrX1g1MDlfcG9wKGNhKTsKICAgICAgICAgICBpZighU1NMX0NUWF9hZGRfZXh0cmFfY2hhaW5fY2VydChjdHgsIHgpKSB7CisgICAgICAgICAgICBYNTA5X2ZyZWUoeCk7CiAgICAgICAgICAgICBmYWlsZihkYXRhLCAiY2Fubm90IGFkZCBjZXJ0aWZpY2F0ZSB0byBjZXJ0aWZpY2F0ZSBjaGFpbiIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgIH0KQEAgLTU2MSwyOCArNTUzLDIzIEBACiAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWFggc3RpbGwgbmVlZHMgc29tZSB3b3JrICovCiAgICAgICAgIEVWUF9QS0VZICpwcml2X2tleSA9IE5VTEw7CiAgICAgICAgIGlmKGRhdGEtPnN0YXRlLmVuZ2luZSkgewotI2lmZGVmIEhBVkVfRU5HSU5FX0xPQURfRk9VUl9BUkdTCiAgICAgICAgICAgVUlfTUVUSE9EICp1aV9tZXRob2QgPQogICAgICAgICAgICAgVUlfY3JlYXRlX21ldGhvZCgoY2hhciAqKSJjVVJMIHVzZXIgaW50ZXJmYWNlIik7CiAgICAgICAgICAgaWYoIXVpX21ldGhvZCkgewotICAgICAgICAgICAgZmFpbGYoZGF0YSwgInVuYWJsZSBkbyBjcmVhdGUgT3BlblNTTCB1c2VyLWludGVyZmFjZSBtZXRob2QiKTsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJ1bmFibGUgZG8gY3JlYXRlICIgT1NTTF9QQUNLQUdFCisgICAgICAgICAgICAgICAgICAiIHVzZXItaW50ZXJmYWNlIG1ldGhvZCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgfQogICAgICAgICAgIFVJX21ldGhvZF9zZXRfb3BlbmVyKHVpX21ldGhvZCwgVUlfbWV0aG9kX2dldF9vcGVuZXIoVUlfT3BlblNTTCgpKSk7CiAgICAgICAgICAgVUlfbWV0aG9kX3NldF9jbG9zZXIodWlfbWV0aG9kLCBVSV9tZXRob2RfZ2V0X2Nsb3NlcihVSV9PcGVuU1NMKCkpKTsKICAgICAgICAgICBVSV9tZXRob2Rfc2V0X3JlYWRlcih1aV9tZXRob2QsIHNzbF91aV9yZWFkZXIpOwogICAgICAgICAgIFVJX21ldGhvZF9zZXRfd3JpdGVyKHVpX21ldGhvZCwgc3NsX3VpX3dyaXRlcik7Ci0jZW5kaWYKICAgICAgICAgICAvKiB0aGUgdHlwZWNhc3QgYmVsb3cgd2FzIGFkZGVkIHRvIHBsZWFzZSBtaW5ndzMyICovCiAgICAgICAgICAgcHJpdl9rZXkgPSAoRVZQX1BLRVkgKikKICAgICAgICAgICAgIEVOR0lORV9sb2FkX3ByaXZhdGVfa2V5KGRhdGEtPnN0YXRlLmVuZ2luZSwga2V5X2ZpbGUsCi0jaWZkZWYgSEFWRV9FTkdJTkVfTE9BRF9GT1VSX0FSR1MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpX21ldGhvZCwKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZX1BBU1NXRF0pOwotI2lmZGVmIEhBVkVfRU5HSU5FX0xPQURfRk9VUl9BUkdTCiAgICAgICAgICAgVUlfZGVzdHJveV9tZXRob2QodWlfbWV0aG9kKTsKLSNlbmRpZgogICAgICAgICAgIGlmKCFwcml2X2tleSkgewogICAgICAgICAgICAgZmFpbGYoZGF0YSwgImZhaWxlZCB0byBsb2FkIHByaXZhdGUga2V5IGZyb20gY3J5cHRvIGVuZ2luZSIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC03MDIsMTYgKzY4OSw2IEBACiAgIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcygpOwogI2VuZGlmCiAKLSAgLyogTGV0cyBnZXQgbmljZSBlcnJvciBtZXNzYWdlcyAqLwotICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7Ci0KLSAgLyogSW5pdCB0aGUgZ2xvYmFsIGNpcGhlcnMgYW5kIGRpZ2VzdHMgKi8KLSAgaWYoIVNTTGVheV9hZGRfc3NsX2FsZ29yaXRobXMoKSkKLSAgICByZXR1cm4gMDsKLQotICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOwotCi0KICAgLyogT1BFTlNTTF9jb25maWcoTlVMTCk7IGlzICJzdHJvbmdseSByZWNvbW1lbmRlZCIgdG8gdXNlIGJ1dCB1bmZvcnR1bmF0ZWx5CiAgICAgIHRoYXQgZnVuY3Rpb24gbWFrZXMgYW4gZXhpdCgpIGNhbGwgb24gd3JvbmdseSBmb3JtYXR0ZWQgY29uZmlnIGZpbGVzCiAgICAgIHdoaWNoIG1ha2VzIGl0IGhhcmQgdG8gdXNlIGluIHNvbWUgc2l0dWF0aW9ucy4gT1BFTlNTTF9jb25maWcoKSBpdHNlbGYKQEAgLTcyOCw2ICs3MDUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GX01GTEFHU19ERUZBVUxUX1NFQ1RJT058CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORl9NRkxBR1NfSUdOT1JFX01JU1NJTkdfRklMRSk7CiAKKyAgLyogTGV0cyBnZXQgbmljZSBlcnJvciBtZXNzYWdlcyAqLworICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7CisKKyAgLyogSW5pdCB0aGUgZ2xvYmFsIGNpcGhlcnMgYW5kIGRpZ2VzdHMgKi8KKyAgaWYoIVNTTGVheV9hZGRfc3NsX2FsZ29yaXRobXMoKSkKKyAgICByZXR1cm4gMDsKKworICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOworCiAgIHJldHVybiAxOwogfQogCkBAIC03NTEsMTUgKzczNywyNSBAQAogICBFUlJfZnJlZV9zdHJpbmdzKCk7CiAKICAgLyogRnJlZSB0aHJlYWQgbG9jYWwgZXJyb3Igc3RhdGUsIGRlc3Ryb3lpbmcgaGFzaCB1cG9uIHplcm8gcmVmY291bnQgKi8KLSNpZmRlZiBIQVZFX0VSUl9SRU1PVkVfVEhSRUFEX1NUQVRFCisjaWZkZWYgSEFWRV9FUlJfUkVNT1ZFX1RIUkVBRF9TVEFURV9ERVBSRUNBVEVECisKKyNlbGlmIGRlZmluZWQoSEFWRV9FUlJfUkVNT1ZFX1RIUkVBRF9TVEFURSkKICAgRVJSX3JlbW92ZV90aHJlYWRfc3RhdGUoTlVMTCk7CiAjZWxzZQogICBFUlJfcmVtb3ZlX3N0YXRlKDApOwogI2VuZGlmCisKKyAgLyogRnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSBhbGwgY29uZmlndXJhdGlvbiBtb2R1bGVzICovCisgIENPTkZfbW9kdWxlc19mcmVlKCk7CisKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDNMICYmIFwKKyAgICBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDw9IDB4MTAwMDJGRkZMCisgIFNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kcygpOworI2VuZGlmCiB9CiAKIC8qCi0gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgU1NMX3BlZWsgdG8gZGV0ZXJtaW5lIGNvbm5lY3Rpb24gc3RhdHVzLgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSBjb25uZWN0aW9uIHN0YXR1cy4KICAqCiAgKiBSZXR1cm4gY29kZXM6CiAgKiAgICAgMSBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbCBpbiBwbGFjZQpAQCAtNzY4LDE2ICs3NjQsNDUgQEAKICAqLwogaW50IEN1cmxfb3NzbF9jaGVja19jeG4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBpbnQgcmM7CisgIC8qIFNTTF9wZWVrIHRha2VzIGRhdGEgb3V0IG9mIHRoZSByYXcgcmVjdiBidWZmZXIgd2l0aG91dCBwZWVraW5nIHNvIHdlIHVzZQorICAgICByZWN2IE1TR19QRUVLIGluc3RlYWQuIEJ1ZyAjNzk1ICovCisjaWZkZWYgTVNHX1BFRUsKICAgY2hhciBidWY7Ci0KLSAgcmMgPSBTU0xfcGVlayhjb25uLT5zc2xbRklSU1RTT0NLRVRdLmhhbmRsZSwgKHZvaWQqKSZidWYsIDEpOwotICBpZihyYyA+IDApCi0gICAgcmV0dXJuIDE7IC8qIGNvbm5lY3Rpb24gc3RpbGwgaW4gcGxhY2UgKi8KLQotICBpZihyYyA9PSAwKQorICBzc2l6ZV90IG5yZWFkOworICBucmVhZCA9IHJlY3YoKFJFQ1ZfVFlQRV9BUkcxKWNvbm4tPnNvY2tbRklSU1RTT0NLRVRdLCAoUkVDVl9UWVBFX0FSRzIpJmJ1ZiwKKyAgICAgICAgICAgICAgIChSRUNWX1RZUEVfQVJHMykxLCAoUkVDVl9UWVBFX0FSRzQpTVNHX1BFRUspOworICBpZihucmVhZCA9PSAwKQogICAgIHJldHVybiAwOyAvKiBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCAqLwotCisgIGVsc2UgaWYobnJlYWQgPT0gMSkKKyAgICByZXR1cm4gMTsgLyogY29ubmVjdGlvbiBzdGlsbCBpbiBwbGFjZSAqLworICBlbHNlIGlmKG5yZWFkID09IC0xKSB7CisgICAgICBpbnQgZXJyID0gU09DS0VSUk5POworICAgICAgaWYoZXJyID09IEVJTlBST0dSRVNTIHx8CisjaWYgZGVmaW5lZChFQUdBSU4pICYmIChFQUdBSU4gIT0gRVdPVUxEQkxPQ0spCisgICAgICAgICBlcnIgPT0gRUFHQUlOIHx8CisjZW5kaWYKKyAgICAgICAgIGVyciA9PSBFV09VTERCTE9DSykKKyAgICAgICAgcmV0dXJuIDE7IC8qIGNvbm5lY3Rpb24gc3RpbGwgaW4gcGxhY2UgKi8KKyAgICAgIGlmKGVyciA9PSBFQ09OTlJFU0VUIHx8CisjaWZkZWYgRUNPTk5BQk9SVEVECisgICAgICAgICBlcnIgPT0gRUNPTk5BQk9SVEVEIHx8CisjZW5kaWYKKyNpZmRlZiBFTkVURE9XTgorICAgICAgICAgZXJyID09IEVORVRET1dOIHx8CisjZW5kaWYKKyNpZmRlZiBFTkVUUkVTRVQKKyAgICAgICAgIGVyciA9PSBFTkVUUkVTRVQgfHwKKyNlbmRpZgorI2lmZGVmIEVTSFVURE9XTgorICAgICAgICAgZXJyID09IEVTSFVURE9XTiB8fAorI2VuZGlmCisjaWZkZWYgRVRJTUVET1VUCisgICAgICAgICBlcnIgPT0gRVRJTUVET1VUIHx8CisjZW5kaWYKKyAgICAgICAgIGVyciA9PSBFTk9UQ09OTikKKyAgICAgICAgcmV0dXJuIDA7IC8qIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkICovCisgIH0KKyNlbmRpZgogICByZXR1cm4gLTE7IC8qIGNvbm5lY3Rpb24gc3RhdHVzIHVua25vd24gKi8KIH0KIApAQCAtOTQ5LDcgKzk3NCw3IEBACiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgLyogb3BlbnNzbC9zc2wuaCBzYXlzICJsb29rIGF0IGVycm9yIHN0YWNrL3JldHVybiB2YWx1ZS9lcnJubyIgKi8KICAgICAgICAgICBzc2xlcnJvciA9IEVSUl9nZXRfZXJyb3IoKTsKLSAgICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiU1NMIHJlYWQ6ICVzLCBlcnJubyAlZCIsCisgICAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgT1NTTF9QQUNLQUdFICIgU1NMIHJlYWQ6ICVzLCBlcnJubyAlZCIsCiAgICAgICAgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhzc2xlcnJvciwgYnVmKSwKICAgICAgICAgICAgICAgICBTT0NLRVJSTk8pOwogICAgICAgICAgIGRvbmUgPSAxOwpAQCAtMTAxNSw0OSArMTA0MCw2IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIGludCBhc24xX291dHB1dChjb25zdCBBU04xX1VUQ1RJTUUgKnRtLAotICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplb2ZidWYpCi17Ci0gIGNvbnN0IGNoYXIgKmFzbjFfc3RyaW5nOwotICBpbnQgZ210PUZBTFNFOwotICBpbnQgaTsKLSAgaW50IHllYXI9MCwgbW9udGg9MCwgZGF5PTAsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wOwotCi0gIGk9dG0tPmxlbmd0aDsKLSAgYXNuMV9zdHJpbmc9KGNvbnN0IGNoYXIgKil0bS0+ZGF0YTsKLQotICBpZihpIDwgMTApCi0gICAgcmV0dXJuIDE7Ci0gIGlmKGFzbjFfc3RyaW5nW2ktMV0gPT0gJ1onKQotICAgIGdtdD1UUlVFOwotICBmb3IoaT0wOyBpPDEwOyBpKyspCi0gICAgaWYoKGFzbjFfc3RyaW5nW2ldID4gJzknKSB8fCAoYXNuMV9zdHJpbmdbaV0gPCAnMCcpKQotICAgICAgcmV0dXJuIDI7Ci0KLSAgeWVhcj0gKGFzbjFfc3RyaW5nWzBdLScwJykqMTArKGFzbjFfc3RyaW5nWzFdLScwJyk7Ci0gIGlmKHllYXIgPCA1MCkKLSAgICB5ZWFyKz0xMDA7Ci0KLSAgbW9udGg9IChhc24xX3N0cmluZ1syXS0nMCcpKjEwKyhhc24xX3N0cmluZ1szXS0nMCcpOwotICBpZigobW9udGggPiAxMikgfHwgKG1vbnRoIDwgMSkpCi0gICAgcmV0dXJuIDM7Ci0KLSAgZGF5PSAoYXNuMV9zdHJpbmdbNF0tJzAnKSoxMCsoYXNuMV9zdHJpbmdbNV0tJzAnKTsKLSAgaG91cj0gKGFzbjFfc3RyaW5nWzZdLScwJykqMTArKGFzbjFfc3RyaW5nWzddLScwJyk7Ci0gIG1pbnV0ZT0gIChhc24xX3N0cmluZ1s4XS0nMCcpKjEwKyhhc24xX3N0cmluZ1s5XS0nMCcpOwotCi0gIGlmKChhc24xX3N0cmluZ1sxMF0gPj0gJzAnKSAmJiAoYXNuMV9zdHJpbmdbMTBdIDw9ICc5JykgJiYKLSAgICAgKGFzbjFfc3RyaW5nWzExXSA+PSAnMCcpICYmIChhc24xX3N0cmluZ1sxMV0gPD0gJzknKSkKLSAgICBzZWNvbmQ9IChhc24xX3N0cmluZ1sxMF0tJzAnKSoxMCsoYXNuMV9zdHJpbmdbMTFdLScwJyk7Ci0KLSAgc25wcmludGYoYnVmLCBzaXplb2ZidWYsCi0gICAgICAgICAgICIlMDRkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6JTAyZCAlcyIsCi0gICAgICAgICAgIHllYXIrMTkwMCwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIChnbXQ/IkdNVCI6IiIpKTsKLQotICByZXR1cm4gMDsKLX0KLQogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKIApAQCAtMTA4NCw4ICsxMDY2LDcgQEAKICovCiBzdGF0aWMgQ1VSTGNvZGUgdmVyaWZ5aG9zdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIFg1MDkgKnNlcnZlcl9jZXJ0KQogewotICBpbnQgbWF0Y2hlZCA9IC0xOyAvKiAtMSBpcyBubyBhbHRlcm5hdGl2ZSBtYXRjaCB5ZXQsIDEgbWVhbnMgbWF0Y2ggYW5kIDAKLSAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgbWlzbWF0Y2ggKi8KKyAgYm9vbCBtYXRjaGVkID0gRkFMU0U7CiAgIGludCB0YXJnZXQgPSBHRU5fRE5TOyAvKiB0YXJnZXQgdHlwZSwgR0VOX0ROUyBvciBHRU5fSVBBREQgKi8KICAgc2l6ZV90IGFkZHJsZW4gPSAwOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CkBAIC0xMTIyLDcgKzExMDMsNyBAQAogICAgIG51bWFsdHMgPSBza19HRU5FUkFMX05BTUVfbnVtKGFsdG5hbWVzKTsKIAogICAgIC8qIGxvb3AgdGhyb3VnaCBhbGwgYWx0ZXJuYXRpdmVzIHdoaWxlIG5vbmUgaGFzIG1hdGNoZWQgKi8KLSAgICBmb3IoaT0wOyAoaTxudW1hbHRzKSAmJiAobWF0Y2hlZCAhPSAxKTsgaSsrKSB7CisgICAgZm9yKGk9MDsgKGk8bnVtYWx0cykgJiYgIW1hdGNoZWQ7IGkrKykgewogICAgICAgLyogZ2V0IGEgaGFuZGxlIHRvIGFsdGVybmF0aXZlIG5hbWUgbnVtYmVyIGkgKi8KICAgICAgIGNvbnN0IEdFTkVSQUxfTkFNRSAqY2hlY2sgPSBza19HRU5FUkFMX05BTUVfdmFsdWUoYWx0bmFtZXMsIGkpOwogCkBAIC0xMTQ3LDE5ICsxMTI4LDIzIEBACiAgICAgICAgICAgaWYoKGFsdGxlbiA9PSBzdHJsZW4oYWx0cHRyKSkgJiYKICAgICAgICAgICAgICAvKiBpZiB0aGlzIGlzbid0IHRydWUsIHRoZXJlIHdhcyBhbiBlbWJlZGRlZCB6ZXJvIGluIHRoZSBuYW1lCiAgICAgICAgICAgICAgICAgc3RyaW5nIGFuZCB3ZSBjYW5ub3QgbWF0Y2ggaXQuICovCi0gICAgICAgICAgICAgQ3VybF9jZXJ0X2hvc3RjaGVjayhhbHRwdHIsIGNvbm4tPmhvc3QubmFtZSkpCi0gICAgICAgICAgICBtYXRjaGVkID0gMTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXRjaGVkID0gMDsKKyAgICAgICAgICAgICBDdXJsX2NlcnRfaG9zdGNoZWNrKGFsdHB0ciwgY29ubi0+aG9zdC5uYW1lKSkgeworICAgICAgICAgICAgbWF0Y2hlZCA9IFRSVUU7CisgICAgICAgICAgICBpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAgIiBzdWJqZWN0QWx0TmFtZTogaG9zdCBcIiVzXCIgbWF0Y2hlZCBjZXJ0J3MgXCIlc1wiXG4iLAorICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5kaXNwbmFtZSwgYWx0cHRyKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHRU5fSVBBREQ6IC8qIElQIGFkZHJlc3MgY29tcGFyaXNvbiAqLwogICAgICAgICAgIC8qIGNvbXBhcmUgYWx0ZXJuYXRpdmUgSVAgYWRkcmVzcyBpZiB0aGUgZGF0YSBjaHVuayBpcyB0aGUgc2FtZSBzaXplCiAgICAgICAgICAgICAgb3VyIHNlcnZlciBJUCBhZGRyZXNzIGlzICovCi0gICAgICAgICAgaWYoKGFsdGxlbiA9PSBhZGRybGVuKSAmJiAhbWVtY21wKGFsdHB0ciwgJmFkZHIsIGFsdGxlbikpCi0gICAgICAgICAgICBtYXRjaGVkID0gMTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYXRjaGVkID0gMDsKKyAgICAgICAgICBpZigoYWx0bGVuID09IGFkZHJsZW4pICYmICFtZW1jbXAoYWx0cHRyLCAmYWRkciwgYWx0bGVuKSkgeworICAgICAgICAgICAgbWF0Y2hlZCA9IFRSVUU7CisgICAgICAgICAgICBpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAgIiBzdWJqZWN0QWx0TmFtZTogaG9zdCBcIiVzXCIgbWF0Y2hlZCBjZXJ0J3MgSVAgYWRkcmVzcyFcbiIsCisgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0LmRpc3BuYW1lKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTExNjcsMTMgKzExNTIsMTMgQEAKICAgICBHRU5FUkFMX05BTUVTX2ZyZWUoYWx0bmFtZXMpOwogICB9CiAKLSAgaWYobWF0Y2hlZCA9PSAxKQotICAgIC8qIGFuIGFsdGVybmF0aXZlIG5hbWUgbWF0Y2hlZCB0aGUgc2VydmVyIGhvc3RuYW1lICovCi0gICAgaW5mb2YoZGF0YSwgIlx0IHN1YmplY3RBbHROYW1lOiAlcyBtYXRjaGVkXG4iLCBjb25uLT5ob3N0LmRpc3BuYW1lKTsKLSAgZWxzZSBpZihtYXRjaGVkID09IDApIHsKLSAgICAvKiBhbiBhbHRlcm5hdGl2ZSBuYW1lIGZpZWxkIGV4aXN0ZWQsIGJ1dCBkaWRuJ3QgbWF0Y2ggYW5kIHRoZW4KLSAgICAgICB3ZSBNVVNUIGZhaWwgKi8KLSAgICBpbmZvZihkYXRhLCAiXHQgc3ViamVjdEFsdE5hbWUgZG9lcyBub3QgbWF0Y2ggJXNcbiIsIGNvbm4tPmhvc3QuZGlzcG5hbWUpOworICBpZihtYXRjaGVkKQorICAgIC8qIGFuIGFsdGVybmF0aXZlIG5hbWUgbWF0Y2hlZCAqLworICAgIDsKKyAgZWxzZSBpZihhbHRuYW1lcykgeworICAgIC8qIGFuIGFsdGVybmF0aXZlIG5hbWUgZmllbGQgZXhpc3RlZCwgYnV0IGRpZG4ndCBtYXRjaCBhbmQgdGhlbiB3ZSBNVVNUCisgICAgICAgZmFpbCAqLworICAgIGluZm9mKGRhdGEsICIgc3ViamVjdEFsdE5hbWUgZG9lcyBub3QgbWF0Y2ggJXNcbiIsIGNvbm4tPmhvc3QuZGlzcG5hbWUpOwogICAgIGZhaWxmKGRhdGEsICJTU0w6IG5vIGFsdGVybmF0aXZlIGNlcnRpZmljYXRlIHN1YmplY3QgbmFtZSBtYXRjaGVzICIKICAgICAgICAgICAidGFyZ2V0IGhvc3QgbmFtZSAnJXMnIiwgY29ubi0+aG9zdC5kaXNwbmFtZSk7CiAgICAgcmVzdWx0ID0gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwpAQCAtMTE4Myw3ICsxMTY4LDcgQEAKICAgICAgICBkaXN0aW5ndWlzaGVkIG9uZSB0byBnZXQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgb25lLiAqLwogICAgIGludCBqLCBpPS0xOwogCi0vKiBUaGUgZm9sbG93aW5nIGlzIGRvbmUgYmVjYXVzZSBvZiBhIGJ1ZyBpbiAwLjkuNmIgKi8KKyAgICAvKiBUaGUgZm9sbG93aW5nIGlzIGRvbmUgYmVjYXVzZSBvZiBhIGJ1ZyBpbiAwLjkuNmIgKi8KIAogICAgIHVuc2lnbmVkIGNoYXIgKm51bHN0ciA9ICh1bnNpZ25lZCBjaGFyICopIiI7CiAgICAgdW5zaWduZWQgY2hhciAqcGVlcl9DTiA9IG51bHN0cjsKQEAgLTEyNTUsNyArMTI0MCw3IEBACiAgICAgICByZXN1bHQgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CiAgICAgfQogICAgIGVsc2UgewotICAgICAgaW5mb2YoZGF0YSwgIlx0IGNvbW1vbiBuYW1lOiAlcyAobWF0Y2hlZClcbiIsIHBlZXJfQ04pOworICAgICAgaW5mb2YoZGF0YSwgIiBjb21tb24gbmFtZTogJXMgKG1hdGNoZWQpXG4iLCBwZWVyX0NOKTsKICAgICB9CiAgICAgaWYocGVlcl9DTikKICAgICAgIE9QRU5TU0xfZnJlZShwZWVyX0NOKTsKQEAgLTEyNjUsNyArMTI1MCw3IEBACiB9CiAKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDhmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmIFwKLSAgICAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKKyAgICAhZGVmaW5lZChPUEVOU1NMX05PX09DU1ApCiBzdGF0aWMgQ1VSTGNvZGUgdmVyaWZ5c3RhdHVzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wpCiB7CkBAIC0xMzUxLDcgKzEzMzYsOCBAQAogCiAgICAgQVNOMV9HRU5FUkFMSVpFRFRJTUUgKnJldiwgKnRoaXN1cGQsICpuZXh0dXBkOwogCi0gICAgaWYoIShzaW5nbGUgPSBPQ1NQX3Jlc3BfZ2V0MChiciwgaSkpKQorICAgIHNpbmdsZSA9IE9DU1BfcmVzcF9nZXQwKGJyLCBpKTsKKyAgICBpZighc2luZ2xlKQogICAgICAgY29udGludWU7CiAKICAgICBjZXJ0X3N0YXR1cyA9IE9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzKHNpbmdsZSwgJmNybF9yZWFzb24sICZyZXYsCkBAIC0xNDMyLDggKzE0MTgsMTAgQEAKICAgICAgICAgcmV0dXJuICJDbGllbnQgaGVsbG8iOwogICAgICAgY2FzZSBTU0wzX01UX1NFUlZFUl9IRUxMTzoKICAgICAgICAgcmV0dXJuICJTZXJ2ZXIgaGVsbG8iOworI2lmZGVmIFNTTDNfTVRfTkVXU0VTU0lPTl9USUNLRVQKICAgICAgIGNhc2UgU1NMM19NVF9ORVdTRVNTSU9OX1RJQ0tFVDoKICAgICAgICAgcmV0dXJuICJOZXdzZXNzaW9uIFRpY2tldCI7CisjZW5kaWYKICAgICAgIGNhc2UgU1NMM19NVF9DRVJUSUZJQ0FURToKICAgICAgICAgcmV0dXJuICJDZXJ0aWZpY2F0ZSI7CiAgICAgICBjYXNlIFNTTDNfTVRfU0VSVkVSX0tFWV9FWENIQU5HRToKQEAgLTE0OTAsNyArMTQ3OCw3IEBACiAgIGNoYXIgc3NsX2J1ZlsxMDI0XTsKICAgY2hhciB1bmtub3duWzMyXTsKICAgaW50IG1zZ190eXBlLCB0eHRfbGVuOwotICBjb25zdCBjaGFyICp2ZXJzdHI7CisgIGNvbnN0IGNoYXIgKnZlcnN0ciA9IE5VTEw7CiAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IHVzZXJwOwogCiAgIGlmKCFjb25uIHx8ICFjb25uLT5kYXRhIHx8ICFjb25uLT5kYXRhLT5zZXQuZmRlYnVnIHx8CkBAIC0xNjE4LDEyICsxNjA2LDEyIEBACiAgICh2b2lkKXNzbDsKIAogI2lmZGVmIFVTRV9OR0hUVFAyCi0gIGlmKGNvbm4tPmRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzAgJiYKKyAgaWYoY29ubi0+ZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzIgJiYKICAgICAgIXNlbGVjdF9uZXh0X3Byb3RvY29sKG91dCwgb3V0bGVuLCBpbiwgaW5sZW4sIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKSB7CiAgICAgaW5mb2YoY29ubi0+ZGF0YSwgIk5QTiwgbmVnb3RpYXRlZCBIVFRQMiAoJXMpXG4iLAogICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCk7Ci0gICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOworICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CiAgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOwogICB9CiAjZW5kaWYKQEAgLTE3MDUsNyArMTY5Myw3IEBACiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI6CiAgICAgLyogaXQgd2lsbCBiZSBoYW5kbGVkIGxhdGVyIHdpdGggdGhlIGNvbnRleHQgb3B0aW9ucyAqLwogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDBMKSAmJiBcCi0gICAgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpICYmICFkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQorICAgICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQogICAgIHJlcV9tZXRob2QgPSBUTFNfY2xpZW50X21ldGhvZCgpOwogI2Vsc2UKICAgICByZXFfbWV0aG9kID0gU1NMdjIzX2NsaWVudF9tZXRob2QoKTsKQEAgLTE3MTQsNyArMTcwMiw3IEBACiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYyOgogI2lmZGVmIE9QRU5TU0xfTk9fU1NMMgotICAgIGZhaWxmKGRhdGEsICJPcGVuU1NMIHdhcyBidWlsdCB3aXRob3V0IFNTTHYyIHN1cHBvcnQiKTsKKyAgICBmYWlsZihkYXRhLCBPU1NMX1BBQ0tBR0UgIiB3YXMgYnVpbHQgd2l0aG91dCBTU0x2MiBzdXBwb3J0Iik7CiAgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKICNlbHNlCiAjaWZkZWYgVVNFX1RMU19TUlAKQEAgLTE3MjcsNyArMTcxNSw3IEBACiAjZW5kaWYKICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6CiAjaWZkZWYgT1BFTlNTTF9OT19TU0wzX01FVEhPRAotICAgIGZhaWxmKGRhdGEsICJPcGVuU1NMIHdhcyBidWlsdCB3aXRob3V0IFNTTHYzIHN1cHBvcnQiKTsKKyAgICBmYWlsZihkYXRhLCBPU1NMX1BBQ0tBR0UgIiB3YXMgYnVpbHQgd2l0aG91dCBTU0x2MyBzdXBwb3J0Iik7CiAgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKICNlbHNlCiAjaWZkZWYgVVNFX1RMU19TUlAKQEAgLTE4ODUsMTcgKzE4NzMsMTcgQEAKICAgU1NMX0NUWF9zZXRfb3B0aW9ucyhjb25uc3NsLT5jdHgsIGN0eF9vcHRpb25zKTsKIAogI2lmZGVmIEhBU19OUE4KLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuKQorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfbnBuKQogICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiKGNvbm5zc2wtPmN0eCwgc2VsZWN0X25leHRfcHJvdG9fY2IsIGNvbm4pOwogI2VuZGlmCiAKICNpZmRlZiBIQVNfQUxQTgotICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuKSB7CisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CiAgICAgaW50IGN1ciA9IDA7CiAgICAgdW5zaWduZWQgY2hhciBwcm90b2NvbHNbMTI4XTsKIAogI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkgeworICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CiAgICAgICBwcm90b2NvbHNbY3VyKytdID0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTjsKIAogICAgICAgbWVtY3B5KCZwcm90b2NvbHNbY3VyXSwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELApAQCAtMTk5NSw2ICsxOTgzLDEzIEBACiAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBUEFUSF0gPyBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIXToKICAgICAgICAgICAibm9uZSIpOwogICB9CisjaWZkZWYgQ1VSTF9DQV9GQUxMQkFDSworICBlbHNlIGlmKGRhdGEtPnNldC5zc2wudmVyaWZ5cGVlcikgeworICAgIC8qIHZlcmZ5aW5nIHRoZSBwZWVyIHdpdGhvdXQgYW55IENBIGNlcnRpZmljYXRlcyB3b24ndAorICAgICAgIHdvcmsgc28gdXNlIG9wZW5zc2wncyBidWlsdCBpbiBkZWZhdWx0IGFzIGZhbGxiYWNrICovCisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY29ubnNzbC0+Y3R4KTsKKyAgfQorI2VuZGlmCiAKICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NSTEZJTEVdKSB7CiAgICAgLyogdGVsbCBTU0wgd2hlcmUgdG8gZmluZCBDUkwgZmlsZSB0aGF0IGlzIHVzZWQgdG8gY2hlY2sgY2VydGlmaWNhdGUKQEAgLTIwNjEsNyArMjA1Niw3IEBACiAgIH0KIAogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwOGZMKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkgJiYgXAotICAgICFkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQorICAgICFkZWZpbmVkKE9QRU5TU0xfTk9fT0NTUCkKICAgaWYoZGF0YS0+c2V0LnNzbC52ZXJpZnlzdGF0dXMpCiAgICAgU1NMX3NldF90bHNleHRfc3RhdHVzX3R5cGUoY29ubnNzbC0+aGFuZGxlLCBUTFNFWFRfU1RBVFVTVFlQRV9vY3NwKTsKICNlbmRpZgpAQCAtMjEzNSwzMiArMjEzMCwyNiBAQAogICAgIGVsc2UgewogICAgICAgLyogdW50cmVhdGVkIGVycm9yICovCiAgICAgICB1bnNpZ25lZCBsb25nIGVycmRldGFpbDsKLSAgICAgIGNoYXIgZXJyb3JfYnVmZmVyWzI1Nl07IC8qIE9wZW5TU0wgZG9jdW1lbnRzIHRoYXQgdGhpcyBtdXN0IGJlIGF0IGxlYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTYgYnl0ZXMgbG9uZy4gKi8KKyAgICAgIGNoYXIgZXJyb3JfYnVmZmVyWzI1Nl09IiI7IC8qIE9wZW5TU0wgZG9jdW1lbnRzIHRoYXQgdGhpcyBtdXN0IGJlIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFzdCAyNTYgYnl0ZXMgbG9uZy4gKi8KICAgICAgIENVUkxjb2RlIHJlc3VsdDsKLSAgICAgIGNvbnN0IGNoYXIgKmNlcnRfcHJvYmxlbSA9IE5VTEw7CiAgICAgICBsb25nIGxlcnI7CisgICAgICBpbnQgbGliOworICAgICAgaW50IHJlYXNvbjsKIAotICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzI7IC8qIHRoZSBjb25uZWN0aW9uIGZhaWxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZSdyZSBub3Qgd2FpdGluZyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnl0aGluZyBlbHNlLiAqLworICAgICAgLyogdGhlIGNvbm5lY3Rpb24gZmFpbGVkLCB3ZSdyZSBub3Qgd2FpdGluZyBmb3IgYW55dGhpbmcgZWxzZS4gKi8KKyAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yOwogCi0gICAgICBlcnJkZXRhaWwgPSBFUlJfZ2V0X2Vycm9yKCk7IC8qIEdldHMgdGhlIGVhcmxpZXN0IGVycm9yIGNvZGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkJ3MgZXJyb3IgcXVldWUgYW5kIHJlbW92ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LiAqLworICAgICAgLyogR2V0IHRoZSBlYXJsaWVzdCBlcnJvciBjb2RlIGZyb20gdGhlIHRocmVhZCdzIGVycm9yIHF1ZXVlIGFuZCByZW1vdmVzCisgICAgICAgICB0aGUgZW50cnkuICovCisgICAgICBlcnJkZXRhaWwgPSBFUlJfZ2V0X2Vycm9yKCk7CiAKLSAgICAgIHN3aXRjaChlcnJkZXRhaWwpIHsKLSAgICAgIGNhc2UgMHgxNDA3RTA4NjoKLSAgICAgICAgLyogMTQwN0UwODY6Ci0gICAgICAgICAgIFNTTCByb3V0aW5lczoKLSAgICAgICAgICAgU1NMMl9TRVRfQ0VSVElGSUNBVEU6Ci0gICAgICAgICAgIGNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQgKi8KLSAgICAgICAgLyogZmFsbC10aHJvdWdoICovCi0gICAgICBjYXNlIDB4MTQwOTAwODY6Ci0gICAgICAgIC8qIDE0MDkwMDg2OgotICAgICAgICAgICBTU0wgcm91dGluZXM6Ci0gICAgICAgICAgIFNTTDNfR0VUX1NFUlZFUl9DRVJUSUZJQ0FURToKLSAgICAgICAgICAgY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCAqLworICAgICAgLyogRXh0cmFjdCB3aGljaCBsaWIgYW5kIHJlYXNvbiAqLworICAgICAgbGliID0gRVJSX0dFVF9MSUIoZXJyZGV0YWlsKTsKKyAgICAgIHJlYXNvbiA9IEVSUl9HRVRfUkVBU09OKGVycmRldGFpbCk7CisKKyAgICAgIGlmKChsaWIgPT0gRVJSX0xJQl9TU0wpICYmCisgICAgICAgICAocmVhc29uID09IFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQpKSB7CiAgICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlQ7CiAKICAgICAgICAgbGVyciA9IFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdChjb25uc3NsLT5oYW5kbGUpOwpAQCAtMjE3MCwxNCArMjE1OSwxMyBAQAogICAgICAgICAgICAgICAgICAgIFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKGxlcnIpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgY2VydF9wcm9ibGVtID0gIlNTTCBjZXJ0aWZpY2F0ZSBwcm9ibGVtLCB2ZXJpZnkgdGhhdCB0aGUgQ0EgY2VydCBpcyIKLSAgICAgICAgICAgICIgT0suIjsKLQotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgLyogc3RyY3B5KCkgaXMgZmluZSBoZXJlIGFzIGxvbmcgYXMgdGhlIHN0cmluZyBmaXRzIHdpdGhpbgorICAgICAgICAgICAgIGVycm9yX2J1ZmZlciAqLworICAgICAgICAgIHN0cmNweShlcnJvcl9idWZmZXIsICJTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGZhaWxlZCIpOworICAgICAgfQorICAgICAgZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwogICAgICAgICBTU0xfc3RyZXJyb3IoZXJyZGV0YWlsLCBlcnJvcl9idWZmZXIsIHNpemVvZihlcnJvcl9idWZmZXIpKTsKLSAgICAgICAgYnJlYWs7CiAgICAgICB9CiAKICAgICAgIC8qIGRldGFpbCBpcyBhbHJlYWR5IHNldCB0byB0aGUgU1NMIGVycm9yIGFib3ZlICovCkBAIC0yMTkzLDcgKzIxODEsNyBAQAogICAgICAgfQogCiAgICAgICAvKiBDb3VsZCBiZSBhIENFUlQgcHJvYmxlbSAqLwotICAgICAgZmFpbGYoZGF0YSwgIiVzJXMiLCBjZXJ0X3Byb2JsZW0gPyBjZXJ0X3Byb2JsZW0gOiAiIiwgZXJyb3JfYnVmZmVyKTsKKyAgICAgIGZhaWxmKGRhdGEsICIlcyIsIGVycm9yX2J1ZmZlcik7CiAKICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMjIxMSw3ICsyMTk5LDcgQEAKICAgICAvKiBTZXRzIGRhdGEgYW5kIGxlbiB0byBuZWdvdGlhdGVkIHByb3RvY29sLCBsZW4gaXMgMCBpZiBubyBwcm90b2NvbCB3YXMKICAgICAgKiBuZWdvdGlhdGVkCiAgICAgICovCi0gICAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICAgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CiAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBuZWdfcHJvdG9jb2w7CiAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgU1NMX2dldDBfYWxwbl9zZWxlY3RlZChjb25uc3NsLT5oYW5kbGUsICZuZWdfcHJvdG9jb2wsICZsZW4pOwpAQCAtMjIyMSw3ICsyMjA5LDcgQEAKICNpZmRlZiBVU0VfTkdIVFRQMgogICAgICAgICBpZihsZW4gPT0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTiAmJgogICAgICAgICAgICAhbWVtY21wKE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwgbmVnX3Byb3RvY29sLCBsZW4pKSB7Ci0gICAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOworICAgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogI2VuZGlmCkBAIC0yMjU0LDQ1ICsyMjQyLDQzIEBACiAgIHJldHVybiAwOwogfQogCisjZGVmaW5lIHB1c2hfY2VydGluZm8oX2xhYmVsLCBfbnVtKSBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBsb25nIGluZm9fbGVuID0gQklPX2dldF9tZW1fZGF0YShtZW0sICZwdHIpOyBcCisgIEN1cmxfc3NsX3B1c2hfY2VydGluZm9fbGVuKGRhdGEsIF9udW0sIF9sYWJlbCwgcHRyLCBpbmZvX2xlbik7IFwKKyAgaWYoMSE9QklPX3Jlc2V0KG1lbSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IFdISUxFX0ZBTFNFCisKIHN0YXRpYyB2b2lkIHB1YmtleV9zaG93KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgQklPICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyYXcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgQklHTlVNICpibikKIHsKLSAgc2l6ZV90IGxlZnQ7Ci0gIGludCBpOworICBjaGFyICpwdHI7CiAgIGNoYXIgbmFtZWJ1ZlszMl07Ci0gIGNoYXIgKmJ1ZmZlcjsKIAotICBsZWZ0ID0gbGVuKjMgKyAxOwotICBidWZmZXIgPSBtYWxsb2MobGVmdCk7Ci0gIGlmKGJ1ZmZlcikgewotICAgIGNoYXIgKnB0cj1idWZmZXI7Ci0gICAgc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAiJXMoJXMpIiwgdHlwZSwgbmFtZSk7Ci0gICAgZm9yKGk9MDsgaTwgbGVuOyBpKyspIHsKLSAgICAgIHNucHJpbnRmKHB0ciwgbGVmdCwgIiUwMng6IiwgcmF3W2ldKTsKLSAgICAgIHB0ciArPSAzOwotICAgICAgbGVmdCAtPSAzOwotICAgIH0KLSAgICBpbmZvZihkYXRhLCAiICAgJXM6ICVzXG4iLCBuYW1lYnVmLCBidWZmZXIpOwotICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgbnVtLCBuYW1lYnVmLCBidWZmZXIpOwotICAgIGZyZWUoYnVmZmVyKTsKLSAgfQorICBzbnByaW50ZihuYW1lYnVmLCBzaXplb2YobmFtZWJ1ZiksICIlcyglcykiLCB0eXBlLCBuYW1lKTsKKworICBpZihibikKKyAgICBCTl9wcmludChtZW0sIGJuKTsKKyAgcHVzaF9jZXJ0aW5mbyhuYW1lYnVmLCBudW0pOwogfQogCisjaWZkZWYgSEFWRV9PUEFRVUVfUlNBX0RTQV9ESAorI2RlZmluZSBwcmludF9wdWJrZXlfQk4oX3R5cGUsIF9uYW1lLCBfbnVtKSAgICAgICAgICAgICAgXAorICBwdWJrZXlfc2hvdyhkYXRhLCBtZW0sIF9udW0sICNfdHlwZSwgI19uYW1lLCBfbmFtZSkKKworI2Vsc2UKICNkZWZpbmUgcHJpbnRfcHVia2V5X0JOKF90eXBlLCBfbmFtZSwgX251bSkgICAgXAogZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYocHVia2V5LT5wa2V5Ll90eXBlLT5fbmFtZSkgeyBcCi0gICAgaW50IGxlbiA9IEJOX251bV9ieXRlcyhwdWJrZXktPnBrZXkuX3R5cGUtPl9uYW1lKTsgIFwKLSAgICBpZihsZW4gPCBDRVJUQlVGRkVSU0laRSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEJOX2JuMmJpbihwdWJrZXktPnBrZXkuX3R5cGUtPl9uYW1lLCAodW5zaWduZWQgY2hhciopYnVmcCk7IFwKLSAgICAgIGJ1ZnBbbGVuXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHB1YmtleV9zaG93KGRhdGEsIF9udW0sICNfdHlwZSwgI19uYW1lLCAodW5zaWduZWQgY2hhciopYnVmcCwgbGVuKTsgXAotICAgIH0gXAorICBpZihfdHlwZS0+X25hbWUpIHsgXAorICAgIHB1YmtleV9zaG93KGRhdGEsIG1lbSwgX251bSwgI190eXBlLCAjX25hbWUsIF90eXBlLT5fbmFtZSk7IFwKICAgfSBcCiB9IFdISUxFX0ZBTFNFCisjZW5kaWYKIAogc3RhdGljIGludCBYNTA5VjNfZXh0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgIGludCBjZXJ0bnVtLApAQCAtMjMwMSwxMSArMjI4NywxMSBAQAogICBpbnQgaTsKICAgc2l6ZV90IGo7CiAKLSAgaWYoc2tfWDUwOV9FWFRFTlNJT05fbnVtKGV4dHMpIDw9IDApCisgIGlmKChpbnQpc2tfWDUwOV9FWFRFTlNJT05fbnVtKGV4dHMpIDw9IDApCiAgICAgLyogbm8gZXh0ZW5zaW9ucywgYmFpbCBvdXQgKi8KICAgICByZXR1cm4gMTsKIAotICBmb3IoaT0wOyBpPHNrX1g1MDlfRVhURU5TSU9OX251bShleHRzKTsgaSsrKSB7CisgIGZvcihpPTA7IGkgPCAoaW50KXNrX1g1MDlfRVhURU5TSU9OX251bShleHRzKTsgaSsrKSB7CiAgICAgQVNOMV9PQkpFQ1QgKm9iajsKICAgICBYNTA5X0VYVEVOU0lPTiAqZXh0ID0gc2tfWDUwOV9FWFRFTlNJT05fdmFsdWUoZXh0cywgaSk7CiAgICAgQlVGX01FTSAqYmlvbWVtOwpAQCAtMjMyMSwxOCArMjMwNywxMiBAQAogCiAgICAgYXNuMV9vYmplY3RfZHVtcChvYmosIG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSk7CiAKLSAgICBpbmZvZihkYXRhLCAiJXM6ICVzXG4iLCBuYW1lYnVmLAotICAgICAgICAgIFg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbChleHQpPyIoY3JpdGljYWwpIjoiIik7Ci0KICAgICBpZighWDUwOVYzX0VYVF9wcmludChiaW9fb3V0LCBleHQsIDAsIDApKQogICAgICAgQVNOMV9TVFJJTkdfcHJpbnQoYmlvX291dCwgKEFTTjFfU1RSSU5HICopWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGEoZXh0KSk7CiAKICAgICBCSU9fZ2V0X21lbV9wdHIoYmlvX291dCwgJmJpb21lbSk7CiAKLSAgICAvKiBiaW9tZW0tPmxlbmd0aCBieXRlcyBhdCBiaW9tZW0tPmRhdGEsIHRoaXMgbGl0dGxlIGxvb3AgaGVyZSBpcyBvbmx5Ci0gICAgICAgZG9uZSBmb3IgdGhlIGluZm9mKCkgY2FsbCwgd2Ugc2VuZCB0aGUgInJhdyIgZGF0YSB0byB0aGUgY2VydGluZm8KLSAgICAgICBmdW5jdGlvbiAqLwotICAgIGZvcihqPTA7IGo8KHNpemVfdCliaW9tZW0tPmxlbmd0aDsgaisrKSB7CisgICAgZm9yKGogPSAwOyBqIDwgKHNpemVfdCliaW9tZW0tPmxlbmd0aDsgaisrKSB7CiAgICAgICBjb25zdCBjaGFyICpzZXA9IiI7CiAgICAgICBpZihiaW9tZW0tPmRhdGFbal0gPT0gJ1xuJykgewogICAgICAgICBzZXA9IiwgIjsKQEAgLTIzNDQsNyArMjMyNCw2IEBACiAgICAgICAgIHB0cis9c25wcmludGYocHRyLCBzaXplb2YoYnVmKS0ocHRyLWJ1ZiksICIlcyVjIiwgc2VwLAogICAgICAgICAgICAgICAgICAgICAgIGJpb21lbS0+ZGF0YVtqXSk7CiAgICAgfQotICAgIGluZm9mKGRhdGEsICIgICVzXG4iLCBidWYpOwogCiAgICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBjZXJ0bnVtLCBuYW1lYnVmLCBidWYpOwogCkBAIC0yMzU0LDQ2ICsyMzMzLDYgQEAKICAgcmV0dXJuIDA7IC8qIGFsbCBpcyBmaW5lICovCiB9CiAKLQotc3RhdGljIHZvaWQgWDUwOV9zaWduYXR1cmUoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtY2VydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTjFfU1RSSU5HICpzaWcpCi17Ci0gIGNoYXIgYnVmWzEwMjRdOwotICBjaGFyICpwdHIgPSBidWY7Ci0gIGludCBpOwotCi0gIGZvcihpPTA7IGk8c2lnLT5sZW5ndGg7IGkrKykKLSAgICBwdHIrPXNucHJpbnRmKHB0ciwgc2l6ZW9mKGJ1ZiktKHB0ci1idWYpLCAiJTAyeDoiLCBzaWctPmRhdGFbaV0pOwotCi0gIGluZm9mKGRhdGEsICIgU2lnbmF0dXJlOiAlc1xuIiwgYnVmKTsKLSAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBudW1jZXJ0LCAiU2lnbmF0dXJlIiwgYnVmKTsKLX0KLQotc3RhdGljIHZvaWQgZHVtcGNlcnQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIFg1MDkgKngsIGludCBudW1jZXJ0KQotewotICBCSU8gKmJpb19vdXQgPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKLSAgQlVGX01FTSAqYmlvbWVtOwotCi0gIC8qIHRoaXMgb3V0cHV0cyB0aGUgY2VydCBpbiB0aGlzIDY0IGNvbHVtbiB3aWRlIHN0eWxlIHdpdGggbmV3bGluZXMgYW5kCi0gICAgIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLSB0ZXh0cyBhbmQgbW9yZSAqLwotICBQRU1fd3JpdGVfYmlvX1g1MDkoYmlvX291dCwgeCk7Ci0KLSAgQklPX2dldF9tZW1fcHRyKGJpb19vdXQsICZiaW9tZW0pOwotCi0gIEN1cmxfc3NsX3B1c2hfY2VydGluZm9fbGVuKGRhdGEsIG51bWNlcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDZXJ0IiwgYmlvbWVtLT5kYXRhLCBiaW9tZW0tPmxlbmd0aCk7Ci0KLSAgQklPX2ZyZWUoYmlvX291dCk7Ci19Ci0KLS8qCi0gKiBUaGlzIHNpemUgd2FzIHByZXZpb3VzbHkgNTEyIHdoaWNoIGhhcyBiZWVuIHJlcG9ydGVkICJ0b28gc21hbGwiIHdpdGhvdXQKLSAqIGFueSBzcGVjaWZpY3MsIHNvIGl0IHdhcyBlbmxhcmdlZCB0byBhbGxvdyBtb3JlIGRhdGEgdG8gZ2V0IHNob3duIHVuY3V0LgotICogVGhlICJwZXJmZWN0IiBzaXplIGlzIHlldCB0byBmaWd1cmUgb3V0LgotICovCi0jZGVmaW5lIENFUlRCVUZGRVJTSVpFIDgxOTIKLQogc3RhdGljIENVUkxjb2RlIGdldF9jZXJ0X2NoYWluKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCkKIApAQCAtMjQwMSwxNyArMjM0MCwxMiBAQAogICBDVVJMY29kZSByZXN1bHQ7CiAgIFNUQUNLX09GKFg1MDkpICpzazsKICAgaW50IGk7Ci0gIGNoYXIgKmJ1ZnA7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKICAgaW50IG51bWNlcnRzOwotCi0gIGJ1ZnAgPSBtYWxsb2MoQ0VSVEJVRkZFUlNJWkUpOwotICBpZighYnVmcCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgQklPICptZW07CiAKICAgc2sgPSBTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihjb25uc3NsLT5oYW5kbGUpOwogICBpZighc2spIHsKLSAgICBmcmVlKGJ1ZnApOwogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAKQEAgLTI0MTksOTkgKzIzNTMsMTIyIEBACiAKICAgcmVzdWx0ID0gQ3VybF9zc2xfaW5pdF9jZXJ0aW5mbyhkYXRhLCBudW1jZXJ0cyk7CiAgIGlmKHJlc3VsdCkgewotICAgIGZyZWUoYnVmcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogCi0gIGluZm9mKGRhdGEsICItLS0gQ2VydGlmaWNhdGUgY2hhaW5cbiIpOwotICBmb3IoaT0wOyBpPG51bWNlcnRzOyBpKyspIHsKLSAgICBsb25nIHZhbHVlOworICBtZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKworICBmb3IoaSA9IDA7IGkgPCBudW1jZXJ0czsgaSsrKSB7CiAgICAgQVNOMV9JTlRFR0VSICpudW07Ci0gICAgQVNOMV9USU1FICpjZXJ0ZGF0ZTsKLQotICAgIC8qIGdldCB0aGUgY2VydHMgaW4gImltcG9ydGFuY2Ugb3JkZXIiICovCi0jaWYgMAotICAgIFg1MDkgKnggPSBza19YNTA5X3ZhbHVlKHNrLCBudW1jZXJ0cyAtIGkgLSAxKTsKLSNlbHNlCiAgICAgWDUwOSAqeCA9IHNrX1g1MDlfdmFsdWUoc2ssIGkpOwotI2VuZGlmCi0KLSAgICBYNTA5X0NJTkYgKmNpbmY7CiAgICAgRVZQX1BLRVkgKnB1YmtleT1OVUxMOwogICAgIGludCBqOwogICAgIGNoYXIgKnB0cjsKKyAgICBBU04xX0JJVF9TVFJJTkcgKnBzaWcgPSBOVUxMOwogCi0gICAgKHZvaWQpeDUwOV9uYW1lX29uZWxpbmUoWDUwOV9nZXRfc3ViamVjdF9uYW1lKHgpLCBidWZwLCBDRVJUQlVGRkVSU0laRSk7Ci0gICAgaW5mb2YoZGF0YSwgIiUyZCBTdWJqZWN0OiAlc1xuIiwgaSwgYnVmcCk7Ci0gICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiU3ViamVjdCIsIGJ1ZnApOworICAgIFg1MDlfTkFNRV9wcmludF9leChtZW0sIFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh4KSwgMCwgWE5fRkxBR19PTkVMSU5FKTsKKyAgICBwdXNoX2NlcnRpbmZvKCJTdWJqZWN0IiwgaSk7CiAKLSAgICAodm9pZCl4NTA5X25hbWVfb25lbGluZShYNTA5X2dldF9pc3N1ZXJfbmFtZSh4KSwgYnVmcCwgQ0VSVEJVRkZFUlNJWkUpOwotICAgIGluZm9mKGRhdGEsICIgICBJc3N1ZXI6ICVzXG4iLCBidWZwKTsKLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJJc3N1ZXIiLCBidWZwKTsKKyAgICBYNTA5X05BTUVfcHJpbnRfZXgobWVtLCBYNTA5X2dldF9pc3N1ZXJfbmFtZSh4KSwgMCwgWE5fRkxBR19PTkVMSU5FKTsKKyAgICBwdXNoX2NlcnRpbmZvKCJJc3N1ZXIiLCBpKTsKIAotICAgIHZhbHVlID0gWDUwOV9nZXRfdmVyc2lvbih4KTsKLSAgICBpbmZvZihkYXRhLCAiICAgVmVyc2lvbjogJWx1ICgweCVseClcbiIsIHZhbHVlKzEsIHZhbHVlKTsKLSAgICBzbnByaW50ZihidWZwLCBDRVJUQlVGRkVSU0laRSwgIiVseCIsIHZhbHVlKTsKLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJWZXJzaW9uIiwgYnVmcCk7IC8qIGhleCAqLworICAgIEJJT19wcmludGYobWVtLCAiJWx4IiwgWDUwOV9nZXRfdmVyc2lvbih4KSk7CisgICAgcHVzaF9jZXJ0aW5mbygiVmVyc2lvbiIsIGkpOwogCi0gICAgbnVtPVg1MDlfZ2V0X3NlcmlhbE51bWJlcih4KTsKKyAgICBudW0gPSBYNTA5X2dldF9zZXJpYWxOdW1iZXIoeCk7CisgICAgaWYobnVtLT50eXBlID09IFZfQVNOMV9ORUdfSU5URUdFUikKKyAgICAgIEJJT19wdXRzKG1lbSwgIi0iKTsKKyAgICBmb3IoaiA9IDA7IGogPCBudW0tPmxlbmd0aDsgaisrKQorICAgICAgQklPX3ByaW50ZihtZW0sICIlMDJ4IiwgbnVtLT5kYXRhW2pdKTsKKyAgICBwdXNoX2NlcnRpbmZvKCJTZXJpYWwgTnVtYmVyIiwgaSk7CisKKyNpZiBkZWZpbmVkKEhBVkVfWDUwOV9HRVQwX1NJR05BVFVSRSkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUMF9FWFRFTlNJT05TKQogICAgIHsKLSAgICAgIGludCBsZWZ0ID0gQ0VSVEJVRkZFUlNJWkU7CisgICAgICBYNTA5X0FMR09SICpwYWxnID0gTlVMTDsKKyAgICAgIEFTTjFfU1RSSU5HICphID0gQVNOMV9TVFJJTkdfbmV3KCk7CisgICAgICBpZihhKSB7CisgICAgICAgIFg1MDlfZ2V0MF9zaWduYXR1cmUoJnBzaWcsICZwYWxnLCB4KTsKKyAgICAgICAgWDUwOV9zaWduYXR1cmVfcHJpbnQobWVtLCBwYWxnLCBhKTsKKyAgICAgICAgQVNOMV9TVFJJTkdfZnJlZShhKTsKIAotICAgICAgcHRyID0gYnVmcDsKLSAgICAgIGlmKG51bS0+dHlwZSA9PSBWX0FTTjFfTkVHX0lOVEVHRVIpIHsKLSAgICAgICAgKnB0cisrPSctJzsKLSAgICAgICAgbGVmdC0tOworICAgICAgICBpZihwYWxnKSB7CisgICAgICAgICAgaTJhX0FTTjFfT0JKRUNUKG1lbSwgcGFsZy0+YWxnb3JpdGhtKTsKKyAgICAgICAgICBwdXNoX2NlcnRpbmZvKCJQdWJsaWMgS2V5IEFsZ29yaXRobSIsIGkpOworICAgICAgICB9CiAgICAgICB9Ci0KLSAgICAgIGZvcihqPTA7IChqPG51bS0+bGVuZ3RoKSAmJiAobGVmdD49Myk7IGorKykgewotICAgICAgICBzbnByaW50ZihwdHIsIGxlZnQsICIlMDJ4IiwgbnVtLT5kYXRhW2pdKTsKLSAgICAgICAgcHRyICs9IDI7Ci0gICAgICAgIGxlZnQgLT0gMjsKLSAgICAgIH0KLSAgICAgIGlmKG51bS0+bGVuZ3RoKQotICAgICAgICBpbmZvZihkYXRhLCAiICAgU2VyaWFsIE51bWJlcjogJXNcbiIsIGJ1ZnApOwotICAgICAgZWxzZQotICAgICAgICBidWZwWzBdPTA7CisgICAgICBYNTA5VjNfZXh0KGRhdGEsIGksIFg1MDlfZ2V0MF9leHRlbnNpb25zKHgpKTsKICAgICB9Ci0gICAgaWYoYnVmcFswXSkKLSAgICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlNlcmlhbCBOdW1iZXIiLCBidWZwKTsgLyogaGV4ICovCisjZWxzZQorICAgIHsKKyAgICAgIC8qIGJlZm9yZSBPcGVuU1NMIDEuMC4yICovCisgICAgICBYNTA5X0NJTkYgKmNpbmYgPSB4LT5jZXJ0X2luZm87CiAKLSAgICBjaW5mID0geC0+Y2VydF9pbmZvOworICAgICAgaTJhX0FTTjFfT0JKRUNUKG1lbSwgY2luZi0+c2lnbmF0dXJlLT5hbGdvcml0aG0pOworICAgICAgcHVzaF9jZXJ0aW5mbygiU2lnbmF0dXJlIEFsZ29yaXRobSIsIGkpOwogCi0gICAgaiA9IGFzbjFfb2JqZWN0X2R1bXAoY2luZi0+c2lnbmF0dXJlLT5hbGdvcml0aG0sIGJ1ZnAsIENFUlRCVUZGRVJTSVpFKTsKLSAgICBpZighaikgewotICAgICAgaW5mb2YoZGF0YSwgIiAgIFNpZ25hdHVyZSBBbGdvcml0aG06ICVzXG4iLCBidWZwKTsKLSAgICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlNpZ25hdHVyZSBBbGdvcml0aG0iLCBidWZwKTsKKyAgICAgIGkyYV9BU04xX09CSkVDVChtZW0sIGNpbmYtPmtleS0+YWxnb3ItPmFsZ29yaXRobSk7CisgICAgICBwdXNoX2NlcnRpbmZvKCJQdWJsaWMgS2V5IEFsZ29yaXRobSIsIGkpOworCisgICAgICBYNTA5VjNfZXh0KGRhdGEsIGksIGNpbmYtPmV4dGVuc2lvbnMpOworCisgICAgICBwc2lnID0geC0+c2lnbmF0dXJlOwogICAgIH0KKyNlbmRpZgogCi0gICAgY2VydGRhdGUgPSBYNTA5X2dldF9ub3RCZWZvcmUoeCk7Ci0gICAgYXNuMV9vdXRwdXQoY2VydGRhdGUsIGJ1ZnAsIENFUlRCVUZGRVJTSVpFKTsKLSAgICBpbmZvZihkYXRhLCAiICAgU3RhcnQgZGF0ZTogJXNcbiIsIGJ1ZnApOwotICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlN0YXJ0IGRhdGUiLCBidWZwKTsKKyAgICBBU04xX1RJTUVfcHJpbnQobWVtLCBYNTA5X2dldF9ub3RCZWZvcmUoeCkpOworICAgIHB1c2hfY2VydGluZm8oIlN0YXJ0IGRhdGUiLCBpKTsKIAotICAgIGNlcnRkYXRlID0gWDUwOV9nZXRfbm90QWZ0ZXIoeCk7Ci0gICAgYXNuMV9vdXRwdXQoY2VydGRhdGUsIGJ1ZnAsIENFUlRCVUZGRVJTSVpFKTsKLSAgICBpbmZvZihkYXRhLCAiICAgRXhwaXJlIGRhdGU6ICVzXG4iLCBidWZwKTsKLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJFeHBpcmUgZGF0ZSIsIGJ1ZnApOwotCi0gICAgaiA9IGFzbjFfb2JqZWN0X2R1bXAoY2luZi0+a2V5LT5hbGdvci0+YWxnb3JpdGhtLCBidWZwLCBDRVJUQlVGRkVSU0laRSk7Ci0gICAgaWYoIWopIHsKLSAgICAgIGluZm9mKGRhdGEsICIgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogJXNcbiIsIGJ1ZnApOwotICAgICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiUHVibGljIEtleSBBbGdvcml0aG0iLCBidWZwKTsKLSAgICB9CisgICAgQVNOMV9USU1FX3ByaW50KG1lbSwgWDUwOV9nZXRfbm90QWZ0ZXIoeCkpOworICAgIHB1c2hfY2VydGluZm8oIkV4cGlyZSBkYXRlIiwgaSk7CiAKICAgICBwdWJrZXkgPSBYNTA5X2dldF9wdWJrZXkoeCk7CiAgICAgaWYoIXB1YmtleSkKICAgICAgIGluZm9mKGRhdGEsICIgICBVbmFibGUgdG8gbG9hZCBwdWJsaWMga2V5XG4iKTsKICAgICBlbHNlIHsKLSAgICAgIHN3aXRjaChwdWJrZXktPnR5cGUpIHsKKyAgICAgIGludCBwa3R5cGU7CisjaWZkZWYgSEFWRV9PUEFRVUVfRVZQX1BLRVkKKyAgICAgIHBrdHlwZSA9IEVWUF9QS0VZX2lkKHB1YmtleSk7CisjZWxzZQorICAgICAgcGt0eXBlID0gcHVia2V5LT50eXBlOworI2VuZGlmCisgICAgICBzd2l0Y2gocGt0eXBlKSB7CiAgICAgICBjYXNlIEVWUF9QS0VZX1JTQToKLSAgICAgICAgaW5mb2YoZGF0YSwgICIgICBSU0EgUHVibGljIEtleSAoJWQgYml0cylcbiIsCi0gICAgICAgICAgICAgIEJOX251bV9iaXRzKHB1YmtleS0+cGtleS5yc2EtPm4pKTsKLSAgICAgICAgc25wcmludGYoYnVmcCwgQ0VSVEJVRkZFUlNJWkUsICIlZCIsIEJOX251bV9iaXRzKHB1YmtleS0+cGtleS5yc2EtPm4pKTsKLSAgICAgICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiUlNBIFB1YmxpYyBLZXkiLCBidWZwKTsKKyAgICAgIHsKKyAgICAgICAgUlNBICpyc2E7CisjaWZkZWYgSEFWRV9PUEFRVUVfRVZQX1BLRVkKKyAgICAgICAgcnNhID0gRVZQX1BLRVlfZ2V0MF9SU0EocHVia2V5KTsKKyNlbHNlCisgICAgICAgIHJzYSA9IHB1YmtleS0+cGtleS5yc2E7CisjZW5kaWYKIAorI2lmZGVmIEhBVkVfT1BBUVVFX1JTQV9EU0FfREgKKyAgICAgICAgeworICAgICAgICAgIEJJR05VTSAqbjsKKyAgICAgICAgICBCSUdOVU0gKmU7CisgICAgICAgICAgQklHTlVNICpkOworICAgICAgICAgIEJJR05VTSAqcDsKKyAgICAgICAgICBCSUdOVU0gKnE7CisgICAgICAgICAgQklHTlVNICpkbXAxOworICAgICAgICAgIEJJR05VTSAqZG1xMTsKKyAgICAgICAgICBCSUdOVU0gKmlxbXA7CisKKyAgICAgICAgICBSU0FfZ2V0MF9rZXkocnNhLCAmbiwgJmUsICZkKTsKKyAgICAgICAgICBSU0FfZ2V0MF9mYWN0b3JzKHJzYSwgJnAsICZxKTsKKyAgICAgICAgICBSU0FfZ2V0MF9jcnRfcGFyYW1zKHJzYSwgJmRtcDEsICZkbXExLCAmaXFtcCk7CisgICAgICAgICAgQk5fcHJpbnQobWVtLCBuKTsKKyAgICAgICAgICBwdXNoX2NlcnRpbmZvKCJSU0EgUHVibGljIEtleSIsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIG4sIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGUsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGQsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIHAsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIHEsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGRtcDEsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGRtcTEsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGlxbXAsIGkpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBCSU9fcHJpbnRmKG1lbSwgIiVkIiwgQk5fbnVtX2JpdHMocnNhLT5uKSk7CisgICAgICAgIHB1c2hfY2VydGluZm8oIlJTQSBQdWJsaWMgS2V5IiwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIG4sIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBlLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgZCwgaSk7CkBAIC0yNTIwLDIwICsyNDc3LDc1IEBACiAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGRtcDEsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBkbXExLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgaXFtcCwgaSk7CisjZW5kaWYKKwogICAgICAgICBicmVhazsKKyAgICAgIH0KICAgICAgIGNhc2UgRVZQX1BLRVlfRFNBOgorICAgICAgeworICAgICAgICBEU0EgKmRzYTsKKyNpZmRlZiBIQVZFX09QQVFVRV9FVlBfUEtFWQorICAgICAgICBkc2EgPSBFVlBfUEtFWV9nZXQwX0RTQShwdWJrZXkpOworI2Vsc2UKKyAgICAgICAgZHNhID0gcHVia2V5LT5wa2V5LmRzYTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfT1BBUVVFX1JTQV9EU0FfREgKKyAgICAgICAgeworICAgICAgICAgIEJJR05VTSAqcDsKKyAgICAgICAgICBCSUdOVU0gKnE7CisgICAgICAgICAgQklHTlVNICpnOworICAgICAgICAgIEJJR05VTSAqcHJpdl9rZXk7CisgICAgICAgICAgQklHTlVNICpwdWJfa2V5OworCisgICAgICAgICAgRFNBX2dldDBfcHFnKGRzYSwgJnAsICZxLCAmZyk7CisgICAgICAgICAgRFNBX2dldDBfa2V5KGRzYSwgJnB1Yl9rZXksICZwcml2X2tleSk7CisKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBwLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBxLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBnLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBwcml2X2tleSwgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcHViX2tleSwgaSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIHByaW50X3B1YmtleV9CTihkc2EsIHAsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBxLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgZywgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihkc2EsIHByaXZfa2V5LCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcHViX2tleSwgaSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBjYXNlIEVWUF9QS0VZX0RIOgorICAgICAgeworICAgICAgICBESCAqZGg7CisjaWZkZWYgSEFWRV9PUEFRVUVfRVZQX1BLRVkKKyAgICAgICAgZGggPSBFVlBfUEtFWV9nZXQwX0RIKHB1YmtleSk7CisjZWxzZQorICAgICAgICBkaCA9IHB1YmtleS0+cGtleS5kaDsKKyNlbmRpZgorI2lmZGVmIEhBVkVfT1BBUVVFX1JTQV9EU0FfREgKKyAgICAgICAgeworICAgICAgICAgIEJJR05VTSAqcDsKKyAgICAgICAgICBCSUdOVU0gKnE7CisgICAgICAgICAgQklHTlVNICpnOworICAgICAgICAgIEJJR05VTSAqcHJpdl9rZXk7CisgICAgICAgICAgQklHTlVNICpwdWJfa2V5OworICAgICAgICAgIERIX2dldDBfcHFnKGRoLCAmcCwgJnEsICZnKTsKKyAgICAgICAgICBESF9nZXQwX2tleShkaCwgJnB1Yl9rZXksICZwcml2X2tleSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZGgsIHEsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihkaCwgZywgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwcml2X2tleSwgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwdWJfa2V5LCBpKTsKKyAgICAgICB9CisjZWxzZQogICAgICAgICBwcmludF9wdWJrZXlfQk4oZGgsIHAsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4oZGgsIGcsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4oZGgsIHByaXZfa2V5LCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwdWJfa2V5LCBpKTsKKyNlbmRpZgogICAgICAgICBicmVhazsKKyAgICAgIH0KICNpZiAwCiAgICAgICBjYXNlIEVWUF9QS0VZX0VDOiAvKiBzeW1ib2wgbm90IHByZXNlbnQgaW4gT3BlblNTTCAwLjkuNiAqLwogICAgICAgICAvKiBsZWZ0IFRPRE8gKi8KQEAgLTI1NDMsMTQgKzI1NTUsMTcgQEAKICAgICAgIEVWUF9QS0VZX2ZyZWUocHVia2V5KTsKICAgICB9CiAKLSAgICBYNTA5VjNfZXh0KGRhdGEsIGksIGNpbmYtPmV4dGVuc2lvbnMpOworICAgIGlmKHBzaWcpIHsKKyAgICAgIGZvcihqID0gMDsgaiA8IHBzaWctPmxlbmd0aDsgaisrKQorICAgICAgICBCSU9fcHJpbnRmKG1lbSwgIiUwMng6IiwgcHNpZy0+ZGF0YVtqXSk7CisgICAgICBwdXNoX2NlcnRpbmZvKCJTaWduYXR1cmUiLCBpKTsKKyAgICB9CiAKLSAgICBYNTA5X3NpZ25hdHVyZShkYXRhLCBpLCB4LT5zaWduYXR1cmUpOwotCi0gICAgZHVtcGNlcnQoZGF0YSwgeCwgaSk7CisgICAgUEVNX3dyaXRlX2Jpb19YNTA5KG1lbSwgeCk7CisgICAgcHVzaF9jZXJ0aW5mbygiQ2VydCIsIGkpOwogICB9CiAKLSAgZnJlZShidWZwKTsKKyAgQklPX2ZyZWUobWVtKTsKIAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CkBAIC0yNTU5LDcgKzI1NzQsOCBAQAogICogSGVhdmlseSBtb2RpZmllZCBmcm9tOgogICogaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9DZXJ0aWZpY2F0ZV9hbmRfUHVibGljX0tleV9QaW5uaW5nI09wZW5TU0wKICAqLwotc3RhdGljIENVUkxjb2RlIHBrcF9waW5fcGVlcl9wdWJrZXkoWDUwOSogY2VydCwgY29uc3QgY2hhciAqcGlubmVkcHVia2V5KQorc3RhdGljIENVUkxjb2RlIHBrcF9waW5fcGVlcl9wdWJrZXkoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIFg1MDkqIGNlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwaW5uZWRwdWJrZXkpCiB7CiAgIC8qIFNjcmF0Y2ggKi8KICAgaW50IGxlbjEgPSAwLCBsZW4yID0gMDsKQEAgLTI2MDQsNyArMjYyMCw3IEBACiAgICAgLyogRW5kIEd5cmF0aW9ucyAqLwogCiAgICAgLyogVGhlIG9uZSBnb29kIGV4aXQgcG9pbnQgKi8KLSAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShwaW5uZWRwdWJrZXksIGJ1ZmYxLCBsZW4xKTsKKyAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLCBwaW5uZWRwdWJrZXksIGJ1ZmYxLCBsZW4xKTsKICAgfSB3aGlsZSgwKTsKIAogICAvKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9idWZmZXIuaHRtbCAqLwpAQCAtMjYyOCwxMyArMjY0NCwxMyBAQAogewogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgaW50IHJjOwotICBsb25nIGxlcnI7Ci0gIEFTTjFfVElNRSAqY2VydGRhdGU7CisgIGxvbmcgbGVyciwgbGVuOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIFg1MDkgKmlzc3VlcjsKICAgRklMRSAqZnA7CiAgIGNoYXIgKmJ1ZmZlciA9IGRhdGEtPnN0YXRlLmJ1ZmZlcjsKICAgY29uc3QgY2hhciAqcHRyOworICBCSU8gKm1lbSA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwogCiAgIGlmKGRhdGEtPnNldC5zc2wuY2VydGluZm8pCiAgICAgLyogd2UndmUgYmVlbiBhc2tlZCB0byBnYXRoZXIgY2VydGlmaWNhdGUgaW5mbyEgKi8KQEAgLTI2NDIsOCArMjY1OCwxMCBAQAogCiAgIGNvbm5zc2wtPnNlcnZlcl9jZXJ0ID0gU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKGNvbm5zc2wtPmhhbmRsZSk7CiAgIGlmKCFjb25uc3NsLT5zZXJ2ZXJfY2VydCkgewotICAgIGlmKHN0cmljdCkKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IGdldCBwZWVyIGNlcnRpZmljYXRlISIpOworICAgIGlmKCFzdHJpY3QpCisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgICBmYWlsZihkYXRhLCAiU1NMOiBjb3VsZG4ndCBnZXQgcGVlciBjZXJ0aWZpY2F0ZSEiKTsKICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwogICB9CiAKQEAgLTI2NTEsMTUgKzI2NjksMTkgQEAKIAogICByYyA9IHg1MDlfbmFtZV9vbmVsaW5lKFg1MDlfZ2V0X3N1YmplY3RfbmFtZShjb25uc3NsLT5zZXJ2ZXJfY2VydCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBCVUZTSVpFKTsKLSAgaW5mb2YoZGF0YSwgIlx0IHN1YmplY3Q6ICVzXG4iLCByYz8iW05PTkVdIjpidWZmZXIpOworICBpbmZvZihkYXRhLCAiIHN1YmplY3Q6ICVzXG4iLCByYz8iW05PTkVdIjpidWZmZXIpOwogCi0gIGNlcnRkYXRlID0gWDUwOV9nZXRfbm90QmVmb3JlKGNvbm5zc2wtPnNlcnZlcl9jZXJ0KTsKLSAgYXNuMV9vdXRwdXQoY2VydGRhdGUsIGJ1ZmZlciwgQlVGU0laRSk7Ci0gIGluZm9mKGRhdGEsICJcdCBzdGFydCBkYXRlOiAlc1xuIiwgYnVmZmVyKTsKKyAgQVNOMV9USU1FX3ByaW50KG1lbSwgWDUwOV9nZXRfbm90QmVmb3JlKGNvbm5zc2wtPnNlcnZlcl9jZXJ0KSk7CisgIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEobWVtLCAoY2hhciAqKikgJnB0cik7CisgIGluZm9mKGRhdGEsICIgc3RhcnQgZGF0ZTogJS4qc1xuIiwgbGVuLCBwdHIpOworICByYyA9IEJJT19yZXNldChtZW0pOwogCi0gIGNlcnRkYXRlID0gWDUwOV9nZXRfbm90QWZ0ZXIoY29ubnNzbC0+c2VydmVyX2NlcnQpOwotICBhc24xX291dHB1dChjZXJ0ZGF0ZSwgYnVmZmVyLCBCVUZTSVpFKTsKLSAgaW5mb2YoZGF0YSwgIlx0IGV4cGlyZSBkYXRlOiAlc1xuIiwgYnVmZmVyKTsKKyAgQVNOMV9USU1FX3ByaW50KG1lbSwgWDUwOV9nZXRfbm90QWZ0ZXIoY29ubnNzbC0+c2VydmVyX2NlcnQpKTsKKyAgbGVuID0gQklPX2dldF9tZW1fZGF0YShtZW0sIChjaGFyICoqKSAmcHRyKTsKKyAgaW5mb2YoZGF0YSwgIiBleHBpcmUgZGF0ZTogJS4qc1xuIiwgbGVuLCBwdHIpOworICByYyA9IEJJT19yZXNldChtZW0pOworCisgIEJJT19mcmVlKG1lbSk7CiAKICAgaWYoZGF0YS0+c2V0LnNzbC52ZXJpZnlob3N0KSB7CiAgICAgcmVzdWx0ID0gdmVyaWZ5aG9zdChjb25uLCBjb25uc3NsLT5zZXJ2ZXJfY2VydCk7CkBAIC0yNjc4LDcgKzI3MDAsNyBAQAogICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwogICB9CiAgIGVsc2UgewotICAgIGluZm9mKGRhdGEsICJcdCBpc3N1ZXI6ICVzXG4iLCBidWZmZXIpOworICAgIGluZm9mKGRhdGEsICIgaXNzdWVyOiAlc1xuIiwgYnVmZmVyKTsKIAogICAgIC8qIFdlIGNvdWxkIGRvIGFsbCBzb3J0cyBvZiBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gc3R1ZmYgaGVyZSBiZWZvcmUKICAgICAgICBkZWFsbG9jYXRpbmcgdGhlIGNlcnRpZmljYXRlLiAqLwpAQCAtMjcxOCw3ICsyNzQwLDcgQEAKICAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9JU1NVRVJfRVJST1I7CiAgICAgICB9CiAKLSAgICAgIGluZm9mKGRhdGEsICJcdCBTU0wgY2VydGlmaWNhdGUgaXNzdWVyIGNoZWNrIG9rICglcylcbiIsCisgICAgICBpbmZvZihkYXRhLCAiIFNTTCBjZXJ0aWZpY2F0ZSBpc3N1ZXIgY2hlY2sgb2sgKCVzKVxuIiwKICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9JU1NVRVJDRVJUXSk7CiAgICAgICBYNTA5X2ZyZWUoaXNzdWVyKTsKICAgICB9CkBAIC0yNzM2LDE2ICsyNzU4LDE2IEBACiAgICAgICAgIHJlc3VsdCA9IENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKICAgICAgIH0KICAgICAgIGVsc2UKLSAgICAgICAgaW5mb2YoZGF0YSwgIlx0IFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZnkgcmVzdWx0OiAlcyAoJWxkKSwiCisgICAgICAgIGluZm9mKGRhdGEsICIgU1NMIGNlcnRpZmljYXRlIHZlcmlmeSByZXN1bHQ6ICVzICglbGQpLCIKICAgICAgICAgICAgICAgIiBjb250aW51aW5nIGFueXdheS5cbiIsCiAgICAgICAgICAgICAgIFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKGxlcnIpLCBsZXJyKTsKICAgICB9CiAgICAgZWxzZQotICAgICAgaW5mb2YoZGF0YSwgIlx0IFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZnkgb2suXG4iKTsKKyAgICAgIGluZm9mKGRhdGEsICIgU1NMIGNlcnRpZmljYXRlIHZlcmlmeSBvay5cbiIpOwogICB9CiAKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDhmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmIFwKLSAgICAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKKyAgICAhZGVmaW5lZChPUEVOU1NMX05PX09DU1ApCiAgIGlmKGRhdGEtPnNldC5zc2wudmVyaWZ5c3RhdHVzKSB7CiAgICAgcmVzdWx0ID0gdmVyaWZ5c3RhdHVzKGNvbm4sIGNvbm5zc2wpOwogICAgIGlmKHJlc3VsdCkgewpAQCAtMjc2Miw3ICsyNzg0LDcgQEAKIAogICBwdHIgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXTsKICAgaWYoIXJlc3VsdCAmJiBwdHIpIHsKLSAgICByZXN1bHQgPSBwa3BfcGluX3BlZXJfcHVia2V5KGNvbm5zc2wtPnNlcnZlcl9jZXJ0LCBwdHIpOworICAgIHJlc3VsdCA9IHBrcF9waW5fcGVlcl9wdWJrZXkoZGF0YSwgY29ubnNzbC0+c2VydmVyX2NlcnQsIHB0cik7CiAgICAgaWYocmVzdWx0KQogICAgICAgZmFpbGYoZGF0YSwgIlNTTDogcHVibGljIGtleSBkb2VzIG5vdCBtYXRjaCBwaW5uZWQgcHVibGljIGtleSEiKTsKICAgfQpAQCAtMzA4MCw4MiArMzEwMiw0MSBAQAogCiBzaXplX3QgQ3VybF9vc3NsX3ZlcnNpb24oY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKLSNpZmRlZiBZQVNTTF9WRVJTSU9OCi0gIC8qIHlhc3NsIHByb3ZpZGVzIGFuIE9wZW5TU0wgQVBJIGNvbXBhdGliaWxpdHkgbGF5ZXIgc28gaXQgbG9va3MgaWRlbnRpY2FsCi0gICAgIHRvIE9wZW5TU0wgaW4gYWxsIG90aGVyIGFzcGVjdHMgKi8KLSAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgInlhc3NsLyVzIiwgWUFTU0xfVkVSU0lPTik7Ci0jZWxzZSAvKiBZQVNTTF9WRVJTSU9OICovCiAjaWZkZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKLSAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIkJvcmluZ1NTTCIpOworICByZXR1cm4gc25wcmludGYoYnVmZmVyLCBzaXplLCBPU1NMX1BBQ0tBR0UpOwogI2Vsc2UgLyogT1BFTlNTTF9JU19CT1JJTkdTU0wgKi8KLQotI2lmKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHg5MDUwMDApCi0gIHsKLSAgICBjaGFyIHN1YlszXTsKLSAgICB1bnNpZ25lZCBsb25nIHNzbGVheV92YWx1ZTsKLSAgICBzdWJbMl09J1wwJzsKLSAgICBzdWJbMV09J1wwJzsKLSAgICBzc2xlYXlfdmFsdWU9U1NMZWF5KCk7Ci0gICAgaWYoc3NsZWF5X3ZhbHVlIDwgMHg5MDYwMDApIHsKLSAgICAgIHNzbGVheV92YWx1ZT1TU0xFQVlfVkVSU0lPTl9OVU1CRVI7Ci0gICAgICBzdWJbMF09J1wwJzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBpZihzc2xlYXlfdmFsdWUmMHhmZjApIHsKLSAgICAgICAgaW50IG1pbm9yX3ZlciA9IChzc2xlYXlfdmFsdWUgPj4gNCkgJiAweGZmOwotICAgICAgICBpZihtaW5vcl92ZXIgPiAyNikgewotICAgICAgICAgIC8qIGhhbmRsZSBleHRlbmRlZCB2ZXJzaW9uIGludHJvZHVjZWQgZm9yIDAuOS44emEgKi8KLSAgICAgICAgICBzdWJbMV0gPSAoY2hhcikgKChtaW5vcl92ZXIgLSAxKSAlIDI2ICsgJ2EnICsgMSk7Ci0gICAgICAgICAgc3ViWzBdID0gJ3onOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN1YlswXT0oY2hhcikoKChzc2xlYXlfdmFsdWU+PjQpJjB4ZmYpICsgJ2EnIC0xKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBzdWJbMF09J1wwJzsKLSAgICB9Ci0KLSAgICByZXR1cm4gc25wcmludGYoYnVmZmVyLCBzaXplLCAiJXMvJWx4LiVseC4lbHglcyIsCi0jaWZkZWYgTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIKLSAgICAgICAgICAgICAgICAgICAgIkxpYnJlU1NMIgotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIk9wZW5TU0wiCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgLCAoc3NsZWF5X3ZhbHVlPj4yOCkmMHhmLAotICAgICAgICAgICAgICAgICAgICAoc3NsZWF5X3ZhbHVlPj4yMCkmMHhmZiwKLSAgICAgICAgICAgICAgICAgICAgKHNzbGVheV92YWx1ZT4+MTIpJjB4ZmYsCi0gICAgICAgICAgICAgICAgICAgIHN1Yik7CisgIGNoYXIgc3ViWzNdOworICB1bnNpZ25lZCBsb25nIHNzbGVheV92YWx1ZTsKKyAgc3ViWzJdPSdcMCc7CisgIHN1YlsxXT0nXDAnOworICBzc2xlYXlfdmFsdWU9U1NMZWF5KCk7CisgIGlmKHNzbGVheV92YWx1ZSA8IDB4OTA2MDAwKSB7CisgICAgc3NsZWF5X3ZhbHVlPVNTTEVBWV9WRVJTSU9OX05VTUJFUjsKKyAgICBzdWJbMF09J1wwJzsKICAgfQotCi0jZWxzZSAvKiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIGlzIGxlc3MgdGhhbiAwLjkuNSAqLwotCi0jaWYoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDkwMDAwMCkKLSAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIk9wZW5TU0wvJWx4LiVseC4lbHgiLAotICAgICAgICAgICAgICAgICAgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI+PjI4KSYweGZmLAotICAgICAgICAgICAgICAgICAgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI+PjIwKSYweGZmLAotICAgICAgICAgICAgICAgICAgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI+PjEyKSYweGYpOwotCi0jZWxzZSAvKiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDkwMDAwMCkgKi8KLSAgewotICAgIGNoYXIgc3ViWzJdOwotICAgIHN1YlsxXT0nXDAnOwotICAgIGlmKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVImMHgwZikgewotICAgICAgc3ViWzBdPShPUEVOU1NMX1ZFUlNJT05fTlVNQkVSJjB4MGYpICsgJ2EnIC0xOworICBlbHNlIHsKKyAgICBpZihzc2xlYXlfdmFsdWUmMHhmZjApIHsKKyAgICAgIGludCBtaW5vcl92ZXIgPSAoc3NsZWF5X3ZhbHVlID4+IDQpICYgMHhmZjsKKyAgICAgIGlmKG1pbm9yX3ZlciA+IDI2KSB7CisgICAgICAgIC8qIGhhbmRsZSBleHRlbmRlZCB2ZXJzaW9uIGludHJvZHVjZWQgZm9yIDAuOS44emEgKi8KKyAgICAgICAgc3ViWzFdID0gKGNoYXIpICgobWlub3JfdmVyIC0gMSkgJSAyNiArICdhJyArIDEpOworICAgICAgICBzdWJbMF0gPSAneic7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3ViWzBdPShjaGFyKSgoKHNzbGVheV92YWx1ZT4+NCkmMHhmZikgKyAnYScgLTEpOworICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgICBzdWJbMF09J1wwJzsKLQotICAgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICJTU0wvJXguJXguJXglcyIsCi0gICAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj4xMikmMHhmZiwKLSAgICAgICAgICAgICAgICAgICAgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI+PjgpJjB4ZiwKLSAgICAgICAgICAgICAgICAgICAgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVI+PjQpJjB4Ziwgc3ViKTsKICAgfQotI2VuZGlmIC8qIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4OTAwMDAwKSAqLwotI2VuZGlmIC8qIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgaXMgbGVzcyB0aGFuIDAuOS41ICovCiAKKyAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiVzLyVseC4lbHguJWx4JXMiLAorICAgICAgICAgICAgICAgICAgT1NTTF9QQUNLQUdFLAorICAgICAgICAgICAgICAgICAgKHNzbGVheV92YWx1ZT4+MjgpJjB4ZiwKKyAgICAgICAgICAgICAgICAgIChzc2xlYXlfdmFsdWU+PjIwKSYweGZmLAorICAgICAgICAgICAgICAgICAgKHNzbGVheV92YWx1ZT4+MTIpJjB4ZmYsCisgICAgICAgICAgICAgICAgICBzdWIpOwogI2VuZGlmIC8qIE9QRU5TU0xfSVNfQk9SSU5HU1NMICovCi0jZW5kaWYgLyogWUFTU0xfVkVSU0lPTiAqLwogfQogCiAvKiBjYW4gYmUgY2FsbGVkIHdpdGggZGF0YSA9PSBOVUxMICovCkBAIC0zMTgxLDEwICszMTYyLDI0IEBACiAgIE1ENV9GaW5hbChtZDVzdW0sICZNRDVwdyk7CiB9CiAKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDBmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEyNTYpCit2b2lkIEN1cmxfb3NzbF9zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtIC8qIG91dHB1dCAqLywKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdW51c2VkKQoreworICBTSEEyNTZfQ1RYIFNIQTI1NnB3OworICAodm9pZCl1bnVzZWQ7CisgIFNIQTI1Nl9Jbml0KCZTSEEyNTZwdyk7CisgIFNIQTI1Nl9VcGRhdGUoJlNIQTI1NnB3LCB0bXAsIHRtcGxlbik7CisgIFNIQTI1Nl9GaW5hbChzaGEyNTZzdW0sICZTSEEyNTZwdyk7Cit9CisjZW5kaWYKKwogYm9vbCBDdXJsX29zc2xfY2VydF9zdGF0dXNfcmVxdWVzdCh2b2lkKQogewogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwOGZMKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkgJiYgXAotICAgICFkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQorICAgICFkZWZpbmVkKE9QRU5TU0xfTk9fT0NTUCkKICAgcmV0dXJuIFRSVUU7CiAjZWxzZQogICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9saWIvdnRscy9vcGVuc3NsLmggYi9saWIvdnRscy9vcGVuc3NsLmgKaW5kZXggNDk5YjRmZS4uNzRmMTI4ZSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvb3BlbnNzbC5oCisrKyBiL2xpYi92dGxzL29wZW5zc2wuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTcyLDYgKzcyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptZDVzdW0gLyogb3V0cHV0ICovLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB1bnVzZWQpOwordm9pZCBDdXJsX29zc2xfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSAvKiBvdXRwdXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHVudXNlZCk7CiAKIGJvb2wgQ3VybF9vc3NsX2NlcnRfc3RhdHVzX3JlcXVlc3Qodm9pZCk7CiAKQEAgLTg0LDkgKzg4LDEyIEBACiAvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgQ1VSTE9QVF9DRVJUSU5GTyAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfY2VydGluZm8gMQogCi0vKiB0aGlzIGJhY2tlbmQgc3VwcG90cyBDVVJMT1BUX1NTTF9DVFhfKiAqLworLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfU1NMX0NUWF8qICovCiAjZGVmaW5lIGhhdmVfY3VybHNzbF9zc2xfY3R4IDEKIAorLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorCiAvKiBBUEkgc2V0dXAgZm9yIE9wZW5TU0wgKi8KICNkZWZpbmUgY3VybHNzbF9pbml0IEN1cmxfb3NzbF9pbml0CiAjZGVmaW5lIGN1cmxzc2xfY2xlYW51cCBDdXJsX29zc2xfY2xlYW51cApAQCAtMTA0LDYgKzExMSw5IEBACiAjZGVmaW5lIGN1cmxzc2xfZGF0YV9wZW5kaW5nKHgseSkgQ3VybF9vc3NsX2RhdGFfcGVuZGluZyh4LHkpCiAjZGVmaW5lIGN1cmxzc2xfcmFuZG9tKHgseSx6KSBDdXJsX29zc2xfcmFuZG9tKHgseSx6KQogI2RlZmluZSBjdXJsc3NsX21kNXN1bShhLGIsYyxkKSBDdXJsX29zc2xfbWQ1c3VtKGEsYixjLGQpCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwODAwZkwpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMjU2KQorI2RlZmluZSBjdXJsc3NsX3NoYTI1NnN1bShhLGIsYyxkKSBDdXJsX29zc2xfc2hhMjU2c3VtKGEsYixjLGQpCisjZW5kaWYKICNkZWZpbmUgY3VybHNzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KCkgQ3VybF9vc3NsX2NlcnRfc3RhdHVzX3JlcXVlc3QoKQogCiAjZGVmaW5lIERFRkFVTFRfQ0lQSEVSX1NFTEVDVElPTiBcCmRpZmYgLS1naXQgYS9saWIvdnRscy9wb2xhcnNzbC5jIGIvbGliL3Z0bHMvcG9sYXJzc2wuYwppbmRleCAwNjZjMDU1Li4wZThiMGY1IDEwMDY0NAotLS0gYS9saWIvdnRscy9wb2xhcnNzbC5jCisrKyBiL2xpYi92dGxzL3BvbGFyc3NsLmMKQEAgLTUsMTIgKzUsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDEwIC0gMjAxMSwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHBvbGFyc3NsL2NlcnRzLmg+CiAjaW5jbHVkZSA8cG9sYXJzc2wveDUwOS5oPgogI2luY2x1ZGUgPHBvbGFyc3NsL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxwb2xhcnNzbC9zaGEyNTYuaD4KIAogI2lmIFBPTEFSU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMTAzMDAwMAogI2Vycm9yIHRvbyBvbGQgUG9sYXJTU0wKQEAgLTYwLDYgKzYxLDE1IEBACiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCisvKiBTZWUgaHR0cHM6Ly90bHMubWJlZC5vcmcvZGlzY3Vzc2lvbnMvZ2VuZXJpYy8KKyAgIGhvd3RvLWRldGVybWluZS1leGFjdC1idWZmZXItbGVuLWZvci1tYmVkdGxzX3BrX3dyaXRlX3B1YmtleV9kZXIKKyovCisjZGVmaW5lIFJTQV9QVUJfREVSX01BWF9CWVRFUyAgICgzOCArIDIgKiBQT0xBUlNTTF9NUElfTUFYX1NJWkUpCisjZGVmaW5lIEVDUF9QVUJfREVSX01BWF9CWVRFUyAgICgzMCArIDIgKiBQT0xBUlNTTF9FQ1BfTUFYX0JZVEVTKQorCisjZGVmaW5lIFBVQl9ERVJfTUFYX0JZVEVTICAgKFJTQV9QVUJfREVSX01BWF9CWVRFUyA+IEVDUF9QVUJfREVSX01BWF9CWVRFUyA/IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BVQl9ERVJfTUFYX0JZVEVTIDogRUNQX1BVQl9ERVJfTUFYX0JZVEVTKQorCiAvKiBhcHBseSB0aHJlYWRpbmc/ICovCiAjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgfHwgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikKICNkZWZpbmUgVEhSRUFESU5HX1NVUFBPUlQKQEAgLTc0LDEyICs4NCwxMiBAQAogc3RhdGljIHZvaWQgZW50cm9weV9pbml0X211dGV4KGVudHJvcHlfY29udGV4dCAqY3R4KQogewogICAvKiBsb2NrIDAgPSBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLwotICBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbigwKTsKKyAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbigwKTsKICAgaWYoZW50cm9weV9pbml0X2luaXRpYWxpemVkID09IDApIHsKICAgICBlbnRyb3B5X2luaXQoY3R4KTsKICAgICBlbnRyb3B5X2luaXRfaW5pdGlhbGl6ZWQgPSAxOwogICB9Ci0gIHBvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oMCk7CisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigwKTsKIH0KIC8qIGVuZCBvZiBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLwogCkBAIC04OCw5ICs5OCw5IEBACiB7CiAgICAgaW50IHJldDsKICAgICAvKiBsb2NrIDEgPSBlbnRyb3B5X2Z1bmNfbXV0ZXgoKSAqLwotICAgIHBvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDEpOworICAgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMSk7CiAgICAgcmV0ID0gZW50cm9weV9mdW5jKGRhdGEsIG91dHB1dCwgbGVuKTsKLSAgICBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDEpOworICAgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigxKTsKIAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xNDEsNyArMTUxLDYgQEAKICAgc3RydWN0IGluX2FkZHIgYWRkcjsKICNlbmRpZgogICB2b2lkICpvbGRfc2Vzc2lvbiA9IE5VTEw7Ci0gIHNpemVfdCBvbGRfc2Vzc2lvbl9zaXplID0gMDsKICAgY2hhciBlcnJvcmJ1ZlsxMjhdOwogICBlcnJvcmJ1ZlswXT0wOwogCkBAIC0xNTcsNyArMTY2LDcgQEAKICAgZW50cm9weV9pbml0X211dGV4KCZlbnRyb3B5KTsKIAogICBpZigocmV0ID0gY3RyX2RyYmdfaW5pdCgmY29ubnNzbC0+Y3RyX2RyYmcsIGVudHJvcHlfZnVuY19tdXRleCwgJmVudHJvcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubnNzbC0+c3NuLmlkLCBjb25uc3NsLT5zc24ubGVuZ3RoKSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKSkgIT0gMCkgewogI2lmZGVmIFBPTEFSU1NMX0VSUk9SX0MKICAgICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CiAjZW5kaWYgLyogUE9MQVJTU0xfRVJST1JfQyAqLwpAQCAtMTY4LDcgKzE3Nyw3IEBACiAgIGVudHJvcHlfaW5pdCgmY29ubnNzbC0+ZW50cm9weSk7CiAKICAgaWYoKHJldCA9IGN0cl9kcmJnX2luaXQoJmNvbm5zc2wtPmN0cl9kcmJnLCBlbnRyb3B5X2Z1bmMsICZjb25uc3NsLT5lbnRyb3B5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uc3NsLT5zc24uaWQsIGNvbm5zc2wtPnNzbi5sZW5ndGgpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApKSAhPSAwKSB7CiAjaWZkZWYgUE9MQVJTU0xfRVJST1JfQwogICAgICBlcnJvcl9zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKICNlbmRpZiAvKiBQT0xBUlNTTF9FUlJPUl9DICovCkBAIC0zMjgsMTQgKzMzNywxNSBAQAogICAgICAgICAgICAgICBuZXRfc2VuZCwgJmNvbm4tPnNvY2tbc29ja2luZGV4XSk7CiAKICAgc3NsX3NldF9jaXBoZXJzdWl0ZXMoJmNvbm5zc2wtPnNzbCwgc3NsX2xpc3RfY2lwaGVyc3VpdGVzKCkpOwotICBpZighQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRfc2Vzc2lvbiwgJm9sZF9zZXNzaW9uX3NpemUpKSB7Ci0gICAgbWVtY3B5KCZjb25uc3NsLT5zc24sIG9sZF9zZXNzaW9uLCBvbGRfc2Vzc2lvbl9zaXplKTsKKyAgaWYoIUN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmb2xkX3Nlc3Npb24sIE5VTEwpKSB7CisgICAgcmV0ID0gc3NsX3NldF9zZXNzaW9uKCZjb25uc3NsLT5zc2wsIG9sZF9zZXNzaW9uKTsKKyAgICBpZihyZXQpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJzc2xfc2V0X3Nlc3Npb24gcmV0dXJuZWQgLTB4JXgiLCAtcmV0KTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CiAgICAgaW5mb2YoZGF0YSwgIlBvbGFyU1NMIHJlLXVzaW5nIHNlc3Npb25cbiIpOwogICB9CiAKLSAgc3NsX3NldF9zZXNzaW9uKCZjb25uc3NsLT5zc2wsCi0gICAgICAgICAgICAgICAgICAmY29ubnNzbC0+c3NuKTsKLQogICBzc2xfc2V0X2NhX2NoYWluKCZjb25uc3NsLT5zc2wsCiAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmNhY2VydCwKICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+Y3JsLApAQCAtMzQ0LDIyICszNTQsMjEgQEAKICAgc3NsX3NldF9vd25fY2VydF9yc2EoJmNvbm5zc2wtPnNzbCwKICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmNsaWNlcnQsICZjb25uc3NsLT5yc2EpOwogCi0gIGlmKCFDdXJsX2luZXRfcHRvbihBRl9JTkVULCBjb25uLT5ob3N0Lm5hbWUsICZhZGRyKSAmJgotI2lmZGVmIEVOQUJMRV9JUFY2Ci0gICAgICFDdXJsX2luZXRfcHRvbihBRl9JTkVUNiwgY29ubi0+aG9zdC5uYW1lLCAmYWRkcikgJiYKLSNlbmRpZgotICAgICBzbmkgJiYgc3NsX3NldF9ob3N0bmFtZSgmY29ubnNzbC0+c3NsLCBjb25uLT5ob3N0Lm5hbWUpKSB7Ci0gICAgIGluZm9mKGRhdGEsICJXQVJOSU5HOiBmYWlsZWQgdG8gY29uZmlndXJlICIKLSAgICAgICAgICAgICAgICAgInNlcnZlciBuYW1lIGluZGljYXRpb24gKFNOSSkgVExTIGV4dGVuc2lvblxuIik7CisgIGlmKHNzbF9zZXRfaG9zdG5hbWUoJmNvbm5zc2wtPnNzbCwgY29ubi0+aG9zdC5uYW1lKSkgeworICAgIC8qIHNzbF9zZXRfaG9zdG5hbWUoKSBzZXRzIHRoZSBuYW1lIHRvIHVzZSBpbiBDTi9TQU4gY2hlY2tzICphbmQqIHRoZSBuYW1lCisgICAgICAgdG8gc2V0IGluIHRoZSBTTkkgZXh0ZW5zaW9uLiBTbyBldmVuIGlmIGN1cmwgY29ubmVjdHMgdG8gYSBob3N0CisgICAgICAgc3BlY2lmaWVkIGFzIGFuIElQIGFkZHJlc3MsIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkLiAqLworICAgIGZhaWxmKGRhdGEsICJjb3VsZG4ndCBzZXQgaG9zdG5hbWUgaW4gUG9sYXJTU0wiKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CiAgIH0KIAogI2lmZGVmIEhBU19BTFBOCi0gIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pIHsKKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJvdG9jb2xzWzNdOwogICAgIGludCBjdXIgPSAwOwogCiAjaWZkZWYgVVNFX05HSFRUUDIKLSAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wKSB7CisgICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzIpIHsKICAgICAgIHByb3RvY29sc1tjdXIrK10gPSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQ7CiAgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCk7CiAgICAgfQpAQCAtNDUzLDggKzQ2Miw2MyBAQAogICAgICAgaW5mb2YoZGF0YSwgIkR1bXBpbmcgY2VydCBpbmZvOlxuJXNcbiIsIGJ1ZmZlcik7CiAgIH0KIAorICAvKiBhZGFwdGVkIGZyb20gbWJlZHRscy5jICovCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9QSU5ORURQVUJMSUNLRVldKSB7CisgICAgaW50IHNpemU7CisgICAgQ1VSTGNvZGUgcmVzdWx0OworICAgIHg1MDlfY3J0ICpwOworICAgIHVuc2lnbmVkIGNoYXIgcHVia2V5W1BVQl9ERVJfTUFYX0JZVEVTXTsKKyAgICBjb25zdCB4NTA5X2NydCAqcGVlcmNlcnQ7CisKKyAgICBwZWVyY2VydCA9IHNzbF9nZXRfcGVlcl9jZXJ0KCZjb25uc3NsLT5zc2wpOworCisgICAgaWYoIXBlZXJjZXJ0IHx8ICFwZWVyY2VydC0+cmF3LnAgfHwgIXBlZXJjZXJ0LT5yYXcubGVuKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIGR1ZSB0byBtaXNzaW5nIHBlZXIgY2VydGlmaWNhdGUiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgcCA9IGNhbGxvYygxLCBzaXplb2YoKnApKTsKKworICAgIGlmKCFwKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICB4NTA5X2NydF9pbml0KHApOworCisgICAgLyogTWFrZSBhIGNvcHkgb2Ygb3VyIGNvbnN0IHBlZXJjZXJ0IGJlY2F1c2UgcGtfd3JpdGVfcHVia2V5X2RlcgorICAgICAgIG5lZWRzIGEgbm9uLWNvbnN0IGtleSwgZm9yIG5vdy4KKyAgICAgICBodHRwczovL2dpdGh1Yi5jb20vQVJNbWJlZC9tYmVkdGxzL2lzc3Vlcy8zOTYgKi8KKyAgICBpZih4NTA5X2NydF9wYXJzZV9kZXIocCwgcGVlcmNlcnQtPnJhdy5wLCBwZWVyY2VydC0+cmF3LmxlbikpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgY29weWluZyBwZWVyIGNlcnRpZmljYXRlIik7CisgICAgICB4NTA5X2NydF9mcmVlKHApOworICAgICAgZnJlZShwKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgc2l6ZSA9IHBrX3dyaXRlX3B1YmtleV9kZXIoJnAtPnBrLCBwdWJrZXksIFBVQl9ERVJfTUFYX0JZVEVTKTsKKworICAgIGlmKHNpemUgPD0gMCkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBjb3B5aW5nIHB1YmxpYyBrZXkgZnJvbSBwZWVyIGNlcnRpZmljYXRlIik7CisgICAgICB4NTA5X2NydF9mcmVlKHApOworICAgICAgZnJlZShwKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgLyogcGtfd3JpdGVfcHVia2V5X2RlciB3cml0ZXMgZGF0YSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICovCisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHVia2V5W1BVQl9ERVJfTUFYX0JZVEVTIC0gc2l6ZV0sIHNpemUpOworICAgIGlmKHJlc3VsdCkgeworICAgICAgeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHg1MDlfY3J0X2ZyZWUocCk7CisgICAgZnJlZShwKTsKKyAgfQorCiAjaWZkZWYgSEFTX0FMUE4KLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIGNvbnN0IGNoYXIgKm5leHRfcHJvdG9jb2wgPSBzc2xfZ2V0X2FscG5fcHJvdG9jb2woJmNvbm5zc2wtPnNzbCk7CiAKICAgICBpZihuZXh0X3Byb3RvY29sICE9IE5VTEwpIHsKQEAgLTQ2Myw3ICs1MjcsNyBAQAogI2lmZGVmIFVTRV9OR0hUVFAyCiAgICAgICBpZighc3RybmNtcChuZXh0X3Byb3RvY29sLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsCiAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSkgewotICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CiAgICAgICB9CiAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTQ4Niw0MCArNTUwLDM2IEBACiBwb2xhcnNzbF9jb25uZWN0X3N0ZXAzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBDVVJMY29kZSByZXRjb2RlID0gQ1VSTEVfT0s7CiAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHZvaWQgKm9sZF9zc2xfc2Vzc2lvbmlkID0gTlVMTDsKLSAgc3NsX3Nlc3Npb24gKm91cl9zc2xfc2Vzc2lvbmlkID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdLnNzbjsKLSAgYm9vbCBpbmNhY2hlOworICBzc2xfc2Vzc2lvbiAqb3VyX3NzbF9zZXNzaW9uaWQ7CisgIGludCByZXQ7CiAKICAgREVCVUdBU1NFUlQoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKTsKIAotICAvKiBTYXZlIHRoZSBjdXJyZW50IHNlc3Npb24gZGF0YSBmb3IgcG9zc2libGUgcmUtdXNlICovCi0gIGluY2FjaGUgPSAhKEN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmb2xkX3NzbF9zZXNzaW9uaWQsIE5VTEwpKTsKLSAgaWYoaW5jYWNoZSkgewotICAgIGlmKG9sZF9zc2xfc2Vzc2lvbmlkICE9IG91cl9zc2xfc2Vzc2lvbmlkKSB7Ci0gICAgICBpbmZvZihkYXRhLCAib2xkIFNTTCBzZXNzaW9uIElEIGlzIHN0YWxlLCByZW1vdmluZ1xuIik7Ci0gICAgICBDdXJsX3NzbF9kZWxzZXNzaW9uaWQoY29ubiwgb2xkX3NzbF9zZXNzaW9uaWQpOwotICAgICAgaW5jYWNoZSA9IEZBTFNFOwotICAgIH0KKyAgb3VyX3NzbF9zZXNzaW9uaWQgPSBtYWxsb2Moc2l6ZW9mKHNzbF9zZXNzaW9uKSk7CisgIGlmKCFvdXJfc3NsX3Nlc3Npb25pZCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBzc2xfc2Vzc2lvbl9pbml0KG91cl9zc2xfc2Vzc2lvbmlkKTsKKworICByZXQgPSBzc2xfZ2V0X3Nlc3Npb24oJmNvbm5zc2wtPnNzbCwgb3VyX3NzbF9zZXNzaW9uaWQpOworICBpZihyZXQpIHsKKyAgICBmYWlsZihkYXRhLCAic3NsX2dldF9zZXNzaW9uIHJldHVybmVkIC0weCV4IiwgLXJldCk7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwogICB9CiAKLSAgaWYoIWluY2FjaGUpIHsKLSAgICB2b2lkICpuZXdfc2Vzc2lvbiA9IG1hbGxvYyhzaXplb2Yoc3NsX3Nlc3Npb24pKTsKKyAgLyogSWYgdGhlcmUncyBhbHJlYWR5IGEgbWF0Y2hpbmcgc2Vzc2lvbiBpbiB0aGUgY2FjaGUsIGRlbGV0ZSBpdCAqLworICBpZighQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRfc3NsX3Nlc3Npb25pZCwgTlVMTCkpCisgICAgQ3VybF9zc2xfZGVsc2Vzc2lvbmlkKGNvbm4sIG9sZF9zc2xfc2Vzc2lvbmlkKTsKIAotICAgIGlmKG5ld19zZXNzaW9uKSB7Ci0gICAgICBtZW1jcHkobmV3X3Nlc3Npb24sIG91cl9zc2xfc2Vzc2lvbmlkLCBzaXplb2Yoc3NsX3Nlc3Npb24pKTsKLQotICAgICAgcmVzdWx0ID0gQ3VybF9zc2xfYWRkc2Vzc2lvbmlkKGNvbm4sIG5ld19zZXNzaW9uLCBzaXplb2Yoc3NsX3Nlc3Npb24pKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIGlmKHJlc3VsdCkgewotICAgICAgZmFpbGYoZGF0YSwgImZhaWxlZCB0byBzdG9yZSBzc2wgc2Vzc2lvbiIpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgIHJldGNvZGUgPSBDdXJsX3NzbF9hZGRzZXNzaW9uaWQoY29ubiwgb3VyX3NzbF9zZXNzaW9uaWQsIDApOworICBpZihyZXRjb2RlKSB7CisgICAgZnJlZShvdXJfc3NsX3Nlc3Npb25pZCk7CisgICAgZmFpbGYoZGF0YSwgImZhaWxlZCB0byBzdG9yZSBzc2wgc2Vzc2lvbiIpOworICAgIHJldHVybiByZXRjb2RlOwogICB9CiAKICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0X2RvbmU7CkBAIC01ODQsNiArNjQ0LDcgQEAKIAogdm9pZCBDdXJsX3BvbGFyc3NsX3Nlc3Npb25fZnJlZSh2b2lkICpwdHIpCiB7CisgIHNzbF9zZXNzaW9uX2ZyZWUocHRyKTsKICAgZnJlZShwdHIpOwogfQogCkBAIC03NDAsMTQgKzgwMSwxNCBAQAogICogcmV0dXJuIDAgZXJyb3IgaW5pdGlhbGl6aW5nIFNTTAogICogcmV0dXJuIDEgU1NMIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseQogICovCi1pbnQgcG9sYXJzc2xfaW5pdCh2b2lkKQoraW50IEN1cmxfcG9sYXJzc2xfaW5pdCh2b2lkKQogewotICByZXR1cm4gcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9zZXR1cCgpOworICByZXR1cm4gQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKCk7CiB9CiAKLXZvaWQgcG9sYXJzc2xfY2xlYW51cCh2b2lkKQordm9pZCBDdXJsX3BvbGFyc3NsX2NsZWFudXAodm9pZCkKIHsKLSAgKHZvaWQpcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCk7CisgICh2b2lkKUN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCk7CiB9CiAKICNlbmRpZiAvKiBVU0VfUE9MQVJTU0wgKi8KZGlmZiAtLWdpdCBhL2xpYi92dGxzL3BvbGFyc3NsLmggYi9saWIvdnRscy9wb2xhcnNzbC5oCmluZGV4IGY5ODBkYmIuLjcwOThiMjQgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL3BvbGFyc3NsLmgKKysrIGIvbGliL3Z0bHMvcG9sYXJzc2wuaApAQCAtNywxMiArNywxMiBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDkgKzI2LDExIEBACiAKICNpZmRlZiBVU0VfUE9MQVJTU0wKIAorI2luY2x1ZGUgPHBvbGFyc3NsL3NoYTI1Ni5oPgorCiAvKiBDYWxsZWQgb24gZmlyc3QgdXNlIFBvbGFyU1NMLCBzZXR1cCB0aHJlYWRpbmcgaWYgc3VwcG9ydGVkICovCi1pbnQgIHBvbGFyc3NsX2luaXQodm9pZCk7Ci12b2lkIHBvbGFyc3NsX2NsZWFudXAodm9pZCk7CitpbnQgIEN1cmxfcG9sYXJzc2xfaW5pdCh2b2lkKTsKK3ZvaWQgQ3VybF9wb2xhcnNzbF9jbGVhbnVwKHZvaWQpOwogCiAKIENVUkxjb2RlIEN1cmxfcG9sYXJzc2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpOwpAQCAtNTAsOSArNTIsMTIgQEAKIC8qIHRoaXMgYmFja2VuZCBzdXBwb3J0cyB0aGUgQ0FQQVRIIG9wdGlvbiAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfY2FfcGF0aCAxCiAKKy8qIHRoaXMgYmFja2VuZHMgc3VwcG9ydHMgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkgKi8KKyNkZWZpbmUgaGF2ZV9jdXJsc3NsX3Bpbm5lZHB1YmtleSAxCisKIC8qIEFQSSBzZXR1cCBmb3IgUG9sYXJTU0wgKi8KLSNkZWZpbmUgY3VybHNzbF9pbml0KCkgcG9sYXJzc2xfaW5pdCgpCi0jZGVmaW5lIGN1cmxzc2xfY2xlYW51cCgpIHBvbGFyc3NsX2NsZWFudXAoKQorI2RlZmluZSBjdXJsc3NsX2luaXQoKSBDdXJsX3BvbGFyc3NsX2luaXQoKQorI2RlZmluZSBjdXJsc3NsX2NsZWFudXAoKSBDdXJsX3BvbGFyc3NsX2NsZWFudXAoKQogI2RlZmluZSBjdXJsc3NsX2Nvbm5lY3QgQ3VybF9wb2xhcnNzbF9jb25uZWN0CiAjZGVmaW5lIGN1cmxzc2xfY29ubmVjdF9ub25ibG9ja2luZyBDdXJsX3BvbGFyc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcKICNkZWZpbmUgY3VybHNzbF9zZXNzaW9uX2ZyZWUoeCkgIEN1cmxfcG9sYXJzc2xfc2Vzc2lvbl9mcmVlKHgpCkBAIC02NSw2ICs3MCw3IEBACiAjZGVmaW5lIGN1cmxzc2xfdmVyc2lvbiBDdXJsX3BvbGFyc3NsX3ZlcnNpb24KICNkZWZpbmUgY3VybHNzbF9jaGVja19jeG4oeCkgKCh2b2lkKXgsIC0xKQogI2RlZmluZSBjdXJsc3NsX2RhdGFfcGVuZGluZyh4LHkpICgodm9pZCl4LCAodm9pZCl5LCAwKQorI2RlZmluZSBjdXJsc3NsX3NoYTI1NnN1bShhLGIsYyxkKSBzaGEyNTYoYSxiLGMsMCkKIAogLyogVGhpcyBtaWdodCBjYXVzZSBsaWJjdXJsIHRvIHVzZSBhIHdlZWtlciByYW5kb20hCiAgICBUT0RPOiBpbXBsZW1lbnQgcHJvcGVyIHVzZSBvZiBQb2xhcnNzbCdzIENUUi1EUkJHIG9yIEhNQUMtRFJCRyBhbmQgdXNlIHRoYXQKZGlmZiAtLWdpdCBhL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYyBiL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYwppbmRleCA2MmFiZjQzLi4zYjBlYmY4IDEwMDY0NAotLS0gYS9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmMKKysrIGIvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5jCkBAIC01LDEyICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsNyArMjIsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKLSNpZiBkZWZpbmVkKFVTRV9QT0xBUlNTTCkgJiYgXAorI2lmIChkZWZpbmVkKFVTRV9QT0xBUlNTTCkgfHwgZGVmaW5lZChVU0VfTUJFRFRMUykpICYmIFwKICAgICAoZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgfHwgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikpCiAKICNpZiBkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKQpAQCAtNDcsNyArNDcsNyBAQAogLyogVGhpcyBhcnJheSB3aWxsIHN0b3JlIGFsbCBvZiB0aGUgbXV0ZXhlcyBhdmFpbGFibGUgdG8gUG9sYXJTU0wuICovCiBzdGF0aWMgUE9MQVJTU0xfTVVURVhfVCAqbXV0ZXhfYnVmID0gTlVMTDsKIAotaW50IHBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAodm9pZCkKK2ludCBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAodm9pZCkKIHsKICAgaW50IGk7CiAgIGludCByZXQ7CkBAIC03Myw3ICs3Myw3IEBACiAgIHJldHVybiAxOyAvKiBPSyAqLwogfQogCi1pbnQgcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKHZvaWQpCitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAodm9pZCkKIHsKICAgaW50IGk7CiAgIGludCByZXQ7CkBAIC0xMDAsNyArMTAwLDcgQEAKICAgcmV0dXJuIDE7IC8qIE9LICovCiB9CiAKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbihpbnQgbikKK2ludCBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKGludCBuKQogewogICBpbnQgcmV0OwogI2lmZGVmIEhBVkVfUFRIUkVBRF9ICkBAIC0xMjUsNyArMTI1LDcgQEAKICAgcmV0dXJuIDE7IC8qIE9LICovCiB9CiAKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKGludCBuKQoraW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbikKIHsKICAgaW50IHJldDsKICNpZmRlZiBIQVZFX1BUSFJFQURfSApAQCAtMTUwLDQgKzE1MCw0IEBACiAgIHJldHVybiAxOyAvKiBPSyAqLwogfQogCi0jZW5kaWYgLyogVVNFX1BPTEFSU1NMICovCisjZW5kaWYgLyogVVNFX1BPTEFSU1NMIHx8IFVTRV9NQkVEVExTICovCmRpZmYgLS1naXQgYS9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmggYi9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmgKaW5kZXggYjY3YjNmOS4uZGRhNTM1OSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5oCisrKyBiL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suaApAQCAtNywxMiArNywxMiBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDEwLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDcgKzI0LDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWZkZWYgVVNFX1BPTEFSU1NMCisjaWYgKGRlZmluZWQgVVNFX1BPTEFSU1NMKSB8fCAoZGVmaW5lZCBVU0VfTUJFRFRMUykKIAogI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpCiAjICBkZWZpbmUgUE9MQVJTU0xfTVVURVhfVCAgICAgICBwdGhyZWFkX211dGV4X3QKQEAgLTM0LDE3ICszNCwxNyBAQAogCiAjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgfHwgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikKIAotaW50IHBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAodm9pZCk7Ci1pbnQgcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKHZvaWQpOwotaW50IHBvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKGludCBuKTsKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKGludCBuKTsKK2ludCBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAodm9pZCk7CitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAodm9pZCk7CitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbihpbnQgbik7CitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKGludCBuKTsKIAogI2Vsc2UKIAotI2RlZmluZSBwb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKCkgMQotI2RlZmluZSBwb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAoKSAxCi0jZGVmaW5lIHBvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKHgpIDEKLSNkZWZpbmUgcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbih4KSAxCisjZGVmaW5lIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9zZXR1cCgpIDEKKyNkZWZpbmUgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAoKSAxCisjZGVmaW5lIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oeCkgMQorI2RlZmluZSBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oeCkgMQogCiAjZW5kaWYgLyogVVNFX1RIUkVBRFNfUE9TSVggfHwgVVNFX1RIUkVBRFNfV0lOMzIgKi8KIApkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvc2NoYW5uZWwuYyBiL2xpYi92dGxzL3NjaGFubmVsLmMKaW5kZXggMTlhZmY4Zi4uYjJlOTI2NSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvc2NoYW5uZWwuYworKysgYi9saWIvdnRscy9zY2hhbm5lbC5jCkBAIC01LDEzICs1LDEzIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgTWFyYyBIb2Vyc2tlbiwgPGluZm9AbWFyYy1ob2Vyc2tlbi5kZT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIE1hcmMgSG9lcnNrZW4sIDxpbmZvQG1hcmMtaG9lcnNrZW4uZGU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIE1hcmsgU2FsaXNidXJ5LCA8bWFyay5zYWxpc2J1cnlAaHAuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjEsNiArNjEsMTIgQEAKIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKKy8qIEFMUE4gcmVxdWlyZXMgdmVyc2lvbiA4LjEgb2YgdGhlICBXaW5kb3dzIFNESywgd2hpY2ggd2FzCisgICBzaGlwcGVkIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEzLCBha2EgX01TQ19WRVIgMTgwMCovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE4MDApICYmICFkZWZpbmVkKF9VU0lOR19WMTEwX1NESzcxXykKKyMgIGRlZmluZSBIQVNfQUxQTiAxCisjZW5kaWYKKwogLyogVW5jb21tZW50IHRvIGZvcmNlIHZlcmJvc2Ugb3V0cHV0CiAgKiAjZGVmaW5lIGluZm9mKHgsIHksIC4uLikgcHJpbnRmKHksIF9fVkFfQVJHU19fKQogICogI2RlZmluZSBmYWlsZih4LCB5LCAuLi4pIHByaW50Zih5LCBfX1ZBX0FSR1NfXykKQEAgLTk3LDYgKzEwMywxMSBAQAogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKICAgU2VjQnVmZmVyIG91dGJ1ZjsKICAgU2VjQnVmZmVyRGVzYyBvdXRidWZfZGVzYzsKKyAgU2VjQnVmZmVyIGluYnVmOworICBTZWNCdWZmZXJEZXNjIGluYnVmX2Rlc2M7CisjaWZkZWYgSEFTX0FMUE4KKyAgdW5zaWduZWQgY2hhciBhbHBuX2J1ZmZlclsxMjhdOworI2VuZGlmCiAgIFNDSEFOTkVMX0NSRUQgc2NoYW5uZWxfY3JlZDsKICAgU0VDVVJJVFlfU1RBVFVTIHNzcGlfc3RhdHVzID0gU0VDX0VfT0s7CiAgIHN0cnVjdCBjdXJsX3NjaGFubmVsX2NyZWQgKm9sZF9jcmVkID0gTlVMTDsKQEAgLTEyOCwxNiArMTM5LDI0IEBACiAgICAgICAgIFNDSF9DUkVEX0lHTk9SRV9OT19SRVZPQ0FUSU9OX0NIRUNLIHwKICAgICAgICAgU0NIX0NSRURfSUdOT1JFX1JFVk9DQVRJT05fT0ZGTElORTsKICNlbHNlCi0gICAgICBzY2hhbm5lbF9jcmVkLmR3RmxhZ3MgPSBTQ0hfQ1JFRF9BVVRPX0NSRURfVkFMSURBVElPTiB8Ci0gICAgICAgIFNDSF9DUkVEX1JFVk9DQVRJT05fQ0hFQ0tfQ0hBSU47CisgICAgICBzY2hhbm5lbF9jcmVkLmR3RmxhZ3MgPSBTQ0hfQ1JFRF9BVVRPX0NSRURfVkFMSURBVElPTjsKKyAgICAgIGlmKGRhdGEtPnNldC5zc2xfbm9fcmV2b2tlKQorICAgICAgICBzY2hhbm5lbF9jcmVkLmR3RmxhZ3MgfD0gU0NIX0NSRURfSUdOT1JFX05PX1JFVk9DQVRJT05fQ0hFQ0sgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NIX0NSRURfSUdOT1JFX1JFVk9DQVRJT05fT0ZGTElORTsKKyAgICAgIGVsc2UKKyAgICAgICAgc2NoYW5uZWxfY3JlZC5kd0ZsYWdzIHw9IFNDSF9DUkVEX1JFVk9DQVRJT05fQ0hFQ0tfQ0hBSU47CiAjZW5kaWYKLSAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogY2hlY2tpbmcgc2VydmVyIGNlcnRpZmljYXRlIHJldm9jYXRpb25cbiIpOworICAgICAgaWYoZGF0YS0+c2V0LnNzbF9ub19yZXZva2UpCisgICAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogZGlzYWJsZWQgc2VydmVyIGNlcnRpZmljYXRlIHJldm9jYXRpb24gIgorICAgICAgICAgICAgICAgICAgICAiY2hlY2tzXG4iKTsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiBjaGVja2luZyBzZXJ2ZXIgY2VydGlmaWNhdGUgcmV2b2NhdGlvblxuIik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgc2NoYW5uZWxfY3JlZC5kd0ZsYWdzID0gU0NIX0NSRURfTUFOVUFMX0NSRURfVkFMSURBVElPTiB8CiAgICAgICAgIFNDSF9DUkVEX0lHTk9SRV9OT19SRVZPQ0FUSU9OX0NIRUNLIHwKICAgICAgICAgU0NIX0NSRURfSUdOT1JFX1JFVk9DQVRJT05fT0ZGTElORTsKLSAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogZGlzYWJsZSBzZXJ2ZXIgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3NcbiIpOworICAgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiBkaXNhYmxlZCBzZXJ2ZXIgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3NcbiIpOwogICAgIH0KIAogICAgIGlmKCFkYXRhLT5zZXQuc3NsLnZlcmlmeWhvc3QpIHsKQEAgLTE4MSw3ICsyMDAsOCBAQAogICAgIH0KICAgICBtZW1zZXQoY29ubnNzbC0+Y3JlZCwgMCwgc2l6ZW9mKHN0cnVjdCBjdXJsX3NjaGFubmVsX2NyZWQpKTsKIAotICAgIC8qIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzQ3MTYuYXNweCAqLworICAgIC8qIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc0NzE2LmFzcHgKKyAgICAgICAqLwogICAgIHNzcGlfc3RhdHVzID0KICAgICAgIHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwgKFRDSEFSICopVU5JU1BfTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCkBAIC0yMTAsNiArMjMwLDYwIEBACiAgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiB1c2luZyBJUCBhZGRyZXNzLCBTTkkgaXMgbm90IHN1cHBvcnRlZCBieSBPUy5cbiIpOwogICB9CiAKKyNpZmRlZiBIQVNfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIGludCBjdXIgPSAwOworICAgIGludCBsaXN0X3N0YXJ0X2luZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQqIGV4dGVuc2lvbl9sZW4gPSBOVUxMOworICAgIHVuc2lnbmVkIHNob3J0KiBsaXN0X2xlbiA9IE5VTEw7CisKKyAgICAvKiBUaGUgZmlyc3QgZm91ciBieXRlcyB3aWxsIGJlIGFuIHVuc2lnbmVkIGludCBpbmRpY2F0aW5nIG51bWJlcgorICAgICAgIG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhlIHJlc3Qgb2YgdGhlIHRoZSBidWZmZXIuICovCisgICAgZXh0ZW5zaW9uX2xlbiA9ICh1bnNpZ25lZCBpbnQqKSgmYWxwbl9idWZmZXJbY3VyXSk7CisgICAgY3VyICs9IHNpemVvZih1bnNpZ25lZCBpbnQpOworCisgICAgLyogVGhlIG5leHQgZm91ciBieXRlcyBhcmUgYW4gaW5kaWNhdG9yIHRoYXQgdGhpcyBidWZmZXIgd2lsbCBjb250YWluCisgICAgICAgQUxQTiBkYXRhLCBhcyBvcHBvc2VkIHRvIE5QTiwgZm9yIGV4YW1wbGUuICovCisgICAgKih1bnNpZ25lZCBpbnQqKSZhbHBuX2J1ZmZlcltjdXJdID0KKyAgICAgIFNlY0FwcGxpY2F0aW9uUHJvdG9jb2xOZWdvdGlhdGlvbkV4dF9BTFBOOworICAgIGN1ciArPSBzaXplb2YodW5zaWduZWQgaW50KTsKKworICAgIC8qIFRoZSBuZXh0IHR3byBieXRlcyB3aWxsIGJlIGFuIHVuc2lnbmVkIHNob3J0IGluZGljYXRpbmcgdGhlIG51bWJlcgorICAgICAgIG9mIGJ5dGVzIHVzZWQgdG8gbGlzdCB0aGUgcHJlZmVycmVkIHByb3RvY29scy4gKi8KKyAgICBsaXN0X2xlbiA9ICh1bnNpZ25lZCBzaG9ydCopKCZhbHBuX2J1ZmZlcltjdXJdKTsKKyAgICBjdXIgKz0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKworICAgIGxpc3Rfc3RhcnRfaW5kZXggPSBjdXI7CisKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CisgICAgICBtZW1jcHkoJmFscG5fYnVmZmVyW2N1cl0sIE5HSFRUUDJfUFJPVE9fQUxQTiwgTkdIVFRQMl9QUk9UT19BTFBOX0xFTik7CisgICAgICBjdXIgKz0gTkdIVFRQMl9QUk9UT19BTFBOX0xFTjsKKyAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCk7CisgICAgfQorI2VuZGlmCisKKyAgICBhbHBuX2J1ZmZlcltjdXIrK10gPSBBTFBOX0hUVFBfMV8xX0xFTkdUSDsKKyAgICBtZW1jcHkoJmFscG5fYnVmZmVyW2N1cl0sIEFMUE5fSFRUUF8xXzEsIEFMUE5fSFRUUF8xXzFfTEVOR1RIKTsKKyAgICBjdXIgKz0gQUxQTl9IVFRQXzFfMV9MRU5HVEg7CisgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiBBTFBOLCBvZmZlcmluZyAlc1xuIiwgQUxQTl9IVFRQXzFfMSk7CisKKyAgICAqbGlzdF9sZW4gPSBjdXJseF91aXRvdXMoY3VyIC0gbGlzdF9zdGFydF9pbmRleCk7CisgICAgKmV4dGVuc2lvbl9sZW4gPSAqbGlzdF9sZW4gKyBzaXplb2YodW5zaWduZWQgaW50KSArIHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CisKKyAgICBJbml0U2VjQnVmZmVyKCZpbmJ1ZiwgU0VDQlVGRkVSX0FQUExJQ0FUSU9OX1BST1RPQ09MUywgYWxwbl9idWZmZXIsIGN1cik7CisgICAgSW5pdFNlY0J1ZmZlckRlc2MoJmluYnVmX2Rlc2MsICZpbmJ1ZiwgMSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgSW5pdFNlY0J1ZmZlcigmaW5idWYsIFNFQ0JVRkZFUl9FTVBUWSwgTlVMTCwgMCk7CisgICAgSW5pdFNlY0J1ZmZlckRlc2MoJmluYnVmX2Rlc2MsICZpbmJ1ZiwgMSk7CisgIH0KKyNlbHNlIC8qIEhBU19BTFBOICovCisgIEluaXRTZWNCdWZmZXIoJmluYnVmLCBTRUNCVUZGRVJfRU1QVFksIE5VTEwsIDApOworICBJbml0U2VjQnVmZmVyRGVzYygmaW5idWZfZGVzYywgJmluYnVmLCAxKTsKKyNlbmRpZgorCiAgIC8qIHNldHVwIG91dHB1dCBidWZmZXIgKi8KICAgSW5pdFNlY0J1ZmZlcigmb3V0YnVmLCBTRUNCVUZGRVJfRU1QVFksIE5VTEwsIDApOwogICBJbml0U2VjQnVmZmVyRGVzYygmb3V0YnVmX2Rlc2MsICZvdXRidWYsIDEpOwpAQCAtMjMyLDExICszMDYsMTEgQEAKICAgaWYoIWhvc3RfbmFtZSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAotICAvKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1OTI0LmFzcHggKi8KKyAgLyogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzU5MjQuYXNweCAqLwogCiAgIHNzcGlfc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoCiAgICAgJmNvbm5zc2wtPmNyZWQtPmNyZWRfaGFuZGxlLCBOVUxMLCBob3N0X25hbWUsCi0gICAgY29ubnNzbC0+cmVxX2ZsYWdzLCAwLCAwLCBOVUxMLCAwLCAmY29ubnNzbC0+Y3R4dC0+Y3R4dF9oYW5kbGUsCisgICAgY29ubnNzbC0+cmVxX2ZsYWdzLCAwLCAwLCAmaW5idWZfZGVzYywgMCwgJmNvbm5zc2wtPmN0eHQtPmN0eHRfaGFuZGxlLAogICAgICZvdXRidWZfZGVzYywgJmNvbm5zc2wtPnJldF9mbGFncywgJmNvbm5zc2wtPmN0eHQtPnRpbWVfc3RhbXApOwogCiAgIEN1cmxfdW5pY29kZWZyZWUoaG9zdF9uYW1lKTsKQEAgLTM5OSw4ICs0NzMsOCBAQAogICAgIGlmKCFob3N0X25hbWUpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAotICAgIC8qIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzU5MjQuYXNweCAqLwotCisgICAgLyogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzU5MjQuYXNweAorICAgICAgICovCiAgICAgc3NwaV9zdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dCgKICAgICAgICZjb25uc3NsLT5jcmVkLT5jcmVkX2hhbmRsZSwgJmNvbm5zc2wtPmN0eHQtPmN0eHRfaGFuZGxlLAogICAgICAgaG9zdF9uYW1lLCBjb25uc3NsLT5yZXFfZmxhZ3MsIDAsIDAsICZpbmJ1Zl9kZXNjLCAwLCBOVUxMLApAQCAtNTI2LDYgKzYwMCwxMCBAQAogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwogICBzdHJ1Y3QgY3VybF9zY2hhbm5lbF9jcmVkICpvbGRfY3JlZCA9IE5VTEw7CisjaWZkZWYgSEFTX0FMUE4KKyAgU0VDVVJJVFlfU1RBVFVTIHNzcGlfc3RhdHVzID0gU0VDX0VfT0s7CisgIFNlY1BrZ0NvbnRleHRfQXBwbGljYXRpb25Qcm90b2NvbCBhbHBuX3Jlc3VsdDsKKyNlbmRpZgogICBib29sIGluY2FjaGU7CiAKICAgREVCVUdBU1NFUlQoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKTsKQEAgLTU1MSw2ICs2MjksNDEgQEAKICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CiAgIH0KIAorI2lmZGVmIEhBU19BTFBOCisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CisgICAgc3NwaV9zdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlDb250ZXh0QXR0cmlidXRlcygmY29ubnNzbC0+Y3R4dC0+Y3R4dF9oYW5kbGUsCisgICAgICBTRUNQS0dfQVRUUl9BUFBMSUNBVElPTl9QUk9UT0NPTCwgJmFscG5fcmVzdWx0KTsKKworICAgIGlmKHNzcGlfc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgICBmYWlsZihkYXRhLCAic2NoYW5uZWw6IGZhaWxlZCB0byByZXRyaWV2ZSBBTFBOIHJlc3VsdCIpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKworICAgIGlmKGFscG5fcmVzdWx0LlByb3RvTmVnb1N0YXR1cyA9PQorICAgICAgIFNlY0FwcGxpY2F0aW9uUHJvdG9jb2xOZWdvdGlhdGlvblN0YXR1c19TdWNjZXNzKSB7CisKKyAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogQUxQTiwgc2VydmVyIGFjY2VwdGVkIHRvIHVzZSAlLipzXG4iLAorICAgICAgICBhbHBuX3Jlc3VsdC5Qcm90b2NvbElkU2l6ZSwgYWxwbl9yZXN1bHQuUHJvdG9jb2xJZCk7CisKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgICAgaWYoYWxwbl9yZXN1bHQuUHJvdG9jb2xJZFNpemUgPT0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTiAmJgorICAgICAgICAgIW1lbWNtcChOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsIGFscG5fcmVzdWx0LlByb3RvY29sSWQsCisgICAgICAgICAgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTikpIHsKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgaWYoYWxwbl9yZXN1bHQuUHJvdG9jb2xJZFNpemUgPT0gQUxQTl9IVFRQXzFfMV9MRU5HVEggJiYKKyAgICAgICAgICFtZW1jbXAoQUxQTl9IVFRQXzFfMSwgYWxwbl9yZXN1bHQuUHJvdG9jb2xJZCwKKyAgICAgICAgICAgQUxQTl9IVFRQXzFfMV9MRU5HVEgpKSB7CisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBkaWQgbm90IGFncmVlIHRvIGEgcHJvdG9jb2xcbiIpOworICB9CisjZW5kaWYKKwogICAvKiBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIG9mIHRoZSBjcmVkZW50aWFsL3Nlc3Npb24gaGFuZGxlICovCiAgIGlmKGNvbm5zc2wtPmNyZWQgJiYgY29ubnNzbC0+Y3R4dCkgewogICAgIGNvbm5zc2wtPmNyZWQtPnJlZmNvdW50Kys7CkBAIC03NTEsNyArODY0LDcgQEAKICAgLyogY29weSBkYXRhIGludG8gb3V0cHV0IGJ1ZmZlciAqLwogICBtZW1jcHkob3V0YnVmWzFdLnB2QnVmZmVyLCBidWYsIGxlbik7CiAKLSAgLyogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NTM5MC5hc3B4ICovCisgIC8qIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1MzkwLmFzcHggKi8KICAgc3NwaV9zdGF0dXMgPSBzX3BTZWNGbi0+RW5jcnlwdE1lc3NhZ2UoJmNvbm5zc2wtPmN0eHQtPmN0eHRfaGFuZGxlLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0YnVmX2Rlc2MsIDApOwogCkBAIC05NjUsNyArMTA3OCw4IEBACiAgICAgSW5pdFNlY0J1ZmZlcigmaW5idWZbM10sIFNFQ0JVRkZFUl9FTVBUWSwgTlVMTCwgMCk7CiAgICAgSW5pdFNlY0J1ZmZlckRlc2MoJmluYnVmX2Rlc2MsIGluYnVmLCA0KTsKIAotICAgIC8qIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzUzNDguYXNweCAqLworICAgIC8qIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1MzQ4LmFzcHgKKyAgICAgICAqLwogICAgIHNzcGlfc3RhdHVzID0gc19wU2VjRm4tPkRlY3J5cHRNZXNzYWdlKCZjb25uc3NsLT5jdHh0LT5jdHh0X2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5idWZfZGVzYywgMCwgTlVMTCk7CiAKQEAgLTExMTIsMTIgKzEyMjYsNDEgQEAKICAgKi8KICAgaWYobGVuICYmICFjb25uc3NsLT5kZWNkYXRhX29mZnNldCAmJiBjb25uc3NsLT5yZWN2X2Nvbm5lY3Rpb25fY2xvc2VkICYmCiAgICAgICFjb25uc3NsLT5yZWN2X3NzcGlfY2xvc2Vfbm90aWZ5KSB7Ci0gICAgRFdPUkQgd2ludmVyX2Z1bGwsIHdpbnZlcl9tYWpvciwgd2ludmVyX21pbm9yOwotICAgIHdpbnZlcl9mdWxsID0gR2V0VmVyc2lvbigpOwotICAgIHdpbnZlcl9tYWpvciA9IChEV09SRCkoTE9CWVRFKExPV09SRCh3aW52ZXJfZnVsbCkpKTsKLSAgICB3aW52ZXJfbWlub3IgPSAoRFdPUkQpKEhJQllURShMT1dPUkQod2ludmVyX2Z1bGwpKSk7CisgICAgYm9vbCBpc1dpbjJrID0gRkFMU0U7CiAKLSAgICBpZih3aW52ZXJfbWFqb3IgPT0gNSAmJiB3aW52ZXJfbWlub3IgPT0gMCAmJiBzc3BpX3N0YXR1cyA9PSBTRUNfRV9PSykKKyNpZiAhZGVmaW5lZChfV0lOMzJfV0lOTlQpIHx8ICFkZWZpbmVkKF9XSU4zMl9XSU5OVF9XSU4ySykgfHwgXAorICAgIChfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOMkspCisgICAgT1NWRVJTSU9OSU5GTyBvc3ZlcjsKKworICAgIG1lbXNldCgmb3N2ZXIsIDAsIHNpemVvZihvc3ZlcikpOworICAgIG9zdmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yob3N2ZXIpOworCisgICAgLyogRmluZCBvdXQgdGhlIFdpbmRvd3MgdmVyc2lvbiAqLworICAgIGlmKEdldFZlcnNpb25FeCgmb3N2ZXIpKSB7CisgICAgICAvKiBWZXJpZnkgdGhlIHZlcnNpb24gbnVtYmVyIGlzIDUuMCAqLworICAgICAgaWYob3N2ZXIuZHdNYWpvclZlcnNpb24gPT0gNSAmJiBvc3Zlci5kd01pbm9yVmVyc2lvbiA9PSAwKQorICAgICAgICBpc1dpbjJrID0gVFJVRTsKKyAgICB9CisjZWxzZQorICAgIFVMT05HTE9ORyBjbTsKKyAgICBPU1ZFUlNJT05JTkZPRVggb3N2ZXI7CisKKyAgICBtZW1zZXQoJm9zdmVyLCAwLCBzaXplb2Yob3N2ZXIpKTsKKyAgICBvc3Zlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKG9zdmVyKTsKKyAgICBvc3Zlci5kd01ham9yVmVyc2lvbiA9IDU7CisKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soMCwgVkVSX01BSk9SVkVSU0lPTiwgVkVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9NSU5PUlZFUlNJT04sIFZFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfU0VSVklDRVBBQ0tNQUpPUiwgVkVSX0dSRUFURVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX1NFUlZJQ0VQQUNLTUlOT1IsIFZFUl9HUkVBVEVSX0VRVUFMKTsKKworICAgIGlmKFZlcmlmeVZlcnNpb25JbmZvKCZvc3ZlciwgKFZFUl9NQUpPUlZFUlNJT04gfCBWRVJfTUlOT1JWRVJTSU9OIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJfU0VSVklDRVBBQ0tNQUpPUiB8IFZFUl9TRVJWSUNFUEFDS01JTk9SKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbSkpCisgICAgICBpc1dpbjJrID0gVFJVRTsKKyNlbmRpZgorCisgICAgaWYoaXNXaW4yayAmJiBzc3BpX3N0YXR1cyA9PSBTRUNfRV9PSykKICAgICAgIGNvbm5zc2wtPnJlY3Zfc3NwaV9jbG9zZV9ub3RpZnkgPSB0cnVlOwogICAgIGVsc2UgewogICAgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CkBAIC0xMTgzLDcgKzEzMjYsNyBAQAogCiAgIGlmKGNvbm5zc2wtPnVzZSkgLyogU1NML1RMUyBpcyBpbiB1c2UgKi8KICAgICByZXR1cm4gKGNvbm5zc2wtPmVuY2RhdGFfb2Zmc2V0ID4gMCB8fAotICAgICAgICAgICAgY29ubnNzbC0+ZGVjZGF0YV9vZmZzZXQgPiAwICkgPyBUUlVFIDogRkFMU0U7CisgICAgICAgICAgICBjb25uc3NsLT5kZWNkYXRhX29mZnNldCA+IDApID8gVFJVRSA6IEZBTFNFOwogICBlbHNlCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMTE5Nyw3ICsxMzQwLDcgQEAKIAogaW50IEN1cmxfc2NoYW5uZWxfc2h1dGRvd24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KQogewotICAvKiBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM4MDEzOC5hc3B4CisgIC8qIFNlZSBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM4MDEzOC5hc3B4CiAgICAqIFNodXR0aW5nIERvd24gYW4gU2NoYW5uZWwgQ29ubmVjdGlvbgogICAgKi8KICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwpAQCAtMTM4NCw3ICsxNTI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENlcnRDb250ZXh0U2VydmVyLT5oQ2VydFN0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ2hhaW5QYXJhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YS0+c2V0LnNzbF9ub19yZXZva2UgPyAwIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRfQ0hBSU5fUkVWT0NBVElPTl9DSEVDS19DSEFJTiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwQ2hhaW5Db250ZXh0KSkgewogICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiBmYWlsZWQ6ICVzIiwKQEAgLTEzOTUsMjEgKzE1MzksMjQgQEAKIAogICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PSykgewogICAgICAgQ0VSVF9TSU1QTEVfQ0hBSU4gKnBTaW1wbGVDaGFpbiA9IHBDaGFpbkNvbnRleHQtPnJncENoYWluWzBdOwotICAgICAgRFdPUkQgZHdUcnVzdEVycm9yTWFzayA9IH4oRFdPUkQpKENFUlRfVFJVU1RfSVNfTk9UX1RJTUVfTkVTVEVEfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRfVFJVU1RfUkVWT0NBVElPTl9TVEFUVVNfVU5LTk9XTik7CisgICAgICBEV09SRCBkd1RydXN0RXJyb3JNYXNrID0gfihEV09SRCkoQ0VSVF9UUlVTVF9JU19OT1RfVElNRV9ORVNURUQpOwogICAgICAgZHdUcnVzdEVycm9yTWFzayAmPSBwU2ltcGxlQ2hhaW4tPlRydXN0U3RhdHVzLmR3RXJyb3JTdGF0dXM7CiAgICAgICBpZihkd1RydXN0RXJyb3JNYXNrKSB7Ci0gICAgICAgIGlmKGR3VHJ1c3RFcnJvck1hc2sgJiBDRVJUX1RSVVNUX0lTX1BBUlRJQUxfQ0hBSU4pCisgICAgICAgIGlmKGR3VHJ1c3RFcnJvck1hc2sgJiBDRVJUX1RSVVNUX0lTX1JFVk9LRUQpCisgICAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiB0cnVzdCBlcnJvciIKKyAgICAgICAgICAgICAgICAiIENFUlRfVFJVU1RfSVNfUkVWT0tFRCIpOworICAgICAgICBlbHNlIGlmKGR3VHJ1c3RFcnJvck1hc2sgJiBDRVJUX1RSVVNUX0lTX1BBUlRJQUxfQ0hBSU4pCiAgICAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiB0cnVzdCBlcnJvciIKICAgICAgICAgICAgICAgICAiIENFUlRfVFJVU1RfSVNfUEFSVElBTF9DSEFJTiIpOwotICAgICAgICBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19VTlRSVVNURURfUk9PVCkKKyAgICAgICAgZWxzZSBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19VTlRSVVNURURfUk9PVCkKICAgICAgICAgICBmYWlsZihkYXRhLCAic2NoYW5uZWw6IENlcnRHZXRDZXJ0aWZpY2F0ZUNoYWluIHRydXN0IGVycm9yIgogICAgICAgICAgICAgICAgICIgQ0VSVF9UUlVTVF9JU19VTlRSVVNURURfUk9PVCIpOwotICAgICAgICBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19OT1RfVElNRV9WQUxJRCkKKyAgICAgICAgZWxzZSBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19OT1RfVElNRV9WQUxJRCkKICAgICAgICAgICBmYWlsZihkYXRhLCAic2NoYW5uZWw6IENlcnRHZXRDZXJ0aWZpY2F0ZUNoYWluIHRydXN0IGVycm9yIgogICAgICAgICAgICAgICAgICIgQ0VSVF9UUlVTVF9JU19OT1RfVElNRV9WQUxJRCIpOwotICAgICAgICBmYWlsZihkYXRhLCAic2NoYW5uZWw6IENlcnRHZXRDZXJ0aWZpY2F0ZUNoYWluIGVycm9yIG1hc2s6IDB4JTA4eCIsCi0gICAgICAgICAgICAgIGR3VHJ1c3RFcnJvck1hc2spOworICAgICAgICBlbHNlCisgICAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiBlcnJvciBtYXNrOiAweCUwOHgiLAorICAgICAgICAgICAgICAgIGR3VHJ1c3RFcnJvck1hc2spOwogICAgICAgICByZXN1bHQgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CiAgICAgICB9CiAgICAgfQpAQCAtMTQyNSw2ICsxNTcyLDE0IEBACiAgICAgICBjZXJ0X2hvc3RuYW1lLmNvbnN0X3RjaGFyX3B0ciA9IGNlcnRfaG9zdG5hbWVfYnVmZjsKICAgICAgIGhvc3RuYW1lLnRjaGFyX3B0ciA9IEN1cmxfY29udmVydF9VVEY4X3RvX3RjaGFyKGNvbm4tPmhvc3QubmFtZSk7CiAKKyAgICAgIC8qIFRPRE86IEZpeCB0aGlzIGZvciBjZXJ0aWZpY2F0ZXMgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGl2ZSBuYW1lcy4KKyAgICAgIFJpZ2h0IG5vdyB3ZSdyZSBvbmx5IGFza2luZyBmb3IgdGhlIGZpcnN0IHByZWZlcnJlZCBhbHRlcm5hdGl2ZSBuYW1lLgorICAgICAgSW5zdGVhZCB3ZSdkIG5lZWQgdG8gZG8gYWxsIHZpYSBDRVJUX05BTUVfU0VBUkNIX0FMTF9OQU1FU19GTEFHCisgICAgICAoaWYgV2luQ0Ugc3VwcG9ydHMgdGhhdD8pIGFuZCBydW4gdGhpcyBzZWN0aW9uIGluIGEgbG9vcCBmb3IgZWFjaC4KKyAgICAgIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc2MDg2LmFzcHgKKyAgICAgIGN1cmw6ICg1MSkgc2NoYW5uZWw6IENlcnRHZXROYW1lU3RyaW5nKCkgY2VydGlmaWNhdGUgaG9zdG5hbWUKKyAgICAgICguZ29vZ2xlLmNvbSkgZGlkIG5vdCBtYXRjaCBjb25uZWN0aW9uIChnb29nbGUuY29tKQorICAgICAgKi8KICAgICAgIGxlbiA9IENlcnRHZXROYW1lU3RyaW5nKHBDZXJ0Q29udGV4dFNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRfTkFNRV9ETlNfVFlQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCmRpZmYgLS1naXQgYS9saWIvdnRscy9zY2hhbm5lbC5oIGIvbGliL3Z0bHMvc2NoYW5uZWwuaAppbmRleCA1MzI5NTg0Li5hMzE0YjM0IDEwMDY0NAotLS0gYS9saWIvdnRscy9zY2hhbm5lbC5oCisrKyBiL2xpYi92dGxzL3NjaGFubmVsLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvdnRscy92dGxzLmMgYi9saWIvdnRscy92dGxzLmMKaW5kZXggNDJhMmI1OC4uY2E1MDVhNyAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvdnRscy5jCisrKyBiL2xpYi92dGxzL3Z0bHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQxLDcgKzQxLDcgQEAKICAgIGRlZmluZXMvbWFjcm9zICNkZWZpbmVkIGJ5IHRoZSBsaWItc3BlY2lmaWMgaGVhZGVyIGZpbGVzLgogCiAgICAiU1NML1RMUyBTdHJvbmcgRW5jcnlwdGlvbjogQW4gSW50cm9kdWN0aW9uIgotICAgaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy0yLjAvc3NsL3NzbF9pbnRyby5odG1sCisgICBodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjAvc3NsL3NzbF9pbnRyby5odG1sCiAqLwogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgpAQCAtMzYzLDYgKzM2MywxMiBAQAogICAgICAgLyogbm90IHNlc3Npb24gSUQgbWVhbnMgYmxhbmsgZW50cnkgKi8KICAgICAgIGNvbnRpbnVlOwogICAgIGlmKEN1cmxfcmF3X2VxdWFsKGNvbm4tPmhvc3QubmFtZSwgY2hlY2stPm5hbWUpICYmCisgICAgICAgKCghY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgJiYgIWNoZWNrLT5jb25uX3RvX2hvc3QpIHx8CisgICAgICAgICAoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgJiYgY2hlY2stPmNvbm5fdG9faG9zdCAmJgorICAgICAgICAgICBDdXJsX3Jhd19lcXVhbChjb25uLT5jb25uX3RvX2hvc3QubmFtZSwgY2hlY2stPmNvbm5fdG9faG9zdCkpKSAmJgorICAgICAgICgoIWNvbm4tPmJpdHMuY29ubl90b19wb3J0ICYmIGNoZWNrLT5jb25uX3RvX3BvcnQgPT0gLTEpIHx8CisgICAgICAgICAoY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgJiYgY2hlY2stPmNvbm5fdG9fcG9ydCAhPSAtMSAmJgorICAgICAgICAgICBjb25uLT5jb25uX3RvX3BvcnQgPT0gY2hlY2stPmNvbm5fdG9fcG9ydCkpICYmCiAgICAgICAgKGNvbm4tPnJlbW90ZV9wb3J0ID09IGNoZWNrLT5yZW1vdGVfcG9ydCkgJiYKICAgICAgICBDdXJsX3NzbF9jb25maWdfbWF0Y2hlcygmY29ubi0+c3NsX2NvbmZpZywgJmNoZWNrLT5zc2xfY29uZmlnKSkgewogICAgICAgLyogeWVzLCB3ZSBoYXZlIGEgc2Vzc2lvbiBJRCEgKi8KQEAgLTQwMCw2ICs0MDYsNyBAQAogICAgIEN1cmxfZnJlZV9zc2xfY29uZmlnKCZzZXNzaW9uLT5zc2xfY29uZmlnKTsKIAogICAgIEN1cmxfc2FmZWZyZWUoc2Vzc2lvbi0+bmFtZSk7CisgICAgQ3VybF9zYWZlZnJlZShzZXNzaW9uLT5jb25uX3RvX2hvc3QpOwogICB9CiB9CiAKQEAgLTQ0Miw2ICs0NDksOCBAQAogICBzdHJ1Y3QgY3VybF9zc2xfc2Vzc2lvbiAqc3RvcmUgPSAmZGF0YS0+c3RhdGUuc2Vzc2lvblswXTsKICAgbG9uZyBvbGRlc3RfYWdlPWRhdGEtPnN0YXRlLnNlc3Npb25bMF0uYWdlOyAvKiB6ZXJvIGlmIHVudXNlZCAqLwogICBjaGFyICpjbG9uZV9ob3N0OworICBjaGFyICpjbG9uZV9jb25uX3RvX2hvc3Q7CisgIGludCBjb25uX3RvX3BvcnQ7CiAgIGxvbmcgKmdlbmVyYWxfYWdlOwogCiAgIC8qIEV2ZW4gdGhvdWdoIHNlc3Npb24gSUQgcmUtdXNlIG1pZ2h0IGJlIGRpc2FibGVkLCB0aGF0IG9ubHkgZGlzYWJsZXMgVVNJTkcKQEAgLTQ1Miw2ICs0NjEsMjEgQEAKICAgaWYoIWNsb25lX2hvc3QpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7IC8qIGJhaWwgb3V0ICovCiAKKyAgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QpIHsKKyAgICBjbG9uZV9jb25uX3RvX2hvc3QgPSBzdHJkdXAoY29ubi0+Y29ubl90b19ob3N0Lm5hbWUpOworICAgIGlmKCFjbG9uZV9jb25uX3RvX2hvc3QpIHsKKyAgICAgIGZyZWUoY2xvbmVfaG9zdCk7CisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsgLyogYmFpbCBvdXQgKi8KKyAgICB9CisgIH0KKyAgZWxzZQorICAgIGNsb25lX2Nvbm5fdG9faG9zdCA9IE5VTEw7CisKKyAgaWYoY29ubi0+Yml0cy5jb25uX3RvX3BvcnQpCisgICAgY29ubl90b19wb3J0ID0gY29ubi0+Y29ubl90b19wb3J0OworICBlbHNlCisgICAgY29ubl90b19wb3J0ID0gLTE7CisKICAgLyogTm93IHdlIHNob3VsZCBhZGQgdGhlIHNlc3Npb24gSUQgYW5kIHRoZSBob3N0IG5hbWUgdG8gdGhlIGNhY2hlLCAocmVtb3ZlCiAgICAgIHRoZSBvbGRlc3QgaWYgbmVjZXNzYXJ5KSAqLwogCkBAIC00ODQsMTAgKzUwOCwxMiBAQAogICBzdG9yZS0+YWdlID0gKmdlbmVyYWxfYWdlOyAgICAvKiBzZXQgY3VycmVudCBhZ2UgKi8KICAgICAvKiBmcmVlIGl0IGlmIHRoZXJlJ3Mgb25lIGFscmVhZHkgcHJlc2VudCAqLwogICBmcmVlKHN0b3JlLT5uYW1lKTsKKyAgZnJlZShzdG9yZS0+Y29ubl90b19ob3N0KTsKICAgc3RvcmUtPm5hbWUgPSBjbG9uZV9ob3N0OyAgICAgICAgICAgICAgIC8qIGNsb25lIGhvc3QgbmFtZSAqLworICBzdG9yZS0+Y29ubl90b19ob3N0ID0gY2xvbmVfY29ubl90b19ob3N0OyAvKiBjbG9uZSBjb25uZWN0IHRvIGhvc3QgbmFtZSAqLworICBzdG9yZS0+Y29ubl90b19wb3J0ID0gY29ubl90b19wb3J0OyAvKiBjb25uZWN0IHRvIHBvcnQgbnVtYmVyICovCiAgIHN0b3JlLT5yZW1vdGVfcG9ydCA9IGNvbm4tPnJlbW90ZV9wb3J0OyAvKiBwb3J0IG51bWJlciAqLwogCi0KICAgLyogVW5sb2NrICovCiAgIGlmKFNTTFNFU1NJT05fU0hBUkVEKGRhdGEpKQogICAgIEN1cmxfc2hhcmVfdW5sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX1NTTF9TRVNTSU9OKTsKQEAgLTQ5NSw2ICs1MjEsNyBAQAogICBpZighQ3VybF9jbG9uZV9zc2xfY29uZmlnKCZjb25uLT5zc2xfY29uZmlnLCAmc3RvcmUtPnNzbF9jb25maWcpKSB7CiAgICAgc3RvcmUtPnNlc3Npb25pZCA9IE5VTEw7IC8qIGxldCBjYWxsZXIgZnJlZSBzZXNzaW9uaWQgKi8KICAgICBmcmVlKGNsb25lX2hvc3QpOworICAgIGZyZWUoY2xvbmVfY29ubl90b19ob3N0KTsKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCkBAIC03NjUsNyArNzkyLDggQEAKICAqIEdlbmVyaWMgcGlubmVkIHB1YmxpYyBrZXkgY2hlY2suCiAgKi8KIAotQ1VSTGNvZGUgQ3VybF9waW5fcGVlcl9wdWJrZXkoY29uc3QgY2hhciAqcGlubmVkcHVia2V5LAorQ1VSTGNvZGUgQ3VybF9waW5fcGVlcl9wdWJrZXkoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwaW5uZWRwdWJrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdWJrZXksIHNpemVfdCBwdWJrZXlsZW4pCiB7CiAgIEZJTEUgKmZwOwpAQCAtNzc0LDEyICs4MDIsODEgQEAKICAgc2l6ZV90IHNpemUsIHBlbV9sZW47CiAgIENVUkxjb2RlIHBlbV9yZWFkOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisjaWZkZWYgY3VybHNzbF9zaGEyNTZzdW0KKyAgQ1VSTGNvZGUgZW5jb2RlOworICBzaXplX3QgZW5jb2RlZGxlbiwgcGlua2V5bGVuOworICBjaGFyICplbmNvZGVkLCAqcGlua2V5Y29weSwgKmJlZ2luX3BvcywgKmVuZF9wb3M7CisgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bWRpZ2VzdCA9IE5VTEw7CisjZW5kaWYKIAogICAvKiBpZiBhIHBhdGggd2Fzbid0IHNwZWNpZmllZCwgZG9uJ3QgcGluICovCiAgIGlmKCFwaW5uZWRwdWJrZXkpCiAgICAgcmV0dXJuIENVUkxFX09LOwogICBpZighcHVia2V5IHx8ICFwdWJrZXlsZW4pCiAgICAgcmV0dXJuIHJlc3VsdDsKKworICAvKiBvbmx5IGRvIHRoaXMgaWYgcGlubmVkcHVia2V5IHN0YXJ0cyB3aXRoICJzaGEyNTYvLyIsIGxlbmd0aCA4ICovCisgIGlmKHN0cm5jbXAocGlubmVkcHVia2V5LCAic2hhMjU2Ly8iLCA4KSA9PSAwKSB7CisjaWZkZWYgY3VybHNzbF9zaGEyNTZzdW0KKyAgICAvKiBjb21wdXRlIHNoYTI1NnN1bSBvZiBwdWJsaWMga2V5ICovCisgICAgc2hhMjU2c3VtZGlnZXN0ID0gbWFsbG9jKFNIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICBpZighc2hhMjU2c3VtZGlnZXN0KQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgY3VybHNzbF9zaGEyNTZzdW0ocHVia2V5LCBwdWJrZXlsZW4sCisgICAgICAgICAgICAgICAgICAgICAgc2hhMjU2c3VtZGlnZXN0LCBTSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgZW5jb2RlID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopc2hhMjU2c3VtZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEEyNTZfRElHRVNUX0xFTkdUSCwgJmVuY29kZWQsICZlbmNvZGVkbGVuKTsKKyAgICBDdXJsX3NhZmVmcmVlKHNoYTI1NnN1bWRpZ2VzdCk7CisKKyAgICBpZihlbmNvZGUpCisgICAgICByZXR1cm4gZW5jb2RlOworCisgICAgaW5mb2YoZGF0YSwgIlx0IHB1YmxpYyBrZXkgaGFzaDogc2hhMjU2Ly8lc1xuIiwgZW5jb2RlZCk7CisKKyAgICAvKiBpdCBzdGFydHMgd2l0aCBzaGEyNTYvLywgY29weSBzbyB3ZSBjYW4gbW9kaWZ5IGl0ICovCisgICAgcGlua2V5bGVuID0gc3RybGVuKHBpbm5lZHB1YmtleSkgKyAxOworICAgIHBpbmtleWNvcHkgPSBtYWxsb2MocGlua2V5bGVuKTsKKyAgICBpZighcGlua2V5Y29weSkgeworICAgICAgQ3VybF9zYWZlZnJlZShlbmNvZGVkKTsKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIH0KKyAgICBtZW1jcHkocGlua2V5Y29weSwgcGlubmVkcHVia2V5LCBwaW5rZXlsZW4pOworICAgIC8qIHBvaW50IGJlZ2luX3BvcyB0byB0aGUgY29weSwgYW5kIHN0YXJ0IGV4dHJhY3Rpbmcga2V5cyAqLworICAgIGJlZ2luX3BvcyA9IHBpbmtleWNvcHk7CisgICAgZG8geworICAgICAgZW5kX3BvcyA9IHN0cnN0cihiZWdpbl9wb3MsICI7c2hhMjU2Ly8iKTsKKyAgICAgIC8qCisgICAgICAgKiBpZiB0aGVyZSBpcyBhbiBlbmRfcG9zLCBudWxsIHRlcm1pbmF0ZSwKKyAgICAgICAqIG90aGVyd2lzZSBpdCdsbCBnbyB0byB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcKKyAgICAgICAqLworICAgICAgaWYoZW5kX3BvcykKKyAgICAgICAgZW5kX3Bvc1swXSA9ICdcMCc7CisKKyAgICAgIC8qIGNvbXBhcmUgYmFzZTY0IHNoYTI1NiBkaWdlc3RzLCA4IGlzIHRoZSBsZW5ndGggb2YgInNoYTI1Ni8vIiAqLworICAgICAgaWYoZW5jb2RlZGxlbiA9PSBzdHJsZW4oYmVnaW5fcG9zICsgOCkgJiYKKyAgICAgICAgICFtZW1jbXAoZW5jb2RlZCwgYmVnaW5fcG9zICsgOCwgZW5jb2RlZGxlbikpIHsKKyAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT0s7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICAvKgorICAgICAgICogY2hhbmdlIGJhY2sgdGhlIG51bGwtdGVybWluYXRvciB3ZSBjaGFuZ2VkIGVhcmxpZXIsCisgICAgICAgKiBhbmQgbG9vayBmb3IgbmV4dCBiZWdpbgorICAgICAgICovCisgICAgICBpZihlbmRfcG9zKSB7CisgICAgICAgIGVuZF9wb3NbMF0gPSAnOyc7CisgICAgICAgIGJlZ2luX3BvcyA9IHN0cnN0cihlbmRfcG9zLCAic2hhMjU2Ly8iKTsKKyAgICAgIH0KKyAgICB9IHdoaWxlKGVuZF9wb3MgJiYgYmVnaW5fcG9zKTsKKyAgICBDdXJsX3NhZmVmcmVlKGVuY29kZWQpOworICAgIEN1cmxfc2FmZWZyZWUocGlua2V5Y29weSk7CisjZWxzZQorICAgIC8qIHdpdGhvdXQgc2hhMjU2IHN1cHBvcnQsIHRoaXMgY2Fubm90IG1hdGNoICovCisgICAgKHZvaWQpZGF0YTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKwogICBmcCA9IGZvcGVuKHBpbm5lZHB1YmtleSwgInJiIik7CiAgIGlmKCFmcCkKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvdnRscy5oIGIvbGliL3Z0bHMvdnRscy5oCmluZGV4IGI5NzQxZDcuLjMxYmE5ZmMgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL3Z0bHMuaAorKysgYi9saWIvdnRscy92dGxzLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY3lhc3NsLmgiICAgICAgICAgLyogQ3lhU1NMIHZlcnNpb25zICovCiAjaW5jbHVkZSAic2NoYW5uZWwuaCIgICAgICAgLyogU2NoYW5uZWwgU1NQSSB2ZXJzaW9uICovCiAjaW5jbHVkZSAiZGFyd2luc3NsLmgiICAgICAgLyogU2VjdXJlVHJhbnNwb3J0IChEYXJ3aW4pIHZlcnNpb24gKi8KKyNpbmNsdWRlICJtYmVkdGxzLmgiICAgICAgICAvKiBtYmVkVExTIHZlcnNpb25zICovCiAKICNpZm5kZWYgTUFYX1BJTk5FRF9QVUJLRVlfU0laRQogI2RlZmluZSBNQVhfUElOTkVEX1BVQktFWV9TSVpFIDEwNDg1NzYgLyogMU1CICovCkBAIC00MSw3ICs0MiwxMSBAQAogI2RlZmluZSBNRDVfRElHRVNUX0xFTkdUSCAxNiAvKiBmaXhlZCBzaXplICovCiAjZW5kaWYKIAotLyogc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtdGxzLWFwcGxheWVycHJvdG9uZWctMDQgKi8KKyNpZm5kZWYgU0hBMjU2X0RJR0VTVF9MRU5HVEgKKyNkZWZpbmUgU0hBMjU2X0RJR0VTVF9MRU5HVEggMzIgLyogZml4ZWQgc2l6ZSAqLworI2VuZGlmCisKKy8qIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi10bHMtYXBwbGF5ZXJwcm90b25lZy0wNCAqLwogI2RlZmluZSBBTFBOX0hUVFBfMV8xX0xFTkdUSCA4CiAjZGVmaW5lIEFMUE5fSFRUUF8xXzEgImh0dHAvMS4xIgogCkBAIC05NCw3ICs5OSw3IEBACiAvKiBleHRyYWN0IGEgc2Vzc2lvbiBJRCAqLwogYm9vbCBDdXJsX3NzbF9nZXRzZXNzaW9uaWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnNzbF9zZXNzaW9uaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmlkc2l6ZSkgLyogc2V0IDAgaWYgdW5rbm93biAqLzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqaWRzaXplKTsgLyogc2V0IDAgaWYgdW5rbm93biAqLwogLyogYWRkIGEgbmV3IHNlc3Npb24gSUQgKi8KIENVUkxjb2RlIEN1cmxfc3NsX2FkZHNlc3Npb25pZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3NsX3Nlc3Npb25pZCwKQEAgLTExMyw3ICsxMTgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1kNXN1bSwgLyogb3V0cHV0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1kNWxlbik7CiAvKiBDaGVjayBwaW5uZWQgcHVibGljIGtleS4gKi8KLUNVUkxjb2RlIEN1cmxfcGluX3BlZXJfcHVia2V5KGNvbnN0IGNoYXIgKnBpbm5lZHB1YmtleSwKK0NVUkxjb2RlIEN1cmxfcGluX3BlZXJfcHVia2V5KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGlubmVkcHVia2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHVia2V5LCBzaXplX3QgcHVia2V5bGVuKTsKIAogYm9vbCBDdXJsX3NzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvbGliL3dhcm5sZXNzLmMgYi9saWIvd2Fybmxlc3MuYwppbmRleCA5NDgyYjQ0Li43Zjg3NzhmIDEwMDY0NAotLS0gYS9saWIvd2Fybmxlc3MuYworKysgYi9saWIvd2Fybmxlc3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxNiw2ICszMTYsNjMgQEAKIH0KIAogLyoKKyoqIHVuc2lnbmVkIGludCB0byB1bnNpZ25lZCBzaG9ydAorKi8KKwordW5zaWduZWQgc2hvcnQgY3VybHhfdWl0b3VzKHVuc2lnbmVkIGludCB1aW51bSkKK3sKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjICBwcmFnbWEgd2FybmluZyhwdXNoKQorIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo4MTApIC8qIGNvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cyAqLworI2VuZGlmCisKKyAgREVCVUdBU1NFUlQodWludW0gPD0gKHVuc2lnbmVkIGludCkgQ1VSTF9NQVNLX1VTSE9SVCk7CisgIHJldHVybiAodW5zaWduZWQgc2hvcnQpICh1aW51bSAmICh1bnNpZ25lZCBpbnQpIENVUkxfTUFTS19VU0hPUlQpOworCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyAgcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCit9CisKKy8qCisqKiB1bnNpZ25lZCBpbnQgdG8gdW5zaWduZWQgY2hhcgorKi8KKwordW5zaWduZWQgY2hhciBjdXJseF91aXRvdWModW5zaWduZWQgaW50IHVpbnVtKQoreworI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCisjICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjgxMCkgLyogY29udmVyc2lvbiBtYXkgbG9zZSBzaWduaWZpY2FudCBiaXRzICovCisjZW5kaWYKKworICBERUJVR0FTU0VSVCh1aW51bSA8PSAodW5zaWduZWQgaW50KSBDVVJMX01BU0tfVUNIQVIpOworICByZXR1cm4gKHVuc2lnbmVkIGNoYXIpICh1aW51bSAmICh1bnNpZ25lZCBpbnQpIENVUkxfTUFTS19VQ0hBUik7CisKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjICBwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKK30KKworLyoKKyoqIHVuc2lnbmVkIGludCB0byBzaWduZWQgaW50CisqLworCitpbnQgY3VybHhfdWl0b3NpKHVuc2lnbmVkIGludCB1aW51bSkKK3sKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjICBwcmFnbWEgd2FybmluZyhwdXNoKQorIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo4MTApIC8qIGNvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cyAqLworI2VuZGlmCisKKyAgREVCVUdBU1NFUlQodWludW0gPD0gKHVuc2lnbmVkIGludCkgQ1VSTF9NQVNLX1NJTlQpOworICByZXR1cm4gKGludCkgKHVpbnVtICYgKHVuc2lnbmVkIGludCkgQ1VSTF9NQVNLX1NJTlQpOworCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyAgcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCit9CisKKy8qCiAqKiBzaWduZWQgaW50IHRvIHVuc2lnbmVkIHNpemVfdAogKi8KIApkaWZmIC0tZ2l0IGEvbGliL3dhcm5sZXNzLmggYi9saWIvd2Fybmxlc3MuaAppbmRleCBhZDc3ZDNjLi5hYjZkMjk5IDEwMDY0NAotLS0gYS9saWIvd2Fybmxlc3MuaAorKysgYi9saWIvd2Fybmxlc3MuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUyLDYgKzUyLDEyIEBACiAKIGludCBjdXJseF9zenRvc2koc3NpemVfdCBzem51bSk7CiAKK3Vuc2lnbmVkIHNob3J0IGN1cmx4X3VpdG91cyh1bnNpZ25lZCBpbnQgdWludW0pOworCit1bnNpZ25lZCBjaGFyIGN1cmx4X3VpdG91Yyh1bnNpZ25lZCBpbnQgdWludW0pOworCitpbnQgY3VybHhfdWl0b3NpKHVuc2lnbmVkIGludCB1aW51bSk7CisKIHNpemVfdCBjdXJseF9zaXRvdXooaW50IHNpbnVtKTsKIAogI2lmZGVmIFVTRV9XSU5TT0NLCmRpZmYgLS1naXQgYS9saWIvd2lsZGNhcmQuYyBiL2xpYi93aWxkY2FyZC5jCmluZGV4IDZmNTU4MzkuLmRiYmU0NWYgMTAwNjQ0Ci0tLSBhL2xpYi93aWxkY2FyZC5jCisrKyBiL2xpYi93aWxkY2FyZC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgIndpbGRjYXJkLmgiCiAjaW5jbHVkZSAibGxpc3QuaCIKICNpbmNsdWRlICJmaWxlaW5mby5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIENVUkxjb2RlIEN1cmxfd2lsZGNhcmRfaW5pdChzdHJ1Y3QgV2lsZGNhcmREYXRhICp3YykKZGlmZiAtLWdpdCBhL2xpYi93aWxkY2FyZC5oIGIvbGliL3dpbGRjYXJkLmgKaW5kZXggMTZjODBlYy4uN2Q2Njk5MiAxMDA2NDQKLS0tIGEvbGliL3dpbGRjYXJkLmgKKysrIGIvbGliL3dpbGRjYXJkLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIveDUwOWFzbjEuYyBiL2xpYi94NTA5YXNuMS5jCmluZGV4IGEzZGZkNjQuLmMyMjFiYTAgMTAwNjQ0Ci0tLSBhL2xpYi94NTA5YXNuMS5jCisrKyBiL2xpYi94NTA5YXNuMS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsOSArMzQsMTAgQEAKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKICNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgogI2luY2x1ZGUgIng1MDlhc24xLmgiCisKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAKQEAgLTEwNjEsNyArMTA2Miw2IEBACiAgIGN1cmxfYXNuMUVsZW1lbnQgZWxlbTsKICAgY3VybF9hc24xRWxlbWVudCBleHQ7CiAgIGN1cmxfYXNuMUVsZW1lbnQgbmFtZTsKLSAgaW50IGk7CiAgIGNvbnN0IGNoYXIgKiBwOwogICBjb25zdCBjaGFyICogcTsKICAgY2hhciAqIGRuc25hbWU7CkBAIC0xMTEwLDE2ICsxMTEwLDEzIEBACiAgICAgICAgIHEgPSBDdXJsX2dldEFTTjFFbGVtZW50KCZuYW1lLCBxLCBlbGVtLmVuZCk7CiAgICAgICAgIHN3aXRjaCAobmFtZS50YWcpIHsKICAgICAgICAgY2FzZSAyOiAvKiBETlMgbmFtZS4gKi8KLSAgICAgICAgICBpID0gMDsKICAgICAgICAgICBsZW4gPSB1dGY4YXNuMXN0cigmZG5zbmFtZSwgQ1VSTF9BU04xX0lBNV9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5iZWcsIG5hbWUuZW5kKTsKLSAgICAgICAgICBpZihsZW4gPiAwKQotICAgICAgICAgICAgaWYoc3RybGVuKGRuc25hbWUpID09IChzaXplX3QpIGxlbikKLSAgICAgICAgICAgICAgaSA9IEN1cmxfY2VydF9ob3N0Y2hlY2soKGNvbnN0IGNoYXIgKikgZG5zbmFtZSwgY29ubi0+aG9zdC5uYW1lKTsKKyAgICAgICAgICBpZihsZW4gPiAwICYmIChzaXplX3QpbGVuID09IHN0cmxlbihkbnNuYW1lKSkKKyAgICAgICAgICAgIG1hdGNoZWQgPSBDdXJsX2NlcnRfaG9zdGNoZWNrKGRuc25hbWUsIGNvbm4tPmhvc3QubmFtZSk7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbWF0Y2hlZCA9IDA7CiAgICAgICAgICAgZnJlZShkbnNuYW1lKTsKLSAgICAgICAgICBpZighaSkKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047Ci0gICAgICAgICAgbWF0Y2hlZCA9IGk7CiAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSA3OiAvKiBJUCBhZGRyZXNzLiAqLwpkaWZmIC0tZ2l0IGEvbGliL3g1MDlhc24xLmggYi9saWIveDUwOWFzbjEuaAppbmRleCBlYjIzZTUwLi5lNmExZTI0IDEwMDY0NAotLS0gYS9saWIveDUwOWFzbjEuaAorKysgYi9saWIveDUwOWFzbjEuaApAQCAtMTIsNyArMTIsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYmN1cmwucGMuaW4gYi9saWJjdXJsLnBjLmluCmluZGV4IGZkZmFlYzkuLmZlZWExY2QgMTAwNjQ0Ci0tLSBhL2xpYmN1cmwucGMuaW4KKysrIGIvbGliY3VybC5wYy5pbgpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsNyArMzEsNyBAQAogc3VwcG9ydGVkX2ZlYXR1cmVzPSJAU1VQUE9SVF9GRUFUVVJFU0AiCiAKIE5hbWU6IGxpYmN1cmwKLVVSTDogaHR0cDovL2N1cmwuaGF4eC5zZS8KK1VSTDogaHR0cHM6Ly9jdXJsLmhheHguc2UvCiBEZXNjcmlwdGlvbjogTGlicmFyeSB0byB0cmFuc2ZlciBmaWxlcyB3aXRoIGZ0cCwgaHR0cCwgZXRjLgogVmVyc2lvbjogQENVUkxWRVJTSU9OQAogTGliczogLUwke2xpYmRpcn0gLWxjdXJsCmRpZmYgLS1naXQgYS9tNC9jdXJsLWNvbXBpbGVycy5tNCBiL200L2N1cmwtY29tcGlsZXJzLm00CmluZGV4IGYxYTYzNGIuLjA4NWM2ZmYgMTAwNjQ0Ci0tLSBhL200L2N1cmwtY29tcGlsZXJzLm00CisrKyBiL200L2N1cmwtY29tcGlsZXJzLm00CkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02Niw3ICs2Niw3IEBACiAqKioKICoqKiBJZiB5b3Ugd2lzaCB0byBoZWxwIHRoZSBjVVJMIHByb2plY3QgdG8gYmV0dGVyIHN1cHBvcnQgeW91ciBjb21waWxlcgogKioqIHlvdSBjYW4gcmVwb3J0IHRoaXMgYW5kIHRoZSByZXF1aXJlZCBpbmZvIG9uIHRoZSBsaWJjdXJsIGRldmVsb3BtZW50Ci0qKiogbWFpbGluZyBsaXN0OiBodHRwOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LworKioqIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCiAqKioKIF9FT0YKICAgZmkKZGlmZiAtLWdpdCBhL200L2N1cmwtY29uZm9wdHMubTQgYi9tNC9jdXJsLWNvbmZvcHRzLm00CmluZGV4IDQ0YjAxOGUuLjY5YjlhMTQgMTAwNjQ0Ci0tLSBhL200L2N1cmwtY29uZm9wdHMubTQKKysrIGIvbTQvY3VybC1jb25mb3B0cy5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzE2LDYgKzMxNiw0MiBAQAogZG5sICAgZmkKIGRubCBdKQogCitkbmwgQ1VSTF9DSEVDS19PUFRJT05fUlQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVmVyaWZ5IGlmIGNvbmZpZ3VyZSBoYXMgYmVlbiBpbnZvbGVkIHdpdGggb3B0aW9uCitkbmwgLS1kaXNhYmxlLXJ0IGFuZCBzZXQgc2hlbGwgdmFyaWFibGUgZG9udHdhbnRfcnQKK2RubCBhcyBhcHByb3ByaWF0ZS4KKworQUNfREVGVU4oW0NVUkxfQ0hFQ0tfT1BUSU9OX1JUXSwgWworICBBQ19CRUZPUkUoWyQwXSwgW0NVUkxfQ0hFQ0tfTElCX1RIUkVBRFNdKWRubAorICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZGlzYWJsZSBkZXBlbmRlbmN5IG9uIC1scnRdKQorICBPUFRfUlQ9ImRlZmF1bHQiCisgIEFDX0FSR19FTkFCTEUocnQsCisgQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1ydF0sW2Rpc2FibGUgZGVwZW5kZW5jeSBvbiAtbHJ0XSksCisgIE9QVF9SVD0kZW5hYmxldmFsKQorICBjYXNlICIkT1BUX1JUIiBpbgorICAgIG5vKQorICAgICAgZG5sIC0tZGlzYWJsZS1ydCB1c2VkIChyZXZlcnNlIGxvZ2ljKQorICAgICAgZG9udHdhbnRfcnQ9InllcyIKKyAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgICA7OworICAgIGRlZmF1bHQpCisgICAgICBkbmwgY29uZmlndXJlIG9wdGlvbiBub3Qgc3BlY2lmaWVkIChzbyBub3QgZGlzYWJsZWQpCisgICAgICBkb250d2FudF9ydD0ibm8iCisgICAgICBBQ19NU0dfUkVTVUxUKFsoYXNzdW1lZCBubyldKQorICAgICAgOzsKKyAgICAqKQorICAgICAgZG5sIC0tZW5hYmxlLXJ0IG9wdGlvbiB1c2VkIChyZXZlcnNlIGxvZ2ljKQorICAgICAgZG9udHdhbnRfcnQ9Im5vIgorICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgOzsKKyAgZXNhYworICBkbmwgVE9ETzogbWF5IHJlcXVpcmUgbXV0dWFsIGV4Y2x1c2lvbgorICBpZiB0ZXN0ICIkZG9udHdhbnRfcnQiID0gInllcyIgJiYgdGVzdCAiJHdhbnRfdGhyZXMiID0gInllcyIgOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtvcHRpb25zIC0tZGlzYWJsZS1ydCBhbmQgLS1lbmFibGUtdGhyZWFkLXJlc29sdmVyIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIGF0IG1vc3Qgb25lIGNhbiBiZSBzZWxlY3RlZC5dKQorICBmaQorXSkKKyAKIAogZG5sIENVUkxfQ0hFQ0tfT1BUSU9OX1dBUk5JTkdTCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzk3LDE1ICs0MzMsMTUgQEAKICAgdHN0X21ldGhvZD0idW5rbm93biIKIAogICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBzZXQgYSBzb2NrZXQgaW50byBub24tYmxvY2tpbmcgbW9kZV0pCi0gIGlmIHRlc3QgIngkYWNfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrIiA9ICJ4eWVzIjsgdGhlbgorICBpZiB0ZXN0ICJ4JGN1cmxfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrIiA9ICJ4eWVzIjsgdGhlbgogICAgIHRzdF9tZXRob2Q9ImZjbnRsIE9fTk9OQkxPQ0siCi0gIGVsaWYgdGVzdCAieCRhY19jdl9mdW5jX2lvY3RsX2Zpb25iaW8iID0gInh5ZXMiOyB0aGVuCisgIGVsaWYgdGVzdCAieCRjdXJsX2N2X2Z1bmNfaW9jdGxfZmlvbmJpbyIgPSAieHllcyI7IHRoZW4KICAgICB0c3RfbWV0aG9kPSJpb2N0bCBGSU9OQklPIgotICBlbGlmIHRlc3QgIngkYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvIiA9ICJ4eWVzIjsgdGhlbgorICBlbGlmIHRlc3QgIngkY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0X2Zpb25iaW8iID0gInh5ZXMiOyB0aGVuCiAgICAgdHN0X21ldGhvZD0iaW9jdGxzb2NrZXQgRklPTkJJTyIKLSAgZWxpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbyIgPSAieHllcyI7IHRoZW4KKyAgZWxpZiB0ZXN0ICJ4JGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvIiA9ICJ4eWVzIjsgdGhlbgogICAgIHRzdF9tZXRob2Q9IklvY3RsU29ja2V0IEZJT05CSU8iCi0gIGVsaWYgdGVzdCAieCRhY19jdl9mdW5jX3NldHNvY2tvcHRfc29fbm9uYmxvY2siID0gInh5ZXMiOyB0aGVuCisgIGVsaWYgdGVzdCAieCRjdXJsX2N2X2Z1bmNfc2V0c29ja29wdF9zb19ub25ibG9jayIgPSAieHllcyI7IHRoZW4KICAgICB0c3RfbWV0aG9kPSJzZXRzb2Nrb3B0IFNPX05PTkJMT0NLIgogICBmaQogICBBQ19NU0dfUkVTVUxUKFskdHN0X21ldGhvZF0pCkBAIC00MjgsNyArNDY0LDcgQEAKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGhpZGluZyBvZiBsaWJyYXJ5IGludGVybmFsIHN5bWJvbHMgd2lsbCBhY3R1YWxseSBoYXBwZW5dKQogICBDRkxBR19DVVJMX1NZTUJPTF9ISURJTkc9IiIKICAgZG9pbmdfc3ltYm9sX2hpZGluZz0ibm8iCi0gIGlmIHRlc3QgeCIkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiICE9ICJ4eWVzIiAmJgorICBpZiB0ZXN0IHgiJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiICE9ICJ4eWVzIiAmJgogICAgIHRlc3QgIiR3YW50X3N5bWJvbF9oaWRpbmciID0gInllcyIgJiYKICAgICB0ZXN0ICIkc3VwcG9ydHNfc3ltYm9sX2hpZGluZyIgPSAieWVzIjsgdGhlbgogICAgIGRvaW5nX3N5bWJvbF9oaWRpbmc9InllcyIKQEAgLTU3NSw3ICs2MTEsNyBAQAogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX09QVElPTl9OVExNX1dCXSlkbmwKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19OQVRJVkVfV0lORE9XU10pZG5sCiAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgTlRMTSBkZWxlZ2F0aW9uIHRvIHdpbmJpbmQncyBoZWxwZXJdKQotICBpZiB0ZXN0ICIkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyIgfHwKKyAgaWYgdGVzdCAiJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyIgfHwKICAgICB0ZXN0ICJ4JFNTTF9FTkFCTEVEIiA9ICJ4IjsgdGhlbgogICAgIHdhbnRfbnRsbV93Yl9maWxlPSIiCiAgICAgd2FudF9udGxtX3diPSJubyIKZGlmZiAtLWdpdCBhL200L2N1cmwtZnVuY3Rpb25zLm00IGIvbTQvY3VybC1mdW5jdGlvbnMubTQKaW5kZXggMGQ2NTQyMS4uZWU3YTI1MiAxMDA2NDQKLS0tIGEvbTQvY3VybC1mdW5jdGlvbnMubTQKKysrIGIvbTQvY3VybC1mdW5jdGlvbnMubTQKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAogIyAgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZW5kaWYKIC8qIGluY2x1ZGVzIGVuZCAqLyIKICAgQUNfQ0hFQ0tfSEVBREVSUygKICAgICBzeXMvdHlwZXMuaCBzeXMvc29ja2V0LmggbmV0aW5ldC9pbi5oIGFycGEvaW5ldC5oLApAQCAtNjM1LDEwICs2MzksMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0FMQVJNLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBhbGFybSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfYWxhcm09InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfYWxhcm09InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2FsYXJtPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfYWxhcm09Im5vIgogICBmaQogXSkKIApAQCAtNzI2LDEwICs3MzAsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0JBU0VOQU1FLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBiYXNlbmFtZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfYmFzZW5hbWU9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfYmFzZW5hbWU9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2Jhc2VuYW1lPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfYmFzZW5hbWU9Im5vIgogICBmaQogXSkKIApAQCAtODIwLDEwICs4MjQsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0NMT1NFU09DS0VULCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBjbG9zZXNvY2tldCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfY2xvc2Vzb2NrZXQ9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfY2xvc2Vzb2NrZXQ9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2Nsb3Nlc29ja2V0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfY2xvc2Vzb2NrZXQ9Im5vIgogICBmaQogXSkKIApAQCAtOTEwLDEwICs5MTQsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0NMT1NFU09DS0VUX0NBTUVMLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBDbG9zZVNvY2tldCBjYW1lbCBjYXNlIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19jbG9zZXNvY2tldF9jYW1lbD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19jbG9zZXNvY2tldF9jYW1lbD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfY2xvc2Vzb2NrZXRfY2FtZWw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19jbG9zZXNvY2tldF9jYW1lbD0ibm8iCiAgIGZpCiBdKQogCkBAIC0xMDA4LDEwICsxMDEyLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9DT05ORUNULCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBjb25uZWN0IGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19jb25uZWN0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2Nvbm5lY3Q9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2Nvbm5lY3Q9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19jb25uZWN0PSJubyIKICAgZmkKIF0pCiAKQEAgLTEwOTMsMTEgKzEwOTcsMTEgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0ZDTlRMLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmY250bCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZmNudGw9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZmNudGw9InllcyIKICAgICBDVVJMX0NIRUNLX0ZVTkNfRkNOVExfT19OT05CTE9DSwogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZmNudGw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19mY250bD0ibm8iCiAgIGZpCiBdKQogCkBAIC0xMTIxLDcgKzExMjUsNyBAQAogICAgICAgOzsKICAgZXNhYwogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2ZjbnRsIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfZmNudGwiID0gInllcyI7IHRoZW4KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGZjbnRsIE9fTk9OQkxPQ0sgaXMgY29tcGlsYWJsZV0pCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCkBAIC0xMTU3LDEwICsxMTYxLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GQ05UTF9PX05PTkJMT0NLLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBmY250bCBPX05PTkJMT0NLIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZjbnRsX29fbm9uYmxvY2s9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZjbnRsX29fbm9uYmxvY2s9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrPSJubyIKICAgZmkKIF0pCiAKQEAgLTEyNDIsMTAgKzEyNDYsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0ZET1BFTiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZmRvcGVuIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19mZG9wZW49InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZmRvcGVuPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19mZG9wZW49Im5vIgorICAgIGN1cmxfY3ZfZnVuY19mZG9wZW49Im5vIgogICBmaQogXSkKIApAQCAtMTM2NCwxMCArMTM2OCwxMCBAQAogICAgICAgQUNfREVGSU5FKEhBVkVfRkdFVFhBVFRSXzYsIDEsIFtmZ2V0eGF0dHIoKSB0YWtlcyA2IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZmdldHhhdHRyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZnZXR4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZmdldHhhdHRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZmdldHhhdHRyPSJubyIKICAgZmkKIF0pCiAKQEAgLTE0ODYsMTAgKzE0OTAsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0ZMSVNUWEFUVFJfNCwgMSwgW2ZsaXN0eGF0dHIoKSB0YWtlcyA0IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZmxpc3R4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mbGlzdHhhdHRyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19mbGlzdHhhdHRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZmxpc3R4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC0xNTgyLDEwICsxNTg2LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GUkVFQUREUklORk8sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGZyZWVhZGRyaW5mbyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZnJlZWFkZHJpbmZvPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZyZWVhZGRyaW5mbz0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZnJlZWFkZHJpbmZvPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZnJlZWFkZHJpbmZvPSJubyIKICAgZmkKIF0pCiAKQEAgLTE2NjYsMTAgKzE2NzAsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0ZSRUVJRkFERFJTLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmcmVlaWZhZGRycyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZnJlZWlmYWRkcnM9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZnJlZWlmYWRkcnM9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZyZWVpZmFkZHJzPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZnJlZWlmYWRkcnM9Im5vIgogICBmaQogXSkKIApAQCAtMTc4OCwxMCArMTc5MiwxMCBAQAogICAgICAgQUNfREVGSU5FKEhBVkVfRlJFTU9WRVhBVFRSXzMsIDEsIFtmcmVtb3ZleGF0dHIoKSB0YWtlcyAzIGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZnJlbW92ZXhhdHRyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZyZW1vdmV4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZnJlbW92ZXhhdHRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZnJlbW92ZXhhdHRyPSJubyIKICAgZmkKIF0pCiAKQEAgLTE5MTAsMTAgKzE5MTQsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0ZTRVRYQVRUUl82LCAxLCBbZnNldHhhdHRyKCkgdGFrZXMgNiBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX2ZzZXR4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mc2V0eGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZzZXR4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZzZXR4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC0xOTk1LDEwICsxOTk5LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GVFJVTkNBVEUsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGZ0cnVuY2F0ZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZnRydW5jYXRlPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2Z0cnVuY2F0ZT0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZnRydW5jYXRlPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZnRydW5jYXRlPSJubyIKICAgZmkKIF0pCiAKQEAgLTIwOTgsNiArMjEwMiwxMiBAQAogICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpID0gMDsKICAgICAgICAgaW50IGVycm9yOwogCisgICAgICAgICNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyAgICAgICAgV1NBREFUQSB3c2E7CisgICAgICAgIGlmIChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2EpKQorICAgICAgICAgICAgICAgIGV4aXQoMik7CisgICAgICAgICNlbmRpZgorCiAgICAgICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwogICAgICAgICBoaW50cy5haV9mbGFncyA9IEFJX05VTUVSSUNIT1NUOwogICAgICAgICBoaW50cy5haV9mYW1pbHkgPSBBRl9VTlNQRUM7CkBAIC0yMTM4LDE0ICsyMTQ4LDE0IEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9HRVRBRERSSU5GTywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZ2V0YWRkcmluZm8gZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldGFkZHJpbmZvPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nZXRhZGRyaW5mbz0ibm8iCi0gICAgYWNfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm89Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJubyIKICAgZmkKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19nZXRhZGRyaW5mbyIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2dldGFkZHJpbmZvIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBnZXRhZGRyaW5mbyBpcyB0aHJlYWRzYWZlXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXhbWzEyMzRdXS4qIHwgYWl4NS5bWzAxXV0uKikKQEAgLTIxOTgsNyArMjIwOCw3IEBACiAgICAgICAgIDs7CiAgICAgZXNhYwogICAgIGlmIHRlc3QgIiR0c3RfdHNhZmVfZ2V0YWRkcmluZm8iID0gInVua25vd24iICYmCi0gICAgICAgdGVzdCAiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgdGVzdCAiJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyI7IHRoZW4KICAgICAgIHRzdF90c2FmZV9nZXRhZGRyaW5mbz0ieWVzIgogICAgIGZpCiAgICAgaWYgdGVzdCAiJHRzdF90c2FmZV9nZXRhZGRyaW5mbyIgPSAidW5rbm93biI7IHRoZW4KQEAgLTIyNTMsOSArMjI2Myw5IEBACiAgICAgaWYgdGVzdCAiJHRzdF90c2FmZV9nZXRhZGRyaW5mbyIgPSAieWVzIjsgdGhlbgogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUQUREUklORk9fVEhSRUFEU0FGRSwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSBnZXRhZGRyaW5mbyBmdW5jdGlvbiBpcyB0aHJlYWRzYWZlLl0pCi0gICAgICBhY19jdl9mdW5jX2dldGFkZHJpbmZvX3RocmVhZHNhZmU9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJ5ZXMiCiAgICAgZWxzZQotICAgICAgYWNfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJubyIKKyAgICAgIGN1cmxfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJubyIKICAgICBmaQogICBmaQogXSkKQEAgLTIzNDcsMTAgKzIzNTcsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0dFVEhPU1RCWUFERFIsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RieWFkZHIgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2dldGhvc3RieWFkZHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dldGhvc3RieWFkZHI9Im5vIgogICBmaQogXSkKIApAQCAtMjQ0MCwxMCArMjQ1MCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0FJX1NUUkVSUk9SLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnYWlfc3RyZXJyb3IgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2dhaV9zdHJlcnJvcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nYWlfc3RyZXJyb3I9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dhaV9zdHJlcnJvcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dhaV9zdHJlcnJvcj0ibm8iCiAgIGZpCiBdKQogCkBAIC0yNTgyLDEwICsyNTkyLDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9HRVRIT1NUQllBRERSX1JfOCwgMSwgW2dldGhvc3RieWFkZHJfcigpIHRha2VzIDggYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnlhZGRyX3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcl9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnlhZGRyX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0YnlhZGRyX3I9Im5vIgogICBmaQogXSkKIApAQCAtMjY3NiwxMCArMjY4NiwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUSE9TVEJZTkFNRSwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0aG9zdGJ5bmFtZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZT0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0YnluYW1lPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZT0ibm8iCiAgIGZpCiBdKQogCkBAIC0yODE4LDEwICsyODI4LDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9HRVRIT1NUQllOQU1FX1JfNiwgMSwgW2dldGhvc3RieW5hbWVfcigpIHRha2VzIDYgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lX3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZV9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnluYW1lX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0YnluYW1lX3I9Im5vIgogICBmaQogXSkKIApAQCAtMjk0MiwxMCArMjk1MiwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUSE9TVE5BTUUsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RuYW1lIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0bmFtZT0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0bmFtZT0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdG5hbWU9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0bmFtZT0ibm8iCiAgIGZpCiBdKQogCkBAIC0zMDU4LDEwICszMDY4LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9HRVRJRkFERFJTLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBnZXRpZmFkZHJzIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nZXRpZmFkZHJzPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldGlmYWRkcnM9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dldGlmYWRkcnM9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRpZmFkZHJzPSJubyIKICAgZmkKIF0pCiAKQEAgLTMxOTgsMTAgKzMyMDgsMTAgQEAKICAgICAgIEFDX0RFRklORShHRVRTRVJWQllQT1JUX1JfQlVGU0laRSwgNDA5NiwKICAgICAgICAgW1NwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIHBhc3MgdG8gZ2V0c2VydmJ5cG9ydF9yXSkKICAgICBmaQotICAgIGFjX2N2X2Z1bmNfZ2V0c2VydmJ5cG9ydF9yPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldHNlcnZieXBvcnRfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0c2VydmJ5cG9ydF9yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0c2VydmJ5cG9ydF9yPSJubyIKICAgZmkKIF0pCiAKQEAgLTMzMjAsMTAgKzMzMzAsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0dFVFhBVFRSXzYsIDEsIFtnZXR4YXR0cigpIHRha2VzIDYgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19nZXR4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXR4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0eGF0dHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXR4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC0zNDM2LDEwICszNDQ2LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9HTVRJTUVfUiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZ210aW1lX3IgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2dtdGltZV9yPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dtdGltZV9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nbXRpbWVfcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dtdGltZV9yPSJubyIKICAgZmkKIF0pCiAKQEAgLTM1NjAsMTAgKzM1NzAsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0lORVRfTlRPQV9SXzMsIDEsIFtpbmV0X250b2FfcigpIHRha2VzIDMgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19pbmV0X250b2Ffcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X250b2Ffcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfaW5ldF9udG9hX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X250b2Ffcj0ibm8iCiAgIGZpCiBdKQogCkBAIC0zNzE5LDEwICszNzI5LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTkVUX05UT1AsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSBJUHY2IGNhcGFibGUgd29ya2luZyBpbmV0X250b3AgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2luZXRfbnRvcD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X250b3A9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2luZXRfbnRvcD0ibm8iCisgICAgY3VybF9jdl9mdW5jX2luZXRfbnRvcD0ibm8iCiAgIGZpCiBdKQogCkBAIC0zODcxLDEwICszODgxLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTkVUX1BUT04sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSBJUHY2IGNhcGFibGUgd29ya2luZyBpbmV0X3B0b24gZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2luZXRfcHRvbj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X3B0b249InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2luZXRfcHRvbj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2luZXRfcHRvbj0ibm8iCiAgIGZpCiBdKQogCkBAIC0zOTU2LDEyICszOTY2LDEyIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JT0NUTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgaW9jdGwgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2lvY3RsPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2lvY3RsPSJ5ZXMiCiAgICAgQ1VSTF9DSEVDS19GVU5DX0lPQ1RMX0ZJT05CSU8KICAgICBDVVJMX0NIRUNLX0ZVTkNfSU9DVExfU0lPQ0dJRkFERFIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3RsPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGw9Im5vIgogICBmaQogXSkKIApAQCAtMzk3OCw3ICszOTg4LDcgQEAKICAgdHN0X2NvbXBpX2lvY3RsX2Zpb25iaW89InVua25vd24iCiAgIHRzdF9hbGxvd19pb2N0bF9maW9uYmlvPSJ1bmtub3duIgogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2lvY3RsIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfaW9jdGwiID0gInllcyI7IHRoZW4KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGlvY3RsIEZJT05CSU8gaXMgY29tcGlsYWJsZV0pCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCkBAIC00MDE0LDEwICs0MDI0LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JT0NUTF9GSU9OQklPLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBpb2N0bCBGSU9OQklPIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bF9maW9uYmlvPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2lvY3RsX2Zpb25iaW89InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3RsX2Zpb25iaW89Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bF9maW9uYmlvPSJubyIKICAgZmkKIF0pCiAKQEAgLTQwMzQsNyArNDA0NCw3IEBACiAgIHRzdF9jb21waV9pb2N0bF9zaW9jZ2lmYWRkcj0idW5rbm93biIKICAgdHN0X2FsbG93X2lvY3RsX3Npb2NnaWZhZGRyPSJ1bmtub3duIgogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2lvY3RsIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfaW9jdGwiID0gInllcyI7IHRoZW4KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGlvY3RsIFNJT0NHSUZBRERSIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtNDA3MSwxMCArNDA4MSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVExfU0lPQ0dJRkFERFIsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGlvY3RsIFNJT0NHSUZBRERSIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bF9zaW9jZ2lmYWRkcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bF9zaW9jZ2lmYWRkcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxfc2lvY2dpZmFkZHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bF9zaW9jZ2lmYWRkcj0ibm8iCiAgIGZpCiBdKQogCkBAIC00MTYxLDExICs0MTcxLDExIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JT0NUTFNPQ0tFVCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgaW9jdGxzb2NrZXQgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2lvY3Rsc29ja2V0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0PSJ5ZXMiCiAgICAgQ1VSTF9DSEVDS19GVU5DX0lPQ1RMU09DS0VUX0ZJT05CSU8KICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3Rsc29ja2V0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXQ9Im5vIgogICBmaQogXSkKIApAQCAtNDE4Miw3ICs0MTkyLDcgQEAKICAgdHN0X2NvbXBpX2lvY3Rsc29ja2V0X2Zpb25iaW89InVua25vd24iCiAgIHRzdF9hbGxvd19pb2N0bHNvY2tldF9maW9uYmlvPSJ1bmtub3duIgogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2lvY3Rsc29ja2V0IiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXQiID0gInllcyI7IHRoZW4KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGlvY3Rsc29ja2V0IEZJT05CSU8gaXMgY29tcGlsYWJsZV0pCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCkBAIC00MjE4LDEwICs0MjI4LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JT0NUTFNPQ0tFVF9GSU9OQklPLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBpb2N0bHNvY2tldCBGSU9OQklPIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0X2Zpb25iaW89InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3Rsc29ja2V0X2Zpb25iaW89Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvPSJubyIKICAgZmkKIF0pCiAKQEAgLTQzMDMsMTEgKzQzMTMsMTEgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0lPQ1RMU09DS0VUX0NBTUVMLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBJb2N0bFNvY2tldCBjYW1lbCBjYXNlIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbD0ieWVzIgogICAgIENVUkxfQ0hFQ0tfRlVOQ19JT0NUTFNPQ0tFVF9DQU1FTF9GSU9OQklPCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbD0ibm8iCisgICAgY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0X2NhbWVsPSJubyIKICAgZmkKIF0pCiAKQEAgLTQzMjMsNyArNDMzMyw3IEBACiAgIHRzdF9jb21waV9pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvPSJ1bmtub3duIgogICB0c3RfYWxsb3dfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbz0idW5rbm93biIKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0X2NhbWVsIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBJb2N0bFNvY2tldCBGSU9OQklPIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtNDM1OSwxMCArNDM2OSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVExTT0NLRVRfQ0FNRUxfRklPTkJJTywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgSW9jdGxTb2NrZXQgY2FtZWwgY2FzZSBGSU9OQklPIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0X2NhbWVsX2Zpb25iaW89InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3Rsc29ja2V0X2NhbWVsX2Zpb25iaW89Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvPSJubyIKICAgZmkKIF0pCiAKQEAgLTQ0ODEsMTAgKzQ0OTEsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0xJU1RYQVRUUl80LCAxLCBbbGlzdHhhdHRyKCkgdGFrZXMgNCBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX2xpc3R4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19saXN0eGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2xpc3R4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2xpc3R4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC00NTk3LDEwICs0NjA3LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9MT0NBTFRJTUVfUiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgbG9jYWx0aW1lX3IgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2xvY2FsdGltZV9yPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2xvY2FsdGltZV9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19sb2NhbHRpbWVfcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2xvY2FsdGltZV9yPSJubyIKICAgZmkKIF0pCiAKQEAgLTQ3MDIsMTAgKzQ3MTIsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX01FTVJDSFIsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIG1lbXJjaHIgZnVuY3Rpb24gb3IgbWFjcm8uXSkKLSAgICBhY19jdl9mdW5jX21lbXJjaHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfbWVtcmNocj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfbWVtcmNocj0ibm8iCisgICAgY3VybF9jdl9mdW5jX21lbXJjaHI9Im5vIgogICBmaQogXSkKIApAQCAtNDgzMSwxMCArNDg0MSwxMCBAQAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBwb2xsIGZ1bmN0aW9uLl0pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfUE9MTF9GSU5FLCAxLAogICAgICAgW0lmIHlvdSBoYXZlIGEgZmluZSBwb2xsXSkKLSAgICBhY19jdl9mdW5jX3BvbGw9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfcG9sbD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfcG9sbD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3BvbGw9Im5vIgogICBmaQogXSkKIApAQCAtNDk1MywxMCArNDk2MywxMCBAQAogICAgICAgQUNfREVGSU5FKEhBVkVfUkVNT1ZFWEFUVFJfMywgMSwgW3JlbW92ZXhhdHRyKCkgdGFrZXMgMyBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX3JlbW92ZXhhdHRyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3JlbW92ZXhhdHRyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19yZW1vdmV4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX3JlbW92ZXhhdHRyPSJubyIKICAgZmkKIF0pCiAKQEAgLTUwNDcsMTEgKzUwNTcsMTEgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NFVFNPQ0tPUFQsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldHNvY2tvcHQgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3NldHNvY2tvcHQ9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc2V0c29ja29wdD0ieWVzIgogICAgIENVUkxfQ0hFQ0tfRlVOQ19TRVRTT0NLT1BUX1NPX05PTkJMT0NLCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zZXRzb2Nrb3B0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2V0c29ja29wdD0ibm8iCiAgIGZpCiBdKQogCkBAIC01MDY4LDcgKzUwNzgsNyBAQAogICB0c3RfY29tcGlfc2V0c29ja29wdF9zb19ub25ibG9jaz0idW5rbm93biIKICAgdHN0X2FsbG93X3NldHNvY2tvcHRfc29fbm9uYmxvY2s9InVua25vd24iCiAgICMKLSAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfc2V0c29ja29wdCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX3NldHNvY2tvcHQiID0gInllcyI7IHRoZW4KICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHNldHNvY2tvcHQgU09fTk9OQkxPQ0sgaXMgY29tcGlsYWJsZV0pCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCkBAIC01MTA0LDEwICs1MTE0LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TRVRTT0NLT1BUX1NPX05PTkJMT0NLLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBzZXRzb2Nrb3B0IFNPX05PTkJMT0NLIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NldHNvY2tvcHRfc29fbm9uYmxvY2s9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3NldHNvY2tvcHRfc29fbm9uYmxvY2s9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrPSJubyIKICAgZmkKIF0pCiAKQEAgLTUyMjYsMTAgKzUyMzYsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX1NFVFhBVFRSXzYsIDEsIFtzZXR4YXR0cigpIHRha2VzIDYgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19zZXR4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zZXR4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc2V0eGF0dHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zZXR4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC01MzExLDEwICs1MzIxLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TSUdBQ1RJT04sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc2lnYWN0aW9uPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NpZ2FjdGlvbj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc2lnYWN0aW9uPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2lnYWN0aW9uPSJubyIKICAgZmkKIF0pCiAKQEAgLTUzOTYsMTAgKzU0MDYsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NJR0lOVEVSUlVQVCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2lnaW50ZXJydXB0IGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zaWdpbnRlcnJ1cHQ9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc2lnaW50ZXJydXB0PSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zaWdpbnRlcnJ1cHQ9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zaWdpbnRlcnJ1cHQ9Im5vIgogICBmaQogXSkKIApAQCAtNTQ4MSwxMCArNTQ5MSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0lHTkFMLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzaWduYWwgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3NpZ25hbD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zaWduYWw9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3NpZ25hbD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3NpZ25hbD0ibm8iCiAgIGZpCiBdKQogCkBAIC01NTg4LDEwICs1NTk4LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TSUdTRVRKTVAsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNpZ3NldGptcCBmdW5jdGlvbiBvciBtYWNyby5dKQotICAgIGFjX2N2X2Z1bmNfc2lnc2V0am1wPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NpZ3NldGptcD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc2lnc2V0am1wPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2lnc2V0am1wPSJubyIKICAgZmkKIF0pCiAKQEAgLTU2ODYsMTAgKzU2OTYsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NPQ0tFVCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc29ja2V0IGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zb2NrZXQ9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc29ja2V0PSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zb2NrZXQ9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zb2NrZXQ9Im5vIgogICBmaQogXSkKIApAQCAtNTc3NSwxMCArNTc4NSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU09DS0VUUEFJUiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc29ja2V0cGFpciBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc29ja2V0cGFpcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zb2NrZXRwYWlyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zb2NrZXRwYWlyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc29ja2V0cGFpcj0ibm8iCiAgIGZpCiBdKQogCkBAIC01ODYwLDEwICs1ODcwLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJDQVNFQ01QLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJjYXNlY21wIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJjYXNlY21wPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cmNhc2VjbXA9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cmNhc2VjbXA9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJjYXNlY21wPSJubyIKICAgZmkKIF0pCiAKQEAgLTU5NDQsMTAgKzU5NTQsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUkNNUEksIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmNtcGkgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3N0cmNtcGk9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyY21waT0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3RyY21waT0ibm8iCisgICAgY3VybF9jdl9mdW5jX3N0cmNtcGk9Im5vIgogICBmaQogXSkKIApAQCAtNjAyOSwxMCArNjAzOSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSRFVQLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJkdXAgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3N0cmR1cD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJkdXA9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cmR1cD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3N0cmR1cD0ibm8iCiAgIGZpCiBdKQogCkBAIC02Mjg4LDEwICs2Mjk4LDEwIEBACiAgICAgICBBQ19ERUZJTkVfVU5RVU9URUQoU1RSRVJST1JfUl9UWVBFX0FSRzMsICR0c3RfcG9zaXhfc3RyZXJyb3Jfcl90eXBlX2FyZzMsCiAgICAgICAgIFtEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYXJnIDMgZm9yIHN0cmVycm9yX3IuXSkKICAgICBmaQotICAgIGFjX2N2X2Z1bmNfc3RyZXJyb3Jfcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJlcnJvcl9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJlcnJvcl9yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyZXJyb3Jfcj0ibm8iCiAgIGZpCiAgICMKICAgaWYgdGVzdCAiJHRzdF9jb21waV9zdHJlcnJvcl9yIiA9ICJ5ZXMiICYmCkBAIC02Mzc5LDEwICs2Mzg5LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJJQ01QLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJpY21wIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJpY21wPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cmljbXA9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cmljbXA9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJpY21wPSJubyIKICAgZmkKIF0pCiAKQEAgLTY0NjMsMTAgKzY0NzMsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUk5DQVNFQ01QLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJuY2FzZWNtcCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RybmNhc2VjbXA9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RybmNhc2VjbXA9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cm5jYXNlY21wPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RybmNhc2VjbXA9Im5vIgogICBmaQogXSkKIApAQCAtNjU0OCwxMCArNjU1OCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSTkNNUEksIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cm5jbXBpIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJuY21waT0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJuY21waT0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3RybmNtcGk9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJuY21waT0ibm8iCiAgIGZpCiBdKQogCkBAIC02NjMzLDEwICs2NjQzLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJOSUNNUCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RybmljbXAgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3N0cm5pY21wPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cm5pY21wPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJuaWNtcD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3N0cm5pY21wPSJubyIKICAgZmkKIF0pCiAKQEAgLTY3MTgsMTAgKzY3MjgsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUlNUUiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3Ryc3RyIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJzdHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3Ryc3RyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJzdHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJzdHI9Im5vIgogICBmaQogXSkKIApAQCAtNjgwMywxMCArNjgxMywxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSVE9LX1IsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cnRva19yIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJ0b2tfcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJ0b2tfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3RydG9rX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJ0b2tfcj0ibm8iCiAgIGZpCiBdKQogCkBAIC02ODg4LDEwICs2ODk4LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJUT0xMLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xsIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJ0b2xsPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cnRvbGw9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cnRvbGw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJ0b2xsPSJubyIKICAgZmkKIF0pCiAKQEAgLTY5NzMsOSArNjk4Myw5IEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9XUklURVYsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdyaXRldiBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfd3JpdGV2PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3dyaXRldj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfd3JpdGV2PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfd3JpdGV2PSJubyIKICAgZmkKIF0pCmRpZmYgLS1naXQgYS9tNC9jdXJsLW9wZW5zc2wubTQgYi9tNC9jdXJsLW9wZW5zc2wubTQKaW5kZXggNWY1Zjg3YS4uMjBjMzEyNiAxMDA2NDQKLS0tIGEvbTQvY3VybC1vcGVuc3NsLm00CisrKyBiL200L2N1cmwtb3BlbnNzbC5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbTQvY3VybC1yZWVudHJhbnQubTQgYi9tNC9jdXJsLXJlZW50cmFudC5tNAppbmRleCA4NDJjYzQwLi5lMzJkM2Y4IDEwMDY0NAotLS0gYS9tNC9jdXJsLXJlZW50cmFudC5tNAorKysgYi9tNC9jdXJsLXJlZW50cmFudC5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbTQveGMtbHQtaWZhY2UubTQgYi9tNC94Yy1sdC1pZmFjZS5tNAppbmRleCAwYjkwZDVmLi44MmFhYWZhIDEwMDY0NAotLS0gYS9tNC94Yy1sdC1pZmFjZS5tNAorKysgYi9tNC94Yy1sdC1pZmFjZS5tNApAQCAtNzIsNyArNzIsNyBAQAogaWYgdGVzdCAieCR4Y19sdF93YW50X2VuYWJsZV9zaGFyZWQiID0gJ3h5ZXMnICYmCiAgIHRlc3QgIngkeGNfbHRfd2FudF9lbmFibGVfc3RhdGljIiA9ICd4eWVzJzsgdGhlbgogICBjYXNlICRob3N0X29zIGluIEAlOkAgKAotICAgIG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgb3MyKiB8IGFpeCopCisgICAgcHczMiogfCBjZWdjYyogfCBvczIqIHwgYWl4KikKICAgICAgIHhjX2x0X3dhbnRfZW5hYmxlX3N0YXRpYz0nbm8nCiAgICAgICA7OwogICBlc2FjCmRpZmYgLS1naXQgYS9tYWtldGd6IGIvbWFrZXRnegppbmRleCAyNTBiMTFmLi5hZWRlNmQwIDEwMDc1NQotLS0gYS9tYWtldGd6CisrKyBiL21ha2V0Z3oKQEAgLTksMTEgKzksMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ2LDcgKzQ2LDcgQEAKIENIRUFERVI9c3JjL3Rvb2xfdmVyc2lvbi5oCiAKICMgcmVxdWlyZXMgYSBkYXRlIGNvbW1hbmQgdGhhdCBrbm93cyAtdSBmb3IgVVRDIHRpbWUgem9uZQotZGF0ZXN0YW1wPWBkYXRlIC11YAorZGF0ZXN0YW1wPWBMQ19USU1FPUMgZGF0ZSAtdWAKIAogIyBSZXBsYWNlIHZlcnNpb24gbnVtYmVyIGluIGhlYWRlciBmaWxlOgogc2VkIC1lICdzL14jZGVmaW5lIExJQkNVUkxfVkVSU0lPTiAuKi8jZGVmaW5lIExJQkNVUkxfVkVSU0lPTiAiJyRsaWJ2ZXJzaW9uJyIvZycgXApAQCAtNjAsOCArNjAsOSBAQAogIyBSZXBsYWNlIHZlcnNpb24gbnVtYmVyIGluIGhlYWRlciBmaWxlOgogc2VkICdzLyNkZWZpbmUgQ1VSTF9WRVJTSU9OIC4qLyNkZWZpbmUgQ1VSTF9WRVJTSU9OICInJGN1cmx2ZXJzaW9uJyIvZycgJENIRUFERVIgPiRDSEVBREVSLmRpc3QKIAotIyBHZW5lcmF0ZSBWQzgsIFZDOSwgYW5kIFZDMTAgdmVyc2lvbnMgZnJvbSB0aGUgVkM2IE1ha2VmaWxlIHZlcnNpb25zCi1mb3IgdmVyIGluIHZjOCB2YzkgdmMxMDsgZG8KKyMgR2VuZXJhdGUgVkM3LCBWQzgsIFZDOSwgVkMxMCwgVkMxMSwgVkMxMiBhbmQgVkMxNCB2ZXJzaW9ucyBmcm9tIHRoZSBWQzYKKyMgTWFrZWZpbGUgdmVyc2lvbnMKK2ZvciB2ZXIgaW4gdmM3IHZjOCB2YzkgdmMxMCB2YzExIHZjMTIgdmMxNDsgZG8KICAgbWFrZSAtZiBNYWtlZmlsZS5kaXN0ICR2ZXIKICAgbXYgc3JjL01ha2VmaWxlLiR2ZXIgc3JjL01ha2VmaWxlLiR2ZXIuZGlzdAogICBtdiBsaWIvTWFrZWZpbGUuJHZlciBsaWIvTWFrZWZpbGUuJHZlci5kaXN0CkBAIC0xMzcsNyArMTM4LDcgQEAKIAogZWNobyAibWFrZSBkaXN0IgogdGFyZ3o9ImN1cmwtJHZlcnNpb24udGFyLmd6IgotbWFrZSAtcyBkaXN0IFZFUlNJT049JHZlcnNpb24KK21ha2UgLXNqIGRpc3QgVkVSU0lPTj0kdmVyc2lvbgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9BSVgvUlBNL2N1cmwuc3BlYy5pbiBiL3BhY2thZ2VzL0FJWC9SUE0vY3VybC5zcGVjLmluCmluZGV4IDM2NmNmYTAuLmM2NGEwYjcgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0FJWC9SUE0vY3VybC5zcGVjLmluCisrKyBiL3BhY2thZ2VzL0FJWC9SUE0vY3VybC5zcGVjLmluCkBAIC0xNiw3ICsxNiw3IEBACiBWZW5kb3I6IERhbmllbCBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHguc2U+CiBHcm91cDogQXBwbGljYXRpb25zL0ludGVybmV0CiBTb3VyY2U6ICV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuYnoyCi1VUkw6IGh0dHA6Ly9jdXJsLmhheHguc2UvCitVUkw6IGh0dHBzOi8vY3VybC5oYXh4LnNlLwogUHJvdmlkZXM6IGN1cmwKIEJ1aWxkUm9vdDogJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LXJvb3QKIFByZWZpeDogJXtfcHJlZml4fQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvTGludXgvUlBNL2N1cmwtc3NsLnNwZWMuaW4gYi9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC1zc2wuc3BlYy5pbgppbmRleCAyODdhM2E1Li41YjQ1YmIxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC1zc2wuc3BlYy5pbgorKysgYi9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC1zc2wuc3BlYy5pbgpAQCAtMTQsNyArMTQsNyBAQAogUGFja2FnZXI6IFRyb3kgRW5nZWwgPHRlbmdlbEBzb25pYy5uZXQ+CiBHcm91cDogVXRpbGl0aWVzL0NvbnNvbGUKIFNvdXJjZTogJXt0YXJiYWxsfS0le3ZlcnNpb259LnRhci5negotVVJMOiBodHRwOi8vY3VybC5oYXh4LnNlLworVVJMOiBodHRwczovL2N1cmwuaGF4eC5zZS8KIFByb3ZpZGVzOiBjdXJsCiBPYnNvbGV0ZXM6IGN1cmwKIEJ1aWxkUm9vdDogJXtfdG1wcGF0aH0vJXt0YXJiYWxsfS0le3ZlcnNpb259LXJvb3QKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0xpbnV4L1JQTS9jdXJsLnNwZWMuaW4gYi9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC5zcGVjLmluCmluZGV4IDIzODJmNTcuLjU5NTc3YjAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL0xpbnV4L1JQTS9jdXJsLnNwZWMuaW4KKysrIGIvcGFja2FnZXMvTGludXgvUlBNL2N1cmwuc3BlYy5pbgpAQCAtMTQsNyArMTQsNyBAQAogUGFja2FnZXI6IExvaWMgRGFjaGFyeSA8bG9pY0BzZW5nYS5vcmc+CiBHcm91cDogVXRpbGl0aWVzL0NvbnNvbGUKIFNvdXJjZTogJXtuYW1lfS0le3ZlcnNpb259LnRhci5negotVVJMOiBodHRwOi8vY3VybC5oYXh4LnNlLworVVJMOiBodHRwczovL2N1cmwuaGF4eC5zZS8KIEJ1aWxkUm9vdDogL3RtcC8le25hbWV9LSV7dmVyc2lvbn0tcm9vdAogCiAlZGVzY3JpcHRpb24KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL05ldFdhcmUvZ2V0X2V4cC5hd2sgYi9wYWNrYWdlcy9OZXRXYXJlL2dldF9leHAuYXdrCmluZGV4IDViZDhhMGMuLjU2NmU4OTEgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL05ldFdhcmUvZ2V0X2V4cC5hd2sKKysrIGIvcGFja2FnZXMvTmV0V2FyZS9nZXRfZXhwLmF3awpAQCAtOSw3ICs5LDcgQEAKICMgKgogIyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjICoKICMgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL05ldFdhcmUvZ2V0X3Zlci5hd2sgYi9wYWNrYWdlcy9OZXRXYXJlL2dldF92ZXIuYXdrCmluZGV4IDkxYWZmYmIuLjAzZWU1ZWMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL05ldFdhcmUvZ2V0X3Zlci5hd2sKKysrIGIvcGFja2FnZXMvTmV0V2FyZS9nZXRfdmVyLmF3awpAQCAtOSw3ICs5LDcgQEAKICMgKgogIyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjICoKICMgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL1JFQURNRS5PUzQwMCBiL3BhY2thZ2VzL09TNDAwL1JFQURNRS5PUzQwMAppbmRleCAwY2IxY2YyLi4yNGNmMzllIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9SRUFETUUuT1M0MDAKKysrIGIvcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwCkBAIC03Miw2ICs3Miw3IEBACiAgICAgICAgIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMKICAgICAgICAgQ1VSTE9QVF9DUkxGSUxFCiAgICAgICAgIENVUkxPUFRfQ1VTVE9NUkVRVUVTVAorICAgICAgICBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wKICAgICAgICAgQ1VSTE9QVF9ETlNfU0VSVkVSUwogICAgICAgICBDVVJMT1BUX0VHRFNPQ0tFVAogICAgICAgICBDVVJMT1BUX0VOQ09ESU5HCkBAIC0xMDIsMTAgKzEwMywxMCBAQAogICAgICAgICBDVVJMT1BUX1JUU1BfVFJBTlNQT1JUCiAgICAgICAgIENVUkxPUFRfU0VSVklDRV9OQU1FCiAgICAgICAgIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFCi0gICAgICAgIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUgTm90ZTogU1NIIG5vdCBhdmFpbGFibGUgb24gT1M0MDAuCi0gICAgICAgIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMgICAgICAgICAgTm90ZTogU1NIIG5vdCBhdmFpbGFibGUgb24gT1M0MDAuCi0gICAgICAgIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRSAgICAgTm90ZTogU1NIIG5vdCBhdmFpbGFibGUgb24gT1M0MDAuCi0gICAgICAgIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFICAgICAgTm90ZTogU1NIIG5vdCBhdmFpbGFibGUgb24gT1M0MDAuCisgICAgICAgIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUKKyAgICAgICAgQ1VSTE9QVF9TU0hfS05PV05IT1NUUworICAgICAgICBDVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUKKyAgICAgICAgQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUKICAgICAgICAgQ1VSTE9QVF9TU0xDRVJUCiAgICAgICAgIENVUkxPUFRfU1NMQ0VSVFRZUEUKICAgICAgICAgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QKQEAgLTE0OCw3ICsxNDksNyBAQAogICBQbGVhc2Ugbm90ZSB0aGF0IENVUkxGT1JNX1BUUkNPTlRFTlRTIGFuZCBDVVJMRk9STV9CVUZGRVJQVFIgYXJlIGNvbnNpZGVyZWQKIHVuY29udmVydGlibGUgc3RyaW5ncyBhbmQgdGh1cyBhcmUgTk9UIGZvbGxvd2VkIGJ5IGEgQ0NTSUQuCiAKLV8gY3VybF9lYXN5X2dldGluZm9fY2NzaWQKK18gY3VybF9lYXN5X2dldGluZm9fY2NzaWQoKQogICBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGZvbGxvd2VkIGJ5IGEgJ2NoYXIgKiAqJyBhbmQgYSBDQ1NJRC4gVW5saWtlCiBjdXJsX2Vhc3lfZ2V0aW5mbygpLCB0aGUgdmFsdWUgcmV0dXJuZWQgaW4gdGhlIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIGFmdGVyCiB1c2U6CkBAIC0xNjksNiArMTcwLDE0IEBACiB1c2UuCiAgIE90aGVyIG9wdGlvbnMgYXJlIHByb2Nlc3NlZCBsaWtlIGluIGN1cmxfZWFzeV9nZXRpbmZvKCkuCiAKK18gY3VybF9wdXNoaGVhZGVyX2J5bnVtX2Nzc2lkKCkgYW5kIGN1cmxfcHVzaGhlYWRlcl9ieW5hbWVfY2NzaWQoKQorICBBbHRob3VnaCB0aGUgcHJvdG90eXBlcyBhcmUgc2VsZi1leHBsYW5hdG9yeSwgdGhlIHJldHVybmVkIHN0cmluZyBwb2ludGVyCitzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLCBhcyBvcHBvc2l0ZSB0byB0aGUgbm9uLWNjc2lkIHZlcnNpb25zIG9mIHRoZXNlCitwcm9jZWR1cmVzLgorICBQbGVhc2Ugbm90ZSB0aGF0IEhUVFAyIGlzIG5vdCAoeWV0KSBpbXBsZW1lbnRlZCBvbiBPUy80MDAsIHRodXMgdGhlc2UKK2Z1bmN0aW9ucyB3aWxsIGFsd2F5cyByZXR1cm4gTlVMTC4KKworCiAgIFN0YW5kYXJkIGNvbXBpbGF0aW9uIGVudmlyb25tZW50IGRvZXMgc3VwcG9ydCBuZWl0aGVyIGF1dG90b29scyBub3IgbWFrZTsKIGluIGZhY3QsIHZlcnkgZmV3IGNvbW1vbiB1dGlsaXRpZXMgYXJlIGF2YWlsYWJsZS4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlCiBjb25maWctb3M0MDAuaCBoYXMgYmVlbiBjb2RlZCBtYW51YWxseSBhbmQgdGhlIGNvbXBpbGF0aW9uIHNjcmlwdHMgYXJlCkBAIC0xOTUsNiArMjA0LDggQEAKIF8gUE9QM1MKIF8gUE9QMyB3aXRoIHNlY3VyZSB0cmFuc21pc3Npb24KIF8gUlRTUAorXyBTQ1AgaWYgbGlic3NoMiBpcyBlbmFibGVkCitfIFNGVFAgaWYgbGlic3NoMiBpcyBlbmFibGVkCiBfIFNNVFAKIF8gU01UUFMKIF8gU01UUCB3aXRoIHNlY3VyZSB0cmFuc21pc3Npb24KQEAgLTIxMCwxMyArMjIxLDE3IEBACiBmYW1pbGlhciB3aXRoLgogCiBfIEFzIGEgcHJlcmVxdWlzaXRlLCBRQURSVCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBtdXN0IGJlIGluc3RhbGxlZC4KK18gSWYgZGF0YSBjb21wcmVzc2lvbiBoYXMgdG8gYmUgc3VwcG9ydGVkLCBaTElCIGRldmVsb3BtZW50IGVudmlyb25tZW50IG11c3QKKyAgYmUgaW5zdGFsbGVkLgorXyBMaWtld2lzZSwgaWYgU0NQIGFuZCBTRlRQIHByb3RvY29scyBoYXZlIHRvIGJlIGNvbXBpbGVkIGluLCBMSUJTU0gyCisgIGRldmVsb3BlbnQgZW52aXJvbm1lbnQgbXVzdCBiZSBpbnN0YWxsZWQuCiBfIEluc3RhbGwgdGhlIGN1cmwgc291cmNlIGRpcmVjdG9yeSBpbiBJRlMuCiBfIEVudGVyIHNoZWxsIChRU0gpCiBfIENoYW5nZSBjdXJyZW50IGRpcmVjdG9yeSB0byB0aGUgY3VybCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5CiBfIENoYW5nZSBjdXJyZW50IGRpcmVjdG9yeSB0byAuL3BhY2thZ2VzL09TNDAwCiBfIEVkaXQgZmlsZSBpbmlzY3JpcHQuc2guIFlvdSBtYXkgd2FudCB0byBjaGFuZ2UgdHVuYWJsZSBjb25maWd1cmF0aW9uCiAgIHBhcmFtZXRlcnMsIGxpa2UgZGVidWcgaW5mbyBnZW5lcmF0aW9uLCBvcHRpbWlzYXRpb24gbGV2ZWwsIGxpc3Rpbmcgb3B0aW9uLAotICB0YXJnZXQgbGlicmFyeSwgZXRjLgorICB0YXJnZXQgbGlicmFyeSwgWkxJQi9MSUJTU0gyIGF2YWlsYWJpbGl0eSBhbmQgbG9jYXRpb24sIGV0Yy4KIF8gQ29weSBhbnkgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gbWFrZWxvZyAoaS5lLjoKICAgY3AgaW5pdHNjcmlwdC5zaCBtYWtlbG9nKTogdGhpcyBpcyBpbnRlbmRlZCB0byBjcmVhdGUgdGhlIG1ha2Vsb2cgZmlsZSB3aXRoCiAgIGFuIEFTQ0lJIENDU0lEIQpAQCAtMjQ1LDYgKzI2MCw4IEBACiAgIHByb2dyYW0gdXNpbmcgbGliY3VybC4KIF8gTElCeHh4IG1vZHVsZXMgYW5kIHByb2dyYW1zLiBBbHRob3VnaCB0aGUgdGVzdCBlbnZpcm9ubWVudCBpcyBub3Qgc3VwcG9ydGVkCiAgIG9uIE9TLzQwMCwgdGhlIGxpYmN1cmwgdGVzdCBwcm9ncmFtcyBhcmUgY29tcGlsZWQgZm9yIG1hbnVhbCB0ZXN0cy4KK18gSUZTIGRpcmVjdG9yeSAvY3VybC9pbmNsdWRlL2N1cmwgY29udGFpbmcgdGhlIEMgaGVhZGVyIGZpbGVzIGZvciBJRlMgc291cmNlCisgIEMvQysrIGNvbXBpbGF0aW9uIGFuZCBjdXJsLmluYy5ycGdsZSBmb3IgSUZTIHNvdXJjZSBJTEUvUlBHIGNvbXBpbGF0aW9uLgogCiAKIApAQCAtMjU4LDIxICsyNzUsMjIgQEAKICAgTENfQ1RZUEUsIG9yIGJ5IHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgUUFEUlRfRU5WX0xPQ0FMRSB0byB0aGUgbG9jYWxlCiAgIG9iamVjdCBwYXRoIGJlZm9yZSBleGVjdXRpbmcgdGhlIHByb2dyYW0uCiBfIERvIG5vdCB1c2Ugb3JpZ2luYWwgc291cmNlIGluY2x1ZGUgZmlsZXMgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy4KLSAgVXNlIHRoZSBpbnN0YWxsZWQgbWVtYmVycyBpbnN0ZWFkIChpbiAvUVNZUy5MSUIvQ1VSTC5MSUIvSC5GSUxFKS4KKyAgVXNlIHRoZSBpbnN0YWxsZWQgbWVtYmVycyBpbnN0ZWFkIChpbiAvUVNZUy5MSUIvQ1VSTC5MSUIvSC5GSUxFIGFuZAorICAvY3VybC9pbmNsdWRlL2N1cmwpLgogCiAKIAogSUxFL1JQRyBzdXBwb3J0OgogCiAgIFNpbmNlIDk1JSBvZiB0aGUgT1MvNDAwIHByb2dyYW1tZXJzIHVzZSBJTEUvUlBHIGV4Y2x1c2l2ZWx5LCBhIGRlZmluaXRpb24KLSAgL0NPUFkgbWVtYmVyIGlzIHByb3ZpZGVkIGZvciB0aGlzIGxhbmd1YWdlLiBUbyBpbmNsdWRlIGFsbCBsaWJjdXJsCisgIC9JTkNMVURFIG1lbWJlciBpcyBwcm92aWRlZCBmb3IgdGhpcyBsYW5ndWFnZS4gVG8gaW5jbHVkZSBhbGwgbGliY3VybAogICBkZWZpbml0aW9ucyBpbiBhbiBJTEUvUlBHIG1vZHVsZSwgbGluZQogCiAgICAgIGggYm5kZGlyKCdDVVJML0NVUkwnKQogCiBtdXN0IGZpZ3VyZSBpbiB0aGUgcHJvZ3JhbSBoZWFkZXIsIGFuZCBsaW5lCiAKLSAgICAgZC9jb3B5IGN1cmwvaCxjdXJsLmluYworICAgICBkL2luY2x1ZGUgY3VybC9oLGN1cmwuaW5jCiAKIGluIHRoZSBnbG9iYWwgZGF0YSBzZWN0aW9uIG9mIHRoZSBtb2R1bGUncyBzb3VyY2UgY29kZS4KIApkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmMgYi9wYWNrYWdlcy9PUzQwMC9jY3NpZGN1cmwuYwppbmRleCBhOTAzZmUzLi43NWI3NTcwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9jY3NpZGN1cmwuYworKysgYi9wYWNrYWdlcy9PUzQwMC9jY3NpZGN1cmwuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02NzksNiArNjc5LDggQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgQ1VSTElORk9fVExTX1NFU1NJT046CisgICAgICBjYXNlIENVUkxJTkZPX1RMU19TU0xfUFRSOgorICAgICAgY2FzZSBDVVJMSU5GT19TT0NLRVQ6CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBkZWZhdWx0OgpAQCAtOTMyLDYgKzkzNCwxNCBAQAogCiAgICAgICBicmVhazsKIAorICAgIGNhc2UgQ1VSTEZPUk1fQ09OVEVOVExFTjoKKyAgICAgIGxlbmd0aHggPSBuYXJnczsKKworICAgICAgaWYoIWZvcm1zKQorICAgICAgICB2YWx1ZSA9IChjaGFyICopIHZhX2FyZyhhcmcsIGN1cmxfb2ZmX3QpOworCisgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1VSTEZPUk1fTkFNRUxFTkdUSDoKICAgICAgIG5hbWVsZW5ndGh4ID0gbmFyZ3M7CiAKQEAgLTExMzMsNiArMTE0Myw3IEBACiAgIGNhc2UgQ1VSTE9QVF9DT09LSUVMSVNUOgogICBjYXNlIENVUkxPUFRfQ1JMRklMRToKICAgY2FzZSBDVVJMT1BUX0NVU1RPTVJFUVVFU1Q6CisgIGNhc2UgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MOgogICBjYXNlIENVUkxPUFRfRE5TX1NFUlZFUlM6CiAgIGNhc2UgQ1VSTE9QVF9FR0RTT0NLRVQ6CiAgIGNhc2UgQ1VSTE9QVF9FTkNPRElORzoKQEAgLTEyNzgsMyArMTI4OSw0MiBAQAogCiAgIHJldHVybiAoY2hhciAqKSB2YWx1ZTsKIH0KKworCitjaGFyICoKK2N1cmxfcHVzaGhlYWRlcl9ieW51bV9jc3NpZChzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtLCB1bnNpZ25lZCBpbnQgY2NzaWQpCisKK3sKKyAgY2hhciAqZCA9IChjaGFyICopIE5VTEw7CisgIGNoYXIgKnMgPSBjdXJsX3B1c2hoZWFkZXJfYnludW0oaCwgbnVtKTsKKworICBpZihzKQorICAgIGQgPSBkeW5jb252ZXJ0KGNjc2lkLCBzLCAtMSwgQVNDSUlfQ0NTSUQpOworCisgIHJldHVybiBkOworfQorCisKK2NoYXIgKgorY3VybF9wdXNoaGVhZGVyX2J5bmFtZV9jY3NpZChzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgY29uc3QgY2hhciAqaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2NzaWRpbiwgdW5zaWduZWQgaW50IGNjc2lkb3V0KQorCit7CisgIGNoYXIgKmQgPSAoY2hhciAqKSBOVUxMOworICBjaGFyICpzOworCisgIGlmKGhlYWRlcikgeworICAgIGhlYWRlciA9IGR5bmNvbnZlcnQoQVNDSUlfQ0NTSUQsIGhlYWRlciwgLTEsIGNjc2lkaW4pOworCisgICAgaWYoaGVhZGVyKSB7CisgICAgICBzID0gY3VybF9wdXNoaGVhZGVyX2J5bmFtZShoLCBoZWFkZXIpOworICAgICAgZnJlZSgoY2hhciAqKSBoZWFkZXIpOworCisgICAgICBpZihzKQorICAgICAgICBkID0gZHluY29udmVydChjY3NpZG91dCwgcywgLTEsIEFTQ0lJX0NDU0lEKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZDsKK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL2Njc2lkY3VybC5oIGIvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmgKaW5kZXggM2QxZmU3OS4uNWJkMjRjZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmgKKysrIGIvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmgKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjEsNSArNjEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNjc2lkKTsKIENVUkxfRVhURVJOIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHRfY2NzaWQoQ1VSTCAqIGN1cmwsIENVUkxvcHRpb24gdGFnLCAuLi4pOwogQ1VSTF9FWFRFUk4gdm9pZCBjdXJsX2NlcnRpbmZvX2ZyZWVfYWxsKHN0cnVjdCBjdXJsX2NlcnRpbmZvICppbmZvKTsKK0NVUkxfRVhURVJOIGNoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW51bV9jc3NpZChzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtLCB1bnNpZ25lZCBpbnQgY2NzaWQpOworQ1VSTF9FWFRFUk4gY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bmFtZV9jY3NpZChzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2NzaWRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNjc2lkb3V0KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbiBiL3BhY2thZ2VzL09TNDAwL2N1cmwuaW5jLmluCmluZGV4IDJiYmY2YjAuLjJhZTc2ZDQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL09TNDAwL2N1cmwuaW5jLmluCisrKyBiL3BhY2thZ2VzL09TNDAwL2N1cmwuaW5jLmluCkBAIC05LDcgKzksNyBAQAogICAgICAgKgogICAgICAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICAgICAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gICAgICAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgICAgICAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICAgICAgKgogICAgICAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAgICAgICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02Niw2ICs2Niw4IEBACiAgICAgIGQgQ1VSTElORk9fRE9VQkxFLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDMwMDAwMCcKICAgICAgZCBDVVJMSU5GT19TTElTVCAgYyAgICAgICAgICAgICAgICAgICBYJzAwNDAwMDAwJworICAgICBkIENVUkxJTkZPX1NPQ0tFVC4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDA1MDAwMDAnCiAgICAgIGQgQ1VSTElORk9fTUFTSyAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDBGRkZGRicKICAgICAgZCBDVVJMSU5GT19UWVBFTUFTSy4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDBGMDAwMDAnCkBAIC0xMjMsMjEgKzEyNSwyNSBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwNDAwMDAnCiAgICAgIGQgQ1VSTF9WRVJTSU9OX1VOSVhfU09DS0VUUy4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwODAwMDAnCisgICAgIGQgQ1VSTF9WRVJTSU9OX1BTTC4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAxMDAwMDAnCiAgICAgICAqCi0gICAgIGQgSFRUUFBPU1RfRklMRU5BTUUuLi4KKyAgICAgZCBDVVJMX0hUVFBQT1NUX0ZJTEVOQU1FLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwMScKLSAgICAgZCBIVFRQUE9TVF9SRUFERklMRS4uLgorICAgICBkIENVUkxfSFRUUFBPU1RfUkVBREZJTEUuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDAyJwotICAgICBkIEhUVFBQT1NUX1BUUk5BTUUuLi4KKyAgICAgZCBDVVJMX0hUVFBQT1NUX1BUUk5BTUUuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDA0JwotICAgICBkIEhUVFBQT1NUX1BUUkNPTlRFTlRTLi4uCisgICAgIGQgQ1VSTF9IVFRQUE9TVF9QVFJDT05URU5UUy4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMDAwMDgnCi0gICAgIGQgSFRUUFBPU1RfQlVGRkVSLi4uCisgICAgIGQgQ1VSTF9IVFRQUE9TVF9CVUZGRVIuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDEwJwotICAgICBkIEhUVFBQT1NUX1BUUkJVRkZFUi4uLgorICAgICBkIENVUkxfSFRUUFBPU1RfUFRSQlVGRkVSLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAyMCcKLSAgICAgZCBIVFRQUE9TVF9DQUxMQkFDSy4uLgorICAgICBkIENVUkxfSFRUUFBPU1RfQ0FMTEJBQ0suLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDQwJworICAgICBkIENVUkxfSFRUUFBPU1RfTEFSR0UuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDgwJwogICAgICAgKgogICAgICBkIENVUkxfU0VFS0ZVTkNfT0suLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwCkBAIC0yMDIsNiArMjA4LDggQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwCiAgICAgIGQgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDAwMAorICAgICBkIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAwMDAKICAgICAgZCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMjAwMDAKICAgICAgZCBDVVJMT1BUVFlQRV9PRkZfVC4uLgpAQCAtMjIyLDYgKzIzMCwxMiBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDIKICAgICAgZCBDVVJMX0hUVFBfVkVSU0lPTl8yXzAuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAzCisgICAgIGQgQ1VSTF9IVFRQX1ZFUlNJT05fMi4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDMKKyAgICAgZCBDVVJMX0hUVFBfVkVSU0lPTl8yVExTLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgNAorICAgICBkIENVUkxfSFRUUF9WRVJTSU9OXzJfUFJJT1JfS05PV0xFREdFLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgNQogICAgICAgKgogICAgICBkIENVUkxfTkVUUkNfSUdOT1JFRC4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDAKQEAgLTI3Niw2ICsyOTAsOSBAQAogICAgICBkIENVUkxfQ1NFTEVDVF9FUlIuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDA0JwogICAgICAgKgorICAgICBkIENVUkxfUFVTSF9PSyAgICBjICAgICAgICAgICAgICAgICAgIDAKKyAgICAgZCBDVVJMX1BVU0hfREVOWSAgYyAgICAgICAgICAgICAgICAgICAxCisgICAgICAqCiAgICAgIGQgQ1VSTFBBVVNFX1JFQ1YgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwMScKICAgICAgZCBDVVJMUEFVU0VfUkVDVl9DT05ULi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwMCcKQEAgLTUxOSw2ICs1MzYsOCBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDkwCiAgICAgIGQgIENVUkxFX1NTTF9JTlZBTElEQ0VSVFNUQVRVUy4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDkxCisgICAgIGQgIENVUkxFX0hUVFAyX1NUUkVBTS4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDkyCiAgICAgICAqCiAgICAgICAvaWYgbm90IGRlZmluZWQoQ1VSTF9OT19PTERJRVMpCiAgICAgIGQgIENVUkxFX1VSTF9NQUxGT1JNQVRfVVNFUi4uLgpAQCAtNjc2LDcgKzY5NSw5IEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMwogICAgICAgKgogICAgICBkIENVUkxTU0xPUFRfQUxMT1dfQkVBU1QuLi4KLSAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAxJworICAgICBkIENVUkxTU0xPUFRfTk9fUkVWT0tFLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAyJwogICAgICAgKgogICAgICAgL2lmIG5vdCBkZWZpbmVkKENVUkxfTk9fT0xESUVTKQogICAgICBkIGN1cmxfZnRwc3NsICAgICBzICAgICAgICAgICAgICAgICAgIGxpa2UoY3VybF91c2Vzc2wpCkBAIC0xMjE1LDYgKzEyMzYsMjIgQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDIzNQogICAgICBkICBDVVJMT1BUX1NFUlZJQ0VfTkFNRS4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwMjM2CisgICAgIGQgIENVUkxPUFRfUElQRVdBSVQuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwMDIzNworICAgICBkICBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDIzOAorICAgICBkICBDVVJMT1BUX1NUUkVBTV9XRUlHSFQuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwMDIzOQorICAgICBkICBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAyNDAKKyAgICAgZCAgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAyNDEKKyAgICAgZCAgQ1VSTE9QVF9URlRQX05PX09QVElPTlMuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwMDI0MgorICAgICBkICBDVVJMT1BUX0NPTk5FQ1RfVE8uLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDI0MworICAgICBkICBDVVJMT1BUX1RDUF9GQVNUT1BFTi4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDAwMjQ0CiAgICAgICAqCiAgICAgICAvaWYgbm90IGRlZmluZWQoQ1VSTF9OT19PTERJRVMpCiAgICAgIGQgIENVUkxPUFRfRklMRSAgIGMgICAgICAgICAgICAgICAgICAgMTAwMDEKQEAgLTEzMDUsNiArMTM0Miw4IEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTgKICAgICAgZCAgQ1VSTEZPUk1fU1RSRUFNLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTkKKyAgICAgZCAgQ1VSTEZPUk1fQ09OVEVOVExFTi4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDIwCiAgICAgICAqCiAgICAgIGQgQ1VSTElORk8gICAgICAgIHMgICAgICAgICAgICAgMTBpIDAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKSAgICAgICAgICAgICAgIEVudW0KICAgICAgZCAgQ1VSTElORk9fRUZGRUNUSVZFX1VSTC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTElORk9fU1RSSU5HICsgMQpAQCAtMTM5Myw2ICsxNDMyLDEwIEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDIwMDAyQScKICAgICAgZCAgQ1VSTElORk9fVExTX1NFU1NJT04uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTElORk9fU0xJU1QgKyA0MwogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDA0MDAwMkInCisgICAgIGQgIENVUkxJTkZPX0FDVElWRVNPQ0tFVC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPX1NPQ0tFVCArIDQ0CisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDUwMDAyQycKKyAgICAgZCAgQ1VSTElORk9fVExTX1NTTF9QVFIuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTElORk9fU0xJU1QgKyA0NQorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDA0MDAwMkQnCiAgICAgICAqCiAgICAgIGQgIENVUkxJTkZPX0hUVFBfQ09ERS4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9sZCAuLi5SRVNQT05TRV9DT0RFCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDIwMDAwMicKQEAgLTE0MTksNiArMTQ2MiwxMCBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDgKICAgICAgZCAgQ1VSTFNTTEJBQ0tFTkRfREFSV0lOU1NMLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgOQorICAgICBkICBDVVJMU1NMQkFDS0VORF9BWFRMUy4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwCisgICAgIGQgIENVUkxTU0xCQUNLRU5EX01CRURUTFMuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMQogICAgICAgKgogICAgICBkIGN1cmxfY2xvc2Vwb2xpY3kuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgcyAgICAgICAgICAgICAxMGkgMCBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpICAgICAgICAgICAgICAgRW51bQpAQCAtMTU3Myw2ICsxNjIwLDE4IEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAwMTIKICAgICAgZCAgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMDAwMTMKKyAgICAgZCAgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMjAwMTQKKyAgICAgZCAgQ1VSTE1PUFRfUFVTSERBVEEuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDAxNQorICAgICAgKgorICAgICAgKiBCaXRtYXNrIGJpdHMgZm9yIENVUkxNT1BUX1BJUEVMSU5HLgorICAgICAgKgorICAgICBkIENVUkxQSVBFX05PVEhJTkcuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICB4JzAwMDAwMDAwJworICAgICBkIENVUkxQSVBFX0hUVFAxICBjICAgICAgICAgICAgICAgICAgIHgnMDAwMDAwMDEnCisgICAgIGQgQ1VSTFBJUEVfTVVMVElQTEVYLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgeCcwMDAwMDAwMicKICAgICAgICoKICAgICAgICogIFB1YmxpYyBBUEkgZW51bXMgZm9yIFJUU1AgcmVxdWVzdHMuCiAgICAgICAqCkBAIC0xNjcyLDYgKzE3MzEsNyBAQAogICAgICBkICAgdmFsdWVfcHRyICAgICAgICAgICAgICAgICAgICAgKiAgIG92ZXJsYXkodmFsdWUpCiAgICAgIGQgICB2YWx1ZV9wcm9jcHRyLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgb3ZlcmxheSh2YWx1ZSkgcHJvY3B0cgorICAgICBkICAgdmFsdWVfbnVtICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXkodmFsdWU6IDgpIGxpa2UoY3VybF9vZmZfdCkKICAgICAgICoKICAgICAgZCBjdXJsX3NsaXN0ICAgICAgZHMgICAgICAgICAgICAgICAgICBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpCiAgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVkCkBAIC0xNzkxLDYgKzE4NTEsMTIgQEAKICAgICAgZCBjdXJsX3NvY2tldF9jYWxsYmFjay4uLgogICAgICBkICAgICAgICAgICAgICAgICBzICAgICAgICAgICAgICAgKiAgIGJhc2VkKCMjIyMjI3B0ciMjIyMjIykgcHJvY3B0cgogICAgICAgKgorICAgICBkIGN1cmxfbXVsdGlfdGltZXJfY2FsbGJhY2suLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcyAgICAgICAgICAgICAgICogICBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpIHByb2NwdHIKKyAgICAgICoKKyAgICAgZCBjdXJsX3B1c2hfY2FsbGJhY2suLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcyAgICAgICAgICAgICAgICogICBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpIHByb2NwdHIKKyAgICAgICoKICAgICAgZCBjdXJsX29wZW5zb2NrZXRfY2FsbGJhY2suLi4KICAgICAgZCAgICAgICAgICAgICAgICAgcyAgICAgICAgICAgICAgICogICBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpIHByb2NwdHIKICAgICAgICoKQEAgLTIxMDYsNiArMjE3MiwxNiBAQAogICAgICBkICAgICAgICAgICAgICAgICBwciAgICAgICAgICAgICAgKiAgIGV4dHByb2MoJ2N1cmxfbXVsdGlfc3RyZXJyb3InKSAgICAgICBjaGFyICoKICAgICAgZCAgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBsaWtlKENVUkxNY29kZSkKICAgICAgICoKKyAgICAgZCBjdXJsX3B1c2hoZWFkZXJfYnludW0uLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcHIgICAgICAgICAgICAgICogICBleHRwcm9jKCdjdXJsX3B1c2hoZWFkZXJfYnludW0nKSAgICAgY2hhciAqCisgICAgIGQgIGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfcHVzaGhlYWRlcnMgKgorICAgICBkICBudW0gICAgICAgICAgICAgICAgICAgICAgICAgIDEwdSAwIHZhbHVlCisgICAgICAqCisgICAgIGQgY3VybF9wdXNoaGVhZGVyX2J5bmFtZS4uLgorICAgICBkICAgICAgICAgICAgICAgICBwciAgICAgICAgICAgICAgKiAgIGV4dHByb2MoJ2N1cmxfcHVzaGhlYWRlcl9ieW5hbWUnKSAgICBjaGFyICoKKyAgICAgZCAgaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9wdXNoaGVhZGVycyAqCisgICAgIGQgIGhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgb3B0aW9ucygqc3RyaW5nKSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKgorICAgICAgKgogICAgICBkIGN1cmxfbXVsdGlfc29ja2V0Li4uCiAgICAgIGQgICAgICAgICAgICAgICAgIHByICAgICAgICAgICAgICAgICAgZXh0cHJvYygnY3VybF9tdWx0aV9zb2NrZXQnKQogICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UoQ1VSTE1jb2RlKQpAQCAtMjI3Myw0ICsyMzQ5LDE5IEBACiAgICAgIGQgIG9iamVjdGFyZyAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgb3B0aW9ucygqc3RyaW5nOiAqbm9wYXNzKQogICAgICBkICBjY3NpZCAgICAgICAgICAgICAgICAgICAgICAgIDEwdSAwIHZhbHVlIG9wdGlvbnMoKm5vcGFzcykKICAgICAgICoKKyAgICAgZCBjdXJsX3B1c2hoZWFkZXJfYnludW1fY2NzaWQuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcHIgICAgICAgICAgICAgICogICBleHRwcm9jKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqCisgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3VybF9wdXNoaGVhZGVyX2J5bnVtX2Njc2lkJykKKyAgICAgZCAgaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9wdXNoaGVhZGVycyAqCisgICAgIGQgIG51bSAgICAgICAgICAgICAgICAgICAgICAgICAgMTB1IDAgdmFsdWUKKyAgICAgZCAgY2NzaWQgICAgICAgICAgICAgICAgICAgICAgICAxMHUgMCB2YWx1ZQorICAgICAgKgorICAgICBkIGN1cmxfcHVzaGhlYWRlcl9ieW5hbWVfY2NzaWQuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcHIgICAgICAgICAgICAgICogICBleHRwcm9jKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqCisgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3VybF9wdXNoaGVhZGVyX2J5bmFtZV9jY3NpZCcpCisgICAgIGQgIGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfcHVzaGhlYWRlcnMgKgorICAgICBkICBoZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHZhbHVlIG9wdGlvbnMoKnN0cmluZykgICAgICAgICAgICAgICBjb25zdCBjaGFyICoKKyAgICAgZCAgY2NzaWRpbiAgICAgICAgICAgICAgICAgICAgICAxMHUgMCB2YWx1ZQorICAgICBkICBjY3NpZG91dCAgICAgICAgICAgICAgICAgICAgIDEwdSAwIHZhbHVlCisgICAgICAqCiAgICAgICAvZW5kaWYKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL2luaXRzY3JpcHQuc2ggYi9wYWNrYWdlcy9PUzQwMC9pbml0c2NyaXB0LnNoCmluZGV4IDAxMDVmNWEuLjhkNjZiNjAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL09TNDAwL2luaXRzY3JpcHQuc2gKKysrIGIvcGFja2FnZXMvT1M0MDAvaW5pdHNjcmlwdC5zaApAQCAtNjAsNiArNjAsMTMgQEAKIHNldGVudiBaTElCX0xJQiAgICAgICAgICdaTElCJyAgICAgICAgICAgICAgICAgICMgWkxJQiBsaWJyYXJ5Lgogc2V0ZW52IFpMSUJfQk5ERElSICAgICAgJ1pMSUJfQScgICAgICAgICAgICAgICAgIyBaTElCIGJpbmRpbmcgZGlyZWN0b3J5LgogCisjICAgICAgIERlZmluZSBMSUJTU0gyIGF2YWlsYWJpbGl0eSBhbmQgbG9jYXRpb25zLgorCitzZXRlbnYgV0lUSF9MSUJTU0gyICAgICAwICAgICAgICAgICAgICAgICAgICAgICAjIERlZmluZSB0byAxIHRvIGVuYWJsZS4KK3NldGVudiBMSUJTU0gyX0lOQ0xVREUgICcvbGlic3NoMi9pbmNsdWRlJyAgICAgICMgTElCU1NIMiBpbmNsdWRlIElGUyBkaXJlY3RvcnkuCitzZXRlbnYgTElCU1NIMl9MSUIgICAgICAnTElCU1NIMicgICAgICAgICAgICAgICAjIExJQlNTSDIgbGlicmFyeS4KK3NldGVudiBMSUJTU0gyX0JORERJUiAgICdMSUJTU0gyX0EnICAgICAgICAgICAgICMgTElCU1NIMiBiaW5kaW5nIGRpcmVjdG9yeS4KKwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC0xOTAsNiArMTk3LDEwIEBACiAgICAgICAgIHRoZW4gICAgQ01EPSIke0NNRH0gJyR7WkxJQl9JTkNMVURFfSciCiAgICAgICAgIGZpCiAKKyAgICAgICAgaWYgWyAiJHtXSVRIX0xJQlNTSDJ9IiAhPSAiMCIgXQorICAgICAgICB0aGVuICAgIENNRD0iJHtDTUR9ICcke0xJQlNTSDJfSU5DTFVERX0nIgorICAgICAgICBmaQorCiAgICAgICAgIENNRD0iJHtDTUR9ICR7SU5DTFVERVN9KSIKICAgICAgICAgQ01EPSIke0NNRH0gVEdUQ0NTSUQoJHtUR1RDQ1NJRH0pIFRHVFJMUygke1RHVFJMU30pIgogICAgICAgICBDTUQ9IiR7Q01EfSBPVVRQVVQoJHtPVVRQVVR9KSIKQEAgLTIwMiw2ICsyMTMsMTAgQEAKICAgICAgICAgdGhlbiAgICBERUZJTkVTPSIke0RFRklORVN9IEhBVkVfTElCWiBIQVZFX1pMSUJfSCIKICAgICAgICAgZmkKIAorICAgICAgICBpZiBbICIke1dJVEhfTElCU1NIMn0iICE9ICIwIiBdCisgICAgICAgIHRoZW4gICAgREVGSU5FUz0iJHtERUZJTkVTfSBVU0VfTElCU1NIMiBIQVZFX0xJQlNTSDJfSCIKKyAgICAgICAgZmkKKwogICAgICAgICBpZiBbICIke0RFRklORVN9IiBdCiAgICAgICAgIHRoZW4gICAgQ01EPSIke0NNRH0gREVGSU5FKCR7REVGSU5FU30pIgogICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvbWFrZS1saWIuc2ggYi9wYWNrYWdlcy9PUzQwMC9tYWtlLWxpYi5zaAppbmRleCBhNGU1MDU5Li41MjZlYzAzIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9tYWtlLWxpYi5zaAorKysgYi9wYWNrYWdlcy9PUzQwMC9tYWtlLWxpYi5zaApAQCAtMTI4LDYgKzEyOCwxMSBAQAogICAgICAgICBDTUQ9IiR7Q01EfSBCTkRESVIoJHtUQVJHRVRMSUJ9LyR7U1RBVEJORERJUn0iCiAgICAgICAgIGlmIFsgIiR7V0lUSF9aTElCfSIgIT0gMCBdCiAgICAgICAgIHRoZW4gICAgQ01EPSIke0NNRH0gJHtaTElCX0xJQn0vJHtaTElCX0JORERJUn0iCisgICAgICAgICAgICAgICAgbGlibGlzdCAtYSAiJHtaTElCX0xJQn0iCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgIiR7V0lUSF9MSUJTU0gyfSIgIT0gMCBdCisgICAgICAgIHRoZW4gICAgQ01EPSIke0NNRH0gJHtMSUJTU0gyX0xJQn0vJHtMSUJTU0gyX0JORERJUn0iCisgICAgICAgICAgICAgICAgbGlibGlzdCAtYSAiJHtMSUJTU0gyX0xJQn0iCiAgICAgICAgIGZpCiAgICAgICAgIENNRD0iJHtDTUR9KSIKICAgICAgICAgQ01EPSIke0NNRH0gQk5EU1JWUEdNKFFBRFJUVFMgUUdMRENMTlQgUUdMREJSRFIpIgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvbWFrZWZpbGUuc2ggYi9wYWNrYWdlcy9PUzQwMC9tYWtlZmlsZS5zaAppbmRleCBkMmI2YmM5Li4xNDFkODc3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9tYWtlZmlsZS5zaAorKysgYi9wYWNrYWdlcy9PUzQwMC9tYWtlZmlsZS5zaApAQCAtMjEsNyArMjEsNyBAQAogIyAgICAgICBDcmVhdGUgdGhlIERPQ1Mgc291cmNlIGZpbGUgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAKIGlmIGFjdGlvbl9uZWVkZWQgIiR7TElCSUZTTkFNRX0vRE9DUy5GSUxFIgotdGhlbiAgICBDTUQ9IkNSVFNSQ1BGIEZJTEUoJHtUQVJHRVRMSUJ9L0RPQ1MpIFJDRExFTigxMTIpIgordGhlbiAgICBDTUQ9IkNSVFNSQ1BGIEZJTEUoJHtUQVJHRVRMSUJ9L0RPQ1MpIFJDRExFTigyNDApIgogICAgICAgICBDTUQ9IiR7Q01EfSBDQ1NJRCgke1RHVENDU0lEfSkgVEVYVCgnRG9jdW1lbnRhdGlvbiB0ZXh0cycpIgogICAgICAgICBzeXN0ZW0gIiR7Q01EfSIKIGZpCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9PUzQwMC9vczQwMHN5cy5jIGIvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuYwppbmRleCA0YmUxZGVhLi44OTgzN2JkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9vczQwMHN5cy5jCisrKyBiL3BhY2thZ2VzL09TNDAwL29zNDAwc3lzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuaCBiL3BhY2thZ2VzL09TNDAwL29zNDAwc3lzLmgKaW5kZXggMTE0NDY5Mi4uYzk4ZTE5OCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuaAorKysgYi9wYWNrYWdlcy9PUzQwMC9vczQwMHN5cy5oCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5bWJpYW4vZ3JvdXAvbGliY3VybC5tbXAgYi9wYWNrYWdlcy9TeW1iaWFuL2dyb3VwL2xpYmN1cmwubW1wCmluZGV4IDU0NWNkZWUuLmY3NGIxOWIgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1N5bWJpYW4vZ3JvdXAvbGliY3VybC5tbXAKKysrIGIvcGFja2FnZXMvU3ltYmlhbi9ncm91cC9saWJjdXJsLm1tcApAQCAtMzUsMTIgKzM1LDE1IEBACiAgIHNvY2tzX3NzcGkuYyBjdXJsX3NzcGkuYyBzbGlzdC5jIG5vbmJsb2NrLmMgY3VybF9tZW1yY2hyLmMgaW1hcC5jICAgIFwKICAgcG9wMy5jIHNtdHAuYyBwaW5ncG9uZy5jIHJ0c3AuYyBjdXJsX3RocmVhZHMuYyB3YXJubGVzcy5jIGhtYWMuYyAgICAgXAogICB2dGxzL3BvbGFyc3NsLmMgY3VybF9ydG1wLmMgb3BlbmxkYXAuYyBjdXJsX2dldGhvc3RuYW1lLmMgZ29waGVyLmMgICBcCi0gIHZ0bHMvYXh0bHMuYyBpZG5fd2luMzIuYyBodHRwX25lZ290aWF0ZV9zc3BpLmMgdnRscy9jeWFzc2wuYyAgICAgICAgIFwKLSAgaHR0cF9wcm94eS5jIG5vbi1hc2NpaS5jIGFzeW4tYXJlcy5jIGFzeW4tdGhyZWFkLmMgY3VybF9nc3NhcGkuYyAgICAgXAotICBjdXJsX250bG0uYyBjdXJsX250bG1fd2IuYyBjdXJsX250bG1fY29yZS5jIGN1cmxfbnRsbV9tc2dzLmMgICAgICAgICBcCi0gIGN1cmxfc2FzbC5jIHZ0bHMvc2NoYW5uZWwuYyBjdXJsX211bHRpYnl0ZS5jIHZ0bHMvZGFyd2luc3NsLmMgICAgICAgIFwKLSAgY29ubmNhY2hlLmMgY3VybF9zYXNsX3NzcGkuYyBzbWIuYyBjdXJsX3Nhc2xfZ3NzYXBpLmMgICAgICBcCi0gIGN1cmxfZW5kaWFuLmMgY3VybF9kZXMuYworICB2dGxzL2F4dGxzLmMgaWRuX3dpbjMyLmMgdnRscy9jeWFzc2wuYyBodHRwX3Byb3h5LmMgbm9uLWFzY2lpLmMgICAgICBcCisgIGFzeW4tYXJlcy5jIGFzeW4tdGhyZWFkLmMgY3VybF9nc3NhcGkuYyBodHRwX250bG0uYyBjdXJsX250bG1fd2IuYyAgIFwKKyAgY3VybF9udGxtX2NvcmUuYyBjdXJsX3Nhc2wuYyB2dGxzL3NjaGFubmVsLmMgY3VybF9tdWx0aWJ5dGUuYyAgICAgICAgXAorICB2dGxzL2RhcndpbnNzbC5jIGNvbm5jYWNoZS5jIGN1cmxfc2FzbF9zc3BpLmMgc21iLmMgY3VybF9lbmRpYW4uYyAgICBcCisgIGN1cmxfZGVzLmMgc3lzdGVtX3dpbjMyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdmF1dGgvdmF1dGguYyB2YXV0aC9jbGVhcnRleHQuYyB2YXV0aC9jcmFtLmMgdmF1dGgvZGlnZXN0LmMgICAgICAgICAgXAorICB2YXV0aC9kaWdlc3Rfc3NwaS5jIHZhdXRoL2tyYjVfZ3NzYXBpLmMgdmF1dGgva3JiNV9zc3BpLmMgICAgICAgICAgICBcCisgIHZhdXRoL250bG0uYyB2YXV0aC9udGxtX3NzcGkuYyB2YXV0aC9vYXV0aDIuYyB2YXV0aC9zcG5lZ29fZ3NzYXBpLmMgIFwKKyAgdmF1dGgvc3BuZWdvX3NzcGkuYwogCiBVU0VSSU5DTFVERSAgIC4uLy4uLy4uL2xpYiAuLi8uLi8uLi9pbmNsdWRlL2N1cmwKICNpZmRlZiBFTkFCTEVfU1NMCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9XaW4zMi9SRUFETUUgYi9wYWNrYWdlcy9XaW4zMi9SRUFETUUKaW5kZXggMjY2ZTRlYS4uZWI1ZDBhNiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvV2luMzIvUkVBRE1FCisrKyBiL3BhY2thZ2VzL1dpbjMyL1JFQURNRQpAQCAtMyw3ICszLDcgQEAKIERFU0NSSVBUSU9OCiAKIChJZiB5b3UncmUgb25seSBsb29raW5nIGZvciBwcmVjb21waWxlZCB3aW4zMiBiaW5hcmllcywgZ28gdmlzaXQKLWh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQuaHRtbCkKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkLmh0bWwpCiAKIFBhY2thZ2luZyBvZiB0aGUgY3VybCBiaW5hcmllcyBmb3IgV2luMzIgc2hvdWxkIGF0IHRoaXMgcG9pbnQgaW4gdGltZSBiZSBiYXNlZAogb24gdGhlIEluZm9aaXAgKHppcC91bnppcCkgYXJjaGl2ZXIgZmFtaWx5IGFzIHRoZSBkZS1mYWN0byBzdGFuZGFyZCBmb3IKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1dpbjMyL2N5Z3dpbi9SRUFETUUgYi9wYWNrYWdlcy9XaW4zMi9jeWd3aW4vUkVBRE1FCmluZGV4IDc0NTdmNzMuLmEwODExZGUgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1dpbjMyL2N5Z3dpbi9SRUFETUUKKysrIGIvcGFja2FnZXMvV2luMzIvY3lnd2luL1JFQURNRQpAQCAtMTYsOCArMTYsOCBAQAogCiAKIENhbm9uaWNhbCBIb21lcGFnZSBhbmQgRG93bmxvYWRzOgotICBodHRwOi8vY3VybC5oYXh4LnNlLwotICBodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkLmh0bWwKIAogCiBDeWd3aW4gc3BlY2lmaWMgc291cmNlIGZpbGVzIChhIC5SRUFETUUgdGVtcGxhdGUgYW5kIGEgTWFrZWZpbGUKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL3Ztcy9idWlsZF9nbnZfY3VybF9wY3NpX2Rlc2MuY29tIGIvcGFja2FnZXMvdm1zL2J1aWxkX2dudl9jdXJsX3Bjc2lfZGVzYy5jb20KaW5kZXggNTcyYjliOC4uM2I0Y2Q4MCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvdm1zL2J1aWxkX2dudl9jdXJsX3Bjc2lfZGVzYy5jb20KKysrIGIvcGFja2FnZXMvdm1zL2J1aWxkX2dudl9jdXJsX3Bjc2lfZGVzYy5jb20KQEAgLTExMyw2ICsxMTMsNyBAQAogJCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIHZtc3ByZCA9ICJERUMiCiAkIGlmIGJhc2UgLmVxcy4gIkk2NFZNUyIgdGhlbiB2bXNwcmQgPSAiSFAiCiskIHZzaXByZCA9ICJWU0kiCiAkIQogJCB3cml0ZSBwZHNjICIgICBzb2Z0d2FyZSAnJ3Ztc3ByZCcgJydiYXNlJyBWTVMgOyIKICQgYXJjaF90eXBlID0gZiRnZXRzeWkoIkFSQ0hfTkFNRSIpCkBAIC0xMjYsOCArMTI3LDExIEBACiAkIHZtc3RhZyA9IG1hanZlciArIG1pbnZlciArIGRhc2h2ZXIKICQgY29kZSA9IGYkZXh0cmFjdCgwLCAxLCBhcmNoX3R5cGUpCiAkIGFyY2hfY29kZSA9IGYkZXh0cmFjdCgwLCAxLCBhcmNoX3R5cGUpCi0kIHdyaXRlIHBkc2MgLQotICIgICBpZiAobm90IDxzb2Z0d2FyZSAnJ3Ztc3ByZCcgJydiYXNlJyBWTVMgdmVyc2lvbiBtaW5pbXVtICcnbm9kZV9zd3ZlcnMnPikgOyIKKyQgbGluZV9vdXQgPSAtCisgIiAgIGlmICgobm90IDxzb2Z0d2FyZSAnJ3ZzaXByZCcgJydiYXNlJyBWTVMgdmVyc2lvbiBtaW5pbXVtIiArIC0KKyAiICcnbm9kZV9zd3ZlcnMnPikgYW5kIiArIC0KKyAiIChub3QgPHNvZnR3YXJlICcndm1zcHJkJyAnJ2Jhc2UnIFZNUyB2ZXJzaW9uIG1pbmltdW0gJydub2RlX3N3dmVycyc+KSk7IgorJCB3cml0ZSBwZHNjIGxpbmVfb3V0CiAkIHdyaXRlIHBkc2MgIiAgICAgIGVycm9yIE5FRURfVk1TJyd2bXN0YWcnOyIKICQgd3JpdGUgcGRzYyAiICAgZW5kIGlmOyIKICQhCmRpZmYgLS1naXQgYS9wYWNrYWdlcy92bXMvY3VybF9nbnZfYnVpbGRfc3RlcHMudHh0IGIvcGFja2FnZXMvdm1zL2N1cmxfZ252X2J1aWxkX3N0ZXBzLnR4dAppbmRleCA2YTg3ZmVmLi44MzUzNGMwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy92bXMvY3VybF9nbnZfYnVpbGRfc3RlcHMudHh0CisrKyBiL3BhY2thZ2VzL3Ztcy9jdXJsX2dudl9idWlsZF9zdGVwcy50eHQKQEAgLTM2LDcgKzM2LDcgQEAKIFtnbnYuY29tbW9uX3NyY11jdXJsXypfb3JpZ2luYWxfc3JjLmJjayBpcyB0aGUgb3JpZ2luYWwgc291cmNlIG9mIHRoZSBjdXJsIGtpdAogYXMgcHJvdmlkZWQgYnkgdGhlIGN1cmwgcHJvamVjdC4gIFtnbnYudm1zX3NyY11jdXJsLSpfdm1zX3NyYy5iY2ssIGlmIHByZXNlbnQsCiBoYXMgdGhlIE9wZW5WTVMgc3BlY2lmaWMgZmlsZXMgdGhhdCBhcmUgdXNlZCBmb3IgYnVpbGRpbmcgdGhhdCBhcmUgbm90IHlldCBpbgotdGhlIGN1cmwgc291cmNlIGtpdHMgZm9yIHRoYXQgcmVsZWFzZSBkaXN0cmlidXRlZCBodHRwOi8vY3VybC5oYXh4LnNlCit0aGUgY3VybCBzb3VyY2Uga2l0cyBmb3IgdGhhdCByZWxlYXNlIGRpc3RyaWJ1dGVkIGh0dHBzOi8vY3VybC5oYXh4LnNlCiAKIFRoZXNlIGJhY2t1cCBzYXZlc2V0cyBzaG91bGQgYmUgcmVzdG9yZWQgdG8gZGlmZmVyZW50IGRpcmVjdG9yeSB0cmVlcyBvbgogYW4gT0RTLTUgdm9sdW1lKHMpIHdoaWNoIGFyZSByZWZlcmVuY2VkIGJ5IGNvbmNlYWxlZCByb290ZWQgbG9naWNhbCBuYW1lcy4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL3Ztcy9jdXJsbXNnLmggYi9wYWNrYWdlcy92bXMvY3VybG1zZy5oCmluZGV4IDA0NzNiZTYuLjJjYjMyZWMgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL3Ztcy9jdXJsbXNnLmgKKysrIGIvcGFja2FnZXMvdm1zL2N1cmxtc2cuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL3Ztcy9jdXJsbXNnX3Ztcy5oIGIvcGFja2FnZXMvdm1zL2N1cmxtc2dfdm1zLmgKaW5kZXggMzk3Njk3My4uM2FlZjljZiAxMDA2NDQKLS0tIGEvcGFja2FnZXMvdm1zL2N1cmxtc2dfdm1zLmgKKysrIGIvcGFja2FnZXMvdm1zL2N1cmxtc2dfdm1zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9SRUFETUUgYi9wcm9qZWN0cy9SRUFETUUKaW5kZXggYjQ1ZDc4My4uZTVmZDAxOSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvUkVBRE1FCisrKyBiL3Byb2plY3RzL1JFQURNRQpAQCAtNjgsMTYgKzY4LDE2IEBACiAgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIHdpdGggVkM2IHRoZW4geW91IHdpbGwgYWxzbyBuZWVkIHRoZSBGZWJydWFyeSAyMDAzCiAgICBFZGl0aW9uIG9mIHRoZSBXaW5kb3dzIFBsYXRmb3JtIFNESyB3aGljaCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgogCi0gICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0xMjI2MQorICAgIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTEyMjYxCiAKICAgIElmIHlvdSByZXF1aXJlIHN1cHBvcnQgZm9yIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyB2aWEgV2luZG93cyBJRE4KICAgIHRoZW4geW91IHdpbGwgbmVlZCBlaXRoZXI6CiAKICAgICAqIE1pY3Jvc29mdCBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSAoSUROKSBNaXRpZ2F0aW9uIEFQSXM6Ci0gICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTczNAorICAgICAgaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9NzM0CiAKICAgICAqIE1pY3Jvc29mdCBXaW5kb3dzIFNESyBVcGRhdGUgZm9yIFdpbmRvd3MgVmlzdGE6Ci0gICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTIzNzE5CisgICAgICBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0yMzcxOQogCiAgICAgKiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGFib3ZlCiAKQEAgLTg4LDYgKzg4LDQ2IEBACiAgICB3ZWxsIGFzIGEgY29uZmlndXJhdGlvbiB0aGF0IGluY2x1ZGVzIGJvdGgsIGl0IGlzIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgdGhlCiAgICBhbGwtaW4tb25lIGNvbmZpZ3VyYXRpb24uCiAKK1J1bm5pbmcgRExMIGJhc2VkIGNvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICBJZiB5b3UgYXJlIGEgZGV2ZWxvcGVyIGFuZCBwbGFuIHRvIHJ1biB0aGUgY3VybCB0b29sIGZyb20gVmlzdWFsIFN0dWRpbyAoZWcKKyAgIHlvdSBhcmUgZGVidWdnaW5nKSB3aXRoIGFueSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgKHN1Y2ggYXMgT3BlblNTTCwgd29sZlNTTAorICAgb3IgTGliU1NIMikgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB0aGUgc2VhcmNoIHBhdGggb2YgdGhlc2UgRExMcyB0byB0aGUKKyAgIGNvbmZpZ3VyYXRpb24ncyBQQVRIIGVudmlyb25tZW50LiBUbyBkbyB0aGF0OgorCisgICAgKiBPcGVuIHRoZSAnY3VybC1hbGwuc2xuJyBvciAnY3VybC5zbG4nIHNvbHV0aW9ucworCisgICAgKiBSaWdodC1jbGljayBvbiB0aGUgJ2N1cmwnIHByb2plY3QgYW5kIHNlbGVjdCBQcm9wZXJ0aWVzCisKKyAgICAqIE5hdmlnYXRlIHRvICdDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgPiBEZWJ1Z2dpbmcgPiBFbnZpcm9ubWVudCcKKworICAgICogQWRkIFBBVEg9J1BhdGggdG8gRExMJztDOlxXaW5kb3dzXHN5c3RlbTMyO0M6XFdpbmRvd3M7CisgICAgICAgICAgICAgICBDOlxXaW5kb3dzXFN5c3RlbTMyXFdiZW0KKworICAgLi4uIHdoZXJlICdQYXRoIHRvIERMTGAgaXMgdGhlIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWMgcGF0aC4gRm9yIGV4YW1wbGUgdGhlCisgICBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgaW4gVmlzdWFsIFN0dWRpbyAyMDEwIG1pZ2h0IGJlOgorICAgCisgICBETEwgRGVidWcgLSBETEwgT3BlblNTTCAoV2luMzIpOgorICAgUEFUSD0uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnO0M6XFdpbmRvd3Ncc3lzdGVtMzI7CisgICAgICAgIEM6XFdpbmRvd3M7QzpcV2luZG93c1xTeXN0ZW0zMlxXYmVtCisKKyAgIERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMICh4NjQpOgorICAgUEFUSD0uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIERlYnVnO0M6XFdpbmRvd3Ncc3lzdGVtMzI7CisgICAgICAgIEM6XFdpbmRvd3M7QzpcV2luZG93c1xTeXN0ZW0zMlxXYmVtCisKKyAgIERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMIChXaW4zMik6CisgICBQQVRIPS4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMFxETEwgRGVidWc7QzpcV2luZG93c1xzeXN0ZW0zMjsKKyAgICAgICAgQzpcV2luZG93cztDOlxXaW5kb3dzXFN5c3RlbTMyXFdiZW0KKworICAgRExMIERlYnVnIC0gRExMIHdvbGZTU0wgKHg2NCk6CisgICBQQVRIPS4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7QzpcV2luZG93c1xzeXN0ZW0zMjsKKyAgICAgICAgQzpcV2luZG93cztDOlxXaW5kb3dzXFN5c3RlbTMyXFdiZW0KKworICAgSWYgeW91IGFyZSB1c2luZyBhIGNvbmZpZ3VyYXRpb24gdGhhdCB1c2VzIG11bHRpcGxlIHRoaXJkLXBhcnR5IGxpYnJhcnkgRExMcworICAgKHN1Y2ggYXMgRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMikgdGhlbiAnUGF0aCB0byBETEwnIHdpbGwgbmVlZAorICAgdG8gY29udGFpbiB0aGUgcGF0aCB0byBib3RoIG9mIHRoZXNlLgorCiBOb3RlcwogPT09PT0KIApAQCAtMTEwLDYgKzE1MCwxNiBAQAogICAgc3RvcmVkIGluIHRoZSBnaXQgcmVwb3NpdG90eSkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHJhdGhlciB0aGFuIHRoZQogICAgZ2VuZXJhdGVkIHByb2plY3QgZmlsZXMgdGhhdCBWaXN1YWwgU3R1ZGlvIHVzZXMuCiAKK0xlZ2FjeSBXaW5kb3dzIGFuZCBTU0wKKz09PT09PT09PT09PT09PT09PT09PT0KKworICAgU29tZSBvZiB0aGUgcHJvamVjdCBjb25maWd1cmF0aW9ucyBhbGxvdyB0aGUgdXNlIG9mIFdpblNTTCAoc3BlY2lmaWNhbGx5CisgICBTQ2hhbm5lbCBmcm9tIFdpbmRvd3MgU1NQSSksIHRoZSBuYXRpdmUgU1NMIGxpYnJhcnkgaW4gV2luZG93cy4gSG93ZXZlciwKKyAgIFdpblNTTCBpbiBXaW5kb3dzIDw9IFhQIGlzIHVuYWJsZSB0byBjb25uZWN0IHRvIHNlcnZlcnMgdGhhdCBubyBsb25nZXIKKyAgIHN1cHBvcnQgdGhlIGxlZ2FjeSBoYW5kc2hha2VzIGFuZCBhbGdvcml0aG1zIHVzZWQgYnkgdGhvc2UgdmVyc2lvbnMuIElmCisgICB5b3Ugd2lsbCBiZSB1c2luZyBjdXJsIGluIG9uZSBvZiB0aG9zZSBlYXJsaWVyIHZlcnNpb25zIG9mIFdpbmRvd3MgeW91CisgICBzaG91bGQgY2hvb3NlIGFub3RoZXIgU1NMIGJhY2tlbmQgc3VjaCBhcyBPcGVuU1NMLgorCiBUT0RPCiA9PT09CiAKQEAgLTExOCw4ICsxNjgsOCBAQAogCiAgICAqIFN1cHBvcnQgemxpYgogICAgKiBVc2Ugb2Ygc3RhdGljIHJ1bnRpbWUgbGlicmFyaWVzCi0gICAqIEdlbmVyYXRlICoudmN4cHJvai5maWx0ZXJzIGZpbGVzIGZvciBWQzEwLCBWQzExIGFuZCBWQzEyCiAgICAqIEFkZCB0aGUgVGVzdCBTdWl0ZSBjb21wb25lbnRzCiAgICAqIFN1cHBvcnQgZm9yIG90aGVyIGRldmVsb3BtZW50IElERXMKKyAgICogQWRkIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGlyZC1wYXJ0eSBETExzCiAKICAgIEFueSBhZGRpdGlvbmFsIGhlbHAgd291bGQgYmUgYXBwcmVjaWF0ZWQgOy0pClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmY4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzLy5naXRpZ25vcmUKQEAgLTAsMCArMSw2IEBACitWQyovc3JjLypjdXJsLnZjcHJvai5kaXN0CitWQyovbGliLypjdXJsLnZjcHJvai5kaXN0CitWQyovc3JjLypjdXJsLnZjeHByb2ouZGlzdAorVkMqL2xpYi8qY3VybC52Y3hwcm9qLmRpc3QKK1ZDNi9saWIvbGliY3VybC5kc3AuZGlzdAorVkM2L3NyYy9jdXJsLmRzcC5kaXN0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2N1cmwtYWxsLnNsbgppbmRleCA0NTAxMjcyLi43YmQxMzFjIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvY3VybC1hbGwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9jdXJsLWFsbC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMAogIyBWaXN1YWwgU3R1ZGlvIDIwMTAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgInNyY1xjdXJsLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiAJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSA9IHtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE3LDYgKzE3LDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjcsNiArMjksOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC00MSw2ICs0NSw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTUsNiArNjEsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03NSw2ICs4MywxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTUsNiArMTA3LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTIzLDYgKzEzOSwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTUxLDYgKzE3MSwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKQEAgLTE3MSw2ICsxOTUsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTE5MSw2ICsyMTksMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0yMTksNiArMjUxLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0yNDcsNiArMjgzLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi8uZ2l0aWdub3JlCmluZGV4IGQyZDdiN2YuLjYwMjA4ZDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliLy5naXRpZ25vcmUKQEAgLTEsNiArMSw2IEBACi0vKi52Y3hwcm9qCi0vKi5maWx0ZXJzCi0vKi51c2VyCiAvKi5uY2IKKy8qLm9wZW5zZGYKIC8qLnNkZgogLyouc3VvCisvKi51c2VyCisvKi52Y3hwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnNsbgppbmRleCBhZmE1NDdlLi4xNTQ2MWVmIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4KQEAgLTEyLDYgKzEyLDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjIsNiArMjQsOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0zNiw2ICs0MCw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTAsNiArNTYsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03MCw2ICs3OCwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTAsNiArMTAyLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTE4LDYgKzEzNCwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTQ2LDYgKzE2NiwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnRtcGwKaW5kZXggN2ZiZGE4My4uYzgzYWE2NiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzA0LDIxICszMzYsNDEgQEAKICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CkBAIC00MjQsMjEgKzQ3Niw0MSBAQAogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01MDUsMTUgKzU3NywyNyBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01NzcsMzggKzY2MSw3MCBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CkBAIC03MDYsNyArODIyLDkgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KQEAgLTcxNiw3ICs4MzQsOSBAQAogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CkBAIC03NDYsNyArODY2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtNzY0LDYgKzg4NCw0MCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTc4MCw3ICs5MzQsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC03OTcsNiArOTUxLDM5IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04MTQsNyArMTAwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODI5LDYgKzEwMTYsNDAgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NDYsNyArMTA2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODYwLDYgKzEwODEsMzkgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgpAQCAtODY4LDcgKzExMjIsMjcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg5MSw3ICsxMTY1LDMwIEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTEyLDcgKzEyMDksMjcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05MzUsNyArMTI1MiwzMCBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05NjIsNyArMTMwMiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTk5Niw3ICsxMzM2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTAzMCw3ICsxMzcwLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMDYyLDcgKzE0MDIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEwOTIsNyArMTQzMiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExMjYsNyArMTQ2Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExNjAsNyArMTUwMCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExOTMsNyArMTUzMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyMjcsNyArMTU2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTI1OSw3ICsxNTk5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMjkxLDcgKzE2MzEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMjIsNyArMTY2Miw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM1Miw3ICsxNjkyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTM4Niw3ICsxNzI2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQyMCw3ICsxNzYwLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDUyLDcgKzE3OTIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0NzQsNyArMTgxNCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0OTcsNyArMTgzNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1MTcsNyArMTg1Nyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1NDAsNyArMTg4MCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1NjAsNyArMTkwMCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1ODAsNyArMTkyMCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MDMsNyArMTk0Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MjYsNyArMTk2Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2NDYsNyArMTk4Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2NjksNyArMjAwOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2ODksNyArMjAyOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MTIsNyArMjA1Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MzMsNyArMjA3Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTc1Niw3ICsyMDk2LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzc2LDcgKzIxMTYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3OTksNyArMjEzOSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTgxOSw3ICsyMTU5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODM5LDcgKzIxNzksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NjIsNyArMjIwMiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg4NSw3ICsyMjI1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTA1LDcgKzIyNDUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5MjgsNyArMjI2OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk0OCw3ICsyMjg4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTcxLDcgKzIzMTEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5ODQsMTAgKzIzMjQsMTIgQEAKICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogQ1VSTF9MSUJfQ19GSUxFUworQ1VSTF9MSUJfVkFVVEhfQ19GSUxFUwogQ1VSTF9MSUJfVlRMU19DX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogQ1VSTF9MSUJfSF9GSUxFUworQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUwogQ1VSTF9MSUJfVlRMU19IX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy8uZ2l0aWdub3JlCmluZGV4IGQyZDdiN2YuLjYwMjA4ZDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjLy5naXRpZ25vcmUKQEAgLTEsNiArMSw2IEBACi0vKi52Y3hwcm9qCi0vKi5maWx0ZXJzCi0vKi51c2VyCiAvKi5uY2IKKy8qLm9wZW5zZGYKIC8qLnNkZgogLyouc3VvCisvKi51c2VyCisvKi52Y3hwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnNsbgpzaW1pbGFyaXR5IGluZGV4IDg2JQpjb3B5IGZyb20gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbgpjb3B5IHRvIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC5zbG4KaW5kZXggMTNmYzFkMy4uMTMxZjI3YiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDEwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwudG1wbAppbmRleCBmZTNhOTM0Li42MmU3MTAwIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwudG1wbApAQCAtMSw2ICsxLDE0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtNDEsNiArNDksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTEzLDYgKzEyOSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTY5LDYgKzE5MywxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xOTYsNyArMjI4LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+ezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPmN1cmxzcmM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFJvb3ROYW1lc3BhY2U+Y3VybDwvUm9vdE5hbWVzcGFjZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KQEAgLTMwNCwyMSArMzM2LDQxIEBACiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDI0LDIxICs0NzYsNDEgQEAKICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01MDUsMTUgKzU3NywyNyBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01NzcsNDIgKzY2MSw3OCBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KQEAgLTczMyw1NCArODUzLDYyIEBACiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KQEAgLTc5Niw3ICs5MjQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTgxMSw2ICs5MzksMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtODI2LDcgKzk4NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODQxLDYgKzEwMDAsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgpAQCAtODU1LDcgKzEwNDYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg3MCw2ICsxMDYxLDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC04ODUsNyArMTEwNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTAwLDYgKzExMjIsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05MTMsNyArMTE2Nyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTkzMSw2ICsxMTg1LDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtOTQ1LDcgKzEyMzAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05NjMsNiArMTI0OCwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTk3Niw3ICsxMjkzLDM4IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDA4LDcgKzEzNTYsMzkgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwMzksNyArMTQxOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwNzEsNyArMTQ1MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExMDIsNyArMTQ4Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExMzMsNyArMTUxMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExNjUsNyArMTU0NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExOTcsNyArMTU3Nyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyMjksNyArMTYwOSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTI1OSw3ICsxNjM5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMjg4LDcgKzE2NjgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMTcsNyArMTY5Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM0Nyw3ICsxNzI3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzc3LDcgKzE3NTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0MDUsNyArMTc4NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0MzcsNyArMTgxNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0NjksNyArMTg0OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQ5OSw3ICsxODc5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTI3LDcgKzE5MDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTU5LDcgKzE5MzksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTkxLDcgKzE5NzEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2MjEsNyArMjAwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTY0OSw3ICsyMDI5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY4MSw3ICsyMDYxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTcxMyw3ICsyMDkzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzQzLDcgKzIxMjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3NzEsNyArMjE1MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE4MDMsNyArMjE4Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE4MzUsNyArMjIxNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg2NSw3ICsyMjQ1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODkzLDcgKzIyNzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xOTI1LDcgKzIzMDUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xOTU3LDcgKzIzMzcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5ODcsNyArMjM2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjAxNSw3ICsyMzk1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjA0Niw3ICsyNDI2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjA3OCw3ICsyNDU4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjExMCw3ICsyNDkwLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjE0Miw3ICsyNTIyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMTcxLDcgKzI1NTEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyMDEsNyArMjU4MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjIzMSw3ICsyNjExLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzNDFkCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2N1cmwtYWxsLnNsbgppbmRleCBjOTA4NWE5Li5iZWMwYWQ4IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvY3VybC1hbGwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9jdXJsLWFsbC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAogIyBWaXN1YWwgU3R1ZGlvIDIwMTIKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgInNyY1xjdXJsLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiAJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSA9IHtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE3LDYgKzE3LDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjcsNiArMjksOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC00MSw2ICs0NSw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTUsNiArNjEsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03NSw2ICs4MywxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTUsNiArMTA3LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTIzLDYgKzEzOSwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTUxLDYgKzE3MSwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKQEAgLTE3MSw2ICsxOTUsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTE5MSw2ICsyMTksMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0yMTksNiArMjUxLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0yNDcsNiArMjgzLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi8uZ2l0aWdub3JlCmluZGV4IGQyZDdiN2YuLjYwMjA4ZDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliLy5naXRpZ25vcmUKQEAgLTEsNiArMSw2IEBACi0vKi52Y3hwcm9qCi0vKi5maWx0ZXJzCi0vKi51c2VyCiAvKi5uY2IKKy8qLm9wZW5zZGYKIC8qLnNkZgogLyouc3VvCisvKi51c2VyCisvKi52Y3hwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliL2xpYmN1cmwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbgppbmRleCA2OTQ0YmI5Li43ODBkYzkxIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliL2xpYmN1cmwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC5zbG4KQEAgLTEyLDYgKzEyLDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjIsNiArMjQsOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0zNiw2ICs0MCw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTAsNiArNTYsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03MCw2ICs3OCwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTAsNiArMTAyLDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTE4LDYgKzEzNCwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTQ2LDYgKzE2NiwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnRtcGwKaW5kZXggODMzYzM5Zi4uOTllYTk4MSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzI1LDI0ICszNTcsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDY5LDI0ICs1MjUsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTU1MywxNSArNjMzLDI3IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTYyNSwzOCArNzE3LDcwIEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KQEAgLTc1NCw3ICs4NzgsOSBAQAogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgpAQCAtNzY0LDcgKzg5MCw5IEBACiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KQEAgLTc5NCw3ICs5MjIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04MTIsNiArOTQwLDQwIEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMVxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODI4LDcgKzk5MCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg0NSw2ICsxMDA3LDM5IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzExXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NjIsNyArMTA1Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODc3LDYgKzEwNzIsNDAgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTFcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04OTQsNyArMTEyMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTA4LDYgKzExMzcsMzkgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMVxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgpAQCAtOTE2LDcgKzExNzgsMjcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTkzOSw3ICsxMjIxLDMwIEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTYwLDcgKzEyNjUsMjcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05ODMsNyArMTMwOCwzMCBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMDEwLDcgKzEzNTgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDQ0LDcgKzEzOTIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDc4LDcgKzE0MjYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTExMTAsNyArMTQ1OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTE0MCw3ICsxNDg4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE3NCw3ICsxNTIyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTIwOCw3ICsxNTU2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI0MSw3ICsxNTg5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI3NSw3ICsxNjIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzA3LDcgKzE2NTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMzksNyArMTY4Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM3MCw3ICsxNzE4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDAwLDcgKzE3NDgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDM0LDcgKzE3ODIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDY4LDcgKzE4MTYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1MDAsNyArMTg0OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTUyMiw3ICsxODcwLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU0NSw3ICsxODkzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU2NSw3ICsxOTEzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU4OCw3ICsxOTM2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYwOCw3ICsxOTU2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYyOCw3ICsxOTc2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY1MSw3ICsxOTk5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY3NCw3ICsyMDIyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY5NCw3ICsyMDQyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTcxNyw3ICsyMDY1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTczNyw3ICsyMDg1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc2MCw3ICsyMTA4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc4MSw3ICsyMTI5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODA0LDcgKzIxNTIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4MjQsNyArMjE3Miw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg0Nyw3ICsyMTk1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODY3LDcgKzIyMTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4ODcsNyArMjIzNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTkxMCw3ICsyMjU4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTMzLDcgKzIyODEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5NTMsNyArMjMwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk3Niw3ICsyMzI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTk2LDcgKzIzNDQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwMTksNyArMjM2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjAzMiwxMCArMjM4MCwxMiBAQAogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiBDVVJMX0xJQl9DX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0NfRklMRVMKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiBDVVJMX0xJQl9IX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0hfRklMRVMKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzNDFkCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjLy5naXRpZ25vcmUKaW5kZXggZDJkN2I3Zi4uNjAyMDhkNyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvLmdpdGlnbm9yZQpAQCAtMSw2ICsxLDYgQEAKLS8qLnZjeHByb2oKLS8qLmZpbHRlcnMKLS8qLnVzZXIKIC8qLm5jYgorLyoub3BlbnNkZgogLyouc2RmCiAvKi5zdW8KKy8qLnVzZXIKKy8qLnZjeHByb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwuc2xuCnNpbWlsYXJpdHkgaW5kZXggODYlCmNvcHkgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMuc2xuCmNvcHkgdG8gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnNsbgppbmRleCA4OGI0ZjdlLi5lMTIyNTNlIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAogIyBWaXN1YWwgU3R1ZGlvIDIwMTIKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAiY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogRW5kUHJvamVjdAogR2xvYmFsCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KQEAgLTEyLDYgKzEyLDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjIsNiArMjQsOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0zNiw2ICs0MCw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTAsNiArNTYsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03MCw2ICs3OCwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTAsNiArMTAyLDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTE4LDYgKzEzNCwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTQ2LDYgKzE2NiwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnRtcGwKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC50bXBsCmluZGV4IDAxNzU3OGMuLmVkMDMxOGQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC50bXBsCkBAIC0xLDYgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC00MSw2ICs0OSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xMTMsNiArMTI5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xNjksNiArMTkzLDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE5Niw3ICsyMjgsNyBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Y3VybHNyYzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8Um9vdE5hbWVzcGFjZT5jdXJsPC9Sb290TmFtZXNwYWNlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgpAQCAtMzI1LDI0ICszNTcsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDY5LDI0ICs1MjUsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTUzLDE1ICs2MzMsMjcgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNjI1LDQyICs3MTcsNzggQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CkBAIC03ODEsNTQgKzkwOSw2MiBAQAogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CkBAIC04NDQsNyArOTgwLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NTksNiArOTk1LDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTg3NCw3ICsxMDQxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04ODksNiArMTA1NiwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05MDMsNyArMTEwMiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTE4LDYgKzExMTcsMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTFcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTkzMyw3ICsxMTYzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05NDgsNiArMTE3OCwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMVxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTk2MSw3ICsxMjIzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTc5LDYgKzEyNDEsMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMVxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC05OTMsNyArMTI4Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwMTEsNiArMTMwNCwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzExXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTEwMjQsNyArMTM0OSwzOCBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA1Niw3ICsxNDEyLDM5IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDg3LDcgKzE0NzUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTE5LDcgKzE1MDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTUwLDcgKzE1MzgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTgxLDcgKzE1NjksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjEzLDcgKzE2MDEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjQ1LDcgKzE2MzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjc3LDcgKzE2NjUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMDcsNyArMTY5NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTMzNiw3ICsxNzI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzY1LDcgKzE3NTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzOTUsNyArMTc4Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQyNSw3ICsxODEzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDUzLDcgKzE4NDEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDg1LDcgKzE4NzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTE3LDcgKzE5MDUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1NDcsNyArMTkzNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU3NSw3ICsxOTYzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYwNyw3ICsxOTk1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYzOSw3ICsyMDI3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNjY5LDcgKzIwNTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2OTcsNyArMjA4NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MjksNyArMjExNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3NjEsNyArMjE0OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTc5MSw3ICsyMTc5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODE5LDcgKzIyMDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODUxLDcgKzIyMzksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODgzLDcgKzIyNzEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5MTMsNyArMjMwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk0MSw3ICsyMzI5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTk3Myw3ICsyMzYxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjAwNSw3ICsyMzkzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMDM1LDcgKzI0MjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwNjMsNyArMjQ1MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwOTQsNyArMjQ4Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxMjYsNyArMjUxNCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxNTgsNyArMjU0Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxOTAsNyArMjU3OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjIxOSw3ICsyNjA3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMjQ5LDcgKzI2MzcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyNzksNyArMjY2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2N1cmwtYWxsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9jdXJsLWFsbC5zbG4KaW5kZXggNTcwNjRjNC4uMzhiMzNlNiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvY3VybC1hbGwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDEzCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAic3JjXGN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0xNyw2ICsxNyw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTI3LDYgKzI5LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNDEsNiArNDUsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTU1LDYgKzYxLDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzUsNiArODMsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTk1LDYgKzEwNywxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTEyMyw2ICsxMzksMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE1MSw2ICsxNzEsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CkBAIC0xNzEsNiArMTk1LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC0xOTEsNiArMjE5LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMjE5LDYgKzI1MSwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMjQ3LDYgKzI4MywxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvLmdpdGlnbm9yZQppbmRleCBkMmQ3YjdmLi42MDIwOGQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNiBAQAotLyoudmN4cHJvagotLyouZmlsdGVycwotLyoudXNlcgogLyoubmNiCisvKi5vcGVuc2RmCiAvKi5zZGYKIC8qLnN1bworLyoudXNlcgorLyoudmN4cHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC5zbG4KaW5kZXggNGMzZTYzNC4uODYwYTA2MCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC50bXBsCmluZGV4IDY1MDk4ZWYuLmQzYWFmNDUgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC50bXBsCkBAIC0xLDYgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTIuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtNDEsNiArNDksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTEzLDYgKzEyOSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTY5LDYgKzE5MywxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0zMjUsMjQgKzM1Nyw0OCBAQAogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CkBAIC00NjksMjQgKzUyNSw0OCBAQAogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTUzLDE1ICs2MzMsMjcgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNjI1LDM4ICs3MTcsNzAgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgpAQCAtNzU0LDcgKzg3OCw5IEBACiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CkBAIC03NjQsNyArODkwLDkgQEAKICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgpAQCAtNzk0LDcgKzkyMiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTgxMiw2ICs5NDAsNDAgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEyXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04MjgsNyArOTkwLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtODQ1LDYgKzEwMDcsMzkgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTJcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg2Miw3ICsxMDU3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NzcsNiArMTA3Miw0MCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMlxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg5NCw3ICsxMTIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05MDgsNiArMTEzNywzOSBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEyXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CkBAIC05MTYsNyArMTE3OCwyNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTM5LDcgKzEyMjEsMzAgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05NjAsNyArMTI2NSwyNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTk4Myw3ICsxMzA4LDMwIEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEwMTAsNyArMTM1OCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwNDQsNyArMTM5Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwNzgsNyArMTQyNiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTExMCw3ICsxNDU4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMTQwLDcgKzE0ODgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTc0LDcgKzE1MjIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjA4LDcgKzE1NTYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjQxLDcgKzE1ODksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjc1LDcgKzE2MjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMDcsNyArMTY1NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTMzOSw3ICsxNjg3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzcwLDcgKzE3MTgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0MDAsNyArMTc0OCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0MzQsNyArMTc4Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0NjgsNyArMTgxNiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTUwMCw3ICsxODQ4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTIyLDcgKzE4NzAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTQ1LDcgKzE4OTMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTY1LDcgKzE5MTMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTg4LDcgKzE5MzYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjA4LDcgKzE5NTYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjI4LDcgKzE5NzYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjUxLDcgKzE5OTksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjc0LDcgKzIwMjIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjk0LDcgKzIwNDIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzE3LDcgKzIwNjUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzM3LDcgKzIwODUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzYwLDcgKzIxMDgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzgxLDcgKzIxMjksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4MDQsNyArMjE1Miw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTgyNCw3ICsyMTcyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODQ3LDcgKzIxOTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NjcsNyArMjIxNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg4Nyw3ICsyMjM1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTEwLDcgKzIyNTgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5MzMsNyArMjI4MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk1Myw3ICsyMzAxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTc2LDcgKzIzMjQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5OTYsNyArMjM0NCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjAxOSw3ICsyMzY3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMDMyLDEwICsyMzgwLDEyIEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KIENVUkxfTElCX0NfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKIENVUkxfTElCX1ZUTFNfQ19GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KIENVUkxfTElCX0hfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0hfRklMRVMKIENVUkxfTElCX1ZUTFNfSF9GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjM0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aGg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvLmdpdGlnbm9yZQppbmRleCBkMmQ3YjdmLi42MDIwOGQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNiBAQAotLyoudmN4cHJvagotLyouZmlsdGVycwotLyoudXNlcgogLyoubmNiCisvKi5vcGVuc2RmCiAvKi5zZGYKIC8qLnN1bworLyoudXNlcgorLyoudmN4cHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgpyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnNsbgppbmRleCA4OGI0ZjdlLi43YjUyNDRjIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMTIKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCisjIFZpc3VhbCBTdHVkaW8gMjAxMworUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybHNyYy50bXBsCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudG1wbAppbmRleCA4OGFjZTQ5Li43ODk0YmVjIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudG1wbApAQCAtMSw2ICsxLDE0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjEyLjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTk2LDcgKzIyOCw3IEBACiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5jdXJsc3JjPC9Sb290TmFtZXNwYWNlPgorICAgIDxSb290TmFtZXNwYWNlPmN1cmw8L1Jvb3ROYW1lc3BhY2U+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CkBAIC0zMjUsMjQgKzM1Nyw0OCBAQAogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CkBAIC00NjksMjQgKzUyNSw0OCBAQAogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01NTMsMTUgKzYzMywyNyBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC02MjUsNDIgKzcxNyw3OCBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KQEAgLTc4MSw1NCArOTA5LDYyIEBACiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KQEAgLTg0NCw3ICs5ODAsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg1OSw2ICs5OTUsMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtODc0LDcgKzEwNDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg4OSw2ICsxMDU2LDM4IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTkwMyw3ICsxMTAyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05MTgsNiArMTExNywzNyBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMlxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtOTMzLDcgKzExNjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTk0OCw2ICsxMTc4LDM4IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEyXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgpAQCAtOTYxLDcgKzEyMjMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05NzksNiArMTI0MSwzNyBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEyXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTk5Myw3ICsxMjg2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTAxMSw2ICsxMzA0LDM4IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTJcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgpAQCAtMTAyNCw3ICsxMzQ5LDM4IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDU2LDcgKzE0MTIsMzkgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwODcsNyArMTQ3NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExMTksNyArMTUwNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExNTAsNyArMTUzOCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExODEsNyArMTU2OSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyMTMsNyArMTYwMSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyNDUsNyArMTYzMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyNzcsNyArMTY2NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTMwNyw3ICsxNjk1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzM2LDcgKzE3MjQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzNjUsNyArMTc1Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM5NSw3ICsxNzgzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDI1LDcgKzE4MTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0NTMsNyArMTg0MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0ODUsNyArMTg3Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1MTcsNyArMTkwNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU0Nyw3ICsxOTM1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTc1LDcgKzE5NjMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjA3LDcgKzE5OTUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjM5LDcgKzIwMjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2NjksNyArMjA1Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTY5Nyw3ICsyMDg1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTcyOSw3ICsyMTE3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc2MSw3ICsyMTQ5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzkxLDcgKzIxNzksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4MTksNyArMjIwNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE4NTEsNyArMjIzOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE4ODMsNyArMjI3MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTkxMyw3ICsyMzAxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTQxLDcgKzIzMjksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xOTczLDcgKzIzNjEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMDA1LDcgKzIzOTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwMzUsNyArMjQyMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjA2Myw3ICsyNDUxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjA5NCw3ICsyNDgyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjEyNiw3ICsyNTE0LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjE1OCw3ICsyNTQ2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjE5MCw3ICsyNTc4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMjE5LDcgKzI2MDcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyNDksNyArMjYzNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjI3OSw3ICsyNjY3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzNDFkCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyNjk5Yy4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmxzcmMuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwCi0jIFZpc3VhbCBTdHVkaW8gMjAxMwotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKLUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKLQkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgotCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKLQkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCi0JCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKLQkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5CdWlsZC4wID0gRExMIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzE0Ly5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJkNGVhCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw1IEBACisvKi5vcGVuZGIKKy8qLm9wZW5zZGYKKy8qLnNkZgorLyoudmMuZGIKKy8udnMKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9jdXJsLWFsbC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvY3VybC1hbGwuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ODIwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvY3VybC1hbGwuc2xuCkBAIC0wLDAgKzEsMjk4IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMTUKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImxpYmN1cmwiLCAibGliXGxpYmN1cmwudmN4cHJvaiIsICJ7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKKwkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCisJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAorCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKKwkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKKwkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCisJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IERMTCBEZWJ1Z3x4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2V8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQnVpbGQuMCA9IExJQiBEZWJ1Z3x4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2V8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5CdWlsZC4wID0gRExMIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5CdWlsZC4wID0gTElCIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjMTcxMAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDYgQEAKKy8qLm9wZW5zZGYKKy8qLnNkZgorLyoudXNlcgorLyoudmMuZGIKKy8qLnZjeHByb2oKKy8udnMKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOGFmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwuc2xuCkBAIC0wLDAgKzEsMTgxIEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMTUKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliY3VybCIsICJsaWJjdXJsLnZjeHByb2oiLCAie0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCisJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgorCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCisJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWd8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWd8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA2MiUKY29weSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsCmNvcHkgdG8gcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnRtcGwKaW5kZXggZmUzYTkzNC4uYWRhNDhlOSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTk1LDI4OSArMjI3LDM4NSBAQAogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5jdXJsc3JjPC9Sb290TmFtZXNwYWNlPgorICAgIDxQcm9qZWN0R3VpZD57REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bGliY3VybDwvUm9vdE5hbWVzcGFjZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNDkwLDY2ICs2MTgsNzggQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTYyLDcyMSArNzAyLDkxNiBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPgogICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgogICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPgogICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+CiAgICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgpAQCAtMTI4NCwyOCArMTYxOSwzMSBAQAogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPgogICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CkBAIC0xMzEzLDI5ICsxNjUxLDMxIEBACiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KQEAgLTEzNDMsMjkgKzE2ODMsMzAgQEAKICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KQEAgLTEzNzMsODg5ICsxNzE0LDY4MiBAQAogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPgogICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPgogICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPgogICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDJkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPExpYj4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDJkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYnNzaDIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPExpYj4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMO1VTRV9XSU4zMl9JRE47V0FOVF9JRE5fUFJPVE9UWVBFUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci1DVVJMX1NSQ19YX0NfRklMRVMKLUNVUkxfU1JDX0NfRklMRVMKK0NVUkxfTElCX0NfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKK0NVUkxfTElCX1ZUTFNfQ19GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLUNVUkxfU1JDX1hfSF9GSUxFUwotQ1VSTF9TUkNfSF9GSUxFUworQ1VSTF9MSUJfSF9GSUxFUworQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUworQ1VSTF9MSUJfVlRMU19IX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotQ1VSTF9TUkNfUkNfRklMRVMKK0NVUkxfTElCX1JDX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzE3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjLy5naXRpZ25vcmUKQEAgLTAsMCArMSw2IEBACisvKi5vcGVuc2RmCisvKi5zZGYKKy8qLnVzZXIKKy8qLnZjLmRiCisvKi52Y3hwcm9qCisvLnZzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnNsbgpzaW1pbGFyaXR5IGluZGV4IDg2JQpjb3B5IGZyb20gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgpjb3B5IHRvIHByb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC5zbG4KaW5kZXggODhiNGY3ZS4uYjQwYzE4YiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlzdWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorIyBWaXN1YWwgU3R1ZGlvIDIwMTUKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiBFbmRQcm9qZWN0CiBHbG9iYWwKIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgpAQCAtMTIsNiArMTIsOCBAQAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKIAkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0yMiw2ICsyNCw4IEBACiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgogCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKIAkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTM2LDYgKzQwLDggQEAKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKIAkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKIAkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC01MCw2ICs1Niw4IEBACiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAogCUVuZEdsb2JhbFNlY3Rpb24KQEAgLTcwLDYgKzc4LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC05MCw2ICsxMDIsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0xMTgsNiArMTM0LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0xNDYsNiArMTY2LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDc3JQpjb3B5IGZyb20gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwKY29weSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudG1wbAppbmRleCBmZTNhOTM0Li40ZGExYjdmIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudG1wbApAQCAtMSw2ICsxLDE0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtNDEsNiArNDksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTEzLDYgKzEyOSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTY5LDYgKzE5MywxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xOTYsMjQ4ICsyMjgsMzQ0IEBACiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5jdXJsc3JjPC9Sb290TmFtZXNwYWNlPgorICAgIDxSb290TmFtZXNwYWNlPmN1cmw8L1Jvb3ROYW1lc3BhY2U+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KQEAgLTUwNSwxNSArNjMzLDI3IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTU3NywyMTAgKzcxNywyNTQgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgpAQCAtNzk2LDcgKzk4MCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODA2LDExICs5OTAsNDIgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTgyNiw3ICsxMDQxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04MzYsMTEgKzEwNTEsNDMgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTg1NSw3ICsxMTAyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NjUsMTEgKzExMTIsNDIgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzE0XExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC04ODUsNyArMTE2Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODk1LDExICsxMTczLDQzIEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxNFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTkxMyw3ICsxMjIzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTI0LDcgKzEyMzQsMzggQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxNFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTk0NSw3ICsxMjg2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTU2LDcgKzEyOTcsMzkgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxNFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTk3Niw3ICsxMzQ5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTg3LDcgKzEzNjAsMzggQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMDA4LDcgKzE0MTIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDE5LDcgKzE0MjMsMzkgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMDM5LDcgKzE0NzUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDUwLDcgKzE0ODYsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTA3MSw3ICsxNTA3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA4Miw3ICsxNTE4LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTExMDIsNyArMTUzOCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExMTMsNyArMTU0OSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMTMzLDcgKzE1NjksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTQ0LDcgKzE1ODAsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTE2NSw3ICsxNjAxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE3Niw3ICsxNjEyLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTExOTcsNyArMTYzMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyMDgsNyArMTY0NCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMjI5LDcgKzE2NjUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEyMzksNyArMTY3NSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xMjU5LDcgKzE2OTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEyNjksNyArMTcwNSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xMjg4LDcgKzE3MjQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEyOTgsNyArMTczNCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xMzE3LDcgKzE3NTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMjcsNyArMTc2Myw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xMzQ3LDcgKzE3ODMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzNTcsNyArMTc5Myw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xMzc3LDcgKzE4MTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzODcsNyArMTgyMyw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNDA1LDcgKzE4NDEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDE2LDcgKzE4NTIsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTQzNyw3ICsxODczLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQ0OCw3ICsxODg0LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE0NjksNyArMTkwNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQ3OSw3ICsxOTE1LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTE0OTksNyArMTkzNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTUwOSw3ICsxOTQ1LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTE1MjcsNyArMTk2Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1MzgsNyArMTk3NCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xNTU5LDcgKzE5OTUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTcwLDcgKzIwMDYsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTU5MSw3ICsyMDI3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNjAxLDcgKzIwMzcsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTE2MjEsNyArMjA1Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTYzMSw3ICsyMDY3LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNjQ5LDcgKzIwODUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjYwLDcgKzIwOTYsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTRcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xNjgxLDcgKzIxMTcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjkyLDcgKzIxMjgsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTRcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xNzEzLDcgKzIxNDksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3MjMsNyArMjE1OSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTRcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNzQzLDcgKzIxNzksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3NTMsNyArMjE4OSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTRcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNzcxLDcgKzIyMDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzgyLDcgKzIyMTgsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTgwMyw3ICsyMjM5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTgxNCw3ICsyMjUwLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE4MzUsNyArMjI3MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg0NSw3ICsyMjgxLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xODY1LDcgKzIzMDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NzUsNyArMjMxMSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTg5Myw3ICsyMzI5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTkwNCw3ICsyMzQwLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTkyNSw3ICsyMzYxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTkzNiw3ICsyMzcyLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTk1Nyw3ICsyMzkzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTY3LDcgKzI0MDMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTk4Nyw3ICsyNDIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTk3LDcgKzI0MzMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJzc2gyLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMjAxNSw3ICsyNDUxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjAyNiw3ICsyNDYyLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTIwNDYsNyArMjQ4Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwNTcsNyArMjQ5Myw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMjA3OCw3ICsyNTE0LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjA4OSw3ICsyNTI1LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTIxMTAsNyArMjU0Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxMjEsNyArMjU1Nyw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMjE0Miw3ICsyNTc4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMTUyLDcgKzI1ODgsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMjE3MSw3ICsyNjA3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMTgxLDcgKzI2MTcsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTIyMDEsNyArMjYzNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjIxMSw3ICsyNjQ3LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTIyMzEsNyArMjY2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjI0MSw3ICsyNjc3LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzNDFkCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9jdXJsLWFsbC5kc3cgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9jdXJsLWFsbC5kc3cKaW5kZXggMGQzNjhkNi4uYTcxOGU1OSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzYvY3VybC1hbGwuZHN3CisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L2N1cmwtYWxsLmRzdwpAQCAtMTUsNyArMTUsNyBAQAogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIA0KLVByb2plY3Q6ICJjdXJsc3JjIj0iLlxzcmNcY3VybHNyYy5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCitQcm9qZWN0OiAiY3VybCI9Ii5cc3JjXGN1cmwuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQogDQogUGFja2FnZT08NT4NCiB7e3sNCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzYvbGliL2xpYmN1cmwudG1wbAppbmRleCA3NGM4YzljLi5jNzZlYzc4IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLnRtcGwKQEAgLTYzLDggKzYzLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgpAQCAtOTMsOCArOTMsOCBAQAogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCkBAIC0xMjMsOCArMTIzLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCiBNVEw9bWlkbC5leGUKICMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCiAjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKQEAgLTE1Myw4ICsxNTMsOCBAQAogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRkQgL0VIc2MgL0daIC9jCiBNVEw9bWlkbC5leGUKICMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCiAjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKQEAgLTE4Myw4ICsxODMsOCBAQAogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCkBAIC0yMTIsOCArMjEyLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9GRCAvRUhzYyAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL3dpbjMyCkBAIC0yNDIsOCArMjQyLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL3dpbjMyCkBAIC0yNzIsOCArMjcyLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgpAQCAtMzAyLDggKzMwMiw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9GRCAvRUhzYyAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL3dpbjMyCkBAIC0zMzIsOCArMzMyLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL3dpbjMyCkBAIC0zNjAsOCArMzYwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCkBAIC0zODUsOCArMzg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0xcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKQEAgLTQxMCw4ICs0MTAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgpAQCAtNDM1LDggKzQzNSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9HWiAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgpAQCAtNDYwLDggKzQ2MCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL0daIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCkBAIC00ODUsOCArNDg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0xcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKQEAgLTUxMCw4ICs1MTAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgpAQCAtNTM1LDggKzUzNSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKQEAgLTU2MCw4ICs1NjAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKQEAgLTU4NSw4ICs1ODUsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKQEAgLTYxMCw4ICs2MTAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUElcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC02MzUsOCArNjM1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC02NjAsOCArNjYwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTFxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC02ODUsOCArNjg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC03MjksMTIgKzcyOSwxNCBAQAogCiAjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKIENVUkxfTElCX0NfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKIENVUkxfTElCX1ZUTFNfQ19GSUxFUwogIyBFbmQgR3JvdXAKICMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKIAogIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCiBDVVJMX0xJQl9IX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0hfRklMRVMKICMgRW5kIEdyb3VwCiAjIEJlZ2luIEdyb3VwICJSZXNvdXJjZSBGaWxlcyIKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsc3JjLmRzdyBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLmRzdwpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy5kc3cKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLmRzdwppbmRleCAyYWVjMDEwLi5hN2FkYmNlIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy5kc3cKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmwuZHN3CkBAIC0zLDcgKzMsNyBAQAogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIA0KLVByb2plY3Q6ICJjdXJsc3JjIj0iLlxjdXJsc3JjLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KK1Byb2plY3Q6ICJjdXJsIj0iLlxjdXJsLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KIA0KIFBhY2thZ2U9PDU+DQoge3t7DQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmwudG1wbAppbmRleCAxOGE1NDEzLi41YzA5MTEwIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLnRtcGwKQEAgLTEsNDYgKzEsNDYgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iY3VybHNyYyIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJjdXJsIiAtIFBhY2thZ2UgT3duZXI9PDQ+CiAjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCiAjICoqIERPIE5PVCBFRElUICoqCiAKICMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMwogCi1DRkc9Y3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZworQ0ZHPWN1cmwgLSBXaW4zMiBMSUIgRGVidWcKICFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKICFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgogIU1FU1NBR0UgCi0hTUVTU0FHRSBOTUFLRSAvZiAiY3VybHNyYy5tYWsiLgorIU1FU1NBR0UgTk1BS0UgL2YgImN1cmwubWFrIi4KICFNRVNTQUdFIAogIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKICFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6CiAhTUVTU0FHRSAKLSFNRVNTQUdFIE5NQUtFIC9mICJjdXJsc3JjLm1hayIgQ0ZHPSJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIgorIU1FU1NBR0UgTk1BS0UgL2YgImN1cmwubWFrIiBDRkc9ImN1cmwgLSBXaW4zMiBMSUIgRGVidWciCiAhTUVTU0FHRSAKICFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOgogIU1FU1NBR0UgCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCiAhTUVTU0FHRSAKIAogIyBCZWdpbiBQcm9qZWN0CkBAIC01MCw3ICs1MCw3IEBACiBDUFA9Y2wuZXhlCiBSU0M9cmMuZXhlCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWciCishSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIERlYnVnIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtNjMsOCArNjMsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWdcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1Z1xjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC04OCw4ICs4OCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC05OSw3ICs5OSw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtMTEzLDggKzExMyw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTEyNCw3ICsxMjQsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC0xMzgsOCArMTM4LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSVxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMTQ5LDcgKzE0OSw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtMTYzLDggKzE2Myw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0xNzQsNyArMTc0LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC0xODcsOCArMTg3LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2Vcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9DT05TT0xFIiAvRCAiTkRFQlVHIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0NPTlNPTEUiIC9EICJOREVCVUciIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMTk4LDcgKzE5OCw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZVxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2VcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTIxMiw4ICsyMTIsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTIyMyw3ICsyMjMsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTFxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTIzNyw4ICsyMzcsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMjQ4LDcgKzI0OCw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC0yNjIsOCArMjYyLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTI3Myw3ICsyNzMsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC0yODcsOCArMjg3LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0yOTgsNyArMjk4LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWciCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTMxMSw4ICszMTEsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWdcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMzIyLDcgKzMyMiw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWdcY3VybC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgT3BlblNTTCIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTMzNiw4ICszMzYsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0zNDcsNyArMzQ3LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0xcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTFxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTM2MSw4ICszNjEsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTM3Miw3ICszNzIsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWciIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWciIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTM4Niw4ICszODYsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTM5Nyw3ICszOTcsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSVxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkiIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtNDExLDggKzQxMSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTQyMiw3ICs0MjIsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIG5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE4iIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiBub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBMSUIgT3BlblNTTCIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTQzNiw4ICs0MzYsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC00NDcsNyArNDQ3LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiBjcnlwdDMyLmxpYiBnZGkzMi5saWIgdXNlcjMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0xcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIGNyeXB0MzIubGliIGdkaTMyLmxpYiB1c2VyMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTFxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTQ2MSw4ICs0NjEsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTQ3Miw3ICs0NzIsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIGNyeXB0MzIubGliIGdkaTMyLmxpYiB1c2VyMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgY3J5cHQzMi5saWIgZ2RpMzIubGliIHVzZXIzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWciIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWciIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTQ4NSw4ICs0ODUsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZVxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0NPTlNPTEUiIC9EICJOREVCVUciIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0NPTlNPTEUiIC9EICJOREVCVUciIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTQ5Niw3ICs0OTYsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2VcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTUxMCw4ICs1MTAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtNTIxLDcgKzUyMSw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0xcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC01MzUsOCArNTM1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtNTQ2LDcgKzU0Niw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UiIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTU2MCw4ICs1NjAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUElcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC01NzEsNyArNTcxLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUElcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC01ODUsOCArNTg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTU5Niw3ICs1OTYsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIG5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE4iIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiBub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC02MTAsOCArNjEwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTYyMSw3ICs2MjEsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIGNyeXB0MzIubGliIGdkaTMyLmxpYiB1c2VyMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTFxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgY3J5cHQzMi5saWIgZ2RpMzIubGliIHVzZXIzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtNjM1LDggKzYzNSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTY1MCwzMCArNjUwLDMwIEBACiAKICMgQmVnaW4gVGFyZ2V0CiAKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWciCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIgorIyBOYW1lICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIgorIyBOYW1lICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWciCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIKICMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKIAogIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2N1cmwtYWxsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvY3VybC1hbGwuc2xuCmluZGV4IDQ0NzVjNzcuLmZjNTFiOWQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvY3VybC1hbGwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvY3VybC1hbGwuc2xuCkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgInNyY1xjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiAJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSA9IHtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2xpYi8uZ2l0aWdub3JlCmluZGV4IDhiMzE5YTcuLmE3MzUzYmYgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDMgQEAKLS8qLnZjcHJvagogLyoubmNiCiAvKi5zdW8KKy8qLnZjcHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvbGliY3VybC50bXBsCmluZGV4IGYyNzc4MmUuLmVlMTdiNGIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2xpYi9saWJjdXJsLnRtcGwKQEAgLTI3LDcgKzI3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTg0LDcgKzg0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTE0Myw3ICsxNDMsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMjAyLDcgKzIwMiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTI5Niw3ICsyOTYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMzUyLDcgKzM1Miw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0zOTksNyArMzk5LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTQ0Niw3ICs0NDYsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNDk0LDcgKzQ5NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC01NTAsNyArNTUwLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTYwOSw3ICs2MDksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNjU2LDcgKzY1Niw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03MTQsNyArNzE0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTc2MSw3ICs3NjEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtODA4LDcgKzgwOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC04NTUsNyArODU1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTkwMSw3ICs5MDEsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtOTQ4LDcgKzk0OCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMDA3LDcgKzEwMDcsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTA1NCw3ICsxMDU0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVMiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMTEzLDcgKzExMTMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTE2OSw3ICsxMTY5LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVMiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMjE3LDcgKzEyMTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTI2OCw2ICsxMjY4LDIwIEBACiBDVVJMX0xJQl9SQ19GSUxFUwogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0idmF1dGgiCisJCQlGaWx0ZXI9IiI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJCUZpbHRlcj0iIj4KK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKKwkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCQlGaWx0ZXI9IiI+CitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9InZ0bHMiCiAJCQlGaWx0ZXI9IiI+CiAJCQk8RmlsdGVyCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvLmdpdGlnbm9yZQppbmRleCA4YjMxOWE3Li5hNzM1M2JmIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjLy5naXRpZ25vcmUKQEAgLTEsMyArMSwzIEBACi0vKi52Y3Byb2oKIC8qLm5jYgogLyouc3VvCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybHNyYy5zbG4KcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwuc2xuCmluZGV4IGNiYTNiNjAuLjQxZWJiNjEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwuc2xuCkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAlFbmRQcm9qZWN0U2VjdGlvbgogRW5kUHJvamVjdApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybC50bXBsCmluZGV4IDY1MjI2YzAuLjk4YzA4MTIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnRtcGwKQEAgLTIsNyArMiw3IEBACiA8VmlzdWFsU3R1ZGlvUHJvamVjdAogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgogCVZlcnNpb249IjcuMTAiCi0JTmFtZT0iY3VybHNyYyIKKwlOYW1lPSJjdXJsIgogCVNjY1Byb2plY3ROYW1lPSIiCiAJU2NjTG9jYWxQYXRoPSIiPgogCTxQbGF0Zm9ybXM+CkBAIC0yNiw3ICsyNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0zNSw3ICszNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNy4xXExJQiBSZWxlYXNlIgpAQCAtODEsNyArODEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtOTAsNyArOTAsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTM2LDcgKzEzNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTE5MCw3ICsxOTAsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTIwMCw3ICsyMDAsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3LjFcRExMIERlYnVnLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3LjFcRExMIERlYnVnIgpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMjU3LDcgKzI1Nyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNy4xXExJQiBEZWJ1ZyIKQEAgLTMwNCw3ICszMDQsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTMxNCw3ICszMTQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMzYxLDcgKzM2MSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMzcxLDcgKzM3MSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxMSUIgRGVidWcsLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzcuMVxMSUIgRGVidWciCkBAIC00MTksNyArNDE5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTQyOCw3ICs0MjgsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxETEwgUmVsZWFzZSIKQEAgLTQ3NCw3ICs0NzQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNDgzLDcgKzQ4Myw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNy4xXERMTCBSZWxlYXNlLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3LjFcRExMIFJlbGVhc2UiCkBAIC01MjksNyArNTI5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTUzOCw3ICs1MzgsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtNTg0LDcgKzU4NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC01OTMsNyArNTkzLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3LjFcTElCIFJlbGVhc2UsLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzcuMVxMSUIgUmVsZWFzZSIKQEAgLTYzOCw3ICs2MzgsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTY0OCw3ICs2NDgsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxETEwgRGVidWciCkBAIC02OTUsNyArNjk1LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC03MDUsNyArNzA1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTc1Miw3ICs3NTIsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTc2Miw3ICs3NjIsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtODEwLDcgKzgxMCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC04MTksNyArODE5LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTg2NSw3ICs4NjUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtODc0LDcgKzg3NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC05MTksNyArOTE5LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC05MjksNyArOTI5LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTk3Niw3ICs5NzYsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTk4Niw3ICs5ODYsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTAzNCw3ICsxMDM0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEwNDMsNyArMTA0Myw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMDg4LDcgKzEwODgsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTEwOTgsNyArMTA5OCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMTQ1LDcgKzExNDUsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTExNTUsNyArMTE1NSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTIxMiw3ICsxMjEyLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTEyNTcsNyArMTI1Nyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMzE1LDcgKzEzMTUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTMyNCw3ICsxMzI0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9jdXJsLWFsbC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9jdXJsLWFsbC5zbG4KaW5kZXggZmI3Yjg5YS4uYjA3NDZkOCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzcvY3VybC1hbGwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L2N1cmwtYWxsLnNsbgpAQCAtMSw1ICsxLDUgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDcuMDAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogRW5kUHJvamVjdAogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJjdXJsIiwgImxpYlxsaWJjdXJsLnZjcHJvaiIsICJ7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSIKIEVuZFByb2plY3QKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzcvbGliLy5naXRpZ25vcmUKaW5kZXggZDg4NGFjYy4uYmM1ODA2YSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzcvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzcvbGliLy5naXRpZ25vcmUKQEAgLTEsMiArMSwyIEBACi0vKi52Y3Byb2oKIC8qLm5jYgorLyoudmNwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwudG1wbAppbmRleCBhYTMxZjgwLi42YTU3ZDEyIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnRtcGwKQEAgLTI3LDcgKzI3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTc4LDcgKzc4LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTEzMSw3ICsxMzEsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTg0LDcgKzE4NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0yMjQsNyArMjI0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTI2Niw3ICsyNjYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMzE2LDcgKzMxNiw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0zNTcsNyArMzU3LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTM5OCw3ICszOTgsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNDQwLDcgKzQ0MCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC00OTAsNyArNDkwLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTU0Myw3ICs1NDMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNTg0LDcgKzU4NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC02MzYsNyArNjM2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTY3Nyw3ICs2NzcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNzE4LDcgKzcxOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03NTksNyArNzU5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTc5OSw3ICs3OTksNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtODQwLDcgKzg0MCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC04OTMsNyArODkzLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTkzNCw3ICs5MzQsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMO1VTRV9XSU4zMl9JRE47V0FOVF9JRE5fUFJPVE9UWVBFUyIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTk4Nyw3ICs5ODcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTAzNyw3ICsxMDM3LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVMiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMDc5LDcgKzEwNzksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTEyMiw2ICsxMTIyLDIwIEBACiBDVVJMX0xJQl9SQ19GSUxFUwogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0idmF1dGgiCisJCQlGaWx0ZXI9IiI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJCUZpbHRlcj0iIj4KK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKKwkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCQlGaWx0ZXI9IiI+CitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9InZ0bHMiCiAJCQlGaWx0ZXI9IiI+CiAJCQk8RmlsdGVyCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy8uZ2l0aWdub3JlCmluZGV4IGQ4ODRhY2MuLmJjNTgwNmEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMiBAQAotLyoudmNwcm9qCiAvKi5uY2IKKy8qLnZjcHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwuc2xuCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnNsbgpyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwuc2xuCmluZGV4IDY1MWM5YjIuLjY5NTU0NjEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC5zbG4KQEAgLTEsNSArMSw1IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA3LjAwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAiY3VybC52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiBFbmRQcm9qZWN0CiBHbG9iYWwKIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwudG1wbAppbmRleCBjYjE1MmI1Li45YmU4NWRiIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybHNyYy50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsLnRtcGwKQEAgLTIsNyArMiw3IEBACiA8VmlzdWFsU3R1ZGlvUHJvamVjdAogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgogCVZlcnNpb249IjcuMDAiCi0JTmFtZT0iY3VybHNyYyIKKwlOYW1lPSJjdXJsIgogCVNjY1Byb2plY3ROYW1lPSIiCiAJU2NjTG9jYWxQYXRoPSIiPgogCTxQbGF0Zm9ybXM+CkBAIC0yNiw3ICsyNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0zNSw3ICszNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcTElCIFJlbGVhc2UiCkBAIC03NSw3ICs3NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC04NCw3ICs4NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTI0LDcgKzEyNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0xMzMsNyArMTMzLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xODIsNyArMTgyLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcRExMIERlYnVnLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3XERMTCBEZWJ1ZyIKQEAgLTIyMyw3ICsyMjMsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTIzMyw3ICsyMzMsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3XExJQiBEZWJ1ZyIKQEAgLTI3NCw3ICsyNzQsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTI4NCw3ICsyODQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTMyNSw3ICszMjUsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTMzNSw3ICszMzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDN1xMSUIgRGVidWcsLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzdcTElCIERlYnVnIgpAQCAtMzc3LDcgKzM3Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0zODYsNyArMzg2LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDN1xETEwgUmVsZWFzZSIKQEAgLTQyNiw3ICs0MjYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNDM1LDcgKzQzNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcRExMIFJlbGVhc2UsLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzdcRExMIFJlbGVhc2UiCkBAIC00NzUsNyArNDc1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTQ4NCw3ICs0ODQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTUyNCw3ICs1MjQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNTMzLDcgKzUzMyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcTElCIFJlbGVhc2UsLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzdcTElCIFJlbGVhc2UiCkBAIC01NzIsNyArNTcyLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC01ODIsNyArNTgyLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDN1xETEwgRGVidWciCkBAIC02MjMsNyArNjIzLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC02MzMsNyArNjMzLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC02NzQsNyArNjc0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC02ODQsNyArNjg0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC03MjYsNyArNzI2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTczNSw3ICs3MzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTc3NSw3ICs3NzUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNzg0LDcgKzc4NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtODIzLDcgKzgyMyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtODMzLDcgKzgzMyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtODc0LDcgKzg3NCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtODg0LDcgKzg4NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtOTI2LDcgKzkyNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC05MzUsNyArOTM1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC05NzQsNyArOTc0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC05ODQsNyArOTg0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMDI1LDcgKzEwMjUsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTEwMzUsNyArMTAzNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEwODYsNyArMTA4Niw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTEyNSw3ICsxMTI1LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMTM1LDcgKzExMzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibm9ybWFsaXoubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMTc3LDcgKzExNzcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTE4Niw3ICsxMTg2LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuCmluZGV4IDBkZmJkMWEuLjllMmMyMmQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9jdXJsLWFsbC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwCiAjIFZpc3VhbCBTdHVkaW8gMjAwNQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgInNyY1xjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiAJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSA9IHtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzgvbGliLy5naXRpZ25vcmUKaW5kZXggNmNkNjJjYS4uNDMxY2Y0NyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzgvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvbGliLy5naXRpZ25vcmUKQEAgLTEsNCArMSw0IEBACi0vKi52Y3Byb2oKLS8qLnVzZXIKIC8qLm5jYgogLyouc3VvCisvKi51c2VyCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi9saWJjdXJsLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC50bXBsCmluZGV4IGI1N2M0OWYuLjY1ZDc1MGQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi9saWJjdXJsLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvbGliL2xpYmN1cmwudG1wbApAQCAtNTQsNyArNTQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0Miw3ICsxNDIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIzMCw3ICsyMzAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzE2LDcgKzMxNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zOTUsNyArMzk1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC00NjIsNyArNDYyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC01MjksNyArNTI5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTU5Niw3ICs1OTYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtNjY2LDcgKzY2Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNzU0LDcgKzc1NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtODQyLDcgKzg0Miw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC05MjgsNyArOTI4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEwMTIsNyArMTAxMiw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTEwMCw3ICsxMTAwLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xMTg4LDcgKzExODgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTI3NCw3ICsxMjc0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEzNTgsNyArMTM1OCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNTM0LDcgKzE1MzQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTYyMCw3ICsxNjIwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE2OTksNyArMTY5OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTc2Niw3ICsxNzY2LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xODMyLDcgKzE4MzIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE4OTksNyArMTg5OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTk2NSw3ICsxOTY1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMDMyLDcgKzIwMzIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIwOTgsNyArMjA5OCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjE2NSw3ICsyMTY1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMjMxLDcgKzIyMzEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIyOTgsNyArMjI5OCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjM2NSw3ICsyMzY1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI0MzIsNyArMjQzMiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNDk4LDcgKzI0OTgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjU2NSw3ICsyNTY1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI2MzEsNyArMjYzMSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNjk4LDcgKzI2OTgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjc2NCw3ICsyNzY0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI4MzEsNyArMjgzMSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yODk3LDcgKzI4OTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjk2NCw3ICsyOTY0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMwMzQsNyArMzAzNCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzEyMiw3ICszMTIyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMjEwLDcgKzMyMTAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzI5Niw3ICszMjk2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMzNzUsNyArMzM3NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzQ0Miw3ICszNDQyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zNTA5LDcgKzM1MDksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzU3Niw3ICszNTc2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM2MjksNiArMzYyOSwyMCBAQAogQ1VSTF9MSUJfUkNfRklMRVMKIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9InZhdXRoIgorCQkJPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCQk+CitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQkJPgorQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUworCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlOYW1lPSJ2dGxzIgogCQkJPgogCQkJPEZpbHRlcgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvLmdpdGlnbm9yZQppbmRleCA2Y2Q2MmNhLi40MzFjZjQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvLmdpdGlnbm9yZQpAQCAtMSw0ICsxLDQgQEAKLS8qLnZjcHJvagotLyoudXNlcgogLyoubmNiCiAvKi5zdW8KKy8qLnVzZXIKKy8qLnZjcHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsLnNsbgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC5zbG4KaW5kZXggMTNmYzFkMy4uMGM0M2NiZSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC5zbG4KQEAgLTEsNiArMSw2IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMTAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwCisjIFZpc3VhbCBTdHVkaW8gMjAwNQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogRW5kUHJvamVjdAogR2xvYmFsCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnRtcGwKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsLnRtcGwKaW5kZXggYWQ3NTI4MS4uMjc4OTJkYiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC50bXBsCkBAIC0yLDkgKzIsOSBAQAogPFZpc3VhbFN0dWRpb1Byb2plY3QKIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKIAlWZXJzaW9uPSI4LjAwIgotCU5hbWU9ImN1cmxzcmMiCisJTmFtZT0iY3VybCIKIAlQcm9qZWN0R1VJRD0iezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCi0JUm9vdE5hbWVzcGFjZT0iY3VybHNyYyIKKwlSb290TmFtZXNwYWNlPSJjdXJsIgogCT4KIAk8UGxhdGZvcm1zPgogCQk8UGxhdGZvcm0KQEAgLTUyLDcgKzUyLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTY5LDcgKzY5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xMzYsNyArMTM2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE1Myw3ICsxNTMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTIxOSw3ICsyMTksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjM2LDcgKzIzNiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzAzLDcgKzMwMyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMjAsNyArMzIwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zODUsNyArMzg1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC00MDMsNyArNDAzLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC00NzEsNyArNDcxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC00ODksNyArNDg5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC01NTYsNyArNTU2LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC01NzQsNyArNTc0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC02NDIsNyArNjQyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC02NjAsNyArNjYwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC03MjcsNyArNzI3LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC03NDUsNyArNzQ1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC04MTMsNyArODEzLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC04MzEsNyArODMxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC04OTgsNyArODk4LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC05MTYsNyArOTE2LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC05ODQsNyArOTg0LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xMDAyLDcgKzEwMDIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTEwNzAsNyArMTA3MCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMDg3LDcgKzEwODcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTExNTQsNyArMTE1NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMTcxLDcgKzExNzEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTEyMzcsNyArMTIzNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMjU0LDcgKzEyNTQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTEzMjEsNyArMTMyMSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMzM4LDcgKzEzMzgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTQyMSw3ICsxNDIxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xNDg5LDcgKzE0ODksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE1MDcsNyArMTUwNyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTU3NSw3ICsxNTc1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE1OTIsNyArMTU5Miw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTY1OSw3ICsxNjU5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE2NzYsNyArMTY3Niw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTc0MSw3ICsxNzQxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNzU5LDcgKzE3NTksNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzhcTElCIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTE4MjcsNyArMTgyNyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTg0NSw3ICsxODQ1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM4XExJQiBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xOTEzLDcgKzE5MTMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTkzMCw3ICsxOTMwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM4XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTE5OTcsNyArMTk5Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yMDE0LDcgKzIwMTQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzhcTElCIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjA3OSw3ICsyMDc5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMDk3LDcgKzIwOTcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM4XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOFxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjE2NSw3ICsyMTY1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMTgzLDcgKzIxODMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM4XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOFxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjI1MSw3ICsyMjUxLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTIyNjgsNyArMjI2OCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOFxMSUIgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yMzM1LDcgKzIzMzUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjM1Miw3ICsyMzUyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM4XExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkM4XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI0MTcsNyArMjQxNyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjQzNSw3ICsyNDM1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM4XERMTCBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yNTAzLDcgKzI1MDMsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTI1MjEsNyArMjUyMSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxETEwgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjU4OSw3ICsyNTg5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI2MDYsNyArMjYwNiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yNjczLDcgKzI2NzMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjY5MCw3ICsyNjkwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM4XERMTCBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI3NTUsNyArMjc1NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjc3Myw3ICsyNzczLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzhcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI4NDEsNyArMjg0MSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjg1OSw3ICsyODU5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzhcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI5MjcsNyArMjkyNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yOTQ0LDcgKzI5NDQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzhcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzhcRExMIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzAxMSw3ICszMDExLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMwMjgsNyArMzAyOCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYnNzaDIubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOFxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zMDkzLDcgKzMwOTMsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMxMTEsNyArMzExMSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzE3OSw3ICszMTc5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMTk3LDcgKzMxOTcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTMyNjUsNyArMzI2NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMjgyLDcgKzMyODIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTMzNDksNyArMzM0OSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMzY2LDcgKzMzNjYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTM0MzEsNyArMzQzMSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzQ0OSw3ICszNDQ5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zNTE3LDcgKzM1MTcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM1MzUsNyArMzUzNSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzYwMyw3ICszNjAzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM2MjAsNyArMzYyMCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzY4Nyw3ICszNjg3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM3MDQsNyArMzcwNCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzc2OSw3ICszNzY5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zNzg3LDcgKzM3ODcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zODU1LDcgKzM4NTUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM4NzMsNyArMzg3Myw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIG5vcm1hbGl6LmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTM5NDEsNyArMzk0MSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zOTU4LDcgKzM5NTgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC00MDI1LDcgKzQwMjUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtNDA0Miw3ICs0MDQyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbm9ybWFsaXoubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmxzcmMuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZThhZDA3Li4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwCi0jIFZpc3VhbCBTdHVkaW8gMjAwNQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgotRW5kUHJvamVjdAotR2xvYmFsCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgotCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCi0JCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKLQkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQnVpbGQuMCA9IExJQiBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCi0JRW5kR2xvYmFsU2VjdGlvbgotRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9jdXJsLWFsbC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9jdXJsLWFsbC5zbG4KaW5kZXggNDQxNTE4Ni4uMjAwN2NmNyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzkvY3VybC1hbGwuc2xuCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L2N1cmwtYWxsLnNsbgpAQCAtMSw2ICsxLDYgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwCiAjIFZpc3VhbCBTdHVkaW8gMjAwOAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgInNyY1xjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiAJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfSA9IHtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzkvbGliLy5naXRpZ25vcmUKaW5kZXggNmNkNjJjYS4uNDMxY2Y0NyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzkvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzkvbGliLy5naXRpZ25vcmUKQEAgLTEsNCArMSw0IEBACi0vKi52Y3Byb2oKLS8qLnVzZXIKIC8qLm5jYgogLyouc3VvCisvKi51c2VyCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvbGliY3VybC50bXBsCmluZGV4IGYzZWMxNDMuLmY1NmIzMWMgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzkvbGliL2xpYmN1cmwudG1wbApAQCAtNTUsNyArNTUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0MCw3ICsxNDAsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIyNSw3ICsyMjUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzA4LDcgKzMwOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zODQsNyArMzg0LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC00NTEsNyArNDUxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC01MTgsNyArNTE4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTU4NSw3ICs1ODUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtNjU1LDcgKzY1NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNzQwLDcgKzc0MCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtODI1LDcgKzgyNSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC05MDgsNyArOTA4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTk4OSw3ICs5ODksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTEwNzQsNyArMTA3NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTE1OSw3ICsxMTU5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEyNDIsNyArMTI0Miw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMzIzLDcgKzEzMjMsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0MDgsNyArMTQwOCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTQ5Myw3ICsxNDkzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE1NzYsNyArMTU3Niw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNjUyLDcgKzE2NTIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE3MTksNyArMTcxOSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTc4NSw3ICsxNzg1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xODUyLDcgKzE4NTIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE5MTgsNyArMTkxOCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTk4NSw3ICsxOTg1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMDUxLDcgKzIwNTEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIxMTgsNyArMjExOCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjE4NCw3ICsyMTg0LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMjUxLDcgKzIyNTEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIzMTgsNyArMjMxOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yMzg1LDcgKzIzODUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjQ1MSw3ICsyNDUxLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI1MTgsNyArMjUxOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNTg0LDcgKzI1ODQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjY1MSw3ICsyNjUxLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI3MTcsNyArMjcxNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNzg0LDcgKzI3ODQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjg1MCw3ICsyODUwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI5MTcsNyArMjkxNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yOTg3LDcgKzI5ODcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMwNzIsNyArMzA3Miw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzE1Nyw3ICszMTU3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMyNDAsNyArMzI0MCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMzE2LDcgKzMzMTYsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMzODMsNyArMzM4Myw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzQ1MCw3ICszNDUwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM1MTcsNyArMzUxNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zNTcwLDYgKzM1NzAsMjAgQEAKIENVUkxfTElCX1JDX0ZJTEVTCiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1lPSJ2YXV0aCIKKwkJCT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQkJPgorQ1VSTF9MSUJfVkFVVEhfQ19GSUxFUworCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJCT4KK0NVUkxfTElCX1ZBVVRIX0hfRklMRVMKKwkJCTwvRmlsdGVyPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0idnRscyIKIAkJCT4KIAkJCTxGaWx0ZXIKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjLy5naXRpZ25vcmUKaW5kZXggNmNkNjJjYS4uNDMxY2Y0NyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjLy5naXRpZ25vcmUKQEAgLTEsNCArMSw0IEBACi0vKi52Y3Byb2oKLS8qLnVzZXIKIC8qLm5jYgogLyouc3VvCisvKi51c2VyCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA5OCUKY29weSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4KY29weSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC5zbG4KaW5kZXggMTNmYzFkMy4uMGZiMDU4NiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC5zbG4KQEAgLTEsNiArMSw2IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMTAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMDgKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy50bXBsCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC50bXBsCmluZGV4IGUxOTI2OTYuLmRhZjNiZGQgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwudG1wbApAQCAtMiw5ICsyLDkgQEAKIDxWaXN1YWxTdHVkaW9Qcm9qZWN0CiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCiAJVmVyc2lvbj0iOS4wMCIKLQlOYW1lPSJjdXJsc3JjIgorCU5hbWU9ImN1cmwiCiAJUHJvamVjdEdVSUQ9Ins1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgotCVJvb3ROYW1lc3BhY2U9ImN1cmxzcmMiCisJUm9vdE5hbWVzcGFjZT0iY3VybCIKIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiCiAJPgogCTxQbGF0Zm9ybXM+CkBAIC01Myw3ICs1Myw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC03MCw3ICs3MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTM0LDcgKzEzNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNTEsNyArMTUxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yMTQsNyArMjE0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTIzMSw3ICsyMzEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI5NSw3ICsyOTUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzEyLDcgKzMxMiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzc0LDcgKzM3NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzkyLDcgKzM5Miw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNDU3LDcgKzQ1Nyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNDc1LDcgKzQ3NSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNTM5LDcgKzUzOSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNTU3LDcgKzU1Nyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNjIyLDcgKzYyMiw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNjQwLDcgKzY0MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNzA0LDcgKzcwNCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNzIyLDcgKzcyMiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNzg3LDcgKzc4Nyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtODA1LDcgKzgwNSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtODY5LDcgKzg2OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtODg3LDcgKzg4Nyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtOTUyLDcgKzk1Miw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtOTcwLDcgKzk3MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTAzNSw3ICsxMDM1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEwNTIsNyArMTA1Miw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTExNiw3ICsxMTE2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTExMzMsNyArMTEzMyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEyMTMsNyArMTIxMyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEyOTQsNyArMTI5NCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTM1Niw3ICsxMzU2LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xMzc0LDcgKzEzNzQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTE0MzksNyArMTQzOSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xNTIyLDcgKzE1MjIsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTUzOSw3ICsxNTM5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xNjAzLDcgKzE2MDMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTYyMCw3ICsxNjIwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xNjgyLDcgKzE2ODIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE3MDAsNyArMTcwMCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOVxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTc2NSw3ICsxNzY1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNzgzLDcgKzE3ODMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzlcTElCIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTE4NDgsNyArMTg0OCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xODY1LDcgKzE4NjUsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzlcTElCIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTkyOSw3ICsxOTI5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE5NDYsNyArMTk0Niw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOVxMSUIgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yMDA4LDcgKzIwMDgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIwMjYsNyArMjAyNiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzlcTElCIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM5XExJQiBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yMDkxLDcgKzIwOTEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIxMDksNyArMjEwOSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzlcTElCIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkM5XExJQiBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yMTc0LDcgKzIxNzQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjE5MSw3ICsyMTkxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM5XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTIyNTUsNyArMjI1NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yMjcyLDcgKzIyNzIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzlcTElCIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzlcTElCIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjMzNCw3ICsyMzM0LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMzUyLDcgKzIzNTIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzlcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI0MTcsNyArMjQxNyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjQzNSw3ICsyNDM1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XERMTCBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yNTAwLDcgKzI1MDAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjUxNyw3ICsyNTE3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XERMTCBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI1ODEsNyArMjU4MSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNTk4LDcgKzI1OTgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzlcRExMIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjY2MCw3ICsyNjYwLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yNjc4LDcgKzI2NzgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XERMTCBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOVxETEwgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjc0Myw3ICsyNzQzLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yNzYxLDcgKzI3NjEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XERMTCBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOVxETEwgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjgyNiw3ICsyODI2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI4NDMsNyArMjg0Myw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOVxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOVxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yOTA3LDcgKzI5MDcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjkyNCw3ICsyOTI0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGlic3NoMi5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkM5XERMTCBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI5ODYsNyArMjk4Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzAwNCw3ICszMDA0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zMDY5LDcgKzMwNjksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMwODcsNyArMzA4Nyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzE1Miw3ICszMTUyLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMxNjksNyArMzE2OSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzIzMyw3ICszMjMzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMyNTAsNyArMzI1MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzMxMiw3ICszMzEyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMzMwLDcgKzMzMzAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTMzOTUsNyArMzM5NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzQxMyw3ICszNDEzLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zNDc4LDcgKzM0NzgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzQ5NSw3ICszNDk1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zNTU5LDcgKzM1NTksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzU3Niw3ICszNTc2LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zNjM4LDcgKzM2MzgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM2NTYsNyArMzY1Niw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIG5vcm1hbGl6LmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTM3MjEsNyArMzcyMSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzczOSw3ICszNzM5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbm9ybWFsaXoubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzgwNCw3ICszODA0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM4MjEsNyArMzgyMSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIG5vcm1hbGl6LmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTM4ODUsNyArMzg4NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zOTAyLDcgKzM5MDIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NzMzNDkuLjAwMDAwMDAKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwCi0jIFZpc3VhbCBTdHVkaW8gMjAwOAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgotRW5kUHJvamVjdAotR2xvYmFsCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgotCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCi0JCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKLQkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQnVpbGQuMCA9IExJQiBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXx4NjQKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCi0JRW5kR2xvYmFsU2VjdGlvbgotRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9idWlsZC1vcGVuc3NsLmJhdCBiL3Byb2plY3RzL2J1aWxkLW9wZW5zc2wuYmF0CmluZGV4IDIwN2VjZjguLjA3NzNlMDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL2J1aWxkLW9wZW5zc2wuYmF0CisrKyBiL3Byb2plY3RzL2J1aWxkLW9wZW5zc2wuYmF0CkBAIC02LDExICs2LDExIEBACiByZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiByZW0gKgotcmVtICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCityZW0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KIHJlbSAqCiByZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogcmVtICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KK3JlbSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogcmVtICoKIHJlbSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogcmVtICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMyArMjQsMTQgQEAKIDpiZWdpbgogICByZW0gQ2hlY2sgd2UgYXJlIHJ1bm5pbmcgb24gYSBXaW5kb3dzIE5UIGRlcml2ZWQgT1MKICAgaWYgbm90ICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBub2RvcworCisgIHJlbSBTZXQgb3VyIHZhcmlhYmxlcwogICBzZXRsb2NhbAotICAKLSAgcmVtIERpc3BsYXkgdGhlIGhlbHAKKyAgc2V0IFZDX1ZFUj0KKyAgc2V0IEJVSUxEX1BMQVRGT1JNPQorCisgIHJlbSBFbnN1cmUgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgYXJndW1lbnRzCiAgIGlmIC9pICIlfjEiID09ICIiIGdvdG8gc3ludGF4Ci0gIGlmIC9pICIlfjEiID09ICItPyIgZ290byBzeW50YXgKLSAgaWYgL2kgIiV+MSIgPT0gIi1oIiBnb3RvIHN5bnRheAotICBpZiAvaSAiJX4xIiA9PSAiLWhlbHAiIGdvdG8gc3ludGF4CiAKIDpwYXJzZUFyZ3MKICAgaWYgIiV+MSIgPT0gIiIgZ290byBwcmVyZXF1aXNpdGVzCkBAIC02Nyw2ICs2OCwxMCBAQAogICAgIHNldCBWQ19WRVI9MTIuMAogICAgIHNldCBWQ19ERVNDPVZDMTIKICAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTIuMFxWQyIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzE0IiAoCisgICAgc2V0IFZDX1ZFUj0xNC4wCisgICAgc2V0IFZDX0RFU0M9VkMxNAorICAgIHNldCAiVkNfUEFUSD1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxNC4wXFZDIgogICApIGVsc2UgaWYgL2kgIiV+MSUiID09ICJ4ODYiICgKICAgICBzZXQgQlVJTERfUExBVEZPUk09eDg2CiAgICkgZWxzZSBpZiAvaSAiJX4xJSIgPT0gIng2NCIgKApAQCAtNzUsNiArODAsMTIgQEAKICAgICBzZXQgQlVJTERfQ09ORklHPWRlYnVnCiAgICkgZWxzZSBpZiAvaSAiJX4xJSIgPT0gInJlbGVhc2UiICgKICAgICBzZXQgQlVJTERfQ09ORklHPXJlbGVhc2UKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItPyIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWgiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiAoCisgICAgZ290byBzeW50YXgKICAgKSBlbHNlICgKICAgICBpZiBub3QgZGVmaW5lZCBTVEFSVF9ESVIgKAogICAgICAgc2V0IFNUQVJUX0RJUj0lfjElCkBAIC04Niw2ICs5NywxMCBAQAogICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCiAKIDpwcmVyZXF1aXNpdGVzCisgIHJlbSBDb21waWxlciBhbmQgcGxhdGZvcm0gYXJlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCisgIGlmIG5vdCBkZWZpbmVkIFZDX1ZFUiBnb3RvIHN5bnRheAorICBpZiBub3QgZGVmaW5lZCBCVUlMRF9QTEFURk9STSBnb3RvIHN5bnRheAorCiAgIHJlbSBEZWZhdWx0IHRoZSBzdGFydCBkaXJlY3RvcnkgaWYgb25lIGlzbid0IHNwZWNpZmllZAogICBpZiBub3QgZGVmaW5lZCBTVEFSVF9ESVIgc2V0IFNUQVJUX0RJUj0uLlwuLlxvcGVuc3NsCiAKQEAgLTEwNSwxMSArMTIwLDE4IEBACiAgIHJlbSBDaGVjayB3ZSBoYXZlIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGVkCiAgIGlmIG5vdCBleGlzdCAiJVBGJVwlVkNfUEFUSCUiIGdvdG8gbm92YwogCi0gIHJlbSBDaGVjayB3ZSBoYXZlIFBlcmwgaW5zdGFsbGVkCisgIHJlbSBDaGVjayB3ZSBoYXZlIFBlcmwgaW4gb3VyIHBhdGgKICAgZWNobyAlUEFUSCUgfCBmaW5kc3RyIC9JIC9DOiJcUGVybCIgMT5udWwKICAgaWYgZXJyb3JsZXZlbCAxICgKLSAgICBpZiBub3QgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybCIgKAotICAgICAgaWYgbm90IGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmw2NCIgZ290byBub3BlcmwKKyAgICByZW0gSXQgaXNuJ3Qgc28gY2hlY2sgd2UgaGF2ZSBpdCBpbnN0YWxsZWQgYW5kIHNldCB0aGUgcGF0aCBpZiBpdCBpcworICAgIGlmIGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmwiICgKKyAgICAgIHNldCAiUEFUSD0lU3lzdGVtRHJpdmUlXFBlcmxcYmluOyVQQVRIJSIKKyAgICApIGVsc2UgKAorICAgICAgaWYgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybDY0IiAoCisgICAgICAgIHNldCAiUEFUSD0lU3lzdGVtRHJpdmUlXFBlcmw2NFxiaW47JVBBVEglIgorICAgICAgKSBlbHNlICgKKyAgICAgICAgZ290byBub3BlcmwKKyAgICAgICkKICAgICApCiAgICkKIApAQCAtMTQwLDYgKzE2Miw3IEBACiAgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTAuMCIgc2V0IFZDVkFSU19QTEFURk9STT0lQlVJTERfUExBVEZPUk0lCiAgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTEuMCIgc2V0IFZDVkFSU19QTEFURk9STT1hbWQ2NAogICAgIGlmICIlVkNfVkVSJSIgPT0gIjEyLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09YW1kNjQKKyAgICBpZiAiJVZDX1ZFUiUiID09ICIxNC4wIiBzZXQgVkNWQVJTX1BMQVRGT1JNPWFtZDY0CiAgICkKIAogOnN0YXJ0CkBAIC0yODAsNiArMzAzLDcgQEAKICAgZWNobyB2YzEwICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEwCiAgIGVjaG8gdmMxMSAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMgogICBlY2hvIHZjMTIgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTMKKyAgZWNobyB2YzE0ICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDE1CiAgIGVjaG8uCiAgIGVjaG8gUGxhdGZvcm06CiAgIGVjaG8uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9idWlsZC13b2xmc3NsLmJhdCBiL3Byb2plY3RzL2J1aWxkLXdvbGZzc2wuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OTM1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9idWlsZC13b2xmc3NsLmJhdApAQCAtMCwwICsxLDM1MyBAQAorQGVjaG8gb2ZmCityZW0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCityZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCityZW0gKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKK3JlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCityZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKK3JlbSAqCityZW0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KK3JlbSAqIENvcHlyaWdodCAoQykgMjAxNSwgSmF5IFNhdGlybywgPHJheXNhdGlyb0B5YWhvby5jb20+LgorcmVtICoKK3JlbSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCityZW0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCityZW0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KK3JlbSAqCityZW0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKK3JlbSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworcmVtICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KK3JlbSAqCityZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCityZW0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorcmVtICoKK3JlbSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOmJlZ2luCisgIHJlbSBDaGVjayB3ZSBhcmUgcnVubmluZyBvbiBhIFdpbmRvd3MgTlQgZGVyaXZlZCBPUworICBpZiBub3QgIiVPUyUiID09ICJXaW5kb3dzX05UIiBnb3RvIG5vZG9zCisKKyAgcmVtIFNldCBvdXIgdmFyaWFibGVzCisgIHNldGxvY2FsCisgIHNldCBTVUNDRVNTRlVMX0JVSUxEUz0KKyAgc2V0IFZDX1ZFUj0KKyAgc2V0IEJVSUxEX1BMQVRGT1JNPQorCisgIHJlbSBFbnN1cmUgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgYXJndW1lbnRzCisgIGlmIC9pICIlfjEiID09ICIiIGdvdG8gc3ludGF4CisKKzpwYXJzZUFyZ3MKKyAgaWYgIiV+MSIgPT0gIiIgZ290byBwcmVyZXF1aXNpdGVzCisKKyAgaWYgL2kgIiV+MSIgPT0gInZjMTAiICgKKyAgICBzZXQgVkNfVkVSPTEwLjAKKyAgICBzZXQgVkNfREVTQz1WQzEwCisgICAgc2V0IFZDX1RPT0xTRVQ9djEwMAorICAgIHNldCAiVkNfUEFUSD1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMC4wXFZDIgorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInZjMTEiICgKKyAgICBzZXQgVkNfVkVSPTExLjAKKyAgICBzZXQgVkNfREVTQz1WQzExCisgICAgc2V0IFZDX1RPT0xTRVQ9djExMAorICAgIHNldCAiVkNfUEFUSD1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMS4wXFZDIgorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInZjMTIiICgKKyAgICBzZXQgVkNfVkVSPTEyLjAKKyAgICBzZXQgVkNfREVTQz1WQzEyCisgICAgc2V0IFZDX1RPT0xTRVQ9djEyMAorICAgIHNldCAiVkNfUEFUSD1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMi4wXFZDIgorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInZjMTQiICgKKyAgICBzZXQgVkNfVkVSPTE0LjAKKyAgICBzZXQgVkNfREVTQz1WQzE0CisgICAgc2V0IFZDX1RPT0xTRVQ9djE0MAorICAgIHNldCAiVkNfUEFUSD1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxNC4wXFZDIgorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIng4NiIgKAorICAgIHNldCBCVUlMRF9QTEFURk9STT14ODYKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ4NjQiICgKKyAgICBzZXQgQlVJTERfUExBVEZPUk09eDY0CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiZGVidWciICgKKyAgICBzZXQgQlVJTERfQ09ORklHPWRlYnVnCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAicmVsZWFzZSIgKAorICAgIHNldCBCVUlMRF9DT05GSUc9cmVsZWFzZQorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi0/IiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaCIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWhlbHAiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgKAorICAgIGlmIG5vdCBkZWZpbmVkIFNUQVJUX0RJUiAoCisgICAgICBzZXQgU1RBUlRfRElSPSV+MQorICAgICkgZWxzZSAoCisgICAgICBnb3RvIHVua25vd24KKyAgICApCisgICkKKworICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCisKKzpwcmVyZXF1aXNpdGVzCisgIHJlbSBDb21waWxlciBhbmQgcGxhdGZvcm0gYXJlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCisgIGlmIG5vdCBkZWZpbmVkIFZDX1ZFUiBnb3RvIHN5bnRheAorICBpZiBub3QgZGVmaW5lZCBCVUlMRF9QTEFURk9STSBnb3RvIHN5bnRheAorCisgIHJlbSBEZWZhdWx0IHRoZSBzdGFydCBkaXJlY3RvcnkgaWYgb25lIGlzbid0IHNwZWNpZmllZAorICBpZiBub3QgZGVmaW5lZCBTVEFSVF9ESVIgc2V0IFNUQVJUX0RJUj0uLlwuLlx3b2xmc3NsCisKKyAgcmVtIENhbGN1bGF0ZSB0aGUgcHJvZ3JhbSBmaWxlcyBkaXJlY3RvcnkKKyAgaWYgZGVmaW5lZCBQUk9HUkFNRklMRVMgKAorICAgIHNldCAiUEY9JVBST0dSQU1GSUxFUyUiCisgICAgc2V0IE9TX1BMQVRGT1JNPXg4NgorICApCisgIGlmIGRlZmluZWQgUFJPR1JBTUZJTEVTKHg4NikgKAorICAgIHNldCAiUEY9JVBST0dSQU1GSUxFUyh4ODYpJSIKKyAgICBzZXQgT1NfUExBVEZPUk09eDY0CisgICkKKworICByZW0gQ2hlY2sgd2UgaGF2ZSBhIHByb2dyYW0gZmlsZXMgZGlyZWN0b3J5CisgIGlmIG5vdCBkZWZpbmVkIFBGIGdvdG8gbm9wZgorCisgIHJlbSBDaGVjayB3ZSBoYXZlIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGVkCisgIGlmIG5vdCBleGlzdCAiJVBGJVwlVkNfUEFUSCUiIGdvdG8gbm92YworCisgIHJlbSBDaGVjayB0aGUgc3RhcnQgZGlyZWN0b3J5IGV4aXN0cworICBpZiBub3QgZXhpc3QgIiVTVEFSVF9ESVIlIiBnb3RvIG5vd29sZnNzbAorCis6Y29uZmlndXJlCisgIGlmICIlQlVJTERfUExBVEZPUk0lIiA9PSAiIiBzZXQgQlVJTERfUExBVEZPUk09JU9TX1BMQVRGT1JNJQorCisgIGlmICIlQlVJTERfUExBVEZPUk0lIiA9PSAieDg2IiAoCisgICAgc2V0IFZDVkFSU19QTEFURk9STT14ODYKKyAgKSBlbHNlIGlmICIlQlVJTERfUExBVEZPUk0lIiA9PSAieDY0IiAoCisgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTAuMCIgc2V0IFZDVkFSU19QTEFURk9STT0lQlVJTERfUExBVEZPUk0lCisgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTEuMCIgc2V0IFZDVkFSU19QTEFURk9STT1hbWQ2NAorICAgIGlmICIlVkNfVkVSJSIgPT0gIjEyLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09YW1kNjQKKyAgICBpZiAiJVZDX1ZFUiUiID09ICIxNC4wIiBzZXQgVkNWQVJTX1BMQVRGT1JNPWFtZDY0CisgICkKKworOnN0YXJ0CisgIGVjaG8uCisgIGNhbGwgIiVQRiVcJVZDX1BBVEglXHZjdmFyc2FsbCIgJVZDVkFSU19QTEFURk9STSUKKworICBlY2hvLgorICBzZXQgU0FWRURfUEFUSD0lQ0QlCisgIGNkICVTVEFSVF9ESVIlCisgIGdvdG8gJUJVSUxEX1BMQVRGT1JNJQorCis6eDY0CisgIHJlbSBDYWxjdWxhdGUgb3VyIG91dHB1dCBkaXJlY3RvcnkKKyAgc2V0IE9VVERJUj1idWlsZFxXaW42NFwlVkNfREVTQyUKKyAgaWYgbm90IGV4aXN0ICVPVVRESVIlIG1kICVPVVRESVIlCisKKyAgaWYgIiVCVUlMRF9DT05GSUclIiA9PSAicmVsZWFzZSIgZ290byB4NjRyZWxlYXNlCisKKzp4NjRkZWJ1ZworICByZW0gUGVyZm9ybSA2NC1iaXQgRGVidWcgQnVpbGQKKworICBjYWxsIDpidWlsZCBEZWJ1ZyB4NjQKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBjYWxsIDpidWlsZCAiRExMIERlYnVnIiB4NjQKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBpZiAiJUJVSUxEX0NPTkZJRyUiID09ICJkZWJ1ZyIgZ290byBzdWNjZXNzCisKKzp4NjRyZWxlYXNlCisgIHJlbSBQZXJmb3JtIDY0LWJpdCBSZWxlYXNlIEJ1aWxkCisKKyAgY2FsbCA6YnVpbGQgUmVsZWFzZSB4NjQKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBjYWxsIDpidWlsZCAiRExMIFJlbGVhc2UiIHg2NAorICBpZiBlcnJvcmxldmVsIDEgZ290byBlcnJvcgorCisgIGdvdG8gc3VjY2VzcworCis6eDg2CisgIHJlbSBDYWxjdWxhdGUgb3VyIG91dHB1dCBkaXJlY3RvcnkKKyAgc2V0IE9VVERJUj1idWlsZFxXaW4zMlwlVkNfREVTQyUKKyAgaWYgbm90IGV4aXN0ICVPVVRESVIlIG1kICVPVVRESVIlCisKKyAgaWYgIiVCVUlMRF9DT05GSUclIiA9PSAicmVsZWFzZSIgZ290byB4ODZyZWxlYXNlCisKKzp4ODZkZWJ1ZworICByZW0gUGVyZm9ybSAzMi1iaXQgRGVidWcgQnVpbGQKKworICBjYWxsIDpidWlsZCBEZWJ1ZyBXaW4zMgorICBpZiBlcnJvcmxldmVsIDEgZ290byBlcnJvcgorCisgIGNhbGwgOmJ1aWxkICJETEwgRGVidWciIFdpbjMyCisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgaWYgIiVCVUlMRF9DT05GSUclIiA9PSAiZGVidWciIGdvdG8gc3VjY2VzcworCis6eDg2cmVsZWFzZQorICByZW0gUGVyZm9ybSAzMi1iaXQgUmVsZWFzZSBCdWlsZAorCisgIGNhbGwgOmJ1aWxkIFJlbGVhc2UgV2luMzIKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBjYWxsIDpidWlsZCAiRExMIFJlbGVhc2UiIFdpbjMyCisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgZ290byBzdWNjZXNzCisKKzpidWlsZAorICByZW0gVGhpcyBmdW5jdGlvbiBidWlsZHMgd29sZlNTTC4KKyAgcmVtIFVzYWdlOiBDQUxMIDpidWlsZCA8Y29uZmlndXJhdGlvbj4gPHBsYXRmb3JtPgorICByZW0gVGhlIGN1cnJlbnQgZGlyZWN0b3J5IG11c3QgYmUgdGhlIHdvbGZTU0wgZGlyZWN0b3J5LgorICByZW0gVlMgQ29uZmlndXJhdGlvbjogRGVidWcsIFJlbGVhc2UsIERMTCBEZWJ1ZyBvciBETEwgUmVsZWFzZS4KKyAgcmVtIFZTIFBsYXRmb3JtOiBXaW4zMiBvciB4NjQuCisgIHJlbSBSZXR1cm5zOiAxIG9uIGZhaWwsIDAgb24gc3VjY2Vzcy4KKyAgcmVtIEFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSBzaG91bGQgYmUgc2hvd24gYmVmb3JlIGFueSByZXR1cm4uCisgIHNldGxvY2FsCisgIHNldCBNU0JVSUxEX0NPTkZJRz0lfjEKKyAgc2V0IE1TQlVJTERfUExBVEZPUk09JX4yCisKKyAgaWYgbm90IGV4aXN0IHdvbGZzc2w2NC5zbG4gKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogYnVpbGQ6IHdvbGZzc2w2NC5zbG4gbm90IGZvdW5kIGluICIlQ0QlIgorICAgIGV4aXQgL2IgMQorICApCisKKyAgcmVtIE9VVERJUiBpc24ndCBhIGZ1bGwgcGF0aCwgb25seSByZWxhdGl2ZS4gTVNCVUlMRF9PVVRESVIgbXVzdCBiZSBmdWxsIGFuZAorICByZW0gbm90IGhhdmUgdHJhaWxpbmcgYmFja3NsYXNoZXMsIHdoaWNoIGFyZSBoYW5kbGVkIGxhdGVyLgorICBpZiAiJU1TQlVJTERfQ09ORklHJSIgPT0gIkRlYnVnIiAoCisgICAgc2V0ICJNU0JVSUxEX09VVERJUj0lQ0QlXCVPVVRESVIlXExJQiBEZWJ1ZyIKKyAgKSBlbHNlIGlmICIlTVNCVUlMRF9DT05GSUclIiA9PSAiUmVsZWFzZSIgKAorICAgIHNldCAiTVNCVUlMRF9PVVRESVI9JUNEJVwlT1VURElSJVxMSUIgUmVsZWFzZSIKKyAgKSBlbHNlIGlmICIlTVNCVUlMRF9DT05GSUclIiA9PSAiRExMIERlYnVnIiAoCisgICAgc2V0ICJNU0JVSUxEX09VVERJUj0lQ0QlXCVPVVRESVIlXERMTCBEZWJ1ZyIKKyAgKSBlbHNlIGlmICIlTVNCVUlMRF9DT05GSUclIiA9PSAiRExMIFJlbGVhc2UiICgKKyAgICBzZXQgIk1TQlVJTERfT1VURElSPSVDRCVcJU9VVERJUiVcRExMIFJlbGVhc2UiCisgICkgZWxzZSAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBidWlsZDogQ29uZmlndXJhdGlvbiBub3QgcmVjb2duaXplZC4KKyAgICBleGl0IC9iIDEKKyAgKQorCisgIGlmIG5vdCAiJU1TQlVJTERfUExBVEZPUk0lIiA9PSAiV2luMzIiIGlmIG5vdCAiJU1TQlVJTERfUExBVEZPUk0lIiA9PSAieDY0IiAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBidWlsZDogUGxhdGZvcm0gbm90IHJlY29nbml6ZWQuCisgICAgZXhpdCAvYiAxCisgICkKKworICBjb3B5IC92IC95ICIlfmRwMFx3b2xmc3NsX29wdGlvbnMuaCIgLlxjeWFzc2xcb3B0aW9ucy5oCisgIGlmICVFUlJPUkxFVkVMJSBuZXEgMCAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBidWlsZDogQ291bGRuJ3QgcmVwbGFjZSAuXGN5YXNzbFxvcHRpb25zLmgKKyAgICBleGl0IC9iIDEKKyAgKQorCisgIGNvcHkgL3YgL3kgIiV+ZHAwXHdvbGZzc2xfb3B0aW9ucy5oIiAuXHdvbGZzc2xcb3B0aW9ucy5oCisgIGlmICVFUlJPUkxFVkVMJSBuZXEgMCAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBidWlsZDogQ291bGRuJ3QgcmVwbGFjZSAuXHdvbGZzc2xcb3B0aW9ucy5oCisgICAgZXhpdCAvYiAxCisgICkKKworICByZW0gRXh0cmEgdHJhaWxpbmcgXCBpbiBEaXJzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHRoaW5rcyBhIHF1b3RlIGlzIGVzY2FwZWQKKyAgbXNidWlsZCB3b2xmc3NsNjQuc2xuIF4KKyAgICAtcDpDdXN0b21BZnRlck1pY3Jvc29mdENvbW1vblRhcmdldHM9IiV+ZHAwXHdvbGZzc2xfb3ZlcnJpZGUucHJvcHMiIF4KKyAgICAtcDpDb25maWd1cmF0aW9uPSIlTVNCVUlMRF9DT05GSUclIiBeCisgICAgLXA6UGxhdGZvcm09IiVNU0JVSUxEX1BMQVRGT1JNJSIgXgorICAgIC1wOlBsYXRmb3JtVG9vbHNldD0iJVZDX1RPT0xTRVQlIiBeCisgICAgLXA6T3V0RGlyPSIlTVNCVUlMRF9PVVRESVIlXFwiIF4KKyAgICAtcDpJbnREaXI9IiVNU0JVSUxEX09VVERJUiVcb2JqXFwiCisKKyAgaWYgJUVSUk9STEVWRUwlIG5lcSAwICgKKyAgICBlY2hvLgorICAgIGVjaG8gRXJyb3I6IEZhaWxlZCBidWlsZGluZyB3b2xmU1NMICVNU0JVSUxEX0NPTkZJRyVefCVNU0JVSUxEX1BMQVRGT1JNJS4KKyAgICBleGl0IC9iIDEKKyAgKQorCisgIHJlbSBGb3IgdGVzdHMgdG8gcnVuIHByb3Blcmx5IHRoZSB3b2xmU1NMIGRpcmVjdG9yeSBtdXN0IHJlbWFpbiB0aGUgY3VycmVudC4KKyAgc2V0ICJQQVRIPSVNU0JVSUxEX09VVERJUiU7JVBBVEglIgorICAiJU1TQlVJTERfT1VURElSJVx0ZXN0c3VpdGUuZXhlIgorCisgIGlmICVFUlJPUkxFVkVMJSBuZXEgMCAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBGYWlsZWQgdGVzdGluZyB3b2xmU1NMICVNU0JVSUxEX0NPTkZJRyVefCVNU0JVSUxEX1BMQVRGT1JNJS4KKyAgICBleGl0IC9iIDEKKyAgKQorCisgIGVjaG8uCisgIGVjaG8gU3VjY2VzczogQnVpbHQgYW5kIHRlc3RlZCB3b2xmU1NMICVNU0JVSUxEX0NPTkZJRyVefCVNU0JVSUxEX1BMQVRGT1JNJS4KKyAgZWNoby4KKyAgZWNoby4KKyAgcmVtIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGV4cG9ydCBvdXIgbG9jYWwgdmFyaWFibGVzIGJhY2sgdG8gdGhlIGNhbGxlci4KKyAgZW5kbG9jYWwgJiBzZXQgU1VDQ0VTU0ZVTF9CVUlMRFM9IiVNU0JVSUxEX0NPTkZJRyV8JU1TQlVJTERfUExBVEZPUk0lIiBeCisgICAgJVNVQ0NFU1NGVUxfQlVJTERTJQorICBleGl0IC9iIDAKKworOnN5bnRheAorICByZW0gRGlzcGxheSB0aGUgaGVscAorICBlY2hvLgorICBlY2hvIFVzYWdlOiBidWlsZC13b2xmc3NsIF48Y29tcGlsZXJePiBePHBsYXRmb3JtXj4gW2NvbmZpZ3VyYXRpb25dIFtkaXJlY3RvcnldCisgIGVjaG8uCisgIGVjaG8gQ29tcGlsZXI6CisgIGVjaG8uCisgIGVjaG8gdmMxMCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMAorICBlY2hvIHZjMTEgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTIKKyAgZWNobyB2YzEyICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEzCisgIGVjaG8gdmMxNCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxNQorICBlY2hvLgorICBlY2hvIFBsYXRmb3JtOgorICBlY2hvLgorICBlY2hvIHg4NiAgICAgICAtIFBlcmZvcm0gYSAzMi1iaXQgYnVpbGQKKyAgZWNobyB4NjQgICAgICAgLSBQZXJmb3JtIGEgNjQtYml0IGJ1aWxkCisgIGVjaG8uCisgIGVjaG8gQ29uZmlndXJhdGlvbjoKKyAgZWNoby4KKyAgZWNobyBkZWJ1ZyAgICAgLSBQZXJmb3JtIGEgZGVidWcgYnVpbGQKKyAgZWNobyByZWxlYXNlICAgLSBQZXJmb3JtIGEgcmVsZWFzZSBidWlsZAorICBlY2hvLgorICBlY2hvIE90aGVyOgorICBlY2hvLgorICBlY2hvIGRpcmVjdG9yeSAtIFNwZWNpZmllcyB0aGUgd29sZlNTTCBzb3VyY2UgZGlyZWN0b3J5CisgIGdvdG8gZXJyb3IKKworOnVua25vd24KKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5rbm93biBhcmd1bWVudCAnJTEnCisgIGdvdG8gZXJyb3IKKworOm5vZG9zCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IE9ubHkgYSBXaW5kb3dzIE5UIGJhc2VkIE9wZXJhdGluZyBTeXN0ZW0gaXMgc3VwcG9ydGVkCisgIGdvdG8gZXJyb3IKKworOm5vcGYKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogQ2Fubm90IG9idGFpbiB0aGUgZGlyZWN0b3J5IGZvciBQcm9ncmFtIEZpbGVzCisgIGdvdG8gZXJyb3IKKworOm5vdmMKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogJVZDX0RFU0MlIGlzIG5vdCBpbnN0YWxsZWQKKyAgZ290byBlcnJvcgorCis6bm94NjQKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogJVZDX0RFU0MlIGRvZXMgbm90IHN1cHBvcnQgNjQtYml0IGJ1aWxkcworICBnb3RvIGVycm9yCisKKzpub3dvbGZzc2wKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogQ2Fubm90IGxvY2F0ZSB3b2xmU1NMIHNvdXJjZSBkaXJlY3RvcnksIGV4cGVjdGVkICIlU1RBUlRfRElSJSIKKyAgZ290byBlcnJvcgorCis6ZXJyb3IKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICBleGl0IC9CIDEKKworOnN1Y2Nlc3MKKyAgaWYgZGVmaW5lZCBTVUNDRVNTRlVMX0JVSUxEUyAoCisgICAgZWNoby4KKyAgICBlY2hvLgorICAgIGVjaG8gQnVpbGQgY29tcGxldGUuCisgICAgZWNoby4KKyAgICBlY2hvIFRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgd2VyZSBidWlsdCBhbmQgdGVzdGVkIHN1Y2Nlc3NmdWxseToKKyAgICBlY2hvLgorICAgIGVjaG8gJVNVQ0NFU1NGVUxfQlVJTERTJQorICAgIGVjaG8uCisgICkKKyAgY2QgJVNBVkVEX1BBVEglCisgIGVuZGxvY2FsCisgIGV4aXQgL0IgMApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvY2hlY2tzcmMuYmF0IGIvcHJvamVjdHMvY2hlY2tzcmMuYmF0CmluZGV4IDhhMmY2M2EuLjVjODNhYWIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL2NoZWNrc3JjLmJhdAorKysgYi9wcm9qZWN0cy9jaGVja3NyYy5iYXQKQEAgLTYsMTEgKzYsMTEgQEAKIHJlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiByZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIHJlbSAqCi1yZW0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE1LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KK3JlbSAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgogcmVtICoKIHJlbSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiByZW0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1yZW0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiByZW0gKgogcmVtICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiByZW0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDQ0ICsyNCwxNTEgQEAKIDpiZWdpbgogICByZW0gQ2hlY2sgd2UgYXJlIHJ1bm5pbmcgb24gYSBXaW5kb3dzIE5UIGRlcml2ZWQgT1MKICAgaWYgbm90ICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBub2RvcwotICBzZXRsb2NhbAogCi0gIHJlbSBEaXNwbGF5IHRoZSBoZWxwCi0gIGlmIC9pICIlfjEiID09ICItPyIgZ290byBzeW50YXgKLSAgaWYgL2kgIiV+MSIgPT0gIi1oIiBnb3RvIHN5bnRheAotICBpZiAvaSAiJX4xIiA9PSAiLWhlbHAiIGdvdG8gc3ludGF4CisgIHJlbSBTZXQgb3VyIHZhcmlhYmxlcworICBzZXRsb2NhbAorICBzZXQgQ0hFQ0tfTElCPVRSVUUKKyAgc2V0IENIRUNLX1NSQz1UUlVFCisgIHNldCBDSEVDS19URVNUUz1UUlVFCisgIHNldCBDSEVDS19FWEFNUExFUz1UUlVFCisKKzpwYXJzZUFyZ3MKKyAgaWYgIiV+MSIgPT0gIiIgZ290byBwcmVyZXF1aXNpdGVzCisKKyAgaWYgL2kgIiV+MSIgPT0gIi0/IiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaCIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWhlbHAiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gImxpYiIgKAorICAgIHNldCBDSEVDS19MSUI9VFJVRQorICAgIHNldCBDSEVDS19TUkM9RkFMU0UKKyAgICBzZXQgQ0hFQ0tfVEVTVFM9RkFMU0UKKyAgICBzZXQgQ0hFQ0tfRVhBTVBMRVM9RkFMU0UKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJzcmMiICgKKyAgICBzZXQgQ0hFQ0tfTElCPUZBTFNFCisgICAgc2V0IENIRUNLX1NSQz1UUlVFCisgICAgc2V0IENIRUNLX1RFU1RTPUZBTFNFCisgICAgc2V0IENIRUNLX0VYQU1QTEVTPUZBTFNFCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAidGVzdHMiICgKKyAgICBzZXQgQ0hFQ0tfTElCPUZBTFNFCisgICAgc2V0IENIRUNLX1NSQz1GQUxTRQorICAgIHNldCBDSEVDS19URVNUUz1UUlVFCisgICAgc2V0IENIRUNLX0VYQU1QTEVTPUZBTFNFCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiZXhhbXBsZXMiICgKKyAgICBzZXQgQ0hFQ0tfTElCPUZBTFNFCisgICAgc2V0IENIRUNLX1NSQz1GQUxTRQorICAgIHNldCBDSEVDS19URVNUUz1GQUxTRQorICAgIHNldCBDSEVDS19FWEFNUExFUz1UUlVFCisgICkgZWxzZSAoCisgICAgaWYgbm90IGRlZmluZWQgU1JDX0RJUiAoCisgICAgICBzZXQgU1JDX0RJUj0lfjElCisgICAgKSBlbHNlICgKKyAgICAgIGdvdG8gdW5rbm93bgorICAgICkKKyAgKQorCisgIHNoaWZ0ICYgZ290byBwYXJzZUFyZ3MKIAogOnByZXJlcXVpc2l0ZXMKLSAgcmVtIENoZWNrIHdlIGhhdmUgUGVybCBpbnN0YWxsZWQKKyAgcmVtIENoZWNrIHdlIGhhdmUgUGVybCBpbiBvdXIgcGF0aAogICBlY2hvICVQQVRIJSB8IGZpbmRzdHIgL0kgL0M6IlxQZXJsIiAxPm51bAogICBpZiBlcnJvcmxldmVsIDEgKAotICAgIGlmIG5vdCBleGlzdCAiJVN5c3RlbURyaXZlJVxQZXJsIiAoCi0gICAgICBpZiBub3QgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybDY0IiBnb3RvIG5vcGVybAorICAgIHJlbSBJdCBpc24ndCBzbyBjaGVjayB3ZSBoYXZlIGl0IGluc3RhbGxlZCBhbmQgc2V0IHRoZSBwYXRoIGlmIGl0IGlzCisgICAgaWYgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybCIgKAorICAgICAgc2V0ICJQQVRIPSVTeXN0ZW1Ecml2ZSVcUGVybFxiaW47JVBBVEglIgorICAgICkgZWxzZSAoCisgICAgICBpZiBleGlzdCAiJVN5c3RlbURyaXZlJVxQZXJsNjQiICgKKyAgICAgICAgc2V0ICJQQVRIPSVTeXN0ZW1Ecml2ZSVcUGVybDY0XGJpbjslUEFUSCUiCisgICAgICApIGVsc2UgKAorICAgICAgICBnb3RvIG5vcGVybAorICAgICAgKQogICAgICkKICAgKQogCiA6Y29uZmlndXJlCi0gIGlmICIlMSIgPT0gIiIgc2V0IFNSQ19ESVI9Li4KLSAgaWYgbm90ICIlMSIgPT0gIiIgc2V0IFNSQ19ESVI9JX4xJQorICBpZiAiJVNSQ19ESVIlIiA9PSAiIiBzZXQgU1JDX0RJUj0uLgogICBpZiBub3QgZXhpc3QgIiVTUkNfRElSJSIgZ290byBub3NyYwogCiA6c3RhcnQKLSAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxzcmNcKi5jLioiIC9iJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxzcmMiIC1XdG9vbF9odWdlaGVscC5jICIlJWkiCi0gIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcc3JjXCouaC4qIiAvYicpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcc3JjIiAiJSVpIgotICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlwqLmMuKiIgL2InKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXGxpYiIgIiUlaSIKLSAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcKi5oLioiIC9iJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWIiIC1XY3VybF9jb25maWcuaC5jbWFrZSAiJSVpIgotICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlx2dGxzXCouYy4qIiAvYicpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZ0bHMiICIlJWkiCi0gIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXHZ0bHNcKi5oLioiIC9iJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWJcdnRscyIgIiUlaSIKKyAgaWYgIiVDSEVDS19TUkMlIiA9PSAiVFJVRSIgKAorICAgIHJlbSBDaGVjayB0aGUgc3JjIGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVxzcmMgKAorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxzcmNcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcc3JjIiAtV3Rvb2xfaHVnZWhlbHAuYyAiJSVpIgorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxzcmNcKi5oLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcc3JjIiAiJSVpIgorICAgICkKKyAgKQorCisgIGlmICIlQ0hFQ0tfTElCJSIgPT0gIlRSVUUiICgKKyAgICByZW0gQ2hlY2sgdGhlIGxpYiBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcbGliICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXCouYy4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXGxpYiIgIiUlaSIKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXCouaC4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXGxpYiIgLVdjdXJsX2NvbmZpZy5oLmNtYWtlICIlJWkiCisgICAgKQorCisgICAgcmVtIENoZWNrIHRoZSBsaWJcdmF1dGggZGlyZWN0b3J5CisgICAgaWYgZXhpc3QgJVNSQ19ESVIlXGxpYlx2YXV0aCAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlx2YXV0aFwqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWJcdmF1dGgiICIlJWkiCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlx2YXV0aFwqLmguKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWJcdmF1dGgiICIlJWkiCisgICAgKQorCisgICAgcmVtIENoZWNrIHRoZSBsaWJcdnRscyBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcbGliXHZ0bHMgKAorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcdnRsc1wqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWJcdnRscyIgIiUlaSIKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXHZ0bHNcKi5oLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZ0bHMiICIlJWkiCisgICAgKQorICApCisKKyAgaWYgIiVDSEVDS19URVNUUyUiID09ICJUUlVFIiAoCisgICAgcmVtIENoZWNrIHRoZSB0ZXN0c1xsaWJ0ZXN0IGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVx0ZXN0c1xsaWJ0ZXN0ICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcdGVzdHNcbGlidGVzdFwqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1xsaWJ0ZXN0IiAiJSVpIgorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVx0ZXN0c1xsaWJ0ZXN0XCouaC4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXHRlc3RzXGxpYnRlc3QiICIlJWkiCisgICAgKQorCisgICAgcmVtIENoZWNrIHRoZSB0ZXN0c1x1bml0IGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVx0ZXN0c1x1bml0ICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcdGVzdHNcdW5pdFwqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1x1bml0IiAiJSVpIgorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVx0ZXN0c1x1bml0XCouaC4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXHRlc3RzXHVuaXQiICIlJWkiCisgICAgKQorCisgICAgcmVtIENoZWNrIHRoZSB0ZXN0c1xzZXJ2ZXIgZGlyZWN0b3J5CisgICAgaWYgZXhpc3QgJVNSQ19ESVIlXHRlc3RzXHNlcnZlciAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXHRlc3RzXHNlcnZlclwqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1xzZXJ2ZXIiICIlJWkiCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXHRlc3RzXHNlcnZlclwqLmguKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1xzZXJ2ZXIiICIlJWkiCisgICAgKQorICApCisKKyAgaWYgIiVDSEVDS19FWEFNUExFUyUiID09ICJUUlVFIiAoCisgICAgcmVtIENoZWNrIHRoZSBkb2NzXGV4YW1wbGVzIGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVxkb2NzXGV4YW1wbGVzICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcZG9jc1xleGFtcGxlc1wqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxkb2NzXGV4YW1wbGVzIiAiJSVpIgorICAgICkKKyAgKQorCiAgIGdvdG8gc3VjY2VzcwogCiA6c3ludGF4CiAgIHJlbSBEaXNwbGF5IHRoZSBoZWxwCiAgIGVjaG8uCi0gIGVjaG8gVXNhZ2U6IGNoZWNrc3JjIFtkaXJlY3RvcnldCisgIGVjaG8gVXNhZ2U6IGNoZWNrc3JjIFt3aGF0XSBbZGlyZWN0b3J5XQorICBlY2hvLgorICBlY2hvIFdoYXQgdG8gc2NhbjoKKyAgZWNoby4KKyAgZWNobyBsaWIgICAgICAgLSBTY2FuIHRoZSBsaWJjdXJsIHNvdXJjZQorICBlY2hvIHNyYyAgICAgICAtIFNjYW4gdGhlIGNvbW1hbmQtbGluZSB0b29sIHNvdXJjZQorICBlY2hvIHRlc3RzICAgICAtIFNjYW4gdGhlIGxpYnJhcnkgdGVzdHMgYW5kIHVuaXQgdGVzdHMKKyAgZWNobyBleGFtcGxlcyAgLSBTY2FuIHRoZSBleGFtcGxlcwogICBlY2hvLgogICBlY2hvIGRpcmVjdG9yeSAtIFNwZWNpZmllcyB0aGUgY3VybCBzb3VyY2UgZGlyZWN0b3J5CiAgIGdvdG8gc3VjY2VzcwogCis6dW5rbm93bgorICBlY2hvLgorICBlY2hvIEVycm9yOiBVbmtub3duIGFyZ3VtZW50ICclMScKKyAgZ290byBlcnJvcgorCiA6bm9kb3MKICAgZWNoby4KICAgZWNobyBFcnJvcjogT25seSBhIFdpbmRvd3MgTlQgYmFzZWQgT3BlcmF0aW5nIFN5c3RlbSBpcyBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL2dlbmVyYXRlLmJhdCBiL3Byb2plY3RzL2dlbmVyYXRlLmJhdAppbmRleCAyYWEwNGRlLi44MjA5YTVkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9nZW5lcmF0ZS5iYXQKKysrIGIvcHJvamVjdHMvZ2VuZXJhdGUuYmF0CkBAIC0xMCw3ICsxMCw3IEBACiByZW0gKgogcmVtICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIHJlbSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLXJlbSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCityZW0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIHJlbSAqCiByZW0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIHJlbSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjEsNDkgKzIxLDMwIEBACiByZW0gKgogcmVtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1yZW0gTk9URVMKLXJlbQotcmVtIERvIG5vdCBzZXQgJUVSUk9STEVWRUwlIHRvIGFueXRoaW5nLiAlRVJST1JMRVZFTCUgaXMgYSBzcGVjaWFsIHZhcmlhYmxlCi1yZW0gdGhhdCBvbmx5IGNvbnRhaW5zIGVycm9ybGV2ZWwgd2hlbiAlRVJST1JMRVZFTCUgaXMgbm90IHNldC4gU2FtZSBmb3IgJUNEJS4KLXJlbSBodHRwOi8vYmxvZ3MubXNkbi5jb20vYi9vbGRuZXd0aGluZy9hcmNoaXZlLzIwMDgvMDkvMjYvODk2NTc1NS5hc3B4Ci1yZW0gSWYgeW91IG5lZWQgdG8gc2V0IHRoZSBlcnJvcmxldmVsIGRvIHRoaXMgaW5zdGVhZDogQ0FMTCA6c2V0ZXJyIFsjXQotCiA6YmVnaW4KICAgcmVtIENoZWNrIHdlIGFyZSBydW5uaW5nIG9uIGEgV2luZG93cyBOVCBkZXJpdmVkIE9TCiAgIGlmIG5vdCAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGdvdG8gbm9kb3MKIAorICByZW0gU2V0IG91ciB2YXJpYWJsZXMKKyAgc2V0bG9jYWwgRU5BQkxFRVhURU5TSU9OUworICBzZXQgVkVSU0lPTj1BTEwKKyAgc2V0IE1PREU9R0VORVJBVEUKKwogICByZW0gQ2hlY2sgd2UgYXJlIG5vdCBydW5uaW5nIG9uIGEgbmV0d29yayBkcml2ZQogICBpZiAiJX5kMC4iPT0iXFwuIiBnb3RvIG5vbmV0ZHJ2CiAKICAgcmVtIFN3aXRjaCB0byB0aGlzIGJhdGNoIGZpbGUncyBkaXJlY3RvcnkKICAgY2QgL2QgIiV+MFwuLiIgMT5OVUwgMj4mMQogCi0gIHJlbSBTZXQgb3VyIHZhcmlhYmxlcwotICBzZXRsb2NhbCBFTkFCTEVFWFRFTlNJT05TCi0gIHNldCBWRVJTSU9OPUFMTAotICBzZXQgTU9ERT1HRU5FUkFURQotCi0gIHJlbSBEZXRlY3QgcHJvZ3JhbXMuIEhBVkVfPFBST0dOQU1FPgotICByZW0gV2hlbiBub3QgZm91bmQgdGhlIHZhcmlhYmxlIGlzIHNldCB1bmRlZmluZWQuIFRoZSB1bmRlZmluZWQgcGF0dGVybgotICByZW0gYWxsb3dzIGZvciBzdGF0ZW1lbnRzIGxpa2UgImlmIG5vdCBkZWZpbmVkIEhBVkVfUEVSTCAoY29tbWFuZCkiCi0gIGdyb2ZmIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKLSAgaWYgJUVSUk9STEVWRUwlIEVRVSAwIChzZXQgSEFWRV9HUk9GRj1ZKSBlbHNlIChzZXQgSEFWRV9HUk9GRj0pCi0gIG5yb2ZmIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKLSAgaWYgJUVSUk9STEVWRUwlIEVRVSAwIChzZXQgSEFWRV9OUk9GRj1ZKSBlbHNlIChzZXQgSEFWRV9OUk9GRj0pCi0gIHBlcmwgLS12ZXJzaW9uIDxOVUwgMT5OVUwgMj4mMQotICBpZiAlRVJST1JMRVZFTCUgRVFVIDAgKHNldCBIQVZFX1BFUkw9WSkgZWxzZSAoc2V0IEhBVkVfUEVSTD0pCi0gIGd6aXAgLS12ZXJzaW9uIDxOVUwgMT5OVUwgMj4mMQotICBpZiAlRVJST1JMRVZFTCUgRVFVIDAgKHNldCBIQVZFX0daSVA9WSkgZWxzZSAoc2V0IEhBVkVfR1pJUD0pCi0KLSAgcmVtIERpc3BsYXkgdGhlIGhlbHAKLSAgaWYgL2kgIiV+MSIgPT0gIi0/IiBnb3RvIHN5bnRheAotICBpZiAvaSAiJX4xIiA9PSAiLWgiIGdvdG8gc3ludGF4Ci0gIGlmIC9pICIlfjEiID09ICItaGVscCIgZ290byBzeW50YXgKKyAgcmVtIENoZWNrIHdlIGFyZSBydW5uaW5nIGZyb20gYSBjdXJsIGdpdCByZXBvc2l0b3J5CisgIGlmIG5vdCBleGlzdCAuLlxHSVQtSU5GTyBnb3RvIG5vcmVwbwogCiA6cGFyc2VBcmdzCiAgIGlmICIlfjEiID09ICIiIGdvdG8gc3RhcnQKIAotICBpZiAvaSAiJX4xIiA9PSAidmM2IiAoCisgIGlmIC9pICIlfjEiID09ICJwcmUiICgKKyAgICBzZXQgVkVSU0lPTj1QUkUKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzYiICgKICAgICBzZXQgVkVSU0lPTj1WQzYKICAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzciICgKICAgICBzZXQgVkVSU0lPTj1WQzcKQEAgLTc5LDI3ICs2MCwzMyBAQAogICAgIHNldCBWRVJTSU9OPVZDMTEKICAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzEyIiAoCiAgICAgc2V0IFZFUlNJT049VkMxMgorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInZjMTQiICgKKyAgICBzZXQgVkVSU0lPTj1WQzE0CiAgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWNsZWFuIiAoCiAgICAgc2V0IE1PREU9Q0xFQU4KKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItPyIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWgiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiAoCisgICAgZ290byBzeW50YXgKICAgKSBlbHNlICgKICAgICBnb3RvIHVua25vd24KICAgKQorCiAgIHNoaWZ0ICYgZ290byBwYXJzZUFyZ3MKICAKIDpzdGFydAotICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKLSAgICBlY2hvLgotICAgIGVjaG8gR2VuZXJhdGluZyBwcmVyZXF1aXNpdGUgZmlsZXMKLSAgICBDQUxMIDpnZW5fY3VybGJ1aWxkCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKLSAgICBDQUxMIDpnZW5faHVnZWhlbHAKLSAgICBpZiBlcnJvcmxldmVsIDEgZ290byBlcnJvcgotICApIGVsc2UgKAotICAgIGVjaG8uCi0gICAgZWNobyBSZW1vdmluZyBwcmVyZXF1aXNpdGUgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiAuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKLSAgICBjYWxsIDpjbGVhbiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCisgIGlmIGV4aXN0IC4uXGJ1aWxkY29uZi5iYXQgKAorICAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAorICAgICAgY2FsbCAuLlxidWlsZGNvbmYKKyAgICApIGVsc2UgaWYgIiVWRVJTSU9OJSIgPT0gIlBSRSIgKAorICAgICAgY2FsbCAuLlxidWlsZGNvbmYgLWNsZWFuCisgICAgKSBlbHNlIGlmICIlVkVSU0lPTiUiID09ICJBTEwiICgKKyAgICAgIGNhbGwgLi5cYnVpbGRjb25mIC1jbGVhbgorICAgICkKICAgKQorICBpZiAiJVZFUlNJT04lIiA9PSAiUFJFIiBnb3RvIHN1Y2Nlc3MKICAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDNiIgZ290byB2YzYKICAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDNyIgZ290byB2YzcKICAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDNy4xIiBnb3RvIHZjNzEKQEAgLTEwOCwxNyArOTUsMTggQEAKICAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDMTAiIGdvdG8gdmMxMAogICBpZiAiJVZFUlNJT04lIiA9PSAiVkMxMSIgZ290byB2YzExCiAgIGlmICIlVkVSU0lPTiUiID09ICJWQzEyIiBnb3RvIHZjMTIKKyAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDMTQiIGdvdG8gdmMxNAogCiA6dmM2CiAgIGVjaG8uCiAKICAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCiAgICAgZWNobyBHZW5lcmF0aW5nIFZDNiBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Z2VuZXJhdGUgZHNwIFdpbmRvd3NcVkM2XHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzZcc3JjXGN1cmxzcmMuZHNwCisgICAgY2FsbCA6Z2VuZXJhdGUgZHNwIFdpbmRvd3NcVkM2XHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzZcc3JjXGN1cmwuZHNwCiAgICAgY2FsbCA6Z2VuZXJhdGUgZHNwIFdpbmRvd3NcVkM2XGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzZcbGliXGxpYmN1cmwuZHNwCiAgICkgZWxzZSAoCiAgICAgZWNobyBSZW1vdmluZyBWQzYgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM2XHNyY1xjdXJsc3JjLmRzcAorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM2XHNyY1xjdXJsLmRzcAogICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM2XGxpYlxsaWJjdXJsLmRzcAogICApCiAKQEAgLTEyOSwxMSArMTE3LDExIEBACiAKICAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCiAgICAgZWNobyBHZW5lcmF0aW5nIFZDNyBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMSBXaW5kb3dzXFZDN1xzcmNcY3VybHNyYy50bXBsIFdpbmRvd3NcVkM3XHNyY1xjdXJsc3JjLnZjcHJvagorICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajEgV2luZG93c1xWQzdcc3JjXGN1cmwudG1wbCBXaW5kb3dzXFZDN1xzcmNcY3VybC52Y3Byb2oKICAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oxIFdpbmRvd3NcVkM3XGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzdcbGliXGxpYmN1cmwudmNwcm9qCiAgICkgZWxzZSAoCiAgICAgZWNobyBSZW1vdmluZyBWQzcgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM3XHNyY1xjdXJsc3JjLnZjcHJvagorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM3XHNyY1xjdXJsLnZjcHJvagogICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM3XGxpYlxsaWJjdXJsLnZjcHJvagogICApCiAKQEAgLTE0NCwxMSArMTMyLDExIEBACiAKICAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCiAgICAgZWNobyBHZW5lcmF0aW5nIFZDNy4xIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oxIFdpbmRvd3NcVkM3LjFcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDNy4xXHNyY1xjdXJsc3JjLnZjcHJvagorICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajEgV2luZG93c1xWQzcuMVxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkM3LjFcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMSBXaW5kb3dzXFZDNy4xXGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzcuMVxsaWJcbGliY3VybC52Y3Byb2oKICAgKSBlbHNlICgKICAgICBlY2hvIFJlbW92aW5nIFZDNy4xIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDNy4xXHNyY1xjdXJsc3JjLnZjcHJvagorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM3LjFcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzcuMVxsaWJcbGliY3VybC52Y3Byb2oKICAgKQogCkBAIC0xNTksMTEgKzE0NywxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzggcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajIgV2luZG93c1xWQzhcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDOFxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oyIFdpbmRvd3NcVkM4XHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzhcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMiBXaW5kb3dzXFZDOFxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkM4XGxpYlxsaWJjdXJsLnZjcHJvagogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkM4IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOFxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOFxzcmNcY3VybC52Y3Byb2oKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOFxsaWJcbGliY3VybC52Y3Byb2oKICAgKQogCkBAIC0xNzQsMTEgKzE2MiwxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzkgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajIgV2luZG93c1xWQzlcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDOVxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oyIFdpbmRvd3NcVkM5XHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzlcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMiBXaW5kb3dzXFZDOVxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkM5XGxpYlxsaWJjdXJsLnZjcHJvagogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkM5IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOVxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOVxzcmNcY3VybC52Y3Byb2oKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDOVxsaWJcbGliY3VybC52Y3Byb2oKICAgKQogCkBAIC0xODksMTEgKzE3NywxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzEwIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMFxzcmNcY3VybHNyYy50bXBsIFdpbmRvd3NcVkMxMFxzcmNcY3VybHNyYy52Y3hwcm9qCisgICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTBcc3JjXGN1cmwudG1wbCBXaW5kb3dzXFZDMTBcc3JjXGN1cmwudmN4cHJvagogICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzEwXGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzEwXGxpYlxsaWJjdXJsLnZjeHByb2oKICAgKSBlbHNlICgKICAgICBlY2hvIFJlbW92aW5nIFZDMTAgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMFxzcmNcY3VybHNyYy52Y3hwcm9qCisgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzEwXHNyY1xjdXJsLnZjeHByb2oKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTBcbGliXGxpYmN1cmwudmN4cHJvagogICApCiAKQEAgLTIwNCwxMSArMTkyLDExIEBACiAKICAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCiAgICAgZWNobyBHZW5lcmF0aW5nIFZDMTEgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzExXHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzExXHNyY1xjdXJsc3JjLnZjeHByb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMVxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkMxMVxzcmNcY3VybC52Y3hwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTFcbGliXGxpYmN1cmwudG1wbCBXaW5kb3dzXFZDMTFcbGliXGxpYmN1cmwudmN4cHJvagogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkMxMSBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzExXHNyY1xjdXJsc3JjLnZjeHByb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTFcc3JjXGN1cmwudmN4cHJvagogICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMVxsaWJcbGliY3VybC52Y3hwcm9qCiAgICkKIApAQCAtMjE5LDI3ICsyMDcsNDIgQEAKIAogICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKICAgICBlY2hvIEdlbmVyYXRpbmcgVkMxMiBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTJcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDMTJcc3JjXGN1cmxzcmMudmN4cHJvagorICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzEyXHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzEyXHNyY1xjdXJsLnZjeHByb2oKICAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMlxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkMxMlxsaWJcbGliY3VybC52Y3hwcm9qCiAgICkgZWxzZSAoCiAgICAgZWNobyBSZW1vdmluZyBWQzEyIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTJcc3JjXGN1cmxzcmMudmN4cHJvagorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMlxzcmNcY3VybC52Y3hwcm9qCiAgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzEyXGxpYlxsaWJjdXJsLnZjeHByb2oKICAgKQogCisgIGlmIG5vdCAiJVZFUlNJT04lIiA9PSAiQUxMIiBnb3RvIHN1Y2Nlc3MKKworOnZjMTQKKyAgZWNoby4KKworICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKKyAgICBlY2hvIEdlbmVyYXRpbmcgVkMxNCBwcm9qZWN0IGZpbGVzCisgICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTRcc3JjXGN1cmwudG1wbCBXaW5kb3dzXFZDMTRcc3JjXGN1cmwudmN4cHJvagorICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzE0XGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzE0XGxpYlxsaWJjdXJsLnZjeHByb2oKKyAgKSBlbHNlICgKKyAgICBlY2hvIFJlbW92aW5nIFZDMTQgcHJvamVjdCBmaWxlcworICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxNFxzcmNcY3VybC52Y3hwcm9qCisgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzE0XGxpYlxsaWJjdXJsLnZjeHByb2oKKyAgKQorCiAgIGdvdG8gc3VjY2VzcwogCiByZW0gTWFpbiBnZW5lcmF0ZSBmdW5jdGlvbi4KIHJlbQogcmVtICUxIC0gUHJvamVjdCBUeXBlIChkc3AgZm9yIFZDNiwgdmNwcm9qMSBmb3IgVkM3IGFuZCBWQzcuMSwgdmNwcm9qMiBmb3IgVkM4IGFuZCBWQzkKLXJlbSAgICAgIG9yIHZjeHByb2ogZm9yIFZDMTAsIFZDMTEgYW5kIFZDMTIpCityZW0gICAgICBvciB2Y3hwcm9qIGZvciBWQzEwLCBWQzExLCBWQzEyIGFuZCBWQzE0KQogcmVtICUyIC0gSW5wdXQgdGVtcGxhdGUgZmlsZQogcmVtICUzIC0gT3V0cHV0IHByb2plY3QgZmlsZQogcmVtCiA6Z2VuZXJhdGUKICAgaWYgbm90IGV4aXN0ICUyICgKICAgICBlY2hvLgotICAgIGVjaG8gRXJyb3I6IENhbm5vdCBvcGVuICVDRCVcJTIKKyAgICBlY2hvIEVycm9yOiBDYW5ub3Qgb3BlbiAlMgogICAgIGV4aXQgL0IKICAgKQogCkBAIC0yOTYsNyArMjk5LDcgQEAKIHJlbSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSB4bWwgZWxlbWVudC4KIHJlbQogcmVtICUxIC0gUHJvamVjdCBUeXBlIChkc3AgZm9yIFZDNiwgdmNwcm9qMSBmb3IgVkM3IGFuZCBWQzcuMSwgdmNwcm9qMiBmb3IgVkM4IGFuZCBWQzkKLXJlbSAgICAgIG9yIHZjeHByb2ogZm9yIFZDMTAsIFZDMTEgYW5kIFZDMTIpCityZW0gICAgICBvciB2Y3hwcm9qIGZvciBWQzEwLCBWQzExLCBWQzEyIGFuZCBWQzE0KQogcmVtICUyIC0gRGlyZWN0b3J5IChzcmMsIGxpYiwgbGliXHZhdXRoIG9yIGxpYlx2dGxzKQogcmVtICUzIC0gU291cmNlIGZpbGVuYW1lCiByZW0gJTQgLSBPdXRwdXQgcHJvamVjdCBmaWxlCkBAIC0zNzUsNzMgKzM3OCwxNCBAQAogCiAgIGV4aXQgL0IKIAotcmVtIENBTEwgdGhpcyBmdW5jdGlvbiB0byBnZW5lcmF0ZSAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi1yZW0gUmV0dXJucyBleGl0IGNvZGUgMCBvbiBzdWNjZXNzIG9yIDEgb24gZmFpbHVyZS4KLTpnZW5faHVnZWhlbHAKLSAgc2V0bG9jYWwKLSAgc2V0IExDX0FMTD1DCi0gIHNldCBST0ZGQ01EPQotICBpZiBkZWZpbmVkIEhBVkVfUEVSTCAoCi0gICAgaWYgZGVmaW5lZCBIQVZFX0dST0ZGICgKLSAgICAgIHNldCBST0ZGQ01EPWdyb2ZmIC1tdHR5LWNoYXIgLVRhc2NpaSAtUC1jIC1tYW4KLSAgICApIGVsc2UgaWYgZGVmaW5lZCBIQVZFX05ST0ZGICgKLSAgICAgIHNldCBST0ZGQ01EPW5yb2ZmIC1jIC1UYXNjaWkgLW1hbgotICAgICkKLSAgKQotICBlY2hvICogJUNEJVwuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gIGVjaG8gI2luY2x1ZGUgInRvb2xfc2V0dXAuaCI+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgZWNobyAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIj4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgaWYgZGVmaW5lZCBST0ZGQ01EICgKLSAgICBpZiBkZWZpbmVkIEhBVkVfR1pJUCAoCi0gICAgICBlY2hvICNpZm5kZWYgSEFWRV9MSUJaPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgICkKLSAgICAlUk9GRkNNRCUgLi5cZG9jc1xjdXJsLjEgMj5OVUwgfCBwZXJsIC4uXHNyY1xta2hlbHAucGwgLi5cZG9jc1xNQU5VQUwgPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgIGlmIGRlZmluZWQgSEFWRV9HWklQICgKLSAgICAgIGVjaG8gI2Vsc2U+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgICAlUk9GRkNNRCUgLi5cZG9jc1xjdXJsLjEgMj5OVUwgfCBwZXJsIC4uXHNyY1xta2hlbHAucGwgLWMgLi5cZG9jc1xNQU5VQUwgPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgICAgZWNobyAjZW5kaWYgL14qIEhBVkVfTElCWiBeKi8+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgKQotICApIGVsc2UgKAotICAgIGVjaG8uCi0gICAgZWNobyBXYXJuaW5nOiBUaGUgY3VybCBtYW51YWwgY291bGQgbm90IGJlIGludGVncmF0ZWQgaW4gdGhlIHNvdXJjZS4gVGhpcyBtZWFucyB3aGVuCi0gICAgZWNobyB5b3UgYnVpbGQgY3VybCB0aGUgbWFudWFsIHdpbGwgbm90IGJlIGF2YWlsYWJsZSAoY3VybCAtLW1hbl4pLiBJbnRlZ3JhdGlvbiBvZgotICAgIGVjaG8gdGhlIG1hbnVhbCBpcyBub3QgcmVxdWlyZWQgYW5kIGEgc3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZQotICAgIGVjaG8gKGN1cmwgLS1oZWxwXikuIFRvIGludGVncmF0ZSB0aGUgbWFudWFsIHlvdXIgUEFUSCBpcyByZXF1aXJlZCB0byBoYXZlCi0gICAgZWNobyBncm9mZi9ucm9mZiwgcGVybCBhbmQgb3B0aW9uYWxseSBnemlwIGZvciBjb21wcmVzc2lvbi4KLSAgICBlY2hvLgotICAgIGVjaG8gdm9pZCBodWdlaGVscCh2b2lkXik+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgZWNobyAjaWZkZWYgVVNFX01BTlVBTD4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICBlY2hvIHsgZnB1dHMoImJ1aWx0LWluIG1hbnVhbCBub3QgaW5jbHVkZWRcbiIsIHN0ZG91dF4pOyB9Pj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgIGVjaG8gI2Vsc2U+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgZWNobyB7fT4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICBlY2hvICNlbmRpZj4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgKQotICBmaW5kc3RyICIvQzp2b2lkIGh1Z2VoZWxwKHZvaWQpIiAuLlxzcmNcdG9vbF9odWdlaGVscC5jIDE+TlVMIDI+JjEKLSAgaWYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIEVycm9yOiBVbmFibGUgdG8gZ2VuZXJhdGUgLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgIGV4aXQgL0IgMQotICApCi0gIGV4aXQgL0IgMAotCi1yZW0gQ0FMTCB0aGlzIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIC4uXGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaAotcmVtIFJldHVybnMgZXhpdCBjb2RlIDAgb24gc3VjY2VzcyBvciAxIG9uIGZhaWx1cmUuCi06Z2VuX2N1cmxidWlsZAotICBzZXRsb2NhbAotICBlY2hvICogJUNEJVwuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKLSAgY29weSAveSAuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmguZGlzdCAuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmggMT5OVUwKLSAgaWYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIEVycm9yOiBVbmFibGUgdG8gZ2VuZXJhdGUgLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oCi0gICAgZXhpdCAvQiAxCi0gICkKLSAgZXhpdCAvQiAwCi0KIDpzeW50YXgKICAgcmVtIERpc3BsYXkgdGhlIGhlbHAKICAgZWNoby4KLSAgZWNobyBVc2FnZTogZ2VuZXJhdGUgW2NvbXBpbGVyXSBbLWNsZWFuXQorICBlY2hvIFVzYWdlOiBnZW5lcmF0ZSBbd2hhdF0gWy1jbGVhbl0KICAgZWNoby4KLSAgZWNobyBDb21waWxlcjoKKyAgZWNobyBXaGF0IHRvIGdlbmVyYXRlOgogICBlY2hvLgorICBlY2hvIHByZSAgICAgICAtIFByZXJlcXVpc2l0ZXMgb25seQogICBlY2hvIHZjNiAgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDYKICAgZWNobyB2YzcgICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAuTkVUCiAgIGVjaG8gdmM3LjEgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gLk5FVCAyMDAzCkBAIC00NTAsNiArMzk0LDcgQEAKICAgZWNobyB2YzEwICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEwCiAgIGVjaG8gdmMxMSAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMgogICBlY2hvIHZjMTIgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTMKKyAgZWNobyB2YzE0ICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDE1CiAgIGVjaG8uCiAgIGVjaG8gLWNsZWFuICAgIC0gUmVtb3ZlcyB0aGUgcHJvamVjdCBmaWxlcwogICBnb3RvIGVycm9yCkBAIC00NjksNiArNDE0LDExIEBACiAgIGVjaG8gRXJyb3I6IFRoaXMgYmF0Y2ggZmlsZSBjYW5ub3QgcnVuIGZyb20gYSBuZXR3b3JrIGRyaXZlCiAgIGdvdG8gZXJyb3IKIAorOm5vcmVwbworICBlY2hvLgorICBlY2hvIEVycm9yOiBUaGlzIGJhdGNoIGZpbGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmcm9tIGEgY3VybCBnaXQgcmVwb3NpdG9yeQorICBnb3RvIGVycm9yCisKIDpzZXRlcnIKICAgcmVtIFNldCB0aGUgY2FsbGVyJ3MgZXJyb3JsZXZlbC4KICAgcmVtICUxW29wdF06IEVycm9ybGV2ZWwgYXMgaW50ZWdlci4KQEAgLTQ4Miw3ICs0MzIsNyBAQAogICBleGl0IC9iICVFWElUQ09ERSUKIAogOmVycm9yCi0gIGVuZGxvY2FsCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKICAgZXhpdCAvQiAxCiAKIDpzdWNjZXNzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93b2xmc3NsX29wdGlvbnMuaCBiL3Byb2plY3RzL3dvbGZzc2xfb3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NzUyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy93b2xmc3NsX29wdGlvbnMuaApAQCAtMCwwICsxLDE4NCBAQAorLyoKK0J5IGRlZmF1bHQgd29sZlNTTCBoYXMgYSB2ZXJ5IGNvbnNlcnZhdGl2ZSBjb25maWd1cmF0aW9uIHRoYXQgY2FuIHJlc3VsdCBpbgorY29ubmVjdGlvbnMgdG8gc2VydmVycyBmYWlsaW5nIGR1ZSB0byBjZXJ0aWZpY2F0ZSBvciBhbGdvcml0aG0gcHJvYmxlbXMuCitUbyByZW1lZHkgdGhpcyBpc3N1ZSBmb3IgbGliY3VybCBJJ3ZlIGdlbmVyYXRlZCB0aGlzIG9wdGlvbnMgZmlsZSB0aGF0CitidWlsZC13b2xmc3NsIHdpbGwgY29weSB0byB0aGUgd29sZlNTTCBpbmNsdWRlIGRpcmVjdG9yaWVzIGFuZCB3aWxsIHJlc3VsdCBpbgorbWF4aW11bSBjb21wYXRpYmlsaXR5LgorCitUaGVzZSBhcmUgdGhlIGNvbmZpZ3VyZSBvcHRpb25zIHRoYXQgd2VyZSB1c2VkIHRvIGJ1aWxkIHdvbGZTU0wgdjMuOS4wIGluIG1pbmd3CithbmQgZ2VuZXJhdGUgdGhlIG9wdGlvbnMgaW4gdGhpcyBmaWxlOgorCitDX0VYVFJBX0ZMQUdTPSJcCisgIC1Xbm8tYXR0cmlidXRlcyBcCisgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgXAorICAtREZQX01BWF9CSVRTPTE2Mzg0IFwKKyAgLURURk1fVElNSU5HX1JFU0lTVEFOVCBcCisgIC1EV09MRlNTTF9TVEFUSUNfREggXAorICAtRFdPTEZTU0xfU1RBVElDX1JTQSBcCisgICIgXAorLi9jb25maWd1cmUgLS1wcmVmaXg9L3Vzci9sb2NhbCBcCisgIC0tZW5hYmxlLWFlc2djbSBcCisgIC0tZW5hYmxlLWFscG4gXAorICAtLWVuYWJsZS1jZXJ0Z2VuIFwKKyAgLS1lbmFibGUtZGggXAorICAtLWVuYWJsZS1kc2EgXAorICAtLWVuYWJsZS1lY2MgXAorICAtLWVuYWJsZS1mYXN0bWF0aCBcCisgIC0tZW5hYmxlLW9wZW5zc2xleHRyYSBcCisgIC0tZW5hYmxlLXJpcGVtZCBcCisgIC0tZW5hYmxlLXNlc3Npb25jZXJ0cyBcCisgIC0tZW5hYmxlLXNoYTUxMiBcCisgIC0tZW5hYmxlLXNuaSBcCisgIC0tZW5hYmxlLXNzbHYzIFwKKyAgLS1lbmFibGUtc3VwcG9ydGVkY3VydmVzIFwKKyAgLS1lbmFibGUtdGVzdGNlcnQgXAorICA+IGNvbmZpZy5vdXQgMj4mMQorCitUd28gZ2VuZXJhdGVkIG9wdGlvbnMgSEFWRV9USFJFQURfTFMgYW5kIF9QT1NJWF9USFJFQURTIHdlcmUgcmVtb3ZlZCBzaW5jZSB0aGV5CithcmUgaW5hcHBsaWNhYmxlIGZvciBvdXIgVmlzdWFsIFN0dWRpbyBidWlsZC4gQ3VycmVudGx5IHRocmVhZCBsb2NhbCBzdG9yYWdlIGlzCitvbmx5IHVzZWQgYnkgdGhlIEZpeGVkIFBvaW50IGNhY2hlIEVDQyB3aGljaCB3ZSdyZSBub3QgZW5hYmxpbmcuIEhvd2V2ZXIgZXZlbgoraWYgd2UgbGF0ZXIgbWF5IGRlY2lkZSB0byBlbmFibGUgdGhlIGNhY2hlIGl0IHdpbGwgZmFsbGJhY2sgb24gbXV0ZXhlcyB3aGVuCit0aHJlYWQgbG9jYWwgc3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlLiB3b2xmU1NMIGlzIHVzaW5nIF9fZGVjbHNwZWModGhyZWFkKSB0bworY3JlYXRlIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSBhbmQgdGhhdCBjb3VsZCBiZSBhIHByb2JsZW0gZm9yIExvYWRMaWJyYXJ5LgorCitSZWdhcmRpbmcgdGhlIG9wdGlvbnMgdGhhdCB3ZXJlIGFkZGVkIHZpYSBDX0VYVFJBX0ZMQUdTOgorCitGUF9NQVhfQklUUz0xNjM4NAoraHR0cDovL3d3dy55YXNzbC5jb20vZm9ydW1zL3RvcGljNDIzLWNhY2VydG9yZ3MtY2EtY2VydC12ZXJpZnktZmFpbGVkLWJ1dC13aXRoZGlzYWJsZWZhc3RtYXRoLWl0LXdvcmtzLmh0bWwKKyJTaW5jZSByb290LmNydCB1c2VzIGEgNDA5Ni1iaXQgUlNBIGtleSwgeW91J2xsIG5lZWQgdG8gaW5jcmVhc2UgdGhlIGZhc3RtYXRoCitidWZmZXIgc2l6ZS4gIFlvdSBjYW4gZG8gdGhpcyB1c2luZyB0aGUgZGVmaW5lOgorRlBfTUFYX0JJVFMgYW5kIHNldHRpbmcgaXQgdG8gODE5Mi4iCisKK1RGTV9USU1JTkdfUkVTSVNUQU5UCitodHRwczovL3dvbGZzc2wuY29tL3dvbGZTU0wvRG9jcy13b2xmc3NsLW1hbnVhbC0yLWJ1aWxkaW5nLXdvbGZzc2wuaHRtbAorRnJvbSBzZWN0aW9uIDIuNC41IEluY3JlYXNpbmcgUGVyZm9ybWFuY2UsIFVTRV9GQVNUX01BVEg6CisiQmVjYXVzZSB0aGUgc3RhY2sgbWVtb3J5IHVzYWdlIGNhbiBiZSBsYXJnZXIgd2hlbiB1c2luZyBmYXN0bWF0aCwgd2UgcmVjb21tZW5kCitkZWZpbmluZyBURk1fVElNSU5HX1JFU0lTVEFOVCBhcyB3ZWxsIHdoZW4gdXNpbmcgdGhpcyBvcHRpb24uIgorCitXT0xGU1NMX1NUQVRJQ19ESDogICAgQWxsb3cgVExTX0VDREhfIGNpcGhlcnMKK1dPTEZTU0xfU1RBVElDX1JTQTogICBBbGxvdyBUTFNfUlNBXyBjaXBoZXJzCitodHRwczovL2dpdGh1Yi5jb20vd29sZlNTTC93b2xmc3NsL2Jsb2IvdjMuNi42L1JFQURNRS5tZCNub3RlLTEKK1N0YXRpYyBrZXkgY2lwaGVyIHN1aXRlcyBhcmUgZGVwcmVjYXRlZCBhbmQgZGlzYWJsZWQgYnkgZGVmYXVsdCBzaW5jZSB2My42LjYuCisqLworCisvKiB3b2xmc3NsIG9wdGlvbnMuaAorICogZ2VuZXJhdGVkIGZyb20gY29uZmlndXJlIG9wdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNSB3b2xmU1NMIEluYy4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB3b2xmU1NMLiAoZm9ybWVybHkga25vd24gYXMgQ3lhU1NMKQorICoKKyAqLworCisjaWZuZGVmIFdPTEZTU0xfT1BUSU9OU19ICisjZGVmaW5lIFdPTEZTU0xfT1BUSU9OU19ICisKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjdW5kZWYgIEZQX01BWF9CSVRTCisjZGVmaW5lIEZQX01BWF9CSVRTIDE2Mzg0CisKKyN1bmRlZiAgVEZNX1RJTUlOR19SRVNJU1RBTlQKKyNkZWZpbmUgVEZNX1RJTUlOR19SRVNJU1RBTlQKKworI3VuZGVmICBXT0xGU1NMX1NUQVRJQ19ESAorI2RlZmluZSBXT0xGU1NMX1NUQVRJQ19ESAorCisjdW5kZWYgIFdPTEZTU0xfU1RBVElDX1JTQQorI2RlZmluZSBXT0xGU1NMX1NUQVRJQ19SU0EKKworI3VuZGVmICBPUEVOU1NMX0VYVFJBCisjZGVmaW5lIE9QRU5TU0xfRVhUUkEKKworI3VuZGVmICBIQVZFX0FFU0dDTQorI2RlZmluZSBIQVZFX0FFU0dDTQorCisjdW5kZWYgIFdPTEZTU0xfUklQRU1ECisjZGVmaW5lIFdPTEZTU0xfUklQRU1ECisKKyN1bmRlZiAgV09MRlNTTF9TSEE1MTIKKyNkZWZpbmUgV09MRlNTTF9TSEE1MTIKKworI3VuZGVmICBXT0xGU1NMX1NIQTM4NAorI2RlZmluZSBXT0xGU1NMX1NIQTM4NAorCisjdW5kZWYgIFNFU1NJT05fQ0VSVFMKKyNkZWZpbmUgU0VTU0lPTl9DRVJUUworCisjdW5kZWYgIFdPTEZTU0xfQ0VSVF9HRU4KKyNkZWZpbmUgV09MRlNTTF9DRVJUX0dFTgorCisjdW5kZWYgIEhBVkVfRUNDCisjZGVmaW5lIEhBVkVfRUNDCisKKyN1bmRlZiAgVEZNX0VDQzI1NgorI2RlZmluZSBURk1fRUNDMjU2CisKKyN1bmRlZiAgRUNDX1NIQU1JUgorI2RlZmluZSBFQ0NfU0hBTUlSCisKKyN1bmRlZiAgV09MRlNTTF9BTExPV19TU0xWMworI2RlZmluZSBXT0xGU1NMX0FMTE9XX1NTTFYzCisKKyN1bmRlZiAgTk9fUkM0CisjZGVmaW5lIE5PX1JDNAorCisjdW5kZWYgIE5PX0hDMTI4CisjZGVmaW5lIE5PX0hDMTI4CisKKyN1bmRlZiAgTk9fUkFCQklUCisjZGVmaW5lIE5PX1JBQkJJVAorCisjdW5kZWYgIEhBVkVfUE9MWTEzMDUKKyNkZWZpbmUgSEFWRV9QT0xZMTMwNQorCisjdW5kZWYgIEhBVkVfT05FX1RJTUVfQVVUSAorI2RlZmluZSBIQVZFX09ORV9USU1FX0FVVEgKKworI3VuZGVmICBIQVZFX0NIQUNIQQorI2RlZmluZSBIQVZFX0NIQUNIQQorCisjdW5kZWYgIEhBVkVfSEFTSERSQkcKKyNkZWZpbmUgSEFWRV9IQVNIRFJCRworCisjdW5kZWYgIEhBVkVfVExTX0VYVEVOU0lPTlMKKyNkZWZpbmUgSEFWRV9UTFNfRVhURU5TSU9OUworCisjdW5kZWYgIEhBVkVfU05JCisjZGVmaW5lIEhBVkVfU05JCisKKyN1bmRlZiAgSEFWRV9UTFNfRVhURU5TSU9OUworI2RlZmluZSBIQVZFX1RMU19FWFRFTlNJT05TCisKKyN1bmRlZiAgSEFWRV9BTFBOCisjZGVmaW5lIEhBVkVfQUxQTgorCisjdW5kZWYgIEhBVkVfVExTX0VYVEVOU0lPTlMKKyNkZWZpbmUgSEFWRV9UTFNfRVhURU5TSU9OUworCisjdW5kZWYgIEhBVkVfU1VQUE9SVEVEX0NVUlZFUworI2RlZmluZSBIQVZFX1NVUFBPUlRFRF9DVVJWRVMKKworI3VuZGVmICBXT0xGU1NMX1RFU1RfQ0VSVAorI2RlZmluZSBXT0xGU1NMX1RFU1RfQ0VSVAorCisjdW5kZWYgIE5PX1BTSworI2RlZmluZSBOT19QU0sKKworI3VuZGVmICBOT19NRDQKKyNkZWZpbmUgTk9fTUQ0CisKKyN1bmRlZiAgVVNFX0ZBU1RfTUFUSAorI2RlZmluZSBVU0VfRkFTVF9NQVRICisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworCisjZW5kaWYgLyogV09MRlNTTF9PUFRJT05TX0ggKi8KKwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd29sZnNzbF9vdmVycmlkZS5wcm9wcyBiL3Byb2plY3RzL3dvbGZzc2xfb3ZlcnJpZGUucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3ZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL3dvbGZzc2xfb3ZlcnJpZGUucHJvcHMKQEAgLTAsMCArMSw0MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KK1dlIHVzZSB0aGlzIGZpbGUgdG8gb3ZlcnJpZGUgc29tZSBwcm9wZXJ0aWVzIG9mIHRoZSB3b2xmU1NMIHByb2plY3QgZmlsZXMuCisKK0luIGJ1aWxkLXdvbGZzc2wgd2hlbiB3ZSBjYWxsIG1zYnVpbGQgdG8gYnVpbGQgd29sZlNTTCB3ZSBwYXNzIGluIHRoaXMgcHJvcHMKK2ZpbGUgYnkgdXNpbmcgdGhlIEN1c3RvbUFmdGVyTWljcm9zb2Z0Q29tbW9uVGFyZ2V0cyBwcm9wZXJ0eS4KKy0tPgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpOzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8IS0tCisgICAgICBPdXIgb3B0aW9ucyBmaWxlIHdvbGZzc2xfb3B0aW9ucy5oIGlzIGNvcGllZCBieSBidWlsZC13b2xmc3NsIHRvCisgICAgICAkKFNvbHV0aW9uRGlyKVx3b2xmc3NsXG9wdGlvbnMuaC4gSXQgaW5jbHVkZXMgYWxsIHRoZSBvcHRpb25zIHdlIG5lZWQKKyAgICAgIHRvIGJ1aWxkIHdvbGZTU0wgZm9yIGNvbXBhdGliaWxpdHkuIFNlZSB3b2xmc3NsX29wdGlvbnMuaCBmb3IgbW9yZSBpbmZvLgorICAgICAgLS0+CisgICAgICA8Rm9yY2VkSW5jbHVkZUZpbGVzPiQoU29sdXRpb25EaXIpXHdvbGZzc2xcb3B0aW9ucy5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTs8L0ZvcmNlZEluY2x1ZGVGaWxlcz4KKyAgICAgIDwhLS0KKyAgICAgIERvIG5vdCB1c2UgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHNldCBzaW5jZSB0aGVpciBtaW5ndyBjb25maWcgZG9lc24ndC4KKyAgICAgIERvIG5vdCB1c2UgdGhlaXIgSURFXFdJTlx1c2VyX3NldHRpbmdzLmggc2luY2Ugd2UgaGF2ZSB3b2xmc3NsX29wdGlvbnMuaC4KKyAgICAgIC0tPgorICAgICAgPFVuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VOSUNPREU7VU5JQ09ERTtXT0xGU1NMX1VTRVJfU0VUVElOR1M7Q1lBU1NMX1VTRVJfU0VUVElOR1M7JShVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTs8L1VuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VTklDT0RFO1VOSUNPREU7JShVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTs8L1VuZGVmaW5lUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPCEtLQorICBUaGUgcHJvamVjdCBHVUlEIGZvciB3b2xmc3NsLnZjeHByb2ogaXMgNzM5NzMyMjMtNUVFOC00MUNBLThFODgtMUQ2MEU4OUEyMzdCLgorICBTaW5jZSB3ZSBoYXZlIGFyZSB1c2luZyBjZXJ0YWluIG9wdGlvbnMgbGlrZSBmYXN0IG1hdGggKFRGTSkgaW4gb3VyIG9wdGlvbnMKKyAgZmlsZSB3ZSBtdXN0IGNvbXBpbGUgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgaW4gd29sZnNzbC52Y3hwcm9qLiBJZiB0aGUgdXNlcgorICBkaXNhYmxlcyBzdWNoIGFuIG9wdGlvbiB0aGUgdW5pdCBjYW4gc3RpbGwgYmUgY29tcGlsZWQgaXQganVzdCB3b24ndCBiZSB1c2VkLgorICAtLT4KKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IickKFByb2plY3RHdWlkKSc9PSd7NzM5NzMyMjMtNUVFOC00MUNBLThFODgtMUQ2MEU4OUEyMzdCfSciPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0id29sZmNyeXB0XHNyY1xjaGFjaGEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IndvbGZjcnlwdFxzcmNcY2hhY2hhMjBfcG9seTEzMDUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IndvbGZjcnlwdFxzcmNccG9seTEzMDUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IndvbGZjcnlwdFxzcmNcdGZtLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9NYWtlZmlsZS5hbSBiL3NjcmlwdHMvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkYzFiOQotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw0MyBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworWlNIX0ZVTkNUSU9OU19ESVIgPSBAWlNIX0ZVTkNUSU9OU19ESVJACitQRVJMID0gQFBFUkxACisKK1pTSF9DT01QTEVUSU9OX0ZVTkNUSU9OX0ZJTEVOQU1FID0gX2N1cmwKKworYWxsLWxvY2FsOiAkKFpTSF9DT01QTEVUSU9OX0ZVTkNUSU9OX0ZJTEVOQU1FKQorCiskKFpTSF9DT01QTEVUSU9OX0ZVTkNUSU9OX0ZJTEVOQU1FKTogenNoLnBsCitpZiBDUk9TU0NPTVBJTElORworCUBlY2hvICJOT1RJQ0U6IHdlIGNhbid0IGdlbmVyYXRlIHpzaCBjb21wbGV0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nISIKK2Vsc2UgIyBpZiBub3QgY3Jvc3MtY29tcGlsaW5nOgorCUBpZiAhIHRlc3QgLXggIiQoUEVSTCkiOyB0aGVuIGVjaG8gIk5vIHBlcmw6IGNhbid0IGluc3RhbGwgenNoLnBsIjsgZXhpdCAwOyBmaQorCSQoUEVSTCkgJChzcmNkaXIpL3pzaC5wbCAkKHRvcF9idWlsZGRpcikvc3JjL2N1cmwkKEVYRUVYVCkgPiAkQAorZW5kaWYKKworaW5zdGFsbC1kYXRhLWxvY2FsOgoraWYgQ1JPU1NDT01QSUxJTkcKKwlAZWNobyAiTk9USUNFOiB3ZSBjYW4ndCBpbnN0YWxsIHpzaCBjb21wbGV0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nISIKK2Vsc2UgIyBpZiBub3QgY3Jvc3MtY29tcGlsaW5nOgorCSQoTUtESVJfUCkgJChERVNURElSKSQoWlNIX0ZVTkNUSU9OU19ESVIpCisJJChJTlNUQUxMX0RBVEEpICQoWlNIX0NPTVBMRVRJT05fRlVOQ1RJT05fRklMRU5BTUUpICQoREVTVERJUikkKFpTSF9GVU5DVElPTlNfRElSKS8kKFpTSF9DT01QTEVUSU9OX0ZVTkNUSU9OX0ZJTEVOQU1FKQorZW5kaWYKZGlmZiAtLWdpdCBhL3NjcmlwdHMvY29udHJpYnV0b3JzLnNoIGIvc2NyaXB0cy9jb250cmlidXRvcnMuc2gKaW5kZXggMDg0MGJmYS4uZDYyYmFhZCAxMDA3NTUKLS0tIGEvc2NyaXB0cy9jb250cmlidXRvcnMuc2gKKysrIGIvc2NyaXB0cy9jb250cmlidXRvcnMuc2gKQEAgLTYsMTEgKzYsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsMTIgKzIyLDkgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjCi0jIFRoaXMgc2NyaXB0IHNob3dzIGFsbCBtZW50aW9uZWQgY29udHJpYnV0b3JzIGZyb20gPGhhc2g+IHVudGlsIEhFQUQuIFRvIGFpZAotIyB3aGVuIHdyaXRpbmcgUkVMRUFTRS1OT1RFUyBhbmQgVEhBTktTLgotIwotIyBVc2UgLS1yZWxlYXNlbm90ZXMgdG8gYWxzbyBpbmNsdWRlIHRoZSBuYW1lcyBmcm9tIHRoZSBleGlzdGluZyBSRUxFQVNFLU5PVEVTCi0jIGZpbGUsIHdoaWNoIGlzIGhhbmR5IHdoZW4gd2UndmUgYWRkZWQgbmFtZXMgbWFudWFsbHkgaW4gdGhlcmUgdGhhdCBzaG91bGQgYmUKLSMgaW5jbHVkZWQgaW4gYW4gdXBkYXRlZCBsaXN0LgorIyBUaGlzIHNjcmlwdCBzaG93cyBhbGwgbWVudGlvbmVkIGNvbnRyaWJ1dG9ycyBmcm9tIHRoZSBnaXZlbiA8aGFzaD4vPHRhZz4KKyMgdW50aWwgSEVBRCBhbmQgYWRkcyB0aGUgY29udHJpYnV0b3JzIGFscmVhZHkgbWVudGlvbmVkIGluIHRoZSBleGlzdGluZworIyBSRUxFQVNFLU5PVEVTLgogIwogCiBzdGFydD0kMQpAQCAtNDgsMzEgKzQ1LDI2IEBACiAjIGF3ayB0aGVtIGludG8gUkVMRUFTRS1OT1RFUyBmb3JtYXQKICgKIGdpdCBsb2cgJHN0YXJ0Li5IRUFEIHwgXAotZWdyZXAgLWkgJyhBdXRob3J8Q29tbWl0fGJ5KTonIHwgXAorZWdyZXAgLWFpICcoXkF1dGhvcnxeQ29tbWl0fGJ5KTonIHwgXAogY3V0IC1kOiAtZjItIHwgXAogY3V0ICctZDwnIC1mMSB8IFwKIHRyICwgJ1wwMTInIHwgXAogc2VkICdzLyBhbmQgL1xuLycgfCBcCi1zZWQgLWUgJ3MvXiAvLycgLWUgJ3MvICQvL2cnCitzZWQgLWUgJ3MvXiAvLycgLWUgJ3MvICQvL2cnIC1lICdzL0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20kLyBvbiBnaXRodWIvJwogCi1pZiBlY2hvICIkKiIgfCBncmVwIC1xdyAtLSAnLS1yZWxlYXNlbm90ZXMnO3RoZW4KLSAgICAjIGlmIC0tcmVsZWFzZW5vdGVzIHdhcyB1c2VkCi0gICAgIyBncmVwIG91dCB0aGUgbGlzdCBvZiBuYW1lcyBmcm9tIFJFTEVBU0UtTk9URVMKLSAgICAjIHNwbGl0IG9uICIsICIKLSAgICAjIHJlbW92ZSBsZWFkaW5nIHdoaXRlIHNwYWNlcwotZ3JlcCAiXiAgW14gXChdIiBSRUxFQVNFLU5PVEVTfCBcCitncmVwIC1hICJeICBbXiBcKF0iIFJFTEVBU0UtTk9URVN8IFwKIHNlZCAncy8sICovXG4vZyd8IFwKIHNlZCAncy9eICovLycKLWZpCisKICl8IFwKIHNlZCAtZiAuL2RvY3MvVEhBTktTLWZpbHRlciB8IFwKLWdyZXAgJyAnIHwgXAorZ3JlcCAtYSAnICcgfCBcCiBzb3J0IC1mdSB8IFwKIGF3ayAnewogIG51bSsrOwogIG4gPSBzcHJpbnRmKCIlcyVzJXMsIiwgbiwgbGVuZ3RoKG4pPyIgIjoiIiwgJDApOwogICNwcmludCBuOwotIGlmKGxlbmd0aChuKSA+IDc4KSB7CisgaWYobGVuZ3RoKG4pID4gNzcpIHsKICAgIHByaW50ZigiICAlc1xuIiwgcCk7CiAgICBuPXNwcmludGYoIiVzLCIsICQwKTsKICB9CmRpZmYgLS1naXQgYS9zY3JpcHRzL2NvbnRyaXRoYW5rcy5zaCBiL3NjcmlwdHMvY29udHJpdGhhbmtzLnNoCmluZGV4IGI3YTE2Y2EuLjZjYTdlODMgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvY29udHJpdGhhbmtzLnNoCisrKyBiL3NjcmlwdHMvY29udHJpdGhhbmtzLnNoCkBAIC02LDExICs2LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDIyICszNiwyMiBAQAogCiAoCiBnaXQgbG9nICRzdGFydC4uSEVBRCB8IFwKLWVncmVwIC1pICcoQXV0aG9yfENvbW1pdHxieSk6JyB8IFwKK2VncmVwIC1haSAnKF5BdXRob3J8XkNvbW1pdHxieSk6JyB8IFwKIGN1dCAtZDogLWYyLSB8IFwKIGN1dCAnLWQ8JyAtZjEgfCBcCiB0ciAsICdcMDEyJyB8IFwKIHNlZCAncy8gYW5kIC9cbi8nIHwgXAotc2VkIC1lICdzL14gLy8nIC1lICdzLyAkLy9nJworc2VkIC1lICdzL14gLy8nIC1lICdzLyAkLy9nJyAtZSAncy9AdXNlcnMubm9yZXBseS5naXRodWIuY29tJC8gb24gZ2l0aHViLycKIAogIyBncmVwIG91dCB0aGUgbGlzdCBvZiBuYW1lcyBmcm9tIFJFTEVBU0UtTk9URVMKICMgc3BsaXQgb24gIiwgIgogIyByZW1vdmUgbGVhZGluZyB3aGl0ZSBzcGFjZXMKLWdyZXAgIl4gIFteIChdIiBSRUxFQVNFLU5PVEVTfCBcCitncmVwIC1hICJeICBbXiAoXSIgUkVMRUFTRS1OT1RFU3wgXAogc2VkICdzLywgKi9cbi9nJ3wgXAogc2VkICdzL14gKi8vJwogCiApfCBcCiBzZWQgLWYgLi9kb2NzL1RIQU5LUy1maWx0ZXIgfCBcCi1ncmVwICcgJyB8IFwKK2dyZXAgLWEgJyAnIHwgXAogc29ydCAtZnUgfCBcCi1ncmVwIC14dmYgLi9kb2NzL1RIQU5LUyAKK2dyZXAgLWFpeHZmIC4vZG9jcy9USEFOS1MKZGlmZiAtLWdpdCBhL3NjcmlwdHMvenNoLnBsIGIvc2NyaXB0cy96c2gucGwKaW5kZXggNzUyMGExNS4uZjBkOGMxOSAxMDA3NTUKLS0tIGEvc2NyaXB0cy96c2gucGwKKysrIGIvc2NyaXB0cy96c2gucGwKQEAgLTM4LDE0ICszOCwxNCBAQAogICAgIG15ICgkY21kLCAkcmVnZXgpID0gQF87CiAKICAgICBteSBAbGlzdDsKLSAgICBteSBAbGluZXMgPSBzcGxpdCAvXG4vLCBgIiRjdXJsIiAkY21kYDsKKyAgICBteSBAbGluZXMgPSBjYWxsX2N1cmwoJGNtZCk7CiAKICAgICBmb3JlYWNoIG15ICRsaW5lIChAbGluZXMpIHsKICAgICAgICAgbXkgKCRzaG9ydCwgJGxvbmcsICRhcmcsICRkZXNjKSA9ICgkbGluZSA9fiAvXiRyZWdleC8pIG9yIG5leHQ7CiAKICAgICAgICAgbXkgJG9wdGlvbiA9ICcnOwogCi0gICAgICAgICRkZXNjID1+IHMvJy8nJy9nIGlmIGRlZmluZWQgJGRlc2M7CisgICAgICAgICRkZXNjID1+IHMvJy8nXFwnJy9nIGlmIGRlZmluZWQgJGRlc2M7CiAgICAgICAgICRkZXNjID1+IHMvXFsvXFxcWy9nIGlmIGRlZmluZWQgJGRlc2M7CiAgICAgICAgICRkZXNjID1+IHMvXF0vXFxcXS9nIGlmIGRlZmluZWQgJGRlc2M7CiAKQEAgLTc0LDQgKzc0LDE1IEBACiAgICAgcmV0dXJuIEBsaXN0OwogfQogCi1zdWIgIHRyaW0geyBteSAkcyA9IHNoaWZ0OyAkcyA9fiBzL15ccyt8XHMrJC8vZzsgcmV0dXJuICRzIH07CitzdWIgdHJpbSB7IG15ICRzID0gc2hpZnQ7ICRzID1+IHMvXlxzK3xccyskLy9nOyByZXR1cm4gJHMgfTsKKworc3ViIGNhbGxfY3VybCB7CisgICAgbXkgKCRjbWQpID0gQF87CisgICAgbXkgJG91dHB1dCA9IGAiJGN1cmwiICRjbWRgOworICAgIGlmICgkPyA9PSAtMSkgeworICAgICAgICBkaWUgIkNvdWxkIG5vdCBydW4gY3VybDogJCEiOworICAgIH0gZWxzaWYgKChteSAkZXhpdF9jb2RlID0gJD8gPj4gOCkgIT0gMCkgeworICAgICAgICBkaWUgImN1cmwgcmV0dXJuZWQgJGV4aXRfY29kZSB3aXRoIG91dHB1dDpcbiRvdXRwdXQiOworICAgIH0KKyAgICByZXR1cm4gc3BsaXQgL1xuLywgJG91dHB1dDsKK30KZGlmZiAtLWdpdCBhL3NyYy8uZ2l0aWdub3JlIGIvc3JjLy5naXRpZ25vcmUKaW5kZXggZjgwYTNlMS4uY2Y3ZjllNCAxMDA2NDQKLS0tIGEvc3JjLy5naXRpZ25vcmUKKysrIGIvc3JjLy5naXRpZ25vcmUKQEAgLTEsMTEgKzEsMTAgQEAKKyouYQorKi5ubG0KKyoucmVzCitNYWtlZmlsZS52YyouZGlzdAorY29uZmlnLXdpbjMyLmgKIGN1cmwKIGN1cmxfY29uZmlnLmguaW4KIHN0YW1wLWgyCi1NYWtlZmlsZS52YzguZGlzdAotTWFrZWZpbGUudmM5LmRpc3QKK3Rvb2xfaHVnZWhlbHAuYwogdG9vbF92ZXJzaW9uLmguZGlzdAotTWFrZWZpbGUudmMxMC5kaXN0Ci1jb25maWctd2luMzIuaAotKi5hCi0qLnJlcwotKi5ubG0KZGlmZiAtLWdpdCBhL3NyYy9DTWFrZUxpc3RzLnR4dCBiL3NyYy9DTWFrZUxpc3RzLnR4dAppbmRleCBiZmI4NjZiLi5jZmNlZmIzIDEwMDY0NAotLS0gYS9zcmMvQ01ha2VMaXN0cy50eHQKKysrIGIvc3JjL0NNYWtlTGlzdHMudHh0CkBAIC00Myw5ICs0MywxMCBAQAogICBsaXN0KEFQUEVORCBDVVJMX1NPVVJDRSBjdXJsLnJjKQogZW5kaWYoKQogCisjIENVUkxfRklMRVMgY29tZXMgZnJvbSBNYWtlZmlsZS5pbmMKIGFkZF9leGVjdXRhYmxlKAogICAke0VYRV9OQU1FfQotICAke2N1cmxfU09VUkNFU30KKyAgJHtDVVJMX0ZJTEVTfQogICApCiAKIHNvdXJjZV9ncm91cCgiY1VSTFggc291cmNlIGZpbGVzIiBGSUxFUyAke0NVUkxYX0NGSUxFU30pCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuV2F0Y29tIGIvc3JjL01ha2VmaWxlLldhdGNvbQppbmRleCA2ZWM1OThkLi5mMWRkYzI5IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuV2F0Y29tCisrKyBiL3NyYy9NYWtlZmlsZS5XYXRjb20KQEAgLTEsNiArMSwyOCBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDA4LCBHaXNsZSBWYW5lbSA8Z3ZhbmVtQHlhaG9vLm5vPi4KKyMgQ29weXJpZ2h0IChDKSAyMDA1IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKICMKICMgIFdhdGNvbSAvIE9wZW5XYXRjb20gLyBXaW4zMiBtYWtlZmlsZSBmb3IgY1VSTC4KLSMgIEcuIFZhbmVtIDxndmFuZW1AYnJvYWRwYXJrLm5vPgogIwogCiAuRVJBU0UKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQppbmRleCBmNGJjNmM5Li44NzhiYmZlIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Myw2ICs1Myw5IEBACiAKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKKyMgQ1VSTF9GSUxFUyBjb21lcyBmcm9tIE1ha2VmaWxlLmluYworY3VybF9TT1VSQ0VTID0gJChDVVJMX0ZJTEVTKQorCiAjIFRoaXMgbWlnaHQgaG9sZCAtV2Vycm9yCiBDRkxBR1MgKz0gQENVUkxfQ0ZMQUdfRVhUUkFTQAogCkBAIC03Miw4ICs3NSw5IEBACiAjIGlmIHVuaXQgdGVzdHMgYXJlIGVuYWJsZWQsIGJ1aWxkIGEgc3RhdGljIGxpYnJhcnkgdG8gbGluayB0aGVtIHdpdGgKIGlmIEJVSUxEX1VOSVRURVNUUwogbm9pbnN0X0xUTElCUkFSSUVTID0gbGliY3VybHRvb2wubGEKLWxpYmN1cmx0b29sX2xhX0NQUEZMQUdTID0gJChMSUJNRVRBTElOS19DUFBGTEFHUykgJChBTV9DUFBGTEFHUykKLWxpYmN1cmx0b29sX2xhX0NGTEFHUyA9IC1EVU5JVFRFU1RTCitsaWJjdXJsdG9vbF9sYV9DUFBGTEFHUyA9ICQoTElCTUVUQUxJTktfQ1BQRkxBR1MpICQoQU1fQ1BQRkxBR1MpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLURDVVJMX1NUQVRJQ0xJQiAtRFVOSVRURVNUUworbGliY3VybHRvb2xfbGFfQ0ZMQUdTID0KIGxpYmN1cmx0b29sX2xhX0xERkxBR1MgPSAtc3RhdGljICQoTElOS0ZMQUdTKQogbGliY3VybHRvb2xfbGFfU09VUkNFUyA9ICQoY3VybF9TT1VSQ0VTKQogZW5kaWYKQEAgLTg3LDggKzkxLDcgQEAKIEVYVFJBX0RJU1QgPSBta2hlbHAucGwgbWFrZWZpbGUuZGogTWFrZWZpbGUudmM2IE1ha2VmaWxlLmIzMgkJXAogIE1ha2VmaWxlLm0zMiBtYWNvcy9jdXJsLm1jcC54bWwuc2l0LmhxeCBtYWNvcy9NQUNJTlNUQUxMLlRYVAkJXAogIG1hY29zL3NyYy9jdXJsX0dVU0lDb25maWcuY3BwIG1hY29zL3NyYy9tYWNvc19tYWluLmNwcCBtYWtlZmlsZS5hbWlnYQlcCi0gY3VybC5yYyBNYWtlZmlsZS5uZXR3YXJlIE1ha2VmaWxlLmluYyBNYWtlZmlsZS5XYXRjb20gQ01ha2VMaXN0cy50eHQJXAotIGNoZWNrc3JjLndoaXRlbGlzdAorIGN1cmwucmMgTWFrZWZpbGUubmV0d2FyZSBNYWtlZmlsZS5pbmMgTWFrZWZpbGUuV2F0Y29tIENNYWtlTGlzdHMudHh0CiAKIE1BTlBBR0U9JCh0b3Bfc3JjZGlyKS9kb2NzL2N1cmwuMQogUkVBRE1FPSQodG9wX3NyY2RpcikvZG9jcy9NQU5VQUwKQEAgLTEyNiw3ICsxMjksOCBAQAogIyBpZ25vcmUgdG9vbF9odWdlaGVscC5jIHNpbmNlIGl0IGlzIGdlbmVyYXRlZCBzb3VyY2UgY29kZSBhbmQgaXQgcGxheXMKICMgYnkgc2xpZ2h0bHkgZGlmZmVyZW50IHJ1bGVzIQogY2hlY2tzcmM6Ci0JQEBQRVJMQCAkKHRvcF9zcmNkaXIpL2xpYi9jaGVja3NyYy5wbCAtRCQodG9wX3NyY2Rpcikvc3JjIC1XdG9vbF9odWdlaGVscC5jICQoQ1VSTF9DRklMRVMpICQoQ1VSTF9IRklMRVMpCisJQFBFUkxAICQodG9wX3NyY2RpcikvbGliL2NoZWNrc3JjLnBsIC1EJChzcmNkaXIpICAgICAgICBcCisJLVckKHNyY2RpcikvdG9vbF9odWdlaGVscC5jICQoc3JjZGlyKS8qLltjaF0KIAogaWYgQ1VSTERFQlVHCiAjIGZvciBkZWJ1ZyBidWlsZHMsIHdlIHNjYW4gdGhlIHNvdXJjZXMgb24gYWxsIHJlZ3VsYXIgbWFrZSBpbnZva2VzCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYjMyIGIvc3JjL01ha2VmaWxlLmIzMgppbmRleCA4NWZlNDlmLi5hNjBiM2RiIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuYjMyCisrKyBiL3NyYy9NYWtlZmlsZS5iMzIKQEAgLTEsMTMgKzEsMzMgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDAwLCBKYWVwaWwgS2ltLCA8cGl0QHBhcmFkaXNlLm5ldC5uej4uCisjIENvcHlyaWdodCAoQykgMjAwMSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKICMgIE1ha2VmaWxlLmIzMiAtIEJvcmxhbmQncyBDKysgQ29tcGlsZXIgNS5YCiAjCi0jICAnc3JjJyBkaXJlY3RvcnkKLSMKICMgICdCQ0NESVInIGhhcyB0byBiZSBzZXQgdXAgdG8gcG9pbnQgdG8gdGhlIGJhc2UgZGlyZWN0b3J5CiAjICBvZiB0aGUgY29tcGlsZXIsIGkuZS4gU0VUIEJDQ0RJUiA9IGM6XEJvcmxhbmRcQkNDNTUKICMKLSMgIEluaXRpYWxseSB3cml0dGVuIGJ5IEphZXBpbCBLaW0sIHBpdEBwYXJhZGlzZS5uZXQubnoKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAhaWYgIiQoX19NQUtFX18pIiA9PSAiIgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluYyBiL3NyYy9NYWtlZmlsZS5pbmMKaW5kZXggNDAxYTYzNS4uMWFhMTUzYyAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmluYworKysgYi9zcmMvTWFrZWZpbGUuaW5jCkBAIC0yMyw2ICsyMyw3IEBACiAJLi4vbGliL3dhcm5sZXNzLmgKIAogQ1VSTF9DRklMRVMgPSBcCisJc2xpc3Rfd2MuYyBcCiAJdG9vbF9iaW5tb2RlLmMgXAogCXRvb2xfYm5hbWUuYyBcCiAJdG9vbF9jYl9kYmcuYyBcCkBAIC02NCw2ICs2NSw3IEBACiAJdG9vbF94YXR0ci5jCiAKIENVUkxfSEZJTEVTID0gXAorCXNsaXN0X3djLmggXAogCXRvb2xfYmlubW9kZS5oIFwKIAl0b29sX2JuYW1lLmggXAogCXRvb2xfY2JfZGJnLmggXApAQCAtMTA5LDUgKzExMSw1IEBACiAKIENVUkxfUkNGSUxFUyA9IGN1cmwucmMKIAotY3VybF9TT1VSQ0VTID0gJChDVVJMX0NGSUxFUykgJChDVVJMWF9DRklMRVMpICQoQ1VSTF9IRklMRVMpCi0KKyMgY3VybF9TT1VSQ0VTIGlzIHNwZWNpYWwgYW5kIGdldHMgYXNzaWduZWQgaW4gc3JjL01ha2VmaWxlLmFtCitDVVJMX0ZJTEVTID0gJChDVVJMX0NGSUxFUykgJChDVVJMWF9DRklMRVMpICQoQ1VSTF9IRklMRVMpCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUubTMyIGIvc3JjL01ha2VmaWxlLm0zMgppbmRleCBmYzU5ZjYzLi4wNzZmYzVlIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUubTMyCisrKyBiL3NyYy9NYWtlZmlsZS5tMzIKQEAgLTEsMTAgKzEsMzIgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyMgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGN1cmwuZXhlIHdpdGggTWluZ1cgKEdDQy0zLjIgb3IgbGF0ZXIpCiAjIyBhbmQgb3B0aW9uYWxseSBPcGVuU1NMICgxLjAuMmEpLCBsaWJzc2gyICgxLjUpLCB6bGliICgxLjIuOCksIGxpYnJ0bXAgKDIuNCkKICMjCiAjIyBVc2FnZTogICBtaW5ndzMyLW1ha2UgLWYgTWFrZWZpbGUubTMyIENGRz0tZmVhdHVyZTFbLWZlYXR1cmUyXVstZmVhdHVyZTNdWy4uLl0KLSMjIEV4YW1wbGU6IG1pbmd3MzItbWFrZSAtZiBNYWtlZmlsZS5tMzIgQ0ZHPS16bGliLXNzbC1zcGktd2luaWRuCisjIyBFeGFtcGxlOiBtaW5ndzMyLW1ha2UgLWYgTWFrZWZpbGUubTMyIENGRz0temxpYi1zc2wtc3NwaS13aW5pZG4KICMjCiAjIyBIaW50OiB5b3UgY2FuIGFsc28gc2V0IGVudmlyb25tZW50IHZhcnMgdG8gY29udHJvbCB0aGUgYnVpbGQsIGYuZS46CiAjIyBzZXQgWkxJQl9QQVRIPWM6L3psaWItMS4yLjgKQEAgLTQyLDcgKzY0LDcgQEAKIGVuZGlmCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBsaWJpZG4gcGFja2FnZS4KIGlmbmRlZiBMSUJJRE5fUEFUSAotTElCSUROX1BBVEggPSAuLi8uLi9saWJpZG4tMS4zMAorTElCSUROX1BBVEggPSAuLi8uLi9saWJpZG4tMS4zMgogZW5kaWYKICMgRWRpdCB0aGUgcGF0aCBiZWxvdyB0byBwb2ludCB0byB0aGUgYmFzZSBvZiB5b3VyIE1TIElETiBwYWNrYWdlLgogIyBNaWNyb3NvZnQgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIE1pdGlnYXRpb24gQVBJcyAxLjEKQEAgLTY3LDE0ICs4OSwxNCBAQAogZW5kaWYKIAogQ0MJPSAkKENST1NTUFJFRklYKWdjYwotQ0ZMQUdTCT0gLWcgLU8yIC1XYWxsCitDRkxBR1MJPSAkKENVUkxfQ0ZMQUdfRVhUUkFTKSAtZyAtTzIgLVdhbGwKIENGTEFHUwkrPSAtZm5vLXN0cmljdC1hbGlhc2luZwogIyBjb21tZW50IExERkxBR1MgYmVsb3cgdG8ga2VlcCBkZWJ1ZyBpbmZvCi1MREZMQUdTCT0gLXMKK0xERkxBR1MJPSAkKENVUkxfTERGTEFHX0VYVFJBUykgJChDVVJMX0xERkxBR19FWFRSQVNfRVhFKSAtcwogQVIJPSAkKENST1NTUFJFRklYKWFyCiBSQwk9ICQoQ1JPU1NQUkVGSVgpd2luZHJlcwogUkNGTEFHUwk9IC0taW5jbHVkZS1kaXI9JChQUk9PVCkvaW5jbHVkZSAtTyBDT0ZGCi1TVFJJUCAgID0gJChDUk9TU1BSRUZJWClzdHJpcCAtZworU1RSSVAJPSAkKENST1NTUFJFRklYKXN0cmlwIC1nCiAKICMgV2UgbWF5IG5lZWQgdGhlc2Ugc29tZWRheQogIyBQRVJMID0gcGVybApAQCAtODMsMTggKzEwNSwxOCBAQAogIyBTZXQgZW52aXJvbm1lbnQgdmFyIEFSQ0ggdG8geW91ciBhcmNoaXRlY3R1cmUgdG8gb3ZlcnJpZGUgYXV0b2RldGVjdGlvbi4KIGlmbmRlZiBBUkNICiBpZmVxICgkKGZpbmRzdHJpbmcgeDg2XzY0LCQoc2hlbGwgJChDQykgLWR1bXBtYWNoaW5lKSkseDg2XzY0KQotQVJDSCAgICA9IHc2NAorQVJDSAk9IHc2NAogZWxzZQotQVJDSCAgICA9IHczMgorQVJDSAk9IHczMgogZW5kaWYKIGVuZGlmCiAKIGlmZXEgKCQoQVJDSCksdzY0KQotQ0ZMQUdTCSs9IC1tNjQgLURfQU1ENjRfCitDRkxBR1MgICs9IC1tNjQgLURfQU1ENjRfCiBMREZMQUdTICs9IC1tNjQKIFJDRkxBR1MgKz0gLUYgcGUteDg2LTY0CiBlbHNlCi1DRkxBR1MJKz0gLW0zMgorQ0ZMQUdTICArPSAtbTMyCiBMREZMQUdTICs9IC1tMzIKIFJDRkxBR1MgKz0gLUYgcGUtaTM4NgogZW5kaWYKQEAgLTE0Niw3ICsxNjgsOSBAQAogZW5kaWYKIGlmZXEgKCQoZmluZHN0cmluZyAtc3NoMiwkKENGRykpLC1zc2gyKQogU1NIMiA9IDEKK2lmbmVxICgkKGZpbmRzdHJpbmcgLXdpbnNzbCwkKENGRykpLC13aW5zc2wpCiBTU0wgPSAxCitlbmRpZgogWkxJQiA9IDEKIGVuZGlmCiBpZmVxICgkKGZpbmRzdHJpbmcgLXNzbCwkKENGRykpLC1zc2wpCkBAIC0yMTQsNiArMjM4LDExIEBACiBpZmRlZiBTU0gyCiAgIENGTEFHUyArPSAtRFVTRV9MSUJTU0gyIC1ESEFWRV9MSUJTU0gyX0gKICAgY3VybF9MREFERCArPSAtTCIkKExJQlNTSDJfUEFUSCkvd2luMzIiIC1sc3NoMgorICBpZmRlZiBXSU5TU0wKKyAgICBpZm5kZWYgRFlOCisgICAgICBjdXJsX0xEQUREICs9IC1sYmNyeXB0IC1sY3J5cHQzMgorICAgIGVuZGlmCisgIGVuZGlmCiBlbmRpZgogaWZkZWYgU1NMCiAgIGlmbmRlZiBPUEVOU1NMX0lOQ0xVREUKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5uZXR3YXJlIGIvc3JjL01ha2VmaWxlLm5ldHdhcmUKaW5kZXggNTA2NWNiZi4uM2U0ZjY1NCAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLm5ldHdhcmUKKysrIGIvc3JjL01ha2VmaWxlLm5ldHdhcmUKQEAgLTEsOSArMSwzMSBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDE0LCBHdWVudGVyIEtuYXVmLCA8aHR0cDovL3d3dy5na253Lm5ldC9waHBiYj4uCisjIENvcHlyaWdodCAoQykgMjAwMSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyMgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGN1cmwubmxtIChOZXRXYXJlIHZlcnNpb24gLSBnbnUgbWFrZSkKLSMjIFVzZTogbWFrZSAtZiBNYWtlZmlsZS5uZXR3YXJlCiAjIwotIyMgQ29tbWVudHMgdG86IEd1ZW50ZXIgS25hdWYgaHR0cDovL3d3dy5na253Lm5ldC9waHBiYgorIyMgVXNlOiBtYWtlIC1mIE1ha2VmaWxlLm5ldHdhcmUKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTgwLDcgKzEwMiw3IEBACiBUQVJHRVQgID0gY3VybAogVkVSU0lPTgk9ICQoTElCQ1VSTF9WRVJTSU9OKQogQ09QWVIJPSBDb3B5cmlnaHQgKEMpICQoTElCQ1VSTF9DT1BZUklHSFRfU1RSKQotREVTQ1IJPSBjVVJMICQoTElCQ1VSTF9WRVJTSU9OX1NUUikgKCQoTElCQVJDSCkpIC0gaHR0cDovL2N1cmwuaGF4eC5zZQorREVTQ1IJPSBjVVJMICQoTElCQ1VSTF9WRVJTSU9OX1NUUikgKCQoTElCQVJDSCkpIC0gaHR0cHM6Ly9jdXJsLmhheHguc2UKIE1UU0FGRQk9IFlFUwogU1RBQ0sJPSA2NDAwMAogU0NSRUVOCT0gJChUQVJHRVQpIGNvbW1hbmRsaW5lIHV0aWxpdHkKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS52YzYgYi9zcmMvTWFrZWZpbGUudmM2CmluZGV4IGVlYzg5YzIuLmZmODJhNGQgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS52YzYKKysrIGIvc3JjL01ha2VmaWxlLnZjNgpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXw0KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198DQogIw0KLSMgQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4NCisjIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuDQogIw0KICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gNCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMNCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCiAjDQogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwNCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KQEAgLTE0NSw2ICsxNDUsNyBAQAogCXJhd3N0cnIub2JqIFwNCiAJc3RydG9vZmZ0ci5vYmogXA0KIAl3YXJubGVzcy5vYmogXA0KKwlzbGlzdF93Yy5vYmogXA0KIAl0b29sX2Jpbm1vZGVyLm9iaiBcDQogCXRvb2xfYm5hbWVyLm9iaiBcDQogCXRvb2xfY2JfZGJnci5vYmogXA0KQEAgLTE5MCw2ICsxOTEsNyBAQAogCXJhd3N0cmQub2JqIFwNCiAJc3RydG9vZmZ0ZC5vYmogXA0KIAl3YXJubGVzc2Qub2JqIFwNCisJc2xpc3Rfd2NkLm9iaiBcDQogCXRvb2xfYmlubW9kZWQub2JqIFwNCiAJdG9vbF9ibmFtZWQub2JqIFwNCiAJdG9vbF9jYl9kYmdkLm9iaiBcDQpAQCAtMzY3LDYgKzM2OSw4IEBACiAJJChDQ1IpICQoQ0ZMQUdTKSAvRm8iJEAiIC4uL2xpYi9zdHJ0b29mZnQuYw0KIHdhcm5sZXNzLm9iajogLi4vbGliL3dhcm5sZXNzLmMNCiAJJChDQ1IpICQoQ0ZMQUdTKSAvRm8iJEAiIC4uL2xpYi93YXJubGVzcy5jDQorc2xpc3Rfd2Mub2JqOiBzbGlzdF93Yy5jDQorCSQoQ0NSKSAkKENGTEFHUykgL0ZvIiRAIiBzbGlzdF93Yy5jDQogdG9vbF9iaW5tb2Rlci5vYmo6IHRvb2xfYmlubW9kZS5jDQogCSQoQ0NSKSAkKENGTEFHUykgL0ZvIiRAIiB0b29sX2Jpbm1vZGUuYw0KIHRvb2xfYm5hbWVyLm9iajogdG9vbF9ibmFtZS5jDQpAQCAtNDU1LDYgKzQ1OSw4IEBACiAJJChDQ0QpICQoQ0ZMQUdTKSAvRm8iJEAiIC4uL2xpYi9zdHJ0b29mZnQuYw0KIHdhcm5sZXNzZC5vYmo6IC4uL2xpYi93YXJubGVzcy5jDQogCSQoQ0NEKSAkKENGTEFHUykgL0ZvIiRAIiAuLi9saWIvd2Fybmxlc3MuYw0KK3NsaXN0X3djZC5vYmo6IHNsaXN0X3djLmMNCisJJChDQ0QpICQoQ0ZMQUdTKSAvRm8iJEAiIHNsaXN0X3djLmMNCiB0b29sX2Jpbm1vZGVkLm9iajogdG9vbF9iaW5tb2RlLmMNCiAJJChDQ0QpICQoQ0ZMQUdTKSAvRm8iJEAiIHRvb2xfYmlubW9kZS5jDQogdG9vbF9ibmFtZWQub2JqOiB0b29sX2JuYW1lLmMNCmRpZmYgLS1naXQgYS9zcmMvY2hlY2tzcmMud2hpdGVsaXN0IGIvc3JjL2NoZWNrc3JjLndoaXRlbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3OGFjMS4uMDAwMDAwMAotLS0gYS9zcmMvY2hlY2tzcmMud2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0gKiAnbmFtZT1AZmlsZW5hbWUsZmlsZW5hbWUyLGZpbGVuYW1lMycKLSAqICduYW1lPUBmaWxlbmFtZTt0eXBlPWltYWdlL2dpZixmaWxlbmFtZTIsZmlsZW5hbWUzJwotICBmaWxlID0gZm9wZW4obmFtZSwgInIiKTsgLyogVk1TICovCmRpZmYgLS1naXQgYS9zcmMvY3VybC5yYyBiL3NyYy9jdXJsLnJjCmluZGV4IDNkYjU5YmQuLjMwYWU0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9jdXJsLnJjCisrKyBiL3NyYy9jdXJsLnJjCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgQkVHSU4KICAgICBCTE9DSyAiMDQwOTA0YjAiCiAgICAgQkVHSU4KLSAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICAgICAgImNVUkwsIGh0dHA6Ly9jdXJsLmhheHguc2UvXDAiCisgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAgICAgICJjVVJMLCBodHRwczovL2N1cmwuaGF4eC5zZS9cMCIKICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAgIlRoZSBjVVJMIGV4ZWN1dGFibGVcMCIKICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsICAgICAgQ1VSTF9WRVJTSU9OICJcMCIKICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAgICAgImN1cmxcMCIKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICAgICAgIlRoZSBjVVJMIGV4ZWN1dGFibGVcMCIKICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICAgQ1VSTF9WRVJTSU9OICJcMCIKICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICAgIqkgIiBDVVJMX0NPUFlSSUdIVCAiXDAiCi0gICAgICBWQUxVRSAiTGljZW5zZSIsICAgICAgICAgICJodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWxcMCIKKyAgICAgIFZBTFVFICJMaWNlbnNlIiwgICAgICAgICAgImh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWxcMCIKICAgICBFTkQKICAgRU5ECiAKZGlmZiAtLWdpdCBhL3NyYy9tYWtlZmlsZS5kaiBiL3NyYy9tYWtlZmlsZS5kagppbmRleCBkMzQyODU5Li42YTZjOGY5IDEwMDY0NAotLS0gYS9zcmMvbWFrZWZpbGUuZGoKKysrIGIvc3JjL21ha2VmaWxlLmRqCkBAIC0xLDYgKzEsMjggQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgIEFkYXB0ZWQgZm9yIGRqZ3BwMiAvIFdhdHQtMzIgLyBET1MgYnkKLSMgIEdpc2xlIFZhbmVtIDxndmFuZW1AYnJvYWRwYXJrLm5vPgorIyBDb3B5cmlnaHQgKEMpIDIwMDMgLSAyMDA3LCBHaXNsZSBWYW5lbSA8Z3ZhbmVtQHlhaG9vLm5vPi4KKyMgQ29weXJpZ2h0IChDKSAyMDAzIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyMKKyMgIEFkYXB0ZWQgZm9yIGRqZ3BwMiAvIFdhdHQtMzIgLyBET1MKICMKIAogREVQRU5EX1BSRVJFUSA9ICMgdG9vbF9odWdlaGVscC5jCmRpZmYgLS1naXQgYS9zcmMvbWtoZWxwLnBsIGIvc3JjL21raGVscC5wbAppbmRleCAwODhhMDlhLi43NGE0YjgyIDEwMDY0NAotLS0gYS9zcmMvbWtoZWxwLnBsCisrKyBiL3NyYy9ta2hlbHAucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3NsaXN0X3djLmMgYi9zcmMvc2xpc3Rfd2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjMzYjFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NsaXN0X3djLmMKQEAgLTAsMCArMSw3MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidG9vbF9zZXR1cC5oIgorCisjaWZuZGVmIENVUkxfRElTQUJMRV9MSUJDVVJMX09QVElPTgorCisjaW5jbHVkZSAic2xpc3Rfd2MuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBzbGlzdF93Y19hcHBlbmQoKSBhcHBlbmRzIGEgc3RyaW5nIHRvIHRoZSBsaW5rZWQgbGlzdC4gVGhpcyBmdW5jdGlvbiBjYW4gYmUKKyAqIHVzZWQgYXMgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYXMgd2VsbCBhcyBhbiBhcHBlbmQgZnVuY3Rpb24uCisgKi8KK3N0cnVjdCBzbGlzdF93YyAqc2xpc3Rfd2NfYXBwZW5kKHN0cnVjdCBzbGlzdF93YyAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRhdGEpCit7CisgIHN0cnVjdCBjdXJsX3NsaXN0ICpuZXdfaXRlbSA9IGN1cmxfc2xpc3RfYXBwZW5kKE5VTEwsIGRhdGEpOworCisgIGlmKCFuZXdfaXRlbSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZighbGlzdCkgeworICAgIGxpc3QgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbGlzdF93YykpOworCisgICAgaWYoIWxpc3QpIHsKKyAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobmV3X2l0ZW0pOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbGlzdC0+Zmlyc3QgPSBuZXdfaXRlbTsKKyAgICBsaXN0LT5sYXN0ID0gbmV3X2l0ZW07CisgICAgcmV0dXJuIGxpc3Q7CisgIH0KKworICBsaXN0LT5sYXN0LT5uZXh0ID0gbmV3X2l0ZW07CisgIGxpc3QtPmxhc3QgPSBsaXN0LT5sYXN0LT5uZXh0OworICByZXR1cm4gbGlzdDsKK30KKworLyogYmUgbmljZSBhbmQgY2xlYW4gdXAgcmVzb3VyY2VzICovCit2b2lkIHNsaXN0X3djX2ZyZWVfYWxsKHN0cnVjdCBzbGlzdF93YyAqbGlzdCkKK3sKKyAgaWYoIWxpc3QpCisgICAgcmV0dXJuOworCisgIGN1cmxfc2xpc3RfZnJlZV9hbGwobGlzdC0+Zmlyc3QpOworICBmcmVlKGxpc3QpOworfQorCisjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OICovCmRpZmYgLS1naXQgYS9zcmMvc2xpc3Rfd2MuaCBiL3NyYy9zbGlzdF93Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTQzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2xpc3Rfd2MuaApAQCAtMCwwICsxLDU2IEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1NMSVNUX1dDX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfU0xJU1RfV0NfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidG9vbF9zZXR1cC5oIgorI2lmbmRlZiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04KKworLyogbGlua2VkLWxpc3Qgc3RydWN0dXJlIHdpdGggbGFzdCBub2RlIGNhY2hlIGZvciBlYXN5c3JjICovCitzdHJ1Y3Qgc2xpc3Rfd2MgeworICBzdHJ1Y3QgY3VybF9zbGlzdCAqZmlyc3Q7CisgIHN0cnVjdCBjdXJsX3NsaXN0ICpsYXN0OworfTsKKworLyoKKyAqIE5BTUUgY3VybF9zbGlzdF93Y19hcHBlbmQoKQorICoKKyAqIERFU0NSSVBUSU9OCisgKgorICogQXBwZW5kcyBhIHN0cmluZyB0byBhIGxpbmtlZCBsaXN0LiBJZiBubyBsaXN0IGV4aXN0cywgaXQgd2lsbCBiZSBjcmVhdGVkCisgKiBmaXJzdC4gUmV0dXJucyB0aGUgbmV3IGxpc3QsIGFmdGVyIGFwcGVuZGluZy4KKyAqLworc3RydWN0IHNsaXN0X3djICpzbGlzdF93Y19hcHBlbmQoc3RydWN0IHNsaXN0X3djICosIGNvbnN0IGNoYXIgKik7CisKKy8qCisgKiBOQU1FIGN1cmxfc2xpc3RfZnJlZV9hbGwoKQorICoKKyAqIERFU0NSSVBUSU9OCisgKgorICogZnJlZSBhIHByZXZpb3VzbHkgYnVpbHQgY3VybF9zbGlzdF93Yy4KKyAqLwordm9pZCBzbGlzdF93Y19mcmVlX2FsbChzdHJ1Y3Qgc2xpc3Rfd2MgKik7CisKKyNlbmRpZiAvKiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04gKi8KKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NMSVNUX1dDX0ggKi8KKwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfYmlubW9kZS5jIGIvc3JjL3Rvb2xfYmlubW9kZS5jCmluZGV4IDU0OTViYTQuLjVjYTY0Y2QgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Jpbm1vZGUuYworKysgYi9zcmMvdG9vbF9iaW5tb2RlLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfYmlubW9kZS5oIGIvc3JjL3Rvb2xfYmlubW9kZS5oCmluZGV4IGI1Y2IwOGQuLjhiNDQ1YWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Jpbm1vZGUuaAorKysgYi9zcmMvdG9vbF9iaW5tb2RlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9ibmFtZS5jIGIvc3JjL3Rvb2xfYm5hbWUuYwppbmRleCAyNzc4MzA1Li41Y2M1YzE1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9ibmFtZS5jCisrKyBiL3NyYy90b29sX2JuYW1lLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfYm5hbWUuaCBiL3NyYy90b29sX2JuYW1lLmgKaW5kZXggNjljZjkyYy4uNjFiOTdiNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfYm5hbWUuaAorKysgYi9zcmMvdG9vbF9ibmFtZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2JfZGJnLmMgYi9zcmMvdG9vbF9jYl9kYmcuYwppbmRleCBmNTI3MTQ2Li45N2E1YzkyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9kYmcuYworKysgYi9zcmMvdG9vbF9jYl9kYmcuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9kYmcuaCBiL3NyYy90b29sX2NiX2RiZy5oCmluZGV4IGQwZWQ3YjAuLjdhYzE1Y2YgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX2RiZy5oCisrKyBiL3NyYy90b29sX2NiX2RiZy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2JfaGRyLmMgYi9zcmMvdG9vbF9jYl9oZHIuYwppbmRleCBhZjliYjg3Li5mN2Q4MzU1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9oZHIuYworKysgYi9zcmMvdG9vbF9jYl9oZHIuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY3VybHguaCIKIAogI2luY2x1ZGUgInRvb2xfY2ZnYWJsZS5oIgorI2luY2x1ZGUgInRvb2xfZG9zd2luLmgiCiAjaW5jbHVkZSAidG9vbF9tc2dzLmgiCiAjaW5jbHVkZSAidG9vbF9jYl9oZHIuaCIKIApAQCAtNDcsNiArNDgsNyBAQAogICBjb25zdCBjaGFyICpzdHIgPSBwdHI7CiAgIGNvbnN0IHNpemVfdCBjYiA9IHNpemUgKiBubWVtYjsKICAgY29uc3QgY2hhciAqZW5kID0gKGNoYXIqKXB0ciArIGNiOworICBjaGFyICp1cmwgPSBOVUxMOwogCiAgIC8qCiAgICAqIE9uY2UgdGhhdCBsaWJjdXJsIGhhcyBjYWxsZWQgYmFjayB0b29sX2hlYWRlcl9jYigpIHRoZSByZXR1cm5lZCB2YWx1ZQpAQCAtNzUsNiArNzcsOCBAQAogICAgIHNpemVfdCByYyA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBoZWFkcy0+c3RyZWFtKTsKICAgICBpZihyYyAhPSBjYikKICAgICAgIHJldHVybiByYzsKKyAgICAvKiBmbHVzaCB0aGUgc3RyZWFtIHRvIHNlbmQgb2ZmIHdoYXQgd2UgZ290IGVhcmxpZXIgKi8KKyAgICAodm9pZClmZmx1c2goaGVhZHMtPnN0cmVhbSk7CiAgIH0KIAogICAvKgpAQCAtODUsNyArODksOSBAQAogICAgKi8KIAogICBpZihoZHJjYmRhdGEtPmhvbm9yX2NkX2ZpbGVuYW1lICYmCi0gICAgIChjYiA+IDIwKSAmJiBjaGVja3ByZWZpeCgiQ29udGVudC1kaXNwb3NpdGlvbjoiLCBzdHIpKSB7CisgICAgIChjYiA+IDIwKSAmJiBjaGVja3ByZWZpeCgiQ29udGVudC1kaXNwb3NpdGlvbjoiLCBzdHIpICYmCisgICAgICFjdXJsX2Vhc3lfZ2V0aW5mbyhvdXRzLT5jb25maWctPmVhc3ksIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1cmwpICYmCisgICAgIHVybCAmJiAoY2hlY2twcmVmaXgoImh0dHA6Ly8iLCB1cmwpIHx8IGNoZWNrcHJlZml4KCJodHRwczovLyIsIHVybCkpKSB7CiAgICAgY29uc3QgY2hhciAqcCA9IHN0ciArIDIwOwogCiAgICAgLyogbG9vayBmb3IgdGhlICdmaWxlbmFtZT0nIHBhcmFtZXRlcgpAQCAtMTc5LDE1ICsxODUsMTIgQEAKICAgfQogCiAgIC8qIHNjYW4gZm9yIHRoZSBlbmQgbGV0dGVyIGFuZCBzdG9wIHRoZXJlICovCi0gIHEgPSBwOwotICB3aGlsZSgqcSkgewotICAgIGlmKHFbMV0gJiYgKHFbMF0gPT0gJ1xcJykpCi0gICAgICBxKys7Ci0gICAgZWxzZSBpZihxWzBdID09IHN0b3ApCisgIGZvcihxID0gcDsgKnE7ICsrcSkgeworICAgIGlmKCpxID09IHN0b3ApIHsKKyAgICAgICpxID0gJ1wwJzsKICAgICAgIGJyZWFrOwotICAgIHErKzsKKyAgICB9CiAgIH0KLSAgKnEgPSAnXDAnOwogCiAgIC8qIG1ha2Ugc3VyZSB0aGUgZmlsZSBuYW1lIGRvZXNuJ3QgZW5kIGluIFxyIG9yIFxuICovCiAgIHEgPSBzdHJjaHIocCwgJ1xyJyk7CkBAIC0yMDEsNiArMjA0LDE3IEBACiAgIGlmKGNvcHkgIT0gcCkKICAgICBtZW1tb3ZlKGNvcHksIHAsIHN0cmxlbihwKSArIDEpOwogCisjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU4zMikKKyAgeworICAgIGNoYXIgKnNhbml0aXplZDsKKyAgICBTQU5JVElaRWNvZGUgc2MgPSBzYW5pdGl6ZV9maWxlX25hbWUoJnNhbml0aXplZCwgY29weSwgMCk7CisgICAgQ3VybF9zYWZlZnJlZShjb3B5KTsKKyAgICBpZihzYykKKyAgICAgIHJldHVybiBOVUxMOworICAgIGNvcHkgPSBzYW5pdGl6ZWQ7CisgIH0KKyNlbmRpZiAvKiBNU0RPUyB8fCBXSU4zMiAqLworCiAgIC8qIGluIGNhc2Ugd2UgYnVpbHQgZGVidWcgZW5hYmxlZCwgd2UgYWxsb3cgYW4gZXZpcm9ubWVudCB2YXJpYWJsZQogICAgKiBuYW1lZCBDVVJMX1RFU1RESVIgdG8gcHJlZml4IHRoZSBnaXZlbiBmaWxlIG5hbWUgdG8gcHV0IGl0IGludG8gYQogICAgKiBzcGVjaWZpYyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX2hkci5oIGIvc3JjL3Rvb2xfY2JfaGRyLmgKaW5kZXggYmQ1MDQzMS4uYmI1NGJiYiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2JfaGRyLmgKKysrIGIvc3JjL3Rvb2xfY2JfaGRyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9wcmcuYyBiL3NyYy90b29sX2NiX3ByZy5jCmluZGV4IDllM2M1ZmIuLmVhZTgwZmUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3ByZy5jCisrKyBiL3NyYy90b29sX2NiX3ByZy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX3ByZy5oIGIvc3JjL3Rvb2xfY2JfcHJnLmgKaW5kZXggYzYzNWJlOC4uZDYyYjRhMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2JfcHJnLmgKKysrIGIvc3JjL3Rvb2xfY2JfcHJnLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9yZWEuYyBiL3NyYy90b29sX2NiX3JlYS5jCmluZGV4IDQ1NjVhMTUuLjg4MTM3YWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3JlYS5jCisrKyBiL3NyYy90b29sX2NiX3JlYS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX3JlYS5oIGIvc3JjL3Rvb2xfY2JfcmVhLmgKaW5kZXggNDI5NDE2Ni4uNWZiYzc5MyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2JfcmVhLmgKKysrIGIvc3JjL3Rvb2xfY2JfcmVhLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9zZWUuYyBiL3NyYy90b29sX2NiX3NlZS5jCmluZGV4IDJmNDllMWQuLjYyMWQ0NDAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3NlZS5jCisrKyBiL3NyYy90b29sX2NiX3NlZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX3NlZS5oIGIvc3JjL3Rvb2xfY2Jfc2VlLmgKaW5kZXggY2ViMjJkNi4uYjA3NzQxZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2Jfc2VlLmgKKysrIGIvc3JjL3Rvb2xfY2Jfc2VlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl93cnQuYyBiL3NyYy90b29sX2NiX3dydC5jCmluZGV4IDliZTM5M2YuLjA0MTM0NTcgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3dydC5jCisrKyBiL3NyYy90b29sX2NiX3dydC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX3dydC5oIGIvc3JjL3Rvb2xfY2Jfd3J0LmgKaW5kZXggZWNiZWZhOC4uZmM2MGJlMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2Jfd3J0LmgKKysrIGIvc3JjL3Rvb2xfY2Jfd3J0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jZmdhYmxlLmMgYi9zcmMvdG9vbF9jZmdhYmxlLmMKaW5kZXggYmE2YzQ2OC4uOGI2MGE5MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2ZnYWJsZS5jCisrKyBiL3NyYy90b29sX2NmZ2FibGUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MCw2ICs0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB+KENVUkxQUk9UT19GSUxFIHwgQ1VSTFBST1RPX1NDUCB8IENVUkxQUk9UT19TTUIgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMUFJPVE9fU01CUyk7CiAgIGNvbmZpZy0+cHJvdG9fcmVkaXJfcHJlc2VudCA9IEZBTFNFOworICBjb25maWctPnByb3RvX2RlZmF1bHQgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBmcmVlX2NvbmZpZ19maWVsZHMoc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnKQpAQCAtMTEzLDEwICsxMTQsMTEgQEAKICAgQ3VybF9zYWZlZnJlZShjb25maWctPmN1c3RvbXJlcXVlc3QpOwogICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+a3JibGV2ZWwpOwogCi0gIEN1cmxfc2FmZWZyZWUoY29uZmlnLT54b2F1dGgyX2JlYXJlcik7CisgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5vYXV0aF9iZWFyZXIpOwogCiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT51bml4X3NvY2tldF9wYXRoKTsKICAgQ3VybF9zYWZlZnJlZShjb25maWctPndyaXRlb3V0KTsKKyAgQ3VybF9zYWZlZnJlZShjb25maWctPnByb3RvX2RlZmF1bHQpOwogCiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoY29uZmlnLT5xdW90ZSk7CiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoY29uZmlnLT5wb3N0cXVvdGUpOwpAQCAtMTMzLDkgKzEzNSw5IEBACiAKICAgY3VybF9zbGlzdF9mcmVlX2FsbChjb25maWctPnRlbG5ldF9vcHRpb25zKTsKICAgY3VybF9zbGlzdF9mcmVlX2FsbChjb25maWctPnJlc29sdmUpOworICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGNvbmZpZy0+Y29ubmVjdF90byk7CiAKICAgQ3VybF9zYWZlZnJlZShjb25maWctPnNvY2tzcHJveHkpOwotICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+c29ja3M1X2dzc2FwaV9zZXJ2aWNlKTsKICAgQ3VybF9zYWZlZnJlZShjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSk7CiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5zZXJ2aWNlX25hbWUpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jZmdhYmxlLmggYi9zcmMvdG9vbF9jZmdhYmxlLmgKaW5kZXggMDQ4ZWI0Zi4uYWE5OGZjZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2ZnYWJsZS5oCisrKyBiL3NyYy90b29sX2NmZ2FibGUuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDYgKzUxLDcgQEAKICAgYm9vbCBwcm90b19wcmVzZW50OwogICBsb25nIHByb3RvX3JlZGlyOwogICBib29sIHByb3RvX3JlZGlyX3ByZXNlbnQ7CisgIGNoYXIgKnByb3RvX2RlZmF1bHQ7CiAgIGN1cmxfb2ZmX3QgcmVzdW1lX2Zyb207CiAgIGNoYXIgKnBvc3RmaWVsZHM7CiAgIGN1cmxfb2ZmX3QgcG9zdGZpZWxkc2l6ZTsKQEAgLTE1MCw2ICsxNTEsNyBAQAogICBzdHJ1Y3QgY3VybF9odHRwcG9zdCAqbGFzdF9wb3N0OwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqdGVsbmV0X29wdGlvbnM7CiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpyZXNvbHZlOworICBzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90bzsKICAgSHR0cFJlcSBodHRwcmVxOwogCiAgIC8qIGZvciBiYW5kd2lkdGggbGltaXRpbmcgZmVhdHVyZXM6ICovCkBAIC0xNjQsMTYgKzE2NiwxNSBAQAogCiAgIGNoYXIgKnNvY2tzcHJveHk7ICAgICAgICAgLyogc2V0IHRvIHNlcnZlciBzdHJpbmcgKi8KICAgaW50IHNvY2tzdmVyOyAgICAgICAgICAgICAvKiBzZXQgdG8gQ1VSTFBST1hZX1NPQ0tTKiBkZWZpbmUgKi8KLSAgY2hhciAqc29ja3M1X2dzc2FwaV9zZXJ2aWNlOyAgLyogc2V0IHNlcnZpY2UgbmFtZSBmb3IgZ3NzYXBpIHByaW5jaXBhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkZWZhdWx0IHJjbWQgKi8KLSAgY2hhciAqcHJveHlfc2VydmljZV9uYW1lOyAvKiBzZXQgc2VydmljZSBuYW1lIGZvciBwcm94eSBuZWdvdGlhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGRlZmF1bHQgSFRUUCAqLwotICBpbnQgc29ja3M1X2dzc2FwaV9uZWMgOyAgIC8qIFRoZSBORUMgcmVmZXJlbmNlIHNlcnZlciBkb2VzIG5vdCBwcm90ZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIGVuY3J5cHRpb24gdHlwZSBleGNoYW5nZSAqLwotICBjaGFyICpzZXJ2aWNlX25hbWU7ICAgICAgIC8qIHNldCBuZWdvdGlhdGlvbiBzZXJ2aWNlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkZWZhdWx0IEhUVFAgKi8KKyAgaW50IHNvY2tzNV9nc3NhcGlfbmVjOyAgICAvKiBUaGUgTkVDIHJlZmVyZW5jZSBzZXJ2ZXIgZG9lcyBub3QgcHJvdGVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNyeXB0aW9uIHR5cGUgZXhjaGFuZ2UgKi8KKyAgY2hhciAqcHJveHlfc2VydmljZV9uYW1lOyAvKiBzZXQgYXV0aGVudGljYXRpb24gc2VydmljZSBuYW1lIGZvciBIVFRQIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tTNSBwcm94aWVzICovCisgIGNoYXIgKnNlcnZpY2VfbmFtZTsgICAgICAgLyogc2V0IGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZSBmb3IgRElHRVNULU1ENSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJiZXJvcyA1IGFuZCBTUE5FR08gKi8KIAogICBib29sIHRjcF9ub2RlbGF5OworICBib29sIHRjcF9mYXN0b3BlbjsKICAgbG9uZyByZXFfcmV0cnk7ICAgICAgICAgICAvKiBudW1iZXIgb2YgcmV0cmllcyAqLwogICBsb25nIHJldHJ5X2RlbGF5OyAgICAgICAgIC8qIGRlbGF5IGJldHdlZW4gcmV0cmllcyAoaW4gc2Vjb25kcykgKi8KICAgbG9uZyByZXRyeV9tYXh0aW1lOyAgICAgICAvKiBtYXhpbXVtIHRpbWUgdG8ga2VlcCByZXRyeWluZyAqLwpAQCAtMTgyLDYgKzE4Myw3IEBACiAgIGNoYXIgKmZ0cF9hbHRlcm5hdGl2ZV90b191c2VyOyAgLyogc2VuZCBjb21tYW5kIGlmIFVTRVIvUEFTUyBmYWlscyAqLwogICBpbnQgZnRwX2ZpbGVtZXRob2Q7CiAgIGxvbmcgdGZ0cF9ibGtzaXplOyAgICAgICAgLyogVEZUUCBCTEtTSVpFIG9wdGlvbiAqLworICBib29sIHRmdHBfbm9fb3B0aW9uczsgICAgIC8qIGRvIG5vdCBzZW5kIFRGVFAgb3B0aW9ucyByZXF1ZXN0cyAqLwogICBib29sIGlnbm9yZWNsOyAgICAgICAgICAgIC8qIC0taWdub3JlLWNvbnRlbnQtbGVuZ3RoICovCiAgIGJvb2wgZGlzYWJsZV9zZXNzaW9uaWQ7CiAKQEAgLTE5OSw2ICsyMDEsNyBAQAogICBib29sIHhhdHRyOyAgICAgICAgICAgICAgIC8qIHN0b3JlIG1ldGFkYXRhIGluIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKi8KICAgbG9uZyBnc3NhcGlfZGVsZWdhdGlvbjsKICAgYm9vbCBzc2xfYWxsb3dfYmVhc3Q7ICAgICAvKiBhbGxvdyB0aGlzIFNTTCB2dWxuZXJhYmlsaXR5ICovCisgIGJvb2wgc3NsX25vX3Jldm9rZTsgICAgICAgLyogZGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MgKi8KIAogICBib29sIHVzZV9tZXRhbGluazsgICAgICAgIC8qIHByb2Nlc3MgZ2l2ZW4gVVJMcyBhcyBtZXRhbGluayBYTUwgZmlsZSAqLwogICBtZXRhbGlua2ZpbGUgKm1ldGFsaW5rZmlsZV9saXN0OyAvKiBwb2ludCB0byB0aGUgZmlyc3Qgbm9kZSAqLwpAQCAtMjA2LDEyICsyMDksMTMgQEAKICNpZmRlZiBDVVJMREVCVUcKICAgYm9vbCB0ZXN0X2V2ZW50X2Jhc2VkOwogI2VuZGlmCi0gIGNoYXIgKnhvYXV0aDJfYmVhcmVyOyAgICAgICAgICAgLyogWE9BVVRIMiBiZWFyZXIgdG9rZW4gKi8KKyAgY2hhciAqb2F1dGhfYmVhcmVyOyAgICAgICAgICAgICAvKiBPQXV0aCAyLjAgYmVhcmVyIHRva2VuICovCiAgIGJvb2wgbm9ucG47ICAgICAgICAgICAgICAgICAgICAgLyogZW5hYmxlL2Rpc2FibGUgVExTIE5QTiBleHRlbnNpb24gKi8KICAgYm9vbCBub2FscG47ICAgICAgICAgICAgICAgICAgICAvKiBlbmFibGUvZGlzYWJsZSBUTFMgQUxQTiBleHRlbnNpb24gKi8KICAgY2hhciAqdW5peF9zb2NrZXRfcGF0aDsgICAgICAgICAvKiBwYXRoIHRvIFVuaXggZG9tYWluIHNvY2tldCAqLwogICBib29sIGZhbHNlc3RhcnQ7CiAgIGJvb2wgcGF0aF9hc19pczsKKyAgZG91YmxlIGV4cGVjdDEwMHRpbWVvdXQ7CiAgIHN0cnVjdCBHbG9iYWxDb25maWcgKmdsb2JhbDsKICAgc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqcHJldjsKICAgc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqbmV4dDsgICAvKiBBbHdheXMgbGFzdCBpbiB0aGUgc3RydWN0ICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jb252ZXJ0LmMgYi9zcmMvdG9vbF9jb252ZXJ0LmMKaW5kZXggZWNjZTAzNi4uZDBmNWRjYiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY29udmVydC5jCisrKyBiL3NyYy90b29sX2NvbnZlcnQuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jb252ZXJ0LmggYi9zcmMvdG9vbF9jb252ZXJ0LmgKaW5kZXggMzJkNDczZi4uZDFiMWQyMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY29udmVydC5oCisrKyBiL3NyYy90b29sX2NvbnZlcnQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2RpcmhpZS5jIGIvc3JjL3Rvb2xfZGlyaGllLmMKaW5kZXggYjZhODA2Ny4uYjY1ZGI0MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZGlyaGllLmMKKysrIGIvc3JjL3Rvb2xfZGlyaGllLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfZGlyaGllLmggYi9zcmMvdG9vbF9kaXJoaWUuaAppbmRleCA1ZjE5NTc1Li5jYzY3Njg3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9kaXJoaWUuaAorKysgYi9zcmMvdG9vbF9kaXJoaWUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Rvc3dpbi5jIGIvc3JjL3Rvb2xfZG9zd2luLmMKaW5kZXggZGQ2ZThiYi4uYWVkNjU3YSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZG9zd2luLmMKKysrIGIvc3JjL3Rvb2xfZG9zd2luLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODUsNDQgKzg1LDI1OSBAQAogIyAgaW5jbHVkZSA8ZmNudGwuaD4gICAgICAgICAgICAgICAgLyogX3VzZV9sZm4oZikgcHJvdG90eXBlICovCiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKm1zZG9zaWZ5IChjb25zdCBjaGFyICpmaWxlX25hbWUpOwotc3RhdGljIGNoYXIgKnJlbmFtZV9pZl9kb3NfZGV2aWNlX25hbWUgKGNoYXIgKmZpbGVfbmFtZSk7CisjaWZuZGVmIFVOSVRURVNUUworc3RhdGljIFNBTklUSVpFY29kZSB0cnVuY2F0ZV9kcnlydW4oY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB0cnVuY2F0ZV9wb3MpOworI2lmZGVmIE1TRE9TCitzdGF0aWMgU0FOSVRJWkVjb2RlIG1zZG9zaWZ5KGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKKyNlbmRpZgorc3RhdGljIFNBTklUSVpFY29kZSByZW5hbWVfaWZfcmVzZXJ2ZWRfZG9zX2RldmljZV9uYW1lKGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CisjZW5kaWYgLyogIVVOSVRURVNUUyAoc3RhdGljIGRlY2xhcmF0aW9ucyB1c2VkIGlmIG5vIHVuaXQgdGVzdHMpICovCisKIAogLyoKLSAqIHNhbml0aXplX2Rvc19uYW1lOiByZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyBob2xkaW5nIGEKLSAqIHZhbGlkIGZpbGUgbmFtZSB3aGljaCB3aWxsIGJlIGEgdHJhbnNmb3JtYXRpb24gb2YgZ2l2ZW4gYXJndW1lbnQKLSAqIGluIGNhc2UgdGhpcyB3YXNuJ3QgYWxyZWFkeSBhIHZhbGlkIGZpbGUgbmFtZS4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIG93bmVyc2hpcCBvZiBnaXZlbiBhcmd1bWVudCwgZnJlZSdpbmcgaXQgYmVmb3JlCi0gKiByZXR1cm5pbmcuIENhbGxlciBpcyByZXNwb25zaWJsZSBvZiBmcmVlJ2luZyByZXR1cm5lZCBzdHJpbmcuIFVwb24KLSAqIG91dCBvZiBtZW1vcnkgY29uZGl0aW9uIGZ1bmN0aW9uIHJldHVybnMgTlVMTC4KLSAqLworU2FuaXRpemUgYSBmaWxlIG9yIHBhdGggbmFtZS4KIAotY2hhciAqc2FuaXRpemVfZG9zX25hbWUoY2hhciAqZmlsZV9uYW1lKQorQWxsIGJhbm5lZCBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZCBieSB1bmRlcnNjb3JlcywgZm9yIGV4YW1wbGU6CitmPypmb28gPT4gZl9fZm9vCitmOmZvbzo6JERBVEEgPT4gZl9mb29fXyREQVRBCitmOlxmb286YmFyID0+IGZfX2Zvb19iYXIKK2Y6XGZvbzpiYXIgPT4gZjpcZm9vOmJhciAgIChmbGFnIFNBTklUSVpFX0FMTE9XX1BBVEgpCisKK1RoaXMgZnVuY3Rpb24gd2FzIGltcGxlbWVudGVkIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lcyBpbiAnTmFtaW5nIEZpbGVzLAorUGF0aHMsIGFuZCBOYW1lc3BhY2VzJyBzZWN0aW9uICdOYW1pbmcgQ29udmVudGlvbnMnLgoraHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcuYXNweAorCitGbGFncworLS0tLS0KK1NBTklUSVpFX0FMTE9XX0NPTE9OUzogICAgIEFsbG93IGNvbG9ucy4KK1dpdGhvdXQgdGhpcyBmbGFnIGNvbG9ucyBhcmUgc2FuaXRpemVkLgorCitTQU5JVElaRV9BTExPV19QQVRIOiAgICAgICBBbGxvdyBwYXRoIHNlcGFyYXRvcnMgYW5kIGNvbG9ucy4KK1dpdGhvdXQgdGhpcyBmbGFnIHBhdGggc2VwYXJhdG9ycyBhbmQgY29sb25zIGFyZSBzYW5pdGl6ZWQuCisKK1NBTklUSVpFX0FMTE9XX1JFU0VSVkVEOiAgIEFsbG93IHJlc2VydmVkIGRldmljZSBuYW1lcy4KK1dpdGhvdXQgdGhpcyBmbGFnIGEgcmVzZXJ2ZWQgZGV2aWNlIG5hbWUgaXMgcmVuYW1lZCAoQ09NMSA9PiBfQ09NMSkgdW5sZXNzIGl0J3MKK2luIGEgVU5DIHByZWZpeGVkIHBhdGguCisKK1NBTklUSVpFX0FMTE9XX1RSVU5DQVRFOiAgIEFsbG93IHRydW5jYXRpbmcgYSBsb25nIGZpbGVuYW1lLgorV2l0aG91dCB0aGlzIGZsYWcgaWYgdGhlIHNhbml0aXplZCBmaWxlbmFtZSBvciBwYXRoIHdpbGwgYmUgdG9vIGxvbmcgYW4gZXJyb3IKK29jY3Vycy4gV2l0aCB0aGlzIGZsYWcgdGhlIGZpbGVuYW1lIC0tYW5kIG5vdCBhbnkgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGgtLSBtYXkKK2JlIHRydW5jYXRlZCB0byBhdCBsZWFzdCBhIHNpbmdsZSBjaGFyYWN0ZXIuIEEgZmlsZW5hbWUgZm9sbG93ZWQgYnkgYW4KK2FsdGVybmF0ZSBkYXRhIHN0cmVhbSAoQURTKSBjYW5ub3QgYmUgdHJ1bmNhdGVkIGluIGFueSBjYXNlLgorCitTdWNjZXNzOiAoU0FOSVRJWkVfRVJSX09LKSAqc2FuaXRpemVkIHBvaW50cyB0byBhIHNhbml0aXplZCBjb3B5IG9mIGZpbGVfbmFtZS4KK0ZhaWx1cmU6ICghPSBTQU5JVElaRV9FUlJfT0spICpzYW5pdGl6ZWQgaXMgTlVMTC4KKyovCitTQU5JVElaRWNvZGUgc2FuaXRpemVfZmlsZV9uYW1lKGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKQogewotICBjaGFyIG5ld19uYW1lW1BBVEhfTUFYXTsKKyAgY2hhciAqcCwgKnRhcmdldDsKKyAgc2l6ZV90IGxlbjsKKyAgU0FOSVRJWkVjb2RlIHNjOworICBzaXplX3QgbWF4X3Nhbml0aXplZF9sZW47CisKKyAgaWYoIXNhbml0aXplZCkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKKworICAqc2FuaXRpemVkID0gTlVMTDsKIAogICBpZighZmlsZV9uYW1lKQotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UOwogCi0gIGlmKHN0cmxlbihmaWxlX25hbWUpID49IFBBVEhfTUFYKQotICAgIGZpbGVfbmFtZVtQQVRIX01BWC0xXSA9ICdcMCc7IC8qIHRydW5jYXRlIGl0ICovCisgIGlmKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX1BBVEgpKSB7CisjaWZuZGVmIE1TRE9TCisgICAgaWYoZmlsZV9uYW1lWzBdID09ICdcXCcgJiYgZmlsZV9uYW1lWzFdID09ICdcXCcpCisgICAgICAvKiBVTkMgcHJlZml4ZWQgcGF0aCBcXCAoZWcgXFw/XEM6XGZvbykgKi8KKyAgICAgIG1heF9zYW5pdGl6ZWRfbGVuID0gMzI3NjctMTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgIG1heF9zYW5pdGl6ZWRfbGVuID0gUEFUSF9NQVgtMTsKKyAgfQorICBlbHNlCisgICAgLyogVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgZmlsZW5hbWUuCisgICAgICAgRklMRU5BTUVfTUFYIGlzIG9mdGVuIHRoZSBzYW1lIGFzIFBBVEhfTUFYLCBpbiBvdGhlciB3b3JkcyBpdCBpcyAyNjAgYW5kCisgICAgICAgZG9lcyBub3QgZGlzY291bnQgdGhlIHBhdGggaW5mb3JtYXRpb24gdGhlcmVmb3JlIHdlIHNob3VsZG4ndCB1c2UgaXQuICovCisgICAgbWF4X3Nhbml0aXplZF9sZW4gPSAoUEFUSF9NQVgtMSA+IDI1NSkgPyAyNTUgOiBQQVRIX01BWC0xOwogCi0gIHN0cmNweShuZXdfbmFtZSwgbXNkb3NpZnkoZmlsZV9uYW1lKSk7CisgIGxlbiA9IHN0cmxlbihmaWxlX25hbWUpOworICBpZihsZW4gPiBtYXhfc2FuaXRpemVkX2xlbikgeworICAgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19UUlVOQ0FURSkgfHwKKyAgICAgICB0cnVuY2F0ZV9kcnlydW4oZmlsZV9uYW1lLCBtYXhfc2FuaXRpemVkX2xlbikpCisgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKIAotICBDdXJsX3NhZmVmcmVlKGZpbGVfbmFtZSk7CisgICAgbGVuID0gbWF4X3Nhbml0aXplZF9sZW47CisgIH0KIAotICByZXR1cm4gc3RyZHVwKHJlbmFtZV9pZl9kb3NfZGV2aWNlX25hbWUobmV3X25hbWUpKTsKKyAgdGFyZ2V0ID0gbWFsbG9jKGxlbiArIDEpOworICBpZighdGFyZ2V0KQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfT1VUX09GX01FTU9SWTsKKworICBzdHJuY3B5KHRhcmdldCwgZmlsZV9uYW1lLCBsZW4pOworICB0YXJnZXRbbGVuXSA9ICdcMCc7CisKKyNpZm5kZWYgTVNET1MKKyAgaWYoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgJiYgIXN0cm5jbXAodGFyZ2V0LCAiXFxcXD9cXCIsIDQpKQorICAgIC8qIFNraXAgdGhlIGxpdGVyYWwgcGF0aCBwcmVmaXggXFw/XCAqLworICAgIHAgPSB0YXJnZXQgKyA0OworICBlbHNlCisjZW5kaWYKKyAgICBwID0gdGFyZ2V0OworCisgIC8qIHJlcGxhY2UgY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBvdGhlciBiYW5uZWQgY2hhcmFjdGVycyAqLworICBmb3IoOyAqcDsgKytwKSB7CisgICAgY29uc3QgY2hhciAqYmFubmVkOworCisgICAgaWYoKDEgPD0gKnAgJiYgKnAgPD0gMzEpIHx8CisgICAgICAgKCEoZmxhZ3MgJiAoU0FOSVRJWkVfQUxMT1dfQ09MT05TfFNBTklUSVpFX0FMTE9XX1BBVEgpKSAmJiAqcCA9PSAnOicpIHx8CisgICAgICAgKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSAmJiAoKnAgPT0gJy8nIHx8ICpwID09ICdcXCcpKSkgeworICAgICAgKnAgPSAnXyc7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBmb3IoYmFubmVkID0gInw8PlwiPyoiOyAqYmFubmVkOyArK2Jhbm5lZCkgeworICAgICAgaWYoKnAgPT0gKmJhbm5lZCkgeworICAgICAgICAqcCA9ICdfJzsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyogcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBhbmQgcGVyaW9kcyBpZiBub3QgYWxsb3dpbmcgcGF0aHMgKi8KKyAgaWYoIShmbGFncyAmIFNBTklUSVpFX0FMTE9XX1BBVEgpICYmIGxlbikgeworICAgIGNoYXIgKmNsaXAgPSBOVUxMOworCisgICAgcCA9ICZ0YXJnZXRbbGVuXTsKKyAgICBkbyB7CisgICAgICAtLXA7CisgICAgICBpZigqcCAhPSAnICcgJiYgKnAgIT0gJy4nKQorICAgICAgICBicmVhazsKKyAgICAgIGNsaXAgPSBwOworICAgIH0gd2hpbGUocCAhPSB0YXJnZXQpOworCisgICAgaWYoY2xpcCkgeworICAgICAgKmNsaXAgPSAnXDAnOworICAgICAgbGVuID0gY2xpcCAtIHRhcmdldDsKKyAgICB9CisgIH0KKworI2lmZGVmIE1TRE9TCisgIHNjID0gbXNkb3NpZnkoJnAsIHRhcmdldCwgZmxhZ3MpOworICBmcmVlKHRhcmdldCk7CisgIGlmKHNjKQorICAgIHJldHVybiBzYzsKKyAgdGFyZ2V0ID0gcDsKKyAgbGVuID0gc3RybGVuKHRhcmdldCk7CisKKyAgaWYobGVuID4gbWF4X3Nhbml0aXplZF9sZW4pIHsKKyAgICBmcmVlKHRhcmdldCk7CisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisgIH0KKyNlbmRpZgorCisgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19SRVNFUlZFRCkpIHsKKyAgICBzYyA9IHJlbmFtZV9pZl9yZXNlcnZlZF9kb3NfZGV2aWNlX25hbWUoJnAsIHRhcmdldCwgZmxhZ3MpOworICAgIGZyZWUodGFyZ2V0KTsKKyAgICBpZihzYykKKyAgICAgIHJldHVybiBzYzsKKyAgICB0YXJnZXQgPSBwOworICAgIGxlbiA9IHN0cmxlbih0YXJnZXQpOworCisgICAgaWYobGVuID4gbWF4X3Nhbml0aXplZF9sZW4pIHsKKyAgICAgIGZyZWUodGFyZ2V0KTsKKyAgICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOworICAgIH0KKyAgfQorCisgICpzYW5pdGl6ZWQgPSB0YXJnZXQ7CisgIHJldHVybiBTQU5JVElaRV9FUlJfT0s7CiB9CiAKLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0YWtlbiB3aXRoIG1vZGlmaWNhdGlvbiBmcm9tIHRoZSBESkdQUAotICogcG9ydCBvZiB0YXIgMS4xMi4gVGhleSB1c2UgYWxnb3JpdGhtcyBvcmlnaW5hbGx5IGZyb20gREpUQVIuICovCiAKLXN0YXRpYyBjb25zdCBjaGFyICptc2Rvc2lmeSAoY29uc3QgY2hhciAqZmlsZV9uYW1lKQorLyoKK1Rlc3QgaWYgdHJ1bmNhdGluZyBhIHBhdGggdG8gYSBmaWxlIHdpbGwgbGVhdmUgYXQgbGVhc3QgYSBzaW5nbGUgY2hhcmFjdGVyIGluCit0aGUgZmlsZW5hbWUuIEZpbGVuYW1lcyBzdWZmaXhlZCBieSBhbiBhbHRlcm5hdGUgZGF0YSBzdHJlYW0gY2FuJ3QgYmUKK3RydW5jYXRlZC4gVGhpcyBwZXJmb3JtcyBhIGRyeSBydW4sIG5vdGhpbmcgaXMgbW9kaWZpZWQuCisKK0dvb2QgdHJ1bmNhdGVfcG9zIDk6ICAgIEM6XGZvb1xiYXIgID0+ICBDOlxmb29cYmEKK0dvb2QgdHJ1bmNhdGVfcG9zIDY6ICAgIEM6XGZvbyAgICAgID0+ICBDOlxmb28KK0dvb2QgdHJ1bmNhdGVfcG9zIDU6ICAgIEM6XGZvbyAgICAgID0+ICBDOlxmbworQmFkKiB0cnVuY2F0ZV9wb3MgNTogICAgQzpmb28gICAgICAgPT4gIEM6Zm9vCitCYWQgdHJ1bmNhdGVfcG9zIDU6ICAgICBDOlxmb286YWRzICA9PiAgQzpcZm8KK0JhZCB0cnVuY2F0ZV9wb3MgOTogICAgIEM6XGZvbzphZHMgID0+ICBDOlxmb286YWQKK0JhZCB0cnVuY2F0ZV9wb3MgNTogICAgIEM6XGZvb1xiYXIgID0+ICBDOlxmbworQmFkIHRydW5jYXRlX3BvcyA1OiAgICAgQzpcZm9vXCAgICAgPT4gIEM6XGZvCitCYWQgdHJ1bmNhdGVfcG9zIDc6ICAgICBDOlxmb29cICAgICA9PiAgQzpcZm9vXAorRXJyb3IgdHJ1bmNhdGVfcG9zIDc6ICAgQzpcZm9vICAgICAgPT4gIChwb3Mgb3V0IG9mIHJhbmdlKQorQmFkIHRydW5jYXRlX3BvcyAxOiAgICAgQzpcZm9vXCAgICAgPT4gIEMKKworKiBDOmZvbyBpcyBhbWJpZ3VvdXMsIEMgY291bGQgZW5kIHVwIGJlaW5nIGEgZHJpdmUgb3IgZmlsZSB0aGVyZWZvcmUgc29tZXRoaW5nCisgIGxpa2UgQzpzdXBlcmxvbmdmaWxlbmFtZSBjYW4ndCBiZSB0cnVuY2F0ZWQuCisKK1JldHVybnMKK1NBTklUSVpFX0VSUl9PSzogR29vZCAtLSAncGF0aCcgY2FuIGJlIHRydW5jYXRlZAorU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDogQmFkIC0tICdwYXRoJyBjYW5ub3QgYmUgdHJ1bmNhdGVkCishPSBTQU5JVElaRV9FUlJfT0sgJiYgIT0gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDogRXJyb3IKKyovCitTQU5JVElaRWNvZGUgdHJ1bmNhdGVfZHJ5cnVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHNpemVfdCB0cnVuY2F0ZV9wb3MpCiB7Ci0gIHN0YXRpYyBjaGFyIGRvc19uYW1lW1BBVEhfTUFYXTsKKyAgc2l6ZV90IGxlbjsKKworICBpZighcGF0aCkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKKworICBsZW4gPSBzdHJsZW4ocGF0aCk7CisKKyAgaWYodHJ1bmNhdGVfcG9zID4gbGVuKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UOworCisgIGlmKCFsZW4gfHwgIXRydW5jYXRlX3BvcykKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKworICBpZihzdHJwYnJrKCZwYXRoW3RydW5jYXRlX3BvcyAtIDFdLCAiXFwvOiIpKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOworCisgIC8qIEM6XGZvbyBjYW4gYmUgdHJ1bmNhdGVkIGJ1dCBDOlxmb286YWRzIGNhbid0ICovCisgIGlmKHRydW5jYXRlX3BvcyA+IDEpIHsKKyAgICBjb25zdCBjaGFyICpwID0gJnBhdGhbdHJ1bmNhdGVfcG9zIC0gMV07CisgICAgZG8geworICAgICAgLS1wOworICAgICAgaWYoKnAgPT0gJzonKQorICAgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKyAgICB9IHdoaWxlKHAgIT0gcGF0aCAmJiAqcCAhPSAnXFwnICYmICpwICE9ICcvJyk7CisgIH0KKworICByZXR1cm4gU0FOSVRJWkVfRVJSX09LOworfQorCisvKiBUaGUgZnVuY3Rpb25zIG1zZG9zaWZ5LCByZW5hbWVfaWZfZG9zX2RldmljZV9uYW1lIGFuZCBfX2NydDBfZ2xvYl9mdW5jdGlvbgorICogd2VyZSB0YWtlbiB3aXRoIG1vZGlmaWNhdGlvbiBmcm9tIHRoZSBESkdQUCBwb3J0IG9mIHRhciAxLjEyLiBUaGV5IHVzZQorICogYWxnb3JpdGhtcyBvcmlnaW5hbGx5IGZyb20gREpUQVIuCisgKi8KKworLyoKK0V4dHJhIHNhbml0aXphdGlvbiBNU0RPUyBmb3IgZmlsZV9uYW1lLgorCitUaGlzIGlzIGEgc3VwcG9ydGluZyBmdW5jdGlvbiBmb3Igc2FuaXRpemVfZmlsZV9uYW1lLgorCitXYXJuaW5nOiBUaGlzIGlzIGFuIE1TRE9TIGxlZ2FjeSBmdW5jdGlvbiBhbmQgd2FzIHB1cnBvc2VseSB3cml0dGVuIGluIGEgd2F5Cit0aGF0IHNvbWUgcGF0aCBpbmZvcm1hdGlvbiBtYXkgcGFzcyB0aHJvdWdoLiBGb3IgZXhhbXBsZSBkcml2ZSBsZXR0ZXIgbmFtZXMKKyhDOiwgRDosIGV0YykgYXJlIGFsbG93ZWQgdG8gcGFzcyB0aHJvdWdoLiBGb3Igc2FuaXRpemluZyBhIGZpbGVuYW1lIHVzZQorc2FuaXRpemVfZmlsZV9uYW1lLgorCitTdWNjZXNzOiAoU0FOSVRJWkVfRVJSX09LKSAqc2FuaXRpemVkIHBvaW50cyB0byBhIHNhbml0aXplZCBjb3B5IG9mIGZpbGVfbmFtZS4KK0ZhaWx1cmU6ICghPSBTQU5JVElaRV9FUlJfT0spICpzYW5pdGl6ZWQgaXMgTlVMTC4KKyovCisjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChVTklUVEVTVFMpCitTQU5JVElaRWNvZGUgbXNkb3NpZnkoY2hhciAqKmNvbnN0IHNhbml0aXplZCwgY29uc3QgY2hhciAqZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykKK3sKKyAgY2hhciBkb3NfbmFtZVtQQVRIX01BWF07CiAgIHN0YXRpYyBjb25zdCBjaGFyIGlsbGVnYWxfY2hhcnNfZG9zW10gPSAiLissIDs9W10iIC8qIGlsbGVnYWwgaW4gRE9TICovCi0gICAgInw8PlxcXCI6PyoiOyAvKiBpbGxlZ2FsIGluIERPUyAmIFc5NSAqLworICAgICJ8PD4vXFxcIjo/KiI7IC8qIGlsbGVnYWwgaW4gRE9TICYgVzk1ICovCiAgIHN0YXRpYyBjb25zdCBjaGFyICppbGxlZ2FsX2NoYXJzX3c5NSA9ICZpbGxlZ2FsX2NoYXJzX2Rvc1s4XTsKICAgaW50IGlkeCwgZG90X2lkeDsKICAgY29uc3QgY2hhciAqcyA9IGZpbGVfbmFtZTsKQEAgLTEzMSw2ICszNDYsMTkgQEAKICAgY29uc3QgY2hhciAqaWxsZWdhbF9hbGllbnMgPSBpbGxlZ2FsX2NoYXJzX2RvczsKICAgc2l6ZV90IGxlbiA9IHNpemVvZihpbGxlZ2FsX2NoYXJzX2RvcykgLSAxOwogCisgIGlmKCFzYW5pdGl6ZWQpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQ7CisKKyAgKnNhbml0aXplZCA9IE5VTEw7CisKKyAgaWYoIWZpbGVfbmFtZSkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKKworICBpZihzdHJsZW4oZmlsZV9uYW1lKSA+IFBBVEhfTUFYLTEgJiYKKyAgICAgKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19UUlVOQ0FURSkgfHwKKyAgICAgIHRydW5jYXRlX2RyeXJ1bihmaWxlX25hbWUsIFBBVEhfTUFYLTEpKSkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKwogICAvKiBTdXBwb3J0IGZvciBXaW5kb3dzIDlYIFZGQVQgc3lzdGVtcywgd2hlbiBhdmFpbGFibGUuICovCiAgIGlmKF91c2VfbGZuKGZpbGVfbmFtZSkpIHsKICAgICBpbGxlZ2FsX2FsaWVucyA9IGlsbGVnYWxfY2hhcnNfdzk1OwpAQCAtMTQwLDIyICszNjgsMzUgQEAKICAgLyogR2V0IHBhc3QgdGhlIGRyaXZlIGxldHRlciwgaWYgYW55LiAqLwogICBpZihzWzBdID49ICdBJyAmJiBzWzBdIDw9ICd6JyAmJiBzWzFdID09ICc6JykgewogICAgICpkKysgPSAqcysrOwotICAgICpkKysgPSAqcysrOworICAgICpkID0gKChmbGFncyAmIChTQU5JVElaRV9BTExPV19DT0xPTlN8U0FOSVRJWkVfQUxMT1dfUEFUSCkpKSA/ICc6JyA6ICdfJzsKKyAgICArK2QsICsrczsKICAgfQogCiAgIGZvcihpZHggPSAwLCBkb3RfaWR4ID0gLTE7ICpzICYmIGQgPCBkbGltaXQ7IHMrKywgZCsrKSB7CiAgICAgaWYobWVtY2hyKGlsbGVnYWxfYWxpZW5zLCAqcywgbGVuKSkgeworCisgICAgICBpZigoZmxhZ3MgJiAoU0FOSVRJWkVfQUxMT1dfQ09MT05TfFNBTklUSVpFX0FMTE9XX1BBVEgpKSAmJiAqcyA9PSAnOicpCisgICAgICAgICpkID0gJzonOworICAgICAgZWxzZSBpZigoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSAmJiAoKnMgPT0gJy8nIHx8ICpzID09ICdcXCcpKQorICAgICAgICAqZCA9ICpzOwogICAgICAgLyogRG90cyBhcmUgc3BlY2lhbDogRE9TIGRvZXNuJ3QgYWxsb3cgdGhlbSBhcyB0aGUgbGVhZGluZyBjaGFyYWN0ZXIsCiAgICAgICAgICBhbmQgYSBmaWxlIG5hbWUgY2Fubm90IGhhdmUgbW9yZSB0aGFuIGEgc2luZ2xlIGRvdC4gIFdlIGxlYXZlIHRoZQogICAgICAgICAgZmlyc3Qgbm9uLWxlYWRpbmcgZG90IGFsb25lLCB1bmxlc3MgaXQgY29tZXMgdG9vIGNsb3NlIHRvIHRoZQogICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuYW1lOiB3ZSB3YW50IHNoLmxleC5jIHRvIGJlY29tZSBzaF9sZXguYywgbm90CiAgICAgICAgICBzaC5sZXgtYy4gICovCi0gICAgICBpZigqcyA9PSAnLicpIHsKLSAgICAgICAgaWYoaWR4ID09IDAgJiYgKHNbMV0gPT0gJy8nIHx8IChzWzFdID09ICcuJyAmJiBzWzJdID09ICcvJykpKSB7CisgICAgICBlbHNlIGlmKCpzID09ICcuJykgeworICAgICAgICBpZigoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSAmJiBpZHggPT0gMCAmJgorICAgICAgICAgICAoc1sxXSA9PSAnLycgfHwgc1sxXSA9PSAnXFwnIHx8CisgICAgICAgICAgICAoc1sxXSA9PSAnLicgJiYgKHNbMl0gPT0gJy8nIHx8IHNbMl0gPT0gJ1xcJykpKSkgewogICAgICAgICAgIC8qIENvcHkgIi4vIiBhbmQgIi4uLyIgdmVyYmF0aW0uICAqLwogICAgICAgICAgICpkKysgPSAqcysrOwotICAgICAgICAgIGlmKCpzID09ICcuJykKKyAgICAgICAgICBpZihkID09IGRsaW1pdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGlmKCpzID09ICcuJykgewogICAgICAgICAgICAgKmQrKyA9ICpzKys7CisgICAgICAgICAgICBpZihkID09IGRsaW1pdCkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQogICAgICAgICAgICpkID0gKnM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZihpZHggPT0gMCkKQEAgLTE3NywxMiArNDE4LDIyIEBACiAgICAgICBlbHNlIGlmKCpzID09ICcrJyAmJiBzWzFdID09ICcrJykgewogICAgICAgICBpZihpZHggLSAyID09IGRvdF9pZHgpIHsgLyogLmMrKywgLmgrKyBldGMuICovCiAgICAgICAgICAgKmQrKyA9ICd4JzsKKyAgICAgICAgICBpZihkID09IGRsaW1pdCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICpkICAgPSAneCc7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgLyogbGliZysrIGV0Yy4gICovCi0gICAgICAgICAgbWVtY3B5IChkLCAicGx1cyIsIDQpOwotICAgICAgICAgIGQgKz0gMzsKKyAgICAgICAgICBpZihkbGltaXQgLSBkIDwgNCkgeworICAgICAgICAgICAgKmQrKyA9ICd4JzsKKyAgICAgICAgICAgIGlmKGQgPT0gZGxpbWl0KQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICpkICAgPSAneCc7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5IChkLCAicGx1cyIsIDQpOworICAgICAgICAgICAgZCArPSAzOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzKys7CiAgICAgICAgIGlkeCsrOwpAQCAtMTkyLDQ0ICs0NDMsMTY4IEBACiAgICAgfQogICAgIGVsc2UKICAgICAgICpkID0gKnM7Ci0gICAgaWYoKnMgPT0gJy8nKSB7CisgICAgaWYoKnMgPT0gJy8nIHx8ICpzID09ICdcXCcpIHsKICAgICAgIGlkeCA9IDA7CiAgICAgICBkb3RfaWR4ID0gLTE7CiAgICAgfQogICAgIGVsc2UKICAgICAgIGlkeCsrOwogICB9Ci0KICAgKmQgPSAnXDAnOwotICByZXR1cm4gZG9zX25hbWU7Ci19CiAKLXN0YXRpYyBjaGFyICpyZW5hbWVfaWZfZG9zX2RldmljZV9uYW1lIChjaGFyICpmaWxlX25hbWUpCisgIGlmKCpzKSB7CisgICAgLyogZG9zX25hbWUgaXMgdHJ1bmNhdGVkLCBjaGVjayB0aGF0IHRydW5jYXRpb24gcmVxdWlyZW1lbnRzIGFyZSBtZXQsCisgICAgICAgc3BlY2lmaWNhbGx5IHRydW5jYXRpbmcgYSBmaWxlbmFtZSBzdWZmaXhlZCBieSBhbiBhbHRlcm5hdGUgZGF0YSBzdHJlYW0KKyAgICAgICBvciB0cnVuY2F0aW5nIHRoZSBlbnRpcmUgZmlsZW5hbWUgaXMgbm90IGFsbG93ZWQuICovCisgICAgaWYoIShmbGFncyAmIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFKSB8fCBzdHJwYnJrKHMsICJcXC86IikgfHwKKyAgICAgICB0cnVuY2F0ZV9kcnlydW4oZG9zX25hbWUsIGQgLSBkb3NfbmFtZSkpCisgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKyAgfQorCisgICpzYW5pdGl6ZWQgPSBzdHJkdXAoZG9zX25hbWUpOworICByZXR1cm4gKCpzYW5pdGl6ZWQgPyBTQU5JVElaRV9FUlJfT0sgOiBTQU5JVElaRV9FUlJfT1VUX09GX01FTU9SWSk7Cit9CisjZW5kaWYgLyogTVNET1MgfHwgVU5JVFRFU1RTICovCisKKy8qCitSZW5hbWUgZmlsZV9uYW1lIGlmIGl0J3MgYSByZXNlcnZlZCBkb3MgZGV2aWNlIG5hbWUuCisKK1RoaXMgaXMgYSBzdXBwb3J0aW5nIGZ1bmN0aW9uIGZvciBzYW5pdGl6ZV9maWxlX25hbWUuCisKK1dhcm5pbmc6IFRoaXMgaXMgYW4gTVNET1MgbGVnYWN5IGZ1bmN0aW9uIGFuZCB3YXMgcHVycG9zZWx5IHdyaXR0ZW4gaW4gYSB3YXkKK3RoYXQgc29tZSBwYXRoIGluZm9ybWF0aW9uIG1heSBwYXNzIHRocm91Z2guIEZvciBleGFtcGxlIGRyaXZlIGxldHRlciBuYW1lcworKEM6LCBEOiwgZXRjKSBhcmUgYWxsb3dlZCB0byBwYXNzIHRocm91Z2guIEZvciBzYW5pdGl6aW5nIGEgZmlsZW5hbWUgdXNlCitzYW5pdGl6ZV9maWxlX25hbWUuCisKK1N1Y2Nlc3M6IChTQU5JVElaRV9FUlJfT0spICpzYW5pdGl6ZWQgcG9pbnRzIHRvIGEgc2FuaXRpemVkIGNvcHkgb2YgZmlsZV9uYW1lLgorRmFpbHVyZTogKCE9IFNBTklUSVpFX0VSUl9PSykgKnNhbml0aXplZCBpcyBOVUxMLgorKi8KK1NBTklUSVpFY29kZSByZW5hbWVfaWZfcmVzZXJ2ZWRfZG9zX2RldmljZV9uYW1lKGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpCiB7CiAgIC8qIFdlIGNvdWxkIGhhdmUgYSBmaWxlIHdob3NlIG5hbWUgaXMgYSBkZXZpY2Ugb24gTVMtRE9TLiAgVHJ5aW5nIHRvCiAgICAqIHJldHJpZXZlIHN1Y2ggYSBmaWxlIHdvdWxkIGZhaWwgYXQgYmVzdCBhbmQgd2VkZ2UgdXMgYXQgd29yc3QuICBXZSBuZWVkCiAgICAqIHRvIHJlbmFtZSBzdWNoIGZpbGVzLiAqLwotICBjaGFyICpiYXNlOwotICBzdHJ1Y3Rfc3RhdCBzdF9idWY7CisgIGNoYXIgKnAsICpiYXNlOwogICBjaGFyIGZuYW1lW1BBVEhfTUFYXTsKKyNpZmRlZiBNU0RPUworICBzdHJ1Y3Rfc3RhdCBzdF9idWY7CisjZW5kaWYKKworICBpZighc2FuaXRpemVkKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UOworCisgICpzYW5pdGl6ZWQgPSBOVUxMOworCisgIGlmKCFmaWxlX25hbWUpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQ7CisKKyAgLyogSWdub3JlIFVOQyBwcmVmaXhlZCBwYXRocywgdGhleSBhcmUgYWxsb3dlZCB0byBjb250YWluIGEgcmVzZXJ2ZWQgbmFtZS4gKi8KKyNpZm5kZWYgTVNET1MKKyAgaWYoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgJiYKKyAgICAgZmlsZV9uYW1lWzBdID09ICdcXCcgJiYgZmlsZV9uYW1lWzFdID09ICdcXCcpIHsKKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGZpbGVfbmFtZSk7CisgICAgKnNhbml0aXplZCA9IG1hbGxvYyhsZW4gKyAxKTsKKyAgICBpZighKnNhbml0aXplZCkKKyAgICAgIHJldHVybiBTQU5JVElaRV9FUlJfT1VUX09GX01FTU9SWTsKKyAgICBzdHJuY3B5KCpzYW5pdGl6ZWQsIGZpbGVfbmFtZSwgbGVuICsgMSk7CisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9PSzsKKyAgfQorI2VuZGlmCisKKyAgaWYoc3RybGVuKGZpbGVfbmFtZSkgPiBQQVRIX01BWC0xICYmCisgICAgICghKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpIHx8CisgICAgICB0cnVuY2F0ZV9kcnlydW4oZmlsZV9uYW1lLCBQQVRIX01BWC0xKSkpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CiAKICAgc3RybmNweShmbmFtZSwgZmlsZV9uYW1lLCBQQVRIX01BWC0xKTsKICAgZm5hbWVbUEFUSF9NQVgtMV0gPSAnXDAnOwogICBiYXNlID0gYmFzZW5hbWUoZm5hbWUpOwotICBpZigoKHN0YXQoYmFzZSwgJnN0X2J1ZikpID09IDApICYmIChTX0lTQ0hSKHN0X2J1Zi5zdF9tb2RlKSkpIHsKLSAgICBzaXplX3QgYmxlbiA9IHN0cmxlbihiYXNlKTsKIAotICAgIGlmKHN0cmxlbihmbmFtZSkgPj0gUEFUSF9NQVgtMSkgewotICAgICAgLyogTWFrZSByb29tIGZvciB0aGUgJ18nICovCi0gICAgICBibGVuLS07Ci0gICAgICBiYXNlW2JsZW5dID0gJ1wwJzsKKyAgLyogUmVuYW1lIHJlc2VydmVkIGRldmljZSBuYW1lcyB0aGF0IGFyZSBrbm93biB0byBiZSBhY2Nlc3NpYmxlIHdpdGhvdXQgXFwuXAorICAgICBFeGFtcGxlczogQ09OID0+IF9DT04sIENPTi5FWFQgPT4gQ09OX0VYVCwgQ09OOkFEUyA9PiBDT05fQURTCisgICAgIGh0dHBzOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2VuLXVzL2tiLzc0NDk2CisgICAgIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3LmFzcHgKKyAgICAgKi8KKyAgZm9yKHAgPSBmbmFtZTsgcDsgcCA9IChwID09IGZuYW1lICYmIGZuYW1lICE9IGJhc2UgPyBiYXNlIDogTlVMTCkpIHsKKyAgICBzaXplX3QgcF9sZW47CisgICAgaW50IHggPSAoY3VybF9zdHJuZXF1YWwocCwgIkNPTiIsIDMpIHx8CisgICAgICAgICAgICAgY3VybF9zdHJuZXF1YWwocCwgIlBSTiIsIDMpIHx8CisgICAgICAgICAgICAgY3VybF9zdHJuZXF1YWwocCwgIkFVWCIsIDMpIHx8CisgICAgICAgICAgICAgY3VybF9zdHJuZXF1YWwocCwgIk5VTCIsIDMpKSA/IDMgOgorICAgICAgICAgICAgKGN1cmxfc3RybmVxdWFsKHAsICJDTE9DSyQiLCA2KSkgPyA2IDoKKyAgICAgICAgICAgIChjdXJsX3N0cm5lcXVhbChwLCAiQ09NIiwgMykgfHwgY3VybF9zdHJuZXF1YWwocCwgIkxQVCIsIDMpKSA/CisgICAgICAgICAgICAgICgoJzEnIDw9IHBbM10gJiYgcFszXSA8PSAnOScpID8gNCA6IDMpIDogMDsKKworICAgIGlmKCF4KQorICAgICAgY29udGludWU7CisKKyAgICAvKiB0aGUgZGV2aWNlcyBtYXkgYmUgYWNjZXNzaWJsZSB3aXRoIGFuIGV4dGVuc2lvbiBvciBBRFMsIGZvcgorICAgICAgIGV4YW1wbGUgQ09OLkFJUiBhbmQgJ0NPTiAuIEFJUicgYW5kIENPTjpBSVIgYWNjZXNzIGNvbnNvbGUgKi8KKworICAgIGZvcig7IHBbeF0gPT0gJyAnOyArK3gpCisgICAgICA7CisKKyAgICBpZihwW3hdID09ICcuJykgeworICAgICAgcFt4XSA9ICdfJzsKKyAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICAvKiBQcmVwZW5kIGEgJ18nLiAgKi8KLSAgICBtZW1tb3ZlKGJhc2UgKyAxLCBiYXNlLCBibGVuICsgMSk7Ci0gICAgYmFzZVswXSA9ICdfJzsKLSAgICBzdHJjcHkoZmlsZV9uYW1lLCBmbmFtZSk7CisgICAgZWxzZSBpZihwW3hdID09ICc6JykgeworICAgICAgaWYoIShmbGFncyAmIChTQU5JVElaRV9BTExPV19DT0xPTlN8U0FOSVRJWkVfQUxMT1dfUEFUSCkpKSB7CisgICAgICAgIHBbeF0gPSAnXyc7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgKyt4OworICAgIH0KKyAgICBlbHNlIGlmKHBbeF0pIC8qIG5vIG1hdGNoICovCisgICAgICBjb250aW51ZTsKKworICAgIC8qIHAgcG9pbnRzIHRvICdDT04nIG9yICdDT04gJyBvciAnQ09OOicsIGV0YyAqLworICAgIHBfbGVuID0gc3RybGVuKHApOworCisgICAgLyogUHJlcGVuZCBhICdfJyAqLworICAgIGlmKHN0cmxlbihmbmFtZSkgPT0gUEFUSF9NQVgtMSkgeworICAgICAgLS1wX2xlbjsKKyAgICAgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19UUlVOQ0FURSkgfHwgdHJ1bmNhdGVfZHJ5cnVuKHAsIHBfbGVuKSkKKyAgICAgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisgICAgICBwW3BfbGVuXSA9ICdcMCc7CisgICAgfQorICAgIG1lbW1vdmUocCArIDEsIHAsIHBfbGVuICsgMSk7CisgICAgcFswXSA9ICdfJzsKKyAgICArK3BfbGVuOworCisgICAgLyogaWYgZm5hbWUgd2FzIGp1c3QgbW9kaWZpZWQgdGhlbiB0aGUgYmFzZW5hbWUgcG9pbnRlciBtdXN0IGJlIHVwZGF0ZWQgKi8KKyAgICBpZihwID09IGZuYW1lKQorICAgICAgYmFzZSA9IGJhc2VuYW1lKGZuYW1lKTsKICAgfQotICByZXR1cm4gZmlsZV9uYW1lOworCisgIC8qIFRoaXMgaXMgdGhlIGxlZ2FjeSBwb3J0aW9uIGZyb20gcmVuYW1lX2lmX2Rvc19kZXZpY2VfbmFtZSB0aGF0IGNoZWNrcyBmb3IKKyAgICAgcmVzZXJ2ZWQgZGV2aWNlIG5hbWVzLiBJdCBvbmx5IHdvcmtzIG9uIE1TRE9TLiBPbiBXaW5kb3dzIFhQIHRoZSBzdGF0CisgICAgIGNoZWNrIGVycm9ycyB3aXRoIEVJTlZBTCBpZiB0aGUgZGV2aWNlIG5hbWUgaXMgcmVzZXJ2ZWQuIE9uIFdpbmRvd3MKKyAgICAgVmlzdGEvNy84IGl0IHNldHMgbW9kZSBTX0lGUkVHIChyZWd1bGFyIGZpbGUgb3IgZGV2aWNlKS4gQWNjb3JkaW5nIHRvIE1TRE4KKyAgICAgc3RhdCBkb2MgdGhlIGxhdHRlciBiZWhhdmlvciBpcyBjb3JyZWN0LCBidXQgdGhhdCBkb2Vzbid0IGhlbHAgdXMgaWRlbnRpZnkKKyAgICAgd2hldGhlciBpdCdzIGEgcmVzZXJ2ZWQgZGV2aWNlIG5hbWUgYW5kIG5vdCBhIHJlZ3VsYXIgZmlsZSBuYW1lLiAqLworI2lmZGVmIE1TRE9TCisgIGlmKGJhc2UgJiYgKChzdGF0KGJhc2UsICZzdF9idWYpKSA9PSAwKSAmJiAoU19JU0NIUihzdF9idWYuc3RfbW9kZSkpKSB7CisgICAgLyogUHJlcGVuZCBhICdfJyAqLworICAgIHNpemVfdCBibGVuID0gc3RybGVuKGJhc2UpOworICAgIGlmKGJsZW4pIHsKKyAgICAgIGlmKHN0cmxlbihmbmFtZSkgPT0gUEFUSF9NQVgtMSkgeworICAgICAgICAtLWJsZW47CisgICAgICAgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19UUlVOQ0FURSkgfHwgdHJ1bmNhdGVfZHJ5cnVuKGJhc2UsIGJsZW4pKQorICAgICAgICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOworICAgICAgICBiYXNlW2JsZW5dID0gJ1wwJzsKKyAgICAgIH0KKyAgICAgIG1lbW1vdmUoYmFzZSArIDEsIGJhc2UsIGJsZW4gKyAxKTsKKyAgICAgIGJhc2VbMF0gPSAnXyc7CisgICAgICArK2JsZW47CisgICAgfQorICB9CisjZW5kaWYKKworICAqc2FuaXRpemVkID0gc3RyZHVwKGZuYW1lKTsKKyAgcmV0dXJuICgqc2FuaXRpemVkID8gU0FOSVRJWkVfRVJSX09LIDogU0FOSVRJWkVfRVJSX09VVF9PRl9NRU1PUlkpOwogfQogCiAjaWYgZGVmaW5lZChNU0RPUykgJiYgKGRlZmluZWQoX19ESkdQUF9fKSB8fCBkZWZpbmVkKF9fR08zMl9fKSkKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Rvc3dpbi5oIGIvc3JjL3Rvb2xfZG9zd2luLmgKaW5kZXggY2QyMTZkYi4uZjY0OWVmMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZG9zd2luLmgKKysrIGIvc3JjL3Rvb2xfZG9zd2luLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw3ICsyNSwyOSBAQAogCiAjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU4zMikKIAotY2hhciAqc2FuaXRpemVfZG9zX25hbWUoY2hhciAqZmlsZV9uYW1lKTsKKyNkZWZpbmUgU0FOSVRJWkVfQUxMT1dfQ09MT05TICAgICgxPDwwKSAgLyogQWxsb3cgY29sb25zICovCisjZGVmaW5lIFNBTklUSVpFX0FMTE9XX1BBVEggICAgICAoMTw8MSkgIC8qIEFsbG93IHBhdGggc2VwYXJhdG9ycyBhbmQgY29sb25zICovCisjZGVmaW5lIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVEICAoMTw8MikgIC8qIEFsbG93IHJlc2VydmVkIGRldmljZSBuYW1lcyAqLworI2RlZmluZSBTQU5JVElaRV9BTExPV19UUlVOQ0FURSAgKDE8PDMpICAvKiBBbGxvdyB0cnVuY2F0aW5nIGEgbG9uZyBmaWxlbmFtZSAqLworCit0eXBlZGVmIGVudW0geworICBTQU5JVElaRV9FUlJfT0sgPSAwLCAgICAgICAgICAgLyogMCAtIE9LICovCisgIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEgsICAgICAvKiAxIC0gdGhlIHBhdGggaXMgaW52YWxpZCAqLworICBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5ULCAgICAgLyogMiAtIGJhZCBmdW5jdGlvbiBwYXJhbWV0ZXIgKi8KKyAgU0FOSVRJWkVfRVJSX09VVF9PRl9NRU1PUlksICAgIC8qIDMgLSBvdXQgb2YgbWVtb3J5ICovCisgIFNBTklUSVpFX0VSUl9MQVNUIC8qIG5ldmVyIHVzZSEgKi8KK30gU0FOSVRJWkVjb2RlOworCitTQU5JVElaRWNvZGUgc2FuaXRpemVfZmlsZV9uYW1lKGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKKyNpZmRlZiBVTklUVEVTVFMKK1NBTklUSVpFY29kZSB0cnVuY2F0ZV9kcnlydW4oY29uc3QgY2hhciAqcGF0aCwgY29uc3Qgc2l6ZV90IHRydW5jYXRlX3Bvcyk7CitTQU5JVElaRWNvZGUgbXNkb3NpZnkoY2hhciAqKmNvbnN0IHNhbml0aXplZCwgY29uc3QgY2hhciAqZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CitTQU5JVElaRWNvZGUgcmVuYW1lX2lmX3Jlc2VydmVkX2Rvc19kZXZpY2VfbmFtZShjaGFyICoqY29uc3Qgc2FuaXRpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKKyNlbmRpZiAvKiBVTklUVEVTVFMgKi8KIAogI2lmIGRlZmluZWQoTVNET1MpICYmIChkZWZpbmVkKF9fREpHUFBfXykgfHwgZGVmaW5lZChfX0dPMzJfXykpCiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Vhc3lzcmMuYyBiL3NyYy90b29sX2Vhc3lzcmMuYwppbmRleCAwNDgyZWY2Li5jMmRjY2Y5IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9lYXN5c3JjLmMKKysrIGIvc3JjL3Rvb2xfZWFzeXNyYy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIxLDYgKzIxLDggQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSAidG9vbF9zZXR1cC5oIgogCisjaW5jbHVkZSAic2xpc3Rfd2MuaCIKKwogI2lmbmRlZiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04KIAogI2RlZmluZSBFTkFCTEVfQ1VSTFhfUFJJTlRGCkBAIC0zNSwxOCArMzcsMTggQEAKIAogLyogZ2xvYmFsIHZhcmlhYmxlIGRlZmluaXRpb25zLCBmb3IgZWFzeS1pbnRlcmZhY2Ugc291cmNlIGNvZGUgZ2VuZXJhdGlvbiAqLwogCi1zdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY19kZWNsID0gTlVMTDsgLyogVmFyaWFibGUgZGVjbGFyYXRpb25zICovCi1zdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY19kYXRhID0gTlVMTDsgLyogQnVpbGQgc2xpc3RzLCBmb3JtcyBldGMuICovCi1zdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY19jb2RlID0gTlVMTDsgLyogU2V0b3B0IGNhbGxzICovCi1zdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY190b29oYXJkID0gTlVMTDsgLyogVW5jb252ZXJ0aWJsZSBzZXRvcHQgKi8KLXN0cnVjdCBjdXJsX3NsaXN0ICplYXN5c3JjX2NsZWFuID0gTlVMTDsgIC8qIENsZWFuIHVwIGFsbG9jYXRlZCBkYXRhICovCitzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfZGVjbCA9IE5VTEw7IC8qIFZhcmlhYmxlIGRlY2xhcmF0aW9ucyAqLworc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2RhdGEgPSBOVUxMOyAvKiBCdWlsZCBzbGlzdHMsIGZvcm1zIGV0Yy4gKi8KK3N0cnVjdCBzbGlzdF93YyAqZWFzeXNyY19jb2RlID0gTlVMTDsgLyogU2V0b3B0IGNhbGxzICovCitzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfdG9vaGFyZCA9IE5VTEw7IC8qIFVuY29udmVydGlibGUgc2V0b3B0ICovCitzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfY2xlYW4gPSBOVUxMOyAgLyogQ2xlYW4gdXAgYWxsb2NhdGVkIGRhdGEgKi8KIGludCBlYXN5c3JjX2Zvcm1fY291bnQgPSAwOwogaW50IGVhc3lzcmNfc2xpc3RfY291bnQgPSAwOwogCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3JjaGVhZFtdPXsKICAgIi8qKioqKioqKiogU2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjdXJsIGNvbW1hbmQgbGluZSB0b29sICoqKioqKioqKioiLAogICAiICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OiIsCi0gICIgKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwiLAorICAiICogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbCIsCiAgICIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyIsCiAgICIjaW5jbHVkZSA8Y3VybC9jdXJsLmg+IiwKICAgIiIsCkBAIC03NywyNCArNzksMjMgQEAKIC8qIENsZWFuIHVwIGFsbCBzb3VyY2UgY29kZSBpZiB3ZSBydW4gb3V0IG9mIG1lbW9yeSAqLwogc3RhdGljIHZvaWQgZWFzeXNyY19mcmVlKHZvaWQpCiB7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoZWFzeXNyY19kZWNsKTsKKyAgc2xpc3Rfd2NfZnJlZV9hbGwoZWFzeXNyY19kZWNsKTsKICAgZWFzeXNyY19kZWNsID0gTlVMTDsKLSAgY3VybF9zbGlzdF9mcmVlX2FsbChlYXN5c3JjX2RhdGEpOworICBzbGlzdF93Y19mcmVlX2FsbChlYXN5c3JjX2RhdGEpOwogICBlYXN5c3JjX2RhdGEgPSBOVUxMOwotICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGVhc3lzcmNfY29kZSk7CisgIHNsaXN0X3djX2ZyZWVfYWxsKGVhc3lzcmNfY29kZSk7CiAgIGVhc3lzcmNfY29kZSA9IE5VTEw7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoZWFzeXNyY190b29oYXJkKTsKKyAgc2xpc3Rfd2NfZnJlZV9hbGwoZWFzeXNyY190b29oYXJkKTsKICAgZWFzeXNyY190b29oYXJkID0gTlVMTDsKLSAgY3VybF9zbGlzdF9mcmVlX2FsbChlYXN5c3JjX2NsZWFuKTsKKyAgc2xpc3Rfd2NfZnJlZV9hbGwoZWFzeXNyY19jbGVhbik7CiAgIGVhc3lzcmNfY2xlYW4gPSBOVUxMOwogfQogCiAvKiBBZGQgYSBzb3VyY2UgbGluZSB0byB0aGUgbWFpbiBjb2RlIG9yIHJlbWFya3MgKi8KLUNVUkxjb2RlIGVhc3lzcmNfYWRkKHN0cnVjdCBjdXJsX3NsaXN0ICoqcGxpc3QsIGNvbnN0IGNoYXIgKmxpbmUpCitDVVJMY29kZSBlYXN5c3JjX2FkZChzdHJ1Y3Qgc2xpc3Rfd2MgKipwbGlzdCwgY29uc3QgY2hhciAqbGluZSkKIHsKICAgQ1VSTGNvZGUgcmV0ID0gQ1VSTEVfT0s7Ci0gIHN0cnVjdCBjdXJsX3NsaXN0ICpsaXN0ID0KLSAgICBjdXJsX3NsaXN0X2FwcGVuZCgqcGxpc3QsIGxpbmUpOworICBzdHJ1Y3Qgc2xpc3Rfd2MgKmxpc3QgPSBzbGlzdF93Y19hcHBlbmQoKnBsaXN0LCBsaW5lKTsKICAgaWYoIWxpc3QpIHsKICAgICBlYXN5c3JjX2ZyZWUoKTsKICAgICByZXQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwpAQCAtMTA0LDcgKzEwNSw3IEBACiAgIHJldHVybiByZXQ7CiB9CiAKLUNVUkxjb2RlIGVhc3lzcmNfYWRkZihzdHJ1Y3QgY3VybF9zbGlzdCAqKnBsaXN0LCBjb25zdCBjaGFyICpmbXQsIC4uLikKK0NVUkxjb2RlIGVhc3lzcmNfYWRkZihzdHJ1Y3Qgc2xpc3Rfd2MgKipwbGlzdCwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAgIENVUkxjb2RlIHJldDsKICAgY2hhciAqYnVmcDsKQEAgLTE0MywxMiArMTQ0LDE0IEBACiAgICAgZm9yKGk9MDsgKChjID0gc3JjaGFyZFtpXSkgIT0gTlVMTCk7IGkrKykKICAgICAgIENIS1JFVChlYXN5c3JjX2FkZCgmZWFzeXNyY19jb2RlLCBjKSk7CiAgICAgLyogRWFjaCB1bmNvbnZlcnRlZCBvcHRpb24gKi8KLSAgICBmb3IocHRyPWVhc3lzcmNfdG9vaGFyZDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCi0gICAgICBDSEtSRVQoZWFzeXNyY19hZGQoJmVhc3lzcmNfY29kZSwgcHRyLT5kYXRhKSk7CisgICAgaWYoZWFzeXNyY190b29oYXJkKSB7CisgICAgICBmb3IocHRyPWVhc3lzcmNfdG9vaGFyZC0+Zmlyc3Q7IHB0cjsgcHRyID0gcHRyLT5uZXh0KQorICAgICAgICBDSEtSRVQoZWFzeXNyY19hZGQoJmVhc3lzcmNfY29kZSwgcHRyLT5kYXRhKSk7CisgICAgfQogICAgIENIS1JFVChlYXN5c3JjX2FkZCgmZWFzeXNyY19jb2RlLCAiIikpOwogICAgIENIS1JFVChlYXN5c3JjX2FkZCgmZWFzeXNyY19jb2RlLCAiKi8iKSk7CiAKLSAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGVhc3lzcmNfdG9vaGFyZCk7CisgICAgc2xpc3Rfd2NfZnJlZV9hbGwoZWFzeXNyY190b29oYXJkKTsKICAgICBlYXN5c3JjX3Rvb2hhcmQgPSBOVUxMOwogICB9CiAKQEAgLTE3MiwzOCArMTc1LDQwIEBACiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpwdHI7CiAgIGNoYXIgKm8gPSBjb25maWctPmxpYmN1cmw7CiAKLSAgaWYobykgewotICAgIEZJTEUgKm91dDsKLSAgICBib29sIGZvcGVuZWQgPSBGQUxTRTsKLSAgICBpZihzdHJjbXAobywgIi0iKSkgewotICAgICAgb3V0ID0gZm9wZW4obywgRk9QRU5fV1JJVEVURVhUKTsKLSAgICAgIGZvcGVuZWQgPSBUUlVFOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBvdXQgPSBzdGRvdXQ7Ci0gICAgaWYoIW91dCkKLSAgICAgIHdhcm5mKGNvbmZpZywgIkZhaWxlZCB0byBvcGVuICVzIHRvIHdyaXRlIGxpYmN1cmwgY29kZSFcbiIsIG8pOwotICAgIGVsc2UgewotICAgICAgaW50IGk7Ci0gICAgICBjb25zdCBjaGFyICpjOworICBGSUxFICpvdXQ7CisgIGJvb2wgZm9wZW5lZCA9IEZBTFNFOworICBpZihzdHJjbXAobywgIi0iKSkgeworICAgIG91dCA9IGZvcGVuKG8sIEZPUEVOX1dSSVRFVEVYVCk7CisgICAgZm9wZW5lZCA9IFRSVUU7CisgIH0KKyAgZWxzZQorICAgIG91dCA9IHN0ZG91dDsKKyAgaWYoIW91dCkKKyAgICB3YXJuZihjb25maWcsICJGYWlsZWQgdG8gb3BlbiAlcyB0byB3cml0ZSBsaWJjdXJsIGNvZGUhXG4iLCBvKTsKKyAgZWxzZSB7CisgICAgaW50IGk7CisgICAgY29uc3QgY2hhciAqYzsKIAotICAgICAgZm9yKGk9MDsgKChjID0gc3JjaGVhZFtpXSkgIT0gTlVMTCk7IGkrKykKLSAgICAgICAgZnByaW50ZihvdXQsICIlc1xuIiwgYyk7CisgICAgZm9yKGk9MDsgKChjID0gc3JjaGVhZFtpXSkgIT0gTlVMTCk7IGkrKykKKyAgICAgIGZwcmludGYob3V0LCAiJXNcbiIsIGMpOwogCi0gICAgICAvKiBEZWNsYXJlIHZhcmlhYmxlcyB1c2VkIGZvciBjb21wbGV4IHNldG9wdCB2YWx1ZXMgKi8KLSAgICAgIGZvcihwdHI9ZWFzeXNyY19kZWNsOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKKyAgICAvKiBEZWNsYXJlIHZhcmlhYmxlcyB1c2VkIGZvciBjb21wbGV4IHNldG9wdCB2YWx1ZXMgKi8KKyAgICBpZihlYXN5c3JjX2RlY2wpIHsKKyAgICAgIGZvcihwdHI9ZWFzeXNyY19kZWNsLT5maXJzdDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAgICAgICAgIGZwcmludGYob3V0LCAiICAlc1xuIiwgcHRyLT5kYXRhKTsKKyAgICB9CiAKLSAgICAgIC8qIFNldCB1cCBjb21wbGV4IHZhbHVlcyBmb3Igc2V0b3B0IGNhbGxzICovCi0gICAgICBpZihlYXN5c3JjX2RhdGEpIHsKLSAgICAgICAgZnByaW50ZihvdXQsICJcbiIpOwotCi0gICAgICAgIGZvcihwdHI9ZWFzeXNyY19kYXRhOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKLSAgICAgICAgICBmcHJpbnRmKG91dCwgIiAgJXNcbiIsIHB0ci0+ZGF0YSk7Ci0gICAgICB9Ci0KKyAgICAvKiBTZXQgdXAgY29tcGxleCB2YWx1ZXMgZm9yIHNldG9wdCBjYWxscyAqLworICAgIGlmKGVhc3lzcmNfZGF0YSkgewogICAgICAgZnByaW50ZihvdXQsICJcbiIpOwotICAgICAgZm9yKHB0cj1lYXN5c3JjX2NvZGU7IHB0cjsgcHRyID0gcHRyLT5uZXh0KSB7CisKKyAgICAgIGZvcihwdHI9ZWFzeXNyY19kYXRhLT5maXJzdDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCisgICAgICAgIGZwcmludGYob3V0LCAiICAlc1xuIiwgcHRyLT5kYXRhKTsKKyAgICB9CisKKyAgICBmcHJpbnRmKG91dCwgIlxuIik7CisgICAgaWYoZWFzeXNyY19jb2RlKSB7CisgICAgICBmb3IocHRyPWVhc3lzcmNfY29kZS0+Zmlyc3Q7IHB0cjsgcHRyID0gcHRyLT5uZXh0KSB7CiAgICAgICAgIGlmKHB0ci0+ZGF0YVswXSkgewogICAgICAgICAgIGZwcmludGYob3V0LCAiICAlc1xuIiwgcHRyLT5kYXRhKTsKICAgICAgICAgfQpAQCAtMjExLDE2ICsyMTYsMTggQEAKICAgICAgICAgICBmcHJpbnRmKG91dCwgIlxuIik7CiAgICAgICAgIH0KICAgICAgIH0KLQotICAgICAgZm9yKHB0cj1lYXN5c3JjX2NsZWFuOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKLSAgICAgICAgZnByaW50ZihvdXQsICIgICVzXG4iLCBwdHItPmRhdGEpOwotCi0gICAgICBmb3IoaT0wOyAoKGMgPSBzcmNlbmRbaV0pICE9IE5VTEwpOyBpKyspCi0gICAgICAgIGZwcmludGYob3V0LCAiJXNcbiIsIGMpOwotCi0gICAgICBpZihmb3BlbmVkKQotICAgICAgICBmY2xvc2Uob3V0KTsKICAgICB9CisKKyAgICBpZihlYXN5c3JjX2NsZWFuKSB7CisgICAgICBmb3IocHRyPWVhc3lzcmNfY2xlYW4tPmZpcnN0OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKKyAgICAgICAgZnByaW50ZihvdXQsICIgICVzXG4iLCBwdHItPmRhdGEpOworICAgIH0KKworICAgIGZvcihpPTA7ICgoYyA9IHNyY2VuZFtpXSkgIT0gTlVMTCk7IGkrKykKKyAgICAgIGZwcmludGYob3V0LCAiJXNcbiIsIGMpOworCisgICAgaWYoZm9wZW5lZCkKKyAgICAgIGZjbG9zZShvdXQpOwogICB9CiAKICAgZWFzeXNyY19mcmVlKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9lYXN5c3JjLmggYi9zcmMvdG9vbF9lYXN5c3JjLmgKaW5kZXggMDdhNGI3OC4uNTQ2MDdiOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZWFzeXNyYy5oCisrKyBiL3NyYy90b29sX2Vhc3lzcmMuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDE4ICsyNiwxOSBAQAogCiAvKiBnbG9iYWwgdmFyaWFibGUgZGVjbGFyYXRpb25zLCBmb3IgZWFzeS1pbnRlcmZhY2Ugc291cmNlIGNvZGUgZ2VuZXJhdGlvbiAqLwogCi1leHRlcm4gc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfZGVjbDsgLyogVmFyaWFibGUgZGVjbGFyYXRpb25zICovCi1leHRlcm4gc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfZGF0YTsgLyogQnVpbGQgc2xpc3RzLCBmb3JtcyBldGMuICovCi1leHRlcm4gc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfY29kZTsgLyogU2V0b3B0IGNhbGxzIGV0Yy4gKi8KLWV4dGVybiBzdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY190b29oYXJkOyAvKiBVbmNvbnZlcnRpYmxlIHNldG9wdCAqLwotZXh0ZXJuIHN0cnVjdCBjdXJsX3NsaXN0ICplYXN5c3JjX2NsZWFuOyAgLyogQ2xlYW4gdXAgKHJldmVyc2Ugb3JkZXIpICovCitleHRlcm4gc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2RlY2w7IC8qIFZhcmlhYmxlIGRlY2xhcmF0aW9ucyAqLworZXh0ZXJuIHN0cnVjdCBzbGlzdF93YyAqZWFzeXNyY19kYXRhOyAvKiBCdWlsZCBzbGlzdHMsIGZvcm1zIGV0Yy4gKi8KK2V4dGVybiBzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfY29kZTsgLyogU2V0b3B0IGNhbGxzIGV0Yy4gKi8KK2V4dGVybiBzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfdG9vaGFyZDsgLyogVW5jb252ZXJ0aWJsZSBzZXRvcHQgKi8KK2V4dGVybiBzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfY2xlYW47ICAvKiBDbGVhbiB1cCAocmV2ZXJzZSBvcmRlcikgKi8KIAogZXh0ZXJuIGludCBlYXN5c3JjX2Zvcm1fY291bnQ7ICAvKiBOdW1iZXIgb2YgY3VybF9odHRwcG9zdCB2YXJpYWJsZXMgKi8KIGV4dGVybiBpbnQgZWFzeXNyY19zbGlzdF9jb3VudDsgLyogTnVtYmVyIG9mIGN1cmxfc2xpc3QgdmFyaWFibGVzICovCiAKIGV4dGVybiBDVVJMY29kZSBlYXN5c3JjX2luaXQodm9pZCk7Ci1leHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19hZGQoc3RydWN0IGN1cmxfc2xpc3QgKipwbGlzdCwgY29uc3QgY2hhciAqYnVwZik7Ci1leHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19hZGRmKHN0cnVjdCBjdXJsX3NsaXN0ICoqcGxpc3QsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2V4dGVybiBDVVJMY29kZSBlYXN5c3JjX2FkZChzdHJ1Y3Qgc2xpc3Rfd2MgKipwbGlzdCwgY29uc3QgY2hhciAqYnVwZik7CitleHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19hZGRmKHN0cnVjdCBzbGlzdF93YyAqKnBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CiBleHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19wZXJmb3JtKHZvaWQpOwogZXh0ZXJuIENVUkxjb2RlIGVhc3lzcmNfY2xlYW51cCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfZm9ybXBhcnNlLmMgYi9zcmMvdG9vbF9mb3JtcGFyc2UuYwppbmRleCBmMjZmMjU5Li5kZTMwYzUyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9mb3JtcGFyc2UuYworKysgYi9zcmMvdG9vbF9mb3JtcGFyc2UuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyMyw3ICszMjMsNyBAQAogICAgICAgICBpbmZvW2ldLm9wdGlvbiA9IENVUkxGT1JNX0VORDsKIAogICAgICAgICBpZihjdXJsX2Zvcm1hZGQoaHR0cHBvc3QsIGxhc3RfcG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0FSUkFZLCBpbmZvLCBDVVJMRk9STV9FTkQgKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9BUlJBWSwgaW5mbywgQ1VSTEZPUk1fRU5EKSAhPSAwKSB7CiAgICAgICAgICAgd2FybmYoY29uZmlnLT5nbG9iYWwsICJjdXJsX2Zvcm1hZGQgZmFpbGVkLCBwb3NzaWJseSB0aGUgZmlsZSAlcyBpcyAiCiAgICAgICAgICAgICAgICAgImJhZCFcbiIsIGNvbnRwICsgMSk7CiAgICAgICAgICAgQ3VybF9zYWZlZnJlZShjb250ZW50cyk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9mb3JtcGFyc2UuaCBiL3NyYy90b29sX2Zvcm1wYXJzZS5oCmluZGV4IGY3NzM2MjYuLmNlN2EyOTIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Zvcm1wYXJzZS5oCisrKyBiL3NyYy90b29sX2Zvcm1wYXJzZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfZ2V0cGFyYW0uYyBiL3NyYy90b29sX2dldHBhcmFtLmMKaW5kZXggYzg2ZTZiNC4uZDYwZTA0YyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZ2V0cGFyYW0uYworKysgYi9zcmMvdG9vbF9nZXRwYXJhbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsOSArNjQsOSBAQAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBMb25nU2hvcnQgYWxpYXNlc1tdPSB7Ci0gIC8qIGFsbCB0aGVzZSBvbmVzLCBzdGFydGluZyB3aXRoICIqIiBvciAiJCIgYXMgYSBzaG9ydC1vcHRpb24gaGF2ZSAqbm8qCi0gICAgIHNob3J0IG9wdGlvbiB0byBtZW50aW9uLiAqLwotICB7IioiLCAgInVybCIsICAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAorICAvKiAnbGV0dGVyJyBzdHJpbmdzIHdpdGggbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgaGF2ZSAqbm8qIHNob3J0IG9wdGlvbiB0bworICAgICBtZW50aW9uLiAqLworICB7IipAIiwgInVybCIsICAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7Iio0IiwgImRucy1pcHY0LWFkZHIiLCAgICAgICAgICAgIFRSVUV9LAogICB7Iio2IiwgImRucy1pcHY2LWFkZHIiLCAgICAgICAgICAgIFRSVUV9LAogICB7IiphIiwgInJhbmRvbS1maWxlIiwgICAgICAgICAgICAgIFRSVUV9LApAQCAtMTA2LDIzICsxMDYsMjEgQEAKICAgeyIqdSIsICJjcmxmIiwgICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiKnYiLCAic3RkZXJyIiwgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiKnciLCAiaW50ZXJmYWNlIiwgICAgICAgICAgICAgICAgVFJVRX0sCi0gIHsiKngiLCAia3JiIiAsICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gIHsiKngiLCAia3JiNCIgLCAgICAgICAgICAgICAgICAgICAgVFJVRX0sCisgIHsiKngiLCAia3JiIiwgICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCisgIHsiKngiLCAia3JiNCIsICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgICAgICAgICAvKiAna3JiNCcgaXMgdGhlIHByZXZpb3VzIG5hbWUgKi8KICAgeyIqeSIsICJtYXgtZmlsZXNpemUiLCAgICAgICAgICAgICBUUlVFfSwKICAgeyIqeiIsICJkaXNhYmxlLWVwcnQiLCAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiKloiLCAiZXBydCIsICAgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICAgICAgICAgLyogJ2VwcnQnIG1hZGUgbGlrZSB0aGlzIHRvIG1ha2UgLS1uby1lcHJ0IGFuZCAtLWVwcnQgdG8gd29yawogICAgICAgICAgICAgIGFsdGhvdWdoIC0tZGlzYWJsZS1lcHJ0IGlzIHRoZSBkb2N1bWVudGVkIG9wdGlvbiAqLworICB7Iip+IiwgInhhdHRyIiwgICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIkYSIsICJmdHAtc3NsIiwgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgICAgICAgICAvKiAnZnRwLXNzbCcgZGVwcmVjYXRlZCBuYW1lIHNpbmNlIDcuMjAuMCAqLwogICB7IiRhIiwgInNzbCIsICAgICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgICAgICAgIC8qICdzc2wnIG5ldyBvcHRpb24gbmFtZSBpbiA3LjIwLjAsIHByZXZpb3VzbHkgdGhpcyB3YXMgZnRwLXNzbCAqLwogICB7IiRiIiwgImZ0cC1wYXN2IiwgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIkYyIsICJzb2NrczUiLCAgICAgICAgICAgICAgICAgICBUUlVFfSwKLSAgeyIkYyIsICJzb2NrcyIsICAgICAgICAgICAgICAgICAgICBUUlVFfSwKLSAgICAgICAgIC8qICdzb2NrcycgaXMgaG93IHRoZSBvcHRpb24gb25jZSB3YXMgZG9jdW1lbnRlZCBidXQgd2UgcHJlZmVyCi0gICAgICAgICAgICB0aGUgLS1zb2NrczUgdmVyc2lvbiBmb3IgZXhwbGljaXQgdmVyc2lvbiAqLwogICB7IiRkIiwgInRjcC1ub2RlbGF5IiwgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIkZSIsICJwcm94eS1kaWdlc3QiLCAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiJGYiLCAicHJveHktYmFzaWMiLCAgICAgICAgICAgICAgRkFMU0V9LApAQCAtMTU4LDEyICsxNTYsNyBAQAogICB7IiQzIiwgImtlZXBhbGl2ZS10aW1lIiwgICAgICAgICAgIFRSVUV9LAogICB7IiQ0IiwgInBvc3QzMDIiLCAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIkNSIsICJub3Byb3h5IiwgICAgICAgICAgICAgICAgICBUUlVFfSwKLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIHsiJDYiLCAic29ja3M1LWdzc2FwaS1zZXJ2aWNlIiwgICAgVFJVRX0sCiAgIHsiJDciLCAic29ja3M1LWdzc2FwaS1uZWMiLCAgICAgICAgRkFMU0V9LAotICB7IiRPIiwgInByb3h5LXNlcnZpY2UtbmFtZSIsICAgICAgIFRSVUV9LAotICB7IiRQIiwgInNlcnZpY2UtbmFtZSIsICAgICAgICAgICAgIFRSVUV9LAotI2VuZGlmCiAgIHsiJDgiLCAicHJveHkxLjAiLCAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiJDkiLCAidGZ0cC1ibGtzaXplIiwgICAgICAgICAgICAgVFJVRX0sCiAgIHsiJEEiLCAibWFpbC1mcm9tIiwgICAgICAgICAgICAgICAgVFJVRX0sCkBAIC0xODAsOSArMTczLDE5IEBACiAgIHsiJEwiLCAidGVzdC1ldmVudCIsICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IiRNIiwgInVuaXgtc29ja2V0IiwgICAgICAgICAgICAgIFRSVUV9LAogICB7IiROIiwgInBhdGgtYXMtaXMiLCAgICAgICAgICAgICAgIEZBTFNFfSwKKyAgeyIkTyIsICJzb2NrczUtZ3NzYXBpLXNlcnZpY2UiLCAgICBUUlVFfSwKKyAgICAgICAgIC8qICdzb2NrczUtZ3NzYXBpLXNlcnZpY2UnIG1lcmdlZCB3aXRoJ3Byb3h5LXNlcnZpY2UtbmFtZScgYW5kCisgICAgICAgICAgICBkZXByZWNhdGVkIHNpbmNlIDcuNDkuMCAqLworICB7IiRPIiwgInByb3h5LXNlcnZpY2UtbmFtZSIsICAgICAgIFRSVUV9LAorICB7IiRQIiwgInNlcnZpY2UtbmFtZSIsICAgICAgICAgICAgIFRSVUV9LAorICB7IiRRIiwgInByb3RvLWRlZmF1bHQiLCAgICAgICAgICAgIFRSVUV9LAorICB7IiRSIiwgImV4cGVjdDEwMC10aW1lb3V0IiwgICAgICAgIFRSVUV9LAorICB7IiRTIiwgInRmdHAtbm8tb3B0aW9ucyIsICAgICAgICAgIEZBTFNFfSwKKyAgeyIkVSIsICJjb25uZWN0LXRvIiwgICAgICAgICAgICAgICBUUlVFfSwKICAgeyIwIiwgICAiaHR0cDEuMCIsICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiMDEiLCAgImh0dHAxLjEiLCAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IjAyIiwgICJodHRwMiIsICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKKyAgeyIwMyIsICAiaHR0cDItcHJpb3Ita25vd2xlZGdlIiwgICBGQUxTRX0sCiAgIHsiMSIsICAidGxzdjEiLCAgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IjEwIiwgICJ0bHN2MS4wIiwgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIxMSIsICAidGxzdjEuMSIsICAgICAgICAgICAgICAgICBGQUxTRX0sCkBAIC0yMTEsNyArMjE0LDcgQEAKICAgeyJFZCIsICJrZXktdHlwZSIsICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJFZSIsICJwYXNzIiwgICAgICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJFZiIsICJlbmdpbmUiLCAgICAgICAgICAgICAgICAgICBUUlVFfSwKLSAgeyJFZyIsICJjYXBhdGggIiwgICAgICAgICAgICAgICAgICBUUlVFfSwKKyAgeyJFZyIsICJjYXBhdGgiLCAgICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJFaCIsICJwdWJrZXkiLCAgICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJFaSIsICJob3N0cHVibWQ1IiwgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJFaiIsICJjcmxmaWxlIiwgICAgICAgICAgICAgICAgICBUUlVFfSwKQEAgLTIyMyw2ICsyMjYsOCBAQAogICB7IkVwIiwgInBpbm5lZHB1YmtleSIsICAgICAgICAgICAgIFRSVUV9LAogICB7IkVxIiwgImNlcnQtc3RhdHVzIiwgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyJFciIsICJmYWxzZS1zdGFydCIsICAgICAgICAgICAgICBGQUxTRX0sCisgIHsiRXMiLCAic3NsLW5vLXJldm9rZSIsICAgICAgICAgICAgRkFMU0V9LAorICB7IkV0IiwgInRjcC1mYXN0b3BlbiIsICAgICAgICAgICAgIEZBTFNFfSwKICAgeyJmIiwgICJmYWlsIiwgICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiRiIsICAiZm9ybSIsICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRnMiLCAiZm9ybS1zdHJpbmciLCAgICAgICAgICAgICAgVFJVRX0sCkBAIC0yNTEsOCArMjU2LDYgQEAKICAgeyJPIiwgICJyZW1vdGUtbmFtZSIsICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiT2EiLCAicmVtb3RlLW5hbWUtYWxsIiwgICAgICAgICAgRkFMU0V9LAogICB7InAiLCAgInByb3h5dHVubmVsIiwgICAgICAgICAgICAgIEZBTFNFfSwKLSAgeyJQIiwgICJmdHBwb3J0IiwgICAgICAgICAgICAgICAgICBUUlVFfSwKLSAgICAgICAgIC8qICdmdHBwb3J0JyBvbGQgdmVyc2lvbiAqLwogICB7IlAiLCAgImZ0cC1wb3J0IiwgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7InEiLCAgImRpc2FibGUiLCAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyJRIiwgICJxdW90ZSIsICAgICAgICAgICAgICAgICAgICBUUlVFfSwKQEAgLTI2MCw4ICsyNjMsNyBAQAogICB7IlIiLCAgInJlbW90ZS10aW1lIiwgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyJzIiwgICJzaWxlbnQiLCAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiUyIsICAic2hvdy1lcnJvciIsICAgICAgICAgICAgICAgRkFMU0V9LAotICB7InQiLCAgInRlbG5ldC1vcHRpb25zIiwgICAgICAgICAgIFRSVUV9LAotICAgICAgICAgLyogJ3RlbG5ldC1vcHRpb25zJyBkb2N1bWVudGVkIGFzIHRlbG5ldC1vcHRpb24gKi8KKyAgeyJ0IiwgICJ0ZWxuZXQtb3B0aW9uIiwgICAgICAgICAgICBUUlVFfSwKICAgeyJUIiwgICJ1cGxvYWQtZmlsZSIsICAgICAgICAgICAgICBUUlVFfSwKICAgeyJ1IiwgICJ1c2VyIiwgICAgICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJVIiwgICJwcm94eS11c2VyIiwgICAgICAgICAgICAgICBUUlVFfSwKQEAgLTI3MCwxNCArMjcyLDExIEBACiAgIHsidyIsICAid3JpdGUtb3V0IiwgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsieCIsICAicHJveHkiLCAgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiWCIsICAicmVxdWVzdCIsICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gIHsiWCIsICAiaHR0cC1yZXF1ZXN0IiwgICAgICAgICAgICAgVFJVRX0sCi0gICAgICAgICAvKiAnaHR0cC1yZXF1ZXN0JyBPQlNPTEVURSBWRVJTSU9OICovCiAgIHsiWSIsICAic3BlZWQtbGltaXQiLCAgICAgICAgICAgICAgVFJVRX0sCiAgIHsieSIsICAic3BlZWQtdGltZSIsICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsieiIsICAidGltZS1jb25kIiwgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiIyIsICAicHJvZ3Jlc3MtYmFyIiwgICAgICAgICAgICAgRkFMU0V9LAogICB7IjoiLCAgIm5leHQiLCAgICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKLSAgeyJ+IiwgICJ4YXR0ciIsICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiB9OwogCiAvKiBTcGxpdCB0aGUgYXJndW1lbnQgb2YgLUUgdG8gJ2NlcnRuYW1lJyBhbmQgJ3Bhc3NwaHJhc2UnIHNlcGFyYXRlZCBieSBjb2xvbi4KQEAgLTQ5NSw4ICs0OTQsOCBAQAogICAgICAgY2FzZSAnYic6IC8qIGVnZC1maWxlICovCiAgICAgICAgIEdldFN0cigmY29uZmlnLT5lZ2RfZmlsZSwgbmV4dGFyZyk7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnQic6IC8qIFhPQVVUSDIgQmVhcmVyICovCi0gICAgICAgIEdldFN0cigmY29uZmlnLT54b2F1dGgyX2JlYXJlciwgbmV4dGFyZyk7CisgICAgICBjYXNlICdCJzogLyogT0F1dGggMi4wIGJlYXJlciB0b2tlbiAqLworICAgICAgICBHZXRTdHIoJmNvbmZpZy0+b2F1dGhfYmVhcmVyLCBuZXh0YXJnKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlICdjJzogLyogY29ubmVjdC10aW1lb3V0ICovCiAgICAgICAgIGVyciA9IHN0cjJ1ZG91YmxlKCZjb25maWctPmNvbm5lY3R0aW1lb3V0LCBuZXh0YXJnKTsKQEAgLTcxNiw4ICs3MTUsMTAgQEAKICAgICAgIGNhc2UgJ1onOiAvKiAtLWVwcnQgKi8KICAgICAgICAgY29uZmlnLT5kaXNhYmxlX2VwcnQgPSAoIXRvZ2dsZSk/VFJVRTpGQUxTRTsKICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6IC8qIHRoZSBVUkwhICovCisgICAgICBjYXNlICd+JzogLyogLS14YXR0ciAqLworICAgICAgICBjb25maWctPnhhdHRyID0gdG9nZ2xlOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ0AnOiAvKiB0aGUgVVJMISAqLwogICAgICAgewogICAgICAgICBzdHJ1Y3QgZ2V0b3V0ICp1cmw7CiAgICAgICAgIGlmKGNvbmZpZy0+dXJsX2dldCB8fCAoKGNvbmZpZy0+dXJsX2dldCA9IGNvbmZpZy0+dXJsX2xpc3QpICE9IE5VTEwpKSB7CkBAIC04OTgsMjAgKzg5OSw5IEBACiAgICAgICAgIC8qIFRoaXMgc3BlY2lmaWVzIHRoZSBub3Byb3h5IGxpc3QgKi8KICAgICAgICAgR2V0U3RyKCZjb25maWctPm5vcHJveHksIG5leHRhcmcpOwogICAgICAgICBicmVhazsKLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gICAgICBjYXNlICc2JzogLyogLS1zb2NrczUtZ3NzYXBpLXNlcnZpY2UgKi8KLSAgICAgICAgR2V0U3RyKCZjb25maWctPnNvY2tzNV9nc3NhcGlfc2VydmljZSwgbmV4dGFyZyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnNyc6IC8qIC0tc29ja3M1LWdzc2FwaS1uZWMqLworICAgICAgIGNhc2UgJzcnOiAvKiAtLXNvY2tzNS1nc3NhcGktbmVjKi8KICAgICAgICAgY29uZmlnLT5zb2NrczVfZ3NzYXBpX25lYyA9IHRvZ2dsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdPJzogLyogLS1wcm94eS1zZXJ2aWNlLW5hbWUgKi8KLSAgICAgICAgR2V0U3RyKCZjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSwgbmV4dGFyZyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnUCc6IC8qIC0tc2VydmljZS1uYW1lICovCi0gICAgICAgIEdldFN0cigmY29uZmlnLT5zZXJ2aWNlX25hbWUsIG5leHRhcmcpOwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgICAgY2FzZSAnOCc6IC8qIC0tcHJveHkxLjAgKi8KICAgICAgICAgLyogaHR0cCAxLjAgcHJveHkgKi8KICAgICAgICAgR2V0U3RyKCZjb25maWctPnByb3h5LCBuZXh0YXJnKTsKQEAgLTk5NSw2ICs5ODUsMzEgQEAKICAgICAgIGNhc2UgJ04nOiAvKiAtLXBhdGgtYXMtaXMgKi8KICAgICAgICAgY29uZmlnLT5wYXRoX2FzX2lzID0gdG9nZ2xlOwogICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ08nOiAvKiAtLXByb3h5LXNlcnZpY2UtbmFtZSAqLworICAgICAgICBHZXRTdHIoJmNvbmZpZy0+cHJveHlfc2VydmljZV9uYW1lLCBuZXh0YXJnKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdQJzogLyogLS1zZXJ2aWNlLW5hbWUgKi8KKyAgICAgICAgR2V0U3RyKCZjb25maWctPnNlcnZpY2VfbmFtZSwgbmV4dGFyZyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnUSc6IC8qIC0tcHJvdG8tZGVmYXVsdCAqLworICAgICAgICBHZXRTdHIoJmNvbmZpZy0+cHJvdG9fZGVmYXVsdCwgbmV4dGFyZyk7CisgICAgICAgIGVyciA9IGNoZWNrX3Byb3RvY29sKGNvbmZpZy0+cHJvdG9fZGVmYXVsdCk7CisgICAgICAgIGlmKGVycikKKyAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1InOiAvKiAtLWV4cGVjdDEwMC10aW1lb3V0ICovCisgICAgICAgIGVyciA9IHN0cjJ1ZG91YmxlKCZjb25maWctPmV4cGVjdDEwMHRpbWVvdXQsIG5leHRhcmcpOworICAgICAgICBpZihlcnIpCisgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdTJzogLyogLS10ZnRwLW5vLW9wdGlvbnMgKi8KKyAgICAgICAgY29uZmlnLT50ZnRwX25vX29wdGlvbnMgPSB0b2dnbGU7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnVSc6IC8qIC0tY29ubmVjdC10byAqLworICAgICAgICBlcnIgPSBhZGQybGlzdCgmY29uZmlnLT5jb25uZWN0X3RvLCBuZXh0YXJnKTsKKyAgICAgICAgaWYoZXJyKQorICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnIyc6IC8qIC0tcHJvZ3Jlc3MtYmFyICovCkBAIC0xMDA1LDkgKzEwMjAsNiBAQAogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnOic6IC8qIC0tbmV4dCAqLwogICAgICAgcmV0dXJuIFBBUkFNX05FWFRfT1BFUkFUSU9OOwotICAgIGNhc2UgJ34nOiAvKiAtLXhhdHRyICovCi0gICAgICBjb25maWctPnhhdHRyID0gdG9nZ2xlOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSAnMCc6IC8qIC0taHR0cCogb3B0aW9ucyAqLwogICAgICAgc3dpdGNoKHN1YmxldHRlcikgewogICAgICAgY2FzZSAnXDAnOgpAQCAtMTAyMiw2ICsxMDM0LDEwIEBACiAgICAgICAgIC8qIEhUVFAgdmVyc2lvbiAyLjAgKi8KICAgICAgICAgY29uZmlnLT5odHRwdmVyc2lvbiA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICczJzoKKyAgICAgICAgLyogSFRUUCB2ZXJzaW9uIDIuMCBvdmVyIGNsZWFuIFRDUCovCisgICAgICAgIGNvbmZpZy0+aHR0cHZlcnNpb24gPSBDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRTsKKyAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlICcxJzogLyogLS10bHN2MSogb3B0aW9ucyAqLwpAQCAtMTM4Niw2ICsxNDAyLDE1IEBACiAgICAgICAgIGNvbmZpZy0+ZmFsc2VzdGFydCA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogCisgICAgICBjYXNlICdzJzogLyogLS1zc2wtbm8tcmV2b2tlICovCisgICAgICAgIGlmKGN1cmxpbmZvLT5mZWF0dXJlcyAmIENVUkxfVkVSU0lPTl9TU0wpCisgICAgICAgICAgY29uZmlnLT5zc2xfbm9fcmV2b2tlID0gVFJVRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgJ3QnOiAvKiAtLXRjcC1mYXN0b3BlbiAqLworICAgICAgICBjb25maWctPnRjcF9mYXN0b3BlbiA9IFRSVUU7CisgICAgICAgIGJyZWFrOworCiAgICAgICBkZWZhdWx0OiAvKiBjZXJ0aWZpY2F0ZSBmaWxlICovCiAgICAgICB7CiAgICAgICAgIGNoYXIgKmNlcnRuYW1lLCAqcGFzc3BocmFzZTsKQEAgLTE0MTMsNyArMTQzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgJmNvbmZpZy0+bGFzdF9wb3N0LAogICAgICAgICAgICAgICAgICAgIChzdWJsZXR0ZXI9PSdzJyk/VFJVRTpGQUxTRSkpIC8qICdzJyBtZWFucyBsaXRlcmFsIHN0cmluZyAqLwogICAgICAgICByZXR1cm4gUEFSQU1fQkFEX1VTRTsKLSAgICAgIGlmKFNldEhUVFByZXF1ZXN0KGNvbmZpZywgSFRUUFJFUV9QT1NULCAmY29uZmlnLT5odHRwcmVxKSkKKyAgICAgIGlmKFNldEhUVFByZXF1ZXN0KGNvbmZpZywgSFRUUFJFUV9GT1JNUE9TVCwgJmNvbmZpZy0+aHR0cHJlcSkpCiAgICAgICAgIHJldHVybiBQQVJBTV9CQURfVVNFOwogICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX2dldHBhcmFtLmggYi9zcmMvdG9vbF9nZXRwYXJhbS5oCmluZGV4IGVmNDM2NmIuLjBjODVjNjkgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2dldHBhcmFtLmgKKysrIGIvc3JjL3Rvb2xfZ2V0cGFyYW0uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3LDYgKzM3LDcgQEAKICAgUEFSQU1fQkFEX05VTUVSSUMsCiAgIFBBUkFNX05FR0FUSVZFX05VTUVSSUMsCiAgIFBBUkFNX0xJQkNVUkxfRE9FU05UX1NVUFBPUlQsCisgIFBBUkFNX0xJQkNVUkxfVU5TVVBQT1JURURfUFJPVE9DT0wsCiAgIFBBUkFNX05PX01FTSwKICAgUEFSQU1fTkVYVF9PUEVSQVRJT04sCiAgIFBBUkFNX0xBU1QKZGlmZiAtLWdpdCBhL3NyYy90b29sX2dldHBhc3MuYyBiL3NyYy90b29sX2dldHBhc3MuYwppbmRleCAwZjdlZDAxLi44ZTNlNWZhIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9nZXRwYXNzLmMKKysrIGIvc3JjL3Rvb2xfZ2V0cGFzcy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2dldHBhc3MuaCBiL3NyYy90b29sX2dldHBhc3MuaAppbmRleCBkNGZjN2UyLi45NWRkNzc5IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9nZXRwYXNzLmgKKysrIGIvc3JjL3Rvb2xfZ2V0cGFzcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfaGVscC5jIGIvc3JjL3Rvb2xfaGVscC5jCmluZGV4IDQ2YWUzNDEuLmZiNDI4YzkgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2hlbHAuYworKysgYi9zcmMvdG9vbF9oZWxwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01OCw2ICs1OCw3IEBACiAgICIgICAgIC0tY29tcHJlc3NlZCAgICBSZXF1ZXN0IGNvbXByZXNzZWQgcmVzcG9uc2UgKHVzaW5nIGRlZmxhdGUgb3IgZ3ppcCkiLAogICAiIC1LLCAtLWNvbmZpZyBGSUxFICAgUmVhZCBjb25maWcgZnJvbSBGSUxFIiwKICAgIiAgICAgLS1jb25uZWN0LXRpbWVvdXQgU0VDT05EUyAgTWF4aW11bSB0aW1lIGFsbG93ZWQgZm9yIGNvbm5lY3Rpb24iLAorICAiICAgICAtLWNvbm5lY3QtdG8gSE9TVDE6UE9SVDE6SE9TVDI6UE9SVDIgQ29ubmVjdCB0byBob3N0IChuZXR3b3JrIGxldmVsKSIsCiAgICIgLUMsIC0tY29udGludWUtYXQgT0ZGU0VUICBSZXN1bWVkIHRyYW5zZmVyIE9GRlNFVCIsCiAgICIgLWIsIC0tY29va2llIFNUUklORy9GSUxFICBSZWFkIGNvb2tpZXMgZnJvbSBTVFJJTkcvRklMRSAoSCkiLAogICAiIC1jLCAtLWNvb2tpZS1qYXIgRklMRSAgV3JpdGUgY29va2llcyB0byBGSUxFIGFmdGVyIG9wZXJhdGlvbiAoSCkiLApAQCAtODMsNiArODQsNyBAQAogI2lmZGVmIFVTRV9FTlZJUk9OTUVOVAogICAiICAgICAtLWVudmlyb25tZW50ICAgV3JpdGUgcmVzdWx0cyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKFJJU0MgT1MpIiwKICNlbmRpZgorICAiICAgICAtLWV4cGVjdDEwMC10aW1lb3V0IFNFQ09ORFMgSG93IGxvbmcgdG8gd2FpdCBmb3IgMTAwLWNvbnRpbnVlIChIKSIsCiAgICIgLWYsIC0tZmFpbCAgICAgICAgICBGYWlsIHNpbGVudGx5IChubyBvdXRwdXQgYXQgYWxsKSBvbiBIVFRQIGVycm9ycyAoSCkiLAogICAiICAgICAtLWZhbHNlLXN0YXJ0ICAgRW5hYmxlIFRMUyBGYWxzZSBTdGFydC4iLAogICAiIC1GLCAtLWZvcm0gQ09OVEVOVCAgU3BlY2lmeSBIVFRQIG11bHRpcGFydCBQT1NUIGRhdGEgKEgpIiwKQEAgLTExMCw2ICsxMTIsNyBAQAogICAiIC0wLCAtLWh0dHAxLjAgICAgICAgVXNlIEhUVFAgMS4wIChIKSIsCiAgICIgICAgIC0taHR0cDEuMSAgICAgICBVc2UgSFRUUCAxLjEgKEgpIiwKICAgIiAgICAgLS1odHRwMiAgICAgICAgIFVzZSBIVFRQIDIgKEgpIiwKKyAgIiAgICAgLS1odHRwMi1wcmlvci1rbm93bGVkZ2UgIFVzZSBIVFRQIDIgd2l0aG91dCBIVFRQLzEuMSBVcGdyYWRlIChIKSIsCiAgICIgICAgIC0taWdub3JlLWNvbnRlbnQtbGVuZ3RoICBJZ25vcmUgdGhlIEhUVFAgQ29udGVudC1MZW5ndGggaGVhZGVyIiwKICAgIiAtaSwgLS1pbmNsdWRlICAgICAgIEluY2x1ZGUgcHJvdG9jb2wgaGVhZGVycyBpbiB0aGUgb3V0cHV0IChIL0YpIiwKICAgIiAtaywgLS1pbnNlY3VyZSAgICAgIEFsbG93IGNvbm5lY3Rpb25zIHRvIFNTTCBzaXRlcyB3aXRob3V0IGNlcnRzIChIKSIsCkBAIC0xNTIsMTIgKzE1NSwxMiBAQAogICAiICAgICAtLW5vLXNlc3Npb25pZCAgRGlzYWJsZSBTU0wgc2Vzc2lvbi1JRCByZXVzaW5nIChTU0wpIiwKICAgIiAgICAgLS1ub3Byb3h5ICAgICAgIExpc3Qgb2YgaG9zdHMgd2hpY2ggZG8gbm90IHVzZSBwcm94eSIsCiAgICIgICAgIC0tbnRsbSAgICAgICAgICBVc2UgSFRUUCBOVExNIGF1dGhlbnRpY2F0aW9uIChIKSIsCisgICIgICAgIC0tbnRsbS13YiAgICAgICBVc2UgSFRUUCBOVExNIGF1dGhlbnRpY2F0aW9uIHdpdGggd2luYmluZCAoSCkiLAogICAiICAgICAtLW9hdXRoMi1iZWFyZXIgVE9LRU4gIE9BdXRoIDIgQmVhcmVyIFRva2VuIChJTUFQLCBQT1AzLCBTTVRQKSIsCiAgICIgLW8sIC0tb3V0cHV0IEZJTEUgICBXcml0ZSB0byBGSUxFIGluc3RlYWQgb2Ygc3Rkb3V0IiwKICAgIiAgICAgLS1wYXNzIFBBU1MgICAgIFBhc3MgcGhyYXNlIGZvciB0aGUgcHJpdmF0ZSBrZXkgKFNTTC9TU0gpIiwKICAgIiAgICAgLS1wYXRoLWFzLWlzICAgIERvIG5vdCBzcXVhc2ggLi4gc2VxdWVuY2VzIGluIFVSTCBwYXRoIiwKLSAgIiAgICAgLS1waW5uZWRwdWJrZXkgRklMRSAgUHVibGljIGtleSAoUEVNL0RFUikgdG8gdmVyaWZ5IHBlZXIgYWdhaW5zdCAiCi0gICIoT3BlblNTTC9HbnVUTFMvTlNTL3dvbGZTU0wvQ3lhU1NML0dTS2l0IG9ubHkpIiwKKyAgIiAgICAgLS1waW5uZWRwdWJrZXkgRklMRS9IQVNIRVMgUHVibGljIGtleSB0byB2ZXJpZnkgcGVlciBhZ2FpbnN0IChTU0wpIiwKICAgIiAgICAgLS1wb3N0MzAxICAgICAgICIKICAgIkRvIG5vdCBzd2l0Y2ggdG8gR0VUIGFmdGVyIGZvbGxvd2luZyBhIDMwMSByZWRpcmVjdCAoSCkiLAogICAiICAgICAtLXBvc3QzMDIgICAgICAgIgpAQCAtMTY2LDcgKzE2OSw4IEBACiAgICJEbyBub3Qgc3dpdGNoIHRvIEdFVCBhZnRlciBmb2xsb3dpbmcgYSAzMDMgcmVkaXJlY3QgKEgpIiwKICAgIiAtIywgLS1wcm9ncmVzcy1iYXIgIERpc3BsYXkgdHJhbnNmZXIgcHJvZ3Jlc3MgYXMgYSBwcm9ncmVzcyBiYXIiLAogICAiICAgICAtLXByb3RvIFBST1RPQ09MUyAgRW5hYmxlL2Rpc2FibGUgUFJPVE9DT0xTIiwKLSAgIiAgICAgLS1wcm90by1yZWRpciBQUk9UT0NPTFMgIEVuYWJsZS9kaXNhYmxlIFBST1RPQ09MUyBvbiByZWRpcmVjdCIsCisgICIgICAgIC0tcHJvdG8tZGVmYXVsdCBQUk9UT0NPTCAgVXNlIFBST1RPQ09MIGZvciBhbnkgVVJMIG1pc3NpbmcgYSBzY2hlbWUiLAorICAiICAgICAtLXByb3RvLXJlZGlyIFBST1RPQ09MUyAgIEVuYWJsZS9kaXNhYmxlIFBST1RPQ09MUyBvbiByZWRpcmVjdCIsCiAgICIgLXgsIC0tcHJveHkgW1BST1RPQ09MOi8vXUhPU1RbOlBPUlRdICBVc2UgcHJveHkgb24gZ2l2ZW4gcG9ydCIsCiAgICIgICAgIC0tcHJveHktYW55YXV0aCAgUGljayBcImFueVwiIHByb3h5IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAoSCkiLAogICAiICAgICAtLXByb3h5LWJhc2ljICAgVXNlIEJhc2ljIGF1dGhlbnRpY2F0aW9uIG9uIHRoZSBwcm94eSAoSCkiLApAQCAtMTc0LDEwICsxNzgsOSBAQAogICAiICAgICAtLXByb3h5LW5lZ290aWF0ZSAgIgogICAiVXNlIEhUVFAgTmVnb3RpYXRlIChTUE5FR08pIGF1dGhlbnRpY2F0aW9uIG9uIHRoZSBwcm94eSAoSCkiLAogICAiICAgICAtLXByb3h5LW50bG0gICAgVXNlIE5UTE0gYXV0aGVudGljYXRpb24gb24gdGhlIHByb3h5IChIKSIsCi0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorICAiICAgICAtLXByb3h5LWhlYWRlciBMSU5FIFBhc3MgY3VzdG9tIGhlYWRlciBMSU5FIHRvIHByb3h5IChIKSIsCiAgICIgICAgIC0tcHJveHktc2VydmljZS1uYW1lIE5BTUUgIFNQTkVHTyBwcm94eSBzZXJ2aWNlIG5hbWUiLAogICAiICAgICAtLXNlcnZpY2UtbmFtZSBOQU1FICBTUE5FR08gc2VydmljZSBuYW1lIiwKLSNlbmRpZgogICAiIC1VLCAtLXByb3h5LXVzZXIgVVNFUls6UEFTU1dPUkRdICBQcm94eSB1c2VyIGFuZCBwYXNzd29yZCIsCiAgICIgICAgIC0tcHJveHkxLjAgSE9TVFs6UE9SVF0gIFVzZSBIVFRQLzEuMCBwcm94eSBvbiBnaXZlbiBwb3J0IiwKICAgIiAtcCwgLS1wcm94eXR1bm5lbCAgIE9wZXJhdGUgdGhyb3VnaCBhIEhUVFAgcHJveHkgdHVubmVsICh1c2luZyBDT05ORUNUKSIsCkBAIC0yMDYsMTAgKzIwOSw4IEBACiAgICIgICAgIC0tc29ja3M1IEhPU1RbOlBPUlRdICBTT0NLUzUgcHJveHkgb24gZ2l2ZW4gaG9zdCArIHBvcnQiLAogICAiICAgICAtLXNvY2tzNS1ob3N0bmFtZSBIT1NUWzpQT1JUXSAgIgogICAiU09DS1M1IHByb3h5LCBwYXNzIGhvc3QgbmFtZSB0byBwcm94eSIsCi0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQogICAiICAgICAtLXNvY2tzNS1nc3NhcGktc2VydmljZSBOQU1FICBTT0NLUzUgcHJveHkgc2VydmljZSBuYW1lIGZvciBHU1MtQVBJIiwKICAgIiAgICAgLS1zb2NrczUtZ3NzYXBpLW5lYyAgQ29tcGF0aWJpbGl0eSB3aXRoIE5FQyBTT0NLUzUgc2VydmVyIiwKLSNlbmRpZgogICAiIC1ZLCAtLXNwZWVkLWxpbWl0IFJBVEUgICIKICAgIlN0b3AgdHJhbnNmZXJzIGJlbG93IFJBVEUgZm9yICdzcGVlZC10aW1lJyBzZWNzIiwKICAgIiAteSwgLS1zcGVlZC10aW1lIFNFQ09ORFMgICIKQEAgLTIxOSwxMiArMjIwLDE1IEBACiAgICIgLTIsIC0tc3NsdjIgICAgICAgICBVc2UgU1NMdjIgKFNTTCkiLAogICAiIC0zLCAtLXNzbHYzICAgICAgICAgVXNlIFNTTHYzIChTU0wpIiwKICAgIiAgICAgLS1zc2wtYWxsb3ctYmVhc3QgIEFsbG93IHNlY3VyaXR5IGZsYXcgdG8gaW1wcm92ZSBpbnRlcm9wIChTU0wpIiwKKyAgIiAgICAgLS1zc2wtbm8tcmV2b2tlICAgIERpc2FibGUgY2VydCByZXZvY2F0aW9uIGNoZWNrcyAoV2luU1NMKSIsCiAgICIgICAgIC0tc3RkZXJyIEZJTEUgICBXaGVyZSB0byByZWRpcmVjdCBzdGRlcnIgKHVzZSBcIi1cIiBmb3Igc3Rkb3V0KSIsCiAgICIgICAgIC0tdGNwLW5vZGVsYXkgICBVc2UgdGhlIFRDUF9OT0RFTEFZIG9wdGlvbiIsCisgICIgICAgIC0tdGNwLWZhc3RvcGVuICBVc2UgVENQIEZhc3QgT3BlbiIsCiAgICIgLXQsIC0tdGVsbmV0LW9wdGlvbiBPUFQ9VkFMICBTZXQgdGVsbmV0IG9wdGlvbiIsCiAgICIgICAgIC0tdGZ0cC1ibGtzaXplIFZBTFVFICBTZXQgVEZUUCBCTEtTSVpFIG9wdGlvbiAobXVzdCBiZSA+NTEyKSIsCi0gICIgLXosIC0tdGltZS1jb25kIFRJTUUgIFRyYW5zZmVyIGJhc2VkIG9uIGEgdGltZSBjb25kaXRpb24iLAotICAiIC0xLCAtLXRsc3YxICAgICAgICAgVXNlID0+IFRMU3YxIChTU0wpIiwKKyAgIiAgICAgLS10ZnRwLW5vLW9wdGlvbnMgIERvIG5vdCBzZW5kIFRGVFAgb3B0aW9ucyByZXF1ZXN0cyIsCisgICIgLXosIC0tdGltZS1jb25kIFRJTUUgICBUcmFuc2ZlciBiYXNlZCBvbiBhIHRpbWUgY29uZGl0aW9uIiwKKyAgIiAtMSwgLS10bHN2MSAgICAgICAgIFVzZSA+PSBUTFN2MSAoU1NMKSIsCiAgICIgICAgIC0tdGxzdjEuMCAgICAgICBVc2UgVExTdjEuMCAoU1NMKSIsCiAgICIgICAgIC0tdGxzdjEuMSAgICAgICBVc2UgVExTdjEuMSAoU1NMKSIsCiAgICIgICAgIC0tdGxzdjEuMiAgICAgICBVc2UgVExTdjEuMiAoU1NMKSIsCkBAIC0yNDgsNyArMjUyLDcgQEAKICNlbmRpZgogICAiIC13LCAtLXdyaXRlLW91dCBGT1JNQVQgIFVzZSBvdXRwdXQgRk9STUFUIGFmdGVyIGNvbXBsZXRpb24iLAogICAiICAgICAtLXhhdHRyICAgICAgICAgU3RvcmUgbWV0YWRhdGEgaW4gZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGVzIiwKLSAgIiAtcSAgICAgICAgICAgICAgICAgIERpc2FibGUgLmN1cmxyYyAobXVzdCBiZSBmaXJzdCBwYXJhbWV0ZXIpIiwKKyAgIiAtcSwgLS1kaXNhYmxlICAgICAgIERpc2FibGUgLmN1cmxyYyAobXVzdCBiZSBmaXJzdCBwYXJhbWV0ZXIpIiwKICAgTlVMTAogfTsKIApAQCAtMzIwLDYgKzMyNCw5IEBACiAjaWZkZWYgVVNFX01FVEFMSU5LCiAgICAgcHJpbnRmKCJNZXRhbGluayAiKTsKICNlbmRpZgorI2lmZGVmIFVTRV9MSUJQU0wKKyAgICBwcmludGYoIlBTTCAiKTsKKyNlbmRpZgogICAgIHB1dHMoIiIpOyAvKiBuZXdsaW5lICovCiAgIH0KIH0KZGlmZiAtLWdpdCBhL3NyYy90b29sX2hlbHAuaCBiL3NyYy90b29sX2hlbHAuaAppbmRleCA5ZWY1MDA2Li40MzQzMmQ3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9oZWxwLmgKKysrIGIvc3JjL3Rvb2xfaGVscC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfaGVscGVycy5jIGIvc3JjL3Rvb2xfaGVscGVycy5jCmluZGV4IDU0NzlhMWMuLmZlZjE0NTkgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2hlbHBlcnMuYworKysgYi9zcmMvdG9vbF9oZWxwZXJzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTgsNiArNTgsOCBAQAogICAgIHJldHVybiAiZXhwZWN0ZWQgYSBwb3NpdGl2ZSBudW1lcmljYWwgcGFyYW1ldGVyIjsKICAgY2FzZSBQQVJBTV9MSUJDVVJMX0RPRVNOVF9TVVBQT1JUOgogICAgIHJldHVybiAidGhlIGluc3RhbGxlZCBsaWJjdXJsIHZlcnNpb24gZG9lc24ndCBzdXBwb3J0IHRoaXMiOworICBjYXNlIFBBUkFNX0xJQkNVUkxfVU5TVVBQT1JURURfUFJPVE9DT0w6CisgICAgcmV0dXJuICJhIHNwZWNpZmllZCBwcm90b2NvbCBpcyB1bnN1cHBvcnRlZCBieSBsaWJjdXJsIjsKICAgY2FzZSBQQVJBTV9OT19NRU06CiAgICAgcmV0dXJuICJvdXQgb2YgbWVtb3J5IjsKICAgZGVmYXVsdDoKQEAgLTY3LDEzICs2OSw0OCBAQAogCiBpbnQgU2V0SFRUUHJlcXVlc3Qoc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnLCBIdHRwUmVxIHJlcSwgSHR0cFJlcSAqc3RvcmUpCiB7CisgIC8qIHRoaXMgbWlycm9ycyB0aGUgSHR0cFJlcSBlbnVtIGluIHRvb2xfc2RlY2xzLmggKi8KKyAgY29uc3QgY2hhciAqcmVxbmFtZVtdPSB7CisgICAgIiIsIC8qIHVuc3BlYyAqLworICAgICJHRVQgKC1HLCAtLWdldCkiLAorICAgICJIRUFEICgtSSwgLS1oZWFkKSIsCisgICAgIm11bHRpcGFydCBmb3JtcG9zdCAoLUYsIC0tZm9ybSkiLAorICAgICJQT1NUICgtZCwgLS1kYXRhKSIKKyAgfTsKKwogICBpZigoKnN0b3JlID09IEhUVFBSRVFfVU5TUEVDKSB8fAogICAgICAoKnN0b3JlID09IHJlcSkpIHsKICAgICAqc3RvcmUgPSByZXE7CiAgICAgcmV0dXJuIDA7CiAgIH0KLQotICB3YXJuZihjb25maWctPmdsb2JhbCwgIllvdSBjYW4gb25seSBzZWxlY3Qgb25lIEhUVFAgcmVxdWVzdCFcbiIpOworICB3YXJuZihjb25maWctPmdsb2JhbCwgIllvdSBjYW4gb25seSBzZWxlY3Qgb25lIEhUVFAgcmVxdWVzdCBtZXRob2QhICIKKyAgICAgICAgIllvdSBhc2tlZCBmb3IgYm90aCAlcyBhbmQgJXMuXG4iLAorICAgICAgICByZXFuYW1lW3JlcV0sIHJlcW5hbWVbKnN0b3JlXSk7CiAKICAgcmV0dXJuIDE7CiB9CisKK3ZvaWQgY3VzdG9tcmVxdWVzdF9oZWxwZXIoc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnLCBIdHRwUmVxIHJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWV0aG9kKQoreworICAvKiB0aGlzIG1pcnJvcnMgdGhlIEh0dHBSZXEgZW51bSBpbiB0b29sX3NkZWNscy5oICovCisgIGNvbnN0IGNoYXIgKmRmbHRbXT0geworICAgICJHRVQiLAorICAgICJHRVQiLAorICAgICJIRUFEIiwKKyAgICAiUE9TVCIsCisgICAgIlBPU1QiCisgIH07CisKKyAgaWYoIW1ldGhvZCkKKyAgICA7CisgIGVsc2UgaWYoY3VybF9zdHJlcXVhbChtZXRob2QsIGRmbHRbcmVxXSkpIHsKKyAgICBub3RlZihjb25maWctPmdsb2JhbCwgIlVubmVjZXNzYXJ5IHVzZSBvZiAtWCBvciAtLXJlcXVlc3QsICVzIGlzIGFscmVhZHkgIgorICAgICAgICAgICJpbmZlcnJlZC5cbiIsIGRmbHRbcmVxXSk7CisgIH0KKyAgZWxzZSBpZihjdXJsX3N0cmVxdWFsKG1ldGhvZCwgImhlYWQiKSkgeworICAgIHdhcm5mKGNvbmZpZy0+Z2xvYmFsLAorICAgICAgICAgICJTZXR0aW5nIGN1c3RvbSBIVFRQIG1ldGhvZCB0byBIRUFEIHdpdGggLVgvLS1yZXF1ZXN0IG1heSBub3Qgd29yayAiCisgICAgICAgICAgInRoZSB3YXkgeW91IHdhbnQuIENvbnNpZGVyIHVzaW5nIC1JLy0taGVhZCBpbnN0ZWFkLlxuIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy90b29sX2hlbHBlcnMuaCBiL3NyYy90b29sX2hlbHBlcnMuaAppbmRleCA3M2JjZmM3Li45ZWRlMTZlIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9oZWxwZXJzLmgKKysrIGIvc3JjL3Rvb2xfaGVscGVycy5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNSArMjgsOCBAQAogaW50IFNldEhUVFByZXF1ZXN0KHN0cnVjdCBPcGVyYXRpb25Db25maWcgKmNvbmZpZywgSHR0cFJlcSByZXEsCiAgICAgICAgICAgICAgICAgICAgSHR0cFJlcSAqc3RvcmUpOwogCit2b2lkIGN1c3RvbXJlcXVlc3RfaGVscGVyKHN0cnVjdCBPcGVyYXRpb25Db25maWcgKmNvbmZpZywgSHR0cFJlcSByZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1ldGhvZCk7CisKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9UT09MX0hFTFBFUlNfSCAqLwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9ob21lZGlyLmMgYi9zcmMvdG9vbF9ob21lZGlyLmMKaW5kZXggNzNhNjZmOC4uY2NmMDRiNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfaG9tZWRpci5jCisrKyBiL3NyYy90b29sX2hvbWVkaXIuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9ob21lZGlyLmggYi9zcmMvdG9vbF9ob21lZGlyLmgKaW5kZXggZDU4ODYxNS4uOThkOTRiOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfaG9tZWRpci5oCisrKyBiL3NyYy90b29sX2hvbWVkaXIuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2h1Z2VoZWxwLmMgYi9zcmMvdG9vbF9odWdlaGVscC5jCmluZGV4IDU4OTU5MDAuLjI0OTlhNDggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2h1Z2VoZWxwLmMKKysrIGIvc3JjL3Rvb2xfaHVnZWhlbHAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9odWdlaGVscC5oIGIvc3JjL3Rvb2xfaHVnZWhlbHAuaAppbmRleCA0NDI1NzllLi4xNjUyMGI2IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9odWdlaGVscC5oCisrKyBiL3NyYy90b29sX2h1Z2VoZWxwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9saWJpbmZvLmMgYi9zcmMvdG9vbF9saWJpbmZvLmMKaW5kZXggYThmZmI4Zi4uNWRiODU0OCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbGliaW5mby5jCisrKyBiL3NyYy90b29sX2xpYmluZm8uYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9saWJpbmZvLmggYi9zcmMvdG9vbF9saWJpbmZvLmgKaW5kZXggNWMxNDlkOS4uMjk4ZGY4MCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbGliaW5mby5oCisrKyBiL3NyYy90b29sX2xpYmluZm8uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21haW4uYyBiL3NyYy90b29sX21haW4uYwppbmRleCA5YTVjZWJhLi43ZTc0MmZmIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tYWluLmMKKysrIGIvc3JjL3Rvb2xfbWFpbi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21haW4uaCBiL3NyYy90b29sX21haW4uaAppbmRleCA5YTc5NzJmLi5jOTdjMzYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tYWluLmgKKysrIGIvc3JjL3Rvb2xfbWFpbi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfbWV0YWxpbmsuYyBiL3NyYy90b29sX21ldGFsaW5rLmMKaW5kZXggNTg3M2FkZi4uOWE2NDY1ZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbWV0YWxpbmsuYworKysgYi9zcmMvdG9vbF9tZXRhbGluay5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21ldGFsaW5rLmggYi9zcmMvdG9vbF9tZXRhbGluay5oCmluZGV4IDM2ODU5MDYuLjdlZTI3MzYgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX21ldGFsaW5rLmgKKysrIGIvc3JjL3Rvb2xfbWV0YWxpbmsuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21maWxlcy5jIGIvc3JjL3Rvb2xfbWZpbGVzLmMKaW5kZXggM2VkYTQ1Zi4uZDg2MmQ0MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbWZpbGVzLmMKKysrIGIvc3JjL3Rvb2xfbWZpbGVzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfbWZpbGVzLmggYi9zcmMvdG9vbF9tZmlsZXMuaAppbmRleCAxZWE2ZjRhLi44MjdmNDAwIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tZmlsZXMuaAorKysgYi9zcmMvdG9vbF9tZmlsZXMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21zZ3MuYyBiL3NyYy90b29sX21zZ3MuYwppbmRleCAzOGRlOTc3Li4xNDU0OTAzIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tc2dzLmMKKysrIGIvc3JjL3Rvb2xfbXNncy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDMxICszMSwyNyBAQAogI2luY2x1ZGUgIm1lbWRlYnVnLmgiIC8qIGtlZXAgdGhpcyBhcyBMQVNUIGluY2x1ZGUgKi8KIAogI2RlZmluZSBXQVJOX1BSRUZJWCAiV2FybmluZzogIgotI2RlZmluZSBXQVJOX1RFWFRXSURUSCAoNzkgLSAoaW50KXN0cmxlbihXQVJOX1BSRUZJWCkpCisjZGVmaW5lIE5PVEVfUFJFRklYICJOb3RlOiAiCiAKLS8qCi0gKiBFbWl0IHdhcm5pbmcgZm9ybWF0dGVkIG1lc3NhZ2Ugb24gY29uZmlndXJlZCAnZXJyb3JzJyBzdHJlYW0gdW5sZXNzCi0gKiBtdXRlICgtLXNpbGVudCkgd2FzIHNlbGVjdGVkLgotICovCi0KLXZvaWQgd2FybmYoc3RydWN0IEdsb2JhbENvbmZpZyAqY29uZmlnLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3N0YXRpYyB2b2lkIHZvdXRmKHN0cnVjdCBHbG9iYWxDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwKKyAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXApCiB7CisgIHNpemVfdCB3aWR0aCA9ICg3OSAtIChpbnQpc3RybGVuKHByZWZpeCkpOwogICBpZighY29uZmlnLT5tdXRlKSB7Ci0gICAgdmFfbGlzdCBhcDsKLSAgICBpbnQgbGVuOworICAgIHNpemVfdCBsZW47CiAgICAgY2hhciAqcHRyOwogICAgIGNoYXIgcHJpbnRfYnVmZmVyWzI1Nl07CiAKLSAgICB2YV9zdGFydChhcCwgZm10KTsKICAgICBsZW4gPSB2c25wcmludGYocHJpbnRfYnVmZmVyLCBzaXplb2YocHJpbnRfYnVmZmVyKSwgZm10LCBhcCk7Ci0gICAgdmFfZW5kKGFwKTsKIAogICAgIHB0ciA9IHByaW50X2J1ZmZlcjsKICAgICB3aGlsZShsZW4gPiAwKSB7Ci0gICAgICBmcHV0cyhXQVJOX1BSRUZJWCwgY29uZmlnLT5lcnJvcnMpOworICAgICAgZnB1dHMocHJlZml4LCBjb25maWctPmVycm9ycyk7CiAKLSAgICAgIGlmKGxlbiA+IChpbnQpV0FSTl9URVhUV0lEVEgpIHsKLSAgICAgICAgaW50IGN1dCA9IFdBUk5fVEVYVFdJRFRILTE7CisgICAgICBpZihsZW4gPiB3aWR0aCkgeworICAgICAgICBzaXplX3QgY3V0ID0gd2lkdGgtMTsKIAogICAgICAgICB3aGlsZSghSVNTUEFDRShwdHJbY3V0XSkgJiYgY3V0KSB7CiAgICAgICAgICAgY3V0LS07CkBAIC02Myw3ICs1OSw3IEBACiAgICAgICAgIGlmKDAgPT0gY3V0KQogICAgICAgICAgIC8qIG5vdCBhIHNpbmdsZSBjdXR0aW5nIHBvc2l0aW9uIHdhcyBmb3VuZCwganVzdCBjdXQgaXQgYXQgdGhlCiAgICAgICAgICAgICAgbWF4IHRleHQgd2lkdGggdGhlbiEgKi8KLSAgICAgICAgICBjdXQgPSBXQVJOX1RFWFRXSURUSC0xOworICAgICAgICAgIGN1dCA9IHdpZHRoLTE7CiAKICAgICAgICAgKHZvaWQpZndyaXRlKHB0ciwgY3V0ICsgMSwgMSwgY29uZmlnLT5lcnJvcnMpOwogICAgICAgICBmcHV0cygiXG4iLCBjb25maWctPmVycm9ycyk7CkBAIC03OSw2ICs3NSwzMSBAQAogfQogCiAvKgorICogRW1pdCAnbm90ZScgZm9ybWF0dGVkIG1lc3NhZ2Ugb24gY29uZmlndXJlZCAnZXJyb3JzJyBzdHJlYW0sIGlmIHZlcmJvc2Ugd2FzCisgKiBzZWxlY3RlZC4KKyAqLwordm9pZCBub3RlZihzdHJ1Y3QgR2xvYmFsQ29uZmlnICpjb25maWcsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICB2YV9saXN0IGFwOworICB2YV9zdGFydChhcCwgZm10KTsKKyAgaWYoY29uZmlnLT50cmFjZXR5cGUpCisgICAgdm91dGYoY29uZmlnLCBOT1RFX1BSRUZJWCwgZm10LCBhcCk7CisgIHZhX2VuZChhcCk7Cit9CisKKy8qCisgKiBFbWl0IHdhcm5pbmcgZm9ybWF0dGVkIG1lc3NhZ2Ugb24gY29uZmlndXJlZCAnZXJyb3JzJyBzdHJlYW0gdW5sZXNzCisgKiBtdXRlICgtLXNpbGVudCkgd2FzIHNlbGVjdGVkLgorICovCisKK3ZvaWQgd2FybmYoc3RydWN0IEdsb2JhbENvbmZpZyAqY29uZmlnLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcDsKKyAgdmFfc3RhcnQoYXAsIGZtdCk7CisgIHZvdXRmKGNvbmZpZywgV0FSTl9QUkVGSVgsIGZtdCwgYXApOworICB2YV9lbmQoYXApOworfQorLyoKICAqIEVtaXQgaGVscCBmb3JtYXR0ZWQgbWVzc2FnZSBvbiBnaXZlbiBzdHJlYW0uCiAgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfbXNncy5oIGIvc3JjL3Rvb2xfbXNncy5oCmluZGV4IGJmOTdiZmIuLmU4NGMxYjIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX21zZ3MuaAorKysgYi9zcmMvdG9vbF9tc2dzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAidG9vbF9zZXR1cC5oIgogCiB2b2lkIHdhcm5mKHN0cnVjdCBHbG9iYWxDb25maWcgKmNvbmZpZywgY29uc3QgY2hhciAqZm10LCAuLi4pOwordm9pZCBub3RlZihzdHJ1Y3QgR2xvYmFsQ29uZmlnICpjb25maWcsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogdm9pZCBoZWxwZihGSUxFICplcnJvcnMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfb3BlcmF0ZS5jIGIvc3JjL3Rvb2xfb3BlcmF0ZS5jCmluZGV4IGZlYTU4N2IuLjVmNDllZmIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX29wZXJhdGUuYworKysgYi9zcmMvdG9vbF9vcGVyYXRlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC05OCw3ICs5OCw3IEBACiAjZW5kaWYKIAogI2RlZmluZSBDVVJMX0NBX0NFUlRfRVJST1JNU0cxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIk1vcmUgZGV0YWlscyBoZXJlOiBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbFxuXG4iICAgICAgICAgICBcCisgICJNb3JlIGRldGFpbHMgaGVyZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sXG5cbiIgICAgICAgICAgIFwKICAgImN1cmwgcGVyZm9ybXMgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBieSBkZWZhdWx0LCAiICAgICAgICAgICAgICAgICBcCiAgICJ1c2luZyBhIFwiYnVuZGxlXCJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAiIG9mIENlcnRpZmljYXRlIEF1dGhvcml0eSAoQ0EpIHB1YmxpYyBrZXlzIChDQSBjZXJ0cykuIElmIHRoZSBkZWZhdWx0XG4iIFwKQEAgLTE1MSw2ICsxNTEsNyBAQAogICBpbnQgcmV0X3N0YXQ7CiAgIEZJTEUgKiBmaWxlOwogCisgIC8qICFjaGVja3NyYyEgZGlzYWJsZSBGT1BFTk1PREUgMSAqLwogICBmaWxlID0gZm9wZW4obmFtZSwgInIiKTsgLyogVk1TICovCiAgIGlmKGZpbGUgPT0gTlVMTCkgewogICAgIHJldHVybiAwOwpAQCAtMjA0LDYgKzIwNSw3IEBACiAKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIHVuc2lnbmVkIGxvbmcgbGk7CisgIGJvb2wgY2FwYXRoX2Zyb21fZW52OwogCiAgIC8qIFNhdmUgdGhlIHZhbHVlcyBvZiBub3Byb2dyZXNzIGFuZCBpc2F0dHkgdG8gcmVzdG9yZSB0aGVtIGxhdGVyIG9uICovCiAgIGJvb2wgb3JpZ19ub3Byb2dyZXNzID0gZ2xvYmFsLT5ub3Byb2dyZXNzOwpAQCAtMjM5LDYgKzI0MSw3IEBACiAgICAqIFdlIHN1cHBvcnQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRoaW5nIGZvciBub24tV2luZG93cyBwbGF0Zm9ybXMKICAgICogdG9vLiBKdXN0IGZvciB0aGUgc2FrZSBvZiBpdC4KICAgICovCisgIGNhcGF0aF9mcm9tX2VudiA9IGZhbHNlOwogICBpZighY29uZmlnLT5jYWNlcnQgJiYKICAgICAgIWNvbmZpZy0+Y2FwYXRoICYmCiAgICAgICFjb25maWctPmluc2VjdXJlX29rKSB7CkBAIC0yNjMsNiArMjY2LDcgQEAKICAgICAgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgICAgICAgIGdvdG8gcXVpdF9jdXJsOwogICAgICAgICB9CisgICAgICAgIGNhcGF0aF9mcm9tX2VudiA9IHRydWU7CiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgZW52ID0gY3VybHhfZ2V0ZW52KCJTU0xfQ0VSVF9GSUxFIik7CkBAIC01NDgsMTUgKzU1Miw2IEBACiAgICAgICAgICAgICAgIHJlc3VsdCA9IENVUkxFX1dSSVRFX0VSUk9SOwogICAgICAgICAgICAgICBnb3RvIHF1aXRfdXJsczsKICAgICAgICAgICAgIH0KLSNpZiBkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKFdJTjMyKQotICAgICAgICAgICAgLyogRm9yIERPUyBhbmQgV0lOMzIsIHdlIGRvIHNvbWUgbWFqb3IgcmVwbGFjaW5nIG9mCi0gICAgICAgICAgICAgICBiYWQgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBuYW1lIGJlZm9yZSB1c2luZyBpdCAqLwotICAgICAgICAgICAgb3V0ZmlsZSA9IHNhbml0aXplX2Rvc19uYW1lKG91dGZpbGUpOwotICAgICAgICAgICAgaWYoIW91dGZpbGUpIHsKLSAgICAgICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgICAgICAgZ290byBzaG93X2Vycm9yOwotICAgICAgICAgICAgfQotI2VuZGlmIC8qIE1TRE9TIHx8IFdJTjMyICovCiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UgaWYodXJscykgewogICAgICAgICAgICAgLyogZmlsbCAnIzEnIC4uLiAnIzknIHRlcm1zIGZyb20gVVJMIHBhdHRlcm4gKi8KQEAgLTgwMCw2ICs3OTUsOSBAQAogICAgICAgICBpZihjb25maWctPnRjcF9ub2RlbGF5KQogICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RDUF9OT0RFTEFZLCAxTCk7CiAKKyAgICAgICAgaWYoY29uZmlnLT50Y3BfZmFzdG9wZW4pCisgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfVENQX0ZBU1RPUEVOLCAxTCk7CisKICAgICAgICAgLyogd2hlcmUgdG8gc3RvcmUgKi8KICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfV1JJVEVEQVRBLCAmb3V0cyk7CiAgICAgICAgIGlmKG1ldGFsaW5rIHx8ICFjb25maWctPnVzZV9tZXRhbGluaykKQEAgLTg1MSw4ICs4NDksOCBAQAogICAgICAgICBlbHNlIGlmKCFjb25maWctPnVzZV9tZXRhbGluaykKICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IRUFERVIsIGNvbmZpZy0+aW5jbHVkZV9oZWFkZXJzPzFMOjBMKTsKIAotICAgICAgICBpZihjb25maWctPnhvYXV0aDJfYmVhcmVyKQotICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUiwgY29uZmlnLT54b2F1dGgyX2JlYXJlcik7CisgICAgICAgIGlmKGNvbmZpZy0+b2F1dGhfYmVhcmVyKQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUiwgY29uZmlnLT5vYXV0aF9iZWFyZXIpOwogCiAjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1BST1hZKQogICAgICAgICB7CkBAIC04OTIsNyArODkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKUNVUkxBVVRIX0JBU0lDKTsKIAogICAgICAgICAgIC8qIG5ldyBpbiBsaWJjdXJsIDcuMTkuNCAqLwotICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX05PUFJPWFksIGNvbmZpZy0+bm9wcm94eSk7CisgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX05PUFJPWFksIGNvbmZpZy0+bm9wcm94eSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC05MDksNyArOTA3LDcgQEAKICAgICAgICAgICBteV9zZXRvcHRfZW51bShjdXJsLCBDVVJMT1BUX05FVFJDLCAobG9uZylDVVJMX05FVFJDX0lHTk9SRUQpOwogCiAgICAgICAgIGlmKGNvbmZpZy0+bmV0cmNfZmlsZSkKLSAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9ORVRSQ19GSUxFLCBjb25maWctPm5ldHJjX2ZpbGUpOworICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9ORVRSQ19GSUxFLCBjb25maWctPm5ldHJjX2ZpbGUpOwogCiAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RSQU5TRkVSVEVYVCwgY29uZmlnLT51c2VfYXNjaWk/MUw6MEwpOwogICAgICAgICBpZihjb25maWctPmxvZ2luX29wdGlvbnMpCkBAIC05MzUsNyArOTMzLDcgQEAKICAgICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UsCiAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5wb3N0ZmllbGRzaXplKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgSFRUUFJFUV9QT1NUOgorICAgICAgICAgIGNhc2UgSFRUUFJFUV9GT1JNUE9TVDoKICAgICAgICAgICAgIG15X3NldG9wdF9odHRwcG9zdChjdXJsLCBDVVJMT1BUX0hUVFBQT1NULCBjb25maWctPmh0dHBwb3N0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGRlZmF1bHQ6CkBAIC05NTYsOSArOTU0LDExIEBACiAgICAgICAgICAgLyogbmV3IGluIGxpYmN1cmwgNy41ICovCiAgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfTUFYUkVESVJTLCBjb25maWctPm1heHJlZGlycyk7CiAKLSAgICAgICAgICAvKiBuZXcgaW4gbGliY3VybCA3LjkuMSAqLwogICAgICAgICAgIGlmKGNvbmZpZy0+aHR0cHZlcnNpb24pCiAgICAgICAgICAgICBteV9zZXRvcHRfZW51bShjdXJsLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiwgY29uZmlnLT5odHRwdmVyc2lvbik7CisgICAgICAgICAgZWxzZSBpZihjdXJsaW5mby0+ZmVhdHVyZXMgJiBDVVJMX1ZFUlNJT05fSFRUUDIpIHsKKyAgICAgICAgICAgIG15X3NldG9wdF9lbnVtKGN1cmwsIENVUkxPUFRfSFRUUF9WRVJTSU9OLCBDVVJMX0hUVFBfVkVSU0lPTl8yVExTKTsKKyAgICAgICAgICB9CiAKICAgICAgICAgICAvKiBuZXcgaW4gbGliY3VybCA3LjEwLjYgKGRlZmF1bHQgaXMgQmFzaWMpICovCiAgICAgICAgICAgaWYoY29uZmlnLT5hdXRodHlwZSkKQEAgLTEwMTYsOCArMTAxNiwxNiBAQAogCiAgICAgICAgIGlmKGNvbmZpZy0+Y2FjZXJ0KQogICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9DQUlORk8sIGNvbmZpZy0+Y2FjZXJ0KTsKLSAgICAgICAgaWYoY29uZmlnLT5jYXBhdGgpCi0gICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0NBUEFUSCwgY29uZmlnLT5jYXBhdGgpOworICAgICAgICBpZihjb25maWctPmNhcGF0aCkgeworICAgICAgICAgIHJlc3VsdCA9IHJlc19zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfQ0FQQVRILCBjb25maWctPmNhcGF0aCk7CisgICAgICAgICAgaWYocmVzdWx0ID09IENVUkxFX05PVF9CVUlMVF9JTikgeworICAgICAgICAgICAgd2FybmYoY29uZmlnLT5nbG9iYWwsICJpZ25vcmluZyAlcywgbm90IHN1cHBvcnRlZCBieSBsaWJjdXJsXG4iLAorICAgICAgICAgICAgICAgICAgY2FwYXRoX2Zyb21fZW52PworICAgICAgICAgICAgICAgICAgIlNTTF9DRVJUX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSI6Ii0tY2FwYXRoIik7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYocmVzdWx0KQorICAgICAgICAgICAgZ290byBzaG93X2Vycm9yOworICAgICAgICB9CiAgICAgICAgIGlmKGNvbmZpZy0+Y3JsZmlsZSkKICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfQ1JMRklMRSwgY29uZmlnLT5jcmxmaWxlKTsKIApAQCAtMTEwOCw2ICsxMTE2LDcgQEAKICAgICAgICAgbXlfc2V0b3B0X2VudW0oY3VybCwgQ1VSTE9QVF9USU1FQ09ORElUSU9OLCAobG9uZyljb25maWctPnRpbWVjb25kKTsKICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfVElNRVZBTFVFLCAobG9uZyljb25maWctPmNvbmR0aW1lKTsKICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0NVU1RPTVJFUVVFU1QsIGNvbmZpZy0+Y3VzdG9tcmVxdWVzdCk7CisgICAgICAgIGN1c3RvbXJlcXVlc3RfaGVscGVyKGNvbmZpZywgY29uZmlnLT5odHRwcmVxLCBjb25maWctPmN1c3RvbXJlcXVlc3QpOwogICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TVERFUlIsIGdsb2JhbC0+ZXJyb3JzKTsKIAogICAgICAgICAvKiB0aHJlZSBuZXcgb25lcyBpbiBsaWJjdXJsIDcuMzogKi8KQEAgLTExNzEsOSArMTE4MCwxMiBAQAogICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULCAxTCk7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjEwLjcsIGV4dGVuZGVkIGluIDcuMTkuNCBidXQgdGhpcyBvbmx5IHNldHMgMCBvciAxICovCisgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuMTAuNywgZXh0ZW5kZWQgaW4gNy4xOS40LiBNb2RpZmllZCB0byB1c2UKKyAgICAgICAgICAgQ1JFQVRFX0RJUl9SRVRSWSBpbiA3LjQ5LjAgKi8KICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMsCi0gICAgICAgICAgICAgICAgICBjb25maWctPmZ0cF9jcmVhdGVfZGlycz8xTDowTCk7CisgICAgICAgICAgICAgICAgICAobG9uZykoY29uZmlnLT5mdHBfY3JlYXRlX2RpcnM/CisgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZUUF9DUkVBVEVfRElSX1JFVFJZOgorICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGVFBfQ1JFQVRFX0RJUl9OT05FKSk7CiAKICAgICAgICAgLyogbmV3IGluIGN1cmwgNy4xMC44ICovCiAgICAgICAgIGlmKGNvbmZpZy0+bWF4X2ZpbGVzaXplKQpAQCAtMTIwNCwzMiArMTIxNiwyMSBAQAogICAgICAgICAgIG15X3NldG9wdF9lbnVtKGN1cmwsIENVUkxPUFRfRlRQX1NTTF9DQ0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpY29uZmlnLT5mdHBfc3NsX2NjY19tb2RlKTsKIAotI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLSAgICAgICAgewotICAgICAgICAgIC8qIFRPRE86IE1ha2UgdGhpcyBhIHJ1bi10aW1lIGNoZWNrIGluc3RlYWQgb2YgY29tcGlsZS10aW1lIG9uZS4gKi8KKyAgICAgICAgLyogbmV3IGluIGN1cmwgNy4xOS40ICovCisgICAgICAgIGlmKGNvbmZpZy0+c29ja3M1X2dzc2FwaV9uZWMpCisgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5zb2NrczVfZ3NzYXBpX25lYyk7CiAKLSAgICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjE5LjQgKi8KLSAgICAgICAgICBpZihjb25maWctPnNvY2tzNV9nc3NhcGlfc2VydmljZSkKLSAgICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+c29ja3M1X2dzc2FwaV9zZXJ2aWNlKTsKKyAgICAgICAgLyogbmV3IGluIGN1cmwgNy40My4wICovCisgICAgICAgIGlmKGNvbmZpZy0+cHJveHlfc2VydmljZV9uYW1lKQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSk7CiAKLSAgICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjE5LjQgKi8KLSAgICAgICAgICBpZihjb25maWctPnNvY2tzNV9nc3NhcGlfbmVjKQotICAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnNvY2tzNV9nc3NhcGlfbmVjKTsKKyAgICAgICAgLyogbmV3IGluIGN1cmwgNy40My4wICovCisgICAgICAgIGlmKGNvbmZpZy0+c2VydmljZV9uYW1lKQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9TRVJWSUNFX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnNlcnZpY2VfbmFtZSk7CiAKLSAgICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjQzLjAgKi8KLSAgICAgICAgICBpZihjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSkKLSAgICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+cHJveHlfc2VydmljZV9uYW1lKTsKLQotICAgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuNDMuMCAqLwotICAgICAgICAgIGlmKGNvbmZpZy0+c2VydmljZV9uYW1lKQotICAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX1NFUlZJQ0VfTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5zZXJ2aWNlX25hbWUpOwotCi0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICAvKiBjdXJsIDcuMTMuMCAqLwogICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfRlRQX0FDQ09VTlQsIGNvbmZpZy0+ZnRwX2FjY291bnQpOwogCkBAIC0xMjY3LDEwICsxMjY4LDYgQEAKICAgICAgICAgaWYoIWNvbmZpZy0+bm9rZWVwYWxpdmUpIHsKICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLCAxTCk7CiAgICAgICAgICAgaWYoY29uZmlnLT5hbGl2ZXRpbWUgIT0gMCkgewotI2lmICFkZWZpbmVkKFRDUF9LRUVQSURMRSkgfHwgIWRlZmluZWQoVENQX0tFRVBJTlRWTCkKLSAgICAgICAgICAgIHdhcm5mKGNvbmZpZy0+Z2xvYmFsLCAiS2VlcC1hbGl2ZSBmdW5jdGlvbmFsaXR5IHNvbWV3aGF0IGNyaXBwbGVkICIKLSAgICAgICAgICAgICAgICAiZHVlIHRvIG1pc3Npbmcgc3VwcG9ydCBpbiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0hXG4iKTsKLSNlbmRpZgogICAgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfVENQX0tFRVBJRExFLCBjb25maWctPmFsaXZldGltZSk7CiAgICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLCBjb25maWctPmFsaXZldGltZSk7CiAgICAgICAgICAgfQpAQCAtMTI5OCw5ICsxMjk1LDcgQEAKICAgICAgICAgICBteV9zZXRvcHRfZmxhZ3MoY3VybCwgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMsIGNvbmZpZy0+cHJvdG9fcmVkaXIpOwogCiAgICAgICAgIGlmKGNvbmZpZy0+Y29udGVudF9kaXNwb3NpdGlvbgotICAgICAgICAgICAmJiAodXJsbm9kZS0+ZmxhZ3MgJiBHRVRPVVRfVVNFUkVNT1RFKQotICAgICAgICAgICAmJiAoY2hlY2twcmVmaXgoImh0dHA6Ly8iLCB0aGlzX3VybCkgfHwKLSAgICAgICAgICAgICAgIGNoZWNrcHJlZml4KCJodHRwczovLyIsIHRoaXNfdXJsKSkpCisgICAgICAgICAgICYmICh1cmxub2RlLT5mbGFncyAmIEdFVE9VVF9VU0VSRU1PVEUpKQogICAgICAgICAgIGhkcmNiZGF0YS5ob25vcl9jZF9maWxlbmFtZSA9IFRSVUU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICBoZHJjYmRhdGEuaG9ub3JfY2RfZmlsZW5hbWUgPSBGQUxTRTsKQEAgLTEzMTUsNiArMTMxMCwxMCBAQAogICAgICAgICAgIC8qIG5ldyBpbiA3LjIxLjMgKi8KICAgICAgICAgICBteV9zZXRvcHRfc2xpc3QoY3VybCwgQ1VSTE9QVF9SRVNPTFZFLCBjb25maWctPnJlc29sdmUpOwogCisgICAgICAgIGlmKGNvbmZpZy0+Y29ubmVjdF90bykKKyAgICAgICAgICAvKiBuZXcgaW4gNy40OS4wICovCisgICAgICAgICAgbXlfc2V0b3B0X3NsaXN0KGN1cmwsIENVUkxPUFRfQ09OTkVDVF9UTywgY29uZmlnLT5jb25uZWN0X3RvKTsKKwogICAgICAgICAvKiBuZXcgaW4gNy4yMS40ICovCiAgICAgICAgIGlmKGN1cmxpbmZvLT5mZWF0dXJlcyAmIENVUkxfVkVSU0lPTl9UTFNBVVRIX1NSUCkgewogICAgICAgICAgIGlmKGNvbmZpZy0+dGxzX3VzZXJuYW1lKQpAQCAtMTMzMyw5ICsxMzMyLDEzIEBACiAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5nc3NhcGlfZGVsZWdhdGlvbik7CiAKLSAgICAgICAgLyogbmV3IGluIDcuMjUuMCAqLwotICAgICAgICBpZihjb25maWctPnNzbF9hbGxvd19iZWFzdCkKLSAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xfT1BUSU9OUywgKGxvbmcpQ1VSTFNTTE9QVF9BTExPV19CRUFTVCk7CisgICAgICAgIC8qIG5ldyBpbiA3LjI1LjAgYW5kIDcuNDQuMCAqLworICAgICAgICB7CisgICAgICAgICAgbG9uZyBtYXNrID0gKGNvbmZpZy0+c3NsX2FsbG93X2JlYXN0ID8gQ1VSTFNTTE9QVF9BTExPV19CRUFTVCA6IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnLT5zc2xfbm9fcmV2b2tlID8gQ1VSTFNTTE9QVF9OT19SRVZPS0UgOiAwKTsKKyAgICAgICAgICBpZihtYXNrKQorICAgICAgICAgICAgbXlfc2V0b3B0X2JpdG1hc2soY3VybCwgQ1VSTE9QVF9TU0xfT1BUSU9OUywgbWFzayk7CisgICAgICAgIH0KIAogICAgICAgICBpZihjb25maWctPm1haWxfYXV0aCkKICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfTUFJTF9BVVRILCBjb25maWctPm1haWxfYXV0aCk7CkBAIC0xMzU3LDYgKzEzNjAsMTkgQEAKICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+dW5peF9zb2NrZXRfcGF0aCk7CiAKKyAgICAgICAgLyogbmV3IGluIDcuNDUuMCAqLworICAgICAgICBpZihjb25maWctPnByb3RvX2RlZmF1bHQpCisgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsIGNvbmZpZy0+cHJvdG9fZGVmYXVsdCk7CisKKyAgICAgICAgLyogbmV3IGluIDcuNDcuMCAqLworICAgICAgICBpZihjb25maWctPmV4cGVjdDEwMHRpbWVvdXQgPiAwKQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMsCisgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykoY29uZmlnLT5leHBlY3QxMDB0aW1lb3V0KjEwMDApKTsKKworICAgICAgICAvKiBuZXcgaW4gNy40OC4wICovCisgICAgICAgIGlmKGNvbmZpZy0+dGZ0cF9ub19vcHRpb25zKQorICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUywgMUwpOworCiAgICAgICAgIC8qIGluaXRpYWxpemUgcmV0cnkgdmFycyBmb3IgbG9vcCBiZWxvdyAqLwogICAgICAgICByZXRyeV9zbGVlcF9kZWZhdWx0ID0gKGNvbmZpZy0+cmV0cnlfZGVsYXkpID8KICAgICAgICAgICBjb25maWctPnJldHJ5X2RlbGF5KjEwMDBMIDogUkVUUllfU0xFRVBfREVGQVVMVDsgLyogbXMgKi8KQEAgLTEzNjYsOSArMTM4MiwxMCBAQAogICAgICAgICByZXRyeXN0YXJ0ID0gdHZub3coKTsKIAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04KLSAgICAgICAgcmVzdWx0ID0gZWFzeXNyY19wZXJmb3JtKCk7Ci0gICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgIGdvdG8gc2hvd19lcnJvcjsKKyAgICAgICAgaWYoZ2xvYmFsLT5saWJjdXJsKSB7CisgICAgICAgICAgcmVzdWx0ID0gZWFzeXNyY19wZXJmb3JtKCk7CisgICAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgICAgZ290byBzaG93X2Vycm9yOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTUwNyw3ICsxNTI0LDcgQEAKICAgICAgICAgICAgICAgICBmZmx1c2gob3V0cy5zdHJlYW0pOwogICAgICAgICAgICAgICAgIC8qIHRydW5jYXRlIGZpbGUgYXQgdGhlIHBvc2l0aW9uIHdoZXJlIHdlIHN0YXJ0ZWQgYXBwZW5kaW5nICovCiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICAgICAgICAgICAgICBpZihmdHJ1bmNhdGUoIGZpbGVubyhvdXRzLnN0cmVhbSksIG91dHMuaW5pdCkpIHsKKyAgICAgICAgICAgICAgICBpZihmdHJ1bmNhdGUoZmlsZW5vKG91dHMuc3RyZWFtKSwgb3V0cy5pbml0KSkgewogICAgICAgICAgICAgICAgICAgLyogd2hlbiB0cnVuY2F0ZSBmYWlscywgd2UgY2FuJ3QganVzdCBhcHBlbmQgYXMgdGhlbiB3ZSdsbAogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHNvbWV0aGluZyBzdHJhbmdlLCBiYWlsIG91dCAqLwogICAgICAgICAgICAgICAgICAgaWYoIWdsb2JhbC0+bXV0ZSkKQEAgLTE4MjQsNyArMTg0MSw5IEBACiAjZW5kaWYKIAogICAvKiBQYXJzZSAuY3VybHJjIGlmIG5lY2Vzc2FyeSAqLwotICBpZigoYXJnYyA9PSAxKSB8fCAoIWN1cmx4X3N0cmVxdWFsKGFyZ3ZbMV0sICItcSIpKSkgeworICBpZigoYXJnYyA9PSAxKSB8fAorICAgICAoIWN1cmx4X3N0cmVxdWFsKGFyZ3ZbMV0sICItcSIpIHx8CisgICAgICAhY3VybHhfc3RyZXF1YWwoYXJndlsxXSwgIi0tZGlzYWJsZSIpKSkgewogICAgIHBhcnNlY29uZmlnKE5VTEwsIGNvbmZpZyk7IC8qIGlnbm9yZSBwb3NzaWJsZSBmYWlsdXJlICovCiAKICAgICAvKiBJZiB3ZSBoYWQgbm8gYXJndW1lbnRzIHRoZW4gbWFrZSBzdXJlIGEgdXJsIHdhcyBzcGVjaWZpZWQgaW4gLmN1cmxyYyAqLwpAQCAtMTg1MiwxMyArMTg3MSwxNyBAQAogICAgICAgLyogQ2hlY2sgaWYgd2Ugd2VyZSBhc2tlZCB0byBsaXN0IHRoZSBTU0wgZW5naW5lcyAqLwogICAgICAgZWxzZSBpZihyZXMgPT0gUEFSQU1fRU5HSU5FU19SRVFVRVNURUQpCiAgICAgICAgIHRvb2xfbGlzdF9lbmdpbmVzKGNvbmZpZy0+ZWFzeSk7CisgICAgICBlbHNlIGlmKHJlcyA9PSBQQVJBTV9MSUJDVVJMX1VOU1VQUE9SVEVEX1BST1RPQ09MKQorICAgICAgICByZXN1bHQgPSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKICAgICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CiAgICAgfQogICAgIGVsc2UgewogI2lmbmRlZiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04KLSAgICAgIC8qIEluaXRpYWxpc2UgdGhlIGxpYmN1cmwgc291cmNlIG91dHB1dCAqLwotICAgICAgcmVzdWx0ID0gZWFzeXNyY19pbml0KCk7CisgICAgICBpZihjb25maWctPmxpYmN1cmwpIHsKKyAgICAgICAgLyogSW5pdGlhbGlzZSB0aGUgbGliY3VybCBzb3VyY2Ugb3V0cHV0ICovCisgICAgICAgIHJlc3VsdCA9IGVhc3lzcmNfaW5pdCgpOworICAgICAgfQogI2VuZGlmCiAKICAgICAgIC8qIFBlcmZvcm0gdGhlIG1haW4gb3BlcmF0aW9ucyAqLwpAQCAtMTg4NCwxMSArMTkwNywxMyBAQAogICAgICAgICB9CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OCi0gICAgICAgIC8qIENsZWFudXAgdGhlIGxpYmN1cmwgc291cmNlIG91dHB1dCAqLwotICAgICAgICBlYXN5c3JjX2NsZWFudXAoKTsKKyAgICAgICAgaWYoY29uZmlnLT5saWJjdXJsKSB7CisgICAgICAgICAgLyogQ2xlYW51cCB0aGUgbGliY3VybCBzb3VyY2Ugb3V0cHV0ICovCisgICAgICAgICAgZWFzeXNyY19jbGVhbnVwKCk7CiAKLSAgICAgICAgLyogRHVtcCB0aGUgbGliY3VybCBjb2RlIGlmIHByZXZpb3VzbHkgZW5hYmxlZCAqLwotICAgICAgICBkdW1wZWFzeXNyYyhjb25maWcpOworICAgICAgICAgIC8qIER1bXAgdGhlIGxpYmN1cmwgY29kZSBpZiBwcmV2aW91c2x5IGVuYWJsZWQgKi8KKyAgICAgICAgICBkdW1wZWFzeXNyYyhjb25maWcpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgIH0KICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyYy90b29sX29wZXJhdGUuaCBiL3NyYy90b29sX29wZXJhdGUuaAppbmRleCAxZDVjMWE5Li5jNTRmZTNmIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9vcGVyYXRlLmgKKysrIGIvc3JjL3Rvb2xfb3BlcmF0ZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfb3BlcmhscC5jIGIvc3JjL3Rvb2xfb3BlcmhscC5jCmluZGV4IGFiZjk0OTYuLmI0M2RjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX29wZXJobHAuYworKysgYi9zcmMvdG9vbF9vcGVyaGxwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAidG9vbF9jZmdhYmxlLmgiCiAjaW5jbHVkZSAidG9vbF9jb252ZXJ0LmgiCisjaW5jbHVkZSAidG9vbF9kb3N3aW4uaCIKICNpbmNsdWRlICJ0b29sX29wZXJobHAuaCIKICNpbmNsdWRlICJ0b29sX21ldGFsaW5rLmgiCiAKQEAgLTEyOCw3ICsxMjksNyBAQAogICovCiBDVVJMY29kZSBnZXRfdXJsX2ZpbGVfbmFtZShjaGFyICoqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnVybCkKIHsKLSAgY29uc3QgY2hhciAqcGM7CisgIGNvbnN0IGNoYXIgKnBjLCAqcGMyOwogCiAgICpmaWxlbmFtZSA9IE5VTEw7CiAKQEAgLTEzOCw3ICsxMzksMTEgQEAKICAgICBwYyArPSAzOwogICBlbHNlCiAgICAgcGMgPSB1cmw7CisKKyAgcGMyID0gc3RycmNocihwYywgJ1xcJyk7CiAgIHBjID0gc3RycmNocihwYywgJy8nKTsKKyAgaWYocGMyICYmICghcGMgfHwgcGMgPCBwYzIpKQorICAgIHBjID0gcGMyOwogCiAgIGlmKHBjKQogICAgIC8qIGR1cGxpY2F0ZSB0aGUgc3RyaW5nIGJleW9uZCB0aGUgc2xhc2ggKi8KQEAgLTE1MSw2ICsxNTYsMTcgQEAKICAgaWYoISpmaWxlbmFtZSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAorI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lOMzIpCisgIHsKKyAgICBjaGFyICpzYW5pdGl6ZWQ7CisgICAgU0FOSVRJWkVjb2RlIHNjID0gc2FuaXRpemVfZmlsZV9uYW1lKCZzYW5pdGl6ZWQsICpmaWxlbmFtZSwgMCk7CisgICAgQ3VybF9zYWZlZnJlZSgqZmlsZW5hbWUpOworICAgIGlmKHNjKQorICAgICAgcmV0dXJuIENVUkxFX1VSTF9NQUxGT1JNQVQ7CisgICAgKmZpbGVuYW1lID0gc2FuaXRpemVkOworICB9CisjZW5kaWYgLyogTVNET1MgfHwgV0lOMzIgKi8KKwogICAvKiBpbiBjYXNlIHdlIGJ1aWx0IGRlYnVnIGVuYWJsZWQsIHdlIGFsbG93IGFuIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAqIG5hbWVkIENVUkxfVEVTVERJUiB0byBwcmVmaXggdGhlIGdpdmVuIGZpbGUgbmFtZSB0byBwdXQgaXQgaW50byBhCiAgICAqIHNwZWNpZmljIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfb3BlcmhscC5oIGIvc3JjL3Rvb2xfb3BlcmhscC5oCmluZGV4IDhmY2FhZDYuLjQ0NmM1NjAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX29wZXJobHAuaAorKysgYi9zcmMvdG9vbF9vcGVyaGxwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9wYW55a2V5LmMgYi9zcmMvdG9vbF9wYW55a2V5LmMKaW5kZXggZDg3MThlMy4uMTRlMWUwNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfcGFueWtleS5jCisrKyBiL3NyYy90b29sX3BhbnlrZXkuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9wYW55a2V5LmggYi9zcmMvdG9vbF9wYW55a2V5LmgKaW5kZXggNTBiMTVkMi4uOWQ2NDQxOCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfcGFueWtleS5oCisrKyBiL3NyYy90b29sX3BhbnlrZXkuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3BhcmFtaGxwLmMgYi9zcmMvdG9vbF9wYXJhbWhscC5jCmluZGV4IGQ0Yjk2ZTcuLmYyZTY4ZGEgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhcmFtaGxwLmMKKysrIGIvc3JjL3Rvb2xfcGFyYW1obHAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMzksNiArMzM5LDI3IEBACiB9CiAKIC8qKgorICogQ2hlY2sgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHByb3RvY29sIHN1cHBvcnRlZCBieSBsaWJjdXJsCisgKgorICogQHBhcmFtIHN0ciAgdGhlIHByb3RvY29sIG5hbWUKKyAqIEByZXR1cm4gUEFSQU1fT0sgIHByb3RvY29sIHN1cHBvcnRlZAorICogQHJldHVybiBQQVJBTV9MSUJDVVJMX1VOU1VQUE9SVEVEX1BST1RPQ09MICBwcm90b2NvbCBub3Qgc3VwcG9ydGVkCisgKiBAcmV0dXJuIFBBUkFNX1JFUVVJUkVTX1BBUkFNRVRFUiAgIG1pc3NpbmcgcGFyYW1ldGVyCisgKi8KK2ludCBjaGVja19wcm90b2NvbChjb25zdCBjaGFyICpzdHIpCit7CisgIGNvbnN0IGNoYXIgKiBjb25zdCAqcHA7CisgIGNvbnN0IGN1cmxfdmVyc2lvbl9pbmZvX2RhdGEgKmN1cmxpbmZvID0gY3VybF92ZXJzaW9uX2luZm8oQ1VSTFZFUlNJT05fTk9XKTsKKyAgaWYoIXN0cikKKyAgICByZXR1cm4gUEFSQU1fUkVRVUlSRVNfUEFSQU1FVEVSOworICBmb3IocHAgPSBjdXJsaW5mby0+cHJvdG9jb2xzOyAqcHA7IHBwKyspIHsKKyAgICBpZihjdXJseF9yYXdfZXF1YWwoKnBwLCBzdHIpKQorICAgICAgcmV0dXJuIFBBUkFNX09LOworICB9CisgIHJldHVybiBQQVJBTV9MSUJDVVJMX1VOU1VQUE9SVEVEX1BST1RPQ09MOworfQorCisvKioKICAqIFBhcnNlcyB0aGUgZ2l2ZW4gc3RyaW5nIGxvb2tpbmcgZm9yIGFuIG9mZnNldCAod2hpY2ggbWF5IGJlIGEKICAqIGxhcmdlci10aGFuLWludGVnZXIgdmFsdWUpLiBUaGUgb2Zmc2V0IENBTk5PVCBiZSBuZWdhdGl2ZSEKICAqCkBAIC00MDUsNyArNDI2LDcgQEAKICAgICAgIGN1cmx4X21zbnByaW50Zihwcm9tcHQsIHNpemVvZihwcm9tcHQpLAogICAgICAgICAgICAgICAgICAgICAgICJFbnRlciAlcyBwYXNzd29yZCBmb3IgdXNlciAnJXMnIG9uIFVSTCAjJSIKICAgICAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UVSAiOiIsCi0gICAgICAgICAgICAgICAgICAgICAga2luZCwgKnVzZXJwd2QsIGkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICBraW5kLCAqdXNlcnB3ZCwgKGN1cmxfb2ZmX3QpIChpICsgMSkpOwogCiAgICAgLyogZ2V0IHBhc3N3b3JkICovCiAgICAgZ2V0cGFzc19yKHByb21wdCwgcGFzc3dkLCBzaXplb2YocGFzc3dkKSk7CkBAIC00OTgsNyArNTE5LDcgQEAKICAgYm9vbCBsYXN0ID0gKGNvbmZpZy0+bmV4dCA/IEZBTFNFIDogVFJVRSk7CiAKICAgLyogQ2hlY2sgd2UgaGF2ZSBhIHBhc3N3b3JkIGZvciB0aGUgZ2l2ZW4gaG9zdCB1c2VyICovCi0gIGlmKGNvbmZpZy0+dXNlcnB3ZCAmJiAhY29uZmlnLT54b2F1dGgyX2JlYXJlcikgeworICBpZihjb25maWctPnVzZXJwd2QgJiYgIWNvbmZpZy0+b2F1dGhfYmVhcmVyKSB7CiAgICAgcmVzdWx0ID0gY2hlY2twYXNzd2QoImhvc3QiLCBpLCBsYXN0LCAmY29uZmlnLT51c2VycHdkKTsKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfcGFyYW1obHAuaCBiL3NyYy90b29sX3BhcmFtaGxwLmgKaW5kZXggNjlkN2ZkNC4uODlhOTliMiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfcGFyYW1obHAuaAorKysgYi9zcmMvdG9vbF9wYXJhbWhscC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzgsNiArMzgsOCBAQAogCiBsb25nIHByb3RvMm51bShzdHJ1Y3QgT3BlcmF0aW9uQ29uZmlnICpjb25maWcsIGxvbmcgKnZhbCwgY29uc3QgY2hhciAqc3RyKTsKIAoraW50IGNoZWNrX3Byb3RvY29sKGNvbnN0IGNoYXIgKnN0cik7CisKIFBhcmFtZXRlckVycm9yIHN0cjJvZmZzZXQoY3VybF9vZmZfdCAqdmFsLCBjb25zdCBjaGFyICpzdHIpOwogCiBDVVJMY29kZSBnZXRfYXJncyhzdHJ1Y3QgT3BlcmF0aW9uQ29uZmlnICpjb25maWcsIGNvbnN0IHNpemVfdCBpKTsKQEAgLTUxLDQgKzUzLDMgQEAKIGxvbmcgZGVsZWdhdGlvbihzdHJ1Y3QgT3BlcmF0aW9uQ29uZmlnICpjb25maWcsIGNoYXIgKnN0cik7CiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9UT09MX1BBUkFNSExQX0ggKi8KLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfcGFyc2VjZmcuYyBiL3NyYy90b29sX3BhcnNlY2ZnLmMKaW5kZXggMzliNDNlZS4uZDk0NTRjMiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfcGFyc2VjZmcuYworKysgYi9zcmMvdG9vbF9wYXJzZWNmZy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3BhcnNlY2ZnLmggYi9zcmMvdG9vbF9wYXJzZWNmZy5oCmluZGV4IGMzYjE5ZDUuLmI2NzZlYzMgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhcnNlY2ZnLmgKKysrIGIvc3JjL3Rvb2xfcGFyc2VjZmcuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3NkZWNscy5oIGIvc3JjL3Rvb2xfc2RlY2xzLmgKaW5kZXggZTc0MDIwZi4uYTU2MzkwZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfc2RlY2xzLmgKKysrIGIvc3JjL3Rvb2xfc2RlY2xzLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMzUsMTAgKzEzNSw4IEBACiAgIEhUVFBSRVFfVU5TUEVDLCAgLyogZmlyc3QgaW4gbGlzdCAqLwogICBIVFRQUkVRX0dFVCwKICAgSFRUUFJFUV9IRUFELAotICBIVFRQUkVRX1BPU1QsCi0gIEhUVFBSRVFfU0lNUExFUE9TVCwKLSAgSFRUUFJFUV9DVVNUT00sCi0gIEhUVFBSRVFfTEFTVCAgICAgLyogbGFzdCBpbiBsaXN0ICovCisgIEhUVFBSRVFfRk9STVBPU1QsCisgIEhUVFBSRVFfU0lNUExFUE9TVAogfSBIdHRwUmVxOwogCiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX3NldG9wdC5jIGIvc3JjL3Rvb2xfc2V0b3B0LmMKaW5kZXggYTUzZmRjOC4uNjkwY2UxNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfc2V0b3B0LmMKKysrIGIvc3JjL3Rvb2xfc2V0b3B0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03MCw2ICs3MCw4IEBACiAgIE5WKENVUkxfSFRUUF9WRVJTSU9OX05PTkUpLAogICBOVihDVVJMX0hUVFBfVkVSU0lPTl8xXzApLAogICBOVihDVVJMX0hUVFBfVkVSU0lPTl8xXzEpLAorICBOVihDVVJMX0hUVFBfVkVSU0lPTl8yXzApLAorICBOVihDVVJMX0hUVFBfVkVSU0lPTl8yVExTKSwKICAgTlZFTkQsCiB9OwogCkBAIC0xMDcsNiArMTA5LDEyIEBACiAgIE5WRU5ELAogfTsKIAorY29uc3QgTmFtZVZhbHVlVW5zaWduZWQgc2V0b3B0X252X0NVUkxTU0xPUFRbXSA9IHsKKyAgTlYoQ1VSTFNTTE9QVF9BTExPV19CRUFTVCksCisgIE5WKENVUkxTU0xPUFRfTk9fUkVWT0tFKSwKKyAgTlZFTkQsCit9OworCiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxfTkVUUkNbXSA9IHsKICAgTlYoQ1VSTF9ORVRSQ19JR05PUkVEKSwKICAgTlYoQ1VSTF9ORVRSQ19PUFRJT05BTCksCkBAIC0yMjEsNyArMjI5LDcgQEAKICAgICAgIGUgKz0gMjsKICAgICB9CiAgICAgZWxzZSBpZighIGlzcHJpbnQoYykpIHsKLSAgICAgIHNucHJpbnRmKGUsIDQsICJcXCUwM28iLCBjKTsKKyAgICAgIHNucHJpbnRmKGUsIDUsICJcXCUwM28iLCAodW5zaWduZWQpYyk7CiAgICAgICBlICs9IDQ7CiAgICAgfQogICAgIGVsc2UKQEAgLTM4NiwxMSArMzk0LDExIEBACiAgICAgICAgICAgcmV0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICAgICAgICBnb3RvIG5vbWVtOwogICAgICAgICB9Ci0gICAgICAgIGlmKHBwLT5mbGFncyAmIEhUVFBQT1NUX0ZJTEVOQU1FKSB7CisgICAgICAgIGlmKHBwLT5mbGFncyAmIENVUkxfSFRUUFBPU1RfRklMRU5BTUUpIHsKICAgICAgICAgICAvKiBmaWxlIHVwbG9hZCBhcyBmb3IgLUYgQGZpbGVuYW1lICovCiAgICAgICAgICAgREFUQTEoIiAgICAgICAgICAgICBDVVJMRk9STV9GSUxFLCBcIiVzXCIsIiwgZXNjYXBlZCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihwcC0+ZmxhZ3MgJiBIVFRQUE9TVF9SRUFERklMRSkgeworICAgICAgICBlbHNlIGlmKHBwLT5mbGFncyAmIENVUkxfSFRUUFBPU1RfUkVBREZJTEUpIHsKICAgICAgICAgICAvKiBjb250ZW50IGZyb20gZmlsZSBhcyBmb3IgLUYgPGZpbGVuYW1lICovCiAgICAgICAgICAgREFUQTEoIiAgICAgICAgICAgICBDVVJMRk9STV9GSUxFQ09OVEVOVCwgXCIlc1wiLCIsIGVzY2FwZWQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zZXRvcHQuaCBiL3NyYy90b29sX3NldG9wdC5oCmluZGV4IGZjYmE5NGMuLjdjZDM4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3NldG9wdC5oCisrKyBiL3NyYy90b29sX3NldG9wdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTIsNiArNTIsNyBAQAogZXh0ZXJuIGNvbnN0IE5hbWVWYWx1ZSBzZXRvcHRfbnZfQ1VSTF9USU1FQ09ORFtdOwogZXh0ZXJuIGNvbnN0IE5hbWVWYWx1ZSBzZXRvcHRfbnZfQ1VSTEZUUFNTTF9DQ0NbXTsKIGV4dGVybiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxVU0VTU0xbXTsKK2V4dGVybiBjb25zdCBOYW1lVmFsdWVVbnNpZ25lZCBzZXRvcHRfbnZfQ1VSTFNTTE9QVFtdOwogZXh0ZXJuIGNvbnN0IE5hbWVWYWx1ZSBzZXRvcHRfbnZfQ1VSTF9ORVRSQ1tdOwogZXh0ZXJuIGNvbnN0IE5hbWVWYWx1ZSBzZXRvcHRfbnZfQ1VSTFBST1RPW107CiBleHRlcm4gY29uc3QgTmFtZVZhbHVlVW5zaWduZWQgc2V0b3B0X252X0NVUkxBVVRIW107CkBAIC02Myw2ICs2NCw3IEBACiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX1RJTUVDT05ESVRJT04gc2V0b3B0X252X0NVUkxfVElNRUNPTkQKICNkZWZpbmUgc2V0b3B0X252X0NVUkxPUFRfRlRQX1NTTF9DQ0Mgc2V0b3B0X252X0NVUkxGVFBTU0xfQ0NDCiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX1VTRV9TU0wgc2V0b3B0X252X0NVUkxVU0VTU0wKKyNkZWZpbmUgc2V0b3B0X252X0NVUkxPUFRfU1NMX09QVElPTlMgc2V0b3B0X252X0NVUkxTU0xPUFQKICNkZWZpbmUgc2V0b3B0X252X0NVUkxPUFRfTkVUUkMgc2V0b3B0X252X0NVUkxfTkVUUkMKICNkZWZpbmUgc2V0b3B0X252X0NVUkxPUFRfUFJPVE9DT0xTIHNldG9wdF9udl9DVVJMUFJPVE8KICNkZWZpbmUgc2V0b3B0X252X0NVUkxPUFRfUkVESVJfUFJPVE9DT0xTIHNldG9wdF9udl9DVVJMUFJPVE8KZGlmZiAtLWdpdCBhL3NyYy90b29sX3NldHVwLmggYi9zcmMvdG9vbF9zZXR1cC5oCmluZGV4IDNkN2MxNTguLjkwYjAxZDcgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3NldHVwLmgKKysrIGIvc3JjL3Rvb2xfc2V0dXAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3NsZWVwLmMgYi9zcmMvdG9vbF9zbGVlcC5jCmluZGV4IGQwMjNiMzIuLmQ4Nzg1MTIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3NsZWVwLmMKKysrIGIvc3JjL3Rvb2xfc2xlZXAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zbGVlcC5oIGIvc3JjL3Rvb2xfc2xlZXAuaAppbmRleCAxMTVhNGU0Li42YzUxYTkzIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9zbGVlcC5oCisrKyBiL3NyYy90b29sX3NsZWVwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zdHJkdXAuYyBiL3NyYy90b29sX3N0cmR1cC5jCmluZGV4IGEwYmJlODguLmNiNGExYzUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3N0cmR1cC5jCisrKyBiL3NyYy90b29sX3N0cmR1cC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3N0cmR1cC5oIGIvc3JjL3Rvb2xfc3RyZHVwLmgKaW5kZXggODNjODEwMi4uZjg0YjIwMiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfc3RyZHVwLmgKKysrIGIvc3JjL3Rvb2xfc3RyZHVwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKaW5kZXggMTMzNzI1Mi4uNzBkMTdmZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfdXJsZ2xvYi5jCisrKyBiL3NyYy90b29sX3VybGdsb2IuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDYgKzI0LDggQEAKICNkZWZpbmUgRU5BQkxFX0NVUkxYX1BSSU5URgogLyogdXNlIG91ciBvd24gcHJpbnRmKCkgZnVuY3Rpb25zICovCiAjaW5jbHVkZSAiY3VybHguaCIKKyNpbmNsdWRlICJ0b29sX2NmZ2FibGUuaCIKKyNpbmNsdWRlICJ0b29sX2Rvc3dpbi5oIgogI2luY2x1ZGUgInRvb2xfdXJsZ2xvYi5oIgogI2luY2x1ZGUgInRvb2xfdm1zLmgiCiAKQEAgLTI3Nyw4ICsyNzksNyBAQAogCiAgICAgKnBvc3AgKz0gKHBhdHRlcm4gLSAqcGF0dGVybnApOwogCi0gICAgaWYoIWVuZHAgfHwgKG1pbl9uID4gbWF4X24pIHx8IChzdGVwX24gPiAobWF4X24gLSBtaW5fbikpIHx8Ci0gICAgICAgKHN0ZXBfbiA8PSAwKSApCisgICAgaWYoIWVuZHAgfHwgKG1pbl9uID4gbWF4X24pIHx8IChzdGVwX24gPiAobWF4X24gLSBtaW5fbikpIHx8ICFzdGVwX24pCiAgICAgICAvKiB0aGUgcGF0dGVybiBpcyBub3Qgd2VsbC1mb3JtZWQgKi8KICAgICAgIHJldHVybiBHTE9CRVJST1IoImJhZCByYW5nZSIsICpwb3NwLCBDVVJMRV9VUkxfTUFMRk9STUFUKTsKIApAQCAtNjY2LDYgKzY2NywyMCBAQAogICAgIHN0cmluZ2xlbiArPSBhcHBlbmRsZW47CiAgIH0KICAgdGFyZ2V0W3N0cmluZ2xlbl09ICdcMCc7CisKKyNpZiBkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKFdJTjMyKQorICB7CisgICAgY2hhciAqc2FuaXRpemVkOworICAgIFNBTklUSVpFY29kZSBzYyA9IHNhbml0aXplX2ZpbGVfbmFtZSgmc2FuaXRpemVkLCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTQU5JVElaRV9BTExPV19QQVRIIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVEKSk7CisgICAgQ3VybF9zYWZlZnJlZSh0YXJnZXQpOworICAgIGlmKHNjKQorICAgICAgcmV0dXJuIENVUkxFX1VSTF9NQUxGT1JNQVQ7CisgICAgdGFyZ2V0ID0gc2FuaXRpemVkOworICB9CisjZW5kaWYgLyogTVNET1MgfHwgV0lOMzIgKi8KKwogICAqcmVzdWx0ID0gdGFyZ2V0OwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmggYi9zcmMvdG9vbF91cmxnbG9iLmgKaW5kZXggNjJjMWFiZC4uYzNiZTk0OCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfdXJsZ2xvYi5oCisrKyBiL3NyYy90b29sX3VybGdsb2IuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3V0aWwuYyBiL3NyYy90b29sX3V0aWwuYwppbmRleCA2YzI2NDE0Li44YWYxNWZmIDEwMDY0NAotLS0gYS9zcmMvdG9vbF91dGlsLmMKKysrIGIvc3JjL3Rvb2xfdXRpbC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3V0aWwuaCBiL3NyYy90b29sX3V0aWwuaAppbmRleCBkOGJiMDM2Li44ZjcyZDYyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF91dGlsLmgKKysrIGIvc3JjL3Rvb2xfdXRpbC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfdmVyc2lvbi5oIGIvc3JjL3Rvb2xfdmVyc2lvbi5oCmluZGV4IDU2OTUyNmIuLjA0ZjQ1NjcgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3ZlcnNpb24uaAorKysgYi9zcmMvdG9vbF92ZXJzaW9uLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF92bXMuYyBiL3NyYy90b29sX3Ztcy5jCmluZGV4IDRhNmE2ZjUuLmNjMzBmZTAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3Ztcy5jCisrKyBiL3NyYy90b29sX3Ztcy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTYwLDIwICsxNjAsMjAgQEAKICAgZm9yKGkgPSAwOyBkZWNjX2ZlYXRfYXJyYXlbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKIAogICAgIC8qIEdldCB0aGUgZmVhdHVyZSBpbmRleC4gKi8KLSAgICBmZWF0X2luZGV4ID0gZGVjYyRmZWF0dXJlX2dldF9pbmRleCggZGVjY19mZWF0X2FycmF5W2ldLm5hbWUpOworICAgIGZlYXRfaW5kZXggPSBkZWNjJGZlYXR1cmVfZ2V0X2luZGV4KGRlY2NfZmVhdF9hcnJheVtpXS5uYW1lKTsKIAogICAgIGlmKGZlYXRfaW5kZXggPj0gMCkgewogICAgICAgLyogVmFsaWQgaXRlbS4gIENvbGxlY3QgaXRzIHByb3BlcnRpZXMuICovCi0gICAgICBmZWF0X3ZhbHVlID0gZGVjYyRmZWF0dXJlX2dldF92YWx1ZSggZmVhdF9pbmRleCwgMSk7Ci0gICAgICBmZWF0X3ZhbHVlX21pbiA9IGRlY2MkZmVhdHVyZV9nZXRfdmFsdWUoIGZlYXRfaW5kZXgsIDIpOwotICAgICAgZmVhdF92YWx1ZV9tYXggPSBkZWNjJGZlYXR1cmVfZ2V0X3ZhbHVlKCBmZWF0X2luZGV4LCAzKTsKKyAgICAgIGZlYXRfdmFsdWUgPSBkZWNjJGZlYXR1cmVfZ2V0X3ZhbHVlKGZlYXRfaW5kZXgsIDEpOworICAgICAgZmVhdF92YWx1ZV9taW4gPSBkZWNjJGZlYXR1cmVfZ2V0X3ZhbHVlKGZlYXRfaW5kZXgsIDIpOworICAgICAgZmVhdF92YWx1ZV9tYXggPSBkZWNjJGZlYXR1cmVfZ2V0X3ZhbHVlKGZlYXRfaW5kZXgsIDMpOwogCiAgICAgICBpZigoZGVjY19mZWF0X2FycmF5W2ldLnZhbHVlID49IGZlYXRfdmFsdWVfbWluKSAmJgogICAgICAgICAgKGRlY2NfZmVhdF9hcnJheVtpXS52YWx1ZSA8PSBmZWF0X3ZhbHVlX21heCkpIHsKICAgICAgICAgLyogVmFsaWQgdmFsdWUuICBTZXQgaXQgaWYgbmVjZXNzYXJ5LiAqLwogICAgICAgICBpZihmZWF0X3ZhbHVlICE9IGRlY2NfZmVhdF9hcnJheVtpXS52YWx1ZSkgewotICAgICAgICAgIHN0cyA9IGRlY2MkZmVhdHVyZV9zZXRfdmFsdWUoIGZlYXRfaW5kZXgsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY19mZWF0X2FycmF5W2ldLnZhbHVlKTsKKyAgICAgICAgICBzdHMgPSBkZWNjJGZlYXR1cmVfc2V0X3ZhbHVlKGZlYXRfaW5kZXgsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNjX2ZlYXRfYXJyYXlbaV0udmFsdWUpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL3NyYy90b29sX3Ztcy5oIGIvc3JjL3Rvb2xfdm1zLmgKaW5kZXggMWFmZDc1ZS4uNjY1NmE1OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfdm1zLmgKKysrIGIvc3JjL3Rvb2xfdm1zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF93cml0ZWVudi5jIGIvc3JjL3Rvb2xfd3JpdGVlbnYuYwppbmRleCBiMjhmMzVhLi5jMWJmY2JlIDEwMDY0NAotLS0gYS9zcmMvdG9vbF93cml0ZWVudi5jCisrKyBiL3NyYy90b29sX3dyaXRlZW52LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfd3JpdGVlbnYuaCBiL3NyYy90b29sX3dyaXRlZW52LmgKaW5kZXggYzBhOTUyZi4uNTVkYWY0OCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfd3JpdGVlbnYuaAorKysgYi9zcmMvdG9vbF93cml0ZWVudi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfd3JpdGVvdXQuYyBiL3NyYy90b29sX3dyaXRlb3V0LmMKaW5kZXggNjNkYjkwYy4uNDE0ZmNiZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfd3JpdGVvdXQuYworKysgYi9zcmMvdG9vbF93cml0ZW91dC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3dyaXRlb3V0LmggYi9zcmMvdG9vbF93cml0ZW91dC5oCmluZGV4IDRkZDNhNzUuLjhkM2Y2NDUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3dyaXRlb3V0LmgKKysrIGIvc3JjL3Rvb2xfd3JpdGVvdXQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3hhdHRyLmMgYi9zcmMvdG9vbF94YXR0ci5jCmluZGV4IGRhMGNhZDYuLmY0OWZkNTcgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3hhdHRyLmMKKysrIGIvc3JjL3Rvb2xfeGF0dHIuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF94YXR0ci5oIGIvc3JjL3Rvb2xfeGF0dHIuaAppbmRleCAzZjhmNTg1Li41NmJkOWU0IDEwMDY0NAotLS0gYS9zcmMvdG9vbF94YXR0ci5oCisrKyBiL3NyYy90b29sX3hhdHRyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy8uZ2l0aWdub3JlIGIvdGVzdHMvLmdpdGlnbm9yZQppbmRleCBlZjdjZTExLi5kYzQ1ZjAzIDEwMDY0NAotLS0gYS90ZXN0cy8uZ2l0aWdub3JlCisrKyBiL3Rlc3RzLy5naXRpZ25vcmUKQEAgLTEsMTcgKzEsMTcgQEAKLWxvZworKnBpZAorY29uZmlndXJlaGVscC5wbQogY3VybF9jbGllbnRfa2V5CiBjdXJsX2NsaWVudF9rZXkucHViCiBjdXJsX2NsaWVudF9rbm93bmhvc3RzCi1jdXJsX2hvc3RfZHNhX2tleQotY3VybF9ob3N0X2RzYV9rZXkucHViCitjdXJsX2hvc3RfcnNhX2tleQorY3VybF9ob3N0X3JzYV9rZXkucHViCiBjdXJsX3NmdHBfY21kcwogY3VybF9zZnRwX2NvbmZpZwogY3VybF9zc2hfY29uZmlnCiBjdXJsX3NzaGRfY29uZmlnCi0qcGlkCi1zdHVubmVsLmNvbmYKK2xvZwogcnVudGVzdHMuaHRtbAogcnVudGVzdHMucGRmCitzdHVubmVsLmNvbmYKIHRlc3RjdXJsLmh0bWwKIHRlc3RjdXJsLnBkZgotY29uZmlndXJlaGVscC5wbQpkaWZmIC0tZ2l0IGEvdGVzdHMvRklMRUZPUk1BVCBiL3Rlc3RzL0ZJTEVGT1JNQVQKaW5kZXggYzIzNGMyMi4uYThlNzRiMyAxMDA2NDQKLS0tIGEvdGVzdHMvRklMRUZPUk1BVAorKysgYi90ZXN0cy9GSUxFRk9STUFUCkBAIC0xMjIsNyArMTIyLDcgQEAKICAtIERlbGF5IHJlc3BvbmRpbmcgdG8gdGhpcyBjb21tYW5kIGZvciB0aGUgZ2l2ZW4gdGltZQogUkVUUldFSVJETwogIC0gRW5hYmxlIHRoZSAid2VpcmRvIiBSRVRSIGNhc2Ugd2hlbiBtdWx0aXBsZSByZXNwb25zZSBsaW5lcyBhcHBlYXIgYXQgb25jZQotICAgd2hlbiBhIGZpbGUgaXMgdHJhbnNmZXJlZAorICAgd2hlbiBhIGZpbGUgaXMgdHJhbnNmZXJyZWQKIFJFVFJOT1NJWkUKICAtIE1ha2Ugc3VyZSB0aGUgUkVUUiByZXNwb25zZSBkb2Vzbid0IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGZpbGUKIE5PU0FWRQpAQCAtMjExLDI2ICsyMTEsMjggQEAKIGRlYnVnCiBnZXRybGltaXQKIEdudVRMUworR1NTLUFQSQoraHR0cDIKIGlkbgogaXB2NgorS2VyYmVyb3MKIGxhcmdlX2ZpbGUKIGxpYnoKIE1ldGFsaW5rCiBOU1MKIE5UTE0KIE9wZW5TU0wKK1BTTAogc29ja3MKK1NQTkVHTwogU1NMCiBTU0xwaW5uaW5nCitTU1BJCiBUTFMtU1JQCiBUcmFja01lbW9yeQogdW5pdHRlc3QKLWh0dHAyCi1TU1BJCi1HU1MtQVBJCi1LZXJiZXJvcwotU1BORUdPCiB1bml4LXNvY2tldHMKK1dpblNTTAogCiBhcyB3ZWxsIGFzIGVhY2ggcHJvdG9jb2wgdGhhdCBjdXJsIHN1cHBvcnRzLiAgQSBwcm90b2NvbCBvbmx5IG5lZWRzIHRvIGJlCiBzcGVjaWZpZWQgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHNlcnZlciAodXNlZnVsIHdoZW4gdGhlIHNlcnZlcgpAQCAtMjkwLDcgKzI5Miw3IEBACiBudW1iZXIgZm9sbG93aW5nIHRoZSBsYXN0IGRvdCBpbiB0aGUgZ2l2ZW4gaG9zdG5hbWUgKG1hZGUgc28gdGhhdCBhIENPTk5FQ1QKIGNhbiBzdGlsbCBwYXNzIG9uIHRlc3QgbnVtYmVyKSBzbyB0aGF0ICJmb28uYmFyLjEyMyIgZ2V0cyB0cmVhdGVkIGFzIHRlc3QgY2FzZQogMTIzLiBBbHRlcm5hdGl2ZWx5LCBpZiBhbiBJUHY2IGFkZHJlc3MgaXMgcHJvdmlkZWQgdG8gQ09OTkVDVCwgdGhlIGxhc3QKLWhleGFkZWNpbWFsIGdyb3VwIGluIHRoZSBhZGRyZXNzIHdpbGwgYmUgdXNlZCBhcyB0aGUgdGVzdCBudW1lciEgRm9yIGV4YW1wbGUKK2hleGFkZWNpbWFsIGdyb3VwIGluIHRoZSBhZGRyZXNzIHdpbGwgYmUgdXNlZCBhcyB0aGUgdGVzdCBudW1iZXIhIEZvciBleGFtcGxlCiB0aGUgYWRkcmVzcyAiWzEyMzQ6OmZmXSIgd291bGQgYmUgdHJlYXRlZCBhcyB0ZXN0IGNhc2UgMjU1LgogCiBTZXQgdHlwZT0icGVybCIgdG8gd3JpdGUgdGhlIHRlc3QgY2FzZSBhcyBhIHBlcmwgc2NyaXB0LiBJdCBpbXBsaWVzIHRoYXQKQEAgLTM0MCw3ICszNDIsNyBAQAogJUhUVFBUTFNQT1JUICAtIFBvcnQgbnVtYmVyIG9mIHRoZSBIVFRQIFRMUyBzZXJ2ZXIKICVJTUFQNlBPUlQgLSBJUHY2IHBvcnQgbnVtYmVyIG9mIHRoZSBJTUFQIHNlcnZlcgogJUlNQVBQT1JUICAtIFBvcnQgbnVtYmVyIG9mIHRoZSBJTUFQIHNlcnZlcgotJVBPUDM2UE9SVCAtIElQdjYgb3J0IG51bWJlciBvZiB0aGUgUE9QMyBzZXJ2ZXIKKyVQT1AzNlBPUlQgLSBJUHY2IHBvcnQgbnVtYmVyIG9mIHRoZSBQT1AzIHNlcnZlcgogJVBPUDNQT1JUICAtIFBvcnQgbnVtYmVyIG9mIHRoZSBQT1AzIHNlcnZlcgogJVBST1hZUE9SVCAtIFBvcnQgbnVtYmVyIG9mIHRoZSBIVFRQIHByb3h5CiAlUFdEICAgICAgIC0gQ3VycmVudCBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggZWFjNDU1YS4uMzZlOTJhYyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI1LDkgKzI1LDExIEBACiAKIEVYVFJBX0RJU1QgPSBmdHBzZXJ2ZXIucGwgaHR0cHNlcnZlci5wbCBzZWN1cmVzZXJ2ZXIucGwgcnVudGVzdHMucGwgZ2V0cGFydC5wbSBcCiAgRklMRUZPUk1BVCBSRUFETUUgc3R1bm5lbC5wZW0gbWVtYW5hbHl6ZS5wbCB0ZXN0Y3VybC5wbCB2YWxncmluZC5wbSBmdHAucG0gICBcCi0gc3Noc2VydmVyLnBsIHNzaGhlbHAucG0gdGVzdGN1cmwuMSBydW50ZXN0cy4xICQoSFRNTFBBR0VTKSAkKFBERlBBR0VTKSBcCisgc3Noc2VydmVyLnBsIHNzaGhlbHAucG0gcGF0aGhlbHAucG0gdGVzdGN1cmwuMSBydW50ZXN0cy4xIFwKKyAkKEhUTUxQQUdFUykgJChQREZQQUdFUykgXAogIHNlcnZlcmhlbHAucG0gdGZ0cHNlcnZlci5wbCBydHNwc2VydmVyLnBsIGRpcmVjdG9yaWVzLnBtIHN5bWJvbC1zY2FuLnBsIFwKLSBDTWFrZUxpc3RzLnR4dCBtZW0taW5jbHVkZS1zY2FuLnBsIHZhbGdyaW5kLnN1cHAgaHR0cF9waXBlLnB5IGV4dGVybi1zY2FuLnBsCisgQ01ha2VMaXN0cy50eHQgbWVtLWluY2x1ZGUtc2Nhbi5wbCB2YWxncmluZC5zdXBwIGh0dHBfcGlwZS5weSBleHRlcm4tc2Nhbi5wbCBcCisgbWFucGFnZS1zY2FuLnBsIG5yb2ZmLXNjYW4ucGwKIAogRElTVENMRUFORklMRVMgPSBjb25maWd1cmVoZWxwLnBtCiAKQEAgLTQ5LDcgKzUxLDcgQEAKIAogQ0xFQU5GSUxFUyA9IC5odHRwLnBpZCAuaHR0cHMucGlkIC5mdHAucGlkIC5mdHBzLnBpZAogCi1NQU4ySFRNTD0gcm9mZml0IDwgJDwgPiRACitNQU4ySFRNTD0gcm9mZml0ICQ8ID4kQAogCiBjdXJsOgogCUBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKQpAQCAtOTIsMyArOTQsOCBAQAogCXBzMnBkZiAkJGZvby5wcyAkQDsgXAogCXJtICQkZm9vLnBzOyBcCiAJZWNobyAiY29udmVydGVkICQ8IHRvICRAIikKKworY2hlY2tzcmM6CisJY2QgbGlidGVzdCAmJiAkKE1BS0UpIGNoZWNrc3JjCisJY2QgdW5pdCAmJiAkKE1BS0UpIGNoZWNrc3JjCisJY2Qgc2VydmVyICYmICQoTUFLRSkgY2hlY2tzcmMKZGlmZiAtLWdpdCBhL3Rlc3RzL2NlcnRzL01ha2VmaWxlLmFtIGIvdGVzdHMvY2VydHMvTWFrZWZpbGUuYW0KaW5kZXggYmQwYmJiYi4uN2U3ZjFmYSAxMDA2NDQKLS0tIGEvdGVzdHMvY2VydHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvY2VydHMvTWFrZWZpbGUuYW0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2NlcnRzL3NjcmlwdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9jZXJ0cy9zY3JpcHRzL01ha2VmaWxlLmFtCmluZGV4IGZmYzE0NDkuLmRiNGE5MGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NlcnRzL3NjcmlwdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvY2VydHMvc2NyaXB0cy9NYWtlZmlsZS5hbQpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvY29udnNyY3Rlc3QucGwgYi90ZXN0cy9jb252c3JjdGVzdC5wbAppbmRleCBlZTQ0MjM5Li4xMTIzNzQ0IDEwMDc1NQotLS0gYS90ZXN0cy9jb252c3JjdGVzdC5wbAorKysgYi90ZXN0cy9jb252c3JjdGVzdC5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL0RJU0FCTEVEIGIvdGVzdHMvZGF0YS9ESVNBQkxFRAppbmRleCA2YTAxMTlkLi41MDU0NGFiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL0RJU0FCTEVECisrKyBiL3Rlc3RzL2RhdGEvRElTQUJMRUQKQEAgLTEwLDMgKzEwLDkgQEAKIDgzNgogODgyCiA5MzgKKyMgdGVzdCAxODAxIGNhdXNlcyBwcm9ibGVtcyBvbiBNYWMgT1MgWCBhbmQgZ2l0aHViCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzM4MAorMTgwMQorIyB0ZXN0IDE1MTAgY2FzdWVzIHByb2JsZW1zIG9uIHRoZSBDSSBvbiBnaXRodWIKKyMgZXhhbXBsZTogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2N1cmwvY3VybC9idWlsZHMvODE2MzM2MDAKKzE1MTAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuYW0gYi90ZXN0cy9kYXRhL01ha2VmaWxlLmFtCmluZGV4IGE0YjI4MWYuLjRlYzAzNjQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5hbQpAQCAtNSw3ICs1LDcgQEAKICMgVEVTVENBU0VTIGFyZSB0YWtlbiBmcm9tIE1ha2VmaWxlLmluYwogaW5jbHVkZSBNYWtlZmlsZS5pbmMKIAotRVhUUkFfRElTVCA9ICQoVEVTVENBU0VTKSBESVNBQkxFRAorRVhUUkFfRElTVCA9ICQoVEVTVENBU0VTKSBESVNBQkxFRCBDTWFrZUxpc3RzLnR4dAogCiBmaWxlY2hlY2s6CiAJQG1rZGlyIHRlc3QtcGxhY2U7IFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKaW5kZXggNzM4NzdjNi4uZTNiNWE4OCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTg2LDIwICs4NiwyMSBAQAogdGVzdDgwOSB0ZXN0ODEwIHRlc3Q4MTEgdGVzdDgxMiB0ZXN0ODEzIHRlc3Q4MTQgdGVzdDgxNSB0ZXN0ODE2IHRlc3Q4MTcgXAogdGVzdDgxOCB0ZXN0ODE5IHRlc3Q4MjAgdGVzdDgyMSB0ZXN0ODIyIHRlc3Q4MjMgdGVzdDgyNCB0ZXN0ODI1IHRlc3Q4MjYgXAogdGVzdDgyNyB0ZXN0ODI4IHRlc3Q4MjkgdGVzdDgzMCB0ZXN0ODMxIHRlc3Q4MzIgdGVzdDgzMyB0ZXN0ODM0IHRlc3Q4MzUgXAotdGVzdDgzNiB0ZXN0ODM3IHRlc3Q4MzggdGVzdDgzOSB0ZXN0ODQwIFwKK3Rlc3Q4MzYgdGVzdDgzNyB0ZXN0ODM4IHRlc3Q4MzkgdGVzdDg0MCB0ZXN0ODQxIHRlc3Q4NDIgdGVzdDg0MyB0ZXN0ODQ0IFwKK3Rlc3Q4NDUgXAogXAogdGVzdDg1MCB0ZXN0ODUxIHRlc3Q4NTIgdGVzdDg1MyB0ZXN0ODU0IHRlc3Q4NTUgdGVzdDg1NiB0ZXN0ODU3IHRlc3Q4NTggXAogdGVzdDg1OSB0ZXN0ODYwIHRlc3Q4NjEgdGVzdDg2MiB0ZXN0ODYzIHRlc3Q4NjQgdGVzdDg2NSB0ZXN0ODY2IHRlc3Q4NjcgXAogdGVzdDg2OCB0ZXN0ODY5IHRlc3Q4NzAgdGVzdDg3MSB0ZXN0ODcyIHRlc3Q4NzMgdGVzdDg3NCB0ZXN0ODc1IHRlc3Q4NzYgXAogdGVzdDg3NyB0ZXN0ODc4IHRlc3Q4NzkgdGVzdDg4MCB0ZXN0ODgxIHRlc3Q4ODIgdGVzdDg4MyB0ZXN0ODg0IHRlc3Q4ODUgXAotdGVzdDg4NiBcCit0ZXN0ODg2IHRlc3Q4ODcgdGVzdDg4OCB0ZXN0ODg5IHRlc3Q4OTAgXAogXAogdGVzdDkwMCB0ZXN0OTAxIHRlc3Q5MDIgdGVzdDkwMyB0ZXN0OTA0IHRlc3Q5MDUgdGVzdDkwNiB0ZXN0OTA3IHRlc3Q5MDggXAogdGVzdDkwOSB0ZXN0OTEwIHRlc3Q5MTEgdGVzdDkxMiB0ZXN0OTEzIHRlc3Q5MTQgdGVzdDkxNSB0ZXN0OTE2IHRlc3Q5MTcgXAogdGVzdDkxOCB0ZXN0OTE5IHRlc3Q5MjAgdGVzdDkyMSB0ZXN0OTIyIHRlc3Q5MjMgdGVzdDkyNCB0ZXN0OTI1IHRlc3Q5MjYgXAogdGVzdDkyNyB0ZXN0OTI4IHRlc3Q5MjkgdGVzdDkzMCB0ZXN0OTMxIHRlc3Q5MzIgdGVzdDkzMyB0ZXN0OTM0IHRlc3Q5MzUgXAogdGVzdDkzNiB0ZXN0OTM3IHRlc3Q5MzggdGVzdDkzOSB0ZXN0OTQwIHRlc3Q5NDEgdGVzdDk0MiB0ZXN0OTQzIHRlc3Q5NDQgXAotdGVzdDk0NSBcCit0ZXN0OTQ1IHRlc3Q5NDYgdGVzdDk0NyB0ZXN0OTQ4IHRlc3Q5NDkgXAogXAogdGVzdDEwMDAgdGVzdDEwMDEgdGVzdDEwMDIgdGVzdDEwMDMgdGVzdDEwMDQgdGVzdDEwMDUgdGVzdDEwMDYgdGVzdDEwMDcgXAogdGVzdDEwMDggdGVzdDEwMDkgdGVzdDEwMTAgdGVzdDEwMTEgdGVzdDEwMTIgdGVzdDEwMTMgdGVzdDEwMTQgdGVzdDEwMTUgXApAQCAtMTE4LDE3ICsxMTksMTggQEAKIHRlc3QxMTEyIHRlc3QxMTEzIHRlc3QxMTE0IHRlc3QxMTE1IHRlc3QxMTE2IHRlc3QxMTE3IHRlc3QxMTE4IHRlc3QxMTE5IFwKIHRlc3QxMTIwIHRlc3QxMTIxIHRlc3QxMTIyIHRlc3QxMTIzIHRlc3QxMTI0IHRlc3QxMTI1IHRlc3QxMTI2IHRlc3QxMTI3IFwKIHRlc3QxMTI4IHRlc3QxMTI5IHRlc3QxMTMwIHRlc3QxMTMxIHRlc3QxMTMyIHRlc3QxMTMzIHRlc3QxMTM0IHRlc3QxMTM1IFwKK3Rlc3QxMTM2IHRlc3QxMTM3IHRlc3QxMTM4IHRlc3QxMTM5IHRlc3QxMTQwIFwKIFwKIHRlc3QxMjAwIHRlc3QxMjAxIHRlc3QxMjAyIHRlc3QxMjAzIHRlc3QxMjA0IHRlc3QxMjA1IHRlc3QxMjA2IHRlc3QxMjA3IFwKIHRlc3QxMjA4IHRlc3QxMjA5IHRlc3QxMjEwIHRlc3QxMjExIHRlc3QxMjEyIHRlc3QxMjEzIHRlc3QxMjE0IHRlc3QxMjE1IFwKIHRlc3QxMjE2IHRlc3QxMjE3IHRlc3QxMjE4IHRlc3QxMjE5IFwKIHRlc3QxMjIwIHRlc3QxMjIxIHRlc3QxMjIyIHRlc3QxMjIzIHRlc3QxMjI0IHRlc3QxMjI1IHRlc3QxMjI2IHRlc3QxMjI3IFwKIHRlc3QxMjI4IHRlc3QxMjI5IHRlc3QxMjMwIHRlc3QxMjMxIHRlc3QxMjMyIHRlc3QxMjMzIHRlc3QxMjM0IHRlc3QxMjM1IFwKLXRlc3QxMjM2IHRlc3QxMjM3IHRlc3QxMjM4IHRlc3QxMjM5IHRlc3QxMjQwIHRlc3QxMjQxIFwKK3Rlc3QxMjM2IHRlc3QxMjM3IHRlc3QxMjM4IHRlc3QxMjM5IHRlc3QxMjQwIHRlc3QxMjQxIHRlc3QxMjQyIHRlc3QxMjQzIFwKIFwKIHRlc3QxMzAwIHRlc3QxMzAxIHRlc3QxMzAyIHRlc3QxMzAzIHRlc3QxMzA0IHRlc3QxMzA1IHRlc3QxMzA2IHRlc3QxMzA3IFwKIHRlc3QxMzA4IHRlc3QxMzA5IHRlc3QxMzEwIHRlc3QxMzExIHRlc3QxMzEyIHRlc3QxMzEzIHRlc3QxMzE0IHRlc3QxMzE1IFwKLXRlc3QxMzE2IHRlc3QxMzE3IHRlc3QxMzE4IHRlc3QxMzE5IHRlc3QxMzIwIHRlc3QxMzIxICAgICAgICAgICAgICAgICAgIFwKK3Rlc3QxMzE2IHRlc3QxMzE3IHRlc3QxMzE4IHRlc3QxMzE5IHRlc3QxMzIwIHRlc3QxMzIxIHRlc3QxMzIyICAgICAgICAgIFwKICAgICAgICAgIHRlc3QxMzI1IHRlc3QxMzI2IHRlc3QxMzI3IHRlc3QxMzI4IHRlc3QxMzI5IHRlc3QxMzMwIHRlc3QxMzMxIFwKIHRlc3QxMzMyIHRlc3QxMzMzIHRlc3QxMzM0IHRlc3QxMzM1IHRlc3QxMzM2IHRlc3QxMzM3IHRlc3QxMzM4IHRlc3QxMzM5IFwKIHRlc3QxMzQwIHRlc3QxMzQxIHRlc3QxMzQyIHRlc3QxMzQzIHRlc3QxMzQ0IHRlc3QxMzQ1IHRlc3QxMzQ2IHRlc3QxMzQ3IFwKQEAgLTE0NSwxNyArMTQ3LDE3IEBACiB0ZXN0MTQxNiB0ZXN0MTQxNyB0ZXN0MTQxOCB0ZXN0MTQxOSB0ZXN0MTQyMCB0ZXN0MTQyMSB0ZXN0MTQyMiB0ZXN0MTQyMyBcCiB0ZXN0MTQyNCBcCiB0ZXN0MTQyOCB0ZXN0MTQyOSB0ZXN0MTQzMCB0ZXN0MTQzMSB0ZXN0MTQzMiB0ZXN0MTQzMyB0ZXN0MTQzNCB0ZXN0MTQzNSBcCi10ZXN0MTQzNiBcCit0ZXN0MTQzNiB0ZXN0MTQzNyBcCiBcCiB0ZXN0MTUwMCB0ZXN0MTUwMSB0ZXN0MTUwMiB0ZXN0MTUwMyB0ZXN0MTUwNCB0ZXN0MTUwNSB0ZXN0MTUwNiB0ZXN0MTUwNyBcCiB0ZXN0MTUwOCB0ZXN0MTUwOSB0ZXN0MTUxMCB0ZXN0MTUxMSB0ZXN0MTUxMiB0ZXN0MTUxMyB0ZXN0MTUxNCB0ZXN0MTUxNSBcCi10ZXN0MTUxNiBcCit0ZXN0MTUxNiB0ZXN0MTUxNyBcCiBcCiB0ZXN0MTUyMCBcCiBcCi10ZXN0MTUyNSB0ZXN0MTUyNiB0ZXN0MTUyNyB0ZXN0MTUyOCB0ZXN0MTUyOSB0ZXN0MTUzMCBcCit0ZXN0MTUyNSB0ZXN0MTUyNiB0ZXN0MTUyNyB0ZXN0MTUyOCB0ZXN0MTUyOSB0ZXN0MTUzMCB0ZXN0MTUzMSBcCiBcCi10ZXN0MTYwMCB0ZXN0MTYwMSB0ZXN0MTYwMiBcCit0ZXN0MTYwMCB0ZXN0MTYwMSB0ZXN0MTYwMiB0ZXN0MTYwMyB0ZXN0MTYwNCBcCiBcCiB0ZXN0MTgwMCB0ZXN0MTgwMSBcCiBcCkBAIC0xNjYsNCArMTY4LDUgQEAKIHRlc3QyMDE2IHRlc3QyMDE3IHRlc3QyMDE4IHRlc3QyMDE5IHRlc3QyMDIwIHRlc3QyMDIxIHRlc3QyMDIyIHRlc3QyMDIzIFwKIHRlc3QyMDI0IHRlc3QyMDI1IHRlc3QyMDI2IHRlc3QyMDI3IHRlc3QyMDI4IHRlc3QyMDI5IHRlc3QyMDMwIHRlc3QyMDMxIFwKIHRlc3QyMDMyIHRlc3QyMDMzIHRlc3QyMDM0IHRlc3QyMDM1IHRlc3QyMDM2IHRlc3QyMDM3IHRlc3QyMDM4IHRlc3QyMDM5IFwKLXRlc3QyMDQwCit0ZXN0MjA0MCB0ZXN0MjA0MSB0ZXN0MjA0MiB0ZXN0MjA0MyB0ZXN0MjA0NCB0ZXN0MjA0NSB0ZXN0MjA0NiB0ZXN0MjA0NyBcCit0ZXN0MjA0OCB0ZXN0MjA0OSB0ZXN0MjA1MCB0ZXN0MjA1MSB0ZXN0MjA1MgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTAwMSBiL3Rlc3RzL2RhdGEvdGVzdDEwMDEKaW5kZXggOTFiMTMyMC4uNjBlNjhhOCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTAwMQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDAxCkBAIC04OSw3ICs4OSw2IEBACiBDb250ZW50LVJhbmdlOiBieXRlcyAyLTQvNQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4xLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4xLUNWUyBPcGVuU1NMLzAuOS42YiBpcHY2IHpsaWIvMS4xLjQgR1NTIGxpYmlkbi8wLjQuNg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC8xMDAxIEhUVFAvMS4xDQpAQCAtOTcsNyArOTYsNiBAQAogQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJhdXNlciIsIHJlYWxtPSJ0ZXN0cmVhbG0iLCBub25jZT0iMTA1MzYwNDE0NCIsIHVyaT0iLzEwMDEiLCByZXNwb25zZT0iNmFmNGQ4OWM5NTJmNGRkNGNjMjE1YTY4NzhkYzQ5OWQiDQogQ29udGVudC1SYW5nZTogYnl0ZXMgMi00LzUNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMw0KIEV4cGVjdDogMTAwLWNvbnRpbnVlDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTAwMiBiL3Rlc3RzL2RhdGEvdGVzdDEwMDIKaW5kZXggODNjY2U2ZS4uODNiODdiOSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTAwMgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDAyCkBAIC04OCw3ICs4OCw2IEBACiBDb250ZW50LVJhbmdlOiBieXRlcyAyLTQvNQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4xLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4xLUNWUyBPcGVuU1NMLzAuOS42YiBpcHY2IHpsaWIvMS4xLjQgR1NTIGxpYmlkbi8wLjQuNg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC8xMDAyLnVwbG9hZDEgSFRUUC8xLjENCkBAIC05Niw3ICs5NSw2IEBACiBBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9ImF1c2VyIiwgcmVhbG09InRlc3RyZWFsbSIsIG5vbmNlPSIxMDUzNjA0MTQ0IiwgdXJpPSIvMTAwMi51cGxvYWQxIiwgcmVzcG9uc2U9IjE5OGFhOWI2YWNiNGIwYzcxZDAyYTE5N2E1ZTQxZjU0Ig0KIENvbnRlbnQtUmFuZ2U6IGJ5dGVzIDItNC81DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDMNCiBFeHBlY3Q6IDEwMC1jb250aW51ZQ0KIA0KQEAgLTEwNyw3ICsxMDUsNiBAQAogQ29udGVudC1SYW5nZTogYnl0ZXMgMi00LzUNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTYuMQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzDQogRXhwZWN0OiAxMDAtY29udGludWUNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDA3IGIvdGVzdHMvZGF0YS90ZXN0MTAwNwppbmRleCA1OTY2YWIzLi42YmFmMjIxIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDA3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwMDcKQEAgLTMyLDggKzMyLDExIEBACiA8L2Vycm9yY29kZT4KIDxwcm90b2NvbD4KIG9wY29kZTogMgotZmlsZW5hbWU6IC9pbnZhbGlkLWZpbGUKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMjcKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC9pbnZhbGlkLWZpbGUKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDA4IGIvdGVzdHMvZGF0YS90ZXN0MTAwOAppbmRleCBiY2M1MDNlLi4xZGFjMzk1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDA4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwMDgKQEAgLTExNCwxMiArMTE0LDEwIEBACiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMDg6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAwODolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAwODolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4xMDA4OiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgL3BhdGgvMTAwODAwMDIgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMy1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMy1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMDkgYi90ZXN0cy9kYXRhL3Rlc3QxMDA5CmluZGV4IGIwYTkzZTUuLmUxOTI5YmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMDkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAwOQpAQCAtMzcsOCArMzcsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMTAwOQogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMTAwOQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMjEgYi90ZXN0cy9kYXRhL3Rlc3QxMDIxCmluZGV4IDNhYzllMTIuLjNiZDY0YmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMjEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAyMQpAQCAtMTE5LDE3ICsxMTksMTQgQEAKIDxwcm90b2NvbD4KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAyMTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4xMDIxOiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMjE6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAyMTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAyMTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4xMDIxOiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgL3BhdGgvMTAyMTAwMDIgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMy1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMy1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMzQgYi90ZXN0cy9kYXRhL3Rlc3QxMDM0CmluZGV4IGM0NzU3NDAuLmYxNDI2ODQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMzQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAzNApAQCAtNTUsNyArNTUsNiBAQAogR0VUIGh0dHA6Ly9pbnZhbGlkLXV0Zjgt4pAubG9jYWwvcGFnZS8xMDM0IEhUVFAvMS4xDQogSG9zdDogaW52YWxpZC11dGY4LeKQLmxvY2FsDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTAzNSBiL3Rlc3RzL2RhdGEvdGVzdDEwMzUKaW5kZXggMjBiNDM0Yy4uZTFjMmFmNiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTAzNQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDM1CkBAIC01Miw3ICs1Miw2IEBACiBHRVQgaHR0cDovL3Rvby1sb25nLUlETi1uYW1lLWP8cmwtcvxsZXMtbGEtbGEtbGEtZGVlLWRhLWZsb29ieS1ub29ieS5sb2NhbC9wYWdlLzEwMzUgSFRUUC8xLjENCiBIb3N0OiB0b28tbG9uZy1JRE4tbmFtZS1j/HJsLXL8bGVzLWxhLWxhLWxhLWRlZS1kYS1mbG9vYnktbm9vYnkubG9jYWwNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDQ4IGIvdGVzdHMvZGF0YS90ZXN0MTA0OAppbmRleCBjMzAzNDczLi5mOTRhZTU4IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDQ4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwNDgKQEAgLTE2LDcgKzE2LDcgQEAKIDxyZXBseT4KICMgV2hlbiBkb2luZyBMSVNULCB3ZSBnZXQgdGhlIGRlZmF1bHQgbGlzdCBvdXRwdXQgaGFyZC1jb2RlZCBpbiB0aGUgdGVzdAogIyBGVFAgc2VydmVyCi08ZGF0YWNoZWNrPgorPGRhdGFjaGVjayBtb2RlPSJ0ZXh0Ij4KIHRvdGFsIDIwCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA0OSBiL3Rlc3RzL2RhdGEvdGVzdDEwNDkKaW5kZXggZTYwNTRhNC4uNjBmNDEzNiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA0OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDQ5CkBAIC0zNyw4ICszNywxMSBAQAogPHZlcmlmeT4KIDxwcm90b2NvbD4KIG9wY29kZTogMQotZmlsZW5hbWU6IC8xMDQ5CiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8xMDQ5CiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA1MCBiL3Rlc3RzL2RhdGEvdGVzdDEwNTAKaW5kZXggMWFiYjliMS4uYTBlNWJlYSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA1MAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDUwCkBAIC0xMiw3ICsxMiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNTkgYi90ZXN0cy9kYXRhL3Rlc3QxMDU5CmluZGV4IDY4MjBlYTYuLmVlNGU2YTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNTkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA1OQpAQCAtNTEsNyArNTEsNiBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LW51bWJlcjoxMDU5IEhUVFAvMS4xDQogSG9zdDogdGVzdC1udW1iZXI6MTA1OQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDYwIGIvdGVzdHMvZGF0YS90ZXN0MTA2MAppbmRleCBlNGFlYTY1Li4xMDk0NzkyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDYwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwNjAKQEAgLTg4NywxMiArODg3LDEwIEBACiA8cHJvdG9jb2w+CiBDT05ORUNUIHRlc3QucmVtb3RlLmhheHguc2UuMTA2MDo4OTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYwOjg5OTANCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogQ09OTkVDVCB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjA6ODk5MCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTA2MDo4OTkwDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJzaWxseSIsIHJlYWxtPSJ3ZWlyZG9yZWFsbSIsIG5vbmNlPSIxMjM0NSIsIHVyaT0idGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYwOjg5OTAiLCByZXNwb25zZT0iZTFmYmVkMzljMjZmNGVmZTI4NGFkYzBlNTc2ZmY2MzgiDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCAvcGF0aC8xMDYwMDAwMiBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTA2MDo4OTkwDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA2MSBiL3Rlc3RzL2RhdGEvdGVzdDEwNjEKaW5kZXggYTU1YTI3Mi4uNGY1M2E4NyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA2MQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDYxCkBAIC04OTIsMTIgKzg5MiwxMCBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjE6ODk5MCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTA2MTo4OTkwDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYxOjg5OTAgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjE6ODk5MA0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0ic2lsbHkiLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9InRlc3QucmVtb3RlLmhheHguc2UuMTA2MTo4OTkwIiwgcmVzcG9uc2U9IjRlMjM0NDlmYTkzMjI0ODM0Mjk5ZTcyODJhNzA0NzJjIg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgL3BhdGgvMTA2MTAwMDIgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjE6ODk5MA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNzcgYi90ZXN0cy9kYXRhL3Rlc3QxMDc3CmluZGV4IGEzYzkwMjQuLmU3MWQ3NTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNzcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA3NwpAQCAtMzAsNyArMzAsNiBAQAogQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQogQ29udGVudC1MZW5ndGg6IDkNCiBGdW5ueS1oZWFkOiB5ZXN5ZXMNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogY29udGVudHMKIDwvZGF0YTI+CkBAIC02MywxMiArNjIsMTAgQEAKIEdFVCBmdHA6Ly8lSE9TVElQOiVIVFRQUE9SVC93ZS93YW50L3RoYXQvcGFnZS8xMDc3IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgZnRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2Uvd2FudC90aGF0L3BhZ2UvMTA3NzAwMDIgSFRUUC8xLjANCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNzggYi90ZXN0cy9kYXRhL3Rlc3QxMDc4CmluZGV4IGE5YmI3NzEuLmYwNGJhZDMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNzgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA3OApAQCAtNTYsNyArNTYsNiBAQAogPHByb3h5PgogQ09OTkVDVCAlSE9TVElQLjEwNzg6JUhUVFBQT1JUIEhUVFAvMS4wDQogSG9zdDogJUhPU1RJUC4xMDc4OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA4NyBiL3Rlc3RzL2RhdGEvdGVzdDEwODcKaW5kZXggZDIyODk3Ni4uMWZiMTNjYiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA4NworKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDg3CkBAIC05MiwxOCArOTIsMTUgQEAKIEdFVCBodHRwOi8vZmlyc3QuaG9zdC5pdC5pcy93ZS93YW50L3RoYXQvcGFnZS8xMDg3MTAwMCBIVFRQLzEuMQ0KIEhvc3Q6IGZpcnN0Lmhvc3QuaXQuaXMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2ZpcnN0Lmhvc3QuaXQuaXMvd2Uvd2FudC90aGF0L3BhZ2UvMTA4NzEwMDAgSFRUUC8xLjENCiBIb3N0OiBmaXJzdC5ob3N0Lml0LmlzDQogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZ290by5zZWNvbmQuaG9zdC5ub3cvMTA4NzEwMDIgSFRUUC8xLjENCiBIb3N0OiBnb3RvLnNlY29uZC5ob3N0Lm5vdw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwODggYi90ZXN0cy9kYXRhL3Rlc3QxMDg4CmluZGV4IGE4MDdjZTkuLjk4MDFmZmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwODgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA4OApAQCAtOTMsMTkgKzkzLDE2IEBACiBHRVQgaHR0cDovL2ZpcnN0Lmhvc3QuaXQuaXMvd2Uvd2FudC90aGF0L3BhZ2UvMTA4ODEwMDAgSFRUUC8xLjENCiBIb3N0OiBmaXJzdC5ob3N0Lml0LmlzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9maXJzdC5ob3N0Lml0LmlzL3dlL3dhbnQvdGhhdC9wYWdlLzEwODgxMDAwIEhUVFAvMS4xDQogSG9zdDogZmlyc3QuaG9zdC5pdC5pcw0KIEF1dGhvcml6YXRpb246IEJhc2ljIGFXRnRPbTE1YzJWc1pnPT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2dvdG8uc2Vjb25kLmhvc3Qubm93LzEwODgxMDAyIEhUVFAvMS4xDQogSG9zdDogZ290by5zZWNvbmQuaG9zdC5ub3cNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA5MiBiL3Rlc3RzL2RhdGEvdGVzdDEwOTIKaW5kZXggYWRlZjQzMi4uY2U4NDNmMCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA5MgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDkyCkBAIC00OSw3ICs0OSw2IEBACiBHRVQgZnRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2Uvd2FudC90aGF0L3BhZ2UvMTA5Mjt0eXBlPWkgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwOTMgYi90ZXN0cy9kYXRhL3Rlc3QxMDkzCmluZGV4IGRiY2ZkOWYuLjIwODdjODIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwOTMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA5MwpAQCAtMzcsOCArMzcsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMTA5MwogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMTA5MwogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwOTQgYi90ZXN0cy9kYXRhL3Rlc3QxMDk0CmluZGV4IDI5OTY1NTAuLjkxMzE3MjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwOTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA5NApAQCAtNDMsOCArNDMsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMTA5NAogbW9kZTogbmV0YXNjaWkKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMTA5NAogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwOTcgYi90ZXN0cy9kYXRhL3Rlc3QxMDk3CmluZGV4IDNiNzMzYTUuLjgxZWE4NTUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwOTcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA5NwpAQCAtNjcsNyArNjcsNiBAQAogSG9zdDogdGVzdC5hLmdhbGF4eS5mYXIuZmFyLmF3YXkuMTA5NzolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjE5LjUtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjE5LjUtQ1ZTIE9wZW5TU0wvMC45LjhnIHpsaWIvMS4yLjMuMyBjLWFyZXMvMS42LjEtQ1ZTIGxpYmlkbi8xLjEyIGxpYnNzaDIvMS4wLjFfQ1ZTDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIFBPU1QgLzEwOTcgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTkuNS1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTkuNS1DVlMgT3BlblNTTC8wLjkuOGcgemxpYi8xLjIuMy4zIGMtYXJlcy8xLjYuMS1DVlMgbGliaWRuLzEuMTIgbGlic3NoMi8xLjAuMV9DVlMNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDk4IGIvdGVzdHMvZGF0YS90ZXN0MTA5OAppbmRleCA5ODA1NjQ4Li43MGE2ZjM5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDk4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwOTgKQEAgLTQ5LDEyICs0OSwxMCBAQAogR0VUIGZ0cDovL2Z0cC1zaXRlL21vby8xMDk4IEhUVFAvMS4xDQogSG9zdDogZnRwLXNpdGU6MjENCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgZnRwOi8vZnRwLXNpdGUvbW9vLzEwOTggSFRUUC8xLjENCiBIb3N0OiBmdHAtc2l0ZToyMQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA5OSBiL3Rlc3RzL2RhdGEvdGVzdDEwOTkKaW5kZXggY2RlNDAzOS4uN2FhY2MxMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA5OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDk5CkBAIC0zMiwxMSArMzIsMTcgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKK21vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CiBmaWxlbmFtZTogYW4vaW52YWxpZC1maWxlCi1tb2RlOiBvY3RldAogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzEwOTkKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzEwOTkKIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgogZGF0YSBmb3IgMTA5OQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEwNCBiL3Rlc3RzL2RhdGEvdGVzdDExMDQKaW5kZXggMjFlZmUzYy4uNGRmODFhMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTEwNAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTA0CkBAIC03MiwxMiArNzIsMTAgQEAKIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2FudC8xMTA0IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dhbnQvZGF0YS8xMTA0MDAwMiBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiB0ZXN0Mj10cnVlDQogDQogPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMDUgYi90ZXN0cy9kYXRhL3Rlc3QxMTA1CmluZGV4IDk1NjQ3NzUuLjc2YWM0NTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDExMDUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTEwNQpAQCAtNTUsNyArNTUsNyBAQAogPC9wcm90b2NvbD4KIDxmaWxlIG5hbWU9ImxvZy9jb29raWUxMTA1LnR4dCIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCiAxMjcuMC4wLjEJRkFMU0UJL3dlL3dhbnQvCUZBTFNFCTAJZm9vYmFyCW5hbWUKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMDYgYi90ZXN0cy9kYXRhL3Rlc3QxMTA2CmluZGV4IDBjNmJlYzEuLmEyYWRiYmIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDExMDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTEwNgpAQCAtNTAsNyArNTAsNiBAQAogR0VUIGZ0cDovLyVIT1NUSVA6MjM0NTYvMTEwNiBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6MjM0NTYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTM1IGIvdGVzdHMvZGF0YS90ZXN0MTEzNQppbmRleCA4ZmNlNTY1Li45NjBhYWRlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMTM1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMzUKQEAgLTg3LDYgKzg3LDggQEAKIENVUkxfRVhURVJOIENVUkxNY29kZSBjdXJsX211bHRpX3RpbWVvdXQoQ1VSTE0gKm11bHRpX2hhbmRsZSwKIENVUkxfRVhURVJOIENVUkxNY29kZSBjdXJsX211bHRpX3NldG9wdChDVVJMTSAqbXVsdGlfaGFuZGxlLAogQ1VSTF9FWFRFUk4gQ1VSTE1jb2RlIGN1cmxfbXVsdGlfYXNzaWduKENVUkxNICptdWx0aV9oYW5kbGUsCitDVVJMX0VYVEVSTiBjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW0oc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCitDVVJMX0VYVEVSTiBjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnluYW1lKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLAogPC9zdGRvdXQ+CiA8L3ZlcmlmeT4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEzNiBiL3Rlc3RzL2RhdGEvdGVzdDExMzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMzMjdlOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMzYKQEAgLTAsMCArMSw2NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorSFRUUCBwcm94eQorY29va2llcworY29va2llamFyCitQU0wKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlCitDb250ZW50LUxlbmd0aDogNAorQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwKK0Z1bm55LWhlYWQ6IHllc3llcworU2V0LUNvb2tpZTogdGVzdDE9Zm9yYmlkZGVuMTsgZG9tYWluPWV4YW1wbGUuY2s7IHBhdGg9LzsKK1NldC1Db29raWU6IHRlc3QyPWFsbG93ZWQyOyBkb21haW49d3d3LmV4YW1wbGUuY2s7IHBhdGg9LzsKK1NldC1Db29raWU6IHRlc3QzPWZvcmJpZGRlbjM7IGRvbWFpbj1jazsgcGF0aD0vOworU2V0LUNvb2tpZTogdGVzdDQ9YWxsb3dlZDQ7IGRvbWFpbj13d3cuY2s7IHBhdGg9LzsKK1NldC1Db29raWU6IHRlc3Q1PWZvcmJpZGRlbjU7IGRvbWFpbj16LTEuY29tcHV0ZS0xLmFtYXpvbmF3cy5jb207IHBhdGg9LzsKKworYm9vCis8L2RhdGE+Cis8L3JlcGx5PgorCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPGZlYXR1cmVzPgorUFNMCis8L2ZlYXR1cmVzPgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorPG5hbWU+CitDaGVjayBjb29raWVzIGFnYWluc3QgUFNMCis8L25hbWU+Cis8c2V0ZW52PgorVFo9R01UCis8L3NldGVudj4KKzxjb21tYW5kPgoraHR0cDovL3d3dy5leGFtcGxlLmNrLzExMzYgaHR0cDovL3d3dy5jay8xMTM2IGh0dHA6Ly96LTEuY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20vMTEzNiAtYiBub25lIC1jIGxvZy9qYXIxMTM2LnR4dCAteCAlSE9TVElQOiVIVFRQUE9SVAorPC9jb21tYW5kPgorCis8L2NsaWVudD4KKworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8ZmlsZSBuYW1lPSJsb2cvamFyMTEzNi50eHQiIG1vZGU9InRleHQiPgorIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgorCisud3d3LmV4YW1wbGUuY2sJVFJVRQkvCUZBTFNFCTAJdGVzdDIJYWxsb3dlZDIKKy53d3cuY2sJVFJVRQkvCUZBTFNFCTAJdGVzdDQJYWxsb3dlZDQKKy56LTEuY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20JVFJVRQkvCUZBTFNFCTAJdGVzdDUJZm9yYmlkZGVuNQorPC9maWxlPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEzNyBiL3Rlc3RzL2RhdGEvdGVzdDExMzcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiZmNiYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMzcKQEAgLTAsMCArMSw1MiBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitGVFAKK1BBU1YKK1JFVFIKKy0taWdub3JlLWNvbnRlbnQtbGVuZ3RoCis8L2tleXdvcmRzPgorPC9pbmZvPgorIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGE+CitkYXRhCisgICAgdG8KKyAgICAgIHNlZQordGhhdCBGVFAKK3dvcmtzCisgIHNvIGRvZXMgaXQ/Cis8L2RhdGE+Cis8c2VydmVyY21kPgorUkVQTFkgRVBTViA1MDAgbm8gc3VjaCBjb21tYW5kCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorZnRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0ZUUCBSRVRSIC0taWdub3JlLWNvbnRlbnQtbGVuZ3RoCisgPC9uYW1lPgorIDxjb21tYW5kPgorZnRwOi8vJUhPU1RJUDolRlRQUE9SVC8xMTM3IC0taWdub3JlLWNvbnRlbnQtbGVuZ3RoCis8L2NvbW1hbmQ+CisKKzwvY2xpZW50PgorCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK1VTRVIgYW5vbnltb3VzDQorUEFTUyBmdHBAZXhhbXBsZS5jb20NCitQV0QNCitFUFNWDQorUEFTVg0KK1RZUEUgSQ0KK1JFVFIgMTEzNw0KK1FVSVQNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEzOCBiL3Rlc3RzL2RhdGEvdGVzdDExMzgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5MWQyMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMzgKQEAgLTAsMCArMSw3NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorZm9sbG93bG9jYXRpb24KKzwva2V5d29yZHM+Cis8L2luZm8+CisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK0hUVFAvMS4xIDMwMiBPSyBzd3NjbG9zZQ0KK0xvY2F0aW9uOiAuLi9tb28uaHRtbC8/bmFtZT3Yoti62KfYsi3Ys9mFLdiy2K/Yp9uM24wt2KfYsi3YqNin2LLYp9ixLdm+2YjZhCZ0ZXN0Y2FzZT0vMTEzODAwMDIgICAgDQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQNCitDb25uZWN0aW9uOiBjbG9zZQ0KKw0KKzwvZGF0YT4KKzxkYXRhMj4KK0hUVFAvMS4xIDIwMCBPSyBzd3NjbG9zZQ0KK0xvY2F0aW9uOiB0aGlzIHNob3VsZCBiZSBpZ25vcmVkDQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQNCitDb25uZWN0aW9uOiBjbG9zZQ0KKw0KK2JvZHkKKzwvZGF0YTI+Cis8ZGF0YWNoZWNrPgorSFRUUC8xLjEgMzAyIE9LIHN3c2Nsb3NlDQorTG9jYXRpb246IC4uL21vby5odG1sLz9uYW1lPdii2LrYp9iyLdiz2YUt2LLYr9in24zbjC3Yp9iyLdio2KfYstin2LEt2b7ZiNmEJnRlc3RjYXNlPS8xMTM4MDAwMiAgICANCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVA0KK0Nvbm5lY3Rpb246IGNsb3NlDQorDQorSFRUUC8xLjEgMjAwIE9LIHN3c2Nsb3NlDQorTG9jYXRpb246IHRoaXMgc2hvdWxkIGJlIGlnbm9yZWQNCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVA0KK0Nvbm5lY3Rpb246IGNsb3NlDQorDQorYm9keQorPC9kYXRhY2hlY2s+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorIDxuYW1lPgorSFRUUCByZWRpcmVjdCB3aXRoIFVURi04IGNoYXJhY3RlcnMKKyA8L25hbWU+CisgPGNvbW1hbmQ+CitodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2UvYXJlL2FsbC90d2l0cy8xMTM4IC1MCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvd2UvYXJlL2FsbC90d2l0cy8xMTM4IEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvd2UvYXJlL2FsbC9tb28uaHRtbC8/bmFtZT0lZDglYTIlZDglYmElZDglYTclZDglYjItJWQ4JWIzJWQ5JTg1LSVkOCViMiVkOCVhZiVkOCVhNyVkYiU4YyVkYiU4Yy0lZDglYTclZDglYjItJWQ4JWE4JWQ4JWE3JWQ4JWIyJWQ4JWE3JWQ4JWIxLSVkOSViZSVkOSU4OCVkOSU4NCZ0ZXN0Y2FzZT0vMTEzODAwMDIgSFRUUC8xLjENCitVc2VyLUFnZW50OiBjdXJsLzcuMTAgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAgT3BlblNTTC8wLjkuNmMgaXB2NiB6bGliLzEuMS4zDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTM5IGIvdGVzdHMvZGF0YS90ZXN0MTEzOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGY3MzBjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTEzOQpAQCAtMCwwICsxLDI2IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK3NvdXJjZSBhbmFseXNpcworc3ltYm9scy1pbi12ZXJzaW9ucworZG9jdW1lbnRhdGlvbgorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+Citub25lCis8L3NlcnZlcj4KKworIDxuYW1lPgorVmVyaWZ5IHRoYXQgYWxsIGxpYmN1cmwgb3B0aW9ucyBoYXZlIG1hbiBwYWdlcworIDwvbmFtZT4KKworPGNvbW1hbmQgdHlwZT0icGVybCI+CislU1JDRElSL21hbnBhZ2Utc2Nhbi5wbCAlU1JDRElSLy4uCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExNDAgYi90ZXN0cy9kYXRhL3Rlc3QxMTQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NDU4YmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTQwCkBAIC0wLDAgKzEsMjYgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorc291cmNlIGFuYWx5c2lzCitzeW1ib2xzLWluLXZlcnNpb25zCitkb2N1bWVudGF0aW9uCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK25vbmUKKzwvc2VydmVyPgorCisgPG5hbWU+CitWZXJpZnkgdGhlIG5yb2ZmIG9mIG1hbiBwYWdlcworIDwvbmFtZT4KKworPGNvbW1hbmQgdHlwZT0icGVybCI+CislU1JDRElSL25yb2ZmLXNjYW4ucGwgJVNSQ0RJUi8uLi9kb2NzLyAlU1JDRElSLy4uL2RvY3MvbGliY3VybC8qLjMgJVNSQ0RJUi8uLi9kb2NzL2xpYmN1cmwvb3B0cy8qLjMgJVNSQ0RJUi8uLi9kb2NzLyouMQorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjEzIGIvdGVzdHMvZGF0YS90ZXN0MTIxMwppbmRleCA3MjlhNzAzLi5iYzE0NmIwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMjEzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyMTMKQEAgLTQzLDEwICs0Myw5IEBACiBeVXNlci1BZ2VudDouKgogPC9zdHJpcD4KIDxwcm90b2NvbD4KLUdFVCBIVFRQOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLjEyMTMvIEhUVFAvMS4xDQorR0VUIGh0dHA6Ly93ZS53YW50LnRoYXQuc2l0ZS5jb20uMTIxMy8gSFRUUC8xLjENCiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20uMTIxMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMTQgYi90ZXN0cy9kYXRhL3Rlc3QxMjE0CmluZGV4IDNlZWIzZTMuLmU3MDNmN2EgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIxNApAQCAtNDYsNyArNDYsNiBAQAogR0VUIGh0dHA6Ly93ZS53YW50LnRoYXQuc2l0ZS5jb20uMTIxNC8/bW9vPWZvbyBIVFRQLzEuMQ0KIEhvc3Q6IHdlLndhbnQudGhhdC5zaXRlLmNvbS4xMjE0DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIxNSBiL3Rlc3RzL2RhdGEvdGVzdDEyMTUKaW5kZXggZjhjNTJhOS4uZTIyNTkxYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIxNQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjE1CkBAIC05MiwxNCArOTIsMTIgQEAKIEF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMzAuMC1ERVYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzEyMTUgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4zMC4wLURFVg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMTYgYi90ZXN0cy9kYXRhL3Rlc3QxMjE2CmluZGV4IDViZWRhNzkuLjZlNDVhYzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMTYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIxNgpAQCAtNTAsMTMgKzUwLDExIEBACiBHRVQgaHR0cDovL2V4YW1wbGUuZmFrZS9jLzEyMTYgSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmZha2UNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb29raWU6IG1vbzI9aW5kZWVkOyBtb28zPWluZGVlZA0KIA0KIEdFVCBodHRwOi8vYmV4YW1wbGUuZmFrZS9jLzEyMTYgSFRUUC8xLjENCiBIb3N0OiBiZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIxOCBiL3Rlc3RzL2RhdGEvdGVzdDEyMTgKaW5kZXggN2Q4NjU0Ny4uOWMyZmMwMyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIxOAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjE4CkBAIC0xNCw3ICsxNCw3IEBACiA8ZGF0YT4KIEhUVFAvMS4xIDIwMCBPSwogRGF0ZTogVHVlLCAyNSBTZXAgMjAwMSAxOTozNzo0NCBHTVQKLVNldC1Db29raWU6IGRvbWFpbj0uZXhhbXBsZS5mYWtlOyBidWc9Zml4ZWQ7CitTZXQtQ29va2llOiBidWc9Zml4ZWQ7IGRvbWFpbj0uZXhhbXBsZS5mYWtlOwogQ29udGVudC1MZW5ndGg6IDIxDQogCiBUaGlzIHNlcnZlciBzYXlzIG1vbwpAQCAtNDMsMTggKzQzLDE1IEBACiBHRVQgaHR0cDovL2V4YW1wbGUuZmFrZS9jLzEyMTggSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmZha2UNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2V4YW1wbGUuZmFrZS9jLzEyMTggSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmZha2UNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb29raWU6IGJ1Zz1maXhlZA0KIA0KIEdFVCBodHRwOi8vYmV4YW1wbGUuZmFrZS9jLzEyMTggSFRUUC8xLjENCiBIb3N0OiBiZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIyOCBiL3Rlc3RzL2RhdGEvdGVzdDEyMjgKaW5kZXggYTdlNTZhNy4uZDBhZjUxNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIyOAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjI4CkBAIC00MiwxMiArNDIsMTAgQEAKIEdFVCBodHRwOi8vZXhhbXBsZS5mYWtlL2hvZ2UvMTIyOCBIVFRQLzEuMQ0KIEhvc3Q6IGV4YW1wbGUuZmFrZQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZXhhbXBsZS5mYWtlL2hvZ2VnZS8gSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmZha2UNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb29raWU6IHBhdGgxPXJvb3QNCiANCiA8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIzMCBiL3Rlc3RzL2RhdGEvdGVzdDEyMzAKaW5kZXggM2MxZDNkNC4uOGNlNGM0ZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIzMAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjMwCkBAIC02OSw3ICs2OSw2IEBACiA8cHJvdG9jb2w+CiBDT05ORUNUIFsxMjM0OjEyMzQ6MTIzNDo6NGNlXTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiBbMTIzNDoxMjM0OjEyMzQ6OjRjZV06JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCAvd2FudGVkL3BhZ2UvMTIzMCBIVFRQLzEuMQ0KIEhvc3Q6IFsxMjM0OjEyMzQ6MTIzNDo6NGNlXTolSFRUUFBPUlQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjMyIGIvdGVzdHMvZGF0YS90ZXN0MTIzMgppbmRleCBlYWQ0MzM2Li4xYzViYzIwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMjMyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyMzIKQEAgLTUzLDEyICs1MywxMCBAQAogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5oYXh4LnNlLjEyMzI6ODk5MC9oZWovYnV0LzEyMzI/c3R1cGlkPW1lLy4uLzEyMzIgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEyMzI6ODk5MA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjMyOjg5OTAvaGVqL2J1dC8xMjMyMDAwMSBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTIzMjo4OTkwDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIzOCBiL3Rlc3RzL2RhdGEvdGVzdDEyMzgKaW5kZXggMTg1OTMzOS4uNGM5NzZjNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIzOAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjM4CkBAIC0zOCw4ICszOCwxMSBAQAogPHZlcmlmeT4KIDxwcm90b2NvbD4KIG9wY29kZTogMQotZmlsZW5hbWU6IC8xMjM4CiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8xMjM4CiA8L3Byb3RvY29sPgogIyAyOCA9IENVUkxFX09QRVJBVElPTl9USU1FRE9VVAogPGVycm9yY29kZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyNDEgYi90ZXN0cy9kYXRhL3Rlc3QxMjQxCmluZGV4IGFhYTU2ODguLjVhMTI3MzIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyNDEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTI0MQpAQCAtNTIsMTIgKzUyLDEwIEBACiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmhheHguc2UuMTI0MTo4OTkwLy4uLy4uL2hlai9idXQvd2hvLy4uLzEyNDE/c3R1cGlkPW1lLy4uLzEyNDEgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEyNDE6ODk5MA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjQxOjg5OTAvLi4vLi4vaGVqL2J1dC93aG8vLi4vMTI0MTAwMDEgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEyNDE6ODk5MA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyNDIgYi90ZXN0cy9kYXRhL3Rlc3QxMjQyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YmMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjQyCkBAIC0wLDAgKzEsNDMgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorVEZUUAorVEZUUCBSUlEKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorYSBjaHVuayBvZgorZGF0YQorcmV0dXJuZWQKKyB0byBjbGllbnQKKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgordGZ0cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitURlRQIHJldHJpZXZlIHdpdGhvdXQgVEZUUCBvcHRpb25zIHJlcXVlc3RzCisgPC9uYW1lPgorIDxjb21tYW5kPgordGZ0cDovLyVIT1NUSVA6JVRGVFBQT1JULy8xMjQyIC0tdGZ0cC1uby1vcHRpb25zIC0tdHJhY2UtYXNjaWkgbG9nL3RyYWNlaXQKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBwc2V1ZG8gcHJvdG9jb2wgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorb3Bjb2RlOiAxCittb2RlOiBvY3RldAorZmlsZW5hbWU6IC8xMjQyCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTI0MyBiL3Rlc3RzL2RhdGEvdGVzdDEyNDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMwM2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyNDMKQEAgLTAsMCArMSw0NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitURlRQCitURlRQIFdSUQorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+Cit0ZnRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK1RGVFAgc2VuZCB3aXRob3V0IFRGVFAgb3B0aW9ucyByZXF1ZXN0cworIDwvbmFtZT4KKyA8Y29tbWFuZD4KKy1UIGxvZy90ZXN0MTI0My50eHQgdGZ0cDovLyVIT1NUSVA6JVRGVFBQT1JULy8gLS10ZnRwLW5vLW9wdGlvbnMgLS10cmFjZS1hc2NpaSBsb2cvdHJhY2VpdAorPC9jb21tYW5kPgorPGZpbGUgbmFtZT0ibG9nL3Rlc3QxMjQzLnR4dCI+CithIGNodW5rIG9mCitkYXRhCitzZW50CisgdG8gc2VydmVyCis8L2ZpbGU+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgcHNldWRvIHByb3RvY29sIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzx1cGxvYWQ+CithIGNodW5rIG9mCitkYXRhCitzZW50CisgdG8gc2VydmVyCis8L3VwbG9hZD4KKzxwcm90b2NvbD4KK29wY29kZTogMgorbW9kZTogb2N0ZXQKK2ZpbGVuYW1lOiAvdGVzdDEyNDMudHh0Cis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTMxMiBiL3Rlc3RzL2RhdGEvdGVzdDEzMTIKaW5kZXggOTIxNDQwMS4uYmVkNDkyYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTMxMgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMzEyCkBAIC00MCw3ICs0MCw3IEBACiBDVVJMX1RFU1RESVI9JVBXRC9sb2cKIDwvc2V0ZW52PgogPGNvbW1hbmQgb3B0aW9uPSJuby1vdXRwdXQsbm8taW5jbHVkZSI+Ci1odHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMTMxMiAtSiAtTworJUhPU1RJUDolSFRUUFBPUlQvMTMxMiAtSiAtTwogPC9jb21tYW5kPgogPC9jbGllbnQ+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEzMTQgYi90ZXN0cy9kYXRhL3Rlc3QxMzE0CmluZGV4IDA3OGFkYTYuLjExZTEyOGEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEzMTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTMxNApAQCAtNjcsMTIgKzY3LDEwIEBACiBHRVQgaHR0cDovL2ZpcnN0cGxhY2UuZXhhbXBsZS5jb20vd2FudC8xMzE0IEhUVFAvMS4xDQogSG9zdDogZmlyc3RwbGFjZS5leGFtcGxlLmNvbQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vc29tZXdoZXJlLmV4YW1wbGUuY29tL3JlcGx5LzEzMTQgSFRUUC8xLjENCiBIb3N0OiBzb21ld2hlcmUuZXhhbXBsZS5jb20NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzE5IGIvdGVzdHMvZGF0YS90ZXN0MTMxOQppbmRleCAwNTIwYjFiLi5hOTdkYTljIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzE5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMTkKQEAgLTc5LDcgKzc5LDYgQEAKIENPTk5FQ1QgcG9wLjEzMTk6JVBPUDNQT1JUIEhUVFAvMS4xDQogSG9zdDogcG9wLjEzMTk6JVBPUDNQT1JUDQogVXNlci1BZ2VudDogY3VybC83LjI0LjAtREVWIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjI0LjAtREVWIE9wZW5TU0wvMS4wLjBlIHpsaWIvMS4yLjMuNCBjLWFyZXMvMS43LjYtREVWIGxpYmlkbi8xLjIzIGxpYnNzaDIvMS40LjBfREVWIGxpYnJ0bXAvMi4yZQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzIwIGIvdGVzdHMvZGF0YS90ZXN0MTMyMAppbmRleCA3YTE1ZjgwLi42MDlmNGMyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzIwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMjAKQEAgLTY2LDcgKzY2LDYgQEAKIENPTk5FQ1Qgc210cC4xMzIwOiVTTVRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHNtdHAuMTMyMDolU01UUFBPUlQNCiBVc2VyLUFnZW50OiBjdXJsLzcuMjQuMC1ERVYgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMjQuMC1ERVYgT3BlblNTTC8xLjAuMGUgemxpYi8xLjIuMy40IGMtYXJlcy8xLjcuNi1ERVYgbGliaWRuLzEuMjMgbGlic3NoMi8xLjQuMF9ERVYgbGlicnRtcC8yLjJlDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEzMjEgYi90ZXN0cy9kYXRhL3Rlc3QxMzIxCmluZGV4IDI2NmZkODguLmI1YWQyNzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEzMjEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTMyMQpAQCAtNzUsNyArNzUsNiBAQAogQ09OTkVDVCBpbWFwLjEzMjE6JUlNQVBQT1JUIEhUVFAvMS4xDQogSG9zdDogaW1hcC4xMzIxOiVJTUFQUE9SVA0KIFVzZXItQWdlbnQ6IGN1cmwvNy4yNC4wLURFViAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4yNC4wLURFViBPcGVuU1NMLzEuMC4wZSB6bGliLzEuMi4zLjQgYy1hcmVzLzEuNy42LURFViBsaWJpZG4vMS4yMyBsaWJzc2gyLzEuNC4wX0RFViBsaWJydG1wLzIuMmUNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTMyMiBiL3Rlc3RzL2RhdGEvdGVzdDEzMjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYxMGE4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMjIKQEAgLTAsMCArMSw1NyBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorLS1yZXNvbHZlCit0cmFpbGluZyBkb3QKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlCitMYXN0LU1vZGlmaWVkOiBUdWUsIDEzIEp1biAyMDAwIDEyOjEwOjAwIEdNVAorRVRhZzogIjIxMDI1LWRjNy0zOTQ2MjQ5OCIKK0FjY2VwdC1SYW5nZXM6IGJ5dGVzCitDb250ZW50LUxlbmd0aDogNgorQ29ubmVjdGlvbjogY2xvc2UKK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sCitGdW5ueS1oZWFkOiB5ZXN5ZXMKKworLWZvby0KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAorPC9zZXJ2ZXI+Cis8bmFtZT4KK0hUVFAgd2l0aCAtLXJlc29sdmUgYW5kIGhvc3RuYW1lIHdpdGggdHJhaWxpbmcgZG90Cis8L25hbWU+Cis8Y29tbWFuZD4KKy0tcmVzb2x2ZSBleGFtcGxlLmNvbTolSFRUUFBPUlQ6JUhPU1RJUCBodHRwOi8vZXhhbXBsZS5jb20uOiVIVFRQUE9SVC8xMzIyCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMTMyMiBIVFRQLzEuMQ0KK0hvc3Q6IGV4YW1wbGUuY29tOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEzMjYgYi90ZXN0cy9kYXRhL3Rlc3QxMzI2CmluZGV4IGJiMGNiYWMuLjJiY2Y2NGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEzMjYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTMyNgpAQCAtMzMsNyArMzMsNyBAQAogDQogPC9zdGRpbj4KICA8Y29tbWFuZD4KLXRlbG5ldDovLyVIT1NUSVA6JUhUVFBQT1JUCit0ZWxuZXQ6Ly8lSE9TVElQOiVIVFRQUE9SVCAtLXVwbG9hZC1maWxlIC0KIDwvY29tbWFuZD4KIDwvY2xpZW50PgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzMxIGIvdGVzdHMvZGF0YS90ZXN0MTMzMQppbmRleCAzMjk5ZGY0Li44MzdlZjhkIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzMxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMzEKQEAgLTc1LDEzICs3NSwxMSBAQAogR0VUIGh0dHA6Ly96LnguY29tLzEzMzEgSFRUUC8xLjENCiBIb3N0OiB6LnguY29tDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly96LnguY29tLzEzMzEgSFRUUC8xLjENCiBIb3N0OiB6LnguY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgYlhsdVlXMWxPbTE1Y0dGemMzZHZjbVE9DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiBwcm94eWNvb2tpZT13ZWlyZG8NCiANCiA8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQwMCBiL3Rlc3RzL2RhdGEvdGVzdDE0MDAKaW5kZXggNzI5ODljNC4uMGVlNzM3MCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQwMAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDAwCkBAIC00NiwxNSArNDYsMTYgQEAKIDwvcHJvdG9jb2w+CiA8c3RyaXBmaWxlPgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDAwLmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDAxIGIvdGVzdHMvZGF0YS90ZXN0MTQwMQppbmRleCBkMTBjYWMyLi42MDJiMDlhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDAxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDEKQEAgLTUzLDE1ICs1MywxNiBAQAogDQogPC9wcm90b2NvbD4KIDxzdHJpcGZpbGU+Ci0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDEuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDIgYi90ZXN0cy9kYXRhL3Rlc3QxNDAyCmluZGV4IGMzYmY4MzQuLjBjMjE5OWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwMgpAQCAtNTEsMTUgKzUxLDE2IEBACiA8c3RyaXBmaWxlPgogIyBjdXJsJ3MgZGVmYXVsdCB1c2VyLWFnZW50IHZhcmllcyB3aXRoIHZlcnNpb24sIGxpYnJhcmllcyBldGMuCiBzLyhVU0VSQUdFTlQsIFwiKVteXCJdKy8kezF9c3RyaXBwZWQvCi0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDIuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDMgYi90ZXN0cy9kYXRhL3Rlc3QxNDAzCmluZGV4IDNlYzdkZDAuLjk4ZjIzOGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwMwpAQCAtNDgsMTUgKzQ4LDE2IEBACiA8c3RyaXBmaWxlPgogIyBjdXJsJ3MgZGVmYXVsdCB1c2VyLWFnZW50IHZhcmllcyB3aXRoIHZlcnNpb24sIGxpYnJhcmllcyBldGMuCiBzLyhVU0VSQUdFTlQsIFwiKVteXCJdKy8kezF9c3RyaXBwZWQvCi0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDMuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDQgYi90ZXN0cy9kYXRhL3Rlc3QxNDA0CmluZGV4IDQ0MTU2OTcuLmExNTllNDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwNApAQCAtODMsMTUgKzgzLDE2IEBACiA8c3RyaXBmaWxlPgogIyBjdXJsJ3MgZGVmYXVsdCB1c2VyLWFnZW50IHZhcmllcyB3aXRoIHZlcnNpb24sIGxpYnJhcmllcyBldGMuCiBzLyhVU0VSQUdFTlQsIFwiKVteXCJdKy8kezF9c3RyaXBwZWQvCi0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDQuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDUgYi90ZXN0cy9kYXRhL3Rlc3QxNDA1CmluZGV4IDM4YmZkNWMuLmYyMjM5NTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwNQpAQCAtNTgsNyArNTgsNyBAQAogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDA1LmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC0xMjcsMTAgKzEyNywxMSBAQAogIyBzdXBwb3J0LCBJT1cgZGVwZW5kcyBvbiBjb25maWd1cmF0aW9uIC0ganVzdCBpZ25vcmUgdGhlc2UuCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1VTRVJBR0VOVC8KICRfID0gJycgaWYgL0NVUkxPUFRfTUFYUkVESVJTLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQwNiBiL3Rlc3RzL2RhdGEvdGVzdDE0MDYKaW5kZXggYzgwNDU5Zi4uYzdlNGNkNCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQwNgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDA2CkBAIC01Nyw3ICs1Nyw3IEBACiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDYuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTExNiwxMCArMTE2LDExIEBACiA8c3RyaXBmaWxlPgogIyBjdXJsJ3MgZGVmYXVsdCB1c2VyLWFnZW50IHZhcmllcyB3aXRoIHZlcnNpb24sIGxpYnJhcmllcyBldGMuCiBzLyhVU0VSQUdFTlQsIFwiKVteXCJdKy8kezF9c3RyaXBwZWQvCi0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDA3IGIvdGVzdHMvZGF0YS90ZXN0MTQwNwppbmRleCBlODQ0NjNhLi44ZjhjYjJhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDA3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDcKQEAgLTQ0LDcgKzQ0LDcgQEAKIDxmaWxlIG5hbWU9ImxvZy90ZXN0MTQwNy5jIiBtb2RlPSJ0ZXh0Ij4KIC8qKioqKioqKiogU2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjdXJsIGNvbW1hbmQgbGluZSB0b29sICoqKioqKioqKioKICAqIEFsbCBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBhdDoKLSAqIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAorICogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApAQCAtOTQsMTAgKzk0LDExIEBACiA8c3RyaXBmaWxlPgogIyBjdXJsJ3MgZGVmYXVsdCB1c2VyLWFnZW50IHZhcmllcyB3aXRoIHZlcnNpb24sIGxpYnJhcmllcyBldGMuCiBzLyhVU0VSQUdFTlQsIFwiKVteXCJdKy8kezF9c3RyaXBwZWQvCi0jIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgYW5kIFNTSF9LTk9XTkhPU1RTIHZhcnkgd2l0aCBjb25maWd1cmF0aW9ucyAtIGp1c3QKLSMgaWdub3JlIHRoZW0KKyMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgU1NIX0tOT1dOSE9TVFMgYW5kIEhUVFBfVkVSU0lPTiB2YXJ5IHdpdGgKKyMgY29uZmlndXJhdGlvbnMgLSBqdXN0IGlnbm9yZSB0aGVtCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLwogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy8KKyRfID0gJycgaWYgL0NVUkxPUFRfSFRUUF9WRVJTSU9OLwogPC9zdHJpcGZpbGU+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDE1IGIvdGVzdHMvZGF0YS90ZXN0MTQxNQppbmRleCBkOTdkZmNlLi4zN2NmYjA3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDE1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MTUKQEAgLTU3LDEzICs1NywxMiBAQAogR0VUIGh0dHA6Ly9leGFtcGxlLmNvbS93ZS93YW50LzE0MTUgSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmNvbQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiAKIDxmaWxlIG5hbWU9ImxvZy9qYXIxNDE1LnR4dCIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCiAuZXhhbXBsZS5jb20JVFJVRQkvCUZBTFNFCTAJdGVzdDF2YWx1ZQl0ZXN0MQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQyMCBiL3Rlc3RzL2RhdGEvdGVzdDE0MjAKaW5kZXggNzljYTY3NS4uN2E4NjgwNiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQyMAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDIwCkBAIC01MCw3ICs1MCw3IEBACiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MjAuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTk5LDEwICs5OSwxMSBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQyMSBiL3Rlc3RzL2RhdGEvdGVzdDE0MjEKaW5kZXggNmM1OWIyMS4uODg5YzkzOCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQyMQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDIxCkBAIC01OSwxMiArNTksMTAgQEAKIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuaGF4eC5zZS4xNDIxOjg5OTAvIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xNDIxOjg5OTANCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2RpZmZlcmVudC5yZW1vdGUuaGF4eC5zZS4xNDIxOjg5OTAvIEhUVFAvMS4xDQogSG9zdDogZGlmZmVyZW50LnJlbW90ZS5oYXh4LnNlLjE0MjE6ODk5MA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIFtESVNDT05ORUNUXQogPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MjggYi90ZXN0cy9kYXRhL3Rlc3QxNDI4CmluZGV4IDU5MDQxZWMuLjYwZmI4YTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MjgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQyOApAQCAtNjQsNyArNjQsNiBAQAogQ09OTkVDVCB0ZXN0LjE0Mjg6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC4xNDI4OiVIVFRQUE9SVA0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC43LXByZTIgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNy1wcmUyIE9wZW5TU0wvMC45LjdhIHpsaWIvMS4xLjMNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogaGVhZGVyLXR5cGU6IHByb3h5DQogDQogPC9wcm94eT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MzcgYi90ZXN0cy9kYXRhL3Rlc3QxNDM3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Y2NlY2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDM3CkBAIC0wLDAgKzEsODQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0hUVFAgRGlnZXN0IGF1dGgKKzwva2V5d29yZHM+Cis8L2luZm8+CisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK0hUVFAvMS4xIDQwMSBBdXRob3JpemF0aW9uIFJlcXVpcmVkIHN3c2Nsb3NlDQorU2VydmVyOiBBcGFjaGUvMS4zLjI3IChEYXJ3aW4pIFBIUC80LjEuMg0KK1dXVy1BdXRoZW50aWNhdGU6IERpZ2VzdCByZWFsbT0idGVzdHJlYWxtIiwgYWxnb3JpdGhtPU1ENSwgYWxnb3JpdGhtPU1ENSwgbm9uY2U9MSwgbm9uY2U9Mg0KK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTENCitDb250ZW50LUxlbmd0aDogMjYNCisNCitUaGlzIGlzIG5vdCB0aGUgcmVhbCBwYWdlCis8L2RhdGE+CisKKyMgVGhpcyBpcyBzdXBwb3NlZCB0byBiZSByZXR1cm5lZCB3aGVuIHRoZSBzZXJ2ZXIgZ2V0cyBhCisjIEF1dGhvcml6YXRpb246IERpZ2VzdCBsaW5lIHBhc3NlZC1pbiBmcm9tIHRoZSBjbGllbnQKKzxkYXRhMTAwMD4KK0hUVFAvMS4xIDIwMCBPSyBzd3NjbG9zZQ0KK1NlcnZlcjogQXBhY2hlLzEuMy4yNyAoRGFyd2luKSBQSFAvNC4xLjINCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xDQorQ29udGVudC1MZW5ndGg6IDIzDQorDQorVGhpcyBJUyB0aGUgcmVhbCBwYWdlIQorPC9kYXRhMTAwMD4KKworPGRhdGFjaGVjaz4KK0hUVFAvMS4xIDQwMSBBdXRob3JpemF0aW9uIFJlcXVpcmVkIHN3c2Nsb3NlDQorU2VydmVyOiBBcGFjaGUvMS4zLjI3IChEYXJ3aW4pIFBIUC80LjEuMg0KK1dXVy1BdXRoZW50aWNhdGU6IERpZ2VzdCByZWFsbT0idGVzdHJlYWxtIiwgYWxnb3JpdGhtPU1ENSwgYWxnb3JpdGhtPU1ENSwgbm9uY2U9MSwgbm9uY2U9Mg0KK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTENCitDb250ZW50LUxlbmd0aDogMjYNCisNCitIVFRQLzEuMSAyMDAgT0sgc3dzY2xvc2UNCitTZXJ2ZXI6IEFwYWNoZS8xLjMuMjcgKERhcndpbikgUEhQLzQuMS4yDQorQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMQ0KK0NvbnRlbnQtTGVuZ3RoOiAyMw0KKw0KK1RoaXMgSVMgdGhlIHJlYWwgcGFnZSEKKzwvZGF0YWNoZWNrPgorCis8L3JlcGx5PgorCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorPGZlYXR1cmVzPgorIVNTUEkKK2NyeXB0bworPC9mZWF0dXJlcz4KKyA8bmFtZT4KK0hUVFAgd2l0aCBkdXBsaWNhdGVkIFdXVy1BdXRoZW50aWNhdGUgcGFyYW1ldGVycworIDwvbmFtZT4KKyA8Y29tbWFuZD4KK2h0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC8xNDM3IC11IHRlc3R1c2VyOnRlc3RwYXNzIC0tZGlnZXN0Cis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMTQzNyBIVFRQLzEuMQ0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCitHRVQgLzE0MzcgSFRUUC8xLjENCitIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KK0F1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0idGVzdHVzZXIiLCByZWFsbT0idGVzdHJlYWxtIiwgbm9uY2U9IjIiLCB1cmk9Ii8xNDM3IiwgcmVzcG9uc2U9IjQzNzZlYjYzOWJmOGU3MzQzYTZlN2I1NmUxYjg5YzRmIiwgYWxnb3JpdGhtPSJNRDUiDQorVXNlci1BZ2VudDogY3VybC83LjEwLjUgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNSBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDggYi90ZXN0cy9kYXRhL3Rlc3QxNDgKaW5kZXggZmJhYzEwZi4uNTQwYzhmZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQ4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0OApAQCAtNDIsNiArNDIsNyBAQAogUFdEDQogQ1dEIGF0dGVtcHQNCiBNS0QgYXR0ZW1wdA0KK0NXRCBhdHRlbXB0DQogUVVJVA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MDkgYi90ZXN0cy9kYXRhL3Rlc3QxNTA5CmluZGV4IGI0YmZjNjYuLjE4ZWIwN2YgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MDkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUwOQpAQCAtNzQsNyArNzQsNiBAQAogPHByb3h5PgogQ09OTkVDVCB0aGUub2xkLm1vby4xNTA5OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRoZS5vbGQubW9vLjE1MDk6JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8cHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNTEzIGIvdGVzdHMvZGF0YS90ZXN0MTUxMwppbmRleCA4YWJiOTZmLi5iYTBjMThhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNTEzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE1MTMKQEAgLTQyLDUgKzQyLDggQEAKIDxlcnJvcmNvZGU+CiA0MgogPC9lcnJvcmNvZGU+Cis8c3Rkb3V0PgorUFJPR1JFU1NGVU5DVElPTiBjYWxsZWQKKzwvc3Rkb3V0PgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUxNSBiL3Rlc3RzL2RhdGEvdGVzdDE1MTUKaW5kZXggM2E0OWQxYi4uNzQxNzkyNCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTUxNQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTE1CkBAIC0zMiw2ICszMiwxMCBAQAogCiBoZWxsbwogPC9kYXRhMj4KKzxkYXRhY2hlY2s+CitoZWxsbworaGVsbG8KKzwvZGF0YWNoZWNrPgogPC9yZXBseT4KIAogPGNsaWVudD4KQEAgLTQ1LDcgKzQ5LDcgQEAKIGNhY2hpbmcgb2YgbWFudWFsIGxpYmN1cmwgRE5TIGVudHJpZXMgYWZ0ZXIgRE5TIGNhY2hlIHRpbWVvdXQKIDwvbmFtZT4KIDxjb21tYW5kPgotL3BhdGgvMTUxNSAlSE9TVElQICVIVFRQUE9SVAorcGF0aC8xNTE1ICVIT1NUSVAgJUhUVFBQT1JUCiA8L2NvbW1hbmQ+CiA8L2NsaWVudD4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUxNyBiL3Rlc3RzL2RhdGEvdGVzdDE1MTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhNGFlYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE1MTcKQEAgLTAsMCArMSw2OSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitQT1NUCitQT1NUIGNhbGxiYWNrCitzbG93IGNhbGxiYWNrCitlYXJseSByZXNwb25zZQorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKyMKKyMgVGhpcyByZXByb2R1Y2VzIGlzc3VlICM2NTcsIGZpeGVkIHdpdGggUFIgIzY2OCAtIG9uIFdpbmRvd3MKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKyMgRm9yY2Ugc2VydmVyIHJlcGx5IHJpZ2h0IGFmdGVyIHJlcXVlc3QgaGVhZGVycywgbm90IHdhaXRpbmcgZm9yIHJlcXVlc3QgYm9keQorPHNlcnZlcmNtZD4KK3NraXA6IDQ1Cis8L3NlcnZlcmNtZD4KKzxkYXRhPgorSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcgorRGF0ZTogVGh1LCAxNyBNYXIgMjAxNiAxNDo0MTowMCBHTVQKK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVTLUFTQ0lJCitYLVNwZWNpYWw6IHN3c2Nsb3NlCitDb250ZW50LUxlbmd0aDogNTUKK0Nvbm5lY3Rpb246IGNsb3NlCisKK1RoaXMgaXMgYSB2aXJ0dWFsIGRlc2NyaXB0aW9uIG9mIHNlcnZlciB2aXJ0dWFsIGVycm9yLgorPC9kYXRhPgorPC9yZXBseT4KKworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKyMgdG9vbCBpcyB3aGF0IHRvIHVzZSBpbnN0ZWFkIG9mICdjdXJsJworPHRvb2w+CitsaWIxNTE3Cis8L3Rvb2w+CisKKyA8bmFtZT4KK0hUVFAgUE9TVCwgc2VydmVyIHJlc3BvbmRzIGJlZm9yZSBjb21wbGV0ZWQgc2VuZAorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK2h0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC8xNTE3Cis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXBwYXJ0Pgorcy9eKHRoaXMgaXMgd2hhdCB3ZSBwb3N0IHRvIHRoZSBzaWxseSB3ZWIgc2VydmVyKShccik/XG4vLworPC9zdHJpcHBhcnQ+Cis8cHJvdG9jb2w+CitQT1NUIC8xNTE3IEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KK0NvbnRlbnQtTGVuZ3RoOiA0NQ0KK0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQorDQorPC9wcm90b2NvbD4KKzxlcnJvcmNvZGU+CiswCis8L2Vycm9yY29kZT4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MjUgYi90ZXN0cy9kYXRhL3Rlc3QxNTI1CmluZGV4IDA1NjBkNWMuLmQ4ZjY4ODMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MjUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUyNQpAQCAtNTgsNyArNTgsNiBAQAogPHByb3h5PgogQ09OTkVDVCB0aGUub2xkLm1vby4xNTI1OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRoZS5vbGQubW9vLjE1MjU6JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIFVzZXItQWdlbnQ6IEh0dHAgQWdlbnQNCiANCiA8L3Byb3h5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUyNiBiL3Rlc3RzL2RhdGEvdGVzdDE1MjYKaW5kZXggYWExMTFjOC4uOWY1ZDA5ZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTUyNgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTI2CkBAIC01OCw3ICs1OCw2IEBACiA8cHJveHk+CiBDT05ORUNUIHRoZS5vbGQubW9vLjE1MjY6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGhlLm9sZC5tb28uMTUyNjolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogVXNlci1BZ2VudDogUHJveHkgQWdlbnQNCiANCiA8L3Byb3h5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUyNyBiL3Rlc3RzL2RhdGEvdGVzdDE1MjcKaW5kZXggZThkNTI3OS4uNjlhZTZlNCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTUyNworKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTI3CkBAIC01Nyw3ICs1Nyw2IEBACiA8cHJveHk+CiBDT05ORUNUIHRoZS5vbGQubW9vLjE1Mjc6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGhlLm9sZC5tb28uMTUyNzolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogVXNlci1BZ2VudDogSHR0cCBBZ2VudA0KIEV4cGVjdDogMTAwLWNvbnRpbnVlDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUyOCBiL3Rlc3RzL2RhdGEvdGVzdDE1MjgKaW5kZXggODc2ODA2YS4uZTYwZjYwMCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTUyOAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTI4CkBAIC01MSw3ICs1MSw2IEBACiBHRVQgaHR0cDovL3RoZS5vbGQubW9vOiVIVFRQUE9SVC8xNTI4IEhUVFAvMS4xDQogSG9zdDogdGhlLm9sZC5tb286JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogVXNlci1BZ2VudDogSHR0cCBBZ2VudA0KIFByb3h5LVVzZXItQWdlbnQ6IEh0dHAgQWdlbnQyDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUzMSBiL3Rlc3RzL2RhdGEvdGVzdDE1MzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4ZGViNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE1MzEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTYgYi90ZXN0cy9kYXRhL3Rlc3QxNgppbmRleCA1Y2JkZTU5Li45ZDlhOWNjIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNgpAQCAtMzEsNyArMzEsNyBAQAogSFRUUCB3aXRoIHByb3h5IGF1dGhvcml6YXRpb24KICA8L25hbWU+CiAgPGNvbW1hbmQ+Ci0gLVUgZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZyAteCAlSE9TVElQOiVIVFRQUE9SVCBodHRwOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLzE2CisgLVUgZmFrZUB1c2VyOmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZyAteCAlSE9TVElQOiVIVFRQUE9SVCBodHRwOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLzE2CiA8L2NvbW1hbmQ+CiA8L2NsaWVudD4KIApAQCAtNDMsOSArNDMsOCBAQAogPHByb3RvY29sPgogR0VUIGh0dHA6Ly93ZS53YW50LnRoYXQuc2l0ZS5jb20vMTYgSFRUUC8xLjENCiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20NCi1Qcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabUZyWlVCMWMyVnlPcWVucDJ4dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXVadz09DQorUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgWm1GclpVQjFjMlZ5T214dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl1Wnc9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE2MDMgYi90ZXN0cy9kYXRhL3Rlc3QxNjAzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWM5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjAzCkBAIC0wLDAgKzEsMjYgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgordW5pdHRlc3QKK2hhc2gKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorbm9uZQorPC9zZXJ2ZXI+Cis8ZmVhdHVyZXM+Cit1bml0dGVzdAorPC9mZWF0dXJlcz4KKyA8bmFtZT4KK0ludGVybmFsIGhhc2ggYWRkLCByZXRyaWV2YWwsIGRlbGV0aW9uIHRlc3RpbmcKKyA8L25hbWU+Cis8dG9vbD4KK3VuaXQxNjAzCis8L3Rvb2w+Cis8L2NsaWVudD4KKworPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE2MDQgYi90ZXN0cy9kYXRhL3Rlc3QxNjA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMjA3NzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjA0CkBAIC0wLDAgKzEsMjUgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgordW5pdHRlc3QKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorbm9uZQorPC9zZXJ2ZXI+Cis8ZmVhdHVyZXM+Cit1bml0dGVzdAorPC9mZWF0dXJlcz4KKyA8bmFtZT4KK1Rlc3QgV0lOMzIvTVNET1MgZmlsZW5hbWUgc2FuaXRpemF0aW9uCisgPC9uYW1lPgorPHRvb2w+Cit1bml0MTYwNAorPC90b29sPgorPC9jbGllbnQ+CisKKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjIgYi90ZXN0cy9kYXRhL3Rlc3QxNjIKaW5kZXggZWUyZjQwYS4uY2M0YzgyZCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTYyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE2MgpAQCAtNTEsNyArNTEsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy44LjEtcHJlMyAoc3BhcmMtc3VuLXNvbGFyaXMyLjcpIGxpYmN1cmwgNy44LjEtcHJlMyAoT3BlblNTTCAwLjkuNmEpIChrcmI0IGVuYWJsZWQpDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDxlcnJvcmNvZGU+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjUgYi90ZXN0cy9kYXRhL3Rlc3QxNjUKaW5kZXggZGRmZTFlOS4uYjQ3NWZkZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTY1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE2NQpAQCAtNTEsNyArNTEsNiBAQAogR0VUIGh0dHA6Ly93d3cueG4tLTRjYWI2Yy5zZS9wYWdlLzE2NSBIVFRQLzEuMQ0KIEhvc3Q6IHd3dy54bi0tNGNhYjZjLnNlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTY3IGIvdGVzdHMvZGF0YS90ZXN0MTY3CmluZGV4IDBiMTQ5OTYuLjc2ZjllNWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE2NworKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjcKQEAgLTY1LDcgKzY1LDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIFptOXZPbUpoY2c9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4wLUNWUyBPcGVuU1NMLzAuOS42YiB6bGliLzEuMS40IGMtYXJlcy8xLjIuMCBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2RhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tLzE2NyBIVFRQLzEuMQ0KIEhvc3Q6IGRhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tDQpAQCAtNzMsNyArNzIsNiBAQAogQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJkaWdlc3QiLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9Ii8xNjciLCByZXNwb25zZT0iMTNjN2MwMmEyNTJjYmUxYzQ2ZDg2Njk4OThhM2JlMjYiDQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgYy1hcmVzLzEuMi4wIGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE2OCBiL3Rlc3RzL2RhdGEvdGVzdDE2OAppbmRleCAyMGUwYjZkLi4wZjRlMDI1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNjgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTY4CkBAIC03OCwxNCArNzgsMTIgQEAKIEhvc3Q6IGRhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tDQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgYy1hcmVzLzEuMi4wIGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20vMTY4IEhUVFAvMS4xDQogSG9zdDogZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9ImZvbyIsIHJlYWxtPSJ3ZWlyZG9yZWFsbSIsIG5vbmNlPSIxMjM0NSIsIHVyaT0iLzE2OCIsIHJlc3BvbnNlPSJmYjg2MDhlMDBhZDkyMzlhM2RlZGIxNGJjODU3NTk3NiINCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMC1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBjLWFyZXMvMS4yLjAgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbS8xNjggSFRUUC8xLjENCiBIb3N0OiBkYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbQ0KQEAgLTkzLDcgKzkxLDYgQEAKIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0iZGlnZXN0IiwgcmVhbG09InJlYWxtd2VpcmRvIiwgbm9uY2U9IjEyMzQ1NiIsIHVyaT0iLzE2OCIsIHJlc3BvbnNlPSJjYTg3ZjJkNzY4YTIzMWUyZDYzN2E1NTY5OGQ1YzQxNiINCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMC1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40IEdTUyBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjkgYi90ZXN0cy9kYXRhL3Rlc3QxNjkKaW5kZXggNzNjYTliZC4uYmU1YjRjNiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTY5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE2OQpAQCAtMTA4LDIxICsxMDgsMTggQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMC1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40IEdTUyBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2RhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tLzE2OSBIVFRQLzEuMQ0KIEhvc3Q6IGRhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQURBQUFBR0FBWUFFQUFBQUNlQUo0QVdBQUFBQUFBQUFEMkFBQUFDQUFJQVBZQUFBQUlBQWdBL2dBQUFBQUFBQUFBQUFBQUJvS0JBTDlMTlc1K25reUhaUm15RmFML0xKNHhNak0wTWpJek5HVUN5aGdROWh3NmVXQVQxM0ViRGEwQkFRQUFBQUFBQUFDQVB0WGVzWjBCTVRJek5ESXlNelFBQUFBQUFnQUVBRU1BUXdBQkFCSUFSUUJNQUVrQVV3QkJBRUlBUlFCVUFFZ0FCQUFZQUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQU1BTEFCbEFHd0FhUUJ6QUdFQVlnQmxBSFFBYUFBdUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFBQUFBQUFBQUFBZEdWemRIVnpaWEpqZFhKc2FHOXpkQT09DQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNCBHU1MgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbS8xNjkgSFRUUC8xLjENCiBIb3N0OiBkYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbQ0KIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0iZGlnZXN0IiwgcmVhbG09InIgZSBhIGwgbSIsIG5vbmNlPSJhYmNkZWYiLCB1cmk9Ii8xNjkiLCByZXNwb25zZT0iOTVkNDg1OTE5ODVhMDNjNGI0OWNiOTYyYWE3YmQzZTYiDQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNCBHU1MgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTcwIGIvdGVzdHMvZGF0YS90ZXN0MTcwCmluZGV4IDhjZTc3NzQuLjQ4YTI2M2YgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE3MAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNzAKQEAgLTQwLDcgKzQwLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMC1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40IGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogDQogPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE3MSBiL3Rlc3RzL2RhdGEvdGVzdDE3MQppbmRleCAxNDdiZTBhLi4zYjlmN2JhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNzEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTcxCkBAIC00NCwxMiArNDQsMTEgQEAKIEdFVCBodHRwOi8vei54LmNvbS8xNzEgSFRUUC8xLjENCiBIb3N0OiB6LnguY29tDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDxmaWxlIG5hbWU9ImxvZy9qYXIxNzEiIG1vZGU9InRleHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogLnoueC5jb20JVFJVRQkvCUZBTFNFCTAJWFRva2VuCXh0CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNzIgYi90ZXN0cy9kYXRhL3Rlc3QxNzIKaW5kZXggM2Q1MzQxOC4uYWQzNjI4NCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTcyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE3MgpAQCAtMzEsNyArMzEsNyBAQAogPC9jb21tYW5kPgogPGZpbGUgbmFtZT0ibG9nL2phcjE3Mi50eHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogLiVIT1NUSVAJVFJVRQkvc2lsbHkvCUZBTFNFCTAJaXNtYXRjaAl0aGlzCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNzkgYi90ZXN0cy9kYXRhL3Rlc3QxNzkKaW5kZXggZjhmNzgxMS4uMWNkNWJhZCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTc5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE3OQpAQCAtNDksNyArNDksNiBAQAogR0VUIGh0dHA6Ly9zdXBlcnRyb29wZXIuZmFrZS9jLzE3OSBIVFRQLzEuMQ0KIEhvc3Q6IHN1cGVydHJvb3Blci5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiBtb28yPWluZGVlZA0KIA0KIDwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxODMgYi90ZXN0cy9kYXRhL3Rlc3QxODMKaW5kZXggZjM0ZGMwYy4uYjQ0NzEwOSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTgzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE4MwpAQCAtNDIsMTMgKzQyLDExIEBACiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMi1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBsaWJpZG4vMC40LjYNCiBIb3N0OiBkZWF0aHN0YXIuYW5vdGhlci5nYWxheHkNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2EuZ2FsYXh5LmZhci5mYXIuYXdheS8xODMgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMi1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBsaWJpZG4vMC40LjYKIEhvc3Q6IGEuZ2FsYXh5LmZhci5mYXIuYXdheQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE4NCBiL3Rlc3RzL2RhdGEvdGVzdDE4NAppbmRleCA4YjA5ZGRlLi45Y2FkYzgyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxODQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTg0CkBAIC02MiwxMiArNjIsMTAgQEAKIEhvc3Q6IGFub3RoZXIudmlzaXRvci5zdGF5LmEud2hpbGUuc3RheS5mb3JlZWVlZWV2ZXINCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMi1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBsaWJpZG4vMC40LjYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3lldC5hbm90aGVyLmhvc3QvMTg0IEhUVFAvMS4xDQogSG9zdDogeWV0LmFub3RoZXIuaG9zdA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE4NSBiL3Rlc3RzL2RhdGEvdGVzdDE4NQppbmRleCAyOThkZDQ5Li5kYmVmNmU3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxODUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTg1CkBAIC02MiwxMiArNjIsMTAgQEAKIEhvc3Q6IGFub3RoZXIudmlzaXRvci5zdGF5LmEud2hpbGUuc3RheS5mb3JlZWVlZWV2ZXINCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMi1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBsaWJpZG4vMC40LjYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2RlYXRoc3Rhci5hbm90aGVyLmdhbGF4eS9nby93ZXN0LzE4NSBIVFRQLzEuMQ0KIEhvc3Q6IGFub3RoZXIudmlzaXRvci5zdGF5LmEud2hpbGUuc3RheS5mb3JlZWVlZWV2ZXINCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxOTAyIGIvdGVzdHMvZGF0YS90ZXN0MTkwMgppbmRleCA1NTViNDg2Li41MzNlZDU1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxOTAyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE5MDIKQEAgLTQ4LDExICs0OCwxMSBAQAogPGZpbGUgbmFtZT0ibG9nL3VybHMudHh0Ij4KIDAgMWsudHh0CiAxMDAwIGNvbm5lY3Rpb25fY2xvc2UudHh0Ci0wIDFrLnR4dAotMCAxay50eHQKLTAgMWsudHh0Ci0wIDFrLnR4dAotMCAxay50eHQKKzEgMWsudHh0CisyIDFrLnR4dAorMyAxay50eHQKKzQgMWsudHh0Cis1IDFrLnR4dAogPC9maWxlPgogPC9jbGllbnQ+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwMDIgYi90ZXN0cy9kYXRhL3Rlc3QyMDAyCmluZGV4IGYzOWNkNjAuLmRiOTZiZmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIwMDIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjAwMgpAQCAtODgsOCArODgsMTEgQEAKIFNJWkUgMjAwMjAwMDINCiBSRVRSIDIwMDIwMDAyDQogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzIwMDIwMDAzCiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yMDAyMDAwMwogUVVJVA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjAwMyBiL3Rlc3RzL2RhdGEvdGVzdDIwMDMKaW5kZXggNTdjMGQyNC4uNTlhNzQzZiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjAwMworKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDAzCkBAIC04OCwxMSArODgsMTcgQEAKIFNJWkUgMjAwMzAwMDINCiBSRVRSIDIwMDMwMDAyDQogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzIwMDMwMDAzCiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yMDAzMDAwMwogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzIwMDMwMDAzCiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yMDAzMDAwMwogRVBTVg0KIFNJWkUgMjAwMzAwMDINCiBSRVRSIDIwMDMwMDAyDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjAwNCBiL3Rlc3RzL2RhdGEvdGVzdDIwMDQKaW5kZXggYmFkNmY3Yi4uODAzNTE4MyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjAwNAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDA0CkBAIC00MywxMSArNDMsMTcgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMjAwNAogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMjAwNAogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzIwMDQKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzIwMDQKIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgogVGVzdCBkYXRhIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNDEgYi90ZXN0cy9kYXRhL3Rlc3QyMDQxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYWQyZmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDQxCkBAIC0wLDAgKzEsNTggQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUFMKK0hUVFAgR0VUCitQRU0gY2VydGlmaWNhdGUKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlCitDb250ZW50LUxlbmd0aDogNworCitNb29Nb28KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8ZmVhdHVyZXM+CitTU0wKK1NTTHBpbm5pbmcKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgoraHR0cHMgU2VydmVyLWxvY2FsaG9zdC1zdi5wZW0KKzwvc2VydmVyPgorIDxuYW1lPgorc2ltcGxlIEhUVFBTIEdFVCB3aXRoIGJhc2U2NC1zaGEyNTYgcHVibGljIGtleSBwaW5uaW5nCisgPC9uYW1lPgorIDxjb21tYW5kPgorLS1jYWNlcnQgJVNSQ0RJUi9jZXJ0cy9FZGVsQ3VybFJvb3QtY2EuY3J0IC0tcGlubmVkcHVia2V5IHNoYTI1Ni8vcHloK2ZJQ2k5TThNRkVadmhlcklUMGNzM01OK2NYTkdvVTlHaXd5eDFzbz0gaHR0cHM6Ly9sb2NhbGhvc3Q6JUhUVFBTUE9SVC8yMDQxCis8L2NvbW1hbmQ+CisjIEVuc3VyZSB0aGF0IHdlJ3JlIHJ1bm5pbmcgb24gbG9jYWxob3N0IGJlY2F1c2Ugd2UncmUgY2hlY2tpbmcgdGhlIGhvc3QgbmFtZQorPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMjA0MSBIVFRQLzEuMQ0KK0hvc3Q6IGxvY2FsaG9zdDolSFRUUFNQT1JUDQorQWNjZXB0OiAqLyoNCisNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0MiBiL3Rlc3RzL2RhdGEvdGVzdDIwNDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE4MWU1MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDIKQEAgLTAsMCArMSw0NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQUworSFRUUCBHRVQKK1BFTSBjZXJ0aWZpY2F0ZQorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK1NTTAorU1NMcGlubmluZworPC9mZWF0dXJlcz4KKzxzZXJ2ZXI+CitodHRwcyBTZXJ2ZXItbG9jYWxob3N0LXN2LnBlbQorPC9zZXJ2ZXI+CisgPG5hbWU+CitIVFRQUyB3cm9uZyBiYXNlNjQtc2hhMjU2IHBpbm5lZHB1YmtleSBidXQgcmlnaHQgQ04KKyA8L25hbWU+CisgPGNvbW1hbmQ+CistLWNhY2VydCAlU1JDRElSL2NlcnRzL0VkZWxDdXJsUm9vdC1jYS5jcnQgLS1waW5uZWRwdWJrZXkgc2hhMjU2Ly9iU0lnZ1RmK2lrTUcwQ3RtRGxwTVZCZDd5aTdIMW1kNFVSb2dSUHFlcnNvPSBodHRwczovL2xvY2FsaG9zdDolSFRUUFNQT1JULzIwNDIKKzwvY29tbWFuZD4KKyMgRW5zdXJlIHRoYXQgd2UncmUgcnVubmluZyBvbiBsb2NhbGhvc3QgYmVjYXVzZSB3ZSdyZSBjaGVja2luZyB0aGUgaG9zdCBuYW1lCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxlcnJvcmNvZGU+Cis5MAorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQzIGIvdGVzdHMvZGF0YS90ZXN0MjA0MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTkxZjViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0MwpAQCAtMCwwICsxLDMzIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFBTCitIVFRQIEdFVAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK1dpblNTTAorPC9mZWF0dXJlcz4KKzxzZXJ2ZXI+Citub25lCis8L3NlcnZlcj4KKyA8bmFtZT4KK0Rpc2FibGUgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MKKyA8L25hbWU+CisgPGNvbW1hbmQ+CistLXNzbC1uby1yZXZva2UgLUkgaHR0cHM6Ly9yZXZva2VkLmdyYy5jb20vCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8ZXJyb3Jjb2RlPgorMAorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQ0IGIvdGVzdHMvZGF0YS90ZXN0MjA0NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2U4MWE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0NApAQCAtMCwwICsxLDMzIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KKy0tcHJvdG8tZGVmYXVsdAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK25vbmUKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgorbm9uZQorPC9zZXJ2ZXI+Cis8bmFtZT4KK0F0dGVtcHQgdG8gc2V0IGEgZGVmYXVsdCBwcm90b2NvbCB0aGF0IGRvZXMgbm90IGV4aXN0Cis8L25hbWU+Cis8Y29tbWFuZD4KKy0tcHJvdG8tZGVmYXVsdCBET0VTTk9URVhJU1QKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0wgaXMgZXJyb3IgY29kZSAxCis8ZXJyb3Jjb2RlPgorMQorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQ1IGIvdGVzdHMvZGF0YS90ZXN0MjA0NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTkwZjgwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0NQpAQCAtMCwwICsxLDU0IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0ZUUAorLS1wcm90by1kZWZhdWx0Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzwhLS0KK1RoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBpcyB0byBtYWtlIHN1cmUgdGhlIC0tcHJvdG8tZGVmYXVsdCBvcHRpb24gd29ya3MKK3Byb3Blcmx5LiBXZSBzcGVjaWZ5IGEgZGVmYXVsdCBwcm90b2NvbCBvZiBGVFAgYW5kIGlmIHRoZSBvcHRpb24gd29ya3MgcHJvcGVybHkKK2N1cmwgd2lsbCB1c2UgdGhlIEZUUCBwcm90b2NvbC4gSWYgdGhlIG9wdGlvbiBpcyBicm9rZW4gaG93ZXZlciBjdXJsIHdpbGwgdXNlCit0aGUgSFRUUCBwcm90b2NvbC4KK0luIHRoZSBicm9rZW4gc2NlbmFyaW8gY3VybCB3b3VsZCB1c2UgSFRUUCB0byB0YWxrIHRvIG91ciBGVFAgc2VydmVyLiBXZSBoYW5kbGUKK3RoYXQgYnkgcmVwbHlpbmcgd2l0aCBzb21ldGhpbmcgdGhhdCBib3RoIHByb3RvY29scyBjYW4gdW5kZXJzdGFuZC4gT3VyIEZUUAorc2VydmVyIGFsbG93cyBhIGN1c3RvbSB3ZWxjb21lIG1lc3NhZ2UsIHNvIHdlIHVzZSB0aGF0IGZlYXR1cmUgdG8gbWFrZSBhbiBIVFRQCityZXBseSB0aGF0IGNvbnRhaW5zIGFuIEZUUCByZXBseSAodGhpbmsgcG9seWdsb3QpLiBJbiB0aGUgY2FzZSBvZiBGVFAgd2UgZXhwZWN0CitjdXJsIHdpbGwgcmV0dXJuIENVUkxFX0ZUUF9XRUlSRF9TRVJWRVJfUkVQTFkgc28gd2UgdGVzdCBmb3IgdGhhdCByZXR1cm4gY29kZS4KKy0tPgorPHNlcnZlcmNtZD4KK1JFUExZIHdlbGNvbWUgSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAyMVxyXG5cclxuNTAwIFdlaXJkIEZUUCBSZXBseQorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPGZlYXR1cmVzPgorbm9uZQorPC9mZWF0dXJlcz4KKzxzZXJ2ZXI+CitmdHAKKzwvc2VydmVyPgorPG5hbWU+CitTZXQgdGhlIGRlZmF1bHQgcHJvdG9jb2wgdG8gZnRwIGZvciBhIHNjaGVtZWxlc3MgVVJMCis8L25hbWU+Cis8Y29tbWFuZD4KKy1IICJVc2VyLUFnZW50OiIgLUggIkhvc3Q6IiAtSCAiQWNjZXB0OiIgLS1wcm90by1kZWZhdWx0IGZ0cCAlSE9TVElQOiVGVFBQT1JUCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIENVUkxFX0ZUUF9XRUlSRF9TRVJWRVJfUkVQTFkgaXMgZXJyb3IgY29kZSA4Cis8ZXJyb3Jjb2RlPgorOAorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQ2IGIvdGVzdHMvZGF0YS90ZXN0MjA0NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNjMTRkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0NgpAQCAtMCwwICsxLDk0IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFAKK0hUVFAgR0VUCitJRE4KK2ZvbGxvd2xvY2F0aW9uCistLXdyaXRlLW91dAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGEgbm9jaGVjaz0ieWVzIj4KK0hUVFAvMS4xIDMwMiBPSyBzd3Nib3VuY2UKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogOQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCitMb2NhdGlvbjogLi8yMDQ2MDAwMQorCityZWRpcmVjdAorPC9kYXRhPgorPGRhdGExIG5vY2hlY2s9InllcyI+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCisKK09LCis8L2RhdGExPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKzxmZWF0dXJlcz4KK2lkbgorPC9mZWF0dXJlcz4KKzxzZXRlbnY+CitDSEFSU0VUPVVURi04Cis8L3NldGVudj4KKyA8bmFtZT4KK0Nvbm5lY3Rpb24gcmUtdXNlIHdpdGggSUROIGhvc3QgbmFtZQorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovL8Olw6TDti5zZTolSFRUUFBPUlQvMjA0NiAtLXJlc29sdmUgeG4tLTRjYWI2Yy5zZTolSFRUUFBPUlQ6JUhPU1RJUCAtdyAiJXtudW1fY29ubmVjdHN9XG4le251bV9yZWRpcmVjdHN9XG4le3NpemVfZG93bmxvYWR9XG4le3VybF9lZmZlY3RpdmV9XG4le2NvbnRlbnRfdHlwZX1cbiV7cmVzcG9uc2VfY29kZX1cbiIgLUwKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxzdHJpcD4KK15Vc2VyLUFnZW50Oi4qCis8L3N0cmlwPgorPHByb3RvY29sPgorR0VUIC8yMDQ2IEhUVFAvMS4xDQorSG9zdDogeG4tLTRjYWI2Yy5zZTolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvMjA0NjAwMDEgSFRUUC8xLjENCitIb3N0OiB4bi0tNGNhYjZjLnNlOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKworPHN0ZG91dD4KK0hUVFAvMS4xIDMwMiBPSyBzd3Nib3VuY2UKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogOQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCitMb2NhdGlvbjogLi8yMDQ2MDAwMQorCitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCisKK09LCisxCisxCiszCitodHRwOi8vw6XDpMO2LnNlOiVIVFRQUE9SVC8yMDQ2MDAwMQordGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorMjAwCis8L3N0ZG91dD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0NyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThjY2EyZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDcKQEAgLTAsMCArMSw5NSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorSFRUUCBwcm94eQorSUROCitmb2xsb3dsb2NhdGlvbgorLS13cml0ZS1vdXQKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhIG5vY2hlY2s9InllcyI+CitIVFRQLzEuMSAzMDIgT0sgc3dzYm91bmNlCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDkKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorTG9jYXRpb246IC4vMjA0NzAwMDEKKworcmVkaXJlY3QKKzwvZGF0YT4KKzxkYXRhMSBub2NoZWNrPSJ5ZXMiPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorCitPSworPC9kYXRhMT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAorPC9zZXJ2ZXI+Cis8ZmVhdHVyZXM+CitpZG4KKzwvZmVhdHVyZXM+Cis8c2V0ZW52PgorQ0hBUlNFVD1VVEYtOAorPC9zZXRlbnY+CisgPG5hbWU+CitDb25uZWN0aW9uIHJlLXVzZSB3aXRoIElETiBob3N0IG5hbWUgb3ZlciBIVFRQIHByb3h5CisgPC9uYW1lPgorCisgPGNvbW1hbmQ+CitodHRwOi8vw6XDpMO2LnNlLzIwNDcgLXggJUhPU1RJUDolSFRUUFBPUlQgLXcgIiV7bnVtX2Nvbm5lY3RzfVxuJXtudW1fcmVkaXJlY3RzfVxuJXtzaXplX2Rvd25sb2FkfVxuJXt1cmxfZWZmZWN0aXZlfVxuJXtjb250ZW50X3R5cGV9XG4le3Jlc3BvbnNlX2NvZGV9XG4iIC1MCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCBodHRwOi8veG4tLTRjYWI2Yy5zZS8yMDQ3IEhUVFAvMS4xDQorSG9zdDogeG4tLTRjYWI2Yy5zZQ0KK0FjY2VwdDogKi8qDQorDQorR0VUIGh0dHA6Ly94bi0tNGNhYjZjLnNlLzIwNDcwMDAxIEhUVFAvMS4xDQorSG9zdDogeG4tLTRjYWI2Yy5zZQ0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKworPHN0ZG91dD4KK0hUVFAvMS4xIDMwMiBPSyBzd3Nib3VuY2UKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogOQorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCitMb2NhdGlvbjogLi8yMDQ3MDAwMQorCitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCisKK09LCisxCisxCiszCitodHRwOi8veG4tLTRjYWI2Yy5zZS8yMDQ3MDAwMQordGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorMjAwCis8L3N0ZG91dD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0OCBiL3Rlc3RzL2RhdGEvdGVzdDIwNDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIyYjFkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDgKQEAgLTAsMCArMSw0MCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQUworSFRUUCBHRVQKK1BFTSBjZXJ0aWZpY2F0ZQorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK1NTTAorU1NMcGlubmluZworPC9mZWF0dXJlcz4KKzxzZXJ2ZXI+CitodHRwcyBTZXJ2ZXItbG9jYWxob3N0LXN2LnBlbQorPC9zZXJ2ZXI+Cis8bmFtZT4KK3Bpbm5lZHB1YmtleSBuby1tYXRjaCBtdXN0IGZhaWwgZXZlbiB3aGVuIGluc2VjdXJlCis8L25hbWU+Cis8Y29tbWFuZD4KKy0taW5zZWN1cmUgLS1jYWNlcnQgJVNSQ0RJUi9jZXJ0cy9FZGVsQ3VybFJvb3QtY2EuY3J0IC0tcGlubmVkcHVia2V5ICVTUkNESVIvY2VydHMvU2VydmVyLWxvY2FsaG9zdC5ubi1zdi5wdWIuZGVyIGh0dHBzOi8vbG9jYWxob3N0OiVIVFRQU1BPUlQvMjAzNAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPGVycm9yY29kZT4KKzkwCis8L2Vycm9yY29kZT4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNDkgYi90ZXN0cy9kYXRhL3Rlc3QyMDQ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTU3NmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDQ5CkBAIC0wLDAgKzEsNjQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0NVUkxPUFRfQ09OTkVDVF9UTworPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGE+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorIDxuYW1lPgorQ29ubmVjdCB0byBzcGVjaWZpYyBob3N0CisgPC9uYW1lPgorCisgPGNvbW1hbmQ+CitodHRwOi8vd3d3MS5leGFtcGxlLmNvbTo4MDgxLzIwNDkgLS1jb25uZWN0LXRvIDo6JUhPU1RJUDolSFRUUFBPUlQgLS1uZXh0IGh0dHA6Ly93d3cyLmV4YW1wbGUuY29tOjgwODIvMjA0OSAtLWNvbm5lY3QtdG8gOjgwODI6JUhPU1RJUDolSFRUUFBPUlQgLS1uZXh0IGh0dHA6Ly93d3czLmV4YW1wbGUuY29tOjgwODMvMjA0OSAtLWNvbm5lY3QtdG8gd3d3My5leGFtcGxlLmNvbTo6JUhPU1RJUDolSFRUUFBPUlQgLS1uZXh0IGh0dHA6Ly93d3c0LmV4YW1wbGUuY29tOjgwODQvMjA0OSAtLWNvbm5lY3QtdG8gd3d3NC5leGFtcGxlLmNvbTo4MDg0OiVIT1NUSVA6JUhUVFBQT1JUCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMjA0OSBIVFRQLzEuMQ0KK0hvc3Q6IHd3dzEuZXhhbXBsZS5jb206ODA4MQ0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8yMDQ5IEhUVFAvMS4xDQorSG9zdDogd3d3Mi5leGFtcGxlLmNvbTo4MDgyDQorQWNjZXB0OiAqLyoNCisNCitHRVQgLzIwNDkgSFRUUC8xLjENCitIb3N0OiB3d3czLmV4YW1wbGUuY29tOjgwODMNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvMjA0OSBIVFRQLzEuMQ0KK0hvc3Q6IHd3dzQuZXhhbXBsZS5jb206ODA4NA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA1MCBiL3Rlc3RzL2RhdGEvdGVzdDIwNTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1ZTg3MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNTAKQEAgLTAsMCArMSw3NyBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorSFRUUCBDT05ORUNUCitIVFRQIHByb3h5Citwcm94eXR1bm5lbAorQ1VSTE9QVF9DT05ORUNUX1RPCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8Y29ubmVjdD4KK0hUVFAvMS4xIDIwMCBDb25uZWN0aW9uIGVzdGFibGlzaGVkCisKKzwvY29ubmVjdD4KKworPGRhdGE+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCis8L2RhdGE+CisKKzxkYXRhY2hlY2s+CitIVFRQLzEuMSAyMDAgQ29ubmVjdGlvbiBlc3RhYmxpc2hlZAorCitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCis8L2RhdGFjaGVjaz4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAoraHR0cC1wcm94eQorPC9zZXJ2ZXI+CisgPG5hbWU+CitDb25uZWN0IHRvIHNwZWNpZmljIGhvc3QgdmlhIEhUVFAgcHJveHkgKHN3aXRjaCB0byB0dW5uZWwgbW9kZSBhdXRvbWF0aWNhbGx5KQorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovL3d3dy5leGFtcGxlLmNvbS4yMDUwLzIwNTAgLS1jb25uZWN0LXRvIDo6Y29ubmVjdC5leGFtcGxlLmNvbS4yMDUwOiVIVFRQUE9SVCAteCAlSE9TVElQOiVQUk9YWVBPUlQKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxzdHJpcD4KK15Vc2VyLUFnZW50Oi4qCis8L3N0cmlwPgorPHByb3h5PgorQ09OTkVDVCBjb25uZWN0LmV4YW1wbGUuY29tLjIwNTA6JUhUVFBQT1JUIEhUVFAvMS4xDQorSG9zdDogY29ubmVjdC5leGFtcGxlLmNvbS4yMDUwOiVIVFRQUE9SVA0KKw0KKzwvcHJveHk+Cis8cHJvdG9jb2w+CitHRVQgLzIwNTAgSFRUUC8xLjENCitIb3N0OiB3d3cuZXhhbXBsZS5jb20uMjA1MA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA1MSBiL3Rlc3RzL2RhdGEvdGVzdDIwNTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjNmJlZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNTEKQEAgLTAsMCArMSw3NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorQ1VSTE9QVF9DT05ORUNUX1RPCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YSBub2NoZWNrPSJ5ZXMiPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworPC9kYXRhPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0Nvbm5lY3QgdG8gc3BlY2lmaWMgaG9zdDogUmUtdXNlIGV4aXN0aW5nIGNvbm5lY3Rpb25zIGlmIHBvc3NpYmxlCisgPC9uYW1lPgorCisgPGNvbW1hbmQ+CitodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMjA1MSAtdyAiJXtudW1fY29ubmVjdHN9XG4iIC0tbmV4dCAtLWNvbm5lY3QtdG8gOjolSE9TVElQOiVIVFRQUE9SVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMjA1MSAtdyAiJXtudW1fY29ubmVjdHN9XG4iIC0tbmV4dCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMjA1MSAtdyAiJXtudW1fY29ubmVjdHN9XG4iCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMjA1MSBIVFRQLzEuMQ0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCitHRVQgLzIwNTEgSFRUUC8xLjENCitIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8yMDUxIEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzxzdGRvdXQ+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCisxCitPSworMAorT0sKKzAKKzwvc3Rkb3V0PgorCis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDUyIGIvdGVzdHMvZGF0YS90ZXN0MjA1MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODIwMDJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA1MgpAQCAtMCwwICsxLDY4IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFAKK0hUVFAgR0VUCitDVVJMT1BUX0NPTk5FQ1RfVE8KKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhIG5vY2hlY2s9InllcyI+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorIDxuYW1lPgorQ29ubmVjdCB0byBzcGVjaWZpYyBob3N0OiBEbyBub3QgbWl4IGNvbm5lY3Rpb25zIHdpdGggYW5kIHdpdGhvdXQgYSAiY29ubmVjdCB0byBob3N0IgorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovL3d3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQvMjA1MiAtLXJlc29sdmUgd3d3LmV4YW1wbGUuY29tOiVIVFRQUE9SVDolSE9TVElQIC13ICIle251bV9jb25uZWN0c31cbiIgLS1uZXh0IC0tcmVzb2x2ZSAtd3d3LmV4YW1wbGUuY29tOiVIVFRQUE9SVCAtLWNvbm5lY3QtdG8gOjolSE9TVElQOiVIVFRQUE9SVCBodHRwOi8vd3d3LmV4YW1wbGUuY29tOiVIVFRQUE9SVC8yMDUyIC13ICIle251bV9jb25uZWN0c31cbiIKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxzdHJpcD4KK15Vc2VyLUFnZW50Oi4qCis8L3N0cmlwPgorPHByb3RvY29sPgorR0VUIC8yMDUyIEhUVFAvMS4xDQorSG9zdDogd3d3LmV4YW1wbGUuY29tOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8yMDUyIEhUVFAvMS4xDQorSG9zdDogd3d3LmV4YW1wbGUuY29tOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKworPHN0ZG91dD4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK0NvbnRlbnQtTGVuZ3RoOiAzCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworT0sKKzEKK09LCisxCis8L3N0ZG91dD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA2IGIvdGVzdHMvZGF0YS90ZXN0MjA2CmluZGV4IDVmMGM4ODUuLmVmYmM1NmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIwNgorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDYKQEAgLTkwLDEyICs5MCwxMCBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LnJlbW90ZS5oYXh4LnNlLjIwNjo4OTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4yMDY6ODk5MA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmhheHguc2UuMjA2Ojg5OTAgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjIwNjo4OTkwDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJzaWxseSIsIHJlYWxtPSJ3ZWlyZG9yZWFsbSIsIG5vbmNlPSIxMjM0NSIsIHVyaT0idGVzdC5yZW1vdGUuaGF4eC5zZS4yMDY6ODk5MCIsIHJlc3BvbnNlPSIwMDNlMzZkZWNiNGRiZjYzNjZiM2VjYjliODdjMjRlYyINCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIC9wYXRoLzIwNjAwMDIgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMy1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMy1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwOCBiL3Rlc3RzL2RhdGEvdGVzdDIwOAppbmRleCBhZmIyNTY2Li5mYjRjMGVhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMDgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA4CkBAIC01Nyw3ICs1Nyw2IEBACiBIb3N0OiBob3N0LmNvbToyMQ0KIEF1dGhvcml6YXRpb246IEJhc2ljIFpHRnVhV1ZzT20xNWMyVmpjbVYwDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDc4DQogRXhwZWN0OiAxMDAtY29udGludWUNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDkgYi90ZXN0cy9kYXRhL3Rlc3QyMDkKaW5kZXggOTYxZWJhMS4uZjg2ODU0MSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjA5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwOQpAQCAtMTA0LDEyICsxMDQsMTAgQEAKIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjA5OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIwOTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjA5OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIwOTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIC9wYXRoLzIwOTAwMDIgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMy1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMy1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIxMyBiL3Rlc3RzL2RhdGEvdGVzdDIxMwppbmRleCBlZGJiNmE2Li43Y2VlZDk4IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMTMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjEzCkBAIC0xMDQsMTIgKzEwNCwxMCBAQAogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMTM6JUhUVFBQT1JUIEhUVFAvMS4wDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjEzOiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMTM6JUhUVFBQT1JUIEhUVFAvMS4wDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjEzOiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBQT1NUIC9wYXRoLzIxMzAwMDIgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMy1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMy1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIxNyBiL3Rlc3RzL2RhdGEvdGVzdDIxNwppbmRleCBmMTBkZjU2Li4wZTBjMGFkIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMTcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjE3CkBAIC00NCw3ICs0NCw2IEBACiA8cHJvdG9jb2w+CiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIxNzolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMTc6JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiAjIENVUkxFX1JFQ1ZfRVJST1IKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIzMyBiL3Rlc3RzL2RhdGEvdGVzdDIzMwppbmRleCBiNjMxZTUyLi45OTY4NTVkIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMzMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjMzCkBAIC04MSwxMyArODEsMTEgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGRHVnpkR2x1WnpwMGFHbHoNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9nb3RvLnNlY29uZC5ob3N0Lm5vdy8yMzMwMDAyIEhUVFAvMS4xDQogSG9zdDogZ290by5zZWNvbmQuaG9zdC5ub3cNCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBkR1Z6ZEdsdVp6cDBhR2x6DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjM0IGIvdGVzdHMvZGF0YS90ZXN0MjM0CmluZGV4IDFkMmUwNWIuLmY3ZGEyYjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIzNAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMzQKQEAgLTgzLDE0ICs4MywxMiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgZEdWemRHbHVaenAwYUdseg0KIEF1dGhvcml6YXRpb246IEJhc2ljIGFXRnRPbTE1YzJWc1pnPT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2dvdG8uc2Vjb25kLmhvc3Qubm93LzIzNDAwMDIgSFRUUC8xLjENCiBIb3N0OiBnb3RvLnNlY29uZC5ob3N0Lm5vdw0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGRHVnpkR2x1WnpwMGFHbHoNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjM5IGIvdGVzdHMvZGF0YS90ZXN0MjM5CmluZGV4IDZiOTJmMDcuLjI3NWM4MWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIzOQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMzkKQEAgLTgzLDcgKzgzLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDANCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTkyLDcgKzkxLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogNg0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjQzIGIvdGVzdHMvZGF0YS90ZXN0MjQzCmluZGV4IDM0OTYwNTUuLmJjMDkyODYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI0MworKysgYi90ZXN0cy9kYXRhL3Rlc3QyNDMKQEAgLTEwMyw3ICsxMDMsNiBAQAogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTExMiw3ICsxMTEsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTIxLDcgKzExOSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1MiBiL3Rlc3RzL2RhdGEvdGVzdDI1MgppbmRleCBiM2Y0OTY2Li41NTllY2UwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjUyCkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUC1pcHY2CiBJUHY2CiBFUFNWCkBAIC0xMSw3ICsxMiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1MyBiL3Rlc3RzL2RhdGEvdGVzdDI1MwppbmRleCA5YmU1ZjNkLi44OTc0YThiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjUzCkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUC1pcHY2CiBJUHY2CiBFUFJUCkBAIC0xMSw3ICsxMiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1NCBiL3Rlc3RzL2RhdGEvdGVzdDI1NAppbmRleCA1NzFiMDMzLi5hOWVhMGNjIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjU0CkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUC1pcHY2CiBJUHY2CiBFUFNWCkBAIC0xMiw3ICsxMyw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1NSBiL3Rlc3RzL2RhdGEvdGVzdDI1NQppbmRleCBjYzUwYzk1Li43OWQ0M2FmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjU1CkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUC1pcHY2CiBJUHY2CiBFUFJUCkBAIC0xMiw3ICsxMyw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1NiBiL3Rlc3RzL2RhdGEvdGVzdDI1NgppbmRleCAyYjk2ZWNmLi4wYWNkOWRiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjU2CkBAIC01MSw3ICs1MSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBaR0Z1YVdWc09uTjBaVzVpWlhKbg0KIFJhbmdlOiBieXRlcz03OC0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTcgYi90ZXN0cy9kYXRhL3Rlc3QyNTcKaW5kZXggNTAyNDQ4ZC4uNDVkY2JkNSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjU3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1NwpAQCAtOTIsMjAgKzkyLDE3IEBACiBBdXRob3JpemF0aW9uOiBCYXNpYyBkWE5sY2pFNmNHRnpjM2RrTVE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xNC4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xNC4wLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2Fub3RoZXJvbmUuY29tLzI1NzAwMDIgSFRUUC8xLjENCiBIb3N0OiBhbm90aGVyb25lLmNvbQ0KIEF1dGhvcml6YXRpb246IEJhc2ljIGRYTmxjakk2Y0dGemMzZGtNZz09DQogVXNlci1BZ2VudDogY3VybC83LjE0LjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjE0LjAtQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMwogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9hdGhpcmQuY29tLzI1NzAwMDMgSFRUUC8xLjENCiBIb3N0OiBhdGhpcmQuY29tDQogVXNlci1BZ2VudDogY3VybC83LjE0LjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjE0LjAtQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMwogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjU4IGIvdGVzdHMvZGF0YS90ZXN0MjU4CmluZGV4IDk4YzM0MDEuLjgyYzY3MzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI1OAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNTgKQEAgLTIwLDcgKzIwLDYgQEAKIERhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCiBTZXJ2ZXI6IHRlc3Qtc2VydmVyL2Zha2UKIFByb3h5LUF1dGhlbnRpY2F0ZTogRGlnZXN0IHJlYWxtPSJtYW55IHNlY3JldHMiLCBub25jZT0iOTExIgotUHJveHktQ29ubmVjdGlvbjogY2xvc2UKIENvbnRlbnQtTGVuZ3RoOiAwCiAKIDwvZGF0YT4KQEAgLTM3LDcgKzM2LDYgQEAKIERhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCiBTZXJ2ZXI6IHRlc3Qtc2VydmVyL2Zha2UKIFByb3h5LUF1dGhlbnRpY2F0ZTogRGlnZXN0IHJlYWxtPSJtYW55IHNlY3JldHMiLCBub25jZT0iOTExIgotUHJveHktQ29ubmVjdGlvbjogY2xvc2UKIENvbnRlbnQtTGVuZ3RoOiAwCiAKIEhUVFAvMS4xIDIwMCBBIE9LDQpAQCAtODMsNyArODEsNiBAQAogSG9zdDogcmVtb3RlaG9zdDo1NDMyMQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC40IChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjQgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDQwOQ0KIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTdjNjMzZDVjMjdjZQ0KIA0KQEAgLTEwOSw3ICsxMDYsNiBAQAogVXNlci1BZ2VudDogY3VybC83LjEwLjQgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNCBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCiBQcm94eS1BdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InV1dXNlciIsIHJlYWxtPSJtYW55IHNlY3JldHMiLCBub25jZT0iOTExIiwgdXJpPSIvd2Uvd2FudC8yNTgiLCByZXNwb25zZT0iMjUwMTY1NGNhMzkxZjBiNWM4YzEyYTFkYTc3ZTM0Y2QiDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDQwOQ0KIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTdjNjMzZDVjMjdjZQ0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1OSBiL3Rlc3RzL2RhdGEvdGVzdDI1OQppbmRleCA5NTMyODg3Li43NWIxZjUzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjU5CkBAIC03OSw3ICs3OSw2IEBACiBIb3N0OiByZW1vdGVob3N0OjU0MzIxDQogVXNlci1BZ2VudDogY3VybC83LjEwLjQgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNCBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogNDA5DQogRXhwZWN0OiAxMDAtY29udGludWUNCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03YzYzM2Q1YzI3Y2UNCkBAIC0xMDYsNyArMTA1LDYgQEAKIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC40IChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjQgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJ1dXVzZXIiLCByZWFsbT0ibWFueSBzZWNyZXRzIiwgbm9uY2U9IjkxMSIsIHVyaT0iL3dlL3dhbnQvMjU5IiwgcmVzcG9uc2U9ImI0Nzk5OTRkMTNlNjBmM2FhMTkyYTY3YzU4OTJkZGM1Ig0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA0MDkNCiBFeHBlY3Q6IDEwMC1jb250aW51ZQ0KIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTdjNjMzZDVjMjdjZQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI2MyBiL3Rlc3RzL2RhdGEvdGVzdDI2MwppbmRleCA1MDg4MTQxLi5kZjBiYTAzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNjMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjYzCkBAIC00Nyw3ICs0Nyw2IEBACiBHRVQgaHR0cDovL3Zlcnl2ZXJ5cmVtb3Rlc2l0ZS5jb20vMjYzIEhUVFAvMS4xDQogSG9zdDogdmVyeXZlcnlyZW1vdGVzaXRlLmNvbQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI2NCBiL3Rlc3RzL2RhdGEvdGVzdDI2NAppbmRleCBmNGQxNzFhLi4xMTc0Y2E1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNjQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjY0CkBAIC00Miw3ICs0Miw2IEBACiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabUZyWlRwMWMyVnkNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNjUgYi90ZXN0cy9kYXRhL3Rlc3QyNjUKaW5kZXggMWExNjJiOC4uNzlhYjE4MyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjY1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI2NQpAQCAtMTA3LDEyICsxMDcsMTAgQEAKIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjY1OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjI2NTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjY1OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjI2NTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogUE9TVCAvcGF0aC8yNjUwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNyBiL3Rlc3RzL2RhdGEvdGVzdDI3CmluZGV4IDVhZTJmZmQuLjZmZWQzZDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI3CkBAIC0xMSw3ICsxMSw3IEBACiA8ZGF0YT4KIEhUVFAvMS4xIDIwMCBNb29vIHN3c2Nsb3NlCiBDb25uZWN0aW9uOiBjbG9zZQotU2V0LUNvb2tpZTogcGF0aD0vOyB0aGV3aW5uZXJpcz1ub3dheXlvdXdpbjsKK1NldC1Db29raWU6IHRoZXdpbm5lcmlzPW5vd2F5eW91d2luOyBwYXRoPS87CiBDb250ZW50LUxlbmd0aDogOAogCiAqZmxvcHAqCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNzEgYi90ZXN0cy9kYXRhL3Rlc3QyNzEKaW5kZXggYWY1YTZjNi4uMDZkNWE4YiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjcxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI3MQpAQCAtMzYsOCArMzYsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMjcxCiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yNzEKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNzUgYi90ZXN0cy9kYXRhL3Rlc3QyNzUKaW5kZXggODAyYzRiYi4uNjAwMDQ1NCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjc1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI3NQpAQCAtNjksNyArNjksNiBAQAogSG9zdDogcmVtb3Rlc2l0ZS5jb20uMjc1OiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGVXOTFZWEpsT25sdmRYSnpaV3htDQogVXNlci1BZ2VudDogY3VybC83LjEwLjctcHJlMiAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC43LXByZTIgT3BlblNTTC8wLjkuN2EgemxpYi8xLjEuMw0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0Mjc4IGIvdGVzdHMvZGF0YS90ZXN0Mjc4CmluZGV4IDMxMTIyNjQuLmU2ZjFlZjcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI3OAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNzgKQEAgLTQyLDcgKzQyLDYgQEAKIEhvc3Q6IHdlLndhbnQudGhhdC5zaXRlLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIFptRnJaVG89DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0Mjc5IGIvdGVzdHMvZGF0YS90ZXN0Mjc5CmluZGV4IDQ3ZjhiNjguLjUwMDVkYWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI3OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNzkKQEAgLTQzLDcgKzQzLDYgQEAKIEhvc3Q6IHdlLndhbnQudGhhdC5zaXRlLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIFptRnJaVG89DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjgzIGIvdGVzdHMvZGF0YS90ZXN0MjgzCmluZGV4IDkyMmRlNTEuLjBkYzEyNzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI4MworKysgYi90ZXN0cy9kYXRhL3Rlc3QyODMKQEAgLTE3LDcgKzE3LDcgQEAKIFRGVFAgcmV0cmlldmUgb24gaW52YWxpZCBmaWxlCiAgPC9uYW1lPgogIDxjb21tYW5kPgotdGZ0cDovLyVIT1NUSVA6JVRGVFBQT1JULy9pbnZhbGlkLWZpbGUgLS10cmFjZS1hc2NpaSBsb2cvdHJhY2VpdAordGZ0cDovLyVIT1NUSVA6JVRGVFBQT1JULy9pbnZhbGlkLWZpbGUgLS10cmFjZS1hc2NpaSBsb2cvdHJhY2VpdCAtLXRmdHAtYmxrc2l6ZSAxMDI0CiA8L2NvbW1hbmQ+CiA8L2NsaWVudD4KIApAQCAtMjksOCArMjksMTEgQEAKIDwvZXJyb3Jjb2RlPgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogL2ludmFsaWQtZmlsZQogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiAxMDI0Cit0aW1lb3V0OiA2CitmaWxlbmFtZTogL2ludmFsaWQtZmlsZQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI4NCBiL3Rlc3RzL2RhdGEvdGVzdDI4NAppbmRleCAwYzJhNjY1Li45NTRjOTAyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyODQKKysrIGIvdGVzdHMvZGF0YS90ZXN0Mjg0CkBAIC02MCw4ICs2MCwxMSBAQAogPHZlcmlmeT4KIDxwcm90b2NvbD4KIG9wY29kZTogMQotZmlsZW5hbWU6IC8yODQKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzI4NAogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI4NSBiL3Rlc3RzL2RhdGEvdGVzdDI4NQppbmRleCA3NWExOTk5Li5kN2E0YTM5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyODUKKysrIGIvdGVzdHMvZGF0YS90ZXN0Mjg1CkBAIC0zNyw4ICszNywxMSBAQAogPC91cGxvYWQ+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDIKLWZpbGVuYW1lOiAvdGVzdDI4NS50eHQKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMzIKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC90ZXN0Mjg1LnR4dAogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI4NiBiL3Rlc3RzL2RhdGEvdGVzdDI4NgppbmRleCA4NDFlZTFlLi5iOTA5ZmQzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyODYKKysrIGIvdGVzdHMvZGF0YS90ZXN0Mjg2CkBAIC04NSw4ICs4NSwxMSBAQAogPC91cGxvYWQ+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDIKLWZpbGVuYW1lOiAvdGVzdDI4Ni50eHQKIG1vZGU6IG9jdGV0Cit0c2l6ZTogNTEyCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvdGVzdDI4Ni50eHQKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyODcgYi90ZXN0cy9kYXRhL3Rlc3QyODcKaW5kZXggNjc3MmUyMi4uNTI2NDQ2ZiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjg3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI4NwpAQCAtMzcsNyArMzcsNiBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yODc6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjg3OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBVc2VyLUFnZW50OiBsb29zZXIvMjAwNw0KIA0KIDwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyOTkgYi90ZXN0cy9kYXRhL3Rlc3QyOTkKaW5kZXggNGRhYWVhNC4uYTdiNzc1NSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjk5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI5OQpAQCAtNDYsNyArNDYsNiBAQAogSG9zdDogaG9zdC5jb206MjENCiBBdXRob3JpemF0aW9uOiBCYXNpYyBiV2xqYUdGc09tRjVZbUZpZEhVPQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDMxIGIvdGVzdHMvZGF0YS90ZXN0MzEKaW5kZXggN2NmNTU2Yy4uMjI4OWQ1NiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MzEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MzEKQEAgLTk3LDcgKzk3LDcgQEAKIDwvcHJvdG9jb2w+CiA8ZmlsZSBuYW1lPSJsb2cvamFyMzEudHh0IiBtb2RlPSJ0ZXh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKIDEyNy4wLjAuMQlGQUxTRQkvc2lsbHkvCUZBTFNFCTAJaXNtYXRjaAl0aGlzCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDAgYi90ZXN0cy9kYXRhL3Rlc3Q0MDAKaW5kZXggNzVkNTk3OS4uZjJkMzI2MyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDAwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwMApAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBQQVNWCiBMSVNUCkBAIC0xMSw3ICsxMiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQUyBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDEgYi90ZXN0cy9kYXRhL3Rlc3Q0MDEKaW5kZXggY2IwMWMxYy4uMWJiOWZiMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDAxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwMQpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBFUFNWCiBTVE9SCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDIgYi90ZXN0cy9kYXRhL3Rlc3Q0MDIKaW5kZXggMjcyYzRlMy4uMzA2MGM5OSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDAyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwMgpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBGQUlMVVJFCiA8L2tleXdvcmRzPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDAzIGIvdGVzdHMvZGF0YS90ZXN0NDAzCmluZGV4IDJiOGZmNWUuLjdlNGQyYmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwMworKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDMKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogUEFTVgogTElTVApAQCAtMTMsNyArMTQsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUFMgc2VydmVyCi08ZGF0YWNoZWNrPgorPGRhdGFjaGVjayBtb2RlPSJ0ZXh0Ij4KIHRvdGFsIDIwCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDA0IGIvdGVzdHMvZGF0YS90ZXN0NDA0CmluZGV4IDk3NjY2MzAuLjBmNzMzMjUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwNAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDQKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogRkFJTFVSRQogPC9rZXl3b3Jkcz4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDQwNSBiL3Rlc3RzL2RhdGEvdGVzdDQwNQppbmRleCAyOWU3YWYyLi4yOGQ4YjU3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q0MDUKKysrIGIvdGVzdHMvZGF0YS90ZXN0NDA1CkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUFMKIEZBSUxVUkUKIDwva2V5d29yZHM+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDYgYi90ZXN0cy9kYXRhL3Rlc3Q0MDYKaW5kZXggMzI1OWJjNi4uMDFkODNkYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDA2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwNgpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBQT1JUCiBMSVNUCkBAIC0xMSw3ICsxMiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQUyBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDcgYi90ZXN0cy9kYXRhL3Rlc3Q0MDcKaW5kZXggOGMxNGZhOC4uY2EwNjgzOCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDA3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwNwpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBQQVNWCiBSRVRSCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDggYi90ZXN0cy9kYXRhL3Rlc3Q0MDgKaW5kZXggZDBhYTEzYi4uNjhiNDJiMiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDA4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwOApAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBQT1JUCiBTVE9SCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDkgYi90ZXN0cy9kYXRhL3Rlc3Q0MDkKaW5kZXggZDc4MDFhOC4uMDAxMDBiYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDA5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwOQpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBFUFNWCiBTVE9SCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MyBiL3Rlc3RzL2RhdGEvdGVzdDQzCmluZGV4IGU1NTM1YmIuLmRjMGRkNWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQzCkBAIC02NywxMiArNjcsMTAgQEAKIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2FudC80MyBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC93YW50L2RhdGEvNDMwMDAyLnR4dD9jb29sc2l0ZT15ZXMgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDQ2IGIvdGVzdHMvZGF0YS90ZXN0NDYKaW5kZXggYjZmOGY4My4uZDEwNDViMyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0NDYKQEAgLTQ2LDEzICs0NiwxMyBAQAogPC9jb21tYW5kPgogPGZpbGUgbmFtZT0ibG9nL2luamFyNDYiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhICBEbyBub3QgZWRpdC4KIAotd3d3LmZha2UuY29tZQlGQUxTRQkvCUZBTFNFCTEwMjIxNDQ5NTMJY29va2llY2xpZW50ZQlzaQotd3d3Lmxvc2VyLmNvbQlGQUxTRQkvCUZBTFNFCTExMzkxNTA5OTMJVUlECTk5Ci0lSE9TVElQCUZBTFNFCS8JRkFMU0UJMTQzOTE1MDk5Mwltb29vCWluZGVlZAotI0h0dHBPbmx5XyVIT1NUSVAJRkFMU0UJL3dhbnQJRkFMU0UJMTQzOTE1MDk5Mwltb29vMglpbmRlZWQyCit3d3cuZmFrZS5jb21lCUZBTFNFCS8JRkFMU0UJMjAyMjE0NDk1Mwljb29raWVjbGllbnRlCXNpCit3d3cubG9zZXIuY29tCUZBTFNFCS8JRkFMU0UJMjEzOTE1MDk5MwlVSUQJOTkKKyVIT1NUSVAJRkFMU0UJLwlGQUxTRQkxNzM5MTUwOTkzCW1vb28JaW5kZWVkCisjSHR0cE9ubHlfJUhPU1RJUAlGQUxTRQkvd2FudAlGQUxTRQkxNzM5MTUwOTkzCW1vb28yCWluZGVlZDIKICVIT1NUSVAJRkFMU0UJL3dhbnQJRkFMU0UJMAllbXB0eQkKIDwvZmlsZT4KIDwvY2xpZW50PgpAQCAtNzEsMTMgKzcxLDEzIEBACiA8L3Byb3RvY29sPgogPGZpbGUgbmFtZT0ibG9nL2phcjQ2IiBtb2RlPSJ0ZXh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKLXd3dy5mYWtlLmNvbWUJRkFMU0UJLwlGQUxTRQkxMDIyMTQ0OTUzCWNvb2tpZWNsaWVudGUJc2kKLXd3dy5sb3Nlci5jb20JRkFMU0UJLwlGQUxTRQkxMTM5MTUwOTkzCVVJRAk5OQotJUhPU1RJUAlGQUxTRQkvCUZBTFNFCTE0MzkxNTA5OTMJbW9vbwlpbmRlZWQKLSNIdHRwT25seV8lSE9TVElQCUZBTFNFCS93YW50CUZBTFNFCTE0MzkxNTA5OTMJbW9vbzIJaW5kZWVkMgord3d3LmZha2UuY29tZQlGQUxTRQkvCUZBTFNFCTIwMjIxNDQ5NTMJY29va2llY2xpZW50ZQlzaQord3d3Lmxvc2VyLmNvbQlGQUxTRQkvCUZBTFNFCTIxMzkxNTA5OTMJVUlECTk5CislSE9TVElQCUZBTFNFCS8JRkFMU0UJMTczOTE1MDk5Mwltb29vCWluZGVlZAorI0h0dHBPbmx5XyVIT1NUSVAJRkFMU0UJL3dhbnQJRkFMU0UJMTczOTE1MDk5Mwltb29vMglpbmRlZWQyCiAlSE9TVElQCUZBTFNFCS93YW50CUZBTFNFCTAJZW1wdHkJCiAlSE9TVElQCUZBTFNFCS8JRkFMU0UJMjA1NDAzMDE4Nwlja3lQZXJzaXN0ZW50CXBlcm1hbmVudAogJUhPU1RJUAlGQUxTRQkvCUZBTFNFCTAJY2t5U2Vzc2lvbgl0ZW1wb3JhcnkKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDUgYi90ZXN0cy9kYXRhL3Rlc3Q1CmluZGV4IGI2MmYxYTEuLjEzMzE0NTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDUKKysrIGIvdGVzdHMvZGF0YS90ZXN0NQpAQCAtNDMsNyArNDMsNiBAQAogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC93ZS93YW50L3RoYXQvcGFnZS81IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1MDMgYi90ZXN0cy9kYXRhL3Rlc3Q1MDMKaW5kZXggZThkYzIxZS4uZjAyYmFjNiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTAzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDUwMwpAQCAtNzIsNyArNzIsNiBAQAogQ09OTkVDVCBtYWNoaW5lLjUwMzolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiBtYWNoaW5lLjUwMzolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBkR1Z6ZERwcGJtYz0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDxwcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDUwNiBiL3Rlc3RzL2RhdGEvdGVzdDUwNgppbmRleCAwN2JiZGVhLi5mMTkzOWZlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1MDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTA2CkBAIC0yMTIsNyArMjEyLDcgQEAKIDwvc3RkZXJyPgogPGZpbGUgbmFtZT0ibG9nL2phcjUwNiIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCiAuaG9zdC5mb28uY29tCVRSVUUJLwlGQUxTRQkxODk2MjYzNzg3CWluamVjdGVkCXllcwpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTIzIGIvdGVzdHMvZGF0YS90ZXN0NTIzCmluZGV4IDlhYmUwZWQuLmQwMjFhZTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDUyMworKysgYi90ZXN0cy9kYXRhL3Rlc3Q1MjMKQEAgLTU0LDcgKzU0LDYgQEAKIEhvc3Q6IHd3dy5leGFtcGxlLmNvbToxOTk5OQ0KIEF1dGhvcml6YXRpb246IEJhc2ljIGVIaDRPbmw1ZVE9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTM5IGIvdGVzdHMvZGF0YS90ZXN0NTM5CmluZGV4IGVhYTY0ZDUuLmU5YWFkZDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDUzOQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1MzkKQEAgLTEyLDggKzEyLDEwIEBACiBmaWxlIGNvbnRlbnRzCiA8L2RhdGE+CiAKLTxkYXRhY2hlY2sgbW9kZT0idGV4dCI+Cis8ZGF0YWNoZWNrPgogZmlsZSBjb250ZW50cworPC9kYXRhY2hlY2s+Cis8ZGF0YWNoZWNrMSBtb2RlPSJ0ZXh0Ij4KIHRvdGFsIDIwCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgpAQCAtMjUsNyArMjcsNyBAQAogZHIteHIteHIteCAgIDIgMCAgICAgICAgMSAgICAgICAgICAgIDUxMiBOb3YgMzAgIDE5OTUgZXRjCiBkcnd4cnd4cnd4ICAgMiA5OCAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAzMCAxNDozMyBwdWIKIGRyLXhyLXhyLXggICA1IDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IHVzcgotPC9kYXRhY2hlY2s+Cis8L2RhdGFjaGVjazE+CiA8L3JlcGx5PgogCiAjIENsaWVudC1zaWRlCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NDAgYi90ZXN0cy9kYXRhL3Rlc3Q1NDAKaW5kZXggOGRlY2FlYS4uMTlhMTNmMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTQwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU0MApAQCAtNzgsMTkgKzc4LDE2IEBACiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmV4YW1wbGUuY29tL3BhdGgvNTQwIEhUVFAvMS4xDQogSG9zdDogY3VzdG9tLnNldC5ob3N0Lm5hbWUNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmV4YW1wbGUuY29tL3BhdGgvNTQwIEhUVFAvMS4xDQogSG9zdDogY3VzdG9tLnNldC5ob3N0Lm5hbWUNCiBQcm94eS1BdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InNpbGx5IiwgcmVhbG09IndlaXJkb3JlYWxtIiwgbm9uY2U9IjEyMzQ1IiwgdXJpPSIvcGF0aC81NDAiLCByZXNwb25zZT0iY2E1MDdkY2YxODkxOTZiNmE1Mzc0ZDMyMzMwNDIyNjEiDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS9wYXRoLzU0MCBIVFRQLzEuMQ0KIEhvc3Q6IGN1c3RvbS5zZXQuaG9zdC5uYW1lDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJzaWxseSIsIHJlYWxtPSJ3ZWlyZG9yZWFsbSIsIG5vbmNlPSIxMjM0NSIsIHVyaT0iL3BhdGgvNTQwIiwgcmVzcG9uc2U9ImNhNTA3ZGNmMTg5MTk2YjZhNTM3NGQzMjMzMDQyMjYxIg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU0NyBiL3Rlc3RzL2RhdGEvdGVzdDU0NwppbmRleCBjZWUyMmM2Li43Y2YzZTkxIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NDcKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTQ3CkBAIC0xMDYsNyArMTA2LDYgQEAKIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzNg0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTE2LDcgKzExNSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC0xMjUsNyArMTIzLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU0OCBiL3Rlc3RzL2RhdGEvdGVzdDU0OAppbmRleCAzNGNmNWUyLi5lOWQyMjYyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NDgKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTQ4CkBAIC0xMDYsNyArMTA2LDYgQEAKIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzNg0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTE2LDcgKzExNSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC0xMjUsNyArMTIzLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU0OSBiL3Rlc3RzL2RhdGEvdGVzdDU0OQppbmRleCBhMjQ4ZWRiLi41OTkyNWNlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NDkKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTQ5CkBAIC01NSw3ICs1NSw2IEBACiBHRVQgZnRwOi8vd3d3LmV4YW1wbGUuY29tL21vby81NDk7dHlwZT1pIEhUVFAvMS4xDQogSG9zdDogd3d3LmV4YW1wbGUuY29tOjIxDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDxzdGRvdXQ+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NTAgYi90ZXN0cy9kYXRhL3Rlc3Q1NTAKaW5kZXggYTYwOWFhMi4uOWE3MTdlZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTUwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU1MApAQCAtNTUsNyArNTUsNiBAQAogR0VUIGZ0cDovL3d3dy5leGFtcGxlLmNvbS9tb28vNTUwO3R5cGU9YSBIVFRQLzEuMQ0KIEhvc3Q6IHd3dy5leGFtcGxlLmNvbToyMQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTUxIGIvdGVzdHMvZGF0YS90ZXN0NTUxCmluZGV4IGVkNmFlZTIuLjZkZDAxMzMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU1MQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NTEKQEAgLTgxLDcgKzgxLDYgQEAKIFBPU1QgaHR0cDovL3Rlc3QucmVtb3RlLmV4YW1wbGUuY29tL3BhdGgvNTUxIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTkwLDcgKzg5LDYgQEAKIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJzMWxseSIsIHJlYWxtPSJzb21ldGhpbmcgZnVuIHRvIHJlYWQiLCBub25jZT0iQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIsIHVyaT0iL3BhdGgvNTUxIiwgcmVzcG9uc2U9IjMzMjUyNDA3MjZmYmRhZjFlNjFmM2EwZGQ0MGI5MzBjIg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzNg0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTUyIGIvdGVzdHMvZGF0YS90ZXN0NTUyCmluZGV4IGI0NGNhMzQuLmMyMGUyMDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU1MgorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NTIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTU0IGIvdGVzdHMvZGF0YS90ZXN0NTU0CmluZGV4IGI1NWZhM2QuLmZkYmQxODYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU1NAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NTQKQEAgLTE4LDYgKzE4LDIyIEBACiANCiBoZWxsbwogPC9kYXRhPgorPGRhdGFjaGVjaz4KK0hUVFAvMS4xIDIwMCBPSw0KK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UDQorU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlIHN3c2Nsb3NlDQorQ29ubmVjdGlvbjogY2xvc2UNCitDb250ZW50LVR5cGU6IHRleHQvaHRtbA0KKw0KK2hlbGxvCitIVFRQLzEuMSAyMDAgT0sNCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVA0KK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZSBzd3NjbG9zZQ0KK0Nvbm5lY3Rpb246IGNsb3NlDQorQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCisNCitoZWxsbworPC9kYXRhY2hlY2s+CiA8L3JlcGx5PgogCiAjIENsaWVudC1zaWRlCkBAIC04MCw2ICs5NiwzNyBAQAogDQogYmxhaCBibGFoDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitQT1NUIC81NTQgSFRUUC8xLjENCitIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorQ29udGVudC1MZW5ndGg6IDczMg0KK0V4cGVjdDogMTAwLWNvbnRpbnVlDQorQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJzZW5kZmlsZSBhbHRlcm5hdGl2ZSI7IGZpbGVuYW1lPSJmaWxlIG5hbWUgMiINCisNCit0aGlzIGlzIHdoYXQgd2UgcG9zdCB0byB0aGUgc2lsbHkgd2ViIHNlcnZlcgorDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJjYWxsYmFja2RhdGEiDQorDQordGhpcyBpcyB3aGF0IHdlIHBvc3QgdG8gdGhlIHNpbGx5IHdlYiBzZXJ2ZXIKKw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iZmlsZW5hbWUiDQorDQorcG9zdGl0Mi5jDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJzdWJtaXQiDQorDQorc2VuZA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0ic29tZW5hbWUiOyBmaWxlbmFtZT0ic29tZWZpbGUudHh0Ig0KK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0KKw0KK2JsYWggYmxhaA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU1NSBiL3Rlc3RzL2RhdGEvdGVzdDU1NQppbmRleCAwZjNiYjA3Li42YzA5ZTNjIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NTUKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTU1CkBAIC0xMTUsNyArMTE1LDYgQEAKIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzNg0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTI1LDcgKzEyNCw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC0xMzQsNyArMTMyLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU1NyBiL3Rlc3RzL2RhdGEvdGVzdDU1NwppbmRleCBlZTI3OTNmLi44ZDA5NDRhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NTcKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTU3CkBAIC0zOSw2ICszOSw3IEBACiBBbGwgY3VybF9tcHJpbnRmKCkgdW5zaWduZWQgbG9uZyB0ZXN0cyBPSyEKIEFsbCBjdXJsX21wcmludGYoKSBzaWduZWQgbG9uZyB0ZXN0cyBPSyEKIEFsbCBjdXJsX21wcmludGYoKSBjdXJsX29mZl90IHRlc3RzIE9LIQorQWxsIGN1cmxfbXByaW50ZigpIHN0cmluZ3MgdGVzdHMgT0shCiA8L3N0ZG91dD4KIDwvdmVyaWZ5PgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NjEgYi90ZXN0cy9kYXRhL3Rlc3Q1NjEKaW5kZXggYTYxODhlYS4uOTA1ZTc1NiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTYxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU2MQpAQCAtNTYsNyArNTYsNiBAQAogR0VUIGZ0cDovL3d3dy5leGFtcGxlLmNvbS9tb28vNTYxO3R5cGU9aSBIVFRQLzEuMQ0KIEhvc3Q6IHd3dy5leGFtcGxlLmNvbToyMQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTYzIGIvdGVzdHMvZGF0YS90ZXN0NTYzCmluZGV4IDc4NTE1MjMuLmU0YzAwZjUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU2MworKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NjMKQEAgLTUwLDcgKzUwLDYgQEAKIEdFVCBGVFA6Ly8lSE9TVElQOiVGVFBQT1JULzU2Mzt0eXBlPUEgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVGVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTkwIGIvdGVzdHMvZGF0YS90ZXN0NTkwCmluZGV4IDU1ZWE0ZjAuLjMzNDE3NzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU5MAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1OTAKQEAgLTEwNCwyMSArMTA0LDE4IEBACiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmV4YW1wbGUuY29tL3BhdGgvNTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20vcGF0aC81OTAgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQWdBQ0FQWUFBQUFJQUFnQStBQUFBQUFBQUFBQUFBQUFCb0tCQUIzSHI2U0RuM05ETmtnZWJiYVA4OEV4TWpNME1qSXpORklXNE43YVlUNDRiQUlnMWp0MmJsVUJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWJXVmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NjEgYi90ZXN0cy9kYXRhL3Rlc3Q2MQppbmRleCBhYmM5Nzg5Li43NGI4ZjY0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q2MQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q2MQpAQCAtNjIsNyArNjIsNyBAQAogPC9wcm90b2NvbD4KIDxmaWxlIG5hbWU9ImxvZy9qYXI2MS50eHQiIG1vZGU9InRleHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogI0h0dHBPbmx5Xy5mb28uY29tCVRSVUUJL3dlL3dhbnQvCUZBTFNFCTIwNTQwMzAxODcJdGVzdAl5ZXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDYyIGIvdGVzdHMvZGF0YS90ZXN0NjIKaW5kZXggNTFiODg3MC4uYWRkMmE2YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NjIKKysrIGIvdGVzdHMvZGF0YS90ZXN0NjIKQEAgLTMzLDcgKzMzLDcgQEAKIDwvY29tbWFuZD4KIDxmaWxlIG5hbWU9ImxvZy9qYXI2Mi50eHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogI0h0dHBPbmx5Xy5mb28uY29tCVRSVUUJL3dlL3dhbnQvCUZBTFNFCTIwNTQwMzAxODcJdGVzdAl5ZXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDYzIGIvdGVzdHMvZGF0YS90ZXN0NjMKaW5kZXggY2NjMTlkZC4uMmE5NjQ0OSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NjMKKysrIGIvdGVzdHMvZGF0YS90ZXN0NjMKQEAgLTQ1LDcgKzQ1LDYgQEAKIEhvc3Q6IHdlLndhbnQudGhhdC5zaXRlLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIFptRnJaVHAxYzJWeQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDcwNiBiL3Rlc3RzL2RhdGEvdGVzdDcwNgppbmRleCAzMzBjYjIzLi5iMDUzMWU3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q3MDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0NzA2CkBAIC0xMyw3ICsxMyw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDcwNyBiL3Rlc3RzL2RhdGEvdGVzdDcwNwppbmRleCBjM2E4NjIxLi5kNGMzYWI3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q3MDcKKysrIGIvdGVzdHMvZGF0YS90ZXN0NzA3CkBAIC0xMyw3ICsxMyw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDczIGIvdGVzdHMvZGF0YS90ZXN0NzMKaW5kZXggYTIzNTQ2ZC4uNzA0MDhhOCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NzMKKysrIGIvdGVzdHMvZGF0YS90ZXN0NzMKQEAgLTQ2LDcgKzQ2LDcgQEAKIDwvcHJvdG9jb2w+CiA8ZmlsZSBuYW1lPSJsb2cvamFyNzMudHh0IiBtb2RlPSJ0ZXh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKIC5OT1RfRElTQ0xPU0VELnNlCVRSVUUJLwlGQUxTRQkwCUlQQ1pRWDAxYWYwZmNhNWMJMDAwMDEwMDA4MTY4YzIwMGQyNWRmYzRiCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q3OSBiL3Rlc3RzL2RhdGEvdGVzdDc5CmluZGV4IGIyNTY2ZTIuLjU1ZmMyNDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDc5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDc5CkBAIC00OCw3ICs0OCw2IEBACiBHRVQgZnRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2Uvd2FudC90aGF0L3BhZ2UvNzkgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDggYi90ZXN0cy9kYXRhL3Rlc3Q4CmluZGV4IDAzMGZkNTUuLmZmYzQyMWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgKKysrIGIvdGVzdHMvZGF0YS90ZXN0OApAQCAtNDEsNiArNDEsOCBAQAogU2V0LUNvb2tpZTogZHVwbGljYXRlPXRlc3Q7IGRvbWFpbj0uMC4wLjE7IGRvbWFpbj0uMC4wLjE7IHBhdGg9L2RvbmtleTsKIFNldC1Db29raWU6IGNvb2tpZT15ZXM7IHBhdGg9L3dlOwogU2V0LUNvb2tpZTogY29va2llPXBlcmhhcHM7IHBhdGg9L3dlL3dhbnQ7CitTZXQtQ29va2llOiBuYW1lIHdpdGggc3BhY2U9aXMgd2VpcmQgYnV0OyBwYXRoPS93ZS93YW50OworU2V0LUNvb2tpZTogdHJhaWxpbmdzcGFjZSAgICA9IHJlbW92ZWQ7IHBhdGg9L3dlL3dhbnQ7CiBTZXQtQ29va2llOiBub2Nvb2tpZT15ZXM7IHBhdGg9L1dFOwogU2V0LUNvb2tpZTogYmxleHA9eWVzeWVzOyBkb21haW49JUhPU1RJUDsgZG9tYWluPSVIT1NUSVA7IGV4cGlyeT10b3RhbGx5IGJhZDsKIFNldC1Db29raWU6IHBhcnRpYWxpcD1ub25vOyBkb21haW49LjAuMC4xOwpAQCAtNjAsNyArNjIsNyBAQAogR0VUIC93ZS93YW50LzggSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotQ29va2llOiBjb29raWU9cGVyaGFwczsgY29va2llPXllczsgZm9vYmFyPW5hbWU7IGJsZXhwPXllc3llcw0KK0Nvb2tpZTogY29va2llPXBlcmhhcHM7IG5hbWUgd2l0aCBzcGFjZT1pcyB3ZWlyZCBidXQ7IHRyYWlsaW5nc3BhY2U9cmVtb3ZlZDsgY29va2llPXllczsgZm9vYmFyPW5hbWU7IGJsZXhwPXllc3llcw0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDgwIGIvdGVzdHMvZGF0YS90ZXN0ODAKaW5kZXggMTQ3YTZhYS4uOGE2MzViNCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0ODAKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODAKQEAgLTY4LDcgKzY4LDYgQEAKIEhvc3Q6IHRlc3QuODA6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgZVc5MVlYSmxPbmx2ZFhKelpXeG0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNy1wcmUyIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjctcHJlMiBPcGVuU1NMLzAuOS43YSB6bGliLzEuMS4zDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8cHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MSBiL3Rlc3RzL2RhdGEvdGVzdDgxCmluZGV4IGRjMDU0ZDIuLjUzYWZmYTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgxCkBAIC04OSwxNCArODksMTIgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNi1wcmUxIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjYtcHJlMSBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzgxIEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNi1wcmUxIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjYtcHJlMSBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MiBiL3Rlc3RzL2RhdGEvdGVzdDgyCmluZGV4IDhiNThmNzUuLmRlM2ZjYmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgyCkBAIC00OSw3ICs0OSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBkR1Z6ZEhWelpYSTZkR1Z6ZEhCaGMzTT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNi1wcmUxIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjYtcHJlMSBPcGVuU1NMLzAuOS43YSBpcHY2IHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MjQgYi90ZXN0cy9kYXRhL3Rlc3Q4MjQKaW5kZXggMjQyYzFiNC4uZTY0NmVlYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0ODI0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgyNApAQCAtMzQsNyArMzQsNyBAQAogaW1hcAogPC9zZXJ2ZXI+CiAgPG5hbWU+Ci1JTUFQIE9BdXRoIDIuMCBhdXRoZW50aWNhdGlvbgorSU1BUCBPQXV0aCAyLjAgKFhPQVVUSDIpIGF1dGhlbnRpY2F0aW9uCiAgPC9uYW1lPgogIDxjb21tYW5kPgogJ2ltYXA6Ly8lSE9TVElQOiVJTUFQUE9SVC84MjQvO1VJRD0xJyAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDgyOCBiL3Rlc3RzL2RhdGEvdGVzdDgyOAppbmRleCBiMmZiNjkzLi5jODY1MTZhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4MjgKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODI4CkBAIC0zNSw3ICszNSw3IEBACiBpbWFwCiA8L3NlcnZlcj4KICA8bmFtZT4KLUlNQVAgT0F1dGggMi4wIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorSU1BUCBPQXV0aCAyLjAgKFhPQVVUSDIpIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQogIDwvbmFtZT4KICA8Y29tbWFuZD4KICdpbWFwOi8vJUhPU1RJUDolSU1BUFBPUlQvODI4LztVSUQ9MScgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MyBiL3Rlc3RzL2RhdGEvdGVzdDgzCmluZGV4IDEyMGJjYzYuLjRmZThiYTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgzCkBAIC02NCw3ICs2NCw2IEBACiBDT05ORUNUIHRlc3QuODM6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC44MzolSFRUUFBPUlQNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNy1wcmUyIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjctcHJlMiBPcGVuU1NMLzAuOS43YSB6bGliLzEuMS4zDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8cHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NCBiL3Rlc3RzL2RhdGEvdGVzdDg0CmluZGV4IDYyOWRhZTIuLmNmNjY3ZDYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDg0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg0CkBAIC00Nyw3ICs0Nyw2IEBACiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogVXNlci1BZ2VudDogY3VybC83LjEwLjctcHJlMiAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC43LXByZTIgT3BlblNTTC8wLjkuN2EgemxpYi8xLjEuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg0MSBiL3Rlc3RzL2RhdGEvdGVzdDg0MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzliZmUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODQxCkBAIC0wLDAgKzEsNTEgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSU1BUAorQ2xlYXIgVGV4dAorRkVUQ0gKK0NVU1RPTVJFUVVFU1QKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorYm9keQ0KKw0KKysgQ3VybCBkaWQgbm90IHVzZWQgdG8gbGlrZSB0aGlzIGxpbmUNCistLQ0KKyAgeW91cnMgc2luY2VyZWx5DQorPC9kYXRhPgorPGRhdGFjaGVjaz4KKyogMTIzIEZFVENIIChCT0RZWzFdIHs3MH0NCis8L2RhdGFjaGVjaz4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraW1hcAorPC9zZXJ2ZXI+CisgPG5hbWU+CitJTUFQIGN1c3RvbSByZXF1ZXN0IGRvZXNuJ3QgY2hlY2sgY29udGludWF0aW9uIGRhdGEKKyA8L25hbWU+CisgPGNvbW1hbmQ+CisgaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzg0MS8gLXUgdXNlcjpzZWNyZXQgLVggJ0ZFVENIIDEyMyBCT0RZWzFdJworPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorQTAwMSBDQVBBQklMSVRZDQorQTAwMiBMT0dJTiB1c2VyIHNlY3JldA0KK0EwMDMgU0VMRUNUIDg0MQ0KK0EwMDQgRkVUQ0ggMTIzIEJPRFlbMV0NCitBMDA1IExPR09VVA0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NDIgYi90ZXN0cy9kYXRhL3Rlc3Q4NDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4ZDVhMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg0MgpAQCAtMCwwICsxLDYyIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0lNQVAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIRU5USUNBVEUgKworUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSBBMDAyIE9LIEFVVEhFTlRJQ0FURSBjb21wbGV0ZWQKKzwvc2VydmVyY21kPgorPGRhdGE+CitGcm9tOiBtZUBzb21ld2hlcmUNCitUbzogZmFrZUBub3doZXJlDQorDQorYm9keQ0KKw0KKy0tDQorICB5b3VycyBzaW5jZXJlbHkNCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2ltYXAKKzwvc2VydmVyPgorIDxuYW1lPgorSU1BUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbgorIDwvbmFtZT4KKyA8Y29tbWFuZD4KKydpbWFwOi8vJUhPU1RJUDolSU1BUFBPUlQvODQyLztVSUQ9MScgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJUlNQVBQT1JUJyBuZSAnOTAwMycgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorQTAwMSBDQVBBQklMSVRZDQorQTAwMiBBVVRIRU5USUNBVEUgT0FVVEhCRUFSRVINCitkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd013RmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorQTAwMyBTRUxFQ1QgODQyDQorQTAwNCBGRVRDSCAxIEJPRFlbXQ0KK0EwMDUgTE9HT1VUDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg0MyBiL3Rlc3RzL2RhdGEvdGVzdDg0MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjZhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODQzCkBAIC0wLDAgKzEsNjIgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSU1BUAorU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorU0FTTC1JUgorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK0NBUEEgU0FTTC1JUgorUkVQTFkgQVVUSEVOVElDQVRFIEEwMDIgT0sgQVVUSEVOVElDQVRFIGNvbXBsZXRlZAorPC9zZXJ2ZXJjbWQ+Cis8ZGF0YT4KK0Zyb206IG1lQHNvbWV3aGVyZQ0KK1RvOiBmYWtlQG5vd2hlcmUNCisNCitib2R5DQorDQorLS0NCisgIHlvdXJzIHNpbmNlcmVseQ0KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraW1hcAorPC9zZXJ2ZXI+CisgPG5hbWU+CitJTUFQIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorIDwvbmFtZT4KKyA8Y29tbWFuZD4KKydpbWFwOi8vJUhPU1RJUDolSU1BUFBPUlQvODQzLztVSUQ9MScgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJUlNQVBQT1JUJyBuZSAnOTAwMycgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorQTAwMSBDQVBBQklMSVRZDQorQTAwMiBBVVRIRU5USUNBVEUgT0FVVEhCRUFSRVIgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0EwMDMgU0VMRUNUIDg0Mw0KK0EwMDQgRkVUQ0ggMSBCT0RZW10NCitBMDA1IExPR09VVA0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NDQgYi90ZXN0cy9kYXRhL3Rlc3Q4NDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjZDY2NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg0NApAQCAtMCwwICsxLDU5IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0lNQVAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIRU5USUNBVEUgKworUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSArIGV5SnpkR0YwZFhNaU9pSnBiblpoYkdsa1gzUnZhMlZ1SWl3aWMyTnZjR1VpT2lKbGVHRnRjR3hsWDNOamIzQmxJaXdpYjNCbGJtbGtMV052Ym1acFozVnlZWFJwYjI0aU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdVkyOXRMeTUzWld4c0xXdHViM2R1TDI5d1pXNXBaQzFqYjI1bWFXZDFjbUYwYVc5dUluMD0KK1JFUExZIEFRPT0gQTAwMiBOTyBBdXRoZW50aWNhdGlvbiBmYWlsZWQKKzwvc2VydmVyY21kPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitpbWFwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0lNQVAgT0F1dGggMi4wIChPQVVUSEJFQVJFUikgZmFpbHVyZSBhcyBjb250aW51YXRpb24KKyA8L25hbWU+CisgPGNvbW1hbmQ+CisnaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzg0NC87VUlEPTEnIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVJTUFQUE9SVCcgbmUgJzkwMDMnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgNjcgLSBDVVJMRV9MT0dJTl9ERU5JRUQKKzxlcnJvcmNvZGU+Cis2NworPC9lcnJvcmNvZGU+CisjCisjIFRoZSBtdWx0aSBpbnRlcmZhY2UgY29uc2lkZXJzIGEgYnJva2VuICJDT05ORUNUIiBhcyBhIHByZW1hdHVyZWx5IGJyb2tlbgorIyB0cmFuc2ZlciBhbmQgc3VjaCBhIGNvbm5lY3Rpb24gd2lsbCBub3QgZ2V0IGEgIkxPR09VVCIKKzxwcm90b2NvbD4KK0EwMDEgQ0FQQUJJTElUWQ0KK0EwMDIgQVVUSEVOVElDQVRFIE9BVVRIQkVBUkVSDQorZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0FRPT0NCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODQ1IGIvdGVzdHMvZGF0YS90ZXN0ODQ1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MmFiNTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NDUKQEAgLTAsMCArMSw1OSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitJTUFQCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitTQVNMLUlSCitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorQ0FQQSBTQVNMLUlSCitSRVBMWSBBVVRIRU5USUNBVEUgKyBleUp6ZEdGMGRYTWlPaUpwYm5aaGJHbGtYM1J2YTJWdUlpd2ljMk52Y0dVaU9pSmxlR0Z0Y0d4bFgzTmpiM0JsSWl3aWIzQmxibWxrTFdOdmJtWnBaM1Z5WVhScGIyNGlPaUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0THk1M1pXeHNMV3R1YjNkdUwyOXdaVzVwWkMxamIyNW1hV2QxY21GMGFXOXVJbjA9CitSRVBMWSBBUT09IEEwMDIgTk8gQXV0aGVudGljYXRpb24gZmFpbGVkCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraW1hcAorPC9zZXJ2ZXI+CisgPG5hbWU+CitJTUFQIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGZhaWx1cmUgYXMgY29udGludWF0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorIDwvbmFtZT4KKyA8Y29tbWFuZD4KKydpbWFwOi8vJUhPU1RJUDolSU1BUFBPUlQvODQ1LztVSUQ9MScgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJUlNQVBQT1JUJyBuZSAnOTAwMycgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorIyA2NyAtIENVUkxFX0xPR0lOX0RFTklFRAorPGVycm9yY29kZT4KKzY3Cis8L2Vycm9yY29kZT4KKyMKKyMgVGhlIG11bHRpIGludGVyZmFjZSBjb25zaWRlcnMgYSBicm9rZW4gIkNPTk5FQ1QiIGFzIGEgcHJlbWF0dXJlbHkgYnJva2VuCisjIHRyYW5zZmVyIGFuZCBzdWNoIGEgY29ubmVjdGlvbiB3aWxsIG5vdCBnZXQgYSAiTE9HT1VUIgorPHByb3RvY29sPgorQTAwMSBDQVBBQklMSVRZDQorQTAwMiBBVVRIRU5USUNBVEUgT0FVVEhCRUFSRVIgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0FRPT0NCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODUgYi90ZXN0cy9kYXRhL3Rlc3Q4NQppbmRleCBjYjVlNmUwLi5hMTEzNjNmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4NQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NQpAQCAtNTEsNyArNTEsNiBAQAogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC43LXByZTIgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNy1wcmUyIE9wZW5TU0wvMC45LjdhIHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NyBiL3Rlc3RzL2RhdGEvdGVzdDg3CmluZGV4IDQ4ODAzN2MuLjVlNmFlZjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDg3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg3CkBAIC01MCw3ICs1MCw3IEBACiAjIHN1cnZpdmVzCiAjCiA8dmVyaWZ5PgotPGZpbGUgbmFtZT0ibG9nL2R1bXBpdCMyLmR1bXAiIG1vZGU9InRleHQiPgorPGZpbGUgbmFtZT0ibG9nL2R1bXBpdCMyLmR1bXAiPgogSFRUUC8xLjEgMjAwIE9LDQogRnVubnktaGVhZDogeWVzeWVzDQogQ29udGVudC1MZW5ndGg6IDE2DQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODcwIGIvdGVzdHMvZGF0YS90ZXN0ODcwCmluZGV4IDg4NWI4YzEuLmY2MzMzZjcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDg3MAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NzAKQEAgLTM2LDcgKzM2LDcgQEAKIHBvcDMKIDwvc2VydmVyPgogIDxuYW1lPgotUE9QMyBPQXV0aCAyLjAgYXV0aGVudGljYXRpb24KK1BPUDMgT0F1dGggMi4wIChYT0FVVEgyKSBhdXRoZW50aWNhdGlvbgogIDwvbmFtZT4KICA8Y29tbWFuZD4KIHBvcDM6Ly8lSE9TVElQOiVQT1AzUE9SVC84NzAgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NzQgYi90ZXN0cy9kYXRhL3Rlc3Q4NzQKaW5kZXggZGUyMjFmYS4uZDEwMzBkYSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0ODc0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg3NApAQCAtMzYsNyArMzYsNyBAQAogcG9wMwogPC9zZXJ2ZXI+CiAgPG5hbWU+Ci1QT1AzIE9BdXRoIDIuMCBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKK1BPUDMgT0F1dGggMi4wIChYT0FVVEgyKSBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKICA8L25hbWU+CiAgPGNvbW1hbmQ+CiBwb3AzOi8vJUhPU1RJUDolUE9QM1BPUlQvODc0IC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtLXNhc2wtaXIKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg4NyBiL3Rlc3RzL2RhdGEvdGVzdDg4NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzlkYzIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODg3CkBAIC0wLDAgKzEsNjMgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorUE9QMworU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorUkZDMTczNAorUkZDNTAzNAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggKworUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSArT0sgTG9naW4gc3VjY2Vzc2Z1bAorPC9zZXJ2ZXJjbWQ+Cis8ZGF0YT4KK0Zyb206IG1lQHNvbWV3aGVyZQ0KK1RvOiBmYWtlQG5vd2hlcmUNCisNCitib2R5DQorDQorLS0NCisgIHlvdXJzIHNpbmNlcmVseQ0KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorcG9wMworPC9zZXJ2ZXI+CisgPG5hbWU+CitQT1AzIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGF1dGhlbnRpY2F0aW9uCisgPC9uYW1lPgorIDxjb21tYW5kPgorcG9wMzovLyVIT1NUSVA6JVBPUDNQT1JULzg4NyAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0KKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclUE9QM1BPUlQnIG5lICc5MDAxJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8cHJvdG9jb2w+CitDQVBBDQorQVVUSCBPQVVUSEJFQVJFUg0KK2RYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TVFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitSRVRSIDg4Nw0KK1FVSVQNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODg4IGIvdGVzdHMvZGF0YS90ZXN0ODg4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMzU5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4ODgKQEAgLTAsMCArMSw2MiBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitQT1AzCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitTQVNMLUlSCitSRkMxNzM0CitSRkM1MDM0CitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSCArT0sgTG9naW4gc3VjY2Vzc2Z1bAorPC9zZXJ2ZXJjbWQ+Cis8ZGF0YT4KK0Zyb206IG1lQHNvbWV3aGVyZQ0KK1RvOiBmYWtlQG5vd2hlcmUNCisNCitib2R5DQorDQorLS0NCisgIHlvdXJzIHNpbmNlcmVseQ0KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorcG9wMworPC9zZXJ2ZXI+CisgPG5hbWU+CitQT1AzIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK3BvcDM6Ly8lSE9TVElQOiVQT1AzUE9SVC84ODggLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNIC0tc2FzbC1pcgorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVQT1AzUE9SVCcgbmUgJzkwMDEnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK0NBUEENCitBVVRIIE9BVVRIQkVBUkVSIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TVFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitSRVRSIDg4OA0KK1FVSVQNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODg5IGIvdGVzdHMvZGF0YS90ZXN0ODg5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYmQwY2EKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4ODkKQEAgLTAsMCArMSw2MSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitQT1AzCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitSRkMxNzM0CitSRkM1MDM0CitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSCArCitSRVBMWSBkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd01RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09ICsgZXlKemRHRjBkWE1pT2lKcGJuWmhiR2xrWDNSdmEyVnVJaXdpYzJOdmNHVWlPaUpsZUdGdGNHeGxYM05qYjNCbElpd2liM0JsYm1sa0xXTnZibVpwWjNWeVlYUnBiMjRpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEx5NTNaV3hzTFd0dWIzZHVMMjl3Wlc1cFpDMWpiMjVtYVdkMWNtRjBhVzl1SW4wCitSRVBMWSBBUT09IC1FUlIgQXV0aGVudGljYXRpb24gZmFpbGVkCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorcG9wMworPC9zZXJ2ZXI+CisgPG5hbWU+CitQT1AzIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGZhaWx1cmUgYXMgY29udGludWF0aW9uCisgPC9uYW1lPgorIDxjb21tYW5kPgorcG9wMzovLyVIT1NUSVA6JVBPUDNQT1JULzg4OSAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0KKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclUE9QM1BPUlQnIG5lICc5MDAxJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIDY3IC0gQ1VSTEVfTE9HSU5fREVOSUVECis8ZXJyb3Jjb2RlPgorNjcKKzwvZXJyb3Jjb2RlPgorIworIyBUaGUgbXVsdGkgaW50ZXJmYWNlIGNvbnNpZGVycyBhIGJyb2tlbiAiQ09OTkVDVCIgYXMgYSBwcmVtYXR1cmVseSBicm9rZW4KKyMgdHJhbnNmZXIgYW5kIHN1Y2ggYSBjb25uZWN0aW9uIHdpbGwgbm90IGdldCBhICJRVUlUIgorPHByb3RvY29sPgorQ0FQQQ0KK0FVVEggT0FVVEhCRUFSRVINCitkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd01RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorQVE9PQ0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4OTAgYi90ZXN0cy9kYXRhL3Rlc3Q4OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM5MmRmYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg5MApAQCAtMCwwICsxLDYwIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1BPUDMKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1NBU0wtSVIKK1JGQzE3MzQKK1JGQzUwMzQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIICsgZXlKemRHRjBkWE1pT2lKcGJuWmhiR2xrWDNSdmEyVnVJaXdpYzJOdmNHVWlPaUpsZUdGdGNHeGxYM05qYjNCbElpd2liM0JsYm1sa0xXTnZibVpwWjNWeVlYUnBiMjRpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEx5NTNaV3hzTFd0dWIzZHVMMjl3Wlc1cFpDMWpiMjVtYVdkMWNtRjBhVzl1SW4wCitSRVBMWSBBUT09IC1FUlIgQXV0aGVudGljYXRpb24gZmFpbGVkCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorcG9wMworPC9zZXJ2ZXI+CisgPG5hbWU+CitQT1AzIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGZhaWx1cmUgYXMgY29udGludWF0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK3BvcDM6Ly8lSE9TVElQOiVQT1AzUE9SVC84OTAgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNIC0tc2FzbC1pcgorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVQT1AzUE9SVCcgbmUgJzkwMDEnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgNjcgLSBDVVJMRV9MT0dJTl9ERU5JRUQKKzxlcnJvcmNvZGU+Cis2NworPC9lcnJvcmNvZGU+CisjCisjIFRoZSBtdWx0aSBpbnRlcmZhY2UgY29uc2lkZXJzIGEgYnJva2VuICJDT05ORUNUIiBhcyBhIHByZW1hdHVyZWx5IGJyb2tlbgorIyB0cmFuc2ZlciBhbmQgc3VjaCBhIGNvbm5lY3Rpb24gd2lsbCBub3QgZ2V0IGEgIlFVSVQiCis8cHJvdG9jb2w+CitDQVBBDQorQVVUSCBPQVVUSEJFQVJFUiBkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd01RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorQVE9PQ0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q5MDggYi90ZXN0cy9kYXRhL3Rlc3Q5MDgKaW5kZXggYzQ3MWNiNy4uYmYwYjQ1YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0OTA4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDkwOApAQCAtMjYsNyArMjYsNyBAQAogc210cAogPC9zZXJ2ZXI+CiAgPG5hbWU+Ci1TTVRQIE9BdXRoIDIuMCBhdXRoZW50aWNhdGlvbgorU01UUCBPQXV0aCAyLjAgKFhPQVVUSDIpIGF1dGhlbnRpY2F0aW9uCiAgPC9uYW1lPgogPHN0ZGluPgogbWFpbCBib2R5DQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTIyIGIvdGVzdHMvZGF0YS90ZXN0OTIyCmluZGV4IGU5ZTBkNWYuLmFhY2Q2ODQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDkyMgorKysgYi90ZXN0cy9kYXRhL3Rlc3Q5MjIKQEAgLTI2LDcgKzI2LDcgQEAKIHNtdHAKIDwvc2VydmVyPgogIDxuYW1lPgotU01UUCBPQXV0aCAyLjAgYXV0aGVudGljYXRpb24gd2l0aCBpbml0aWFsIHJlc3BvbnNlCitTTVRQIE9BdXRoIDIuMCAoWE9BVVRIMikgYXV0aGVudGljYXRpb24gd2l0aCBpbml0aWFsIHJlc3BvbnNlCiAgPC9uYW1lPgogPHN0ZGluPgogbWFpbCBib2R5DQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTMgYi90ZXN0cy9kYXRhL3Rlc3Q5MwppbmRleCAxMzg3MjQ4Li45NDhkMjljIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q5MworKysgYi90ZXN0cy9kYXRhL3Rlc3Q5MwpAQCAtNDMsNyArNDMsNiBAQAogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC85MyBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTQgYi90ZXN0cy9kYXRhL3Rlc3Q5NAppbmRleCAyZjNmNDgyLi45NGM4OTRjIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q5NAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q5NApAQCAtNTEsNyArNTEsNiBAQAogQ09OTkVDVCB0ZXN0LmFueXRoaW5nLnJlYWxseS5jb206OTQgSFRUUC8xLjANCiBVc2VyLUFnZW50OiBjdXJsLzcuMTEuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTEuMC1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40DQogSG9zdDogdGVzdC5hbnl0aGluZy5yZWFsbHkuY29tOjk0DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDk0NiBiL3Rlc3RzL2RhdGEvdGVzdDk0NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzRiZDkxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTQ2CkBAIC0wLDAgKzEsNjIgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorU01UUAorU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorUkZDNDk1NAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggMzM0IE9BVVRIQkVBUkVSIHN1cHBvcnRlZAorUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdOUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSAyMzUgQXV0aGVudGljYXRlZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3NtdHAKKzwvc2VydmVyPgorIDxuYW1lPgorU01UUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbgorIDwvbmFtZT4KKzxzdGRpbj4KK21haWwgYm9keQ0KKzwvc3RkaW4+CisgPGNvbW1hbmQ+CitzbXRwOi8vJUhPU1RJUDolU01UUFBPUlQvOTQ2IC0tbWFpbC1yY3B0IHJlY2lwaWVudEBleGFtcGxlLmNvbSAtLW1haWwtZnJvbSBzZW5kZXJAZXhhbXBsZS5jb20gLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNIC1UIC0KKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclU01UUFBPUlQnIG5lICc5MDA1JyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8cHJvdG9jb2w+CitFSExPIDk0Ng0KK0FVVEggT0FVVEhCRUFSRVINCitkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd05RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorTUFJTCBGUk9NOjxzZW5kZXJAZXhhbXBsZS5jb20+DQorUkNQVCBUTzo8cmVjaXBpZW50QGV4YW1wbGUuY29tPg0KK0RBVEENCitRVUlUDQorPC9wcm90b2NvbD4KKzx1cGxvYWQ+CittYWlsIGJvZHkNCisuDQorPC91cGxvYWQ+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q5NDcgYi90ZXN0cy9kYXRhL3Rlc3Q5NDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM2NDhhNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDk0NwpAQCAtMCwwICsxLDYxIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1NNVFAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1NBU0wtSVIKK1JGQzQ5NTQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIIDIzNSBBdXRoZW50aWNhdGVkCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorc210cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitTTVRQIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorIDwvbmFtZT4KKzxzdGRpbj4KK21haWwgYm9keQ0KKzwvc3RkaW4+CisgPGNvbW1hbmQ+CitzbXRwOi8vJUhPU1RJUDolU01UUFBPUlQvOTQ3IC0tbWFpbC1yY3B0IHJlY2lwaWVudEBleGFtcGxlLmNvbSAtLW1haWwtZnJvbSBzZW5kZXJAZXhhbXBsZS5jb20gLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNIC0tc2FzbC1pciAtVCAtCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJVNNVFBQT1JUJyBuZSAnOTAwNScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorRUhMTyA5NDcNCitBVVRIIE9BVVRIQkVBUkVSIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TlFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitNQUlMIEZST006PHNlbmRlckBleGFtcGxlLmNvbT4NCitSQ1BUIFRPOjxyZWNpcGllbnRAZXhhbXBsZS5jb20+DQorREFUQQ0KK1FVSVQNCis8L3Byb3RvY29sPgorPHVwbG9hZD4KK21haWwgYm9keQ0KKy4NCis8L3VwbG9hZD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDk0OCBiL3Rlc3RzL2RhdGEvdGVzdDk0OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWJiNDFhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTQ4CkBAIC0wLDAgKzEsNjMgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorU01UUAorU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorUkZDNDk1NAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggMzM0IE9BVVRIQkVBUkVSIHN1cHBvcnRlZAorUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdOUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSAzMzQgZXlKemRHRjBkWE1pT2lKcGJuWmhiR2xrWDNSdmEyVnVJaXdpYzJOdmNHVWlPaUpsZUdGdGNHeGxYM05qYjNCbElpd2liM0JsYm1sa0xXTnZibVpwWjNWeVlYUnBiMjRpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEx5NTNaV3hzTFd0dWIzZHVMMjl3Wlc1cFpDMWpiMjVtYVdkMWNtRjBhVzl1SW4wCitSRVBMWSBBUT09IDUzNSBVc2VybmFtZSBhbmQgUGFzc3dvcmQgbm90IGFjY2VwdGVkLiBMZWFybiBtb3JlIGF0XHJcbjUzNSBodHRwOi8vc3VwcG9ydC5leGFtcGxlLmNvbS9tYWlsL29hdXRoCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyN2aQorIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitzbXRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK1NNVFAgT0F1dGggMi4wIChPQVVUSEJFQVJFUikgZmFpbHVyZSBhcyBjb250aW51YXRpb24KKyA8L25hbWU+Cis8c3RkaW4+CittYWlsIGJvZHkNCis8L3N0ZGluPgorIDxjb21tYW5kPgorc210cDovLyVIT1NUSVA6JVNNVFBQT1JULzk0OCAtLW1haWwtcmNwdCByZWNpcGllbnRAZXhhbXBsZS5jb20gLS1tYWlsLWZyb20gc2VuZGVyQGV4YW1wbGUuY29tIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtVCAtCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJVNNVFBQT1JUJyBuZSAnOTAwNScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorIyA2NyAtIENVUkxFX0xPR0lOX0RFTklFRAorPGVycm9yY29kZT4KKzY3Cis8L2Vycm9yY29kZT4KKyMKKyMgVGhlIG11bHRpIGludGVyZmFjZSBjb25zaWRlcnMgYSBicm9rZW4gIkNPTk5FQ1QiIGFzIGEgcHJlbWF0dXJlbHkgYnJva2VuCisjIHRyYW5zZmVyIGFuZCBzdWNoIGEgY29ubmVjdGlvbiB3aWxsIG5vdCBnZXQgYSAiUVVJVCIKKzxwcm90b2NvbD4KK0VITE8gOTQ4DQorQVVUSCBPQVVUSEJFQVJFUg0KK2RYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TlFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitBUT09DQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDk0OSBiL3Rlc3RzL2RhdGEvdGVzdDk0OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODRjNDJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTQ5CkBAIC0wLDAgKzEsNjIgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorU01UUAorU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorU0FTTC1JUgorUkZDNDk1NAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggMzM0IGV5SnpkR0YwZFhNaU9pSnBiblpoYkdsa1gzUnZhMlZ1SWl3aWMyTnZjR1VpT2lKbGVHRnRjR3hsWDNOamIzQmxJaXdpYjNCbGJtbGtMV052Ym1acFozVnlZWFJwYjI0aU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdVkyOXRMeTUzWld4c0xXdHViM2R1TDI5d1pXNXBaQzFqYjI1bWFXZDFjbUYwYVc5dUluMAorUkVQTFkgQVE9PSA1MzUgVXNlcm5hbWUgYW5kIFBhc3N3b3JkIG5vdCBhY2NlcHRlZC4gTGVhcm4gbW9yZSBhdFxyXG41MzUgaHR0cDovL3N1cHBvcnQuZXhhbXBsZS5jb20vbWFpbC9vYXV0aAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3NtdHAKKzwvc2VydmVyPgorIDxuYW1lPgorU01UUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBmYWlsdXJlIGFzIGNvbnRpbnVhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+Cis8c3RkaW4+CittYWlsIGJvZHkNCis8L3N0ZGluPgorIDxjb21tYW5kPgorc210cDovLyVIT1NUSVA6JVNNVFBQT1JULzk0OSAtLW1haWwtcmNwdCByZWNpcGllbnRAZXhhbXBsZS5jb20gLS1tYWlsLWZyb20gc2VuZGVyQGV4YW1wbGUuY29tIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtLXNhc2wtaXIgLVQgLQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVTTVRQUE9SVCcgbmUgJzkwMDUnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgNjcgLSBDVVJMRV9MT0dJTl9ERU5JRUQKKzxlcnJvcmNvZGU+Cis2NworPC9lcnJvcmNvZGU+CisjCisjIFRoZSBtdWx0aSBpbnRlcmZhY2UgY29uc2lkZXJzIGEgYnJva2VuICJDT05ORUNUIiBhcyBhIHByZW1hdHVyZWx5IGJyb2tlbgorIyB0cmFuc2ZlciBhbmQgc3VjaCBhIGNvbm5lY3Rpb24gd2lsbCBub3QgZ2V0IGEgIlFVSVQiCis8cHJvdG9jb2w+CitFSExPIDk0OQ0KK0FVVEggT0FVVEhCRUFSRVIgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdOUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0FRPT0NCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTUgYi90ZXN0cy9kYXRhL3Rlc3Q5NQppbmRleCAxY2Q4OGFjLi4yYjNlMmMyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q5NQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q5NQpAQCAtNjQsNyArNjQsNiBAQAogQ09OTkVDVCB0ZXN0Ljk1OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC43LXByZTIgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNy1wcmUyIE9wZW5TU0wvMC45LjdhIHpsaWIvMS4xLjMNCiBIb3N0OiB0ZXN0Ljk1OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sIG5vbmV3bGluZT0ieWVzIj4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RpcmVjdG9yaWVzLnBtIGIvdGVzdHMvZGlyZWN0b3JpZXMucG0KaW5kZXggNmNiYjk2My4uZTMzMjdjMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGlyZWN0b3JpZXMucG0KKysrIGIvdGVzdHMvZGlyZWN0b3JpZXMucG0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4dGVybi1zY2FuLnBsIGIvdGVzdHMvZXh0ZXJuLXNjYW4ucGwKaW5kZXggNDlkMGM4Ni4uN2E1YzI5MSAxMDA3NTUKLS0tIGEvdGVzdHMvZXh0ZXJuLXNjYW4ucGwKKysrIGIvdGVzdHMvZXh0ZXJuLXNjYW4ucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvZnRwLnBtIGIvdGVzdHMvZnRwLnBtCmluZGV4IDJlMTI1ZTIuLmY0YTRhY2UgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2Z0cC5wbQorKysgYi90ZXN0cy9mdHAucG0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2Z0cHNlcnZlci5wbCBiL3Rlc3RzL2Z0cHNlcnZlci5wbAppbmRleCA0ODA3YTFmLi4wMWE3ZGY4IDEwMDc1NQotLS0gYS90ZXN0cy9mdHBzZXJ2ZXIucGwKKysrIGIvdGVzdHMvZnRwc2VydmVyLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHBhcnQucG0gYi90ZXN0cy9nZXRwYXJ0LnBtCmluZGV4IDA3MjljZjQuLjUxOThiNWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dldHBhcnQucG0KKysrIGIvdGVzdHMvZ2V0cGFydC5wbQpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvaHR0cF9waXBlLnB5IGIvdGVzdHMvaHR0cF9waXBlLnB5CmluZGV4IDE5ZWJlYzcuLmJjMzIxNzMgMTAwNzU1Ci0tLSBhL3Rlc3RzL2h0dHBfcGlwZS5weQorKysgYi90ZXN0cy9odHRwX3BpcGUucHkKQEAgLTYsNyArNiw3IEBACiAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKQEAgLTM0LDExICszNCwxMSBAQAogSXQgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIGlmIEdvb2dsZSdzIEhUVFAgcGlwZWxpbmluZyB0ZXN0IHNlcnZlci4gTW9yZQogaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6CiAKLWh0dHA6Ly9kZXYuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy9uZXR3b3JrLXN0YWNrL2h0dHAtcGlwZWxpbmluZworaHR0cHM6Ly9kZXYuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvZGVzaWduLWRvY3VtZW50cy9uZXR3b3JrLXN0YWNrL2h0dHAtcGlwZWxpbmluZwogCiBTb3VyY2UgY29kZSBjYW4gYmUgZm91bmQgaGVyZToKIAotaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2h0dHAtcGlwZWxpbmluZy10ZXN0LworaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vYXJjaGl2ZS9wL2h0dHAtcGlwZWxpbmluZy10ZXN0LwogJycnCiBNQVhfUkVRVUVTVF9TSVpFID0gMTAyNCAgIyBieXRlcwogTUlOX1BPTExfVElNRSA9IDAuMDEgICMgc2Vjb25kcy4gTWluaW11bSB0aW1lIHRvIHBvbGwsIGluIG9yZGVyIHRvIHByZXZlbnQKZGlmZiAtLWdpdCBhL3Rlc3RzL2h0dHBzZXJ2ZXIucGwgYi90ZXN0cy9odHRwc2VydmVyLnBsCmluZGV4IGI2MGRhZGMuLjBiZTU2NjcgMTAwNzU1Ci0tLSBhL3Rlc3RzL2h0dHBzZXJ2ZXIucGwKKysrIGIvdGVzdHMvaHR0cHNlcnZlci5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9rZXl3b3Jkcy5wbCBiL3Rlc3RzL2tleXdvcmRzLnBsCmluZGV4IGM2MWRmNzcuLjMzNzQ4YmQgMTAwNzU1Ci0tLSBhL3Rlc3RzL2tleXdvcmRzLnBsCisrKyBiL3Rlc3RzL2tleXdvcmRzLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvLmdpdGlnbm9yZSBiL3Rlc3RzL2xpYnRlc3QvLmdpdGlnbm9yZQppbmRleCBjMzNhNmQyLi5hYjhiOGRiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0Ly5naXRpZ25vcmUKKysrIGIvdGVzdHMvbGlidGVzdC8uZ2l0aWdub3JlCkBAIC0xLDcgKzEsNyBAQAogY2hraG9zdG5hbWUKLWxpYjVbMC05XVswLTldCiBsaWIxNVswLTldWzAtOV0KIGxpYjE5WzAtOV1bMC05XQogbGliMjAzMworbGliNVswLTldWzAtOV0KIGxpYmF1dGhyZXRyeQogbGlibnRsbWNvbm5lY3QKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuYW0gYi90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmFtCmluZGV4IDgwNzA3YjEuLjgyNmIzZDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvbGlidGVzdC9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsNyArNTEsNyBAQAogZW5kaWYKIAogRVhUUkFfRElTVCA9IHRlc3Q3NS5wbCB0ZXN0MzA3LnBsIHRlc3Q2MTAucGwgdGVzdDYxMy5wbCB0ZXN0MTAxMy5wbAlcCi10ZXN0MTAyMi5wbCBNYWtlZmlsZS5pbmMgbm90ZXhpc3RzLnBsCit0ZXN0MTAyMi5wbCBNYWtlZmlsZS5pbmMgbm90ZXhpc3RzLnBsIENNYWtlTGlzdHMudHh0CiAKIENGTEFHX0NVUkxfU1lNQk9MX0hJRElORyA9IEBDRkxBR19DVVJMX1NZTUJPTF9ISURJTkdACiAKQEAgLTYyLDggKzYyLDggQEAKIFNVUFBPUlRGSUxFU19MSUJTID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJjdXJsLmxhIEBMSUJDVVJMX0xJQlNACiBURVNUVVRJTF9MSUJTID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJjdXJsLmxhIEBMSUJDVVJMX0xJQlNACiBlbHNlCi1TVVBQT1JURklMRVNfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBAQ1VSTF9ORVRXT1JLX0xJQlNACi1URVNUVVRJTF9MSUJTID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJjdXJsLmxhIEBDVVJMX05FVFdPUktfQU5EX1RJTUVfTElCU0AKK1NVUFBPUlRGSUxFU19MSUJTID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJjdXJsLmxhIEBDVVJMX05FVFdPUktfTElCU0AgQE5TU19MSUJTQAorVEVTVFVUSUxfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBAQ1VSTF9ORVRXT1JLX0FORF9USU1FX0xJQlNAIEBOU1NfTElCU0AKIGVuZGlmCiAKICMgRGVwZW5kZW5jaWVzIChtYXkgbmVlZCB0byBiZSBvdmVycmlkZW4pCkBAIC0xMTUsMyArMTE1LDYgQEAKIAogbGliaG9zdG5hbWVfbGFfTElCQUREID0KIGxpYmhvc3RuYW1lX2xhX0RFUEVOREVOQ0lFUyA9CisKK2NoZWNrc3JjOgorCUBQRVJMQCAkKHRvcF9zcmNkaXIpL2xpYi9jaGVja3NyYy5wbCAkKHNyY2RpcikvKi5jCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmluYyBiL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuaW5jCmluZGV4IDc4ZDUzMTMuLjdhZTY2ZDcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuaW5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuaW5jCkBAIC0yMSw5ICsyMSw5IEBACiAgbGliNTcxIGxpYjU3MiBsaWI1NzMgbGliNTc0IGxpYjU3NSBsaWI1NzYgICAgICAgIGxpYjU3OCBsaWI1NzkgbGliNTgyICAgXAogIGxpYjU4MyBsaWI1ODUgbGliNTg2IGxpYjU4NyAgICAgICAgbGliNTkwIGxpYjU5MSBsaWI1OTcgbGliNTk4IGxpYjU5OSAgIFwKICBsaWIxNTAwIGxpYjE1MDEgbGliMTUwMiBsaWIxNTAzIGxpYjE1MDQgbGliMTUwNSBsaWIxNTA2IGxpYjE1MDcgbGliMTUwOCBcCi0gbGliMTUwOSBsaWIxNTEwIGxpYjE1MTEgbGliMTUxMiBsaWIxNTEzIGxpYjE1MTQgbGliMTUxNSBcCisgbGliMTUwOSBsaWIxNTEwIGxpYjE1MTEgbGliMTUxMiBsaWIxNTEzIGxpYjE1MTQgbGliMTUxNSAgICAgICAgIGxpYjE1MTcgXAogIGxpYjE1MjAgXAotIGxpYjE1MjUgbGliMTUyNiBsaWIxNTI3IGxpYjE1MjggbGliMTUyOSBsaWIxNTMwIFwKKyBsaWIxNTI1IGxpYjE1MjYgbGliMTUyNyBsaWIxNTI4IGxpYjE1MjkgbGliMTUzMCBsaWIxNTMxIFwKICBsaWIxOTAwIFwKICBsaWIyMDMzCiAKQEAgLTM1Nyw2ICszNTcsOSBAQAogbGliMTUxNV9MREFERCA9ICQoVEVTVFVUSUxfTElCUykKIGxpYjE1MTVfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRExJQjE1MTUKIAorbGliMTUxN19TT1VSQ0VTID0gbGliMTUxNy5jICQoU1VQUE9SVEZJTEVTKQorbGliMTUxN19DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1ETElCMTUxNworCiBsaWIxNTIwX1NPVVJDRVMgPSBsaWIxNTIwLmMgJChTVVBQT1JURklMRVMpCiBsaWIxNTIwX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURMSUIxNTIwCiAKQEAgLTM4NCw2ICszODcsMTAgQEAKIGxpYjE1MzBfTERBREQgPSAkKFRFU1RVVElMX0xJQlMpCiBsaWIxNTMwX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURMSUIxNTMwCiAKK2xpYjE1MzFfU09VUkNFUyA9IGxpYjE1MzEuYyAkKFNVUFBPUlRGSUxFUykgJChURVNUVVRJTCkgJChXQVJOTEVTUykKK2xpYjE1MzFfTERBREQgPSAkKFRFU1RVVElMX0xJQlMpCitsaWIxNTMxX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURMSUIxNTMxCisKIGxpYjE5MDBfU09VUkNFUyA9IGxpYjE5MDAuYyAkKFNVUFBPUlRGSUxFUykgJChURVNUVVRJTCkgJChXQVJOTEVTUykKIGxpYjE5MDBfTERBREQgPSAkKFRFU1RVVElMX0xJQlMpCiBsaWIxOTAwX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvY2hraG9zdG5hbWUuYyBiL3Rlc3RzL2xpYnRlc3QvY2hraG9zdG5hbWUuYwppbmRleCAxNjgyOTRhLi43OWUzODJiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2Noa2hvc3RuYW1lLmMKKysrIGIvdGVzdHMvbGlidGVzdC9jaGtob3N0bmFtZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogICBjaGFyIGJ1ZmZbSE9TVE5BTUVfTUFYXTsKLSAgaWYgKGFyZ2MgIT0gMikgeworICBpZihhcmdjICE9IDIpIHsKICAgICBwcmludGYoIlVzYWdlOiAlcyBFWFBFQ1RFRF9IT1NUTkFNRVxuIiwgYXJndlswXSk7CiAgICAgcmV0dXJuIDE7CiAgIH0KIAotICBpZiAoQ3VybF9nZXRob3N0bmFtZShidWZmLCBIT1NUTkFNRV9NQVgpKSB7CisgIGlmKEN1cmxfZ2V0aG9zdG5hbWUoYnVmZiwgSE9TVE5BTUVfTUFYKSkgewogICAgIHByaW50ZigiQ3VybF9nZXRob3N0bmFtZSgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIDE7CiAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvZmlyc3QuYyBiL3Rlc3RzL2xpYnRlc3QvZmlyc3QuYwppbmRleCAwZWFkMzlkLi4yMzFhZTM2IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2ZpcnN0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9maXJzdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNiArMzMsMTAgQEAKICMgIGluY2x1ZGUgPGZjbnRsLmg+IC8qIGZvciBzZXRtb2RlKCkgKi8KICNlbmRpZgogCisjaWZkZWYgVVNFX05TUworI2luY2x1ZGUgPG5zcHIuaD4KKyNlbmRpZgorCiAjaWZkZWYgQ1VSTERFQlVHCiAjICBkZWZpbmUgTUVNREVCVUdfTk9ERUZJTkVTCiAjICBpbmNsdWRlICJtZW1kZWJ1Zy5oIgpAQCAtNTIsNyArNTYsNyBAQAogICAgKiBzZWxlY3QoKSBjYW4gbm90IGJlIHVzZWQgdG8gc2xlZXAgd2l0aG91dCBhIHNpbmdsZSBmZF9zZXQuCiAgICAqLwogICBpZighbmZkcykgewotICAgIFNsZWVwKDEwMDAqdHYtPnR2X3NlYyArIHR2LT50dl91c2VjLzEwMDApOworICAgIFNsZWVwKCgxMDAwKnR2LT50dl9zZWMpICsgKERXT1JEKSgoKGRvdWJsZSl0di0+dHZfdXNlYykvMTAwMC4wKSk7CiAgICAgcmV0dXJuIDA7CiAgIH0KICNlbmRpZgpAQCAtNjUsNyArNjksNyBAQAogICB0LnR2X3NlYyA9IG1zLzEwMDA7CiAgIG1zIC09IChpbnQpdC50dl9zZWMgKiAxMDAwOwogICB0LnR2X3VzZWMgPSBtcyAqIDEwMDA7Ci0gIHNlbGVjdF93cmFwcGVyKDAsIE5VTEwsIE5VTEwgLCBOVUxMLCAmdCk7CisgIHNlbGVjdF93cmFwcGVyKDAsIE5VTEwsIE5VTEwsIE5VTEwsICZ0KTsKIH0KIAogY2hhciAqbGlidGVzdF9hcmcyPU5VTEw7CkBAIC0xMjgsNiArMTMyLDcgQEAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgY2hhciAqVVJMOworICBpbnQgcmVzdWx0OwogCiAjaWZkZWYgT19CSU5BUlkKICMgIGlmZGVmIF9fSElHSENfXwpAQCAtMTQ4LDcgKzE1Myw3IEBACiAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKICNlbmRpZgogCi0gIGlmKGFyZ2M8IDIgKSB7CisgIGlmKGFyZ2M8IDIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhc3MgVVJMIGFzIGFyZ3VtZW50IHBsZWFzZVxuIik7CiAgICAgcmV0dXJuIDE7CiAgIH0KQEAgLTE2Niw1ICsxNzEsMTMgQEAKIAogICBmcHJpbnRmKHN0ZGVyciwgIlVSTDogJXNcbiIsIFVSTCk7CiAKLSAgcmV0dXJuIHRlc3QoVVJMKTsKKyAgcmVzdWx0ID0gdGVzdChVUkwpOworCisjaWZkZWYgVVNFX05TUworICBpZihQUl9Jbml0aWFsaXplZCgpKQorICAgIC8qIHByZXZlbnQgdmFsZ3JpbmQgZnJvbSByZXBvcnRpbmcgcG9zc2libHkgbG9zdCBtZW1vcnkgKGZkIGNhY2hlLCAuLi4pICovCisgICAgUFJfQ2xlYW51cCgpOworI2VuZGlmCisKKyAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwMC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTAwLmMKaW5kZXggMDhiOTE3Zi4uZjNjNDk1OCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTAwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTAwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw3ICs1Niw3IEBACiAgIHdoaWxlKHN0aWxsX3J1bm5pbmcpIHsKICAgICBpbnQgbnVtOwogICAgIHJlcyA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aSwgTlVMTCwgMCwgVEVTVF9IQU5HX1RJTUVPVVQsICZudW0pOwotICAgIGlmIChyZXMgIT0gQ1VSTE1fT0spIHsKKyAgICBpZihyZXMgIT0gQ1VSTE1fT0spIHsKICAgICAgIHByaW50ZigiY3VybF9tdWx0aV93YWl0KCkgcmV0dXJuZWQgJWRcbiIsIHJlcyk7CiAgICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICAgICBnb3RvIHRlc3RfY2xlYW51cDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwMS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTAxLmMKaW5kZXggMDFhMzgyZS4uY2M0NDJiNSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTAxLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTAxLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MSw3ICs0MSw3IEBACiAKICAgcmVzdWx0ID0gKGFmdGVyLT50dl9zZWMgLSBiZWZvcmUtPnR2X3NlYykgKiAxMDAwMDAwICsKICAgICBhZnRlci0+dHZfdXNlYyAtIGJlZm9yZS0+dHZfdXNlYzsKLSAgaWYgKHJlc3VsdCA8IDApCisgIGlmKHJlc3VsdCA8IDApCiAgICAgcmVzdWx0ID0gMDsKIAogICByZXR1cm4gY3VybHhfc3p0b3NpKHJlc3VsdCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDIuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMi5jCmluZGV4IDJiNTBjNDcuLmU0ZTFhMTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwMi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsNyArNTEsOCBAQAogICAvKiBETlMgY2FjaGUgaW5qZWN0aW9uICovCiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpkbnNfY2FjaGVfbGlzdDsKIAotICBzcHJpbnRmKHJlZGlyZWN0LCAiZ29vZ2xlLmNvbTolczolcyIsIGxpYnRlc3RfYXJnMiwgbGlidGVzdF9hcmczKTsKKyAgc25wcmludGYocmVkaXJlY3QsIHNpemVvZihyZWRpcmVjdCksICJnb29nbGUuY29tOiVzOiVzIiwgbGlidGVzdF9hcmcyLAorICAgICAgICAgICBsaWJ0ZXN0X2FyZzMpOwogCiAgIHN0YXJ0X3Rlc3RfdGltaW5nKCk7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwNi5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTA2LmMKaW5kZXggYjYxYzRkYi4uNDdmYzMzNSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTA2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTA2LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDYsNyArNDYsOCBAQAogCiAgIC8qIENyZWF0ZSBmYWtlIEROUyBlbnRyaWVzIGZvciBzZXJ2ZXJYLmV4YW1wbGUuY29tIGZvciBhbGwgaGFuZGxlcyAqLwogICBmb3IoaT0wOyBpIDwgTlVNX0hBTkRMRVM7IGkrKykgewotICAgIHNwcmludGYoZG5zZW50cnksICJzZXJ2ZXIlZC5leGFtcGxlLmNvbTolczolcyIsIGkgKyAxLCBwb3J0LCBhZGRyZXNzKTsKKyAgICBzbnByaW50ZihkbnNlbnRyeSwgc2l6ZW9mKGRuc2VudHJ5KSwgInNlcnZlciVkLmV4YW1wbGUuY29tOiVzOiVzIiwKKyAgICAgICAgICAgICBpICsgMSwgcG9ydCwgYWRkcmVzcyk7CiAgICAgcHJpbnRmKCIlc1xuIiwgZG5zZW50cnkpOwogICAgIHNsaXN0MiA9IGN1cmxfc2xpc3RfYXBwZW5kKHNsaXN0LCBkbnNlbnRyeSk7CiAgICAgaWYoIXNsaXN0MikgewpAQCAtNjksOCArNzAsOSBAQAogICAgIC8qIGdldCBhbiBlYXN5IGhhbmRsZSAqLwogICAgIGVhc3lfaW5pdChjdXJsW2ldKTsKICAgICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICAgIHNwcmludGYodGFyZ2V0X3VybCwgImh0dHA6Ly9zZXJ2ZXIlZC5leGFtcGxlLmNvbTolcy9wYXRoLzE1MDYlMDRpIiwKLSAgICAgICAgICAgIGkgKyAxLCBwb3J0LCBpICsgMSk7CisgICAgc25wcmludGYodGFyZ2V0X3VybCwgc2l6ZW9mKHRhcmdldF91cmwpLAorICAgICAgICAgICAgICJodHRwOi8vc2VydmVyJWQuZXhhbXBsZS5jb206JXMvcGF0aC8xNTA2JTA0aSIsCisgICAgICAgICAgICAgaSArIDEsIHBvcnQsIGkgKyAxKTsKICAgICB0YXJnZXRfdXJsW3NpemVvZih0YXJnZXRfdXJsKSAtIDFdID0gJ1wwJzsKICAgICBlYXN5X3NldG9wdChjdXJsW2ldLCBDVVJMT1BUX1VSTCwgdGFyZ2V0X3VybCk7CiAgICAgLyogZ28gdmVyYm9zZSAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTA3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDcuYwppbmRleCA1YmI2MWIzLi41YTc5OTRlIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTEzNyw3ICsxMzcsNyBAQAogCiAgICAgcmMgPSBzZWxlY3QobWF4ZmQrMSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAmdGltZW91dCk7CiAKLSAgICBpZiAodHZkaWZmKHR2bm93KCksIG1wX3N0YXJ0KSA+IE1VTFRJX1BFUkZPUk1fSEFOR19USU1FT1VUKSB7CisgICAgaWYodHZkaWZmKHR2bm93KCksIG1wX3N0YXJ0KSA+IE1VTFRJX1BFUkZPUk1fSEFOR19USU1FT1VUKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkFCT1JUSU5HIFRFU1QsIHNpbmNlIGl0IHNlZW1zICIKICAgICAgICAgICAgICAgInRoYXQgaXQgd291bGQgaGF2ZSBydW4gZm9yZXZlci5cbiIpOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDguYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwOC5jCmluZGV4IDcyZjI2ZDEuLmY1MzY0MjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwOC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwOC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwOS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTA5LmMKaW5kZXggZjY3YzdkNi4uZGY0MjhhMCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTA5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTA5LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTEwLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTAuYwppbmRleCBkMTlhN2I1Li4yNWU5ZmVkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00NCw3ICs0NCw4IEBACiAKICAgLyogQ3JlYXRlIGZha2UgRE5TIGVudHJpZXMgZm9yIHNlcnZlclguZXhhbXBsZS5jb20gZm9yIGFsbCBoYW5kbGVzICovCiAgIGZvcihpPTA7IGkgPCBOVU1fVVJMUzsgaSsrKSB7Ci0gICAgc3ByaW50ZihkbnNlbnRyeSwgInNlcnZlciVkLmV4YW1wbGUuY29tOiVzOiVzIiwgaSArIDEsIHBvcnQsIGFkZHJlc3MpOworICAgIHNucHJpbnRmKGRuc2VudHJ5LCBzaXplb2YoZG5zZW50cnkpLCAic2VydmVyJWQuZXhhbXBsZS5jb206JXM6JXMiLCBpICsgMSwKKyAgICAgICAgICAgICBwb3J0LCBhZGRyZXNzKTsKICAgICBwcmludGYoIiVzXG4iLCBkbnNlbnRyeSk7CiAgICAgc2xpc3QyID0gY3VybF9zbGlzdF9hcHBlbmQoc2xpc3QsIGRuc2VudHJ5KTsKICAgICBpZighc2xpc3QyKSB7CkBAIC03Myw4ICs3NCw5IEBACiAgIC8qIGdldCBOVU1fSEFORExFUyBlYXN5IGhhbmRsZXMgKi8KICAgZm9yKGk9MDsgaSA8IE5VTV9VUkxTOyBpKyspIHsKICAgICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICAgIHNwcmludGYodGFyZ2V0X3VybCwgImh0dHA6Ly9zZXJ2ZXIlZC5leGFtcGxlLmNvbTolcy9wYXRoLzE1MTAlMDRpIiwKLSAgICAgICAgICAgIGkgKyAxLCBwb3J0LCBpICsgMSk7CisgICAgc25wcmludGYodGFyZ2V0X3VybCwgc2l6ZW9mKHRhcmdldF91cmwpLAorICAgICAgICAgICAgICJodHRwOi8vc2VydmVyJWQuZXhhbXBsZS5jb206JXMvcGF0aC8xNTEwJTA0aSIsCisgICAgICAgICAgICAgaSArIDEsIHBvcnQsIGkgKyAxKTsKICAgICB0YXJnZXRfdXJsW3NpemVvZih0YXJnZXRfdXJsKSAtIDFdID0gJ1wwJzsKICAgICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgdGFyZ2V0X3VybCk7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxMS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTExLmMKaW5kZXggYTQ2ZjlhYi4uYmVjMzE2NyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTExLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTExLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTEyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTIuYwppbmRleCA4NjM3MmFhLi5mNDA5MWI0IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgTGludXMgTmllbHNlbiBGZWx0emluZyA8bGludXNAaGF4eC5zZT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcgPGxpbnVzQGhheHguc2U+CiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDksNyArNDksOCBAQAogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBzcHJpbnRmKGRuc2VudHJ5LCAic2VydmVyLmV4YW1wbGUuY3VybDolczolcyIsIHBvcnQsIGFkZHJlc3MpOworICBzbnByaW50ZihkbnNlbnRyeSwgc2l6ZW9mKGRuc2VudHJ5KSwgInNlcnZlci5leGFtcGxlLmN1cmw6JXM6JXMiLAorICAgICAgICAgICBwb3J0LCBhZGRyZXNzKTsKICAgcHJpbnRmKCIlc1xuIiwgZG5zZW50cnkpOwogICBzbGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kKHNsaXN0LCBkbnNlbnRyeSk7CiAKQEAgLTU4LDggKzU5LDkgQEAKICAgICAvKiBnZXQgYW4gZWFzeSBoYW5kbGUgKi8KICAgICBlYXN5X2luaXQoY3VybFtpXSk7CiAgICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgICBzcHJpbnRmKHRhcmdldF91cmwsICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY3VybDolcy9wYXRoLzE1MTIlMDRpIiwKLSAgICAgICAgICAgIHBvcnQsIGkgKyAxKTsKKyAgICBzbnByaW50Zih0YXJnZXRfdXJsLCBzaXplb2YodGFyZ2V0X3VybCksCisgICAgICAgICAgICAgImh0dHA6Ly9zZXJ2ZXIuZXhhbXBsZS5jdXJsOiVzL3BhdGgvMTUxMiUwNGkiLAorICAgICAgICAgICAgIHBvcnQsIGkgKyAxKTsKICAgICB0YXJnZXRfdXJsW3NpemVvZih0YXJnZXRfdXJsKSAtIDFdID0gJ1wwJzsKICAgICBlYXN5X3NldG9wdChjdXJsW2ldLCBDVVJMT1BUX1VSTCwgdGFyZ2V0X3VybCk7CiAgICAgLyogZ28gdmVyYm9zZSAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTEzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTMuYwppbmRleCBhZWZiNTc3Li5kMDEyM2YxIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQxLDYgKzQxLDcgQEAKICAgKHZvaWQpZGxub3c7CiAgICh2b2lkKXVsdG90YWw7CiAgICh2b2lkKXVsbm93OworICBwcmludGYoIlBST0dSRVNTRlVOQ1RJT04gY2FsbGVkXG4iKTsKICAgcmV0dXJuIDE7CiB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxNC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTE0LmMKaW5kZXggZWM4ZjhhMy4uYjRhYjlkYyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTE0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTE0LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTE1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTUuYwppbmRleCBkNWM4ZjdkLi4yZmQxOWJiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTUuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM5LDcgKzM5LDggQEAKICNkZWZpbmUgc2xlZXAocykgU2xlZXAocyAqIDEwMDApCiAjZW5kaWYKIAotc3RhdGljIGludCBkZWJ1Z19jYWxsYmFjayhDVVJMICpjdXJsLCBjdXJsX2luZm90eXBlIGluZm8sIGNoYXIgKm1zZywgc2l6ZV90IGxlbiwgdm9pZCAqcHRyKQorc3RhdGljIGludCBkZWJ1Z19jYWxsYmFjayhDVVJMICpjdXJsLCBjdXJsX2luZm90eXBlIGluZm8sIGNoYXIgKm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwgdm9pZCAqcHRyKQogewogICAodm9pZCljdXJsOwogICAodm9pZClwdHI7CkBAIC0xMjEsNyArMTIyLDggQEAKICAgaW50IGk7CiAgIGludCBjb3VudCA9IDI7CiAKLSAgc25wcmludGYoZG5zX2VudHJ5LCBzaXplb2YoZG5zX2VudHJ5KSwgInRlc3RzZXJ2ZXIuZXhhbXBsZS5jb206JXM6JXMiLCBwb3J0LCBhZGRyZXNzKTsKKyAgc25wcmludGYoZG5zX2VudHJ5LCBzaXplb2YoZG5zX2VudHJ5KSwgInRlc3RzZXJ2ZXIuZXhhbXBsZS5jb206JXM6JXMiLAorICAgICAgICAgICBwb3J0LCBhZGRyZXNzKTsKIAogICBzdGFydF90ZXN0X3RpbWluZygpOwogCkBAIC0xMzAsNyArMTMyLDggQEAKIAogICBmb3IoaSA9IDE7IGkgPD0gY291bnQ7IGkrKykgewogICAgIGNoYXIgdGFyZ2V0X3VybFsyNTZdOwotICAgIHNucHJpbnRmKHRhcmdldF91cmwsIHNpemVvZih0YXJnZXRfdXJsKSwgImh0dHA6Ly90ZXN0c2VydmVyLmV4YW1wbGUuY29tOiVzJXMlMDRkIiwgcG9ydCwgcGF0aCwgaSk7CisgICAgc25wcmludGYodGFyZ2V0X3VybCwgc2l6ZW9mKHRhcmdldF91cmwpLAorICAgICAgICAgICAgICJodHRwOi8vdGVzdHNlcnZlci5leGFtcGxlLmNvbTolcy8lcyUwNGQiLCBwb3J0LCBwYXRoLCBpKTsKIAogICAgIC8qIHNlY29uZCByZXF1ZXN0IG11c3Qgc3VjY2VlZCBsaWtlIHRoZSBmaXJzdCBvbmUgKi8KICAgICBpZigocmVzID0gZG9fb25lX3JlcXVlc3QobXVsdGksIHRhcmdldF91cmwsIGRuc19lbnRyeSkpKQpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTE3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjcwZWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTE3LmMKQEAgLTAsMCArMSwxMTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCitzdGF0aWMgY2hhciBkYXRhW109InRoaXMgaXMgd2hhdCB3ZSBwb3N0IHRvIHRoZSBzaWxseSB3ZWIgc2VydmVyXG4iOworCitzdHJ1Y3QgV3JpdGVUaGlzIHsKKyAgY2hhciAqcmVhZHB0cjsKKyAgc2l6ZV90IHNpemVsZWZ0OworfTsKKworc3RhdGljIHNpemVfdCByZWFkX2NhbGxiYWNrKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqdXNlcnApCit7CisgIHN0cnVjdCBXcml0ZVRoaXMgKnBvb2ggPSAoc3RydWN0IFdyaXRlVGhpcyAqKXVzZXJwOworICBzaXplX3QgdG9jb3B5ID0gc2l6ZSAqIG5tZW1iOworCisgIC8qIFdhaXQgb25lIHNlY29uZCBiZWZvcmUgcmV0dXJuIFBPU1QgZGF0YSAgICAgICAgICAqCisgICAqIHNvIGxpYmN1cmwgd2lsbCB3YWl0IGJlZm9yZSBzZW5kaW5nIHJlcXVlc3QgYm9keSAqLworICB3YWl0X21zKDEwMDApOworCisgIGlmKHRvY29weSA8IDEgfHwgIXBvb2gtPnNpemVsZWZ0KQorICAgIHJldHVybiAwOworCisgIGlmKHBvb2gtPnNpemVsZWZ0IDwgdG9jb3B5KQorICAgIHRvY29weSA9IHBvb2gtPnNpemVsZWZ0OworCisgIG1lbWNweShwdHIsIHBvb2gtPnJlYWRwdHIsIHRvY29weSk7LyogY29weSByZXF1ZXN0ZWQgZGF0YSAqLworICBwb29oLT5yZWFkcHRyICs9IHRvY29weTsgICAgICAgICAgIC8qIGFkdmFuY2UgcG9pbnRlciAqLworICBwb29oLT5zaXplbGVmdCAtPSB0b2NvcHk7ICAgICAgICAgIC8qIGxlc3MgZGF0YSBsZWZ0ICovCisgIHJldHVybiB0b2NvcHk7Cit9CisKK2ludCB0ZXN0KGNoYXIgKlVSTCkKK3sKKyAgQ1VSTCAqY3VybDsKKyAgQ1VSTGNvZGUgcmVzPUNVUkxFX09LOworCisgIHN0cnVjdCBXcml0ZVRoaXMgcG9vaDsKKworICBwb29oLnJlYWRwdHIgPSBkYXRhOworICBwb29oLnNpemVsZWZ0ID0gc3RybGVuKGRhdGEpOworCisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CisgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKKyAgfQorCisgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworICBpZighY3VybCkgeworICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOworICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKKyAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOworICB9CisKKyAgLyogRmlyc3Qgc2V0IHRoZSBVUkwgdGhhdCBpcyBhYm91dCB0byByZWNlaXZlIG91ciBQT1NULiAqLworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgVVJMKTsKKworICAvKiBOb3cgc3BlY2lmeSB3ZSB3YW50IHRvIFBPU1QgZGF0YSAqLworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1QsIDFMKTsKKworI2lmZGVmIENVUkxfRE9FU19DT05WRVJTSU9OUworICAvKiBDb252ZXJ0IHRoZSBQT1NUIGRhdGEgdG8gQVNDSUkgKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQsIDFMKTsKKyNlbmRpZgorCisgIC8qIFNldCB0aGUgZXhwZWN0ZWQgUE9TVCBzaXplICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgKGxvbmcpcG9vaC5zaXplbGVmdCk7CisKKyAgLyogd2Ugd2FudCB0byB1c2Ugb3VyIG93biByZWFkIGZ1bmN0aW9uICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBREZVTkNUSU9OLCByZWFkX2NhbGxiYWNrKTsKKworICAvKiBwb2ludGVyIHRvIHBhc3MgdG8gb3VyIHJlYWQgZnVuY3Rpb24gKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFEREFUQSwgJnBvb2gpOworCisgIC8qIGdldCB2ZXJib3NlIGRlYnVnIG91dHB1dCBwbGVhc2UgKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CisKKyAgLyogaW5jbHVkZSBoZWFkZXJzIGluIHRoZSBvdXRwdXQgKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IRUFERVIsIDFMKTsKKworICAvKiBkZXRlY3QgSFRUUCBlcnJvciBjb2RlcyA+PSA0MDAgKi8KKyAgLyogdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMUwpOyAqLworCisKKyAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCwgcmVzIHdpbGwgZ2V0IHRoZSByZXR1cm4gY29kZSAqLworICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKKwordGVzdF9jbGVhbnVwOgorCisgIC8qIGFsd2F5cyBjbGVhbnVwICovCisgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOworICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CisKKyAgcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyMC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTIwLmMKaW5kZXggYzZkMmU4Mi4uYTRjZTc5YiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTIwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTIwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTI1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjUuYwppbmRleCA5NTdiNDI5Li5jNThlYmVkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjUuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjUuYwpAQCAtNSwxMiArNSwxMiBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDE0LCBWaWpheSBQYW5naGFsLCA8dnBhbmdoYWxAbWFnaW5hdGljcy5jb20+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSw3ICszNSw3IEBACiBzdGF0aWMgc2l6ZV90IHJlYWRfY2FsbGJhY2sodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCiB7CiAgIHNpemVfdCAgYW1vdW50ID0gbm1lbWIgKiBzaXplOyAvKiBUb3RhbCBieXRlcyBjdXJsIHdhbnRzICovCi0gIGlmIChhbW91bnQgPCBzdHJsZW4oZGF0YSkpIHsKKyAgaWYoYW1vdW50IDwgc3RybGVuKGRhdGEpKSB7CiAgICAgcmV0dXJuIHN0cmxlbihkYXRhKTsKICAgfQogICAodm9pZClzdHJlYW07CkBAIC02NCw3ICs2NCw3IEBACiAKICAgaGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGhsLCAiVXNlci1BZ2VudDogSHR0cCBBZ2VudCIpOwogCi0gIGlmICghaGhsKSB7CisgIGlmKCFoaGwpIHsKICAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgfQogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyNi5jCmluZGV4IGVjMjFmYjAuLmVmNjZhNDggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyNi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyNi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgVmlqYXkgUGFuZ2hhbCwgPHZwYW5naGFsQG1hZ2luYXRpY3MuY29tPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBWaWpheSBQYW5naGFsLCA8dnBhbmdoYWxAbWFnaW5hdGljcy5jb20+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiBzdGF0aWMgc2l6ZV90IHJlYWRfY2FsbGJhY2sodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCiB7CiAgIHNpemVfdCAgYW1vdW50ID0gbm1lbWIgKiBzaXplOyAvKiBUb3RhbCBieXRlcyBjdXJsIHdhbnRzICovCi0gIGlmIChhbW91bnQgPCBzdHJsZW4oZGF0YSkpIHsKKyAgaWYoYW1vdW50IDwgc3RybGVuKGRhdGEpKSB7CiAgICAgcmV0dXJuIHN0cmxlbihkYXRhKTsKICAgfQogICAodm9pZClzdHJlYW07CkBAIC02MiwxMSArNjIsMTEgQEAKIAogICBoaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChoaGwsICJVc2VyLUFnZW50OiBIdHRwIEFnZW50Iik7CiAgIHBobCA9IGN1cmxfc2xpc3RfYXBwZW5kKHBobCwgIlVzZXItQWdlbnQ6IFByb3h5IEFnZW50Iik7Ci0gIGlmICghaGhsIHx8ICFwaGwpIHsKKyAgaWYoIWhobCB8fCAhcGhsKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgdG1wID0gY3VybF9zbGlzdF9hcHBlbmQocGhsLCAiRXhwZWN0OiIpOwotICBpZiAoIXRtcCkgeworICBpZighdG1wKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgcGhsID0gdG1wOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTI3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjcuYwppbmRleCAxMTIyZDhlLi5mMDA4Y2YxIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIFZpamF5IFBhbmdoYWwsIDx2cGFuZ2hhbEBtYWdpbmF0aWNzLmNvbT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgVmlqYXkgUGFuZ2hhbCwgPHZwYW5naGFsQG1hZ2luYXRpY3MuY29tPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsNyArMzQsNyBAQAogc3RhdGljIHNpemVfdCByZWFkX2NhbGxiYWNrKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqc3RyZWFtKQogewogICBzaXplX3QgIGFtb3VudCA9IG5tZW1iICogc2l6ZTsgLyogVG90YWwgYnl0ZXMgY3VybCB3YW50cyAqLwotICBpZiAoYW1vdW50IDwgc3RybGVuKGRhdGEpKSB7CisgIGlmKGFtb3VudCA8IHN0cmxlbihkYXRhKSkgewogICAgIHJldHVybiBzdHJsZW4oZGF0YSk7CiAgIH0KICAgKHZvaWQpc3RyZWFtOwpAQCAtNjIsMTEgKzYyLDExIEBACiAgIH0KIAogICBoaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChoaGwsICJVc2VyLUFnZW50OiBIdHRwIEFnZW50Iik7Ci0gIGlmICghaGhsKSB7CisgIGlmKCFoaGwpIHsKICAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgfQogICB0bXAgPSBjdXJsX3NsaXN0X2FwcGVuZChoaGwsICJFeHBlY3Q6IDEwMC1jb250aW51ZSIpOwotICBpZiAoIXRtcCkgeworICBpZighdG1wKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgaGhsID0gdG1wOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTI4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjguYwppbmRleCA5NGE3Y2QwLi4wOWFmNDgxIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjguYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjguYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgaGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGhsLCAiVXNlci1BZ2VudDogSHR0cCBBZ2VudCIpOwogICBwaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChwaGwsICJQcm94eS1Vc2VyLUFnZW50OiBIdHRwIEFnZW50MiIpOwogCi0gIGlmICghaGhsKSB7CisgIGlmKCFoaGwpIHsKICAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgfQogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyOS5jCmluZGV4IDNkZWYxNDIuLjMzMzNhZTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyOS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyOS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUzMC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTMwLmMKaW5kZXggNzYyMzFjOS4uZDFjYTM0YyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTMwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTMwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTMxLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjFkMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTMxLmMKQEAgLTAsMCArMSwxNDQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJ0ZXN0LmgiCisKKyNpbmNsdWRlICJ0ZXN0dXRpbC5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworI2RlZmluZSBURVNUX0hBTkdfVElNRU9VVCA2MCAqIDEwMDAKKworY2hhciBjb25zdCB0ZXN0RGF0YVtdID0gIi5hYmNcMHh5eiI7CitvZmZfdCBjb25zdCB0ZXN0RGF0YVNpemUgPSBzaXplb2YodGVzdERhdGEpIC0gMTsKKworaW50IHRlc3QoY2hhciAqVVJMKQoreworICBDVVJMICplYXN5OworICBDVVJMTSAqbXVsdGlfaGFuZGxlOworICBpbnQgc3RpbGxfcnVubmluZzsgLyoga2VlcCBudW1iZXIgb2YgcnVubmluZyBoYW5kbGVzICovCisgIENVUkxNc2cgKm1zZzsgLyogZm9yIHBpY2tpbmcgdXAgbWVzc2FnZXMgd2l0aCB0aGUgdHJhbnNmZXIgc3RhdHVzICovCisgIGludCBtc2dzX2xlZnQ7IC8qIGhvdyBtYW55IG1lc3NhZ2VzIGFyZSBsZWZ0ICovCisKKyAgLyogQWxsb2NhdGUgb25lIENVUkwgaGFuZGxlIHBlciB0cmFuc2ZlciAqLworICBlYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKKworICAvKiBpbml0IGEgbXVsdGkgc3RhY2sgKi8KKyAgbXVsdGlfaGFuZGxlID0gY3VybF9tdWx0aV9pbml0KCk7CisKKyAgLyogYWRkIHRoZSBpbmRpdmlkdWFsIHRyYW5zZmVyICovCisgIGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtdWx0aV9oYW5kbGUsIGVhc3kpOworCisgIC8qIHNldCB0aGUgb3B0aW9ucyAoSSBsZWZ0IG91dCBhIGZldywgeW91J2xsIGdldCB0aGUgcG9pbnQgYW55d2F5KSAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfVVJMLCBVUkwpOworICBjdXJsX2Vhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRSwKKyAgICAgICAgICAgICAgICAgICAoY3VybF9vZmZfdCl0ZXN0RGF0YVNpemUpOworICBjdXJsX2Vhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfUE9TVEZJRUxEUywgdGVzdERhdGEpOworCisgIC8qIHdlIHN0YXJ0IHNvbWUgYWN0aW9uIGJ5IGNhbGxpbmcgcGVyZm9ybSByaWdodCBhd2F5ICovCisgIGN1cmxfbXVsdGlfcGVyZm9ybShtdWx0aV9oYW5kbGUsICZzdGlsbF9ydW5uaW5nKTsKKworICBkbyB7CisgICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKKyAgICBpbnQgcmM7IC8qIHNlbGVjdCgpIHJldHVybiBjb2RlICovCisgICAgQ1VSTE1jb2RlIG1jOyAvKiBjdXJsX211bHRpX2Zkc2V0KCkgcmV0dXJuIGNvZGUgKi8KKworICAgIGZkX3NldCBmZHJlYWQ7CisgICAgZmRfc2V0IGZkd3JpdGU7CisgICAgZmRfc2V0IGZkZXhjZXA7CisgICAgaW50IG1heGZkID0gLTE7CisKKyAgICBsb25nIGN1cmxfdGltZW8gPSAtMTsKKworICAgIEZEX1pFUk8oJmZkcmVhZCk7CisgICAgRkRfWkVSTygmZmR3cml0ZSk7CisgICAgRkRfWkVSTygmZmRleGNlcCk7CisKKyAgICAvKiBzZXQgYSBzdWl0YWJsZSB0aW1lb3V0IHRvIHBsYXkgYXJvdW5kIHdpdGggKi8KKyAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CisgICAgdGltZW91dC50dl91c2VjID0gMDsKKworICAgIGN1cmxfbXVsdGlfdGltZW91dChtdWx0aV9oYW5kbGUsICZjdXJsX3RpbWVvKTsKKyAgICBpZihjdXJsX3RpbWVvID49IDApIHsKKyAgICAgIHRpbWVvdXQudHZfc2VjID0gY3VybF90aW1lbyAvIDEwMDA7CisgICAgICBpZih0aW1lb3V0LnR2X3NlYyA+IDEpCisgICAgICAgIHRpbWVvdXQudHZfc2VjID0gMTsKKyAgICAgIGVsc2UKKyAgICAgICAgdGltZW91dC50dl91c2VjID0gKGN1cmxfdGltZW8gJSAxMDAwKSAqIDEwMDA7CisgICAgfQorCisgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCisgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG11bHRpX2hhbmRsZSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAmbWF4ZmQpOworCisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIE9uIHN1Y2Nlc3MgdGhlIHZhbHVlIG9mIG1heGZkIGlzIGd1YXJhbnRlZWQgdG8gYmUgPj0gLTEuIFdlIGNhbGwKKyAgICAgICBzZWxlY3QobWF4ZmQgKyAxLCAuLi4pOyBzcGVjaWFsbHkgaW4gY2FzZSBvZiAobWF4ZmQgPT0gLTEpIHRoZXJlIGFyZQorICAgICAgIG5vIGZkcyByZWFkeSB5ZXQgc28gd2UgY2FsbCBzZWxlY3QoMCwgLi4uKSAtLW9yIFNsZWVwKCkgb24gV2luZG93cy0tCisgICAgICAgdG8gc2xlZXAgMTAwbXMsIHdoaWNoIGlzIHRoZSBtaW5pbXVtIHN1Z2dlc3RlZCB2YWx1ZSBpbiB0aGUKKyAgICAgICBjdXJsX211bHRpX2Zkc2V0KCkgZG9jLiAqLworCisgICAgaWYobWF4ZmQgPT0gLTEpIHsKKyNpZmRlZiBfV0lOMzIKKyAgICAgIFNsZWVwKDEwMCk7CisgICAgICByYyA9IDA7CisjZWxzZQorICAgICAgLyogUG9ydGFibGUgc2xlZXAgZm9yIHBsYXRmb3JtcyBvdGhlciB0aGFuIFdpbmRvd3MuICovCisgICAgICBzdHJ1Y3QgdGltZXZhbCB3YWl0ID0geyAwLCAxMDAgKiAxMDAwIH07IC8qIDEwMG1zICovCisgICAgICByYyA9IHNlbGVjdCgwLCBOVUxMLCBOVUxMLCBOVUxMLCAmd2FpdCk7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBOb3RlIHRoYXQgb24gc29tZSBwbGF0Zm9ybXMgJ3RpbWVvdXQnIG1heSBiZSBtb2RpZmllZCBieSBzZWxlY3QoKS4KKyAgICAgICAgIElmIHlvdSBuZWVkIGFjY2VzcyB0byB0aGUgb3JpZ2luYWwgdmFsdWUgc2F2ZSBhIGNvcHkgYmVmb3JlaGFuZC4gKi8KKyAgICAgIHJjID0gc2VsZWN0KG1heGZkKzEsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJnRpbWVvdXQpOworICAgIH0KKworICAgIHN3aXRjaChyYykgeworICAgIGNhc2UgLTE6CisgICAgICAvKiBzZWxlY3QgZXJyb3IgKi8KKyAgICAgIGJyZWFrOworICAgIGNhc2UgMDogLyogdGltZW91dCAqLworICAgIGRlZmF1bHQ6IC8qIGFjdGlvbiAqLworICAgICAgY3VybF9tdWx0aV9wZXJmb3JtKG11bHRpX2hhbmRsZSwgJnN0aWxsX3J1bm5pbmcpOworICAgICAgYnJlYWs7CisgICAgfQorICB9IHdoaWxlKHN0aWxsX3J1bm5pbmcpOworCisgIC8qIFNlZSBob3cgdGhlIHRyYW5zZmVycyB3ZW50ICovCisgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtdWx0aV9oYW5kbGUsICZtc2dzX2xlZnQpKSkgeworICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgeworICAgICAgcHJpbnRmKCJIVFRQIHRyYW5zZmVyIGNvbXBsZXRlZCB3aXRoIHN0YXR1cyAlZFxuIiwgbXNnLT5kYXRhLnJlc3VsdCk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICBjdXJsX211bHRpX2NsZWFudXAobXVsdGlfaGFuZGxlKTsKKworICAvKiBGcmVlIHRoZSBDVVJMIGhhbmRsZXMgKi8KKyAgY3VybF9lYXN5X2NsZWFudXAoZWFzeSk7CisKKyAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTkwMC5jIGIvdGVzdHMvbGlidGVzdC9saWIxOTAwLmMKaW5kZXggMmY2NDc0Mi4uNDUwMmZjMCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxOTAwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxOTAwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcsIDxsaW51c0BoYXh4LnNlPgorICogQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgTGludXMgTmllbHNlbiBGZWx0emluZywgPGxpbnVzQGhheHguc2U+CiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTEzLDcgKzExMyw3IEBACiB7CiAgIGNoYXIgdXJsYnVmWzI1Nl07CiAKLSAgc3ByaW50Zih1cmxidWYsICIlcyVzIiwgYmFzZV91cmwsIHVybHN0cmluZ1toYW5kbGVudW1dKTsKKyAgc25wcmludGYodXJsYnVmLCBzaXplb2YodXJsYnVmKSwgIiVzJXMiLCBiYXNlX3VybCwgdXJsc3RyaW5nW2hhbmRsZW51bV0pOwogICBjdXJsX2Vhc3lfc2V0b3B0KGhhbmRsZXNbaGFuZGxlbnVtXSwgQ1VSTE9QVF9VUkwsIHVybGJ1Zik7CiAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlc1toYW5kbGVudW1dLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGVzW2hhbmRsZW51bV0sIENVUkxPUFRfRkFJTE9ORVJST1IsIDFMKTsKQEAgLTE5MiwxMiArMTkyLDEyIEBACiAgICAgYWJvcnRfb25fdGVzdF90aW1lb3V0KCk7CiAKICAgICAvKiBTZWUgaG93IHRoZSB0cmFuc2ZlcnMgd2VudCAqLwotICAgIHdoaWxlICgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQobSwgJm1zZ3NfbGVmdCkpKSB7Ci0gICAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgICAgd2hpbGUoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG0sICZtc2dzX2xlZnQpKSkgeworICAgICAgaWYobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CiAgICAgICAgIGludCBpLCBmb3VuZCA9IDA7CiAKICAgICAgICAgLyogRmluZCBvdXQgd2hpY2ggaGFuZGxlIHRoaXMgbWVzc2FnZSBpcyBhYm91dCAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2hhbmRsZXM7IGkrKykgeworICAgICAgICBmb3IoaSA9IDA7IGkgPCBudW1faGFuZGxlczsgaSsrKSB7CiAgICAgICAgICAgZm91bmQgPSAobXNnLT5lYXN5X2hhbmRsZSA9PSBoYW5kbGVzW2ldKTsKICAgICAgICAgICBpZihmb3VuZCkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTAwLmMKaW5kZXggNGQ2MjIwOC4uNDNiMDU5OCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjMsMTIgKzYzLDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIGNoYXIgKmlwc3RyPU5VTEw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpAQCAtOTIsNDIgKzkyLDQyIEBACiAKICAgaWYoIXJlcykgewogICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1BSSU1BUllfSVAsICZpcHN0cik7Ci0gICAgaWYgKGxpYnRlc3RfYXJnMikgeworICAgIGlmKGxpYnRlc3RfYXJnMikgewogICAgICAgRklMRSAqbW9vID0gZm9wZW4obGlidGVzdF9hcmcyLCAid2IiKTsKICAgICAgIGlmKG1vbykgewotCWRvdWJsZSB0aW1lX25hbWVsb29rdXA7Ci0JZG91YmxlIHRpbWVfY29ubmVjdDsKLQlkb3VibGUgdGltZV9wcmV0cmFuc2ZlcjsKLQlkb3VibGUgdGltZV9zdGFydHRyYW5zZmVyOwotCWRvdWJsZSB0aW1lX3RvdGFsOwotCWZwcmludGYobW9vLCAiSVA6ICVzXG4iLCBpcHN0cik7Ci0JY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLCAmdGltZV9uYW1lbG9va3VwKTsKLQljdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19DT05ORUNUX1RJTUUsICZ0aW1lX2Nvbm5lY3QpOwotCWN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUsICZ0aW1lX3ByZXRyYW5zZmVyKTsKLQljdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUsCi0JCQkgICZ0aW1lX3N0YXJ0dHJhbnNmZXIpOwotCWN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1RPVEFMX1RJTUUsICZ0aW1lX3RvdGFsKTsKKyAgICAgICAgZG91YmxlIHRpbWVfbmFtZWxvb2t1cDsKKyAgICAgICAgZG91YmxlIHRpbWVfY29ubmVjdDsKKyAgICAgICAgZG91YmxlIHRpbWVfcHJldHJhbnNmZXI7CisgICAgICAgIGRvdWJsZSB0aW1lX3N0YXJ0dHJhbnNmZXI7CisgICAgICAgIGRvdWJsZSB0aW1lX3RvdGFsOworICAgICAgICBmcHJpbnRmKG1vbywgIklQOiAlc1xuIiwgaXBzdHIpOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUsICZ0aW1lX25hbWVsb29rdXApOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19DT05ORUNUX1RJTUUsICZ0aW1lX2Nvbm5lY3QpOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19QUkVUUkFOU0ZFUl9USU1FLCAmdGltZV9wcmV0cmFuc2Zlcik7CisgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWVfc3RhcnR0cmFuc2Zlcik7CisgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1RPVEFMX1RJTUUsICZ0aW1lX3RvdGFsKTsKIAotCS8qIHNpbmNlIHRoZSB0aW1pbmcgd2lsbCBhbHdheXMgdmFyeSB3ZSBvbmx5IGNvbXBhcmUgcmVsYXRpdmUgZGlmZmVyZW5jZXMKLQkgICBiZXR3ZWVuIHRoZXNlIDUgdGltZXMgKi8KLQlpZih0aW1lX25hbWVsb29rdXAgPiB0aW1lX2Nvbm5lY3QpIHsKLQkgIGZwcmludGYobW9vLCAibmFtZWxvb2t1cCB2cyBjb25uZWN0OiAlZiAlZlxuIiwKLQkJICB0aW1lX25hbWVsb29rdXAsIHRpbWVfY29ubmVjdCk7Ci0JfQotCWlmKHRpbWVfY29ubmVjdCA+IHRpbWVfcHJldHJhbnNmZXIpIHsKLQkgIGZwcmludGYobW9vLCAiY29ubmVjdCB2cyBwcmV0cmFuc2ZlcjogJWYgJWZcbiIsCi0JCSAgdGltZV9jb25uZWN0LCB0aW1lX3ByZXRyYW5zZmVyKTsKLQl9Ci0JaWYodGltZV9wcmV0cmFuc2ZlciA+IHRpbWVfc3RhcnR0cmFuc2ZlcikgewotCSAgZnByaW50Zihtb28sICJwcmV0cmFuc2ZlciB2cyBzdGFydHRyYW5zZmVyOiAlZiAlZlxuIiwKLQkJICB0aW1lX3ByZXRyYW5zZmVyLCB0aW1lX3N0YXJ0dHJhbnNmZXIpOwotCX0KLQlpZih0aW1lX3N0YXJ0dHJhbnNmZXIgPiB0aW1lX3RvdGFsKSB7Ci0JICBmcHJpbnRmKG1vbywgInN0YXJ0dHJhbnNmZXIgdnMgdG90YWw6ICVmICVmXG4iLAotCQkgIHRpbWVfc3RhcnR0cmFuc2ZlciwgdGltZV90b3RhbCk7Ci0JfQorICAgICAgICAvKiBzaW5jZSB0aGUgdGltaW5nIHdpbGwgYWx3YXlzIHZhcnkgd2Ugb25seSBjb21wYXJlIHJlbGF0aXZlCisgICAgICAgICAgIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlc2UgNSB0aW1lcyAqLworICAgICAgICBpZih0aW1lX25hbWVsb29rdXAgPiB0aW1lX2Nvbm5lY3QpIHsKKyAgICAgICAgICBmcHJpbnRmKG1vbywgIm5hbWVsb29rdXAgdnMgY29ubmVjdDogJWYgJWZcbiIsCisgICAgICAgICAgICAgICAgICB0aW1lX25hbWVsb29rdXAsIHRpbWVfY29ubmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYodGltZV9jb25uZWN0ID4gdGltZV9wcmV0cmFuc2ZlcikgeworICAgICAgICAgIGZwcmludGYobW9vLCAiY29ubmVjdCB2cyBwcmV0cmFuc2ZlcjogJWYgJWZcbiIsCisgICAgICAgICAgICAgICAgICB0aW1lX2Nvbm5lY3QsIHRpbWVfcHJldHJhbnNmZXIpOworICAgICAgICB9CisgICAgICAgIGlmKHRpbWVfcHJldHJhbnNmZXIgPiB0aW1lX3N0YXJ0dHJhbnNmZXIpIHsKKyAgICAgICAgICBmcHJpbnRmKG1vbywgInByZXRyYW5zZmVyIHZzIHN0YXJ0dHJhbnNmZXI6ICVmICVmXG4iLAorICAgICAgICAgICAgICAgICAgdGltZV9wcmV0cmFuc2ZlciwgdGltZV9zdGFydHRyYW5zZmVyKTsKKyAgICAgICAgfQorICAgICAgICBpZih0aW1lX3N0YXJ0dHJhbnNmZXIgPiB0aW1lX3RvdGFsKSB7CisgICAgICAgICAgZnByaW50Zihtb28sICJzdGFydHRyYW5zZmVyIHZzIHRvdGFsOiAlZiAlZlxuIiwKKyAgICAgICAgICAgICAgICAgIHRpbWVfc3RhcnR0cmFuc2ZlciwgdGltZV90b3RhbCk7CisgICAgICAgIH0KIAotCWZjbG9zZShtb28pOworICAgICAgICBmY2xvc2UobW9vKTsKICAgICAgIH0KICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTAxLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMS5jCmluZGV4IDI2Mjc1ZjkuLjJhMTA1ZjAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTAxLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDEyICszMCwxMiBAQAogCiAgICh2b2lkKVVSTDsgLyogd2UgZG9uJ3QgdXNlIHRoaXMgKi8KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwMi5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDIuYwppbmRleCA1NTQ1ODNhLi43Y2Y2NDE1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwMi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTAyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDMuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTAzLmMKaW5kZXggNTAyNzdmNy4uMmViMjg3NCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTA0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwNC5jCmluZGV4IDM1OGZjOTguLjM0NjZkYzkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTA0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUwLDcgKzUwLDcgQEAKIAogICAvKiBUaGUgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXJlIG11c3Qgbm90IGJlIGFueXRoaW5nIHJ1bm5pbmcgb24gdGhlIGdpdmVuCiAgICAgIHByb3h5IHBvcnQgKi8KLSAgaWYgKGxpYnRlc3RfYXJnMikKKyAgaWYobGlidGVzdF9hcmcyKQogICAgIGVhc3lfc2V0b3B0KGMsIENVUkxPUFRfUFJPWFksIGxpYnRlc3RfYXJnMik7CiAgIGVhc3lfc2V0b3B0KGMsIENVUkxPUFRfVVJMLCBVUkwpOwogICBlYXN5X3NldG9wdChjLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTA1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwNS5jCmluZGV4IDk1OTJlMGYuLjEyN2ZkZTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTA1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM4LDggKzM4LDggQEAKIHsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzID0gQ1VSTEVfT0s7Ci0gIEZJTEUgKmhkX3NyYyA7Ci0gIGludCBoZCA7CisgIEZJTEUgKmhkX3NyYzsKKyAgaW50IGhkOwogICBzdHJ1Y3Rfc3RhdCBmaWxlX2luZm87CiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpobDsKICAgaW50IGVycm9yOwpAQCAtNDgsNyArNDgsNyBAQAogICBjb25zdCBjaGFyICpidWZfMSA9ICJSTkZSIDUwNSI7CiAgIGNvbnN0IGNoYXIgKmJ1Zl8yID0gIlJOVE8gNTA1LWZvcnJlYWwiOwogCi0gIGlmICghbGlidGVzdF9hcmcyKSB7CisgIGlmKCFsaWJ0ZXN0X2FyZzIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiA8dXJsPiA8ZmlsZS10by11cGxvYWQ+XG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfVVNBR0U7CiAgIH0KQEAgLTU2LDcgKzU2LDcgQEAKICAgaGRfc3JjID0gZm9wZW4obGlidGVzdF9hcmcyLCAicmIiKTsKICAgaWYoTlVMTCA9PSBoZF9zcmMpIHsKICAgICBlcnJvciA9IEVSUk5POwotICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW4oKSBmYWlsZWQgd2l0aCBlcnJvcjogJWQgJXNcbiIsCisgICAgZnByaW50ZihzdGRlcnIsICJmb3BlbiBmYWlsZWQgd2l0aCBlcnJvcjogJWQgJXNcbiIsCiAgICAgICAgICAgICBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZTogJXNcbiIsIGxpYnRlc3RfYXJnMik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsgLyogaWYgdGhpcyBoYXBwZW5zIHRoaW5ncyBhcmUgbWFqb3Igd2VpcmQgKi8KQEAgLTgwLDE0ICs4MCwxNSBAQAogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgZmNsb3NlKGhkX3NyYyk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIC8qIGdldCBhIGN1cmwgaGFuZGxlICovCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CisgIGlmKCFjdXJsKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIGZjbG9zZShoZF9zcmMpOwpAQCAtOTYsMTQgKzk3LDE2IEBACiAKICAgLyogYnVpbGQgYSBsaXN0IG9mIGNvbW1hbmRzIHRvIHBhc3MgdG8gbGliY3VybCAqLwogCi0gIGlmICgoaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJsaXN0LCBidWZfMSkpID09IE5VTEwpIHsKKyAgaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJsaXN0LCBidWZfMSk7CisgIGlmKCFobCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zbGlzdF9hcHBlbmQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICBmY2xvc2UoaGRfc3JjKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9Ci0gIGlmICgoaGVhZGVybGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhsLCBidWZfMikpID09IE5VTEwpIHsKKyAgaGVhZGVybGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhsLCBidWZfMik7CisgIGlmKCFoZWFkZXJsaXN0KSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX3NsaXN0X2FwcGVuZCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChobCk7CiAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CkBAIC0xMjAsNyArMTIzLDcgQEAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAKICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgdGVzdF9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgVVJMKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKICAgLyogcGFzcyBpbiB0aGF0IGxhc3Qgb2YgRlRQIGNvbW1hbmRzIHRvIHJ1biBhZnRlciB0aGUgdHJhbnNmZXIgKi8KICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NUUVVPVEUsIGhlYWRlcmxpc3QpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA2LmMKaW5kZXggNmRjYzM2ZC4uOGRlMzBjMiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDYuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwNi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsOCArNDAsOCBAQAogaW50IGxvY2tbM107CiAKIC8qIGxvY2sgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIG15X2xvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLCBjdXJsX2xvY2tfYWNjZXNzIGxhY2Nlc3MsCi0gICAgICAgICAgdm9pZCAqdXNlcHRyICkKK3N0YXRpYyB2b2lkIG15X2xvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLAorICAgICAgICAgICAgICAgICAgICBjdXJsX2xvY2tfYWNjZXNzIGxhY2Nlc3MsIHZvaWQgKnVzZXB0cikKIHsKICAgY29uc3QgY2hhciAqd2hhdDsKICAgc3RydWN0IHVzZXJkYXRhICp1c2VyID0gKHN0cnVjdCB1c2VyZGF0YSAqKXVzZXB0cjsKQEAgLTUwLDcgKzUwLDcgQEAKICAgKHZvaWQpaGFuZGxlOwogICAodm9pZClsYWNjZXNzOwogCi0gIHN3aXRjaCAoIGRhdGEgKSB7CisgIHN3aXRjaCAoZGF0YSkgewogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfU0hBUkU6CiAgICAgICB3aGF0ID0gInNoYXJlIjsKICAgICAgIGxvY2tudW0gPSAwOwpAQCAtODAsMTMgKzgwLDEzIEBACiB9CiAKIC8qIHVubG9jayBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgbXlfdW5sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwgdm9pZCAqdXNlcHRyICkKK3N0YXRpYyB2b2lkIG15X3VubG9jayhDVVJMICpoYW5kbGUsIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQgKnVzZXB0cikKIHsKICAgY29uc3QgY2hhciAqd2hhdDsKICAgc3RydWN0IHVzZXJkYXRhICp1c2VyID0gKHN0cnVjdCB1c2VyZGF0YSAqKXVzZXB0cjsKICAgaW50IGxvY2tudW07CiAgICh2b2lkKWhhbmRsZTsKLSAgc3dpdGNoICggZGF0YSApIHsKKyAgc3dpdGNoIChkYXRhKSB7CiAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9TSEFSRToKICAgICAgIHdoYXQgPSAic2hhcmUiOwogICAgICAgbG9ja251bSA9IDA7CkBAIC0xMjAsNyArMTIwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgY3VybF9zbGlzdCAqc2V0aG9zdChzdHJ1Y3QgY3VybF9zbGlzdCAqaGVhZGVycykKIHsKICAgKHZvaWQpaGVhZGVyczsKLSAgcmV0dXJuIGN1cmxfc2xpc3RfYXBwZW5kKE5VTEwsIEhPU1RIRUFERVIgKTsKKyAgcmV0dXJuIGN1cmxfc2xpc3RfYXBwZW5kKE5VTEwsIEhPU1RIRUFERVIpOwogfQogCiAKQEAgLTEzMyw3ICsxMzMsOCBAQAogICBDVVJMICpjdXJsOwogICBpbnQgaT0wOwogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CisgIGlmKCFjdXJsKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KQEAgLTE0MiwxNyArMTQzLDE3IEBACiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAgICAxTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHRkYXRhLT51cmwpOwotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7CisgIHByaW50ZigiQ1VSTE9QVF9TSEFSRVxuIik7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TSEFSRSwgdGRhdGEtPnNoYXJlKTsKIAotICBwcmludGYoICJQRVJGT1JNXG4iICk7CisgIHByaW50ZigiUEVSRk9STVxuIik7CiAgIGNvZGUgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKLSAgaWYoIGNvZGUgIT0gQ1VSTEVfT0sgKSB7CisgIGlmKGNvZGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgInBlcmZvcm0gdXJsICclcycgcmVwZWF0ICVkIGZhaWxlZCwgY3VybGNvZGUgJWRcbiIsCiAgICAgICAgICAgICB0ZGF0YS0+dXJsLCBpLCAoaW50KWNvZGUpOwogICB9CiAKLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOworICBwcmludGYoIkNMRUFOVVBcbiIpOwogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgY3VybF9zbGlzdF9mcmVlX2FsbChoZWFkZXJzKTsKIApAQCAtMTg2LDQyICsxODcsNDIgQEAKICAgdXNlci50ZXh0ID0gKGNoYXIgKikiUGlncyBpbiBzcGFjZSI7CiAgIHVzZXIuY291bnRlciA9IDA7CiAKLSAgcHJpbnRmKCAiR0xPQkFMX0lOSVRcbiIgKTsKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBwcmludGYoIkdMT0JBTF9JTklUXG4iKTsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKICAgLyogcHJlcGFyZSBzaGFyZSAqLwotICBwcmludGYoICJTSEFSRV9JTklUXG4iICk7Ci0gIGlmICgoc2hhcmUgPSBjdXJsX3NoYXJlX2luaXQoKSkgPT0gTlVMTCkgeworICBwcmludGYoIlNIQVJFX0lOSVRcbiIpOworICBpZigoc2hhcmUgPSBjdXJsX3NoYXJlX2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMU0hPUFRfTE9DS0ZVTkNcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX0xPQ0tGVU5DLCBteV9sb2NrKTsKKyAgaWYoQ1VSTFNIRV9PSyA9PSBzY29kZSkgeworICAgIHByaW50ZigiQ1VSTFNIT1BUX0xPQ0tGVU5DXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfTE9DS0ZVTkMsIG15X2xvY2spOwogICB9Ci0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMU0hPUFRfVU5MT0NLRlVOQ1xuIiApOwotICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoIHNoYXJlLCBDVVJMU0hPUFRfVU5MT0NLRlVOQywgbXlfdW5sb2NrKTsKKyAgaWYoQ1VSTFNIRV9PSyA9PSBzY29kZSkgeworICAgIHByaW50ZigiQ1VSTFNIT1BUX1VOTE9DS0ZVTkNcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9VTkxPQ0tGVU5DLCBteV91bmxvY2spOwogICB9Ci0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMU0hPUFRfVVNFUkRBVEFcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1VTRVJEQVRBLCAmdXNlcik7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxTSE9QVF9VU0VSREFUQVxuIik7CisgICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdChzaGFyZSwgQ1VSTFNIT1BUX1VTRVJEQVRBLCAmdXNlcik7CiAgIH0KLSAgaWYgKCBDVVJMU0hFX09LID09IHNjb2RlICkgewotICAgIHByaW50ZiggIkNVUkxfTE9DS19EQVRBX0NPT0tJRVxuIiApOwotICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoIHNoYXJlLCBDVVJMU0hPUFRfU0hBUkUsIENVUkxfTE9DS19EQVRBX0NPT0tJRSk7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxfTE9DS19EQVRBX0NPT0tJRVxuIik7CisgICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdChzaGFyZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tfREFUQV9DT09LSUUpOwogICB9Ci0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMX0xPQ0tfREFUQV9ETlNcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tfREFUQV9ETlMpOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMX0xPQ0tfREFUQV9ETlNcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfRE5TKTsKICAgfQogCi0gIGlmICggQ1VSTFNIRV9PSyAhPSBzY29kZSApIHsKKyAgaWYoQ1VSTFNIRV9PSyAhPSBzY29kZSkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9zZXRvcHQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpAQCAtMjI5LDE0OSArMjMwLDE0NSBAQAogICB9CiAKICAgLyogaW5pdGlhbCBjb29raWUgbWFuaXB1bGF0aW9uICovCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9zaGFyZV9jbGVhbnVwKHNoYXJlKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBpbmplY3RlZF9hbmRfY2xvYmJlcmVkXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsCisgIHByaW50ZigiQ1VSTE9QVF9TSEFSRVxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfU0hBUkUsICAgICAgc2hhcmUpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBpbmplY3RlZF9hbmRfY2xvYmJlcmVkXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULAogICAgICAgICAgICAgICAgIlNldC1Db29raWU6IGluamVjdGVkX2FuZF9jbG9iYmVyZWQ9eWVzOyAiCi0gICAgICAgICAgICAgICAiZG9tYWluPWhvc3QuZm9vLmNvbTsgZXhwaXJlcz1TYXQgRmViIDIgMTE6NTY6MjcgR01UIDIwMzAiICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBBTExcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIkFMTCIgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVMSVNUIHNlc3Npb25cbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIlNldC1Db29raWU6IHNlc3Npb249ZWxlcGhhbnRzIiApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUxJU1QgaW5qZWN0ZWRcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwKKyAgICAgICAgICAgICAgICJkb21haW49aG9zdC5mb28uY29tOyBleHBpcmVzPVNhdCBGZWIgMiAxMTo1NjoyNyBHTVQgMjAzMCIpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBBTExcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJBTEwiKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUxJU1Qgc2Vzc2lvblxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIlNldC1Db29raWU6IHNlc3Npb249ZWxlcGhhbnRzIik7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVMSVNUIGluamVjdGVkXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULAogICAgICAgICAgICAgICAgIlNldC1Db29raWU6IGluamVjdGVkPXllczsgZG9tYWluPWhvc3QuZm9vLmNvbTsgIgotICAgICAgICAgICAgICAgImV4cGlyZXM9U2F0IEZlYiAyIDExOjU2OjI3IEdNVCAyMDMwIiApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUxJU1QgU0VTU1xuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiU0VTUyIgKTsKLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOwotICBjdXJsX2Vhc3lfY2xlYW51cCggY3VybCApOworICAgICAgICAgICAgICAgImV4cGlyZXM9U2F0IEZlYiAyIDExOjU2OjI3IEdNVCAyMDMwIik7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVMSVNUIFNFU1NcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJTRVNTIik7CisgIHByaW50ZigiQ0xFQU5VUFxuIik7CisgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogCiAKICAgcmVzID0gMDsKIAogICAvKiBzdGFydCB0cmVhZHMgKi8KLSAgZm9yIChpPTE7IGk8PVRIUkVBRFM7IGkrKyApIHsKKyAgZm9yKGk9MTsgaTw9VEhSRUFEUzsgaSsrKSB7CiAKICAgICAvKiBzZXQgdGhyZWFkIGRhdGEgKi8KLSAgICB0ZGF0YS51cmwgICA9IHN1YnVybCggVVJMLCBpICk7IC8qIG11c3QgYmUgY3VybF9mcmVlKClkICovCisgICAgdGRhdGEudXJsICAgPSBzdWJ1cmwoVVJMLCBpKTsgLyogbXVzdCBiZSBjdXJsX2ZyZWUoKWQgKi8KICAgICB0ZGF0YS5zaGFyZSA9IHNoYXJlOwogCiAgICAgLyogc2ltdWxhdGUgdGhyZWFkLCBkaXJlY3QgY2FsbCBvZiAidGhyZWFkIiBmdW5jdGlvbiAqLwotICAgIHByaW50ZiggIioqKiBydW4gJWRcbiIsaSApOwotICAgIGZpcmUoICZ0ZGF0YSApOworICAgIHByaW50ZigiKioqIHJ1biAlZFxuIixpKTsKKyAgICBmaXJlKCZ0ZGF0YSk7CiAKLSAgICBjdXJsX2ZyZWUoIHRkYXRhLnVybCApOwotCisgICAgY3VybF9mcmVlKHRkYXRhLnVybCk7CiAgIH0KIAogCiAgIC8qIGZldGNoIGEgYW5vdGhlciBvbmUgYW5kIHNhdmUgY29va2llcyAqLwotICBwcmludGYoICIqKiogcnVuICVkXG4iLCBpICk7Ci0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgcHJpbnRmKCIqKiogcnVuICVkXG4iLCBpKTsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9zaGFyZV9jbGVhbnVwKHNoYXJlKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIHVybCA9IHN1YnVybCggVVJMLCBpICk7Ci0gIGhlYWRlcnMgPSBzZXRob3N0KCBOVUxMICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfVVJMLCAgICAgICAgdXJsICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfU0hBUkVcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfU0hBUkUsICAgICAgc2hhcmUgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVKQVJcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFSkFSLCAgSkFSICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBGTFVTSFxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiRkxVU0giICk7CisgIHVybCA9IHN1YnVybChVUkwsIGkpOworICBoZWFkZXJzID0gc2V0aG9zdChOVUxMKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICAgICAgICB1cmwpOworICBwcmludGYoIkNVUkxPUFRfU0hBUkVcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUpBUlxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFSkFSLCAgSkFSKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUxJU1QgRkxVU0hcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJGTFVTSCIpOwogCi0gIHByaW50ZiggIlBFUkZPUk1cbiIgKTsKLSAgY3VybF9lYXN5X3BlcmZvcm0oIGN1cmwgKTsKKyAgcHJpbnRmKCJQRVJGT1JNXG4iKTsKKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAKLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOwotICBjdXJsX2Vhc3lfY2xlYW51cCggY3VybCApOworICBwcmludGYoIkNMRUFOVVBcbiIpOworICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgY3VybF9mcmVlKHVybCk7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoIGhlYWRlcnMgKTsKKyAgY3VybF9zbGlzdF9mcmVlX2FsbChoZWFkZXJzKTsKIAogICAvKiBsb2FkIGNvb2tpZXMgKi8KLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9Ci0gIHVybCA9IHN1YnVybCggVVJMLCBpICk7Ci0gIGhlYWRlcnMgPSBzZXRob3N0KCBOVUxMICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfVVJMLCAgICAgICAgdXJsICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfU0hBUkVcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfU0hBUkUsICAgICAgc2hhcmUgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVMSVNUIEFMTFxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiQUxMIiApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUpBUlxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVGSUxFLCBKQVIgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVMSVNUIFJFTE9BRFxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiUkVMT0FEIiApOworICB1cmwgPSBzdWJ1cmwoVVJMLCBpKTsKKyAgaGVhZGVycyA9IHNldGhvc3QoTlVMTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAgICAgICAgdXJsKTsKKyAgcHJpbnRmKCJDVVJMT1BUX1NIQVJFXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TSEFSRSwgICAgICBzaGFyZSk7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVMSVNUIEFMTFxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIkFMTCIpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFSkFSXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVGSUxFLCBKQVIpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBSRUxPQURcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJSRUxPQUQiKTsKIAogICBjb2RlID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09PS0lFTElTVCwgJmNvb2tpZXMpOwotICBpZiAoIGNvZGUgIT0gQ1VSTEVfT0sgKQotICB7CisgIGlmKGNvZGUgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9nZXRpbmZvKCkgZmFpbGVkXG4iKTsKICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgcHJpbnRmKCJsb2FkZWQgY29va2llczpcbiIpOwotICBpZiAoICFjb29raWVzICkKLSAgeworICBpZighY29va2llcykgewogICAgIGZwcmludGYoc3RkZXJyLCAiICByZWxvYWRpbmcgY29va2llcyBmcm9tICclcycgZmFpbGVkXG4iLCBKQVIpOwogICAgIHJlcyA9IFRFU1RfRVJSX01BSk9SX0JBRDsKICAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgfQogICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgbmV4dF9jb29raWUgPSBjb29raWVzOwotICB3aGlsZSAoIG5leHRfY29va2llICkKLSAgewotICAgIHByaW50ZiggIiAgJXNcbiIsIG5leHRfY29va2llLT5kYXRhICk7CisgIHdoaWxlKG5leHRfY29va2llKSB7CisgICAgcHJpbnRmKCIgICVzXG4iLCBuZXh0X2Nvb2tpZS0+ZGF0YSk7CiAgICAgbmV4dF9jb29raWUgPSBuZXh0X2Nvb2tpZS0+bmV4dDsKICAgfQogICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKLSAgY3VybF9zbGlzdF9mcmVlX2FsbCggY29va2llcyApOworICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGNvb2tpZXMpOwogCiAgIC8qIHRyeSB0byBmcmVlIHNoYXJlLCBleHBlY3QgdG8gZmFpbCBiZWNhdXNlIHNoYXJlIGlzIGluIHVzZSovCi0gIHByaW50ZiggInRyeSBTSEFSRV9DTEVBTlVQLi4uXG4iICk7Ci0gIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKCBzaGFyZSApOwotICBpZiAoIHNjb2RlPT1DVVJMU0hFX09LICkKLSAgeworICBwcmludGYoInRyeSBTSEFSRV9DTEVBTlVQLi4uXG4iKTsKKyAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOworICBpZihzY29kZT09Q1VSTFNIRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9jbGVhbnVwIHN1Y2NlZWQgYnV0IGVycm9yIGV4cGVjdGVkXG4iKTsKICAgICBzaGFyZSA9IE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCAiU0hBUkVfQ0xFQU5VUCBmYWlsZWQsIGNvcnJlY3RcbiIgKTsKKyAgfQorICBlbHNlIHsKKyAgICBwcmludGYoIlNIQVJFX0NMRUFOVVAgZmFpbGVkLCBjb3JyZWN0XG4iKTsKICAgfQogCiB0ZXN0X2NsZWFudXA6CiAKICAgLyogY2xlYW4gdXAgbGFzdCBoYW5kbGUgKi8KLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOwotICBjdXJsX2Vhc3lfY2xlYW51cCggY3VybCApOwotICBjdXJsX3NsaXN0X2ZyZWVfYWxsKCBoZWFkZXJzICk7CisgIHByaW50ZigiQ0xFQU5VUFxuIik7CisgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOworICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGhlYWRlcnMpOwogICBjdXJsX2ZyZWUodXJsKTsKIAogICAvKiBmcmVlIHNoYXJlICovCi0gIHByaW50ZiggIlNIQVJFX0NMRUFOVVBcbiIgKTsKLSAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoIHNoYXJlICk7Ci0gIGlmICggc2NvZGUhPUNVUkxTSEVfT0sgKQorICBwcmludGYoIlNIQVJFX0NMRUFOVVBcbiIpOworICBzY29kZSA9IGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CisgIGlmKHNjb2RlIT1DVVJMU0hFX09LKQogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9jbGVhbnVwIGZhaWxlZCwgY29kZSBlcnJubyAlZFxuIiwKICAgICAgICAgICAgIChpbnQpc2NvZGUpOwogCi0gIHByaW50ZiggIkdMT0JBTF9DTEVBTlVQXG4iICk7CisgIHByaW50ZigiR0xPQkFMX0NMRUFOVVBcbiIpOwogICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAKICAgcmV0dXJuIHJlczsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTA3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwNy5jCmluZGV4IDg3YzIxZGUuLjc0ODc5OTIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTA3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDcuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwOC5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDguYwppbmRleCA3ZjM3MzA5Li5jYjYwY2UxIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwOC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01NywxMiArNTcsMTIgQEAKICAgcG9vaC5yZWFkcHRyID0gZGF0YTsKICAgcG9vaC5zaXplbGVmdCA9IHN0cmxlbihkYXRhKTsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwOS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDkuYwppbmRleCBhM2RlNTFlLi4wODVhOTc1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwOS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMTcsMTIgKzExNywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fcmVhbGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX3N0cmR1cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2NhbGxvYyk7Ci0gIGlmIChyZXMgIT0gQ1VSTEVfT0spIHsKKyAgaWYocmVzICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0X21lbSgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxMC5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTAuYwppbmRleCBjNjBiMmNhLi5jYjUyOTZlIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTEwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02MywxOSArNjMsMTkgQEAKICAgc3RydWN0IFdyaXRlVGhpcyBwb29oOwogICBwb29oLmNvdW50ZXIgPSAwOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIHNsaXN0ID0gY3VybF9zbGlzdF9hcHBlbmQoc2xpc3QsICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOwotICBpZiAoc2xpc3QgPT0gTlVMTCkgeworICBpZihzbGlzdCA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX3NsaXN0X2FwcGVuZCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTExLmMKaW5kZXggNmJlMmQyZi4uMGI3YWU2ZiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTEuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxMi5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTIuYwppbmRleCAxOWRhMThiLi4xNDI0MWRkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxMi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTEyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTMuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTEzLmMKaW5kZXggN2FhYjNiMS4uNTgwOTFlZiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzcsMTIgKzM3LDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNC5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTQuYwppbmRleCA5NTNlOTBkLi5mNTE2ZDA5IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzPUNVUkxFX09LOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTE1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxNS5jCmluZGV4IDRlOTZjNGEuLmQzZTZlNDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTE1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE2LmMKaW5kZXggYTk1OTA5NC4uOWZhZjI2MiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTYuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxNi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNy5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTcuYwppbmRleCBiYTQ5ZWM0Li4yZjY4ZWJkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNy5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE3LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTguYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE4LmMKaW5kZXggMjNmN2YxNy4uZTM3YTc3NyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTguYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxOC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTYsMTggKzU2LDE5IEBACiAKIHN0YXRpYyB2b2lkIHN0b3JlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIGludCBlcnIpCiB7Ci0gIGlmICghZXJyKQotICAgIHNwcmludGYobXNnYnVmZiwgIiVzIiwgbXNnKTsKKyAgaWYoIWVycikKKyAgICBzbnByaW50Zihtc2didWZmLCBzaXplb2YobXNnYnVmZiksICIlcyIsIG1zZyk7CiAgIGVsc2UKLSAgICBzcHJpbnRmKG1zZ2J1ZmYsICIlcywgZXJybm8gJWQsICVzIiwgbXNnLCBlcnIsIHN0cmVycm9yKGVycikpOworICAgIHNucHJpbnRmKG1zZ2J1ZmYsIHNpemVvZihtc2didWZmKSwgIiVzLCBlcnJubyAlZCwgJXMiLCBtc2csCisgICAgICAgICAgICAgZXJyLCBzdHJlcnJvcihlcnIpKTsKIH0KIAogc3RhdGljIHZvaWQgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycyh2b2lkKQogewotICBmb3IgKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCi0gICAgaWYgKGZkW251bV9vcGVuLnJsaW1fY3VyXSA+IDApCisgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDA7CisgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKKyAgICBpZihmZFtudW1fb3Blbi5ybGltX2N1cl0gPiAwKQogICAgICAgY2xvc2UoZmRbbnVtX29wZW4ucmxpbV9jdXJdKTsKICAgZnJlZShmZCk7CiAgIGZkID0gTlVMTDsKQEAgLTc5LDIwICs4MCwyMCBAQAogICBpbnQgaTsKICAgaW50IHJldCA9IDE7CiAKLSAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICBmcGFbaV0gPSBOVUxMOwogICB9Ci0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICBmcGFbaV0gPSBmb3BlbihERVZfTlVMTCwgInIiKTsKLSAgICBpZiAoZnBhW2ldID09IE5VTEwpIHsKLSAgICAgIHN0b3JlX2Vycm1zZygiZm9wZW4oKSBmYWlsZWQiLCBFUlJOTyk7CisgIGZvcihpID0gMDsgaSA8IDM7IGkrKykgeworICAgIGZwYVtpXSA9IGZvcGVuKERFVl9OVUxMLCBGT1BFTl9SRUFEVEVYVCk7CisgICAgaWYoZnBhW2ldID09IE5VTEwpIHsKKyAgICAgIHN0b3JlX2Vycm1zZygiZm9wZW4gZmFpbGVkIiwgRVJSTk8pOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgICByZXQgPSAwOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICBpZiAoZnBhW2ldICE9IE5VTEwpCisgIGZvcihpID0gMDsgaSA8IDM7IGkrKykgeworICAgIGlmKGZwYVtpXSAhPSBOVUxMKQogICAgICAgZmNsb3NlKGZwYVtpXSk7CiAgIH0KICAgcmV0dXJuIHJldDsKQEAgLTExMiw3ICsxMTMsNyBAQAogI2lmZGVmIEhBVkVfTE9OR0xPTkcKICAgY2hhciBmbXRfbGx1W10gPSAiJWxsdSI7CiAKLSAgaWYgKHNpemVvZihybC5ybGltX21heCkgPiBzaXplb2YobG9uZykpCisgIGlmKHNpemVvZihybC5ybGltX21heCkgPiBzaXplb2YobG9uZykpCiAgICAgZm10ID0gZm10X2xsdTsKICAgZWxzZQogI2VuZGlmCkBAIC0xMjAsNyArMTIxLDcgQEAKIAogICAvKiBnZXQgaW5pdGlhbCBvcGVuIGZpbGUgbGltaXRzICovCiAKLSAgaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKKyAgaWYoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgIHN0b3JlX2Vycm1zZygiZ2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIHJldHVybiAtMTsKQEAgLTEyOSwxOSArMTMwLDE5IEBACiAgIC8qIHNob3cgaW5pdGlhbCBvcGVuIGZpbGUgbGltaXRzICovCiAKICNpZmRlZiBSTElNX0lORklOSVRZCi0gIGlmIChybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQorICBpZihybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogICAgIHN0cmNweShzdHJidWZmLCAiSU5GSU5JVFkiKTsKICAgZWxzZQogI2VuZGlmCi0gICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fY3VyKTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgcmwucmxpbV9jdXIpOwogICBmcHJpbnRmKHN0ZGVyciwgImluaXRpYWwgc29mdCBsaW1pdDogJXNcbiIsIHN0cmJ1ZmYpOwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICBpZiAocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKKyAgaWYocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgIGVsc2UKICNlbmRpZgotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX21heCk7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fbWF4KTsKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsIGhhcmQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogICAvKiBzaG93IG91ciBjb25zdGFudHMgKi8KQEAgLTE1OSwxNCArMTYwLDE0IEBACiAgICAqIG9wZW4gbW9yZSB0aGFuIHNvZnQgbGltaXQgZmlsZSBkZXNjcmlwdG9ycyB3aWxsIGZhaWwuCiAgICAqLwogCi0gIGlmIChybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgeworICBpZihybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgewogCiAjaWZkZWYgT1BFTl9NQVgKLSAgICBpZiAoKHJsLnJsaW1fY3VyID4gMCkgJiYKLSAgICAgICAgKHJsLnJsaW1fY3VyIDwgT1BFTl9NQVgpKSB7CisgICAgaWYoKHJsLnJsaW1fY3VyID4gMCkgJiYKKyAgICAgICAocmwucmxpbV9jdXIgPCBPUEVOX01BWCkpIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAicmFpc2luZyBzb2Z0IGxpbWl0IHVwIHRvIE9QRU5fTUFYXG4iKTsKICAgICAgIHJsLnJsaW1fY3VyID0gT1BFTl9NQVg7Ci0gICAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgeworICAgICAgaWYoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgICAgICAvKiBvbiBmYWlsdXJlIGRvbid0IGFib3J0IGp1c3QgaXNzdWUgYSB3YXJuaW5nICovCiAgICAgICAgIHN0b3JlX2Vycm1zZygic2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKQEAgLTE3Nyw3ICsxNzgsNyBAQAogCiAgICAgZnByaW50ZihzdGRlcnIsICJyYWlzaW5nIHNvZnQgbGltaXQgdXAgdG8gaGFyZCBsaW1pdFxuIik7CiAgICAgcmwucmxpbV9jdXIgPSBybC5ybGltX21heDsKLSAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgeworICAgIGlmKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICAgIC8qIG9uIGZhaWx1cmUgZG9uJ3QgYWJvcnQganVzdCBpc3N1ZSBhIHdhcm5pbmcgKi8KICAgICAgIHN0b3JlX2Vycm1zZygic2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CkBAIC0xODYsNyArMTg3LDcgQEAKIAogICAgIC8qIGdldCBjdXJyZW50IG9wZW4gZmlsZSBsaW1pdHMgKi8KIAotICAgIGlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgICAgaWYoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgICAgc3RvcmVfZXJybXNnKCJnZXRybGltaXQoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICAgIHJldHVybiAtMzsKQEAgLTE5NSwxOSArMTk2LDE5IEBACiAgICAgLyogc2hvdyBjdXJyZW50IG9wZW4gZmlsZSBsaW1pdHMgKi8KIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgICBpZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKKyAgICBpZihybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogICAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fY3VyKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX2N1cik7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJyZW50IHNvZnQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgICBpZiAocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKKyAgICBpZihybC5ybGltX21heCA9PSBSTElNX0lORklOSVRZKQogICAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fbWF4KTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX21heCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJyZW50IGhhcmQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogICB9IC8qIChybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgKi8KQEAgLTIyOSwxNSArMjMwLDE1IEBACiAKICAgbnVtX29wZW4ucmxpbV9jdXIgPSBOVU1fTkVFREVEOwogCi0gIGlmICgocmwucmxpbV9jdXIgPiAwKSAmJgorICBpZigocmwucmxpbV9jdXIgPiAwKSAmJgogI2lmZGVmIFJMSU1fSU5GSU5JVFkKICAgICAgKHJsLnJsaW1fY3VyICE9IFJMSU1fSU5GSU5JVFkpICYmCiAjZW5kaWYKICAgICAgKHJsLnJsaW1fY3VyIDw9IG51bV9vcGVuLnJsaW1fY3VyKSkgewotICAgIHNwcmludGYoc3RyYnVmZjIsIGZtdCwgcmwucmxpbV9jdXIpOwotICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOwotICAgIHNwcmludGYoc3RyYnVmZiwgImZkcyBuZWVkZWQgJXMgPiBzeXN0ZW0gbGltaXQgJXMiLAotICAgICAgICAgICAgc3RyYnVmZjEsIHN0cmJ1ZmYyKTsKKyAgICBzbnByaW50ZihzdHJidWZmMiwgc2l6ZW9mKHN0cmJ1ZmYyKSwgZm10LCBybC5ybGltX2N1cik7CisgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgImZkcyBuZWVkZWQgJXMgPiBzeXN0ZW0gbGltaXQgJXMiLAorICAgICAgICAgICAgIHN0cmJ1ZmYxLCBzdHJidWZmMik7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIHJldHVybiAtNDsKQEAgLTI1MiwyMSArMjUzLDIxIEBACiAgICAqIHRoYXQgaXQgYmVjb21lcyBhdmFpbGFibGUgdG8gdGhlIHRlc3QuCiAgICAqLwogCi0gIGZvciAobml0ZW1zID0gaSA9IDE7IG5pdGVtcyA8PSBpOyBpICo9IDIpCisgIGZvcihuaXRlbXMgPSBpID0gMTsgbml0ZW1zIDw9IGk7IGkgKj0gMikKICAgICBuaXRlbXMgPSBpOwotICBpZiAobml0ZW1zID4gMHg3ZmZmKQorICBpZihuaXRlbXMgPiAweDdmZmYpCiAgICAgbml0ZW1zID0gMHg0MDAwMDsKICAgZG8gewogICAgIG51bV9vcGVuLnJsaW1fbWF4ID0gc2l6ZW9mKCptZW1jaHVuaykgKiAoc2l6ZV90KW5pdGVtczsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJhbGxvY2F0aW5nIG1lbWNodW5rICVzIGJ5dGUgYXJyYXlcbiIsIHN0cmJ1ZmYpOwogICAgIG1lbWNodW5rID0gbWFsbG9jKHNpemVvZigqbWVtY2h1bmspICogKHNpemVfdCluaXRlbXMpOwotICAgIGlmICghbWVtY2h1bmspIHsKKyAgICBpZighbWVtY2h1bmspIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAibWVtY2h1bmssIG1hbGxvYygpIGZhaWxlZFxuIik7CiAgICAgICBuaXRlbXMgLz0gMjsKICAgICB9Ci0gIH0gd2hpbGUgKG5pdGVtcyAmJiAhbWVtY2h1bmspOwotICBpZiAoIW1lbWNodW5rKSB7CisgIH0gd2hpbGUobml0ZW1zICYmICFtZW1jaHVuayk7CisgIGlmKCFtZW1jaHVuaykgewogICAgIHN0b3JlX2Vycm1zZygibWVtY2h1bmssIG1hbGxvYygpIGZhaWxlZCIsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICByZXR1cm4gLTU7CkBAIC0yNzYsNyArMjc3LDcgQEAKIAogICBmcHJpbnRmKHN0ZGVyciwgImluaXRpYWxpemluZyBtZW1jaHVuayBhcnJheVxuIik7CiAKLSAgZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKQorICBmb3IoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKICAgICBtZW1jaHVua1tpXSA9IC0xOwogCiAgIC8qIHNldCB0aGUgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgd2Ugd2lsbCB0cnkgdG8gb3BlbiAqLwpAQCAtMjg1LDEwICsyODYsMTAgQEAKIAogICAvKiB2ZXJpZnkgdGhhdCB3ZSB3b24ndCBvdmVyZmxvdyBzaXplX3QgaW4gbWFsbG9jKCkgKi8KIAotICBpZiAoKHNpemVfdCkobnVtX29wZW4ucmxpbV9tYXgpID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKCpmZCkpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJ1bmFibGUgdG8gYWxsb2NhdGUgYW4gYXJyYXkgZm9yICVzICIKLSAgICAgICAgICAgICJmaWxlIGRlc2NyaXB0b3JzLCB3b3VsZCBvdmVyZmxvdyBzaXplX3QiLCBzdHJidWZmMSk7CisgIGlmKChzaXplX3QpKG51bV9vcGVuLnJsaW1fbWF4KSA+ICgoc2l6ZV90KS0xKSAvIHNpemVvZigqZmQpKSB7CisgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgInVuYWJsZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBmb3IgJXMgIgorICAgICAgICAgICAgICJmaWxlIGRlc2NyaXB0b3JzLCB3b3VsZCBvdmVyZmxvdyBzaXplX3QiLCBzdHJidWZmMSk7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIGZyZWUobWVtY2h1bmspOwpAQCAtMjk3LDExICsyOTgsMTEgQEAKIAogICAvKiBhbGxvY2F0ZSBhcnJheSBmb3IgZmlsZSBkZXNjcmlwdG9ycyAqLwogCi0gIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAiYWxsb2NhdGluZyBhcnJheSBmb3IgJXMgZmlsZSBkZXNjcmlwdG9yc1xuIiwgc3RyYnVmZik7CiAKICAgZmQgPSBtYWxsb2Moc2l6ZW9mKCpmZCkgKiAoc2l6ZV90KShudW1fb3Blbi5ybGltX21heCkpOwotICBpZiAoIWZkKSB7CisgIGlmKCFmZCkgewogICAgIHN0b3JlX2Vycm1zZygiZmQsIG1hbGxvYygpIGZhaWxlZCIsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBmcmVlKG1lbWNodW5rKTsKQEAgLTMxMiwxOSArMzEzLDE5IEBACiAKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsaXppbmcgZmQgYXJyYXlcbiIpOwogCi0gIGZvciAobnVtX29wZW4ucmxpbV9jdXIgPSAwOwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyIDwgbnVtX29wZW4ucmxpbV9tYXg7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKKyAgZm9yKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyIDwgbnVtX29wZW4ucmxpbV9tYXg7CisgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQogICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA9IC0xOwogCi0gIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAidHJ5aW5nIHRvIG9wZW4gJXMgZmlsZSBkZXNjcmlwdG9yc1xuIiwgc3RyYnVmZik7CiAKICAgLyogb3BlbiBhIGR1bW15IGRlc2NyaXB0b3IgKi8KIAogICBmZFswXSA9IG9wZW4oREVWX05VTEwsIE9fUkRPTkxZKTsKLSAgaWYgKGZkWzBdIDwgMCkgewotICAgIHNwcmludGYoc3RyYnVmZiwgIm9wZW5pbmcgb2YgJXMgZmFpbGVkIiwgREVWX05VTEwpOworICBpZihmZFswXSA8IDApIHsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJvcGVuaW5nIG9mICVzIGZhaWxlZCIsIERFVl9OVUxMKTsKICAgICBzdG9yZV9lcnJtc2coc3RyYnVmZiwgRVJSTk8pOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIGZyZWUoZmQpOwpAQCAtMzM1LDM2ICszMzYsMzcgQEAKIAogICAvKiBjcmVhdGUgYSBidW5jaCBvZiBmaWxlIGRlc2NyaXB0b3JzICovCiAKLSAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IDE7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKSB7CisgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDE7CisgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykgewogCiAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID0gZHVwKGZkWzBdKTsKIAotICAgIGlmIChmZFtudW1fb3Blbi5ybGltX2N1cl0gPCAwKSB7CisgICAgaWYoZmRbbnVtX29wZW4ucmxpbV9jdXJdIDwgMCkgewogCiAgICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPSAtMTsKIAotICAgICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7Ci0gICAgICBzcHJpbnRmKHN0cmJ1ZmYsICJkdXAoKSBhdHRlbXB0ICVzIGZhaWxlZCIsIHN0cmJ1ZmYxKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgImR1cCgpIGF0dGVtcHQgJXMgZmFpbGVkIiwgc3RyYnVmZjEpOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgc3RyYnVmZik7CiAKLSAgICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOwotICAgICAgc3ByaW50ZihzdHJidWZmLCAiZmRzIHN5c3RlbSBsaW1pdCBzZWVtcyBjbG9zZSB0byAlcyIsIHN0cmJ1ZmYxKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAiZmRzIHN5c3RlbSBsaW1pdCBzZWVtcyBjbG9zZSB0byAlcyIsCisgICAgICAgICAgICAgICBzdHJidWZmMSk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBzdHJidWZmKTsKIAogICAgICAgbnVtX29wZW4ucmxpbV9tYXggPSBOVU1fTkVFREVEOwogCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYyLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKLSAgICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOwotICAgICAgc3ByaW50ZihzdHJidWZmLCAiZmRzIG5lZWRlZCAlcyA+IHN5c3RlbSBsaW1pdCAlcyIsCi0gICAgICAgICAgICAgIHN0cmJ1ZmYyLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMiwgc2l6ZW9mKHN0cmJ1ZmYyKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJmZHMgbmVlZGVkICVzID4gc3lzdGVtIGxpbWl0ICVzIiwKKyAgICAgICAgICAgICAgIHN0cmJ1ZmYyLCBzdHJidWZmMSk7CiAgICAgICBzdG9yZV9lcnJtc2coc3RyYnVmZiwgMCk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKIAotICAgICAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IDA7Ci0gICAgICAgICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA+PSAwOwotICAgICAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQorICAgICAgZm9yKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKKyAgICAgICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPj0gMDsKKyAgICAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQogICAgICAgICBjbG9zZShmZFtudW1fb3Blbi5ybGltX2N1cl0pOwogICAgICAgZnJlZShmZCk7CiAgICAgICBmZCA9IE5VTEw7CkBAIC0zNzUsNyArMzc3LDcgQEAKIAogICB9CiAKLSAgc3ByaW50ZihzdHJidWZmLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKICAgZnByaW50ZihzdGRlcnIsICIlcyBmaWxlIGRlc2NyaXB0b3JzIG9wZW5cbiIsIHN0cmJ1ZmYpOwogCiAjaWYgIWRlZmluZWQoSEFWRV9QT0xMX0ZJTkUpICAgICYmIFwKQEAgLTM5NCw4ICszOTYsOSBAQAogICAgKi8KIAogICBudW1fb3Blbi5ybGltX2N1ciA9IEZEX1NFVFNJWkUgLSBTQUZFVFlfTUFSR0lOOwotICBpZiAobnVtX29wZW4ucmxpbV9tYXggPiBudW1fb3Blbi5ybGltX2N1cikgewotICAgIHNwcmludGYoc3RyYnVmZiwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwgRkRfU0VUU0laRSk7CisgIGlmKG51bV9vcGVuLnJsaW1fbWF4ID4gbnVtX29wZW4ucmxpbV9jdXIpIHsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsCisgICAgICAgICAgICAgRkRfU0VUU0laRSk7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKQEAgLTQwNCwxMiArNDA3LDEzIEBACiAgIH0KIAogICBudW1fb3Blbi5ybGltX2N1ciA9IEZEX1NFVFNJWkUgLSBTQUZFVFlfTUFSR0lOOwotICBmb3IgKHJsLnJsaW1fY3VyID0gMDsKLSAgICAgICBybC5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIHJsLnJsaW1fY3VyKyspIHsKLSAgICBpZiAoKGZkW3JsLnJsaW1fY3VyXSA+IDApICYmCisgIGZvcihybC5ybGltX2N1ciA9IDA7CisgICAgICBybC5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgcmwucmxpbV9jdXIrKykgeworICAgIGlmKChmZFtybC5ybGltX2N1cl0gPiAwKSAmJgogICAgICAgICgodW5zaWduZWQgaW50KWZkW3JsLnJsaW1fY3VyXSA+IG51bV9vcGVuLnJsaW1fY3VyKSkgewotICAgICAgc3ByaW50ZihzdHJidWZmLCAic2VsZWN0IGxpbWl0IGlzIEZEX1NFVFNJWkUgJWQiLCBGRF9TRVRTSVpFKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwKKyAgICAgICAgICAgICAgIEZEX1NFVFNJWkUpOwogICAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CkBAIC00MjksMTIgKzQzMywxNCBAQAogICAgKiBpZiBpdCBpcyBjYXBhYmxlIG9mIGZvcGVuKClpbmcgc29tZSBhZGRpdGlvbmFsIGZpbGVzLgogICAgKi8KIAotICBpZiAoIWZvcGVuX3dvcmtzKCkpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJzdGRpbyBmb3BlbigpIGZhaWxzIHdpdGggJXMgZmRzIG9wZW4oKSIsCi0gICAgICAgICAgICBzdHJidWZmMSk7CisgIGlmKCFmb3Blbl93b3JrcygpKSB7CisgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwKKyAgICAgICAgICAgICAiZm9wZW4gZmFpbHMgd2l0aCAlcyBmZHMgb3BlbigpIiwKKyAgICAgICAgICAgICBzdHJidWZmMSk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAic3RkaW8gZm9wZW4oKSBmYWlscyB3aXRoIGxvdHMgb2YgZmRzIG9wZW4oKSIpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwKKyAgICAgICAgICAgICAiZm9wZW4gZmFpbHMgd2l0aCBsb3RzIG9mIGZkcyBvcGVuKCkiKTsKICAgICBzdG9yZV9lcnJtc2coc3RyYnVmZiwgMCk7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIGZyZWUobWVtY2h1bmspOwpAQCAtNDQ4LDcgKzQ1NCw3IEBACiAKICAgLyogY2xvc2UgZmlsZSBkZXNjcmlwdG9ycyB1bmxlc3MgaW5zdHJ1Y3RlZCB0byBrZWVwIHRoZW0gKi8KIAotICBpZiAoIWtlZXBfb3BlbikgeworICBpZigha2VlcF9vcGVuKSB7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICB9CiAKQEAgLTQ2OSw3ICs0NzUsNyBAQAogICAgIHJldHVybiAwOyAvKiBzdXJlLCBydW4gdGhpcyEgKi8KICAgfQogCi0gIGlmIChybGltaXQoVFJVRSkpIHsKKyAgaWYocmxpbWl0KFRSVUUpKSB7CiAgICAgLyogZmFpbHVyZSAqLwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KQEAgLTQ3NywxMyArNDgzLDEzIEBACiAgIC8qIHJ1biB0aGUgdGVzdCB3aXRoIHRoZSBidW5jaCBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMKICAgICAgYW5kIGNsb3NlIHRoZW0gYWxsIG9uY2UgdGhlIHRlc3QgaXMgb3ZlciAqLwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTE5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxOS5jCmluZGV4IGI3MjBjOGYuLjZlMzA1OTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTE5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MjAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTIwLmMKaW5kZXggOWZmYWE0Zi4uYjVhNzFkYSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MjAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUyMS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MjEuYwppbmRleCA5M2MzMDY4Li40MGY0ZGVmIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUyMS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTIxLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTIzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyMy5jCmluZGV4IDBmZGM4M2QuLmYzMjY0NjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTIzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MjMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MjQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTI0LmMKaW5kZXggNmY1NmRmOS4uMzQ0MDU2MiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MjQuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyNC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUyNS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MjUuYwppbmRleCBjYTEyOGNiLi40YmYyNTlkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUyNS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTI1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiAgIGludCByZXMgPSAwOwogICBDVVJMICpjdXJsID0gTlVMTDsKICAgRklMRSAqaGRfc3JjID0gTlVMTDsKLSAgaW50IGhkIDsKKyAgaW50IGhkOwogICBpbnQgZXJyb3I7CiAgIHN0cnVjdF9zdGF0IGZpbGVfaW5mbzsKICAgQ1VSTE0gKm0gPSBOVUxMOwpAQCAtNTYsNyArNTYsNyBAQAogICBoZF9zcmMgPSBmb3BlbihsaWJ0ZXN0X2FyZzIsICJyYiIpOwogICBpZihOVUxMID09IGhkX3NyYykgewogICAgIGVycm9yID0gRVJSTk87Ci0gICAgZnByaW50ZihzdGRlcnIsICJmb3BlbigpIGZhaWxlZCB3aXRoIGVycm9yOiAlZCAoJXMpXG4iLAorICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW4gZmFpbGVkIHdpdGggZXJyb3I6ICVkICglcylcbiIsCiAgICAgICAgICAgICBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZTogKCVzKVxuIiwgbGlidGVzdF9hcmcyKTsKICAgICByZXR1cm4gVEVTVF9FUlJfRk9QRU47CkBAIC04Niw3ICs4Niw3IEBACiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCk7CiAKICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgVVJMKTsKKyAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKICAgLyogZ28gdmVyYm9zZSAqLwogICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTI2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyNi5jCmluZGV4IDlkYjA0ZGIuLjBjZTdlYmIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTI2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MjYuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUzMC5jIGIvdGVzdHMvbGlidGVzdC9saWI1MzAuYwppbmRleCBlNjBkMTE3Li44MmJmYWIzIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUzMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTMwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Myw3ICs1Myw3IEBACiAgICAgLyogZ2V0IGFuIGVhc3kgaGFuZGxlICovCiAgICAgZWFzeV9pbml0KGN1cmxbaV0pOwogICAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gICAgc3ByaW50Zih0YXJnZXRfdXJsLCAiJXMlMDRpIiwgVVJMLCBpICsgMSk7CisgICAgc25wcmludGYodGFyZ2V0X3VybCwgc2l6ZW9mKHRhcmdldF91cmwpLCAiJXMlMDRpIiwgVVJMLCBpICsgMSk7CiAgICAgdGFyZ2V0X3VybFtzaXplb2YodGFyZ2V0X3VybCkgLSAxXSA9ICdcMCc7CiAgICAgZWFzeV9zZXRvcHQoY3VybFtpXSwgQ1VSTE9QVF9VUkwsIHRhcmdldF91cmwpOwogICAgIC8qIGdvIHZlcmJvc2UgKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTMzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzMy5jCmluZGV4IGZkYzE4YTEuLjcwNmIyNjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTMzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MzMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUzNi5jIGIvdGVzdHMvbGlidGVzdC9saWI1MzYuYwppbmRleCBlM2FlNDAyLi5mM2JhNTczIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUzNi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTM2LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MzcuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTM3LmMKaW5kZXggNWRhNTM3OS4uYzE1NjE0MSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MzcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzNy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTcsMTggKzU3LDE5IEBACiAKIHN0YXRpYyB2b2lkIHN0b3JlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIGludCBlcnIpCiB7Ci0gIGlmICghZXJyKQotICAgIHNwcmludGYobXNnYnVmZiwgIiVzIiwgbXNnKTsKKyAgaWYoIWVycikKKyAgICBzbnByaW50Zihtc2didWZmLCBzaXplb2YobXNnYnVmZiksICIlcyIsIG1zZyk7CiAgIGVsc2UKLSAgICBzcHJpbnRmKG1zZ2J1ZmYsICIlcywgZXJybm8gJWQsICVzIiwgbXNnLCBlcnIsIHN0cmVycm9yKGVycikpOworICAgIHNucHJpbnRmKG1zZ2J1ZmYsIHNpemVvZihtc2didWZmKSwgIiVzLCBlcnJubyAlZCwgJXMiLCBtc2csIGVyciwKKyAgICAgICAgICAgICBzdHJlcnJvcihlcnIpKTsKIH0KIAogc3RhdGljIHZvaWQgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycyh2b2lkKQogewotICBmb3IgKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCi0gICAgaWYgKGZkW251bV9vcGVuLnJsaW1fY3VyXSA+IDApCisgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDA7CisgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKKyAgICBpZihmZFtudW1fb3Blbi5ybGltX2N1cl0gPiAwKQogICAgICAgY2xvc2UoZmRbbnVtX29wZW4ucmxpbV9jdXJdKTsKICAgZnJlZShmZCk7CiAgIGZkID0gTlVMTDsKQEAgLTgwLDIwICs4MSwyMCBAQAogICBpbnQgaTsKICAgaW50IHJldCA9IDE7CiAKLSAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICBmcGFbaV0gPSBOVUxMOwogICB9Ci0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICBmcGFbaV0gPSBmb3BlbihERVZfTlVMTCwgInIiKTsKLSAgICBpZiAoZnBhW2ldID09IE5VTEwpIHsKLSAgICAgIHN0b3JlX2Vycm1zZygiZm9wZW4oKSBmYWlsZWQiLCBFUlJOTyk7CisgIGZvcihpID0gMDsgaSA8IDM7IGkrKykgeworICAgIGZwYVtpXSA9IGZvcGVuKERFVl9OVUxMLCBGT1BFTl9SRUFEVEVYVCk7CisgICAgaWYoZnBhW2ldID09IE5VTEwpIHsKKyAgICAgIHN0b3JlX2Vycm1zZygiZm9wZW4gZmFpbGVkIiwgRVJSTk8pOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgICByZXQgPSAwOwogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICBpZiAoZnBhW2ldICE9IE5VTEwpCisgIGZvcihpID0gMDsgaSA8IDM7IGkrKykgeworICAgIGlmKGZwYVtpXSAhPSBOVUxMKQogICAgICAgZmNsb3NlKGZwYVtpXSk7CiAgIH0KICAgcmV0dXJuIHJldDsKQEAgLTExMyw3ICsxMTQsNyBAQAogI2lmZGVmIEhBVkVfTE9OR0xPTkcKICAgY2hhciBmbXRfbGx1W10gPSAiJWxsdSI7CiAKLSAgaWYgKHNpemVvZihybC5ybGltX21heCkgPiBzaXplb2YobG9uZykpCisgIGlmKHNpemVvZihybC5ybGltX21heCkgPiBzaXplb2YobG9uZykpCiAgICAgZm10ID0gZm10X2xsdTsKICAgZWxzZQogI2VuZGlmCkBAIC0xMjEsNyArMTIyLDcgQEAKIAogICAvKiBnZXQgaW5pdGlhbCBvcGVuIGZpbGUgbGltaXRzICovCiAKLSAgaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKKyAgaWYoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgIHN0b3JlX2Vycm1zZygiZ2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIHJldHVybiAtMTsKQEAgLTEzMCwxOSArMTMxLDE5IEBACiAgIC8qIHNob3cgaW5pdGlhbCBvcGVuIGZpbGUgbGltaXRzICovCiAKICNpZmRlZiBSTElNX0lORklOSVRZCi0gIGlmIChybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQorICBpZihybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogICAgIHN0cmNweShzdHJidWZmLCAiSU5GSU5JVFkiKTsKICAgZWxzZQogI2VuZGlmCi0gICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fY3VyKTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgcmwucmxpbV9jdXIpOwogICBmcHJpbnRmKHN0ZGVyciwgImluaXRpYWwgc29mdCBsaW1pdDogJXNcbiIsIHN0cmJ1ZmYpOwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICBpZiAocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKKyAgaWYocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgIGVsc2UKICNlbmRpZgotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX21heCk7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fbWF4KTsKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsIGhhcmQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogICAvKgpAQCAtMTU0LDE0ICsxNTUsMTQgQEAKICAgICogb3BlbiBtb3JlIHRoYW4gc29mdCBsaW1pdCBmaWxlIGRlc2NyaXB0b3JzIHdpbGwgZmFpbC4KICAgICovCiAKLSAgaWYgKHJsLnJsaW1fY3VyICE9IHJsLnJsaW1fbWF4KSB7CisgIGlmKHJsLnJsaW1fY3VyICE9IHJsLnJsaW1fbWF4KSB7CiAKICNpZmRlZiBPUEVOX01BWAotICAgIGlmICgocmwucmxpbV9jdXIgPiAwKSAmJgorICAgIGlmKChybC5ybGltX2N1ciA+IDApICYmCiAgICAgICAgIChybC5ybGltX2N1ciA8IE9QRU5fTUFYKSkgewogICAgICAgZnByaW50ZihzdGRlcnIsICJyYWlzaW5nIHNvZnQgbGltaXQgdXAgdG8gT1BFTl9NQVhcbiIpOwogICAgICAgcmwucmxpbV9jdXIgPSBPUEVOX01BWDsKLSAgICAgIGlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgICAgICBpZihzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CiAgICAgICAgIC8qIG9uIGZhaWx1cmUgZG9uJ3QgYWJvcnQganVzdCBpc3N1ZSBhIHdhcm5pbmcgKi8KICAgICAgICAgc3RvcmVfZXJybXNnKCJzZXRybGltaXQoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwpAQCAtMTcyLDcgKzE3Myw3IEBACiAKICAgICBmcHJpbnRmKHN0ZGVyciwgInJhaXNpbmcgc29mdCBsaW1pdCB1cCB0byBoYXJkIGxpbWl0XG4iKTsKICAgICBybC5ybGltX2N1ciA9IHJsLnJsaW1fbWF4OwotICAgIGlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgICAgaWYoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgICAgLyogb24gZmFpbHVyZSBkb24ndCBhYm9ydCBqdXN0IGlzc3VlIGEgd2FybmluZyAqLwogICAgICAgc3RvcmVfZXJybXNnKCJzZXRybGltaXQoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKQEAgLTE4MSw3ICsxODIsNyBAQAogCiAgICAgLyogZ2V0IGN1cnJlbnQgb3BlbiBmaWxlIGxpbWl0cyAqLwogCi0gICAgaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKKyAgICBpZihnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CiAgICAgICBzdG9yZV9lcnJtc2coImdldHJsaW1pdCgpIGZhaWxlZCIsIEVSUk5PKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgICAgcmV0dXJuIC0zOwpAQCAtMTkwLDE5ICsxOTEsMTkgQEAKICAgICAvKiBzaG93IGN1cnJlbnQgb3BlbiBmaWxlIGxpbWl0cyAqLwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICAgIGlmIChybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQorICAgIGlmKHJsLnJsaW1fY3VyID09IFJMSU1fSU5GSU5JVFkpCiAgICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgcmwucmxpbV9jdXIpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fY3VyKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cnJlbnQgc29mdCBsaW1pdDogJXNcbiIsIHN0cmJ1ZmYpOwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICAgIGlmIChybC5ybGltX21heCA9PSBSTElNX0lORklOSVRZKQorICAgIGlmKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCiAgICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgcmwucmxpbV9tYXgpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fbWF4KTsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cnJlbnQgaGFyZCBsaW1pdDogJXNcbiIsIHN0cmJ1ZmYpOwogCiAgIH0gLyogKHJsLnJsaW1fY3VyICE9IHJsLnJsaW1fbWF4KSAqLwpAQCAtMjI2LDIxICsyMjcsMjEgQEAKICAgICogdGhhdCBpdCBiZWNvbWVzIGF2YWlsYWJsZSB0byB0aGUgdGVzdC4KICAgICovCiAKLSAgZm9yIChuaXRlbXMgPSBpID0gMTsgbml0ZW1zIDw9IGk7IGkgKj0gMikKKyAgZm9yKG5pdGVtcyA9IGkgPSAxOyBuaXRlbXMgPD0gaTsgaSAqPSAyKQogICAgIG5pdGVtcyA9IGk7Ci0gIGlmIChuaXRlbXMgPiAweDdmZmYpCisgIGlmKG5pdGVtcyA+IDB4N2ZmZikKICAgICBuaXRlbXMgPSAweDQwMDAwOwogICBkbyB7CiAgICAgbnVtX29wZW4ucmxpbV9tYXggPSBzaXplb2YoKm1lbWNodW5rKSAqIChzaXplX3Qpbml0ZW1zOwotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKICAgICBmcHJpbnRmKHN0ZGVyciwgImFsbG9jYXRpbmcgbWVtY2h1bmsgJXMgYnl0ZSBhcnJheVxuIiwgc3RyYnVmZik7CiAgICAgbWVtY2h1bmsgPSBtYWxsb2Moc2l6ZW9mKCptZW1jaHVuaykgKiAoc2l6ZV90KW5pdGVtcyk7Ci0gICAgaWYgKCFtZW1jaHVuaykgeworICAgIGlmKCFtZW1jaHVuaykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJtZW1jaHVuaywgbWFsbG9jKCkgZmFpbGVkXG4iKTsKICAgICAgIG5pdGVtcyAvPSAyOwogICAgIH0KLSAgfSB3aGlsZSAobml0ZW1zICYmICFtZW1jaHVuayk7Ci0gIGlmICghbWVtY2h1bmspIHsKKyAgfSB3aGlsZShuaXRlbXMgJiYgIW1lbWNodW5rKTsKKyAgaWYoIW1lbWNodW5rKSB7CiAgICAgc3RvcmVfZXJybXNnKCJtZW1jaHVuaywgbWFsbG9jKCkgZmFpbGVkIiwgRVJSTk8pOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIHJldHVybiAtNDsKQEAgLTI1MCwzNCArMjUxLDM0IEBACiAKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsaXppbmcgbWVtY2h1bmsgYXJyYXlcbiIpOwogCi0gIGZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKyAgZm9yKGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspCiAgICAgbWVtY2h1bmtbaV0gPSAtMTsKIAogICAvKiBzZXQgdGhlIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIHdlIHdpbGwgdHJ5IHRvIG9wZW4gKi8KIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgaWYgKChybC5ybGltX2N1ciA+IDApICYmIChybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZKSkgeworICBpZigocmwucmxpbV9jdXIgPiAwKSAmJiAocmwucmxpbV9jdXIgIT0gUkxJTV9JTkZJTklUWSkpIHsKICNlbHNlCi0gIGlmIChybC5ybGltX2N1ciA+IDApIHsKKyAgaWYocmwucmxpbV9jdXIgPiAwKSB7CiAjZW5kaWYKICAgICAvKiBzb2Z0IGxpbWl0IG1pbnVzIFNBRkVUWV9NQVJHSU4gKi8KICAgICBudW1fb3Blbi5ybGltX21heCA9IHJsLnJsaW1fY3VyIC0gU0FGRVRZX01BUkdJTjsKICAgfQogICBlbHNlIHsKICAgICAvKiBhIGh1Z2UgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgKi8KLSAgICBmb3IgKG5pdGVtcyA9IGkgPSAxOyBuaXRlbXMgPD0gaTsgaSAqPSAyKQorICAgIGZvcihuaXRlbXMgPSBpID0gMTsgbml0ZW1zIDw9IGk7IGkgKj0gMikKICAgICAgIG5pdGVtcyA9IGk7Ci0gICAgaWYgKG5pdGVtcyA+IDB4N2ZmZikKKyAgICBpZihuaXRlbXMgPiAweDdmZmYpCiAgICAgICBuaXRlbXMgPSAweDQwMDAwOwogICAgIG51bV9vcGVuLnJsaW1fbWF4ID0gbml0ZW1zOwogICB9CiAKICAgLyogdmVyaWZ5IHRoYXQgd2Ugd29uJ3Qgb3ZlcmZsb3cgc2l6ZV90IGluIG1hbGxvYygpICovCiAKLSAgaWYgKChzaXplX3QpKG51bV9vcGVuLnJsaW1fbWF4KSA+ICgoc2l6ZV90KS0xKSAvIHNpemVvZigqZmQpKSB7Ci0gICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAidW5hYmxlIHRvIGFsbG9jYXRlIGFuIGFycmF5IGZvciAlcyAiCi0gICAgICAgICAgICAiZmlsZSBkZXNjcmlwdG9ycywgd291bGQgb3ZlcmZsb3cgc2l6ZV90Iiwgc3RyYnVmZjEpOworICBpZigoc2l6ZV90KShudW1fb3Blbi5ybGltX21heCkgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoKmZkKSkgeworICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJ1bmFibGUgdG8gYWxsb2NhdGUgYW4gYXJyYXkgZm9yICVzICIKKyAgICAgICAgICAgICAiZmlsZSBkZXNjcmlwdG9ycywgd291bGQgb3ZlcmZsb3cgc2l6ZV90Iiwgc3RyYnVmZjEpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBmcmVlKG1lbWNodW5rKTsKQEAgLTI4NywxNSArMjg4LDE1IEBACiAgIC8qIGFsbG9jYXRlIGFycmF5IGZvciBmaWxlIGRlc2NyaXB0b3JzICovCiAKICAgZG8gewotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKICAgICBmcHJpbnRmKHN0ZGVyciwgImFsbG9jYXRpbmcgYXJyYXkgZm9yICVzIGZpbGUgZGVzY3JpcHRvcnNcbiIsIHN0cmJ1ZmYpOwogICAgIGZkID0gbWFsbG9jKHNpemVvZigqZmQpICogKHNpemVfdCkobnVtX29wZW4ucmxpbV9tYXgpKTsKLSAgICBpZiAoIWZkKSB7CisgICAgaWYoIWZkKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgImZkLCBtYWxsb2MoKSBmYWlsZWRcbiIpOwogICAgICAgbnVtX29wZW4ucmxpbV9tYXggLz0gMjsKICAgICB9Ci0gIH0gd2hpbGUgKG51bV9vcGVuLnJsaW1fbWF4ICYmICFmZCk7Ci0gIGlmICghZmQpIHsKKyAgfSB3aGlsZShudW1fb3Blbi5ybGltX21heCAmJiAhZmQpOworICBpZighZmQpIHsKICAgICBzdG9yZV9lcnJtc2coImZkLCBtYWxsb2MoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgZnJlZShtZW1jaHVuayk7CkBAIC0zMDYsMTkgKzMwNywxOSBAQAogCiAgIGZwcmludGYoc3RkZXJyLCAiaW5pdGlhbGl6aW5nIGZkIGFycmF5XG4iKTsKIAotICBmb3IgKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCisgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDA7CisgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPSAtMTsKIAotICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwogICBmcHJpbnRmKHN0ZGVyciwgInRyeWluZyB0byBvcGVuICVzIGZpbGUgZGVzY3JpcHRvcnNcbiIsIHN0cmJ1ZmYpOwogCiAgIC8qIG9wZW4gYSBkdW1teSBkZXNjcmlwdG9yICovCiAKICAgZmRbMF0gPSBvcGVuKERFVl9OVUxMLCBPX1JET05MWSk7Ci0gIGlmIChmZFswXSA8IDApIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJvcGVuaW5nIG9mICVzIGZhaWxlZCIsIERFVl9OVUxMKTsKKyAgaWYoZmRbMF0gPCAwKSB7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAib3BlbmluZyBvZiAlcyBmYWlsZWQiLCBERVZfTlVMTCk7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBmcmVlKGZkKTsKQEAgLTMyOSw0NSArMzMwLDQ3IEBACiAKICAgLyogY3JlYXRlIGEgYnVuY2ggb2YgZmlsZSBkZXNjcmlwdG9ycyAqLwogCi0gIGZvciAobnVtX29wZW4ucmxpbV9jdXIgPSAxOwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyIDwgbnVtX29wZW4ucmxpbV9tYXg7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykgeworICBmb3IobnVtX29wZW4ucmxpbV9jdXIgPSAxOworICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspIHsKIAogICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA9IGR1cChmZFswXSk7CiAKLSAgICBpZiAoZmRbbnVtX29wZW4ucmxpbV9jdXJdIDwgMCkgeworICAgIGlmKGZkW251bV9vcGVuLnJsaW1fY3VyXSA8IDApIHsKIAogICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID0gLTE7CiAKLSAgICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOwotICAgICAgc3ByaW50ZihzdHJidWZmLCAiZHVwKCkgYXR0ZW1wdCAlcyBmYWlsZWQiLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJkdXAoKSBhdHRlbXB0ICVzIGZhaWxlZCIsIHN0cmJ1ZmYxKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHN0cmJ1ZmYpOwogCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgImZkcyBzeXN0ZW0gbGltaXQgc2VlbXMgY2xvc2UgdG8gJXMiLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJmZHMgc3lzdGVtIGxpbWl0IHNlZW1zIGNsb3NlIHRvICVzIiwKKyAgICAgICAgICAgICAgIHN0cmJ1ZmYxKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHN0cmJ1ZmYpOwogCiAgICAgICBudW1fb3Blbi5ybGltX21heCA9IG51bV9vcGVuLnJsaW1fY3VyIC0gU0FGRVRZX01BUkdJTjsKIAogICAgICAgbnVtX29wZW4ucmxpbV9jdXIgLT0gbnVtX29wZW4ucmxpbV9tYXg7Ci0gICAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgImNsb3NpbmcgJXMgZmlsZSBkZXNjcmlwdG9ycyIsIHN0cmJ1ZmYxKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgImNsb3NpbmcgJXMgZmlsZSBkZXNjcmlwdG9ycyIsCisgICAgICAgICAgICAgICBzdHJidWZmMSk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBzdHJidWZmKTsKIAotICAgICAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPj0gMDsKLSAgICAgICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykgeworICAgICAgZm9yKG51bV9vcGVuLnJsaW1fY3VyID0gbnVtX29wZW4ucmxpbV9tYXg7CisgICAgICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID49IDA7CisgICAgICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykgewogICAgICAgICBjbG9zZShmZFtudW1fb3Blbi5ybGltX2N1cl0pOwogICAgICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPSAtMTsKICAgICAgIH0KIAotICAgICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNocmlua2luZyBhcnJheSBmb3IgJXMgZmlsZSBkZXNjcmlwdG9yc1xuIiwgc3RyYnVmZik7CiAKICAgICAgIC8qIHdlIGRvbid0IGNhcmUgaWYgd2UgY2FuJ3Qgc2hyaW5rIGl0ICovCiAKICAgICAgIHRtcGZkID0gcmVhbGxvYyhmZCwgc2l6ZW9mKCpmZCkgKiAoc2l6ZV90KShudW1fb3Blbi5ybGltX21heCkpOwotICAgICAgaWYgKHRtcGZkKSB7CisgICAgICBpZih0bXBmZCkgewogICAgICAgICBmZCA9IHRtcGZkOwogICAgICAgICB0bXBmZCA9IE5VTEw7CiAgICAgICB9CkBAIC0zNzgsNyArMzgxLDcgQEAKIAogICB9CiAKLSAgc3ByaW50ZihzdHJidWZmLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKICAgZnByaW50ZihzdGRlcnIsICIlcyBmaWxlIGRlc2NyaXB0b3JzIG9wZW5cbiIsIHN0cmJ1ZmYpOwogCiAjaWYgIWRlZmluZWQoSEFWRV9QT0xMX0ZJTkUpICAgICYmIFwKQEAgLTM5Nyw4ICs0MDAsOSBAQAogICAgKi8KIAogICBudW1fb3Blbi5ybGltX2N1ciA9IEZEX1NFVFNJWkUgLSBTQUZFVFlfTUFSR0lOOwotICBpZiAobnVtX29wZW4ucmxpbV9tYXggPiBudW1fb3Blbi5ybGltX2N1cikgewotICAgIHNwcmludGYoc3RyYnVmZiwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwgRkRfU0VUU0laRSk7CisgIGlmKG51bV9vcGVuLnJsaW1fbWF4ID4gbnVtX29wZW4ucmxpbV9jdXIpIHsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsCisgICAgICAgICAgICAgRkRfU0VUU0laRSk7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKQEAgLTQwNywxMiArNDExLDEzIEBACiAgIH0KIAogICBudW1fb3Blbi5ybGltX2N1ciA9IEZEX1NFVFNJWkUgLSBTQUZFVFlfTUFSR0lOOwotICBmb3IgKHJsLnJsaW1fY3VyID0gMDsKLSAgICAgICBybC5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIHJsLnJsaW1fY3VyKyspIHsKLSAgICBpZiAoKGZkW3JsLnJsaW1fY3VyXSA+IDApICYmCisgIGZvcihybC5ybGltX2N1ciA9IDA7CisgICAgICBybC5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgcmwucmxpbV9jdXIrKykgeworICAgIGlmKChmZFtybC5ybGltX2N1cl0gPiAwKSAmJgogICAgICAgICgodW5zaWduZWQgaW50KWZkW3JsLnJsaW1fY3VyXSA+IG51bV9vcGVuLnJsaW1fY3VyKSkgewotICAgICAgc3ByaW50ZihzdHJidWZmLCAic2VsZWN0IGxpbWl0IGlzIEZEX1NFVFNJWkUgJWQiLCBGRF9TRVRTSVpFKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwKKyAgICAgICAgICAgICAgIEZEX1NFVFNJWkUpOwogICAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CkBAIC00MzIsMTIgKzQzNywxMiBAQAogICAgKiBpZiBpdCBpcyBjYXBhYmxlIG9mIGZvcGVuKClpbmcgc29tZSBhZGRpdGlvbmFsIGZpbGVzLgogICAgKi8KIAotICBpZiAoIWZvcGVuX3dvcmtzKCkpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJzdGRpbyBmb3BlbigpIGZhaWxzIHdpdGggJXMgZmRzIG9wZW4oKSIsCisgIGlmKCFmb3Blbl93b3JrcygpKSB7CisgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgImZvcGVuIGZhaWxzIHdpdGggJXMgZmRzIG9wZW4iLAogICAgICAgICAgICAgc3RyYnVmZjEpOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwotICAgIHNwcmludGYoc3RyYnVmZiwgInN0ZGlvIGZvcGVuKCkgZmFpbHMgd2l0aCBsb3RzIG9mIGZkcyBvcGVuKCkiKTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJmb3BlbiBmYWlscyB3aXRoIGxvdHMgb2YgZmRzIG9wZW4iKTsKICAgICBzdG9yZV9lcnJtc2coc3RyYnVmZiwgMCk7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIGZyZWUobWVtY2h1bmspOwpAQCAtNDUxLDcgKzQ1Niw3IEBACiAKICAgLyogY2xvc2UgZmlsZSBkZXNjcmlwdG9ycyB1bmxlc3MgaW5zdHJ1Y3RlZCB0byBrZWVwIHRoZW0gKi8KIAotICBpZiAoIWtlZXBfb3BlbikgeworICBpZigha2VlcF9vcGVuKSB7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICB9CiAKQEAgLTQ3Miw3ICs0NzcsNyBAQAogICAgIHJldHVybiAwOyAvKiBzdXJlLCBydW4gdGhpcyEgKi8KICAgfQogCi0gIGlmIChybGltaXQoVFJVRSkpIHsKKyAgaWYocmxpbWl0KFRSVUUpKSB7CiAgICAgLyogZmFpbHVyZSAqLwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KQEAgLTQ4MCwxMyArNDg1LDEzIEBACiAgIC8qIHJ1biB0aGUgdGVzdCB3aXRoIHRoZSBidW5jaCBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMKICAgICAgYW5kIGNsb3NlIHRoZW0gYWxsIG9uY2UgdGhlIHRlc3QgaXMgb3ZlciAqLwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTM5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzOS5jCmluZGV4IDA1M2QyOTguLjlmMGY4ZmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTM5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MzkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDEyICszMCwxMiBAQAogICAgY2hhciAqbmV3VVJMID0gTlVMTDsKICAgIHN0cnVjdCBjdXJsX3NsaXN0ICpzbGlzdCA9IE5VTEw7CiAKLSAgIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgfQogCi0gICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKQEAgLTU4LDE2ICs1OCwxNSBAQAogICAgICogZXZlbiB0aG91Z2ggbm8gZGlyZWN0b3JpZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnRwY29ubi0+ZGlycyBhcnJheSAoYWZ0ZXIgYQogICAgICogY2FsbCB0byBmcmVlZGlycykuCiAgICAgKi8KLSAgIG5ld1VSTCA9IG1hbGxvYyhzdHJsZW4oVVJMKSArIDMpOwotICAgaWYgKG5ld1VSTCA9PSBOVUxMKSB7CisgICBuZXdVUkwgPSBhcHJpbnRmKCIlcy4vIiwgVVJMKTsKKyAgIGlmKG5ld1VSTCA9PSBOVUxMKSB7CiAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICB9Ci0gICBuZXdVUkwgPSBzdHJjYXQoc3RyY3B5KG5ld1VSTCwgVVJMKSwgIi4vIik7CiAKICAgIHNsaXN0ID0gY3VybF9zbGlzdF9hcHBlbmQgKE5VTEwsICJTWVNUIik7Ci0gICBpZiAoc2xpc3QgPT0gTlVMTCkgeworICAgaWYoc2xpc3QgPT0gTlVMTCkgewogICAgICBmcmVlKG5ld1VSTCk7CiAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU0MC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NDAuYwppbmRleCBhYzBlYmU2Li45YjNiNWE0IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU0MC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgaWYocmVzKQogICAgIHJldHVybiByZXM7CiAKLSAgd2hpbGUgKFUpIHsKKyAgd2hpbGUoVSkgewogCiAgICAgaW50IE0gPSAtOTk7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgIGlmKHJlcykKICAgICAgIHJldHVybiByZXM7CiAKLSAgICBpZiAoVSkgeworICAgIGlmKFUpIHsKICAgICAgIEZEX1pFUk8oJlIpOwogICAgICAgRkRfWkVSTygmVyk7CiAgICAgICBGRF9aRVJPKCZFKTsKQEAgLTIwMCw3ICsyMDAsNyBAQAogICBpZih0ZXN0X2FyZ2MgPCA0KQogICAgIHJldHVybiA5OTsKIAotICBzcHJpbnRmKGJ1ZmZlciwgIkhvc3Q6ICVzIiwgSE9TVCk7CisgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJIb3N0OiAlcyIsIEhPU1QpOwogCiAgIC8qIG5vdyBhZGQgYSBjdXN0b20gSG9zdDogaGVhZGVyICovCiAgIGhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCBidWZmZXIpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NDEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQxLmMKaW5kZXggNjAxNWQyZi4uNjA0NDQ2YSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NDEuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0MS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsMTIgKzM1LDEyIEBACiB7CiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcyA9IENVUkxFX09LOwotICBGSUxFICpoZF9zcmMgOworICBGSUxFICpoZF9zcmM7CiAgIGludCBoZDsKICAgc3RydWN0X3N0YXQgZmlsZV9pbmZvOwogICBpbnQgZXJyb3I7CiAKLSAgaWYgKCFsaWJ0ZXN0X2FyZzIpIHsKKyAgaWYoIWxpYnRlc3RfYXJnMikgewogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IDx1cmw+IDxmaWxlLXRvLXVwbG9hZD5cbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9VU0FHRTsKICAgfQpAQCAtNDgsNyArNDgsNyBAQAogICBoZF9zcmMgPSBmb3BlbihsaWJ0ZXN0X2FyZzIsICJyYiIpOwogICBpZihOVUxMID09IGhkX3NyYykgewogICAgIGVycm9yID0gRVJSTk87Ci0gICAgZnByaW50ZihzdGRlcnIsICJmb3BlbigpIGZhaWxlZCB3aXRoIGVycm9yOiAlZCAlc1xuIiwKKyAgICBmcHJpbnRmKHN0ZGVyciwgImZvcGVuIGZhaWxlZCB3aXRoIGVycm9yOiAlZCAlc1xuIiwKICAgICAgICAgICAgIGVycm9yLCBzdHJlcnJvcihlcnJvcikpOwogICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBmaWxlOiAlc1xuIiwgbGlidGVzdF9hcmcyKTsKICAgICByZXR1cm4gLTI7IC8qIGlmIHRoaXMgaGFwcGVucyB0aGluZ3MgYXJlIG1ham9yIHdlaXJkICovCkBAIC03MiwxNCArNzIsMTQgQEAKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGZjbG9zZShoZF9zcmMpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICAvKiBnZXQgYSBjdXJsIGhhbmRsZSAqLwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICBmY2xvc2UoaGRfc3JjKTsKQEAgLTkzLDcgKzkzLDcgQEAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAKICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgdGVzdF9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgVVJMKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKICAgLyogbm93IHNwZWNpZnkgd2hpY2ggZmlsZSB0byB1cGxvYWQgKi8KICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFEREFUQSwgaGRfc3JjKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTQyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0Mi5jCmluZGV4IDg0ZjQ5M2YuLmM4MmNjZDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTQyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NDIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDEzICszNiwxMyBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXMgPSBDVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIC8qIGdldCBhIGN1cmwgaGFuZGxlICovCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC01OCw3ICs1OCw3IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfSEVBREVSLCAwTCk7CiAKICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgdGVzdF9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgVVJMKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKICAgLyogTm93IHJ1biBvZmYgYW5kIGRvIHdoYXQgeW91J3ZlIGJlZW4gdG9sZCEgKi8KICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU0My5jIGIvdGVzdHMvbGlidGVzdC9saWI1NDMuYwppbmRleCBiNGEzMWNhLi44ZmVjMDUyIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU0My5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiw3IEBACiAgIGNoYXIgKnM7CiAgICh2b2lkKVVSTDsKIAotICBpZiAoKGVhc3kgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChlYXN5ID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTQ0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0NC5jCmluZGV4IDdlMmY3MzUuLjRiMDhhMGEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTQ0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NDQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQyLDEyICs0MiwxMiBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NDcuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQ3LmMKaW5kZXggYzgyYmMzZi4uNGVjNDJhMyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NDcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0Ny5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODUsMTIgKzg1LDEyIEBACiAgIGludCBjb3VudGVyPTA7CiAjZW5kaWYKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC0xMDgsNyArMTA4LDggQEAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9JT0NUTERBVEEsICZjb3VudGVyKTsKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIHJlYWRjYWxsYmFjayk7CiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsICZjb3VudGVyKTsKLSAgLyogV2UgQ0FOTk9UIGRvIHRoZSBQT1NUIGZpbmUgd2l0aG91dCBzZXR0aW5nIHRoZSBzaXplIChvciBjaG9vc2UgY2h1bmtlZCkhICovCisgIC8qIFdlIENBTk5PVCBkbyB0aGUgUE9TVCBmaW5lIHdpdGhvdXQgc2V0dGluZyB0aGUgc2l6ZSAob3IgY2hvb3NlCisgICAgIGNodW5rZWQpISAqLwogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIChsb25nKXN0cmxlbihVUExPQURUSElTKSk7CiAjZW5kaWYKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NULCAxTCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU0OS5jIGIvdGVzdHMvbGlidGVzdC9saWI1NDkuYwppbmRleCBhMTU2OGM4Li4xMzcwMjk1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU0OS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQ5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMywxMiArMzMsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTUyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1Mi5jCmluZGV4IDJjYzk0MmEuLjlmZTRhNzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTUyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NTIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYzLDE0ICs2MywxNCBAQAogCiAgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgewogICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgewogICAgICAgICBpKz0oYysyLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmcHJpbnRmKHN0cmVhbSwgIiVjIiwKICAgICAgICAgICAgICAgKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nKTsKICAgICAgIC8qIGNoZWNrIGFnYWluIGZvciAwRDBBLCB0byBhdm9pZCBhbiBleHRyYSBcbiBpZiBpdCdzIGF0IHdpZHRoICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMy13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTIxLDEyICsxMjEsMTQgQEAKIAogCiBzdGF0aWMgc2l6ZV90IGN1cnJlbnRfb2Zmc2V0ID0gMDsKLXN0YXRpYyBjaGFyIGRhdGFidWZbNzAwMDBdOyAvKiBNVVNUIGJlIG1vcmUgdGhhbiA2NGsgT1IgTUFYX0lOSVRJQUxfUE9TVF9TSVpFICovCitzdGF0aWMgY2hhciBkYXRhYnVmWzcwMDAwXTsgLyogTVVTVCBiZSBtb3JlIHRoYW4gNjRrIE9SCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0lOSVRJQUxfUE9TVF9TSVpFICovCiAKIHN0YXRpYyBzaXplX3QgcmVhZF9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKICAgc2l6ZV90ICBhbW91bnQgPSBubWVtYiAqIHNpemU7IC8qIFRvdGFsIGJ5dGVzIGN1cmwgd2FudHMgKi8KLSAgc2l6ZV90ICBhdmFpbGFibGUgPSBzaXplb2YoZGF0YWJ1ZikgLSBjdXJyZW50X29mZnNldDsgLyogV2hhdCB3ZSBoYXZlIHRvIGdpdmUgKi8KKyAgc2l6ZV90ICBhdmFpbGFibGUgPSBzaXplb2YoZGF0YWJ1ZikgLSBjdXJyZW50X29mZnNldDsgLyogV2hhdCB3ZSBoYXZlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmUgKi8KICAgc2l6ZV90ICBnaXZlbiA9IGFtb3VudCA8IGF2YWlsYWJsZSA/IGFtb3VudCA6IGF2YWlsYWJsZTsgLyogV2hhdCBpcyBnaXZlbiAqLwogICAodm9pZClzdHJlYW07CiAgIG1lbWNweShwdHIsIGRhdGFidWYgKyBjdXJyZW50X29mZnNldCwgZ2l2ZW4pOwpAQCAtMTM1LDcgKzEzNyw4IEBACiB9CiAKIAotc3RhdGljIHNpemVfdCB3cml0ZV9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKK3N0YXRpYyBzaXplX3Qgd3JpdGVfY2FsbGJhY2sodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW0pCiB7CiAgIGludCBhbW91bnQgPSBjdXJseF91enRvc2koc2l6ZSAqIG5tZW1iKTsKICAgcHJpbnRmKCIlLipzIiwgYW1vdW50LCAoY2hhciAqKXB0cik7CkBAIC0xNDcsNyArMTUwLDcgQEAKIHN0YXRpYyBjdXJsaW9lcnIgaW9jdGxfY2FsbGJhY2soQ1VSTCAqIGhhbmRsZSwgaW50IGNtZCwgdm9pZCAqY2xpZW50cCkKIHsKICAgKHZvaWQpY2xpZW50cDsKLSAgaWYgKGNtZCA9PSBDVVJMSU9DTURfUkVTVEFSVFJFQUQgKSB7CisgIGlmKGNtZCA9PSBDVVJMSU9DTURfUkVTVEFSVFJFQUQpIHsKICAgICBwcmludGYoIkFQUExJQ0FUSU9OOiByZWNpZXZlZCBhIENVUkxJT0NNRF9SRVNUQVJUUkVBRCByZXF1ZXN0XG4iKTsKICAgICBwcmludGYoIkFQUExJQ0FUSU9OOiAqKiBSRVdJTkRJTkchICoqXG4iKTsKICAgICBjdXJyZW50X29mZnNldCA9IDA7CkBAIC0xODEsNyArMTg0LDcgQEAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAKICAgLyogc2V0dXAgcmVwZWF0ZWQgZGF0YSBzdHJpbmcgKi8KLSAgZm9yIChpPTA7IGkgPCBzaXplb2YoZGF0YWJ1Zik7ICsraSkKKyAgZm9yKGk9MDsgaSA8IHNpemVvZihkYXRhYnVmKTsgKytpKQogICAgICAgZGF0YWJ1ZltpXSA9IGZpbGxbaSAlIHNpemVvZiBmaWxsXTsKIAogICAvKiBQb3N0ICovCkBAIC0yMDYsNyArMjA5LDggQEAKIAogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgVVJMKTsKIAotICAvKiBBY2NlcHQgYW55IGF1dGguIEJ1dCBmb3IgdGhpcyBidWcgY29uZmlndXJlIHByb3h5IHdpdGggRElHRVNULCBiYXNpYyBtaWdodCB3b3JrIHRvbywgbm90IE5UTE0gKi8KKyAgLyogQWNjZXB0IGFueSBhdXRoLiBCdXQgZm9yIHRoaXMgYnVnIGNvbmZpZ3VyZSBwcm94eSB3aXRoIERJR0VTVCwgYmFzaWMKKyAgICAgbWlnaHQgd29yayB0b28sIG5vdCBOVExNICovCiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUFJPWFlBVVRILCAobG9uZylDVVJMQVVUSF9BTlkpOwogCiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NTMuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTUzLmMKaW5kZXggY2IxY2VmZC4uOWFmYWFkNCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NTMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1My5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzksNyArMzksNyBAQAogICBtZW1zZXQoYnVmLCAnQScsIHNpemVvZihidWYpKTsKIAogICBzaXplICo9IG5tZW1iOwotICBpZiAoc2l6ZSA+IHRvdGFsKQorICBpZihzaXplID4gdG90YWwpCiAgICAgc2l6ZSA9IHRvdGFsOwogCiAgIGlmKHNpemUgPiBzaXplb2YoYnVmKSkKQEAgLTczLDE4ICs3MywxOCBAQAogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBmb3IgKGkgPSAwOyBpIDwgTlVNX0hFQURFUlM7IGkrKykgewotICAgIGludCBsZW4gPSBzcHJpbnRmKGJ1ZiwgIkhlYWRlciVkOiAiLCBpKTsKKyAgZm9yKGkgPSAwOyBpIDwgTlVNX0hFQURFUlM7IGkrKykgeworICAgIGludCBsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiSGVhZGVyJWQ6ICIsIGkpOwogICAgIG1lbXNldCgmYnVmW2xlbl0sICdBJywgU0laRV9IRUFERVJTKTsKICAgICBidWZbbGVuICsgU0laRV9IRUFERVJTXT0wOyAvKiB6ZXJvIHRlcm1pbmF0ZSAqLwogICAgIGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVybGlzdCwgIGJ1Zik7Ci0gICAgaWYgKCFobCkKKyAgICBpZighaGwpCiAgICAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgICBoZWFkZXJsaXN0ID0gaGw7CiAgIH0KIAogICBobCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcmxpc3QsICJFeHBlY3Q6ICIpOwotICBpZiAoIWhsKQorICBpZighaGwpCiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIGhlYWRlcmxpc3QgPSBobDsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NTQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU0LmMKaW5kZXggMDU5NmYzZS4uODAzZGYyNiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NTQuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1NC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNyBAQAogI2VuZGlmCiB9CiAKLWludCB0ZXN0KGNoYXIgKlVSTCkKK3N0YXRpYyBpbnQgb25jZShjaGFyICpVUkwsIGJvb2wgb2xkc3R5bGUpCiB7CiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKQEAgLTc1LDIyICs3NSwyOSBAQAogICBzdHJ1Y3QgV3JpdGVUaGlzIHBvb2g7CiAgIHN0cnVjdCBXcml0ZVRoaXMgcG9vaDI7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewotICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7Ci0gICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKLSAgfQotCiAgIHBvb2gucmVhZHB0ciA9IGRhdGE7CiAgIHBvb2guc2l6ZWxlZnQgPSBzdHJsZW4oZGF0YSk7CiAKICAgLyogRmlsbCBpbiB0aGUgZmlsZSB1cGxvYWQgZmllbGQgKi8KLSAgZm9ybXJjID0gY3VybF9mb3JtYWRkKCZmb3JtcG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICZsYXN0cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQ09QWU5BTUUsICJzZW5kZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9TVFJFQU0sICZwb29oLAotICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQ09OVEVOVFNMRU5HVEgsIChsb25nKXBvb2guc2l6ZWxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9GSUxFTkFNRSwgInBvc3RpdDIuYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9FTkQpOworICBpZihvbGRzdHlsZSkgeworICAgIGZvcm1yYyA9IGN1cmxfZm9ybWFkZCgmZm9ybXBvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZsYXN0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fU1RSRUFNLCAmcG9vaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQ09OVEVOVFNMRU5HVEgsIChsb25nKXBvb2guc2l6ZWxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0ZJTEVOQU1FLCAicG9zdGl0Mi5jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fRU5EKTsKKyAgfQorICBlbHNlIHsKKyAgICAvKiBuZXcgc3R5bGUgKi8KKyAgICBmb3JtcmMgPSBjdXJsX2Zvcm1hZGQoJmZvcm1wb3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQ09QWU5BTUUsICJzZW5kZmlsZSBhbHRlcm5hdGl2ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX1NUUkVBTSwgJnBvb2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0NPTlRFTlRMRU4sIChjdXJsX29mZl90KXBvb2guc2l6ZWxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0ZJTEVOQU1FLCAiZmlsZSBuYW1lIDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9FTkQpOworICB9CiAKICAgaWYoZm9ybXJjKQogICAgIHByaW50ZigiY3VybF9mb3JtYWRkKDEpID0gJWRcbiIsIChpbnQpZm9ybXJjKTsKQEAgLTE1NSw3ICsxNjIsNyBAQAogICBpZihmb3JtcmMpCiAgICAgcHJpbnRmKCJjdXJsX2Zvcm1hZGQoNCkgPSAlZFxuIiwgKGludClmb3JtcmMpOwogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9mb3JtZnJlZShmb3JtcG9zdCk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpAQCAtMTkwLDEwICsxOTcsMjcgQEAKIAogICAvKiBhbHdheXMgY2xlYW51cCAqLwogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKLSAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogCiAgIC8qIG5vdyBjbGVhbnVwIHRoZSBmb3JtcG9zdCBjaGFpbiAqLwogICBjdXJsX2Zvcm1mcmVlKGZvcm1wb3N0KTsKIAogICByZXR1cm4gcmVzOwogfQorCitpbnQgdGVzdChjaGFyICpVUkwpCit7CisgIGludCByZXM7CisKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKKyAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOworICB9CisKKyAgcmVzID0gb25jZShVUkwsIFRSVUUpOyAvKiBvbGQgKi8KKyAgaWYoIXJlcykKKyAgICByZXMgPSBvbmNlKFVSTCwgRkFMU0UpOyAvKiBuZXcgKi8KKworICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CisKKyAgcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTU1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1NS5jCmluZGV4IDQ5YTgxYmYuLmU4NGFmODcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTU1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NTUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTk2LDcgKzk2LDggQEAKICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9JT0NUTERBVEEsICZjb3VudGVyKTsKICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIHJlYWRjYWxsYmFjayk7CiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsICZjb3VudGVyKTsKLSAgLyogV2UgQ0FOTk9UIGRvIHRoZSBQT1NUIGZpbmUgd2l0aG91dCBzZXR0aW5nIHRoZSBzaXplIChvciBjaG9vc2UgY2h1bmtlZCkhICovCisgIC8qIFdlIENBTk5PVCBkbyB0aGUgUE9TVCBmaW5lIHdpdGhvdXQgc2V0dGluZyB0aGUgc2l6ZSAob3IgY2hvb3NlCisgICAgIGNodW5rZWQpISAqLwogICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIHN0cmxlbihVUExPQURUSElTKSk7CiAKICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NULCAxTCk7CkBAIC0xMTMsNyArMTE0LDcgQEAKIAogICBtdWx0aV9hZGRfaGFuZGxlKG0sIGN1cmwpOwogCi0gIHdoaWxlIChydW5uaW5nKSB7CisgIHdoaWxlKHJ1bm5pbmcpIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OwogICAgIGZkX3NldCBmZHJlYWQsIGZkd3JpdGUsIGZkZXhjZXA7CiAgICAgaW50IG1heGZkID0gLTk5OwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NTYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU2LmMKaW5kZXggYTRiNGI5My4uNTI3OTM1MyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NTYuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1Ni5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsMTIgKzQwLDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU1Ny5jIGIvdGVzdHMvbGlidGVzdC9saWI1NTcuYwppbmRleCBiODgyODUyLi41YmRiOGFiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU1Ny5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU3LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00NTMsNiArNDUzLDcgQEAKIAogI2VsaWYgKFNJWkVPRl9JTlQgPT0gOCkKIAorICAvKiAhY2hlY2tzcmMhIGRpc2FibGUgTE9OR0xJTkUgYWxsICovCiAgIGk9MTsgdWlfdGVzdFtpXS5udW0gPSAweEZGRkZGRkZGRkZGRkZGRkZVOyB1aV90ZXN0W2ldLmV4cGVjdGVkID0gIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IjsKICAgaSsrOyB1aV90ZXN0W2ldLm51bSA9IDB4RkZGRkZGRkYwMDAwMDAwMFU7IHVpX3Rlc3RbaV0uZXhwZWN0ZWQgPSAiMTg0NDY3NDQwNjk0MTQ1ODQzMjAiOwogICBpKys7IHVpX3Rlc3RbaV0ubnVtID0gMHgwMDAwMDAwMEZGRkZGRkZGVTsgdWlfdGVzdFtpXS5leHBlY3RlZCA9ICI0Mjk0OTY3Mjk1IjsKQEAgLTEzNDQsNiArMTM0NSw3IEBACiAgIG51bV9jb2ZmdF90ZXN0cyA9IGk7CiAKICNlbmRpZgorICAvKiAhY2hlY2tzcmMhIGVuYWJsZSBMT05HTElORSAqLwogCiAgIGZvcihpPTE7IGk8PW51bV9jb2ZmdF90ZXN0czsgaSsrKSB7CiAKQEAgLTEzNTEsMTEgKzEzNTMsMTIgQEAKICAgICAgIGNvX3Rlc3RbaV0ucmVzdWx0W2pdID0gJ1gnOwogICAgIGNvX3Rlc3RbaV0ucmVzdWx0W0JVRlNaLTFdID0gJ1wwJzsKIAotICAgICh2b2lkKWN1cmxfbXNwcmludGYoY29fdGVzdFtpXS5yZXN1bHQsICIlIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9ULCBjb190ZXN0W2ldLm51bSk7CisgICAgKHZvaWQpY3VybF9tc3ByaW50Zihjb190ZXN0W2ldLnJlc3VsdCwgIiUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QsCisgICAgICAgICAgICAgICAgICAgICAgICBjb190ZXN0W2ldLm51bSk7CiAKICAgICBpZihtZW1jbXAoY29fdGVzdFtpXS5yZXN1bHQsCi0gICAgICAgICAgICAgICBjb190ZXN0W2ldLmV4cGVjdGVkLAotICAgICAgICAgICAgICAgc3RybGVuKGNvX3Rlc3RbaV0uZXhwZWN0ZWQpKSkgeworICAgICAgICAgICAgICBjb190ZXN0W2ldLmV4cGVjdGVkLAorICAgICAgICAgICAgICBzdHJsZW4oY29fdGVzdFtpXS5leHBlY3RlZCkpKSB7CiAgICAgICBwcmludGYoImN1cmxfb2ZmX3QgdGVzdCAjJS4yZDogRmFpbGVkIChFeHBlY3RlZDogJXMgR290OiAlcylcbiIsCiAgICAgICAgICAgICAgaSwgY29fdGVzdFtpXS5leHBlY3RlZCwgY29fdGVzdFtpXS5yZXN1bHQpOwogICAgICAgZmFpbGVkKys7CkBAIC0xMzcxLDYgKzEzNzQsNTMgQEAKICAgcmV0dXJuIGZhaWxlZDsKIH0KIAorc3RhdGljIGludCBzdHJpbmdfY2hlY2soY2hhciAqYnVmLCBjb25zdCBjaGFyICpidWYyKQoreworICBpZihzdHJjbXAoYnVmLCBidWYyKSkgeworICAgIC8qIHRoZXkgc2hvdWxkbid0IGRpZmZlciAqLworICAgIHByaW50Zigic3ByaW50ZiBmYWlsZWQ6XG53ZSAnJXMnXG5zeXN0ZW06ICclcydcbiIsCisgICAgICAgICAgIGJ1ZiwgYnVmMik7CisgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGUgb3V0cHV0IHN0cmluZ3MgaW4gdGhpcyB0ZXN0IG5lZWQgdG8gaGF2ZSBiZWVuIHZlcmlmaWVkIHdpdGggYSBzeXN0ZW0KKyAqIHNwcmludGYoKSBiZWZvcmUgdXNlZCBoZXJlLgorICovCitzdGF0aWMgaW50IHRlc3Rfc3RyaW5nX2Zvcm1hdHRpbmcodm9pZCkKK3sKKyAgaW50IGVycm9ycyA9IDA7CisgIGNoYXIgYnVmWzI1Nl07CisgIGN1cmxfbXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlMCpkJXMiLCAyLCA5LCAiZm9vIik7CisgIGVycm9ycyArPSBzdHJpbmdfY2hlY2soYnVmLCAiMDlmb28iKTsKKworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJSouKnMiLCA1LCAyLCAiZm9vIik7CisgIGVycm9ycyArPSBzdHJpbmdfY2hlY2soYnVmLCAiICAgZm8iKTsKKworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJSouKnMiLCAyLCA1LCAiZm9vIik7CisgIGVycm9ycyArPSBzdHJpbmdfY2hlY2soYnVmLCAiZm9vIik7CisKKyAgY3VybF9tc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUqLipzIiwgMCwgMTAsICJmb28iKTsKKyAgZXJyb3JzICs9IHN0cmluZ19jaGVjayhidWYsICJmb28iKTsKKworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJS0xMHMiLCAiZm9vIik7CisgIGVycm9ycyArPSBzdHJpbmdfY2hlY2soYnVmLCAiZm9vICAgICAgICIpOworCisgIGN1cmxfbXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlMTBzIiwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgIiAgICAgICBmb28iKTsKKworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJSouKnMiLCAtMTAsIC0xMCwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgImZvbyAgICAgICAiKTsKKworICBpZighZXJyb3JzKQorICAgIHByaW50ZigiQWxsIGN1cmxfbXByaW50ZigpIHN0cmluZ3MgdGVzdHMgT0shXG4iKTsKKyAgZWxzZQorICAgIHByaW50ZigiU29tZSBjdXJsX21wcmludGYoKSBzdHJpbmcgdGVzdHMgRmFpbGVkIVxuIik7CisKKyAgcmV0dXJuIGVycm9yczsKK30KIAogaW50IHRlc3QoY2hhciAqVVJMKQogewpAQCAtMTM5MSw2ICsxNDQxLDggQEAKIAogICBlcnJvcnMgKz0gdGVzdF9jdXJsX29mZl90X2Zvcm1hdHRpbmcoKTsKIAorICBlcnJvcnMgKz0gdGVzdF9zdHJpbmdfZm9ybWF0dGluZygpOworCiAgIGlmKGVycm9ycykKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICBlbHNlCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU1OC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NTguYwppbmRleCAxMjg2YTFkLi4wOWE1MGQ2IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU1OC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMyw3ICszMyw3IEBACiAKICAgKHZvaWQpVVJMOyAvKiB3ZSBkb24ndCB1c2UgdGhpcyAqLwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU2MC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NjAuYwppbmRleCBlOGJlMWM3Li44ZmEwYzJkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU2MC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTYwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NjIuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTYyLmMKaW5kZXggYTVmMGVhNS4uODE5YjUwNyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NjIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2Mi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsMTMgKzQwLDEzIEBACiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcyA9IENVUkxFX09LOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKICAgLyogZ2V0IGEgY3VybCBoYW5kbGUgKi8KLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKQEAgLTU5LDcgKzU5LDcgQEAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1JULCBzdHJ0b2wobGlidGVzdF9hcmcyLCBOVUxMLCAxMCkpOwogCiAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gIHRlc3Rfc2V0b3B0KGN1cmwsQ1VSTE9QVF9VUkwsIFVSTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgIC8qIE5vdyBydW4gb2ZmIGFuZCBkbyB3aGF0IHlvdSd2ZSBiZWVuIHRvbGQhICovCiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NjQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTY0LmMKaW5kZXggMmEwYTU2Ni4uMTgyMjkzMSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NjQuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2NC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTY2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2Ni5jCmluZGV4IGJhODM5ZDYuLjk0YTkxZDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTY2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDEyICszMCwxMiBAQAogCiAgIGRvdWJsZSBjb250ZW50X2xlbmd0aCA9IDM7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NjcuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTY3LmMKaW5kZXggNTczNTI5Yy4uMzhlMGMwYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NjcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2Ny5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsMTIgKzMyLDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpjdXN0b21faGVhZGVycz1OVUxMOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTY4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2OC5jCmluZGV4IGI2ZjVhYjcuLjliM2EwNzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTY4LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjguYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUwLDEyICs1MCwxMiBAQAogICBpbnQgcmVxdWVzdD0xOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqY3VzdG9tX2hlYWRlcnM9TlVMTDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC0xMzEsNyArMTMxLDggQEAKICAgfQogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1JUU1BIRUFERVIsIGN1c3RvbV9oZWFkZXJzKTsKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SVFNQX1JFUVVFU1QsIENVUkxfUlRTUFJFUV9BTk5PVU5DRSk7Ci0gIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVEZJRUxEUywgInBvc3R5ZmllbGQ9cG9zdHlzdHVmZiZwcm9qZWN0PWN1cmxcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsCisgICAgICAgICAgICAgICJwb3N0eWZpZWxkPXBvc3R5c3R1ZmYmcHJvamVjdD1jdXJsXG4iKTsKIAogICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKICAgaWYocmVzKQpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NjkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTY5LmMKaW5kZXggYmM0ODg3Mi4uNTUyODJiNiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NjkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2OS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDcsMTMgKzQ3LDEzIEBACiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBmY2xvc2UoaWRmaWxlKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgZmNsb3NlKGlkZmlsZSk7CkBAIC04Niw3ICs4Niw4IEBACiAgICAgc3RyZWFtX3VyaSA9IE5VTEw7CiAKICAgICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1JUU1BfUkVRVUVTVCwgQ1VSTF9SVFNQUkVRX1NFVFVQKTsKLSAgICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1JUU1BfVFJBTlNQT1JULCAiRmFrZS9Ob3RSZWFsL0p1c3RBVGVzdDtmb289YmF6Iik7CisgICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVCwKKyAgICAgICAgICAgICAgICAiRmFrZS9Ob3RSZWFsL0p1c3RBVGVzdDtmb289YmF6Iik7CiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAgICAgaWYocmVzKQogICAgICAgZ290byB0ZXN0X2NsZWFudXA7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3MC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzAuYwppbmRleCAxNzhmNThmLi4yZGM1N2I3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3MC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTcwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSwxMiArMzUsMTIgQEAKICAgaW50IHJlcXVlc3Q9MTsKICAgY2hhciAqc3RyZWFtX3VyaSA9IE5VTEw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTcxLmMKaW5kZXggZDhkYWQzOS4uYWQ2YzM2NiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzEuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3MS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzUsOCArNzUsOSBAQAogICAgICAgICBwcmludGYoIlJUUCBQQVlMT0FEIENPUlJVUFRFRCBbJXNdXG4iLCBkYXRhICsgaSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlOwogICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBpZiAobWVtY21wKFJUUF9EQVRBLCBkYXRhICsgaSwgbWVzc2FnZV9zaXplIC0gaSkgIT0gMCkgeworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGlmKG1lbWNtcChSVFBfREFUQSwgZGF0YSArIGksIG1lc3NhZ2Vfc2l6ZSAtIGkpICE9IDApIHsKICAgICAgICAgcHJpbnRmKCJSVFAgUEFZTE9BRCBFTkQgQ09SUlVQVEVEICglZCksIFslc11cbiIsCiAgICAgICAgICAgICAgICBtZXNzYWdlX3NpemUgLSBpLCBkYXRhICsgaSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJlOwpAQCAtMTEwLDEzICsxMTEsMTMgQEAKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGZjbG9zZShwcm90b2ZpbGUpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGZjbG9zZShwcm90b2ZpbGUpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTcyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3Mi5jCmluZGV4IGZkNTQ3YjguLjM0NzVlODAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTcyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUwLDEyICs1MCwxMiBAQAogICBpbnQgcmVxdWVzdD0xOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqY3VzdG9tX2hlYWRlcnM9TlVMTDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3My5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzMuYwppbmRleCBiNDlkMjZhLi5kY2UxOThiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3My5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTczLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00NCw3ICs0NCw3IEBACiAgIGRibF9lcHNpbG9uID0gMS4wOwogICBkbyB7CiAgICAgZGJsX2Vwc2lsb24gLz0gMi4wOwotICB9IHdoaWxlICgoZG91YmxlKSgxLjAgKyAoZGJsX2Vwc2lsb24vMi4wKSkgPiAoZG91YmxlKTEuMCk7CisgIH0gd2hpbGUoKGRvdWJsZSkoMS4wICsgKGRibF9lcHNpbG9uLzIuMCkpID4gKGRvdWJsZSkxLjApOwogCiAgIHN0YXJ0X3Rlc3RfdGltaW5nKCk7CiAKQEAgLTY1LDcgKzY1LDcgQEAKIAogICBtdWx0aV9hZGRfaGFuZGxlKG0sIGMpOwogCi0gIHdoaWxlIChydW5uaW5nKSB7CisgIHdoaWxlKHJ1bm5pbmcpIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OwogICAgIGZkX3NldCBmZHJlYWQsIGZkd3JpdGUsIGZkZXhjZXA7CiAgICAgaW50IG1heGZkID0gLTk5OwpAQCAtOTQsOCArOTQsOSBAQAogICB9CiAKICAgY3VybF9lYXN5X2dldGluZm8oYywgQ1VSTElORk9fQ09OTkVDVF9USU1FLCAmY29ubmVjdF90aW1lKTsKLSAgaWYgKGNvbm5lY3RfdGltZSA8IGRibF9lcHNpbG9uKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJjb25uZWN0IHRpbWUgaXMgPCBlcHNpbG9uXG4iKTsKKyAgaWYoY29ubmVjdF90aW1lIDwgZGJsX2Vwc2lsb24pIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImNvbm5lY3QgdGltZSAlZSBpcyA8IGVwc2lsb24gJWVcbiIsCisgICAgICAgICAgICBjb25uZWN0X3RpbWUsIGRibF9lcHNpbG9uKTsKICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc0LmMKaW5kZXggYWZiMmJjZS4uOWY5MjIyYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzQuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3NC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsMTIgKzM1LDEyIEBACiAgIGludCByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzUuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc1LmMKaW5kZXggOTQyZGY2OC4uMTg2MTcwYyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzUuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3NS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTc2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3Ni5jCmluZGV4IDYxYmI2MTMuLjNiOWE5MDAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTc2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc0LDcgKzc0LDggQEAKICAgfQogICBpZihmaW5mby0+ZmlsZXR5cGUgPT0gQ1VSTEZJTEVUWVBFX0ZJTEUpIHsKICAgICBjaF9kLT5wcmludF9jb250ZW50ID0gMTsKLSAgICBwcmludGYoIkNvbnRlbnQ6XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICBwcmludGYoIkNvbnRlbnQ6XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgfQogICBpZihzdHJjbXAoZmluZm8tPmZpbGVuYW1lLCAic29tZW90aGVydGV4dC50eHQiKSA9PSAwKSB7CiAgICAgcHJpbnRmKCIjIFRISVMgQ09OVEVOVCBXQVMgU0tJUFBFRCBJTiBDSFVOS19CR04gQ0FMTEJBQ0sgI1xuIik7CkBAIC0xMDAsNyArMTAxLDcgQEAKIHsKICAgQ1VSTCAqaGFuZGxlID0gTlVMTDsKICAgQ1VSTGNvZGUgcmVzID0gQ1VSTEVfT0s7Ci0gIGNodW5rX2RhdGFfdCBjaHVua19kYXRhID0gezAsMH07CisgIGNodW5rX2RhdGFfdCBjaHVua19kYXRhID0gezAsIDB9OwogICBjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCk7CiAgIGhhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKCFoYW5kbGUpIHsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTc4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3OC5jCmluZGV4IGEzOWIzMTcuLjVlMDFkMzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTc4LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzguYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDcgKzI4LDggQEAKIAogc3RhdGljIHNpemVfdCBkYXRhX3NpemUgPSBzaXplb2YoZGF0YSkgLyBzaXplb2YoY2hhcik7CiAKLXN0YXRpYyBpbnQgcHJvZ3Jlc3NfY2FsbGJhY2sodm9pZCAqY2xpZW50cCwgZG91YmxlIGRsdG90YWwsIGRvdWJsZSBkbG5vdywgZG91YmxlIHVsdG90YWwsIGRvdWJsZSB1bG5vdykKK3N0YXRpYyBpbnQgcHJvZ3Jlc3NfY2FsbGJhY2sodm9pZCAqY2xpZW50cCwgZG91YmxlIGRsdG90YWwsIGRvdWJsZSBkbG5vdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVsdG90YWwsIGRvdWJsZSB1bG5vdykKIHsKICAgRklMRSAqbW9vID0gZm9wZW4obGlidGVzdF9hcmcyLCAid2IiKTsKIApAQCAtMzcsMTAgKzM4LDExIEBACiAgICh2b2lkKWRsbm93OyAvKiBVTlVTRUQgKi8KIAogICBpZihtb28pIHsKLSAgICBpZiAoKHNpemVfdCl1bHRvdGFsID09IGRhdGFfc2l6ZSAmJiAoc2l6ZV90KXVsbm93ID09IGRhdGFfc2l6ZSkKKyAgICBpZigoc2l6ZV90KXVsdG90YWwgPT0gZGF0YV9zaXplICYmIChzaXplX3QpdWxub3cgPT0gZGF0YV9zaXplKQogICAgICAgZnByaW50Zihtb28sICJQQVNTRUQsIFVMIGRhdGEgbWF0Y2hlZCBkYXRhIHNpemVcbiIpOwogICAgIGVsc2UKLSAgICAgIGZwcmludGYobW9vLCAiUHJvZ3Jlc3MgY2FsbGJhY2sgY2FsbGVkIHdpdGggVUwgJWYgb3V0IG9mICVmXG4iLCB1bG5vdywgdWx0b3RhbCk7CisgICAgICBmcHJpbnRmKG1vbywgIlByb2dyZXNzIGNhbGxiYWNrIGNhbGxlZCB3aXRoIFVMICVmIG91dCBvZiAlZlxuIiwKKyAgICAgICAgICAgICAgdWxub3csIHVsdG90YWwpOwogICAgIGZjbG9zZShtb28pOwogICB9CiAgIHJldHVybiAwOwpAQCAtNTEsMTIgKzUzLDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3OS5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzkuYwppbmRleCAwZThiZDJmLi5hYWUyOTljIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3OS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC05MiwxOSArOTIsMTkgQEAKICAgc3RydWN0IFdyaXRlVGhpcyBwb29oOwogICBwb29oLmNvdW50ZXIgPSAwOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIHNsaXN0ID0gY3VybF9zbGlzdF9hcHBlbmQoc2xpc3QsICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOwotICBpZiAoc2xpc3QgPT0gTlVMTCkgeworICBpZihzbGlzdCA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX3NsaXN0X2FwcGVuZCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1ODIuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTgyLmMKaW5kZXggNGMzZWE2Zi4uNDQ0YjQxNiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1ODIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU4Mi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsOSArNTEsOSBAQAogICBpZihtZW50aW9uKQogICAgIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZlIHNvY2tldCBmZCAlZFxuIiwgKGludCkgZmQpOwogCi0gIGZvciAoaSA9IDA7IGkgPCBzb2NrZXRzLT5jb3VudDsgKytpKSB7Ci0gICAgaWYgKHNvY2tldHMtPnNvY2tldHNbaV0gPT0gZmQpIHsKLSAgICAgIGlmIChpIDwgc29ja2V0cy0+Y291bnQgLSAxKQorICBmb3IoaSA9IDA7IGkgPCBzb2NrZXRzLT5jb3VudDsgKytpKSB7CisgICAgaWYoc29ja2V0cy0+c29ja2V0c1tpXSA9PSBmZCkgeworICAgICAgaWYoaSA8IHNvY2tldHMtPmNvdW50IC0gMSkKICAgICAgICAgbWVtbW92ZSgmc29ja2V0cy0+c29ja2V0c1tpXSwgJnNvY2tldHMtPnNvY2tldHNbaSArIDFdLAogICAgICAgICAgICAgICBzaXplb2YoY3VybF9zb2NrZXRfdCkgKiAoc29ja2V0cy0+Y291bnQgLSAoaSArIDEpKSk7CiAgICAgICAtLXNvY2tldHMtPmNvdW50OwpAQCAtMTEwLDEwICsxMTAsMTAgQEAKICAgKHZvaWQpZWFzeTsgLyogdW51c2VkICovCiAgICh2b2lkKXNvY2tldHA7IC8qIHVudXNlZCAqLwogCi0gIGlmIChhY3Rpb24gPT0gQ1VSTF9QT0xMX0lOIHx8IGFjdGlvbiA9PSBDVVJMX1BPTExfSU5PVVQpCisgIGlmKGFjdGlvbiA9PSBDVVJMX1BPTExfSU4gfHwgYWN0aW9uID09IENVUkxfUE9MTF9JTk9VVCkKICAgICBhZGRGZCgmc29ja2V0cy0+cmVhZCwgcywgInJlYWQiKTsKIAotICBpZiAoYWN0aW9uID09IENVUkxfUE9MTF9PVVQgfHwgYWN0aW9uID09IENVUkxfUE9MTF9JTk9VVCkKKyAgaWYoYWN0aW9uID09IENVUkxfUE9MTF9PVVQgfHwgYWN0aW9uID09IENVUkxfUE9MTF9JTk9VVCkKICAgICBhZGRGZCgmc29ja2V0cy0+d3JpdGUsIHMsICJ3cml0ZSIpOwogCiAgIGlmKGFjdGlvbiA9PSBDVVJMX1BPTExfUkVNT1ZFKSB7CkBAIC0xMzIsNyArMTMyLDcgQEAKICAgc3RydWN0IHRpbWV2YWwqIHRpbWVvdXQgPSB1c2VycDsKIAogICAodm9pZCltdWx0aTsgLyogdW51c2VkICovCi0gIGlmICh0aW1lb3V0X21zICE9IC0xKSB7CisgIGlmKHRpbWVvdXRfbXMgIT0gLTEpIHsKICAgICAqdGltZW91dCA9IHR1dGlsX3R2bm93KCk7CiAgICAgdGltZW91dC0+dHZfdXNlYyArPSB0aW1lb3V0X21zICogMTAwMDsKICAgfQpAQCAtMTUxLDEwICsxNTEsMTAgQEAKICAgQ1VSTE1zZyogbWVzc2FnZTsKICAgaW50IHJlc3VsdCA9IDA7CiAgICpzdWNjZXNzID0gMDsKLSAgd2hpbGUgKChtZXNzYWdlID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoY3VybCwgJm51bU1lc3NhZ2VzKSkgIT0gTlVMTCkgewotICAgIGlmIChtZXNzYWdlLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgIHdoaWxlKChtZXNzYWdlID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoY3VybCwgJm51bU1lc3NhZ2VzKSkgIT0gTlVMTCkgeworICAgIGlmKG1lc3NhZ2UtPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKICAgICAgIHJlc3VsdCA9IDE7Ci0gICAgICBpZiAobWVzc2FnZS0+ZGF0YS5yZXN1bHQgPT0gQ1VSTEVfT0spCisgICAgICBpZihtZXNzYWdlLT5kYXRhLnJlc3VsdCA9PSBDVVJMRV9PSykKICAgICAgICAgKnN1Y2Nlc3MgPSAxOwogICAgICAgZWxzZQogICAgICAgICAqc3VjY2VzcyA9IDA7CkBAIC0xNzYsNyArMTc2LDcgQEAKICAgbm93ID0gdHV0aWxfdHZub3coKTsKICAgcmVzdWx0ID0gKHRpbWVvdXQtPnR2X3NlYyAtIG5vdy50dl9zZWMpICogMTAwMDAwMCArCiAgICAgdGltZW91dC0+dHZfdXNlYyAtIG5vdy50dl91c2VjOwotICBpZiAocmVzdWx0IDwgMCkKKyAgaWYocmVzdWx0IDwgMCkKICAgICByZXN1bHQgPSAwOwogCiAgIHJldHVybiBjdXJseF9zenRvc2kocmVzdWx0KTsKQEAgLTE4OSw5ICsxODksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqbWF4RmQpCiB7CiAgIGludCBpOwotICBmb3IgKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgeworICBmb3IoaSA9IDA7IGkgPCBzb2NrZXRzLT5jb3VudDsgKytpKSB7CiAgICAgRkRfU0VUKHNvY2tldHMtPnNvY2tldHNbaV0sIGZkc2V0KTsKLSAgICBpZiAoKm1heEZkIDwgc29ja2V0cy0+c29ja2V0c1tpXSArIDEpIHsKKyAgICBpZigqbWF4RmQgPCBzb2NrZXRzLT5zb2NrZXRzW2ldICsgMSkgewogICAgICAgKm1heEZkID0gc29ja2V0cy0+c29ja2V0c1tpXSArIDE7CiAgICAgfQogICB9CkBAIC0yMDIsNyArMjAyLDcgQEAKIHsKICAgaW50IG51bWhhbmRsZXMgPSAwOwogICBDVVJMTWNvZGUgcmVzdWx0ID0gY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKGN1cmwsIHMsIGV2Qml0bWFzaywgJm51bWhhbmRsZXMpOwotICBpZiAocmVzdWx0ICE9IENVUkxNX09LKSB7CisgIGlmKHJlc3VsdCAhPSBDVVJMTV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBlcnJvciBvbiAlczogJWkgKCVzKVxuIiwKICAgICAgICAgICAgIGluZm8sIHJlc3VsdCwgY3VybF9tdWx0aV9zdHJlcnJvcihyZXN1bHQpKTsKICAgfQpAQCAtMjE1LDggKzIxNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGludCBldkJpdG1hc2ssIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgIGludCBpOwotICBmb3IgKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgewotICAgIGlmIChGRF9JU1NFVChzb2NrZXRzLT5zb2NrZXRzW2ldLCBmZHNldCkpIHsKKyAgZm9yKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgeworICAgIGlmKEZEX0lTU0VUKHNvY2tldHMtPnNvY2tldHNbaV0sIGZkc2V0KSkgewogICAgICAgbm90aWZ5Q3VybChjdXJsLCBzb2NrZXRzLT5zb2NrZXRzW2ldLCBldkJpdG1hc2ssIG5hbWUpOwogICAgIH0KICAgfQpAQCAtMjI3LDcgKzIyNyw3IEBACiAgIGludCByZXMgPSAwOwogICBDVVJMICpjdXJsID0gTlVMTDsKICAgRklMRSAqaGRfc3JjID0gTlVMTDsKLSAgaW50IGhkIDsKKyAgaW50IGhkOwogICBpbnQgZXJyb3I7CiAgIHN0cnVjdF9zdGF0IGZpbGVfaW5mbzsKICAgQ1VSTE0gKm0gPSBOVUxMOwpAQCAtMjM3LDcgKzIzNyw3IEBACiAKICAgc3RhcnRfdGVzdF90aW1pbmcoKTsKIAotICBpZiAoIWxpYnRlc3RfYXJnMykgeworICBpZighbGlidGVzdF9hcmczKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogbGliNTgyIFt1cmxdIFtmaWxlbmFtZV0gW3VzZXJuYW1lXVxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX1VTQUdFOwogICB9CkBAIC0yNzYsNyArMjc2LDcgQEAKICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKIAogICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICBlYXN5X3NldG9wdChjdXJsLENVUkxPUFRfVVJMLCBVUkwpOworICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgVVJMKTsKIAogICAvKiBnbyB2ZXJib3NlICovCiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwpAQCAtMzAwLDggKzMwMCw3IEBACiAKICAgbXVsdGlfYWRkX2hhbmRsZShtLCBjdXJsKTsKIAotICB3aGlsZSAoIWNoZWNrRm9yQ29tcGxldGlvbihtLCAmc3VjY2VzcykpCi0gIHsKKyAgd2hpbGUoIWNoZWNrRm9yQ29tcGxldGlvbihtLCAmc3VjY2VzcykpIHsKICAgICBmZF9zZXQgcmVhZFNldCwgd3JpdGVTZXQ7CiAgICAgY3VybF9zb2NrZXRfdCBtYXhGZCA9IDA7CiAgICAgc3RydWN0IHRpbWV2YWwgdHYgPSB7MTAsIDB9OwpAQCAtMzExLDE0ICszMTAsMTIgQEAKICAgICB1cGRhdGVGZFNldCgmc29ja2V0cy5yZWFkLCAmcmVhZFNldCwgJm1heEZkKTsKICAgICB1cGRhdGVGZFNldCgmc29ja2V0cy53cml0ZSwgJndyaXRlU2V0LCAmbWF4RmQpOwogCi0gICAgaWYgKHRpbWVvdXQudHZfc2VjICE9IC0xKQotICAgIHsKKyAgICBpZih0aW1lb3V0LnR2X3NlYyAhPSAtMSkgewogICAgICAgaW50IHVzVGltZW91dCA9IGdldE1pY3JvU2Vjb25kVGltZW91dCgmdGltZW91dCk7CiAgICAgICB0di50dl9zZWMgPSB1c1RpbWVvdXQgLyAxMDAwMDAwOwogICAgICAgdHYudHZfdXNlYyA9IHVzVGltZW91dCAlIDEwMDAwMDA7CiAgICAgfQotICAgIGVsc2UgaWYgKG1heEZkIDw9IDApCi0gICAgeworICAgIGVsc2UgaWYobWF4RmQgPD0gMCkgewogICAgICAgdHYudHZfc2VjID0gMDsKICAgICAgIHR2LnR2X3VzZWMgPSAxMDAwMDA7CiAgICAgfQpAQCAtMzI5LDggKzMyNiw3IEBACiAgICAgY2hlY2tGZFNldChtLCAmc29ja2V0cy5yZWFkLCAmcmVhZFNldCwgQ1VSTF9DU0VMRUNUX0lOLCAicmVhZCIpOwogICAgIGNoZWNrRmRTZXQobSwgJnNvY2tldHMud3JpdGUsICZ3cml0ZVNldCwgQ1VSTF9DU0VMRUNUX09VVCwgIndyaXRlIik7CiAKLSAgICBpZiAodGltZW91dC50dl9zZWMgIT0gLTEgJiYgZ2V0TWljcm9TZWNvbmRUaW1lb3V0KCZ0aW1lb3V0KSA9PSAwKQotICAgIHsKKyAgICBpZih0aW1lb3V0LnR2X3NlYyAhPSAtMSAmJiBnZXRNaWNyb1NlY29uZFRpbWVvdXQoJnRpbWVvdXQpID09IDApIHsKICAgICAgIC8qIEN1cmwncyB0aW1lciBoYXMgZWxhcHNlZC4gKi8KICAgICAgIG5vdGlmeUN1cmwobSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwgInRpbWVvdXQiKTsKICAgICB9CkBAIC0zMzgsOCArMzM0LDcgQEAKICAgICBhYm9ydF9vbl90ZXN0X3RpbWVvdXQoKTsKICAgfQogCi0gIGlmICghc3VjY2VzcykKLSAgeworICBpZighc3VjY2VzcykgewogICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgdXBsb2FkaW5nIGZpbGUuXG4iKTsKICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTgzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU4My5jCmluZGV4IGFkNWE1Y2UuLjlhZjQ4ZDIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTgzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1ODMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMSw3ICsyMSw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoKICAqIFRoaXMgdGVzdCBjYXNlIGlzIGJhc2VkIG9uIHRoZSBzYW1wbGUgY29kZSBwcm92aWRlZCBieSBTYXFpYiBBbGkKLSAqIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxMS0wMy8wMDY2Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTEtMDMvMDA2Ni5odG1sCiAgKi8KIAogI2luY2x1ZGUgInRlc3QuaCIKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTg2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU4Ni5jCmluZGV4IGExNDEyYjUuLmViN2NmYTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTg2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1ODYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDggKzM2LDggQEAKIH07CiAKIC8qIGxvY2sgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIG15X2xvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLCBjdXJsX2xvY2tfYWNjZXNzIGxhY2Nlc3MsCi0gICAgICAgICAgdm9pZCAqdXNlcHRyICkKK3N0YXRpYyB2b2lkIG15X2xvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLAorICAgICAgICAgICAgICAgICAgICBjdXJsX2xvY2tfYWNjZXNzIGxhY2Nlc3MsIHZvaWQgKnVzZXB0cikKIHsKICAgY29uc3QgY2hhciAqd2hhdDsKICAgc3RydWN0IHVzZXJkYXRhICp1c2VyID0gKHN0cnVjdCB1c2VyZGF0YSAqKXVzZXB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgKHZvaWQpaGFuZGxlOwogICAodm9pZClsYWNjZXNzOwogCi0gIHN3aXRjaCAoIGRhdGEgKSB7CisgIHN3aXRjaCAoZGF0YSkgewogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfU0hBUkU6CiAgICAgICB3aGF0ID0gInNoYXJlIjsKICAgICAgIGJyZWFrOwpAQCAtNjcsMTIgKzY3LDEyIEBACiB9CiAKIC8qIHVubG9jayBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgbXlfdW5sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwgdm9pZCAqdXNlcHRyICkKK3N0YXRpYyB2b2lkIG15X3VubG9jayhDVVJMICpoYW5kbGUsIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQgKnVzZXB0cikKIHsKICAgY29uc3QgY2hhciAqd2hhdDsKICAgc3RydWN0IHVzZXJkYXRhICp1c2VyID0gKHN0cnVjdCB1c2VyZGF0YSAqKXVzZXB0cjsKICAgKHZvaWQpaGFuZGxlOwotICBzd2l0Y2ggKCBkYXRhICkgeworICBzd2l0Y2ggKCBkYXRhKSB7CiAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9TSEFSRToKICAgICAgIHdoYXQgPSAic2hhcmUiOwogICAgICAgYnJlYWs7CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgQ1VSTCAqY3VybDsKICAgaW50IGk9MDsKIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBOVUxMOwogICB9CkBAIC0xMDksMTcgKzEwOSwxNyBAQAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDBMKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1ZFUkJPU0UsICAgIDFMKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHRkYXRhLT51cmwpOwotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7CisgIHByaW50ZigiQ1VSTE9QVF9TSEFSRVxuIik7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TSEFSRSwgdGRhdGEtPnNoYXJlKTsKIAotICBwcmludGYoICJQRVJGT1JNXG4iICk7CisgIHByaW50ZigiUEVSRk9STVxuIik7CiAgIGNvZGUgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKLSAgaWYoIGNvZGUgIT0gQ1VSTEVfT0sgKSB7CisgIGlmKGNvZGUgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgInBlcmZvcm0gdXJsICclcycgcmVwZWF0ICVkIGZhaWxlZCwgY3VybGNvZGUgJWRcbiIsCiAgICAgICAgICAgICB0ZGF0YS0+dXJsLCBpLCAoaW50KWNvZGUpOwogICB9CiAKLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOworICBwcmludGYoIkNMRUFOVVBcbiIpOwogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIAogICByZXR1cm4gTlVMTDsKQEAgLTE0MCwzOCArMTQwLDM5IEBACiAgIHVzZXIudGV4dCA9IChjaGFyICopIlBpZ3MgaW4gc3BhY2UiOwogICB1c2VyLmNvdW50ZXIgPSAwOwogCi0gIHByaW50ZiggIkdMT0JBTF9JTklUXG4iICk7Ci0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgcHJpbnRmKCJHTE9CQUxfSU5JVFxuIik7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIC8qIHByZXBhcmUgc2hhcmUgKi8KLSAgcHJpbnRmKCAiU0hBUkVfSU5JVFxuIiApOwotICBpZiAoKHNoYXJlID0gY3VybF9zaGFyZV9pbml0KCkpID09IE5VTEwpIHsKKyAgcHJpbnRmKCJTSEFSRV9JTklUXG4iKTsKKyAgaWYoKHNoYXJlID0gY3VybF9zaGFyZV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX0xPQ0tGVU5DXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9MT0NLRlVOQywgbXlfbG9jayk7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxTSE9QVF9MT0NLRlVOQ1xuIik7CisgICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdChzaGFyZSwgQ1VSTFNIT1BUX0xPQ0tGVU5DLCBteV9sb2NrKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX1VOTE9DS0ZVTkNcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1VOTE9DS0ZVTkMsIG15X3VubG9jayk7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxTSE9QVF9VTkxPQ0tGVU5DXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfVU5MT0NLRlVOQywgbXlfdW5sb2NrKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX1VTRVJEQVRBXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9VU0VSREFUQSwgJnVzZXIpOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMU0hPUFRfVVNFUkRBVEFcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9VU0VSREFUQSwgJnVzZXIpOwogICB9Ci0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMX0xPQ0tfREFUQV9TU0xfU0VTU0lPTlxuIiApOwotICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoIHNoYXJlLCBDVVJMU0hPUFRfU0hBUkUsIENVUkxfTE9DS19EQVRBX1NTTF9TRVNTSU9OKTsKKyAgaWYoQ1VSTFNIRV9PSyA9PSBzY29kZSkgeworICAgIHByaW50ZigiQ1VSTF9MT0NLX0RBVEFfU1NMX1NFU1NJT05cbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9TSEFSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxfTE9DS19EQVRBX1NTTF9TRVNTSU9OKTsKICAgfQogCi0gIGlmICggQ1VSTFNIRV9PSyAhPSBzY29kZSApIHsKKyAgaWYoQ1VSTFNIRV9PSyAhPSBzY29kZSkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9zZXRvcHQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpAQCAtMTgyLDIxICsxODMsMjEgQEAKICAgcmVzID0gMDsKIAogICAvKiBzdGFydCB0cmVhZHMgKi8KLSAgZm9yIChpPTE7IGk8PVRIUkVBRFM7IGkrKyApIHsKKyAgZm9yKGk9MTsgaTw9VEhSRUFEUzsgaSsrKSB7CiAKICAgICAvKiBzZXQgdGhyZWFkIGRhdGEgKi8KICAgICB0ZGF0YS51cmwgICA9IFVSTDsKICAgICB0ZGF0YS5zaGFyZSA9IHNoYXJlOwogCiAgICAgLyogc2ltdWxhdGUgdGhyZWFkLCBkaXJlY3QgY2FsbCBvZiAidGhyZWFkIiBmdW5jdGlvbiAqLwotICAgIHByaW50ZiggIioqKiBydW4gJWRcbiIsaSApOwotICAgIGZpcmUoICZ0ZGF0YSApOworICAgIHByaW50ZigiKioqIHJ1biAlZFxuIixpKTsKKyAgICBmaXJlKCZ0ZGF0YSk7CiAgIH0KIAogCiAgIC8qIGZldGNoIGEgYW5vdGhlciBvbmUgKi8KLSAgcHJpbnRmKCAiKioqIHJ1biAlZFxuIiwgaSApOwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIHByaW50ZigiKioqIHJ1biAlZFxuIiwgaSk7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpAQCAtMjA0LDM4ICsyMDUsMzggQEAKICAgfQogCiAgIHVybCA9IFVSTDsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfVVJMLCAgICAgICAgdXJsICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfU0hBUkVcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfU0hBUkUsICAgICAgc2hhcmUgKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHVybCk7CisgIHByaW50ZigiQ1VSTE9QVF9TSEFSRVxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfU0hBUkUsIHNoYXJlKTsKIAotICBwcmludGYoICJQRVJGT1JNXG4iICk7Ci0gIGN1cmxfZWFzeV9wZXJmb3JtKCBjdXJsICk7CisgIHByaW50ZigiUEVSRk9STVxuIik7CisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogCiAgIC8qIHRyeSB0byBmcmVlIHNoYXJlLCBleHBlY3QgdG8gZmFpbCBiZWNhdXNlIHNoYXJlIGlzIGluIHVzZSovCi0gIHByaW50ZiggInRyeSBTSEFSRV9DTEVBTlVQLi4uXG4iICk7Ci0gIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKCBzaGFyZSApOwotICBpZiAoIHNjb2RlPT1DVVJMU0hFX09LICkKLSAgeworICBwcmludGYoInRyeSBTSEFSRV9DTEVBTlVQLi4uXG4iKTsKKyAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOworICBpZihzY29kZT09Q1VSTFNIRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9jbGVhbnVwIHN1Y2NlZWQgYnV0IGVycm9yIGV4cGVjdGVkXG4iKTsKICAgICBzaGFyZSA9IE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCAiU0hBUkVfQ0xFQU5VUCBmYWlsZWQsIGNvcnJlY3RcbiIgKTsKKyAgfQorICBlbHNlIHsKKyAgICBwcmludGYoIlNIQVJFX0NMRUFOVVAgZmFpbGVkLCBjb3JyZWN0XG4iKTsKICAgfQogCiB0ZXN0X2NsZWFudXA6CiAKICAgLyogY2xlYW4gdXAgbGFzdCBoYW5kbGUgKi8KLSAgcHJpbnRmKCAiQ0xFQU5VUFxuIiApOwotICBjdXJsX2Vhc3lfY2xlYW51cCggY3VybCApOworICBwcmludGYoIkNMRUFOVVBcbiIpOworICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIAogICAvKiBmcmVlIHNoYXJlICovCi0gIHByaW50ZiggIlNIQVJFX0NMRUFOVVBcbiIgKTsKLSAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoIHNoYXJlICk7Ci0gIGlmICggc2NvZGUhPUNVUkxTSEVfT0sgKQorICBwcmludGYoIlNIQVJFX0NMRUFOVVBcbiIpOworICBzY29kZSA9IGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CisgIGlmKHNjb2RlIT1DVVJMU0hFX09LKQogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zaGFyZV9jbGVhbnVwIGZhaWxlZCwgY29kZSBlcnJubyAlZFxuIiwKICAgICAgICAgICAgIChpbnQpc2NvZGUpOwogCi0gIHByaW50ZiggIkdMT0JBTF9DTEVBTlVQXG4iICk7CisgIHByaW50ZigiR0xPQkFMX0NMRUFOVVBcbiIpOwogICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAKICAgcmV0dXJuIHJlczsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTkwLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5MC5jCmluZGV4IDY4NjAzYzYuLjdiODYzY2MgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTkwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1OTAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIzLDE0ICsyMywxNCBAQAogCiAvKgogICBCYXNlZCBvbiBhIGJ1ZyByZXBvcnQgcmVjaXBlIGJ5IFJlbmUgQmVybmhhcmR0IGluCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxMS0xMC8wMzIzLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxMS0xMC8wMzIzLmh0bWwKIAogICBJdCBpcyByZXByb2R1Y2libGUgYnkgdGhlIGZvbGxvd2luZyBzdGVwczoKIAogICAtIFVzZSBhIHByb3h5IHRoYXQgb2ZmZXJzIE5UTE0gYW5kIE5lZ290aWF0ZSAoIENVUkxPUFRfUFJPWFkgYW5kCi0gIENVUkxPUFRfUFJPWFlQT1JUICkKKyAgQ1VSTE9QVF9QUk9YWVBPUlQpCiAgIC0gVGVsbCBsaWJjdXJsIE5PVCB0byB1c2UgTmVnb3RpYXRlICBDVVJMX0VBU1lfU0VUT1BUKENVUkxPUFRfUFJPWFlBVVRILAotICBDVVJMQVVUSF9CQVNJQyB8IENVUkxBVVRIX0RJR0VTVCB8IENVUkxBVVRIX05UTE0gKQorICBDVVJMQVVUSF9CQVNJQyB8IENVUkxBVVRIX0RJR0VTVCB8IENVUkxBVVRIX05UTE0pCiAgIC0gU3RhcnQgdGhlIHJlcXVlc3QKICovCiAKQEAgLTQxLDEyICs0MSwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1OTEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTkxLmMKaW5kZXggNWNkNDY0NC4uN2Q1MGY4OSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1OTEuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5MS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTk3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5Ny5jCmluZGV4IGEyN2NlZmQuLjgxM2FmNzUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTk3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1OTcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY5LDcgKzY5LDcgQEAKIAogICBtdWx0aV9pbml0KG11bHRpKTsKIAotICBmb3IgKHBoYXNlID0gQ09OTkVDVF9PTkxZX1BIQVNFOyBwaGFzZSA8IExBU1RfUEhBU0U7ICsrcGhhc2UpIHsKKyAgZm9yKHBoYXNlID0gQ09OTkVDVF9PTkxZX1BIQVNFOyBwaGFzZSA8IExBU1RfUEhBU0U7ICsrcGhhc2UpIHsKICAgICAvKiBnbyB2ZXJib3NlICovCiAgICAgZWFzeV9zZXRvcHQoZWFzeSwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAKQEAgLTc3LDExICs3NywxMSBAQAogICAgIGVhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgICAgLyogZW5hYmxlICdDT05ORUNUX09OTFknIG9wdGlvbiB3aGVuIGluIGNvbm5lY3QgcGhhc2UgKi8KLSAgICBpZiAocGhhc2UgPT0gQ09OTkVDVF9PTkxZX1BIQVNFKQorICAgIGlmKHBoYXNlID09IENPTk5FQ1RfT05MWV9QSEFTRSkKICAgICAgIGVhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfQ09OTkVDVF9PTkxZLCAxTCk7CiAKICAgICAvKiBlbmFibGUgJ05PQk9EWScgb3B0aW9uIHRvIHNlbmQgJ1FVSVQnIGNvbW1hbmQgaW4gcXVpdCBwaGFzZSAqLwotICAgIGlmIChwaGFzZSA9PSBRVUlUX1BIQVNFKSB7CisgICAgaWYocGhhc2UgPT0gUVVJVF9QSEFTRSkgewogICAgICAgZWFzeV9zZXRvcHQoZWFzeSwgQ1VSTE9QVF9DT05ORUNUX09OTFksIDBMKTsKICAgICAgIGVhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfTk9CT0RZLCAxTCk7CiAgICAgICBlYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX0ZPUkJJRF9SRVVTRSwgMUwpOwpAQCAtMTE0LDcgKzExNCw4IEBACiAKICAgICAgIG11bHRpX3RpbWVvdXQobXVsdGksICZ0aW1lb3V0KTsKIAotICAgICAgLyogQXQgdGhpcyBwb2ludCwgdGltZW91dCBpcyBndWFyYW50ZWVkIHRvIGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiAtMS4gKi8KKyAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIHRpbWVvdXQgaXMgZ3VhcmFudGVlZCB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4KKyAgICAgICAgIC0xLiAqLwogCiAgICAgICBpZih0aW1lb3V0ICE9IC0xTCkgewogICAgICAgICBpbnQgaXRpbWVvdXQgPSAodGltZW91dCA+IChsb25nKUlOVF9NQVgpID8gSU5UX01BWCA6IChpbnQpdGltZW91dDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTk4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5OC5jCmluZGV4IGU5YzFhZDcuLmIxMDdmMjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTk4LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1OTguYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1OTkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTk5LmMKaW5kZXggMDhjNTM2Yy4uMWRlZTBiOSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1OTkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5OS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDUsMTIgKzQ1LDEyIEBACiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKICAgZG91YmxlIGNvbnRlbnRfbGVuZ3RoID0gMC4wOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKQEAgLTc1LDEyICs3NSwxMiBAQAogICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0LCByZXMgd2lsbCBnZXQgdGhlIHJldHVybiBjb2RlICovCiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogCi0gIGlmICghcmVzKSB7CisgIGlmKCFyZXMpIHsKICAgICBGSUxFICptb287CiAgICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRlbnRfbGVuZ3RoKTsKICAgICBtb28gPSBmb3BlbihsaWJ0ZXN0X2FyZzIsICJ3YiIpOwotICAgIGlmIChtb28pIHsKKyAgICBpZihtb28pIHsKICAgICAgIGZwcmludGYobW9vLCAiQ0w6ICUuMGZcbiIsIGNvbnRlbnRfbGVuZ3RoKTsKICAgICAgIGZjbG9zZShtb28pOwogICAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliYXV0aHJldHJ5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYmF1dGhyZXRyeS5jCmluZGV4IDEwM2E4OWMuLjk5NGY5ZGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliYXV0aHJldHJ5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWJhdXRocmV0cnkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDEzICszMiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGF1dGhfc2NoZW1lLCBjb25zdCBjaGFyICp1c2VycHdkKQogewogICBDVVJMY29kZSByZXM7Ci0gIGNoYXIqIGZ1bGxfdXJsID0gbWFsbG9jKHN0cmxlbih1cmwpICsgNCArIDEpOwotICBpZiAoIWZ1bGxfdXJsKSB7CisgIHNpemVfdCBsZW4gPSBzdHJsZW4odXJsKSArIDQgKyAxOworICBjaGFyKiBmdWxsX3VybCA9IG1hbGxvYyhsZW4pOworICBpZighZnVsbF91cmwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBmdWxsIHVybFxuIik7CiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAotICBzcHJpbnRmKGZ1bGxfdXJsLCAiJXMlMDRkIiwgdXJsLCBzZXEpOworICBzbnByaW50ZihmdWxsX3VybCwgbGVuLCAiJXMlMDRkIiwgdXJsLCBzZXEpOwogICBmcHJpbnRmKHN0ZGVyciwgIlNlbmRpbmcgbmV3IHJlcXVlc3QgJWQgdG8gJXMgd2l0aCBjcmVkZW50aWFsICVzICIKICAgICAgICAgICAiKGF1dGggJWxkKVxuIiwgc2VxLCBmdWxsX3VybCwgdXNlcnB3ZCwgYXV0aF9zY2hlbWUpOwogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgZnVsbF91cmwpOwpAQCAtNjksMTMgKzcwLDEzIEBACiAKIHN0YXRpYyBsb25nIHBhcnNlX2F1dGhfbmFtZShjb25zdCBjaGFyICphcmcpCiB7Ci0gIGlmICghYXJnKQorICBpZighYXJnKQogICAgIHJldHVybiBDVVJMQVVUSF9OT05FOwotICBpZiAoc3RyZXF1YWwoYXJnLCAiYmFzaWMiKSkKKyAgaWYoc3RyZXF1YWwoYXJnLCAiYmFzaWMiKSkKICAgICByZXR1cm4gQ1VSTEFVVEhfQkFTSUM7Ci0gIGlmIChzdHJlcXVhbChhcmcsICJkaWdlc3QiKSkKKyAgaWYoc3RyZXF1YWwoYXJnLCAiZGlnZXN0IikpCiAgICAgcmV0dXJuIENVUkxBVVRIX0RJR0VTVDsKLSAgaWYgKHN0cmVxdWFsKGFyZywgIm50bG0iKSkKKyAgaWYoc3RyZXF1YWwoYXJnLCAibnRsbSIpKQogICAgIHJldHVybiBDVVJMQVVUSF9OVExNOwogICByZXR1cm4gQ1VSTEFVVEhfTk9ORTsKIH0KQEAgLTg4LDU4ICs4OSw1OCBAQAogICBsb25nIG1haW5fYXV0aF9zY2hlbWUgPSBwYXJzZV9hdXRoX25hbWUobGlidGVzdF9hcmcyKTsKICAgbG9uZyBmYWxsYmFja19hdXRoX3NjaGVtZSA9IHBhcnNlX2F1dGhfbmFtZShsaWJ0ZXN0X2FyZzMpOwogCi0gIGlmIChtYWluX2F1dGhfc2NoZW1lID09IENVUkxBVVRIX05PTkUgfHwKKyAgaWYobWFpbl9hdXRoX3NjaGVtZSA9PSBDVVJMQVVUSF9OT05FIHx8CiAgICAgICBmYWxsYmFja19hdXRoX3NjaGVtZSA9PSBDVVJMQVVUSF9OT05FKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJhdXRoIHNjaGVtZXMgbm90IGZvdW5kIG9uIGNvbW1hbmRsaW5lXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICAvKiBTZW5kIHdyb25nIHBhc3N3b3JkLCB0aGVuIHJpZ2h0IHBhc3N3b3JkICovCiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIHJlcyA9IHNlbmRfd3JvbmdfcGFzc3dvcmQoY3VybCwgdXJsLCAxMDAsIG1haW5fYXV0aF9zY2hlbWUpOwotICBpZiAocmVzICE9IENVUkxFX09LKQotICAgICAgZ290byB0ZXN0X2NsZWFudXA7CisgIGlmKHJlcyAhPSBDVVJMRV9PSykKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgY3VybF9lYXN5X3Jlc2V0KGN1cmwpOwogCiAgIHJlcyA9IHNlbmRfcmlnaHRfcGFzc3dvcmQoY3VybCwgdXJsLCAyMDAsIGZhbGxiYWNrX2F1dGhfc2NoZW1lKTsKLSAgaWYgKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIGN1cmxfZWFzeV9yZXNldChjdXJsKTsKIAogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIAogICAvKiBTZW5kIHdyb25nIHBhc3N3b3JkIHR3aWNlLCB0aGVuIHJpZ2h0IHBhc3N3b3JkICovCiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIHJlcyA9IHNlbmRfd3JvbmdfcGFzc3dvcmQoY3VybCwgdXJsLCAzMDAsIG1haW5fYXV0aF9zY2hlbWUpOwotICBpZiAocmVzICE9IENVUkxFX09LKQotICAgICAgZ290byB0ZXN0X2NsZWFudXA7CisgIGlmKHJlcyAhPSBDVVJMRV9PSykKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgY3VybF9lYXN5X3Jlc2V0KGN1cmwpOwogCiAgIHJlcyA9IHNlbmRfd3JvbmdfcGFzc3dvcmQoY3VybCwgdXJsLCA0MDAsIGZhbGxiYWNrX2F1dGhfc2NoZW1lKTsKLSAgaWYgKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIGN1cmxfZWFzeV9yZXNldChjdXJsKTsKIAogICByZXMgPSBzZW5kX3JpZ2h0X3Bhc3N3b3JkKGN1cmwsIHVybCwgNTAwLCBmYWxsYmFja19hdXRoX3NjaGVtZSk7Ci0gIGlmIChyZXMgIT0gQ1VSTEVfT0spCi0gICAgICBnb3RvIHRlc3RfY2xlYW51cDsKKyAgaWYocmVzICE9IENVUkxFX09LKQorICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICBjdXJsX2Vhc3lfcmVzZXQoY3VybCk7CiAKIHRlc3RfY2xlYW51cDoKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGlibnRsbWNvbm5lY3QuYyBiL3Rlc3RzL2xpYnRlc3QvbGlibnRsbWNvbm5lY3QuYwppbmRleCA1MDliNjcxLi43MzYyMjJkIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYm50bG1jb25uZWN0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWJudGxtY29ubmVjdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDcsNyArNDcsNyBAQAogICBjb25zdCBzaXplX3QgZmFpbHVyZSA9IChzaXplICogbm1lbWIpID8gMCA6IDE7CiAKICAgY2hhciAqb3V0cHV0ID0gbWFsbG9jKHNpemUgKiBubWVtYiArIDEpOwotICBpZiAoIW91dHB1dCkgeworICBpZighb3V0cHV0KSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJvdXRwdXQsIG1hbGxvYygpIGZhaWxlZFxuIik7CiAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgIHJldHVybiBmYWlsdXJlOwpAQCAtNjAsMjUgKzYwLDI1IEBACiAKICAgLyogR2V0IHNvY2tldCBiZWluZyB1c2VkIGZvciB0aGlzIGVhc3kgaGFuZGxlLCBvdGhlcndpc2UgQ1VSTF9TT0NLRVRfQkFEICovCiAgIGNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhlYXN5W2lkeF0sIENVUkxJTkZPX0xBU1RTT0NLRVQsICZsb25nZGF0YSk7Ci0gIGlmIChDVVJMRV9PSyAhPSBjb2RlKSB7CisgIGlmKENVUkxFX09LICE9IGNvZGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfZWFzeV9nZXRpbmZvKCkgZmFpbGVkLCAiCiAgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsCiAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIChpbnQpY29kZSwgY3VybF9lYXN5X3N0cmVycm9yKGNvZGUpKTsKICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICAgcmV0dXJuIGZhaWx1cmU7CiAgIH0KLSAgaWYgKGxvbmdkYXRhID09IC0xTCkKKyAgaWYobG9uZ2RhdGEgPT0gLTFMKQogICAgIHNvY2sgPSBDVVJMX1NPQ0tFVF9CQUQ7CiAgIGVsc2UKICAgICBzb2NrID0gKGN1cmxfc29ja2V0X3QpbG9uZ2RhdGE7CiAKLSAgaWYgKHNvY2sgIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CisgIGlmKHNvY2sgIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CiAgICAgLyogVHJhY2sgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBlYXN5IGhhbmRsZSBhbmQgdGhlIHNvY2tldC4gKi8KLSAgICBpZiAoc29ja2V0c1tpZHhdID09IENVUkxfU09DS0VUX0JBRCkgeworICAgIGlmKHNvY2tldHNbaWR4XSA9PSBDVVJMX1NPQ0tFVF9CQUQpIHsKICAgICAgIC8qIEFuIGVhc3kgaGFuZGxlIHdpdGhvdXQgcHJldmlvdXMgc29ja2V0LCByZWNvcmQgdGhlIHNvY2tldC4gKi8KICAgICAgIHNvY2tldHNbaWR4XSA9IHNvY2s7CiAgICAgfQotICAgIGVsc2UgaWYgKHNvY2sgIT0gc29ja2V0c1tpZHhdKSB7CisgICAgZWxzZSBpZihzb2NrICE9IHNvY2tldHNbaWR4XSkgewogICAgICAgLyogQW4gZWFzeSBoYW5kbGUgd2l0aCBhIHNvY2tldCBkaWZmZXJlbnQgdG8gcHJldmlvdXNseQogICAgICAgICAgdHJhY2tlZCBvbmUsIGxvZyBhbmQgZmFpbCByaWdodCBhd2F5LiBLbm93biBidWcgIzM3LiAqLwogICAgICAgZnByaW50ZihzdGRlcnIsICJIYW5kbGUgJWQgc3RhcnRlZCBvbiBzb2NrZXQgJWQgYW5kIG1vdmVkIHRvICVkXG4iLApAQCAtMTAzLDE2ICsxMDMsMTcgQEAKICAgaW50IGksIGo7CiAgIGludCBudW1faGFuZGxlcyA9IDA7CiAgIGVudW0gSGFuZGxlU3RhdGUgc3RhdGUgPSBSZWFkeUZvck5ld0hhbmRsZTsKLSAgY2hhciogZnVsbF91cmwgPSBtYWxsb2Moc3RybGVuKHVybCkgKyA0ICsgMSk7CisgIHNpemVfdCB1cmxsZW4gPSBzdHJsZW4odXJsKSArIDQgKyAxOworICBjaGFyKiBmdWxsX3VybCA9IG1hbGxvYyh1cmxsZW4pOwogCiAgIHN0YXJ0X3Rlc3RfdGltaW5nKCk7CiAKLSAgaWYgKCFmdWxsX3VybCkgeworICBpZighZnVsbF91cmwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBmdWxsIHVybFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGZvciAoaSA9IDA7IGkgPCBNQVhfRUFTWV9IQU5ETEVTOyArK2kpIHsKKyAgZm9yKGkgPSAwOyBpIDwgTUFYX0VBU1lfSEFORExFUzsgKytpKSB7CiAgICAgZWFzeVtpXSA9IE5VTEw7CiAgICAgc29ja2V0c1tpXSA9IENVUkxfU09DS0VUX0JBRDsKICAgfQpAQCAtMTQxLDE0ICsxNDIsMTUgQEAKICAgICBib29sIGZvdW5kX25ld19zb2NrZXQgPSBGQUxTRTsKIAogICAgIC8qIFN0YXJ0IGEgbmV3IGhhbmRsZSBpZiB3ZSBhcmVuJ3QgYXQgdGhlIG1heCAqLwotICAgIGlmIChzdGF0ZSA9PSBSZWFkeUZvck5ld0hhbmRsZSkgeworICAgIGlmKHN0YXRlID09IFJlYWR5Rm9yTmV3SGFuZGxlKSB7CiAgICAgICBlYXN5X2luaXQoZWFzeVtudW1faGFuZGxlc10pOwogCi0gICAgICBpZiAobnVtX2hhbmRsZXMgJSAzID09IDIpIHsKLSAgICAgICAgc3ByaW50ZihmdWxsX3VybCwgIiVzMDIwMCIsIHVybCk7CisgICAgICBpZihudW1faGFuZGxlcyAlIDMgPT0gMikgeworICAgICAgICBzbnByaW50ZihmdWxsX3VybCwgdXJsbGVuLCAiJXMwMjAwIiwgdXJsKTsKICAgICAgICAgZWFzeV9zZXRvcHQoZWFzeVtudW1faGFuZGxlc10sIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX05UTE0pOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgc3ByaW50ZihmdWxsX3VybCwgIiVzMDEwMCIsIHVybCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc25wcmludGYoZnVsbF91cmwsIHVybGxlbiwgIiVzMDEwMCIsIHVybCk7CiAgICAgICAgIGVhc3lfc2V0b3B0KGVhc3lbbnVtX2hhbmRsZXNdLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9CQVNJQyk7CiAgICAgICB9CiAgICAgICBlYXN5X3NldG9wdChlYXN5W251bV9oYW5kbGVzXSwgQ1VSTE9QVF9GUkVTSF9DT05ORUNULCAxTCk7CkBAIC0xODEsMzQgKzE4MywzNCBAQAogICAgIC8qIEF0IHRoaXMgcG9pbnQsIG1heGZkIGlzIGd1YXJhbnRlZWQgdG8gYmUgZ3JlYXRlciBvciBlcXVhbCB0aGFuIC0xLiAqLwogCiAgICAgLyogQW55IHNvY2tldCB3aGljaCBpcyBuZXcgaW4gZmRyZWFkIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmV3IGhhbmRsZSAqLwotICAgIGZvciAoaSA9IDA7IGkgPD0gbWF4ZmQ7ICsraSkgeworICAgIGZvcihpID0gMDsgaSA8PSBtYXhmZDsgKytpKSB7CiAgICAgICBib29sIHNvY2tldF9leGlzdHMgPSBGQUxTRTsKICAgICAgIGN1cmxfc29ja2V0X3QgY3VyZmQgPSAoY3VybF9zb2NrZXRfdClpOwogCi0gICAgICBpZiAoIUZEX0lTU0VUKGN1cmZkLCAmZmRyZWFkKSkgeworICAgICAgaWYoIUZEX0lTU0VUKGN1cmZkLCAmZmRyZWFkKSkgewogICAgICAgICBjb250aW51ZTsKICAgICAgIH0KIAogICAgICAgLyogQ2hlY2sgaWYgdGhpcyBzb2NrZXQgd2FzIGFscmVhZHkgZGV0ZWN0ZWQgZm9yIGFuIGVhcmxpZXIgaGFuZGxlIChvcgogICAgICAgICAgZm9yIHRoaXMgaGFuZGxlLCBudW1faGFuZGxlcy0xLCBpbiB0aGUgY2FsbGJhY2sgKi8KLSAgICAgIGZvciAoaiA9IDA7IGogPCBudW1faGFuZGxlczsgKytqKSB7Ci0gICAgICAgIGlmIChzb2NrZXRzW2pdID09IGN1cmZkKSB7CisgICAgICBmb3IoaiA9IDA7IGogPCBudW1faGFuZGxlczsgKytqKSB7CisgICAgICAgIGlmKHNvY2tldHNbal0gPT0gY3VyZmQpIHsKICAgICAgICAgICBzb2NrZXRfZXhpc3RzID0gVFJVRTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKHNvY2tldF9leGlzdHMpIHsKKyAgICAgIGlmKHNvY2tldF9leGlzdHMpIHsKICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAgIGlmIChmb3VuZF9uZXdfc29ja2V0IHx8IHN0YXRlICE9IE5lZWRTb2NrZXRGb3JOZXdIYW5kbGUpIHsKKyAgICAgIGlmKGZvdW5kX25ld19zb2NrZXQgfHwgc3RhdGUgIT0gTmVlZFNvY2tldEZvck5ld0hhbmRsZSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgbmV3IHNvY2tldFxuIik7CiAgICAgICAgIHJlcyA9IFRFU1RfRVJSX01BSk9SX0JBRDsKICAgICAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgICAgICB9CiAKICAgICAgIC8qIE5vdyB3ZSBrbm93IHRoZSBzb2NrZXQgaXMgZm9yIHRoZSBtb3N0IHJlY2VudCBoYW5kbGUsIG51bV9oYW5kbGVzLTEgKi8KLSAgICAgIGlmIChzb2NrZXRzW251bV9oYW5kbGVzLTFdICE9IENVUkxfU09DS0VUX0JBRCkgeworICAgICAgaWYoc29ja2V0c1tudW1faGFuZGxlcy0xXSAhPSBDVVJMX1NPQ0tFVF9CQUQpIHsKICAgICAgICAgLyogQSBzb2NrZXQgZm9yIHRoaXMgaGFuZGxlIHdhcyBhbHJlYWR5IGRldGVjdGVkIGluIHRoZSBjYWxsYmFjazsgaWYgaXQKICAgICAgICAgICAgbWF0Y2hlZCBzb2NrZXRfZXhpc3RzIHNob3VsZCBiZSB0cnVlIGFuZCB3ZSB3b3VsZCBuZXZlciBnZXQgaGVyZSAqLwogICAgICAgICBhc3NlcnQoY3VyZmQgIT0gc29ja2V0c1tudW1faGFuZGxlcy0xXSk7CkBAIC0yMjQsNyArMjI2LDcgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RhdGUgPT0gTmVlZFNvY2tldEZvck5ld0hhbmRsZSkgeworICAgIGlmKHN0YXRlID09IE5lZWRTb2NrZXRGb3JOZXdIYW5kbGUpIHsKICAgICAgIGlmKG1heGZkICE9IC0xICYmICFmb3VuZF9uZXdfc29ja2V0KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzogc29ja2V0IGRpZCBub3Qgb3BlbiBpbW1lZGlhdGVseSBmb3IgbmV3ICIKICAgICAgICAgICAgICAgICAiaGFuZGxlICh0cnlpbmcgYWdhaW4pXG4iKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuYyBiL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuYwppbmRleCA5ZGE2YTY3Li4yMTBhNjAwIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmMKKysrIGIvdGVzdHMvbGlidGVzdC9zZXRob3N0bmFtZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuaCBiL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuaAppbmRleCAwMzJlYWEwLi4xYTFjMDc3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmgKKysrIGIvdGVzdHMvbGlidGVzdC9zZXRob3N0bmFtZS5oCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvdGVzdC5oIGIvdGVzdHMvbGlidGVzdC90ZXN0LmgKaW5kZXggNDY4ZWRhOS4uOTY0NzY1OCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC90ZXN0LmgKKysrIGIvdGVzdHMvbGlidGVzdC90ZXN0LmgKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MCwxNSArNDAsMTMgQEAKICMgIGluY2x1ZGUgInNlbGVjdC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgX01QUklOVEZfUkVQTEFDRQotI2luY2x1ZGUgPGN1cmwvbXByaW50Zi5oPgotCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAogI2RlZmluZSB0ZXN0X3NldG9wdChBLEIsQykgXAotICBpZigocmVzID0gY3VybF9lYXN5X3NldG9wdCgoQSksKEIpLChDKSkpICE9IENVUkxFX09LKSBnb3RvIHRlc3RfY2xlYW51cAorICBpZigocmVzID0gY3VybF9lYXN5X3NldG9wdCgoQSksIChCKSwgKEMpKSkgIT0gQ1VSTEVfT0spIGdvdG8gdGVzdF9jbGVhbnVwCiAKICNkZWZpbmUgdGVzdF9tdWx0aV9zZXRvcHQoQSxCLEMpIFwKLSAgaWYoKHJlcyA9IGN1cmxfbXVsdGlfc2V0b3B0KChBKSwoQiksKEMpKSkgIT0gQ1VSTEVfT0spIGdvdG8gdGVzdF9jbGVhbnVwCisgIGlmKChyZXMgPSBjdXJsX211bHRpX3NldG9wdCgoQSksIChCKSwgKEMpKSkgIT0gQ1VSTEVfT0spIGdvdG8gdGVzdF9jbGVhbnVwCiAKIGV4dGVybiBjaGFyICpsaWJ0ZXN0X2FyZzI7IC8qIHNldCBieSBmaXJzdC5jIHRvIHRoZSBhcmd2WzJdIG9yIE5VTEwgKi8KIGV4dGVybiBjaGFyICpsaWJ0ZXN0X2FyZzM7IC8qIHNldCBieSBmaXJzdC5jIHRvIHRoZSBhcmd2WzNdIG9yIE5VTEwgKi8KQEAgLTEzNCwxNiArMTMyLDE2IEBACiB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgcmVzX2Vhc3lfaW5pdChBKSBcCi0gIGV4ZV9lYXN5X2luaXQoKEEpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgZXhlX2Vhc3lfaW5pdCgoQSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKICNkZWZpbmUgY2hrX2Vhc3lfaW5pdChBLFksWikgZG8geyBcCi0gIGV4ZV9lYXN5X2luaXQoKEEpLChZKSwoWikpOyAgICAgXAorICBleGVfZWFzeV9pbml0KChBKSwgKFkpLCAoWikpOyAgIFwKICAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIGVhc3lfaW5pdChBKSBcCi0gIGNoa19lYXN5X2luaXQoKEEpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgY2hrX2Vhc3lfaW5pdCgoQSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTU1LDcwICsxNTMsNzAgQEAKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSByZXNfbXVsdGlfaW5pdChBKSBcCi0gIGV4ZV9tdWx0aV9pbml0KChBKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGV4ZV9tdWx0aV9pbml0KChBKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogI2RlZmluZSBjaGtfbXVsdGlfaW5pdChBLFksWikgZG8geyBcCi0gIGV4ZV9tdWx0aV9pbml0KChBKSwoWSksKFopKTsgICAgIFwKKyAgZXhlX211bHRpX2luaXQoKEEpLCAoWSksIChaKSk7ICAgXAogICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSBtdWx0aV9pbml0KEEpIFwKLSAgY2hrX211bHRpX2luaXQoKEEpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgY2hrX211bHRpX2luaXQoKEEpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNkZWZpbmUgZXhlX2Vhc3lfc2V0b3B0KEEsQixDLFksWikgZG8geyAgICAgICAgICAgICAgICAgIFwKLSAgQ1VSTGNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYoKGVjID0gY3VybF9lYXN5X3NldG9wdCgoQSksKEIpLChDKSkpICE9IENVUkxFX09LKSB7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfZWFzeV9zZXRvcHQoKSBmYWlsZWQsICIgIFwKLSAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX2Vhc3lfc3RyZXJyb3IoZWMpKTsgIFwKLSAgICByZXMgPSAoaW50KWVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgZXhlX2Vhc3lfc2V0b3B0KEEsQixDLFksWikgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICBDVVJMY29kZSBlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmKChlYyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxFX09LKSB7IFwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfZWFzeV9zZXRvcHQoKSBmYWlsZWQsICIgICAgXAorICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9lYXN5X3N0cmVycm9yKGVjKSk7ICAgIFwKKyAgICByZXMgPSAoaW50KWVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgcmVzX2Vhc3lfc2V0b3B0KEEsQixDKSBcCi0gIGV4ZV9lYXN5X3NldG9wdCgoQSksKEIpLChDKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19lYXN5X3NldG9wdChBLCBCLCBDKSBcCisgIGV4ZV9lYXN5X3NldG9wdCgoQSksIChCKSwgKEMpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa19lYXN5X3NldG9wdChBLEIsQyxZLFopIGRvIHsgXAotICBleGVfZWFzeV9zZXRvcHQoKEEpLChCKSwoQyksKFkpLChaKSk7IFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjaGtfZWFzeV9zZXRvcHQoQSwgQiwgQywgWSwgWikgZG8geyBcCisgIGV4ZV9lYXN5X3NldG9wdCgoQSksIChCKSwgKEMpLCAoWSksIChaKSk7IFwKKyAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgZWFzeV9zZXRvcHQoQSxCLEMpIFwKLSAgY2hrX2Vhc3lfc2V0b3B0KChBKSwoQiksKEMpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgZWFzeV9zZXRvcHQoQSwgQiwgQykgXAorICBjaGtfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jZGVmaW5lIGV4ZV9tdWx0aV9zZXRvcHQoQSxCLEMsWSxaKSBkbyB7ICAgICAgICAgICAgICAgICAgXAotICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYoKGVjID0gY3VybF9tdWx0aV9zZXRvcHQoKEEpLChCKSwoQykpKSAhPSBDVVJMTV9PSykgeyBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX3NldG9wdCgpIGZhaWxlZCwgIiAgXAotICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX211bHRpX3N0cmVycm9yKGVjKSk7ICBcCi0gICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgZXhlX211bHRpX3NldG9wdChBLCBCLCBDLCBZLCBaKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYoKGVjID0gY3VybF9tdWx0aV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxNX09LKSB7IFwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfc2V0b3B0KCkgZmFpbGVkLCAiICAgIFwKKyAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX211bHRpX3N0cmVycm9yKGVjKSk7ICAgIFwKKyAgICByZXMgPSAoaW50KWVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSByZXNfbXVsdGlfc2V0b3B0KEEsQixDKSBcCi0gIGV4ZV9tdWx0aV9zZXRvcHQoKEEpLChCKSwoQyksKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBleGVfbXVsdGlfc2V0b3B0KChBKSwgKEIpLCAoQyksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX211bHRpX3NldG9wdChBLEIsQyxZLFopIGRvIHsgXAotICBleGVfbXVsdGlfc2V0b3B0KChBKSwoQiksKEMpLChZKSwoWikpOyBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjaGtfbXVsdGlfc2V0b3B0KEEsQixDLFksWikgZG8geyAgICAgXAorICBleGVfbXVsdGlfc2V0b3B0KChBKSwgKEIpLCAoQyksIChZKSwgKFopKTsgXAorICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIG11bHRpX3NldG9wdChBLEIsQykgXAotICBjaGtfbXVsdGlfc2V0b3B0KChBKSwoQiksKEMpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgY2hrX211bHRpX3NldG9wdCgoQSksIChCKSwgKEMpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUgZXhlX211bHRpX2FkZF9oYW5kbGUoQSxCLFksWikgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgIENVUkxNY29kZSBlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZigoZWMgPSBjdXJsX211bHRpX2FkZF9oYW5kbGUoKEEpLChCKSkpICE9IENVUkxNX09LKSB7ICAgIFwKKyAgaWYoKGVjID0gY3VybF9tdWx0aV9hZGRfaGFuZGxlKChBKSwgKEIpKSkgIT0gQ1VSTE1fT0spIHsgICBcCiAgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX2FkZF9oYW5kbGUoKSBmYWlsZWQsICIgXAogICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX211bHRpX3N0cmVycm9yKGVjKSk7ICAgICBcCkBAIC0yMjYsMjMgKzIyNCwyMyBAQAogICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSByZXNfbXVsdGlfYWRkX2hhbmRsZShBLEIpIFwKLSAgZXhlX211bHRpX2FkZF9oYW5kbGUoKEEpLChCKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19tdWx0aV9hZGRfaGFuZGxlKEEsIEIpIFwKKyAgZXhlX211bHRpX2FkZF9oYW5kbGUoKEEpLCAoQiksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX211bHRpX2FkZF9oYW5kbGUoQSxCLFksWikgZG8geyBcCi0gIGV4ZV9tdWx0aV9hZGRfaGFuZGxlKChBKSwoQiksKFkpLChaKSk7ICAgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGNoa19tdWx0aV9hZGRfaGFuZGxlKEEsIEIsIFksIFopIGRvIHsgXAorICBleGVfbXVsdGlfYWRkX2hhbmRsZSgoQSksIChCKSwgKFkpLCAoWikpOyAgIFwKKyAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIG11bHRpX2FkZF9oYW5kbGUoQSxCKSBcCi0gIGNoa19tdWx0aV9hZGRfaGFuZGxlKChBKSwoQiksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSBtdWx0aV9hZGRfaGFuZGxlKEEsIEIpIFwKKyAgY2hrX211bHRpX2FkZF9oYW5kbGUoKEEpLCAoQiksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBleGVfbXVsdGlfcmVtb3ZlX2hhbmRsZShBLEIsWSxaKSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksKEIpKSkgIT0gQ1VSTE1fT0spIHsgICAgXAorICBpZigoZWMgPSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLCAoQikpKSAhPSBDVVJMTV9PSykgeyAgIFwKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgpIGZhaWxlZCwgIiBcCiAgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpZWMsIGN1cmxfbXVsdGlfc3RyZXJyb3IoZWMpKTsgICAgICAgIFwKQEAgLTI1MCwyNCArMjQ4LDI0IEBACiAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19tdWx0aV9yZW1vdmVfaGFuZGxlKEEsQikgXAotICBleGVfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgcmVzX211bHRpX3JlbW92ZV9oYW5kbGUoQSwgQikgXAorICBleGVfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksIChCKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfbXVsdGlfcmVtb3ZlX2hhbmRsZShBLEIsWSxaKSBkbyB7IFwKLSAgZXhlX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLChCKSwoWSksKFopKTsgICBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY2hrX211bHRpX3JlbW92ZV9oYW5kbGUoQSwgQiwgWSwgWikgZG8geyBcCisgIGV4ZV9tdWx0aV9yZW1vdmVfaGFuZGxlKChBKSwgKEIpLCAoWSksIChaKSk7ICAgXAorICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKIAotI2RlZmluZSBtdWx0aV9yZW1vdmVfaGFuZGxlKEEsQikgXAotICBjaGtfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgbXVsdGlfcmVtb3ZlX2hhbmRsZShBLCBCKSBcCisgIGNoa19tdWx0aV9yZW1vdmVfaGFuZGxlKChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUgZXhlX211bHRpX3BlcmZvcm0oQSxCLFksWikgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfbXVsdGlfcGVyZm9ybSgoQSksKEIpKSkgIT0gQ1VSTE1fT0spIHsgICAgICAgICAgIFwKKyAgaWYoKGVjID0gY3VybF9tdWx0aV9wZXJmb3JtKChBKSwgKEIpKSkgIT0gQ1VSTE1fT0spIHsgICAgICAgICAgXAogICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV9wZXJmb3JtKCkgZmFpbGVkLCAiICAgICAgICBcCiAgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX211bHRpX3N0cmVycm9yKGVjKSk7ICAgICAgICAgXApAQCAtMjgxLDUzICsyNzksNTMgQEAKICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19tdWx0aV9wZXJmb3JtKEEsQikgXAotICBleGVfbXVsdGlfcGVyZm9ybSgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgcmVzX211bHRpX3BlcmZvcm0oQSwgQikgXAorICBleGVfbXVsdGlfcGVyZm9ybSgoQSksIChCKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfbXVsdGlfcGVyZm9ybShBLEIsWSxaKSBkbyB7IFwKLSAgZXhlX211bHRpX3BlcmZvcm0oKEEpLChCKSwoWSksKFopKTsgICBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY2hrX211bHRpX3BlcmZvcm0oQSwgQiwgWSwgWikgZG8geyBcCisgIGV4ZV9tdWx0aV9wZXJmb3JtKChBKSwgKEIpLCAoWSksIChaKSk7ICAgXAorICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgbXVsdGlfcGVyZm9ybShBLEIpIFwKLSAgY2hrX211bHRpX3BlcmZvcm0oKEEpLChCKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGNoa19tdWx0aV9wZXJmb3JtKChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNkZWZpbmUgZXhlX211bHRpX2Zkc2V0KEEsQixDLEQsRSxZLFopIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAotICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfbXVsdGlfZmRzZXQoKEEpLChCKSwoQyksKEQpLChFKSkpICE9IENVUkxNX09LKSB7IFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsICIgICAgICAgICAgXAotICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICAgICAgIFwKLSAgICByZXMgPSAoaW50KWVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGVsc2UgaWYoKigoRSkpIDwgLTEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfZmRzZXQoKSBzdWNjZWVkZWQsICIgICAgICAgXAotICAgICAgICAgICAgImJ1dCByZXR1cm5lZCBpbnZhbGlkIG1heF9mZCB2YWx1ZSAoJWQpXG4iLCAgICAgICAgICBcCi0gICAgICAgICAgICAoWSksIChaKSwgKGludCkqKChFKSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXMgPSBURVNUX0VSUl9OVU1fSEFORExFUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGV4ZV9tdWx0aV9mZHNldChBLCBCLCBDLCBELCBFLCBZLCBaKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgIENVUkxNY29kZSBlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmKChlYyA9IGN1cmxfbXVsdGlfZmRzZXQoKEEpLCAoQiksIChDKSwgKEQpLCAoRSkpKSAhPSBDVVJMTV9PSykgeyBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCAiICAgICAgICAgICAgICBcCisgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICAgICAgICAgICBcCisgICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGVsc2UgaWYoKigoRSkpIDwgLTEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX2Zkc2V0KCkgc3VjY2VlZGVkLCAiICAgICAgICAgICBcCisgICAgICAgICAgICAiYnV0IHJldHVybmVkIGludmFsaWQgbWF4X2ZkIHZhbHVlICglZClcbiIsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoWSksIChaKSwgKGludCkqKChFKSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVzID0gVEVTVF9FUlJfTlVNX0hBTkRMRVM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgcmVzX211bHRpX2Zkc2V0KEEsQixDLEQsRSkgXAotICBleGVfbXVsdGlfZmRzZXQoKEEpLChCKSwoQyksKEQpLChFKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19tdWx0aV9mZHNldChBLCBCLCBDLCBELCBFKSBcCisgIGV4ZV9tdWx0aV9mZHNldCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfbXVsdGlfZmRzZXQoQSxCLEMsRCxFLFksWikgZG8geyAgICAgXAotICBleGVfbXVsdGlfZmRzZXQoKEEpLChCKSwoQyksKEQpLChFKSwoWSksKFopKTsgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBXSElMRV9GQUxTRQorI2RlZmluZSBjaGtfbXVsdGlfZmRzZXQoQSwgQiwgQywgRCwgRSwgWSwgWikgZG8geyAgICAgICBcCisgICAgZXhlX211bHRpX2Zkc2V0KChBKSwgKEIpLCAoQyksIChEKSwgKEUpLCAoWSksIChaKSk7IFwKKyAgICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSBtdWx0aV9mZHNldChBLEIsQyxELEUpIFwKLSAgY2hrX211bHRpX2Zkc2V0KChBKSwoQiksKEMpLChEKSwoRSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSBtdWx0aV9mZHNldChBLCBCLCBDLCBELCBFKSBcCisgIGNoa19tdWx0aV9mZHNldCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIGV4ZV9tdWx0aV90aW1lb3V0KEEsQixZLFopIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAogICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYoKGVjID0gY3VybF9tdWx0aV90aW1lb3V0KChBKSwoQikpKSAhPSBDVVJMTV9PSykgeyAgICAgICBcCisgIGlmKChlYyA9IGN1cmxfbXVsdGlfdGltZW91dCgoQSksIChCKSkpICE9IENVUkxNX09LKSB7ICAgICAgXAogICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV90aW1lb3V0KCkgZmFpbGVkLCAiICAgIFwKICAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICAgXApAQCAtMzQxLDQyICszMzksNDIgQEAKICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgcmVzX211bHRpX3RpbWVvdXQoQSxCKSBcCi0gIGV4ZV9tdWx0aV90aW1lb3V0KChBKSwoQiksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSByZXNfbXVsdGlfdGltZW91dChBLCBCKSBcCisgIGV4ZV9tdWx0aV90aW1lb3V0KChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa19tdWx0aV90aW1lb3V0KEEsQixZLFopIGRvIHsgXAotICBleGVfbXVsdGlfdGltZW91dCgoQSksKEIpLChZKSwoWikpOyAgIFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgXAotfSBXSElMRV9GQUxTRQorI2RlZmluZSBjaGtfbXVsdGlfdGltZW91dChBLCBCLCBZLCBaKSBkbyB7IFwKKyAgICBleGVfbXVsdGlfdGltZW91dCgoQSksIChCKSwgKFkpLCAoWikpOyBcCisgICAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgIFwKKyAgfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIG11bHRpX3RpbWVvdXQoQSxCKSBcCi0gIGNoa19tdWx0aV90aW1lb3V0KChBKSwoQiksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSBtdWx0aV90aW1lb3V0KEEsIEIpIFwKKyAgY2hrX211bHRpX3RpbWVvdXQoKEEpLCAoQiksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2RlZmluZSBleGVfc2VsZWN0X3Rlc3QoQSxCLEMsRCxFLFksWikgZG8geyAgICAgICAgXAotICBpbnQgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZihzZWxlY3Rfd3JhcHBlcigoQSksKEIpLChDKSwoRCksKEUpKSA9PSAtMSApIHsgXAotICAgIGVjID0gU09DS0VSUk5POyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgc2VsZWN0KCkgZmFpbGVkLCB3aXRoICIgXAotICAgICAgICAgICAgImVycm5vICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgKFkpLCAoWiksIGVjLCBzdHJlcnJvcihlYykpOyAgICAgICAgICAgXAotICAgIHJlcyA9IFRFU1RfRVJSX1NFTEVDVDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBXSElMRV9GQUxTRQorI2RlZmluZSBleGVfc2VsZWN0X3Rlc3QoQSwgQiwgQywgRCwgRSwgWSwgWikgZG8geyAgICAgICAgICAgICAgIFwKKyAgICBpbnQgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYoc2VsZWN0X3dyYXBwZXIoKEEpLCAoQiksIChDKSwgKEQpLCAoRSkpID09IC0xKSB7ICAgICAgICAgXAorICAgICAgZWMgPSBTT0NLRVJSTk87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgc2VsZWN0KCkgZmFpbGVkLCB3aXRoICIgICAgICAgICAgICBcCisgICAgICAgICAgICAgICJlcnJubyAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAoWSksIChaKSwgZWMsIHN0cmVycm9yKGVjKSk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJlcyA9IFRFU1RfRVJSX1NFTEVDVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgcmVzX3NlbGVjdF90ZXN0KEEsQixDLEQsRSkgXAotICBleGVfc2VsZWN0X3Rlc3QoKEEpLChCKSwoQyksKEQpLChFKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19zZWxlY3RfdGVzdChBLCBCLCBDLCBELCBFKSBcCisgIGV4ZV9zZWxlY3RfdGVzdCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfc2VsZWN0X3Rlc3QoQSxCLEMsRCxFLFksWikgZG8geyAgICAgXAotICBleGVfc2VsZWN0X3Rlc3QoKEEpLChCKSwoQyksKEQpLChFKSwoWSksKFopKTsgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBXSElMRV9GQUxTRQorI2RlZmluZSBjaGtfc2VsZWN0X3Rlc3QoQSwgQiwgQywgRCwgRSwgWSwgWikgZG8geyAgICAgICBcCisgICAgZXhlX3NlbGVjdF90ZXN0KChBKSwgKEIpLCAoQyksIChEKSwgKEUpLCAoWSksIChaKSk7IFwKKyAgICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSBzZWxlY3RfdGVzdChBLEIsQyxELEUpIFwKLSAgY2hrX3NlbGVjdF90ZXN0KChBKSwoQiksKEMpLChEKSwoRSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSBzZWxlY3RfdGVzdChBLCBCLCBDLCBELCBFKSBcCisgIGNoa19zZWxlY3RfdGVzdCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0zOTMsMTYgKzM5MSwxNiBAQAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIHJlc190ZXN0X3RpbWVkb3V0KCkgXAotICBleGVfdGVzdF90aW1lZG91dCgoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGV4ZV90ZXN0X3RpbWVkb3V0KChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX3Rlc3RfdGltZWRvdXQoWSxaKSBkbyB7IFwKLSAgZXhlX3Rlc3RfdGltZWRvdXQoWSxaKTsgICAgICAgICAgIFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgY2hrX3Rlc3RfdGltZWRvdXQoWSwgWikgZG8geyBcCisgICAgZXhlX3Rlc3RfdGltZWRvdXQoWSwgWik7ICAgICAgICAgXAorICAgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICBcCisgIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSBhYm9ydF9vbl90ZXN0X3RpbWVvdXQoKSBcCi0gIGNoa190ZXN0X3RpbWVkb3V0KChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgY2hrX3Rlc3RfdGltZWRvdXQoKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC00MTcsMTggKzQxNSwxOCBAQAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIHJlc19nbG9iYWxfaW5pdChBKSBcCi0gIGV4ZV9nbG9iYWxfaW5pdCgoQSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBleGVfZ2xvYmFsX2luaXQoKEEpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa19nbG9iYWxfaW5pdChBLFksWikgZG8geyBcCi0gIGV4ZV9nbG9iYWxfaW5pdCgoQSksKFkpLChaKSk7ICAgICBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIHJlczsgICAgICAgICAgICAgICAgICAgICBcCi19IFdISUxFX0ZBTFNFCisjZGVmaW5lIGNoa19nbG9iYWxfaW5pdChBLCBZLCBaKSBkbyB7IFwKKyAgICBleGVfZ2xvYmFsX2luaXQoKEEpLCAoWSksIChaKSk7ICAgXAorICAgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gcmVzOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSBXSElMRV9GQUxTRQogCiAvKiBnbG9iYWxfaW5pdCgpIGlzIGRpZmZlcmVudCB0aGFuIG90aGVyIG1hY3Jvcy4gSW4gY2FzZSBvZgogICAgZmFpbHVyZSBpdCAncmV0dXJuJ3MgaW5zdGVhZCBvZiBnb2luZyB0byAndGVzdF9jbGVhbnVwJy4gKi8KIAogI2RlZmluZSBnbG9iYWxfaW5pdChBKSBcCi0gIGNoa19nbG9iYWxfaW5pdCgoQSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBjaGtfZ2xvYmFsX2luaXQoKEEpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L3Rlc3R0cmFjZS5jIGIvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuYwppbmRleCA4ZDljNmI4Li45NTg3MTlmIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L3Rlc3R0cmFjZS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvdGVzdHRyYWNlLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuaCBiL3Rlc3RzL2xpYnRlc3QvdGVzdHRyYWNlLmgKaW5kZXggNzNkMjQ4OS4uZmFmZGYyOSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuaAorKysgYi90ZXN0cy9saWJ0ZXN0L3Rlc3R0cmFjZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC90ZXN0dXRpbC5jIGIvdGVzdHMvbGlidGVzdC90ZXN0dXRpbC5jCmluZGV4IGIxOGE2MDcuLmI5YzQzZGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuYworKysgYi90ZXN0cy9saWJ0ZXN0L3Rlc3R1dGlsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMCw3ICsyMCw3IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlICJ0ZXN0dXRpbC5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuaCBiL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuaAppbmRleCBhMjM2OTcwLi4wYmM1ZTAzIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L3Rlc3R1dGlsLmgKKysrIGIvdGVzdHMvbGlidGVzdC90ZXN0dXRpbC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbWFucGFnZS1zY2FuLnBsIGIvdGVzdHMvbWFucGFnZS1zY2FuLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNmUxZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9tYW5wYWdlLXNjYW4ucGwKQEAgLTAsMCArMSwyODcgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBTY2FuIHN5bWJvbHMtaW4tdmVyc2lvbiAod2hpY2ggaXMgdmVyaWZpZWQgdG8gYmUgY29ycmVjdCBieSB0ZXN0IDExMTkpLCB0aGVuCisjIHZlcmlmeSB0aGF0IGVhY2ggb3B0aW9uIG1lbnRpb24gaW4gdGhlcmUgdGhhdCBzaG91bGQgaGF2ZSBpdHMgb3duIG1hbiBwYWdlCisjIGFjdHVhbGx5IGRvZXMuCisjCisjIEluIGFkZGl0aW9uLCBtYWtlIHN1cmUgdGhhdCBldmVyeSBjdXJyZW50IG9wdGlvbiB0byBjdXJsX2Vhc3lfc2V0b3B0LAorIyBjdXJsX2Vhc3lfZ2V0aW5mbyBhbmQgY3VybF9tdWx0aV9zZXRvcHQgYXJlIGFsc28gbWVudGlvbmVkIGluIHRoZWlyCisjIGNvcnJlc3BvbmRpbmcgbWFpbiAoaW5kZXgpIG1hbiBwYWdlLgorIworIyBzcmMvdG9vbF9nZXRwYXJhbS5jIGxpc3RzIGFsbCBvcHRpb25zIGN1cmwgY2FuIHBhcnNlCisjIGRvY3MvY3VybC4xIGRvY3VtZW50cyBhbGwgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyMgc3JjL3Rvb2xfaGVscC5jIG91dHB1dHMgYWxsIG9wdGlvbnMgd2l0aCBjdXJsIC1oCisjIC0gbWFrZSBzdXJlIHRoZXkncmUgYWxsIGluIHN5bmMKKyMKKyMgT3V0cHV0IGFsbCBkZXZpYW5jZXMgdG8gc3RkZXJyLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCisjIHdlIG1heSBnZXQgdGhlIGRpciByb290IHBvaW50ZWQgb3V0CitteSAkcm9vdD0kQVJHVlswXSB8fCAiLiI7CitteSAkc3ltcyA9ICIkcm9vdC9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucyI7CitteSAkY3VybGggPSAiJHJvb3QvaW5jbHVkZS9jdXJsL2N1cmwuaCI7CitteSAkZXJyb3JzPTA7CisKKyMgdGhlIHByZXBvcHVsYXRlZCBhbGlhcyBsaXN0IGlzIHRoZSBDVVJMSU5GT18qIGRlZmluZXMgdGhhdCBhcmUgdXNlZCBmb3IgdGhlCisjIGRlYnVnIGZ1bmN0aW9uIGNhbGxiYWNrIGFuZCB0aGUgZmFjdCB0aGF0IHRoZXkgdXNlIHRoZSBzYW1lIHByZWZpeCBhcyB0aGUKKyMgY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyB3YXMgYSBtaXN0YWtlLgorbXkgJWFsaWFzID0gKAorICAgICdDVVJMSU5GT19EQVRBX0lOJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX0RBVEFfT1VUJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX0VORCcgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19IRUFERVJfSU4nID0+ICdub25lJywKKyAgICAnQ1VSTElORk9fSEVBREVSX09VVCcgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19MQVNUT05FJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX05PTkUnID0+ICdub25lJywKKyAgICAnQ1VSTElORk9fU1NMX0RBVEFfSU4nID0+ICdub25lJywKKyAgICAnQ1VSTElORk9fU1NMX0RBVEFfT1VUJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX1RFWFQnID0+ICdub25lJworICAgICk7CisKK3N1YiBzY2FubWFucGFnZSB7CisgICAgbXkgKCRmaWxlLCBAd29yZHMpID0gQF87CisKKyAgICBvcGVuKE0sICI8JGZpbGUiKTsKKyAgICBteSBAbSA9IDxNPjsKKyAgICBjbG9zZShNKTsKKworICAgIGZvcmVhY2ggbXkgJG0gKEB3b3JkcykgeworCisgICAgICAgIG15IEBnID0gZ3JlcCgvXlwuSVAgJG0vLCBAbSk7CisgICAgICAgIGlmKCEkZ1swXSkgeworICAgICAgICAgICAgcHJpbnQgU1RERVJSICJNaXNzaW5nIG1lbnRpb24gb2YgJG0gaW4gJGZpbGVcbiI7CisgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgY2hlY2sgZm9yIGRlZmluZSBhbGlzZXMKK29wZW4oUiwgIjwkY3VybGgiKSB8fAorICAgIGRpZSAibm8gY3VybC5oIjsKK3doaWxlKDxSPikgeworICAgIGlmKC9eXCNkZWZpbmUgKENVUkwoT1BUfElORk98TU9QVClfXHcrKSAoLiopLykgeworICAgICAgICAkYWxpYXN7JDF9PSQzOworICAgIH0KK30KK2Nsb3NlKFIpOworCitteSBAY3VybG9wdDsKK215IEBjdXJsaW5mbzsKK215IEBjdXJsbW9wdDsKK29wZW4oUiwgIjwkc3ltcyIpIHx8CisgICAgZGllICJubyBpbnB1dCBmaWxlIjsKK3doaWxlKDxSPikgeworICAgIGNob21wOworICAgIG15ICRsPSAkXzsKKyAgICBpZigkbCA9fiAvKENVUkwoT1BUfElORk98TU9QVClfXHcrKSAqKFswLTkuXSopICooWzAtOS4tXSopICooWzAtOS5dKikvKSB7CisgICAgICAgIG15ICgkb3B0LCAkdHlwZSwgJGFkZCwgJGRlcCwgJHJlbSkgPSAoJDEsICQyLCAkMywgJDQsICQ1KTsKKworICAgICAgICBpZigkYWxpYXN7JG9wdH0pIHsKKyAgICAgICAgICAgICNwcmludCAiJG9wdCA9PiAkYWxpYXN7JG9wdH1cbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoJHJlbSkgeworICAgICAgICAgICAgIyAkb3B0IHdhcyByZW1vdmVkIGluICRyZW0KKyAgICAgICAgICAgICMgc28gZG9uJ3QgY2hlY2sgZm9yIHRoYXQKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmKCR0eXBlIGVxICJPUFQiKSB7CisgICAgICAgICAgICAgICAgcHVzaCBAY3VybG9wdCwgJG9wdCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2lmKCR0eXBlIGVxICJJTkZPIikgeworICAgICAgICAgICAgICAgIHB1c2ggQGN1cmxpbmZvLCAkb3B0LAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzaWYoJHR5cGUgZXEgIk1PUFQiKSB7CisgICAgICAgICAgICAgICAgcHVzaCBAY3VybG1vcHQsICRvcHQsCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZighIC1mICIkcm9vdC9kb2NzL2xpYmN1cmwvb3B0cy8kb3B0LjMiKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJNaXNzaW5nICRvcHQuM1xuIjsKKyAgICAgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CitjbG9zZShSKTsKKworc2Nhbm1hbnBhZ2UoIiRyb290L2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2V0b3B0LjMiLCBAY3VybG9wdCk7CitzY2FubWFucGFnZSgiJHJvb3QvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMiLCBAY3VybGluZm8pOworc2Nhbm1hbnBhZ2UoIiRyb290L2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NldG9wdC4zIiwgQGN1cmxtb3B0KTsKKworIyB1c2luZyB0aGlzIGhhc2ggYXJyYXksIHdlIGNhbiB3aGl0ZWxpc3Qgc3BlY2lmaWMgb3B0aW9ucworbXkgJW9wdHMgPSAoCisgICAgIyBwcmV0ZW5kIHRoZXNlIC0tbm8gb3B0aW9ucyBleGlzdHMgaW4gdG9vbF9nZXRwYXJhbS5jCisgICAgJy0tbm8tYWxwbicgPT4gMSwKKyAgICAnLS1uby1ucG4nID0+IDEsCisgICAgJy1OLCAtLW5vLWJ1ZmZlcicgPT4gMSwKKyAgICAnLS1uby1zZXNzaW9uaWQnID0+IDEsCisgICAgJy0tbm8ta2VlcGFsaXZlJyA9PiAxLAorCisgICAgIyBwcmV0ZW5kIHRoZXNlIG9wdGlvbnMgd2l0aG91dCAtbm8gZXhpc3QgaW4gY3VybC4xIGFuZCB0b29sX2hlbHAuYworICAgICctLWFscG4nID0+IDYsCisgICAgJy0tbnBuJyA9PiA2LAorICAgICctLWVwcnQnID0+IDYsCisgICAgJy0tZXBzdicgPT4gNiwKKyAgICAnLS1rZWVwYWxpdmUnID0+IDYsCisgICAgJy1OLCAtLWJ1ZmZlcicgPT4gNiwKKyAgICAnLS1zZXNzaW9uaWQnID0+IDYsCisKKyAgICAjIGRlcHJlY2F0ZWQgb3B0aW9ucyBkbyBub3QgbmVlZCB0byBiZSBpbiBjdXJsIC1oIG91dHB1dAorICAgICctLWtyYjQnID0+IDQsCisgICAgJy0tZnRwLXNzbCcgPT4gNCwKKyAgICAnLS1mdHAtc3NsLXJlcWQnID0+IDQsCisKKyAgICAjIGZvciB0ZXN0cyBhbmQgZGVidWcgb25seSwgY2FuIHJlbWFpbiBoaWRkZW4KKyAgICAnLS10ZXN0LWV2ZW50JyA9PiA2LAorICAgICctLXdkZWJ1ZycgPT4gNiwKKyAgICApOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgcGFyc2UgdGhlIGN1cmwgY29kZSB0aGF0IHBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyEKK29wZW4oUiwgIjwkcm9vdC9zcmMvdG9vbF9nZXRwYXJhbS5jIikgfHwKKyAgICBkaWUgIm5vIGlucHV0IGZpbGUiOworbXkgJGxpc3Q7CitteSBAZ2V0cGFyYW07ICMgc3RvcmUgYWxsIHBhcnNlZCBwYXJhbWV0ZXJzCisKK3doaWxlKDxSPikgeworICAgIGNob21wOworICAgIG15ICRsPSAkXzsKKyAgICBpZigvc3RydWN0IExvbmdTaG9ydCBhbGlhc2VzLykgeworICAgICAgICAkbGlzdD0xOworICAgIH0KKyAgICBlbHNpZigkbGlzdCkgeworICAgICAgICBpZiggL14gIFx7KFteLF0qKSwgKihbXiBdKikvKSB7CisgICAgICAgICAgICBteSAoJHMsICRsKT0oJDEsICQyKTsKKyAgICAgICAgICAgIG15ICRzaDsKKyAgICAgICAgICAgIG15ICRsbzsKKyAgICAgICAgICAgIG15ICR0aXRsZTsKKyAgICAgICAgICAgIGlmKCRsID1+IC9cIiguKilcIi8pIHsKKyAgICAgICAgICAgICAgICAjIGxvbmcgb3B0aW9uCisgICAgICAgICAgICAgICAgJGxvID0gJDE7CisgICAgICAgICAgICAgICAgJHRpdGxlPSItLSRsbyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZigkcyA9fiAvXCIoLilcIi8pIHsKKyAgICAgICAgICAgICAgICAjIGEgc2hvcnQgb3B0aW9uCisgICAgICAgICAgICAgICAgJHNoID0gJDE7CisgICAgICAgICAgICAgICAgJHRpdGxlPSItJHNoLCAkdGl0bGUiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaCBAZ2V0cGFyYW0sICR0aXRsZTsKKyAgICAgICAgICAgICRvcHRzeyR0aXRsZX0gfD0gMTsKKyAgICAgICAgfQorICAgIH0KK30KK2Nsb3NlKFIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHBhcnNlIHRoZSBjdXJsLjEgbWFuIHBhZ2UsIGV4dHJhY3QgYWxsIGRvY3VtZW50ZWQgY29tbWFuZCBsaW5lIG9wdGlvbnMKK29wZW4oUiwgIjwkcm9vdC9kb2NzL2N1cmwuMSIpIHx8CisgICAgZGllICJubyBpbnB1dCBmaWxlIjsKK215IEBtYW5wYWdlOyAjIHN0b3JlIGFsbCBwYXJzZWQgcGFyYW1ldGVycword2hpbGUoPFI+KSB7CisgICAgY2hvbXA7CisgICAgbXkgJGw9ICRfOworICAgIGlmKC9eXC5JUCBcIigtW15cIl0qKVwiLykgeworICAgICAgICBteSAkc3RyID0gJDE7CisgICAgICAgIG15ICRjb21ibzsKKyAgICAgICAgaWYoJHN0ciA9fiAvXi0oLiksIC0tKFthLXowLTkuLV0qKS8pIHsKKyAgICAgICAgICAgICMgZmlndXJlIG91dCB0aGUgLXNob3J0LCAtLWxvbmcgY29tYm8KKyAgICAgICAgICAgICRjb21ibyA9ICItJDEsIC0tJDIiOworICAgICAgICB9CisgICAgICAgIGVsc2lmKCRzdHIgPX4gL14tLShbYS16MC05Li1dKikvKSB7CisgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgdGhlIC0tbG9uZyBuYW1lCisgICAgICAgICAgICAkY29tYm8gPSAiLS0kMSI7CisgICAgICAgIH0KKyAgICAgICAgaWYoJGNvbWJvKSB7CisgICAgICAgICAgICBwdXNoIEBtYW5wYWdlLCAkY29tYm87CisgICAgICAgICAgICAkb3B0c3skY29tYm99IHw9IDI7CisgICAgICAgIH0KKyAgICB9Cit9CitjbG9zZShSKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHBhcnNlIHRoZSBjdXJsIGNvZGUgdGhhdCBvdXRwdXRzIHRoZSBjdXJsIC1oIGxpc3QKK29wZW4oUiwgIjwkcm9vdC9zcmMvdG9vbF9oZWxwLmMiKSB8fAorICAgIGRpZSAibm8gaW5wdXQgZmlsZSI7CitteSBAdG9vbGhlbHA7ICMgc3RvcmUgYWxsIHBhcnNlZCBwYXJhbWV0ZXJzCit3aGlsZSg8Uj4pIHsKKyAgICBjaG9tcDsKKyAgICBteSAkbD0gJF87CisgICAgaWYoL14gIFwiICooLiopLykgeworICAgICAgICBteSAkc3RyPSQxOworICAgICAgICBteSAkY29tYm87CisgICAgICAgIGlmKCRzdHIgPX4gL14tKC4pLCAtLShbYS16MC05Li1dKikvKSB7CisgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgdGhlIC1zaG9ydCwgLS1sb25nIGNvbWJvCisgICAgICAgICAgICAkY29tYm8gPSAiLSQxLCAtLSQyIjsKKyAgICAgICAgfQorICAgICAgICBlbHNpZigkc3RyID1+IC9eLS0oW2EtejAtOS4tXSopLykgeworICAgICAgICAgICAgIyBmaWd1cmUgb3V0IHRoZSAtLWxvbmcgbmFtZQorICAgICAgICAgICAgJGNvbWJvID0gIi0tJDEiOworICAgICAgICB9CisgICAgICAgIGlmKCRjb21ibykgeworICAgICAgICAgICAgcHVzaCBAdG9vbGhlbHAsICRjb21ibzsKKyAgICAgICAgICAgICRvcHRzeyRjb21ib30gfD0gNDsKKyAgICAgICAgfQorCisgICAgfQorfQorY2xvc2UoUik7CisKKyMKKyMgTm93IHdlIGhhdmUgdGhyZWUgYXJyYXlzIHdpdGggb3B0aW9ucyB0byBjcm9zcy1yZWZlcmVuY2UuCisKK2ZvcmVhY2ggbXkgJG8gKGtleXMgJW9wdHMpIHsKKyAgICBteSAkd2hlcmUgPSAkb3B0c3skb307CisKKyAgICBpZigkd2hlcmUgIT0gNykgeworICAgICAgICAjIHRoaXMgaXMgbm90IGluIGFsbCB0aHJlZSBwbGFjZXMKKyAgICAgICAgJGVycm9ycysrOworICAgICAgICBteSAkZXhpc3RzOworICAgICAgICBteSAkbWlzc2luZzsKKyAgICAgICAgaWYoJHdoZXJlICYgMSkgeworICAgICAgICAgICAgJGV4aXN0cz0iIHRvb2xfZ2V0cGFyYW0uYyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkbWlzc2luZz0iIHRvb2xfZ2V0cGFyYW0uYyI7CisgICAgICAgIH0KKyAgICAgICAgaWYoJHdoZXJlICYgMikgeworICAgICAgICAgICAgJGV4aXN0cy49ICIgY3VybC4xIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICRtaXNzaW5nLj0gIiBjdXJsLjEiOworICAgICAgICB9CisgICAgICAgIGlmKCR3aGVyZSAmIDQpIHsKKyAgICAgICAgICAgICRleGlzdHMgLj0gIiB0b29sX2hlbHAuYyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkbWlzc2luZyAuPSAiIHRvb2xfaGVscC5jIjsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50IFNUREVSUiAiJG8gaXMgbm90IGluJG1pc3NpbmcgKGJ1dCBpbiRleGlzdHMpXG4iOworICAgIH0KK30KKworZXhpdCAkZXJyb3JzOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVtLWluY2x1ZGUtc2Nhbi5wbCBiL3Rlc3RzL21lbS1pbmNsdWRlLXNjYW4ucGwKaW5kZXggNjc2ZGYyNS4uODkyMmJkNCAxMDA2NDQKLS0tIGEvdGVzdHMvbWVtLWluY2x1ZGUtc2Nhbi5wbAorKysgYi90ZXN0cy9tZW0taW5jbHVkZS1zY2FuLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL21lbWFuYWx5emUucGwgYi90ZXN0cy9tZW1hbmFseXplLnBsCmluZGV4IDcwMWNmMTYuLjM1ZDFjN2UgMTAwNzU1Ci0tLSBhL3Rlc3RzL21lbWFuYWx5emUucGwKKysrIGIvdGVzdHMvbWVtYW5hbHl6ZS5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9ucm9mZi1zY2FuLnBsIGIvdGVzdHMvbnJvZmYtc2Nhbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTMwNjhjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbnJvZmYtc2Nhbi5wbApAQCAtMCwwICsxLDEwNCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHNjYW4gbnJvZmYgcGFnZXMgdG8gZmluZCBiYXNpYyBzeW50YWN0aWMgcHJvYmxlbXMgc3VjaCBhcyB1bmJhbGFuY2VkIFxmCisjIGNvZGVzIG9yIHJlZmVyZW5jZXMgdG8gbm9uLWV4aXN0aW5nIGN1cmwgbWFuIHBhZ2VzLgorCitteSAkZG9jc3Jvb3QgPSAkQVJHVlswXTsKKworaWYoISRkb2Nzcm9vdCB8fCAoJGRvY3Nyb290IGVxICItZyIpKSB7CisgICAgcHJpbnQgIlVzYWdlOiBucm9mZi1zY2FuLnBsIDxkb2NzIHJvb3QgZGlyPiBbbnJvZmYgZmlsZXNdXG4iOworICAgIGV4aXQ7Cit9CisKKworc2hpZnQgQEFSR1Y7CisKK215IEBmID0gQEFSR1Y7CisKK215ICVtYW5wOworCitzdWIgbWFucHJlc2VudCB7CisgICAgbXkgKCRtYW4pID0gQF87CisgICAgaWYoJG1hbnB7JG1hbn0pIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2lmKC1yICIkZG9jc3Jvb3QvJG1hbiIgfHwKKyAgICAgICAgICAtciAiJGRvY3Nyb290L2xpYmN1cmwvJG1hbiIgfHwKKyAgICAgICAgICAtciAiJGRvY3Nyb290L2xpYmN1cmwvb3B0cy8kbWFuIikgeworICAgICAgICAkbWFucHskbWFufT0xOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBmaWxlIHsKKyAgICBteSAoJGYpID0gQF87CisgICAgb3BlbihGLCAiPCRmIikgfHwKKyAgICAgICAgZGllICJubyBmaWxlIjsKKyAgICBteSAkbGluZSA9IDE7CisgICAgd2hpbGUoPEY+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBteSAkbCA9ICRfOworICAgICAgICB3aGlsZSgkbCA9fiBzL1xcZiguKShbXiBdKilcXGYoLikvLykgeworICAgICAgICAgICAgbXkgKCRwcmUsICRzdHIsICRwb3N0KT0oJDEsICQyLCAkMyk7CisgICAgICAgICAgICBpZigkcG9zdCBuZSAiUCIpIHsKKyAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgImVycm9yOiAkZjokbGluZTogbWlzc2luZyBcXGZQIGFmdGVyICRzdHJcbiI7CisgICAgICAgICAgICAgICAgJGVycm9ycysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoJHN0ciA9fiAvKChsaWJjdXJsfGN1cmwpKFteIF0qKSlcKDNcKS9pKSB7CisgICAgICAgICAgICAgICAgbXkgJG1hbiA9ICIkMS4zIjsKKyAgICAgICAgICAgICAgICBpZighbWFucHJlc2VudCgkbWFuKSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgImVycm9yOiAkZjokbGluZTogcmVmZXJpbmcgdG8gbm9uLWV4aXN0aW5nIG1hbiBwYWdlICRtYW5cbiI7CisgICAgICAgICAgICAgICAgICAgICRlcnJvcnMrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYoJHByZSBuZSAiSSIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJlcnJvcjogJGY6JGxpbmU6IHVzZSBcXGZJIGJlZm9yZSAkc3RyXG4iOworICAgICAgICAgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKCRsID1+IC8oY3VybChbXiBdKilcKDNcKSkvaSkgeworICAgICAgICAgICAgcHJpbnQgU1RERVJSICJlcnJvcjogJGY6JGxpbmU6IG5vbi1yZWZlcmVuY2luZyAkMVxuIjsKKyAgICAgICAgICAgICRlcnJvcnMrKzsKKyAgICAgICAgfQorICAgICAgICBpZigkbCA9fiAvXlwuQlIgKC4qKS8pIHsKKyAgICAgICAgICAgIG15ICRpPSAkMTsKKyAgICAgICAgICAgIHdoaWxlKCRpID1+IHMvKChsaWJ8KWN1cmwoW14gXSopKSAqXCJcKDNcKSgsfCkgKlwiICovL2kgKSB7CisgICAgICAgICAgICAgICAgbXkgJG1hbiA9ICIkMS4zIjsKKyAgICAgICAgICAgICAgICBpZighbWFucHJlc2VudCgkbWFuKSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgImVycm9yOiAkZjokbGluZTogcmVmZXJpbmcgdG8gbm9uLWV4aXN0aW5nIG1hbiBwYWdlICRtYW5cbiI7CisgICAgICAgICAgICAgICAgICAgICRlcnJvcnMrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgJGxpbmUrKzsKKyAgICB9CisgICAgY2xvc2UoRik7Cit9CisKK2ZvcmVhY2ggbXkgJGYgKEBmKSB7CisgICAgZmlsZSgkZik7Cit9CisKK2V4aXQgJGVycm9ycz8xOjA7CmRpZmYgLS1naXQgYS90ZXN0cy9wYXRoaGVscC5wbSBiL3Rlc3RzL3BhdGhoZWxwLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MWVmNmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9wYXRoaGVscC5wbQpAQCAtMCwwICsxLDc2MSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgRXZnZW55IEdyaW4gKEthcmxzb24yayksIDxrMmtAbmFyb2QucnU+LgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFRoaXMgUGVybCBwYWNrYWdlIGhlbHBzIHdpdGggcGF0aCB0cmFuc2Zvcm1pbmcgd2hlbiBydW5uaW5nIGNVUkwgdGVzdHMgb24KKyMgV2luMzIgcGxhdGZvcm0gd2l0aCBNc3lzIG9yIEN5Z3dpbi4KKyMgVGhyZWUgbWFpbiBmdW5jdGlvbnMgJ3N5c19uYXRpdmVfYWJzX3BhdGgnLCAnc3lzX25hdGl2ZV9wYXRoJyBhbmQKKyMgJ2J1aWxkX3N5c19hYnNfcGF0aCcgYXV0b2RldGVjdCBmb3JtYXQgb2YgZ2l2ZW4gcGF0aG5hbWVzLiBGb2xsb3dpbmcgZm9ybWF0cworIyBhcmUgc3VwcG9ydGVkOgorIyAgKDEpIC9zb21lL3BhdGggICAtIGFic29sdXRlIHBhdGggaW4gVW5peC1zdHlsZQorIyAgKDIpIEQ6L3NvbWUvcGF0aCAtIGFic29sdXRlIHBhdGggaW4gV2luMzItc3R5bGUKKyMgICgzKSBzb21lL3BhdGggICAgLSByZWxhdGl2ZSBwYXRoCisjICAoNCkgRDpzb21lL3BhdGggIC0gcGF0aCByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeSBvbiBXaW4zMiBkcml2ZSAocGF0aHMKKyMgICAgICAgICAgICAgICAgICAgICBsaWtlICdEOicgYXJlIHRyZWF0ZWQgYXMgJ0Q6Li8nKSAoKikKKyMgICg1KSBcc29tZS9wYXRoICAgLSBwYXRoIGZyb20gcm9vdCBkaXJlY3Rvcnkgb24gY3VycmVudCBXaW4zMiBkcml2ZSAoKikKKyMgQWxsIGZvcndhcmQgJy8nIGFuZCBiYWNrICdcJyBzbGFzaGVzIGFyZSB0cmVhdGVkIGlkZW50aWNhbGx5IGV4Y2VwdCBsZWFkaW5nCisjIHNsYXNoIGluIGZvcm1zICgxKSBhbmQgKDUpLgorIyBGb3J3YXJkIHNsYXNoZXMgYXJlIHNpbXBsZXIgcHJvY2Vzc2VkIGluIFBlcmwsIGRvIG5vdCByZXF1aXJlIGV4dHJhIGVzY2FwaW5nCisjIGZvciBzaGVsbCAodW5saWtlIGJhY2sgc2xhc2hlcykgYW5kIGFjY2VwdGVkIGJ5IFdpbjMyIG5hdGl2ZSBwcm9ncmFtcywgc28KKyMgYWxsIGZ1bmN0aW9ucyByZXR1cm4gcGF0aHMgd2l0aCBvbmx5IGZvcndhcmQgc2xhc2hlcyBleGNlcHQKKyMgJ3N5c19uYXRpdmVfcGF0aCcgd2hpY2ggcmV0dXJucyBwYXRocyB3aXRoIGZpcnN0IGZvcndhcmQgc2xhc2ggZm9yIGZvcm0gKDUpLgorIyBBbGwgcmV0dXJuZWQgcGF0aHMgZG9uJ3QgY29udGFpbiBhbnkgZHVwbGljYXRlZCBzbGFzaGVzLCBvbmx5IHNpbmdsZSBzbGFzaGVzCisjIGFyZSB1c2VkIGFzIGRpcmVjdG9yeSBzZXBhcmF0b3JzIG9uIG91dHB1dC4KKyMgT24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zIGZ1bmN0aW9ucyBhY3RzIGFzIHRyYW5zcGFyZW50IHdyYXBwZXJzIGZvciBzaW1pbGFyCisjIFBlcmwncyBmdW5jdGlvbnMgb3IgcmV0dXJuIHVubW9kaWZpZWQgc3RyaW5nIChkZXBlbmRpbmcgb24gZnVuY3Rpb25hbGl0eSksCisjIHNvIGFsbCBmdW5jdGlvbnMgY2FuIGJlIHVuY29uZGl0aW9uYWxseSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCisjCisjICgqKSBDQVVUSU9OISBGb3JtcyAoNCkgYW5kICg1KSBhcmUgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBhcyB0aGV5IGNhbiBiZQorIyAgICAgaW50ZXJwcmV0ZWQgaW5jb3JyZWN0bHkgaW4gUGVybCBhbmQgTXN5cy9DeWd3aW4gZW52aXJvbm1lbnQgaGF2ZSBsb3cKKyMgICAgIGNvbnRyb2wgb24gV2luMzIgY3VycmVudCBkcml2ZSBhbmQgV2luMzIgY3VycmVudCBwYXRoIG9uIHNwZWNpZmljIGRyaXZlLgorCisKK3BhY2thZ2UgcGF0aGhlbHA7Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEN3ZCAnYWJzX3BhdGgnOworCitCRUdJTiB7CisgICAgcmVxdWlyZSBFeHBvcnRlcjsKKworICAgIG91ciBASVNBICAgID0gcXcoRXhwb3J0ZXIpOworCisgICAgb3VyIEBFWFBPUlQgPSBxdygKKyAgICAgIHN5c19uYXRpdmVfYWJzX3BhdGgKKyAgICAgIHN5c19uYXRpdmVfcGF0aAorICAgICk7CisKKyAgICBvdXIgQEVYUE9SVF9PSyA9IHF3KAorICAgICAgYnVpbGRfc3lzX2Fic19wYXRoCisgICAgICBzeXNfbmF0aXZlX2N1cnJlbnRfcGF0aAorICAgICAgbm9ybWFsaXplX3BhdGgKKyAgICAgIG9zX2lzX3dpbgorICAgICAgJHVzZV9jeWdwYXRoCisgICAgICBzaG91bGRfdXNlX2N5Z3BhdGgKKyAgICAgIGRyaXZlc19tb3VudGVkX29uX2N5Z2RyaXZlCisgICAgKTsKK30KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCbG9jayBmb3IgY2FjaGVkIHN0YXRpYyB2YXJpYWJsZXMKKyMKK3sKKyAgICAjIENhY2hlZCBzdGF0aWMgdmFyaWFibGUsIFBlcmwgNS4wLWNvbXBhdGlibGUuCisgICAgbXkgJGlzX3dpbiA9ICReTyBlcSAnTVNXaW4zMicKKyAgICAgICAgICAgICAgfHwgJF5PIGVxICdjeWd3aW4nCisgICAgICAgICAgICAgIHx8ICReTyBlcSAnbXN5cyc7CisKKyAgICAjIFJldHVybnMgYm9vbGVhbiB0cnVlIGlmIE9TIGlzIGFueSBmb3JtIG9mIFdpbmRvd3MuCisgICAgc3ViIG9zX2lzX3dpbiB7CisgICAgICAgIHJldHVybiAkaXNfd2luOworICAgIH0KKworICAgICMgQ2FjaGVkIHN0YXRpYyB2YXJpYWJsZSwgUGVybCA1LjAtY29tcGF0aWJsZS4KKyAgICBteSAkY3lnZHJpdmVfcHJlc2VudDsKKworICAgICMgUmV0dXJucyBib29sZWFuIHRydWUgaWYgV2luMzIgZHJpdmVzIG1vdW50ZWQgd2l0aCAnL2N5Z2RyaXZlLycgcHJlZml4LgorICAgIHN1YiBkcml2ZXNfbW91bnRlZF9vbl9jeWdkcml2ZSB7CisgICAgICAgIHJldHVybiAkY3lnZHJpdmVfcHJlc2VudCBpZiBkZWZpbmVkICRjeWdkcml2ZV9wcmVzZW50OworICAgICAgICAkY3lnZHJpdmVfcHJlc2VudCA9ICgoLWUgJy9jeWdkcml2ZS8nKSAmJiAoLWQgJy9jeWdkcml2ZS8nKSkgPyAxIDogMDsKKyAgICAgICAgcmV0dXJuICRjeWdkcml2ZV9wcmVzZW50OworICAgIH0KK30KKworb3VyICR1c2VfY3lncGF0aDsgICAgIyBPbmx5IGZvciBXaW4zMjoKKyAgICAgICAgICAgICAgICAgICAgICMgIHVuZGVmIC0gYXV0b2RldGVjdAorICAgICAgICAgICAgICAgICAgICAgIyAgICAgIDEgLSB1c2UgY3lncGF0aAorICAgICAgICAgICAgICAgICAgICAgIyAgICAgIDAgLSBkbyBub3QgdXNlIGN5Z3BhdGgKKworIyBSZXR1cm5zIGJvb2xlYW4gdHJ1ZSBpZiAnY3lncGF0aCcgdXRpbGl0eSBzaG91bGQgYmUgdXNlZCBmb3IgcGF0aCBjb252ZXJzaW9uLgorc3ViIHNob3VsZF91c2VfY3lncGF0aCB7CisgICAgdW5sZXNzIChvc19pc193aW4oKSkgeworICAgICAgICAkdXNlX2N5Z3BhdGggPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuICR1c2VfY3lncGF0aCBpZiBkZWZpbmVkICR1c2VfY3lncGF0aDsKKworICAgICR1c2VfY3lncGF0aCA9IChxeHtjeWdwYXRoIC11ICcuXFwnIDI+L2Rldi9udWxsfSBlcSAiLi9cbiIgJiYgJD8gPT0gMCk7CisKKyAgICByZXR1cm4gJHVzZV9jeWdwYXRoOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQZXJmb3JtcyBwYXRoICJub3JtYWxpemF0aW9uIjogYWxsIHNsYXNoZXMgY29udmVydGVkIHRvIGZvcndhcmQKKyMgc2xhc2hlcyAoZXhjZXB0IGxlYWRpbmcgc2xhc2gpLCBhbGwgZHVwbGljYXRlZCBzbGFzaGVzIGFyZSByZXBsYWNlZAorIyB3aXRoIHNpbmdsZSBzbGFzaGVzLCBhbGwgcmVsYXRpdmUgZGlyZWN0b3JpZXMgKCcuLycgYW5kICcuLi8nKSBhcmUKKyMgcmVzb2x2ZWQgaWYgcG9zc2libGUuCisjIFBhdGggcHJvY2Vzc2VkIGFzIHN0cmluZywgZGlyZWN0b3JpZXMgYXJlIG5vdCBjaGVja2VkIGZvciBwcmVzZW5jZSBzbworIyBwYXRoIGZvciBub3QgeWV0IGV4aXN0aW5nIGRpcmVjdG9yeSBjYW4gYmUgIm5vcm1hbGl6ZWQiLgorIworc3ViIG5vcm1hbGl6ZV9wYXRoOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZXR1cm5zIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaW4gV2luMzIgZm9ybWF0IG9uIFdpbmRvd3MuCisjCitzdWIgc3lzX25hdGl2ZV9jdXJyZW50X3BhdGggeworICAgIHJldHVybiBDd2Q6OmdldGN3ZCgpIHVubGVzcyBvc19pc193aW4oKTsKKworICAgIG15ICRjdXJfZGlyOworICAgIGlmKCReTyBlcSAnbXN5cycpIHsKKyAgICAgICAgIyBNU3lzIHNoZWxsIGhhcyBidWlsdC1pbiBjb21tYW5kLgorICAgICAgICBjaG9tcCgkY3VyX2RpciA9IGBiYXNoIC1jICdwd2QgLVcnYCk7CisgICAgICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IGRldGVybWluZSBXaW4zMiBjdXJyZW50IGRpcmVjdG9yeS5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKyAgICAgICAgIyBBZGQgZmluYWwgc2xhc2ggaWYgcmVxdWlyZWQuCisgICAgICAgICRjdXJfZGlyIC49ICcvJyBpZiBsZW5ndGgoJGN1cl9kaXIpID4gMzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICMgRG8gbm90IHVzZSAnY3lncGF0aCcgLSBpdCBmYWxzZWx5IHN1Y2NlZWQgb24gcGF0aHMgbGlrZSAnL2N5Z2RyaXZlJy4KKyAgICAgICAgJGN1cl9kaXIgPSBgY21kICIvYzsiIGVjaG8gJV9fQ0RfXyVgOworICAgICAgICBpZigkPyAhPSAwIHx8IHN1YnN0cigkY3VyX2RpciwgMCwgMSkgZXEgJyUnKSB7CisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgV2luMzIgY3VycmVudCBkaXJlY3RvcnkuXG4iOworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisgICAgICAgICMgUmVtb3ZlIGJvdGggJ1xyJyBhbmQgJ1xuJy4KKyAgICAgICAgJGN1cl9kaXIgPX4gc3tcbnxccn17fWc7CisKKyAgICAgICAgIyBSZXBsYWNlIGJhY2sgc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgJGN1cl9kaXIgPX4gc3tcXH17L31nOworICAgIH0KKyAgICByZXR1cm4gJGN1cl9kaXI7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJldHVybnMgV2luMzIgY3VycmVudCBkcml2ZSBsZXR0ZXIgd2l0aCBjb2xvbi4KKyMKK3N1YiBnZXRfd2luMzJfY3VycmVudF9kcml2ZSB7CisgICAgIyBOb3RpY2UgcGFyYW1ldGVyICIvYzsiIC0gaXQncyByZXF1aXJlZCB0byB0dXJuIG9mZiBNc3lzJ3MKKyAgICAjIHRyYW5zZm9ybWF0aW9uIG9mICcvYycgYW5kIGNvbXBhdGlibGUgd2l0aCBDeWd3aW4uCisgICAgbXkgJGRyaXZlX2xldHRlciA9IGBjbWQgIi9jOyIgZWNobyAlX19DRF9fOn4wLDIlYDsKKyAgICBpZigkPyAhPSAwIHx8IHN1YnN0cigkZHJpdmVfbGV0dGVyLCAxLCAxKSBuZSAnOicpIHsKKyAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIGN1cnJlbnQgV2luMzIgZHJpdmUgbGV0dGVyLlxuIjsKKyAgICAgICAgcmV0dXJuIHVuZGVmOworICAgIH0KKworICAgIHJldHVybiBzdWJzdHIoJGRyaXZlX2xldHRlciwgMCwgMik7Cit9CisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIENvbnZlcnRzIHBhdGggYnkgdXNpbmcgTXN5cydzIGJ1aWx0LWluIHRyYW5zZm9ybWF0aW9uLgorIyBSZXR1cm5lZCBwYXRoIG1heSBjb250YWluIGR1cGxpY2F0ZWQgYW5kIGJhY2sgc2xhc2hlcy4KK3N1YiBkb19tc3lzX3RyYW5zZm9ybTsKKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gR2V0cyB0d28gcGFyYW1ldGVyczogZmlyc3QgcGFyYW1ldGVyIG11c3QgYmUgc2luZ2xlCisjIGRyaXZlIGxldHRlciAoJ2MnKSwgc2Vjb25kIG9wdGlvbmFsIHBhcmFtZXRlciBpcyBwYXRoIHJlbGF0aXZlIHRvIGRyaXZlJ3MgCisjIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIFJldHVybnMgV2luMzIgYWJzb2x1dGUgbm9ybWFsaXplZCBwYXRoLgorc3ViIGdldF9hYnNfcGF0aF9vbl93aW4zMl9kcml2ZTsKKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gVHJpZXMgdG8gZmluZCBvciBndWVzcyBXaW4zMiB2ZXJzaW9uIG9mIGdpdmVuCisjIGFic29sdXRlIFVuaXgtc3R5bGUgcGF0aC4gT3RoZXIgdHlwZXMgb2YgcGF0aHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisjIFJldHVybmVkIHBhdGhzIGNvbnRhaW4gb25seSBzaW5nbGUgZm9yd2FyZCBzbGFzaGVzIChubyBiYWNrIGFuZAorIyBkdXBsaWNhdGVkIHNsYXNoZXMpLgorIyBMYXN0IHJlc29ydC4gVXNlZCBvbmx5IHdoZW4gb3RoZXIgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYXZhaWxhYmxlLgorc3ViIGRvX2R1bWJfZ3Vlc3NlZF90cmFuc2Zvcm07CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbnZlcnRzIGdpdmVuIHBhdGggdG8gc3lzdGVtIG5hdGl2ZSBmb3JtYXQsIGkuZS4gdG8gV2luMzIgZm9ybWF0IG9uCisjIFdpbmRvd3MgcGxhdGZvcm0uIFJlbGF0aXZlIHBhdGhzIGNvbnZlcnRlZCB0byByZWxhdGl2ZSwgYWJzb2x1dGUKKyMgcGF0aHMgY29udmVydGVkIHRvIGFic29sdXRlLgorIworc3ViIHN5c19uYXRpdmVfcGF0aCB7CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisgICAgIyBSZXR1cm4gdW50b3VjaGVkIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KKyAgICByZXR1cm4gJHBhdGggdW5sZXNzIChvc19pc193aW4oKSk7CisKKyAgICAjIERvIG5vdCBwcm9jZXNzIGVtcHR5IHBhdGguCisgICAgcmV0dXJuICRwYXRoIGlmICgkcGF0aCBlcSAnJyk7CisKKyAgICBpZigkcGF0aCA9fiBze14oW2EtekEtWl0pOiR9e1x1JDE6fSkgeworICAgICAgICAjIFBhdGggaXMgc2luZ2xlIGRyaXZlIHdpdGggY29sb24uIChDOikKKyAgICAgICAgIyBUaGlzIHR5cGUgb2YgcGF0aHMgaXMgbm90IHByb2Nlc3NlZCBjb3JyZWN0bHkgYnkgJ2N5Z3BhdGgnLgorICAgICAgICAjIFdBUk5JTkchCisgICAgICAgICMgQmUgY2FyZWZ1bCwgdGhpcyByZWxhdGl2ZSBwYXRoIGNhbiBiZSBhY2NpZGVudGFsbHkgdHJhbnNmb3JtZWQKKyAgICAgICAgIyBpbnRvIHdyb25nIGFic29sdXRlIHBhdGggYnkgYWRkaW5nIHRvIGl0IHNvbWUgJy9kaXJuYW1lJyB3aXRoCisgICAgICAgICMgc2xhc2ggYXQgZm9udC4KKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICBlbHNpZigkcGF0aCA9fiBte15cXH0gfHwgJHBhdGggPX4gbXteW2EtekEtWl06W14vXFxdfSkgeworICAgICAgICAjIFBhdGggaXMgYSBkaXJlY3Rvcnkgb3IgZmlsZW5hbWUgb24gV2luMzIgY3VycmVudCBkcml2ZSBvciByZWxhdGl2ZQorICAgICAgICAjIHBhdGggb24gY3VycmVudCBkaXJlY3Rvcnkgb24gc3BlY2lmaWMgV2luMzIgZHJpdmUuCisgICAgICAgICMgKCdccGF0aCcgb3IgJ0Q6cGF0aCcpCisgICAgICAgICMgRmlyc3QgdHlwZSBvZiBwYXRocyBpcyBub3QgcHJvY2Vzc2VkIGJ5IE1zeXMgdHJhbnNmb3JtYXRpb24gYW5kCisgICAgICAgICMgcmVzb2x2ZWQgdG8gYWJzb2x1dGUgcGF0aCBieSAnY3lncGF0aCcuCisgICAgICAgICMgU2Vjb25kIHR5cGUgaXMgbm90IHByb2Nlc3NlZCBieSBNc3lzIHRyYW5zZm9ybWF0aW9uIGFuZCBtYXkgYmUKKyAgICAgICAgIyBpbmNvcnJlY3RseSBwcm9jZXNzZWQgYnkgJ2N5Z3BhdGgnIChmb3IgcGF0aHMgbGlrZSAnRDouLlwuLi8uXCcpCisKKyAgICAgICAgbXkgJGZpcnN0X2NoYXIgPSB1Y2ZpcnN0KHN1YnN0cigkcGF0aCwgMCwgMSkpOworCisgICAgICAgICMgUmVwbGFjZSBhbnkgYmFjayBhbmQgZHVwbGljYXRlZCBzbGFzaGVzIHdpdGggc2luZ2xlIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgJHBhdGggPX4gc3tbXFwvXSt9ey99ZzsKKworICAgICAgICAjIENvbnZlcnQgbGVhZGluZyBzbGFzaCBiYWNrIHRvIGZvcndhcmQgc2xhc2ggdG8gaW5kaWNhdGUKKyAgICAgICAgIyBkaXJlY3Rvcnkgb24gV2luMzIgY3VycmVudCBkcml2ZSBvciBjYXBpdGFsaXplIGRyaXZlIGxldHRlci4KKyAgICAgICAgc3Vic3RyKCRwYXRoLCAwLCAxKSA9ICRmaXJzdF9jaGFyOworICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorICAgIGVsc2lmKHNob3VsZF91c2VfY3lncGF0aCgpKSB7CisgICAgICAgICMgJ2N5Z3BhdGgnIGlzIGF2YWlsYWJsZSAtIHVzZSBpdC4KKworICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGR1cGxpY2F0ZWQgZm9yd2FyZCBhbmQgYmFjayBzbGFzaGVzLCBhcyB0aGV5IG1heQorICAgICAgICAjIHByZXZlbnQgdHJhbnNmb3JtaW5nIGFuZCBtYXkgYmUgbm90IHByb2Nlc3NlZC4KKyAgICAgICAgJHBhdGggPX4gc3teKFtcXC9dKVtcXC9dK317JDF9ZzsKKworICAgICAgICBteSAkaGFzX2ZpbmFsX3NsYXNoID0gKCRwYXRoID1+IG17Wy9cXF0kfSk7CisKKyAgICAgICAgIyBVc2UgJ2N5Z3BhdGgnLCAnLW0nIG1lYW5zIFdpbjMyIHBhdGggd2l0aCBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgIGNob21wKCRwYXRoID0gYGN5Z3BhdGggLW0gJyRwYXRoJ2ApOworICAgICAgICBpZiAoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgY29udmVydCBwYXRoIGJ5IFwiY3lncGF0aFwiLlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorCisgICAgICAgICMgJ2N5Z3BhdGgnIG1heSByZW1vdmUgbGFzdCBzbGFzaCBmb3IgZXhpc3RpbmcgZGlyZWN0b3JpZXMuCisgICAgICAgICRwYXRoIC49ICcvJyBpZigkaGFzX2ZpbmFsX3NsYXNoKTsKKworICAgICAgICAjIFJlbW92ZSBhbnkgZHVwbGljYXRlZCBmb3J3YXJkIHNsYXNoZXMgKGFkZGVkIGJ5ICdjeWdwYXRoJyBmb3Igcm9vdAorICAgICAgICAjIGRpcmVjdG9yaWVzKQorICAgICAgICAkcGF0aCA9fiBzey8vK317L31nOworCisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisgICAgZWxzaWYoJF5PIGVxICdtc3lzJykgeworICAgICAgICAjIE1zeXMgdHJhbnNmb3JtcyBhdXRvbWF0aWNhbGx5IHBhdGggdG8gV2luZG93cyBuYXRpdmUgZm9ybSBpbiBzdGFyaW5nCisgICAgICAgICMgcHJvZ3JhbSBwYXJhbWV0ZXJzIGlmIHByb2dyYW0gaXMgbm90IE1zeXMtYmFzZWQuCisKKyAgICAgICAgJHBhdGggPSBkb19tc3lzX3RyYW5zZm9ybSgkcGF0aCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgICAgICAjIENhcGl0YWxpemUgZHJpdmUgbGV0dGVyIGZvciBXaW4zMiBwYXRocy4KKyAgICAgICAgJHBhdGggPX4gc3teKFthLXpdOil9e1x1JDF9OworCisgICAgICAgICMgUmVwbGFjZSBhbnkgYmFjayBhbmQgZHVwbGljYXRlZCBzbGFzaGVzIHdpdGggc2luZ2xlIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgJHBhdGggPX4gc3tbXFwvXSt9ey99ZzsKKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICBlbHNpZigkcGF0aCA9fiBze14oW2EtekEtWl0pOlsvXFxdfXtcdSQxOi99KSB7CisgICAgICAgICMgUGF0aCBpcyBhbHJlYWR5IGluIFdpbjMyIGZvcm0uICgnQzpccGF0aCcpCisKKyAgICAgICAgIyBSZXBsYWNlIGFueSBiYWNrIGFuZCBkdXBsaWNhdGVkIHNsYXNoZXMgd2l0aCBzaW5nbGUgZm9yd2FyZCBzbGFzaGVzLgorICAgICAgICAkcGF0aCA9fiBze1tcXC9dK317L31nOworICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorICAgIGVsc2lmKCRwYXRoICF+IG17Xi99KSB7CisgICAgICAgICMgUGF0aCBpcyBpbiByZWxhdGl2ZSBmb3JtLiAoJ3BhdGgvbmFtZScsICcuL3BhdGgnIG9yICcuLi9wYXRoJykKKworICAgICAgICAjIFJlcGxhY2UgYW55IGJhY2sgYW5kIGR1cGxpY2F0ZWQgc2xhc2hlcyB3aXRoIHNpbmdsZSBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID1+IHN7W1xcL10rfXsvfWc7CisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisKKyAgICAjIE9TIGlzIFdpbmRvd3MsIGJ1dCBub3QgTXN5cywgcGF0aCBpcyBhYnNvbHV0ZSwgcGF0aCBpcyBub3QgaW4gV2luMzIKKyAgICAjIGZvcm0gYW5kICdjeWdwYXRoJyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJldHVybiBkb19kdW1iX2d1ZXNzZWRfdHJhbnNmb3JtKCRwYXRoKTsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29udmVydHMgZ2l2ZW4gcGF0aCB0byBzeXN0ZW0gbmF0aXZlIGFic29sdXRlIHBhdGgsIGkuZS4gdG8gV2luMzIKKyMgYWJzb2x1dGUgZm9ybWF0IG9uIFdpbmRvd3MgcGxhdGZvcm0uIEJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlCisjIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBmb3IgaW5wdXQuCisjCitzdWIgc3lzX25hdGl2ZV9hYnNfcGF0aCB7CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisgICAgdW5sZXNzKG9zX2lzX3dpbigpKSB7CisgICAgICAgICMgQ29udmVydCBwYXRoIHRvIGFic29sdXRlIGZvcm0uCisgICAgICAgICRwYXRoID0gQ3dkOjphYnNfcGF0aCgkcGF0aCk7CisKKyAgICAgICAgIyBEbyBub3QgcHJvY2VzcyBmdXJ0aGVyIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKworICAgIGlmKCRwYXRoID1+IG17XihbYS16QS1aXSk6KCR8W14vXFxdLiokKX0pIHsKKyAgICAgICAgIyBQYXRoIGlzIHNpbmdsZSBkcml2ZSB3aXRoIGNvbG9uIG9yIHJlbGF0aXZlIHBhdGggb24gV2luMzIgZHJpdmUuCisgICAgICAgICMgKCdDOicgb3IgJ0M6cGF0aCcpCisgICAgICAgICMgVGhpcyBraW5kIG9mIHJlbGF0aXZlIHBhdGggaXMgbm90IHByb2Nlc3NlZCBjb3JyZWN0bHkgYnkgJ2N5Z3BhdGgnLgorICAgICAgICAjIEdldCBzcGVjaWZpZWQgZHJpdmUgbGV0dGVyCisgICAgICAgIHJldHVybiBnZXRfYWJzX3BhdGhfb25fd2luMzJfZHJpdmUoJDEsICQyKTsKKyAgICB9CisgICAgZWxzaWYoJHBhdGggZXEgJycpIHsKKyAgICAgICAgIyBQYXRoIGlzIGVtcHR5IHN0cmluZy4gUmV0dXJuIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAjIEVtcHR5IHN0cmluZyBwcm9jZXNzZWQgY29ycmVjdGx5IGJ5ICdjeWdwYXRoJy4KKworICAgICAgICByZXR1cm4gc3lzX25hdGl2ZV9jdXJyZW50X3BhdGgoKTsKKyAgICB9CisgICAgZWxzaWYoc2hvdWxkX3VzZV9jeWdwYXRoKCkpIHsKKyAgICAgICAgIyAnY3lncGF0aCcgaXMgYXZhaWxhYmxlIC0gdXNlIGl0LgorCisgICAgICAgIG15ICRoYXNfZmluYWxfc2xhc2ggPSAoJHBhdGggPX4gbXtbXFwvXSR9KTsKKworICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGR1cGxpY2F0ZWQgZm9yd2FyZCBhbmQgYmFjayBzbGFzaGVzLCBhcyB0aGV5IG1heQorICAgICAgICAjIHByZXZlbnQgdHJhbnNmb3JtaW5nIGFuZCBtYXkgYmUgbm90IHByb2Nlc3NlZC4KKyAgICAgICAgJHBhdGggPX4gc3teKFtcXC9dKVtcXC9dK317JDF9ZzsKKworICAgICAgICBwcmludCAiSW50ZXIgcmVzdWx0OiBcIiRwYXRoXCJcbiI7CisgICAgICAgICMgVXNlICdjeWdwYXRoJywgJy1tJyBtZWFucyBXaW4zMiBwYXRoIHdpdGggZm9yd2FyZCBzbGFzaGVzLAorICAgICAgICAjICctYScgbWVhbnMgYWJzb2x1dGUgcGF0aAorICAgICAgICBjaG9tcCgkcGF0aCA9IGBjeWdwYXRoIC1tIC1hICckcGF0aCdgKTsKKyAgICAgICAgaWYoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgcmVzb2x2ZSBwYXRoIGJ5IHVzdW5nIFwiY3lncGF0aFwiLlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorCisgICAgICAgICMgJ2N5Z3BhdGgnIG1heSByZW1vdmUgbGFzdCBzbGFzaCBmb3IgZXhpc3RpbmcgZGlyZWN0b3JpZXMuCisgICAgICAgICRwYXRoIC49ICcvJyBpZigkaGFzX2ZpbmFsX3NsYXNoKTsKKworICAgICAgICAjIFJlbW92ZSBhbnkgZHVwbGljYXRlZCBmb3J3YXJkIHNsYXNoZXMgKGFkZGVkIGJ5ICdjeWdwYXRoJyBmb3Igcm9vdAorICAgICAgICAjIGRpcmVjdG9yaWVzKQorICAgICAgICAkcGF0aCA9fiBzey8vK317L31nOworCisgICAgICAgIHJldHVybiAkcGF0aAorICAgIH0KKyAgICBlbHNpZigkcGF0aCA9fiBze14oW2EtekEtWl0pOlsvXFxdfXtcdSQxOi99KSB7CisgICAgICAgICMgUGF0aCBpcyBhbHJlYWR5IGluIFdpbjMyIGZvcm0uICgnQzpccGF0aCcpCisKKyAgICAgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMsIHJlc29sdmUgcmVsYXRpdmUgZGlycy4KKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZV9wYXRoKCRwYXRoKTsKKyAgICB9CisgICAgZWxzaWYoc3Vic3RyKCRwYXRoLCAwLCAxKSBlcSAnXFwnICkgeworICAgICAgICAjIFBhdGggaXMgZGlyZWN0b3J5IG9yIGZpbGVuYW1lIG9uIFdpbjMyIGN1cnJlbnQgZHJpdmUuICgnXFdpbmRvd3MnKQorCisgICAgICAgIG15ICR3MzJkcml2ZSA9IGdldF93aW4zMl9jdXJyZW50X2RyaXZlKCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkdzMyZHJpdmU7CisKKyAgICAgICAgIyBDb21iaW5lIGRyaXZlIGFuZCBwYXRoLgorICAgICAgICAjIFJlcGxhY2UgYW55IHBvc3NpYmxlIGJhY2sgc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcywKKyAgICAgICAgIyByZW1vdmUgYW55IGR1cGxpY2F0ZWQgc2xhc2hlcywgcmVzb2x2ZSByZWxhdGl2ZSBkaXJzLgorICAgICAgICByZXR1cm4gbm9ybWFsaXplX3BhdGgoJHczMmRyaXZlIC4gJHBhdGgpOworICAgIH0KKworICAgIHVubGVzcyAoc3Vic3RyKCRwYXRoLCAwLCAxKSBlcSAnLycpIHsKKyAgICAgICAgIyBQYXRoIGlzIGluIHJlbGF0aXZlIGZvcm0uIFJlc29sdmUgcmVsYXRpdmUgZGlyZWN0b3JpZXMgaW4gVW5peCBmb3JtCisgICAgICAgICMgKkJFRk9SRSogY29udmVydGluZyB0byBXaW4zMiBmb3JtIG90aGVyd2lzZSBwYXRocyBsaWtlCisgICAgICAgICMgJy4uLy4uLy4uL2N5Z2RyaXZlL2Mvd2luZG93cycgd2lsbCBub3QgYmUgcmVzb2x2ZWQuCisgICAgICAgIG15ICRjdXJfZGlyID0gYHB3ZCAtTGA7CisgICAgICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IGRldGVybWluZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorICAgICAgICBjaG9tcCgkY3VyX2Rpcik7CisKKyAgICAgICAgJHBhdGggPSAkY3VyX2RpciAuICcvJyAuICRwYXRoOworICAgIH0KKworICAgICMgUmVzb2x2ZSByZWxhdGl2ZSBkaXJzLgorICAgICRwYXRoID0gbm9ybWFsaXplX3BhdGgoJHBhdGgpOworICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgIGlmKCReTyBlcSAnbXN5cycpIHsKKyAgICAgICAgIyBNc3lzIHRyYW5zZm9ybXMgYXV0b21hdGljYWxseSBwYXRoIHRvIFdpbmRvd3MgbmF0aXZlIGZvcm0gaW4gc3RhcmluZworICAgICAgICAjIHByb2dyYW0gcGFyYW1ldGVycyBpZiBwcm9ncmFtIGlzIG5vdCBNc3lzLWJhc2VkLgorICAgICAgICAkcGF0aCA9IGRvX21zeXNfdHJhbnNmb3JtKCRwYXRoKTsKKyAgICAgICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRwYXRoOworCisgICAgICAgICMgUmVwbGFjZSBhbnkgYmFjayBhbmQgZHVwbGljYXRlZCBzbGFzaGVzIHdpdGggc2luZ2xlIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgJHBhdGggPX4gc3tbXFwvXSt9ey99ZzsKKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICAjIE9TIGlzIFdpbmRvd3MsIGJ1dCBub3QgTXN5cywgcGF0aCBpcyBhYnNvbHV0ZSwgcGF0aCBpcyBub3QgaW4gV2luMzIKKyAgICAjIGZvcm0gYW5kICdjeWdwYXRoJyBpcyBub3QgYXZhaWxhYmxlLgorCisgICAgcmV0dXJuIGRvX2R1bWJfZ3Vlc3NlZF90cmFuc2Zvcm0oJHBhdGgpOworfQorCisjIEludGVybmFsIGZ1bmN0aW9uLiBDb252ZXJ0cyBnaXZlbiBVbml4LXN0eWxlIGFic29sdXRlIHBhdGggdG8gV2luMzIgZm9ybWF0Lgorc3ViIHNpbXBsZV90cmFuc2Zvcm1fd2luMzJfdG9fdW5peDsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29udmVydHMgZ2l2ZW4gcGF0aCB0byBidWlsZCBzeXN0ZW0gZm9ybWF0IGFic29sdXRlIHBhdGgsIGkuZS4gdG8KKyMgTXN5cy9DeWd3aW4gVW5peC1zdHlsZSBhYnNvbHV0ZSBmb3JtYXQgb24gV2luZG93cyBwbGF0Zm9ybS4gQm90aAorIyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgZm9ybWF0cyBhcmUgc3VwcG9ydGVkIGZvciBpbnB1dC4KKyMKK3N1YiBidWlsZF9zeXNfYWJzX3BhdGggeworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgIHVubGVzcyhvc19pc193aW4oKSkgeworICAgICAgICAjIENvbnZlcnQgcGF0aCB0byBhYnNvbHV0ZSBmb3JtLgorICAgICAgICAkcGF0aCA9IEN3ZDo6YWJzX3BhdGgoJHBhdGgpOworCisgICAgICAgICMgRG8gbm90IHByb2Nlc3MgZnVydGhlciBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisKKyAgICBpZigkcGF0aCA9fiBte14oW2EtekEtWl0pOigkfFteL1xcXS4qJCl9KSB7CisgICAgICAgICMgUGF0aCBpcyBzaW5nbGUgZHJpdmUgd2l0aCBjb2xvbiBvciByZWxhdGl2ZSBwYXRoIG9uIFdpbjMyIGRyaXZlLgorICAgICAgICAjICgnQzonIG9yICdDOnBhdGgnKQorICAgICAgICAjIFRoaXMga2luZCBvZiByZWxhdGl2ZSBwYXRoIGlzIG5vdCBwcm9jZXNzZWQgY29ycmVjdGx5IGJ5ICdjeWdwYXRoJy4KKyAgICAgICAgIyBHZXQgc3BlY2lmaWVkIGRyaXZlIGxldHRlcgorCisgICAgICAgICMgUmVzb2x2ZSByZWxhdGl2ZSBkaXJzIGluIFdpbjMyLXN0eWxlIHBhdGggb3IgcGF0aHMgbGlrZSAnRDovLi4vYy8nCisgICAgICAgICMgd2lsbCBiZSByZXNvbHZlZCBpbmNvcnJlY3RseS4KKyAgICAgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID0gZ2V0X2Fic19wYXRoX29uX3dpbjMyX2RyaXZlKCQxLCAkMik7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgICAgICByZXR1cm4gc2ltcGxlX3RyYW5zZm9ybV93aW4zMl90b191bml4KCRwYXRoKTsKKyAgICB9CisgICAgZWxzaWYoJHBhdGggZXEgJycpIHsKKyAgICAgICAgIyBQYXRoIGlzIGVtcHR5IHN0cmluZy4gUmV0dXJuIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAjIEVtcHR5IHN0cmluZyBwcm9jZXNzZWQgY29ycmVjdGx5IGJ5ICdjeWdwYXRoJy4KKworICAgICAgICBjaG9tcCgkcGF0aCA9IGBwd2QgLUxgKTsKKyAgICAgICAgaWYoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIFVuaXgtc3R5bGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAjIEFkZCBmaW5hbCBzbGFzaCBpZiBub3QgYXQgcm9vdCBkaXIuCisgICAgICAgICRwYXRoIC49ICcvJyBpZiBsZW5ndGgoJHBhdGgpID4gMjsKKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICBlbHNpZihzaG91bGRfdXNlX2N5Z3BhdGgoKSkgeworICAgICAgICAjICdjeWdwYXRoJyBpcyBhdmFsYWJsZSAtIHVzZSBpdC4KKworICAgICAgICBteSAkaGFzX2ZpbmFsX3NsYXNoID0gKCRwYXRoID1+IG17W1xcL10kfSk7CisKKyAgICAgICAgIyBSZXNvbHZlIHJlbGF0aXZlIGRpcmVjdG9yaWVzLCBhcyB0aGV5IG1heSBiZSBub3QgcmVzb2x2ZWQgZm9yIAorICAgICAgICAjIFVuaXgtc3R5bGUgcGF0aHMuCisgICAgICAgICMgUmVtb3ZlIGR1cGxpY2F0ZWQgc2xhc2hlcywgYXMgdGhleSBtYXkgYmUgbm90IHByb2Nlc3NlZC4KKyAgICAgICAgJHBhdGggPSBub3JtYWxpemVfcGF0aCgkcGF0aCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgICAgICAjIFVzZSAnY3lncGF0aCcsICctdScgbWVhbnMgVW5peC1zdGlsZSBwYXRoLAorICAgICAgICAjICctYScgbWVhbnMgYWJzb2x1dGUgcGF0aAorICAgICAgICBjaG9tcCgkcGF0aCA9IGBjeWdwYXRoIC11IC1hICckcGF0aCdgKTsKKyAgICAgICAgaWYoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgcmVzb2x2ZSBwYXRoIGJ5IHVzdW5nIFwiY3lncGF0aFwiLlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorCisgICAgICAgICMgJ2N5Z3BhdGgnIHJlbW92ZXMgbGFzdCBzbGFzaCBpZiBwYXRoIGlzIHJvb3QgZGlyIG9uIFdpbjMyIGRyaXZlLgorICAgICAgICAjIFJlc3RvcmUgaXQuCisgICAgICAgICRwYXRoIC49ICcvJyBpZigkaGFzX2ZpbmFsX3NsYXNoICYmCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoJHBhdGgsIGxlbmd0aCgkcGF0aCkgLSAxLCAxKSBuZSAnLycpOworCisgICAgICAgIHJldHVybiAkcGF0aAorICAgIH0KKyAgICBlbHNpZigkcGF0aCA9fiBte15bYS16QS1aXTpbL1xcXX0pIHsKKyAgICAgICAgIyBQYXRoIGlzIGFscmVhZHkgaW4gV2luMzIgZm9ybS4gKCdDOlxwYXRoJykKKworICAgICAgICAjIFJlc29sdmUgcmVsYXRpdmUgZGlycyBpbiBXaW4zMi1zdHlsZSBwYXRoIG90aGVyd2lzZSBwYXRocworICAgICAgICAjIGxpa2UgJ0Q6Ly4uL2MvJyB3aWxsIGJlIHJlc29sdmVkIGluY29ycmVjdGx5LgorICAgICAgICAjIFJlcGxhY2UgYW55IHBvc3NpYmxlIGJhY2sgc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcywKKyAgICAgICAgIyByZW1vdmUgYW55IGR1cGxpY2F0ZWQgc2xhc2hlcy4KKyAgICAgICAgJHBhdGggPSBub3JtYWxpemVfcGF0aCgkcGF0aCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgICAgICByZXR1cm4gc2ltcGxlX3RyYW5zZm9ybV93aW4zMl90b191bml4KCRwYXRoKTsKKyAgICB9CisgICAgZWxzaWYoc3Vic3RyKCRwYXRoLCAwLCAxKSBlcSAnXFwnKSB7CisgICAgICAgICMgUGF0aCBpcyBkaXJlY3Rvcnkgb3IgZmlsZW5hbWUgb24gV2luMzIgY3VycmVudCBkcml2ZS4gKCdcV2luZG93cycpCisKKyAgICAgICAgbXkgJHczMmRyaXZlID0gZ2V0X3dpbjMyX2N1cnJlbnRfZHJpdmUoKTsKKyAgICAgICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICR3MzJkcml2ZTsKKworICAgICAgICAjIENvbWJpbmUgZHJpdmUgYW5kIHBhdGguCisgICAgICAgICMgUmVzb2x2ZSByZWxhdGl2ZSBkaXJzIGluIFdpbjMyLXN0eWxlIHBhdGggb3IgcGF0aHMgbGlrZSAnRDovLi4vYy8nCisgICAgICAgICMgd2lsbCBiZSByZXNvbHZlZCBpbmNvcnJlY3RseS4KKyAgICAgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID0gbm9ybWFsaXplX3BhdGgoJHczMmRyaXZlIC4gJHBhdGgpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICAgICAgcmV0dXJuIHNpbXBsZV90cmFuc2Zvcm1fd2luMzJfdG9fdW5peCgkcGF0aCk7CisgICAgfQorCisgICAgIyBQYXRoIGlzIG5vdCBpbiBhbnkgV2luMzIgZm9ybS4KKyAgICB1bmxlc3MgKHN1YnN0cigkcGF0aCwgMCwgMSkgZXEgJy8nKSB7CisgICAgICAgICMgUGF0aCBpbiByZWxhdGl2ZSBmb3JtLiBSZXNvbHZlIHJlbGF0aXZlIGRpcmVjdG9yaWVzIGluIFVuaXggZm9ybQorICAgICAgICAjICpCRUZPUkUqIGNvbnZlcnRpbmcgdG8gV2luMzIgZm9ybSBvdGhlcndpc2UgcGF0aHMgbGlrZQorICAgICAgICAjICcuLi8uLi8uLi9jeWdkcml2ZS9jL3dpbmRvd3MnIHdpbGwgbm90IGJlIHJlc29sdmVkLgorICAgICAgICBteSAkY3VyX2RpciA9IGBwd2QgLUxgOworICAgICAgICBpZigkPyAhPSAwKSB7CisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXAoJGN1cl9kaXIpOworCisgICAgICAgICRwYXRoID0gJGN1cl9kaXIgLiAnLycgLiAkcGF0aDsKKyAgICB9CisKKyAgICByZXR1cm4gbm9ybWFsaXplX3BhdGgoJHBhdGgpOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQZXJmb3JtcyBwYXRoICJub3JtYWxpemF0aW9uIjogYWxsIHNsYXNoZXMgY29udmVydGVkIHRvIGZvcndhcmQKKyMgc2xhc2hlcyAoZXhjZXB0IGxlYWRpbmcgc2xhc2gpLCBhbGwgZHVwbGljYXRlZCBzbGFzaGVzIGFyZSByZXBsYWNlZAorIyB3aXRoIHNpbmdsZSBzbGFzaGVzLCBhbGwgcmVsYXRpdmUgZGlyZWN0b3JpZXMgKCcuLycgYW5kICcuLi8nKSBhcmUKKyMgcmVzb2x2ZWQgaWYgcG9zc2libGUuCisjIFBhdGggcHJvY2Vzc2VkIGFzIHN0cmluZywgZGlyZWN0b3JpZXMgYXJlIG5vdCBjaGVja2VkIGZvciBwcmVzZW5jZSBzbworIyBwYXRoIGZvciBub3QgeWV0IGV4aXN0aW5nIGRpcmVjdG9yeSBjYW4gYmUgIm5vcm1hbGl6ZWQiLgorIworc3ViIG5vcm1hbGl6ZV9wYXRoIHsKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICAjIERvbid0IHByb2Nlc3MgZW1wdHkgcGF0aHMuCisgICAgcmV0dXJuICRwYXRoIGlmICRwYXRoIGVxICcnOworCisgICAgdW5sZXNzKCRwYXRoID1+IG17KD86XnxcXHwvKVwuezEsMn0oPzpcXHwvfCQpfSkgeworICAgICAgICAjIFNwZWVkIHVwIHByb2Nlc3Npbmcgb2Ygc2ltcGxlIHBhdGhzLgorICAgICAgICBteSAkZmlyc3RfY2hhciA9IHN1YnN0cigkcGF0aCwgMCwgMSk7CisgICAgICAgICRwYXRoID1+IHN7W1xcL10rfXsvfWc7CisgICAgICAgICMgUmVzdG9yZSBzdGFydGluZyBiYWNrc2xhc2ggaWYgYW55LgorICAgICAgICBzdWJzdHIoJHBhdGgsIDAsIDEpID0gJGZpcnN0X2NoYXI7CisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisKKyAgICBteSBAYXJyOworICAgIG15ICRwcmVmaXg7CisgICAgbXkgJGhhdmVfcm9vdCA9IDA7CisKKyAgICAjIENoZWNrIHdoZXRoZXIgcGF0aCBzdGFydHMgZnJvbSBXaW4zMiBkcml2ZS4gKCdDOnBhdGgnIG9yICdDOlxwYXRoJykKKyAgICBpZigkcGF0aCA9fiBte14oW2EtekEtWl06KC98XFwpPykoLiokKX0pIHsKKyAgICAgICAgJHByZWZpeCA9ICQxOworICAgICAgICAkaGF2ZV9yb290ID0gMSBpZiBkZWZpbmVkICQyOworICAgICAgICAjIFByb2Nlc3MgcGF0aCBzZXBhcmF0ZWx5IGZyb20gZHJpdmUgbGV0dGVyLgorICAgICAgICBAYXJyID0gc3BsaXQobXtcL3xcXH0sICQzKTsKKyAgICAgICAgIyBSZXBsYWNlIGJhY2tzbGFzaCB3aXRoIGZvcndhcmQgc2xhc2ggaWYgcmVxdWlyZWQuCisgICAgICAgIHN1YnN0cigkcHJlZml4LCAyLCAxKSA9ICcvJyBpZiAkaGF2ZV9yb290OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYoJHBhdGggPX4gbXteKFwvfFxcKX0pIHsKKyAgICAgICAgICAgICRoYXZlX3Jvb3QgPSAxOworICAgICAgICAgICAgJHByZWZpeCA9ICQxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJHByZWZpeCA9ICcnOworICAgICAgICB9CisgICAgICAgIEBhcnIgPSBzcGxpdChte1wvfFxcfSwgJHBhdGgpOworICAgIH0KKworICAgIG15ICRwID0gMDsKKyAgICBteSBAcmVzOworCisgICAgZm9yIG15ICRlbCAoQGFycikgeworICAgICAgICBpZihsZW5ndGgoJGVsKSA9PSAwIHx8ICRlbCBlcSAnLicpIHsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoJGVsIGVxICcuLicgJiYgQHJlcyA+IDAgJiYgJHJlc1skI3Jlc10gbmUgJy4uJykgeworICAgICAgICAgICAgcG9wIEByZXM7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgIHB1c2ggQHJlcywgJGVsOworICAgIH0KKyAgICBpZigkaGF2ZV9yb290ICYmIEByZXMgPiAwICYmICRyZXNbMF0gZXEgJy4uJykgeworICAgICAgICB3YXJuICJFcnJvciBwcm9jZXNzaW5nIHBhdGggXCIkcGF0aFwiOiAiIC4KKyAgICAgICAgICAgICAiUGFyZW50IGRpcmVjdG9yeSBvZiByb290IGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCFcbiI7CisgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICB9CisKKyAgICBteSAkcmV0ID0gJHByZWZpeCAuIGpvaW4oJy8nLCBAcmVzKTsKKyAgICAkcmV0IC49ICcvJyBpZigkcGF0aCA9fiBte1xcJHwvJH0gJiYgc2NhbGFyIEByZXMgPiAwKTsKKworICAgIHJldHVybiAkcmV0OworfQorCisjIEludGVybmFsIGZ1bmN0aW9uLiBDb252ZXJ0cyBwYXRoIGJ5IHVzaW5nIE1zeXMncyBidWlsdC1pbgorIyB0cmFuc2Zvcm1hdGlvbi4KK3N1YiBkb19tc3lzX3RyYW5zZm9ybSB7CisgICAgbXkgKCRwYXRoKSA9IEBfOworICAgIHJldHVybiB1bmRlZiBpZiAkXk8gbmUgJ21zeXMnOworICAgIHJldHVybiAkcGF0aCBpZiAkcGF0aCBlcSAnJzsKKworICAgICMgUmVtb3ZlIGxlYWRpbmcgZG91YmxlIGZvcndhcmQgc2xhc2hlcywgYXMgdGhleSB0dXJuIG9mZiBNc3lzCisgICAgIyB0cmFuc2Zvcm1pbmcuCisgICAgJHBhdGggPX4gc3teL1svXFxdK317L307CisKKyAgICAjIE1zeXMgdHJhbnNmb3JtcyBhdXRvbWF0aWNhbGx5IHBhdGggdG8gV2luZG93cyBuYXRpdmUgZm9ybSBpbiBzdGFyaW5nCisgICAgIyBwcm9ncmFtIHBhcmFtZXRlcnMgaWYgcHJvZ3JhbSBpcyBub3QgTXN5cy1iYXNlZC4KKyAgICAjIE5vdGU6IGFscmVhZHkgY2hlY2tlZCB0aGF0ICRwYXRoIGlzIG5vbi1lbXB0eS4KKyAgICAkcGF0aCA9IGBjbWQgLy9jIGVjaG8gJyRwYXRoJ2A7CisgICAgaWYoJD8gIT0gMCkgeworICAgICAgICB3YXJuICJDYW4ndCB0cmFuc2Zvcm0gcGF0aCBpbnRvIFdpbjMyIGZvcm0gYnkgdXNpbmcgTXN5cyIgLgorICAgICAgICAgICAgICJpbnRlcm5hbCB0cmFuc2Zvcm1hdGlvbi5cbiI7CisgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICB9CisKKyAgICAjIFJlbW92ZSBkb3VibGUgcXVvdGVzLCB0aGV5IGFyZSBhZGRlZCBmb3IgcGF0aHMgd2l0aCBzcGFjZXMsCisgICAgIyByZW1vdmUgYm90aCAnXHInIGFuZCAnXG4nLgorICAgICRwYXRoID1+IHN7XlwifFwiJHxcIlxyfFxufFxyfXt9ZzsKKworICAgIHJldHVybiAkcGF0aDsKK30KKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gR2V0cyB0d28gcGFyYW1ldGVyczogZmlyc3QgcGFyYW1ldGVyIG11c3QgYmUgc2luZ2xlCisjIGRyaXZlIGxldHRlciAoJ2MnKSwgc2Vjb25kIG9wdGlvbmFsIHBhcmFtZXRlciBpcyBwYXRoIHJlbGF0aXZlIHRvIGRyaXZlJ3MgCisjIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIFJldHVybnMgV2luMzIgYWJzb2x1dGUgbm9ybWFsaXplZCBwYXRoLgorc3ViIGdldF9hYnNfcGF0aF9vbl93aW4zMl9kcml2ZSB7CisgICAgbXkgKCRkcnYsICRyZWxfcGF0aCkgPSBAXzsKKyAgICBteSAkcmVzOworCisgICAgIyBHZXQgY3VycmVudCBkaXJlY3Rvcnkgb24gc3BlY2lmaWVkIGRyaXZlLgorICAgICMgIi9jOyIgaXMgY29tcGF0aWJsZSB3aXRoIGJvdGggTXN5cyBhbmQgQ3lnd2luLgorICAgIG15ICRjdXJfZGlyX29uX2RydiA9IGBjbWQgIi9jOyIgZWNobyAlPSRkcnY6JWA7CisgICAgaWYoJD8gIT0gMCkgeworICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgV2luMzIgY3VycmVudCBkaXJlY3Rvcnkgb24gZHJpdmUgJGRydjouXG4iOworICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgfQorCisgICAgaWYoJGN1cl9kaXJfb25fZHJ2ID1+IG17XlslXX0pIHsKKyAgICAgICAgIyBDdXJyZW50IGRpcmVjdG9yeSBvbiBkcml2ZSBpcyBub3Qgc2V0LCBkZWZhdWx0IGlzCisgICAgICAgICMgcm9vdCBkaXJlY3RvcnkuCisKKyAgICAgICAgJHJlcyA9IHVjZmlyc3QoJGRydikgLiAnOi8nOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgIyBDdXJyZW50IGRpcmVjdG9yeSBvbiBkcml2ZSB3YXMgc2V0LgorICAgICAgICAjIFJlbW92ZSBib3RoICdccicgYW5kICdcbicuCisgICAgICAgICRjdXJfZGlyX29uX2RydiA9fiBze1xufFxyfXt9ZzsKKworICAgICAgICAjIEFwcGVuZCByZWxhdGl2ZSBwYXRoIHBhcnQuCisgICAgICAgICRyZXMgPSAkY3VyX2Rpcl9vbl9kcnYgLiAnLyc7CisgICAgfQorICAgICRyZXMgLj0gJHJlbF9wYXRoIGlmIGRlZmluZWQgJHJlbF9wYXRoOworCisgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgIyByZW1vdmUgYW55IGR1cGxpY2F0ZWQgc2xhc2hlcywgcmVzb2x2ZSByZWxhdGl2ZSBkaXJzLgorICAgIHJldHVybiBub3JtYWxpemVfcGF0aCgkcmVzKTsKK30KKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gVHJpZXMgdG8gZmluZCBvciBndWVzcyBXaW4zMiB2ZXJzaW9uIG9mIGdpdmVuCisjIGFic29sdXRlIFVuaXgtc3R5bGUgcGF0aC4gT3RoZXIgdHlwZXMgb2YgcGF0aHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisjIFJldHVybmVkIHBhdGhzIGNvbnRhaW4gb25seSBzaW5nbGUgZm9yd2FyZCBzbGFzaGVzIChubyBiYWNrIGFuZAorIyBkdXBsaWNhdGVkIHNsYXNoZXMpLgorIyBMYXN0IHJlc29ydC4gVXNlZCBvbmx5IHdoZW4gb3RoZXIgdHJhbnNmb3JtYXRpb25zIGFyZSBub3QgYXZhaWxhYmxlLgorc3ViIGRvX2R1bWJfZ3Vlc3NlZF90cmFuc2Zvcm0geworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgICMgUmVwbGFjZSBhbnkgcG9zc2libGUgYmFjayBzbGFzaGVzIGFuZCBkdXBsaWNhdGVkIGZvcndhcmQgc2xhc2hlcworICAgICMgd2l0aCBzaW5nbGUgZm9yd2FyZCBzbGFzaGVzLgorICAgICRwYXRoID1+IHN7Wy9cXF0rfXsvfWc7CisKKyAgICAjIEVtcHR5IHBhdGggaXMgbm90IHZhbGlkLgorICAgIHJldHVybiB1bmRlZiBpZiAobGVuZ3RoKCRwYXRoKSA9PSAwKTsKKworICAgICMgUkUgdG8gZmluZCBXaW4zMiBkcml2ZSBsZXR0ZXIKKyAgICBteSAkZHJ2X2x0cl9yZSA9IGRyaXZlc19tb3VudGVkX29uX2N5Z2RyaXZlKCkgPworICAgICAgICAgICAgICAgICAgICAgICAgcXJ7Xi9jeWdkcml2ZS8oW2EtekEtWl0pKCR8Ly4qJCl9IDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHFye14vKFthLXpBLVpdKSgkfC8uKiQpfTsKKworICAgICMgQ2hlY2sgcGF0aCB3aGV0aGVyIHBhdGggaXMgV2luMzIgZGlyZWN0bHkgbWFwcGVkIGRyaXZlIGFuZCB0cnkgdG8KKyAgICAjIHRyYW5zZm9ybSBpdCBhc3N1bWluZyB0aGF0IGRyaXZlIGxldHRlciBpcyBtYXRjaGVkIHRvIFdpbjMyIGRyaXZlIGxldHRlci4KKyAgICBpZigkcGF0aCA9fiBteyRkcnZfbHRyX3JlfSkgeworICAgICAgICByZXR1cm4gdWNmaXJzdCgkMSkgLiAnOi8nIGlmKGxlbmd0aCgkMikgPT0gMCk7CisgICAgICAgIHJldHVybiB1Y2ZpcnN0KCQxKSAuICc6JyAuICQyOworICAgIH0KKworICAgICMgVGhpcyBtYXkgYmUgc29tZSBjdXN0b20gbWFwcGVkIHBhdGguICgnL215bW91bnQvcGF0aCcpCisKKyAgICAjIE11c3QgY2hlY2sgbG9uZ2VzdCBwb3NzaWJsZSBwYXRoIGNvbXBvbmVudCBhcyBzdWJkaXIgY2FuIGJlIG1hcHBlZCB0bworICAgICMgZGlmZmVyZW50IGRpcmVjdG9yeS4gRm9yIGV4YW1wbGUgJy91c3IvYmluLycgY2FuIGJlIG1hcHBlZCB0byAnL2Jpbi8nIG9yCisgICAgIyAnL2Jpbi8nIGNhbiBiZSBtYXBwZWQgdG8gJy91c3IvYmluLycuCisgICAgbXkgJGNoZWNrX3BhdGggPSAkcGF0aDsKKyAgICBteSAkcGF0aF90YWlsID0gJyc7CisgICAgZG8geworICAgICAgICBpZigtZCAkY2hlY2tfcGF0aCkgeworICAgICAgICAgICAgbXkgJHJlcyA9CisgICAgICAgICAgICAgICAgYChjZCAiJGNoZWNrX3BhdGgiICYmIGNtZCAvYyAiZWNobyAlX19DRF9fJSIpIDI+L2Rldi9udWxsYDsKKyAgICAgICAgICAgIGlmKCQ/ID09IDAgJiYgc3Vic3RyKCRwYXRoLCAwLCAxKSBuZSAnJScpIHsKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSBib3RoICdccicgYW5kICdcbicuCisgICAgICAgICAgICAgICAgJHJlcyA9fiBze1xufFxyfXt9ZzsKKworICAgICAgICAgICAgICAgICMgUmVwbGFjZSBhbGwgYmFjayBzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLgorICAgICAgICAgICAgICAgICRyZXMgPX4gc3tcXH17L31nOworCisgICAgICAgICAgICAgICAgaWYobGVuZ3RoKCRwYXRoX3RhaWwpID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlcyAuICRwYXRoX3RhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkcmVzID1+IHN7LyR9e30gdW5sZXNzICRjaGVja19wYXRoID1+IG17LyR9OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoJGNoZWNrX3BhdGggPX4gbXsoXi4qLykoW14vXSsvKil9KSB7CisgICAgICAgICAgICAkY2hlY2tfcGF0aCA9ICQxOworICAgICAgICAgICAgJHBhdGhfdGFpbCA9ICQyIC4gJHBhdGhfdGFpbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICMgU2hvdWxkbid0IGhhcHBlbnMgYXMgcm9vdCAnLycgZGlyZWN0b3J5IHNob3VsZCBhbHdheXMKKyAgICAgICAgICAgICMgYmUgcmVzb2x2YWJsZS4KKyAgICAgICAgICAgIHdhcm4gIkNhbid0IGRldGVybWluZSBXaW4zMiBkaXJlY3RvcnkgZm9yIHBhdGggXCIkcGF0aFwiLlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorICAgIH0gd2hpbGUoMSk7Cit9CisKKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gQ29udmVydHMgZ2l2ZW4gVW5peC1zdHlsZSBhYnNvbHV0ZSBwYXRoIHRvIFdpbjMyIGZvcm1hdC4KK3N1YiBzaW1wbGVfdHJhbnNmb3JtX3dpbjMyX3RvX3VuaXggeworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgIGlmKHNob3VsZF91c2VfY3lncGF0aCgpKSB7CisgICAgICAgICMgJ2N5Z3BhdGgnIGdpdmVzIHByZWNpc2UgcmVzdWx0LgorICAgICAgICBteSAkcmVzOworICAgICAgICBjaG9tcCgkcmVzID0gYGN5Z3BhdGggLWEgLXUgJyRwYXRoJ2ApOworICAgICAgICBpZigkPyAhPSAwKSB7CisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgVW5peC1zdHlsZSBkaXJlY3RvcnkgZm9yIFdpbjMyICIgLgorICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IFwiJHBhdGhcIi5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAjICdjeWdwYXRoJyByZW1vdmVzIGxhc3Qgc2xhc2ggaWYgcGF0aCBpcyByb290IGRpciBvbiBXaW4zMiBkcml2ZS4KKyAgICAgICAgJHJlcyAuPSAnLycgaWYoc3Vic3RyKCRyZXMsIGxlbmd0aCgkcmVzKSAtIDEsIDEpIG5lICcvJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9fiBte1svXFxdJH0pOworICAgICAgICByZXR1cm4gJHJlczsKKyAgICB9CisKKyAgICAjICdjeWdwYXRoJyBpcyBub3QgYXZhaWxhYmxlLCB1c2UgZ3Vlc3NlZCB0cmFuc2Zvcm1hdGlvbi4KKyAgICB1bmxlc3MoJHBhdGggPX4gc3teKFthLXpBLVpdKTooPzovfFxcKX17L1xsJDEvfSkgeworICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgVW5peC1zdHlsZSBkaXJlY3RvcnkgZm9yIFdpbjMyICIgLgorICAgICAgICAgICAgICJkaXJlY3RvcnkgXCIkcGF0aFwiLlxuIjsKKyAgICAgICAgcmV0dXJuIHVuZGVmOworICAgIH0KKworICAgICRwYXRoID0gJy9jeWdkcml2ZScgLiAkcGF0aCBpZihkcml2ZXNfbW91bnRlZF9vbl9jeWdkcml2ZSgpKTsKKyAgICByZXR1cm4gJHBhdGg7Cit9CisKKzE7ICAgICMgRW5kIG9mIG1vZHVsZQpkaWZmIC0tZ2l0IGEvdGVzdHMvcnRzcHNlcnZlci5wbCBiL3Rlc3RzL3J0c3BzZXJ2ZXIucGwKaW5kZXggMDdhNTg4ZS4uYmRkY2NiOSAxMDA3NTUKLS0tIGEvdGVzdHMvcnRzcHNlcnZlci5wbAorKysgYi90ZXN0cy9ydHNwc2VydmVyLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bnRlc3RzLjEgYi90ZXN0cy9ydW50ZXN0cy4xCmluZGV4IGNiNzY1YTYuLjU1NzZiMmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3J1bnRlc3RzLjEKKysrIGIvdGVzdHMvcnVudGVzdHMuMQpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9ydW50ZXN0cy5wbCBiL3Rlc3RzL3J1bnRlc3RzLnBsCmluZGV4IDAxMDEwOTEuLjVkMTNmYzggMTAwNzU1Ci0tLSBhL3Rlc3RzL3J1bnRlc3RzLnBsCisrKyBiL3Rlc3RzL3J1bnRlc3RzLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgIHNzaHZlcnNpb25pbmZvCiAgICAgKTsKIAordXNlIHBhdGhoZWxwOworCiByZXF1aXJlICJnZXRwYXJ0LnBtIjsgIyBhcnJheSBmdW5jdGlvbnMKIHJlcXVpcmUgInZhbGdyaW5kLnBtIjsgIyB2YWxncmluZCByZXBvcnQgcGFyc2VyCiByZXF1aXJlICJmdHAucG0iOwpAQCAtMTk5LDggKzIwMSw4IEBACiBteSAkZ2RiID0gY2hlY2t0ZXN0Y21kKCJnZGIiKTsKIG15ICRodHRwdGxzc3J2ID0gZmluZF9odHRwdGxzc3J2KCk7CiAKLW15ICRzc2xfdmVyc2lvbjsgICAgIyBzZXQgaWYgbGliY3VybCBpcyBidWlsdCB3aXRoIFNTTCBzdXBwb3J0Ci1teSAkbGFyZ2VfZmlsZTsgICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBsYXJnZSBmaWxlIHN1cHBvcnQKK215ICRoYXNfc3NsOyAgICAgICAgIyBzZXQgaWYgbGliY3VybCBpcyBidWlsdCB3aXRoIFNTTCBzdXBwb3J0CitteSAkaGFzX2xhcmdlZmlsZTsgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBsYXJnZSBmaWxlIHN1cHBvcnQKIG15ICRoYXNfaWRuOyAgICAgICAgIyBzZXQgaWYgbGliY3VybCBpcyBidWlsdCB3aXRoIElETiBzdXBwb3J0CiBteSAkaHR0cF9pcHY2OyAgICAgICMgc2V0IGlmIEhUVFAgc2VydmVyIGhhcyBJUHY2IHN1cHBvcnQKIG15ICRodHRwX3VuaXg7ICAgICAgIyBzZXQgaWYgSFRUUCBzZXJ2ZXIgaGFzIFVuaXggc29ja2V0cyBzdXBwb3J0CkBAIC0yMjQsNiArMjI2LDcgQEAKIG15ICRoYXNfY3J5cHRvOyAgICAgIyBzZXQgaWYgbGliY3VybCBpcyBidWlsdCB3aXRoIGNyeXB0b2dyYXBoaWMgc3VwcG9ydAogbXkgJGhhc19jYXJlczsgICAgICAjIHNldCBpZiBidWlsdCB3aXRoIGMtYXJlcwogbXkgJGhhc190aHJlYWRlZHJlczsjIHNldCBpZiBidWlsdCB3aXRoIHRocmVhZGVkIHJlc29sdmVyCitteSAkaGFzX3BzbDsgICAgICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBQU0wgc3VwcG9ydAogCiAjIHRoaXMgdmVyc2lvbiBpcyBkZWNpZGVkIGJ5IHRoZSBwYXJ0aWN1bGFyIG5naHR0cDIgbGlicmFyeSB0aGF0IGlzIGJlaW5nIHVzZWQKIG15ICRoMmN2ZXIgPSAiaDJjIjsKQEAgLTIzNyw3ICsyNDAsOCBAQAogbXkgJGhhc193aW5zc2w7ICAgICAjIGJ1aWx0IHdpdGggV2luU1NMICAgIChTZWN1cmUgQ2hhbm5lbCBha2EgU2NoYW5uZWwpCiBteSAkaGFzX2RhcndpbnNzbDsgICMgYnVpbHQgd2l0aCBEYXJ3aW5TU0wgKFNlY3VyZSBUcmFuc3BvcnQpCiBteSAkaGFzX2JvcmluZ3NzbDsgICMgYnVpbHQgd2l0aCBCb3JpbmdTU0wKLW15ICRoYXNfbGlicmVzc2w7ICAgIyBidWlsdCB3aXRoIGxpYnJlc3NsIAorbXkgJGhhc19saWJyZXNzbDsgICAjIGJ1aWx0IHdpdGggbGlicmVzc2wKK215ICRoYXNfbWJlZHRsczsgICAgIyBidWlsdCB3aXRoIG1iZWRUTFMKIAogbXkgJGhhc19zc2xwaW5uaW5nOyAjIGJ1aWx0IHdpdGggYSBUTFMgYmFja2VuZCB0aGF0IHN1cHBvcnRzIHBpbm5pbmcKIApAQCAtMzk3LDcgKzQwMSw3IEBACiBzdWIgY2hlY2tkaWVkIHsKICAgICB1c2UgUE9TSVggIjpzeXNfd2FpdF9oIjsKICAgICBteSAkcGlkID0gJF9bMF07Ci0gICAgaWYobm90IGRlZmluZWQgJHBpZCB8fCAkcGlkIDw9IDApIHsKKyAgICBpZigobm90IGRlZmluZWQgJHBpZCkgfHwgJHBpZCA8PSAwKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBteSAkcmMgPSB3YWl0cGlkKCRwaWQsICZXTk9IQU5HKTsKQEAgLTIzMDksMjcgKzIzMTMsMTEgQEAKICAgICAgICAgICAgICRjdXJsID1+IHMvXiguKikobGliY3VybC4qKS8kMS9nOwogCiAgICAgICAgICAgICAkbGliY3VybCA9ICQyOwotICAgICAgICAgICAgaWYoJGN1cmwgPX4gL21pbmd3MzIvKSB7Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgd2luZG93cyBtaW53MzIgYnVpbGQsIHdlIG5lZWQgdG8gdHJhbnNsYXRlIHRoZQotICAgICAgICAgICAgICAgICMgZ2l2ZW4gcGF0aCB0byB0aGUgImFjdHVhbCIgd2luZG93cyBwYXRoLiBUaGUgTVNZUyBzaGVsbAotICAgICAgICAgICAgICAgICMgaGFzIGEgYnVpbHRpbiAncHdkIC1XJyBjb21tYW5kIHdoaWNoIGNvbnZlcnRzIHRoZSBwYXRoLgotICAgICAgICAgICAgICAgICRwd2QgPSBgc2ggLWMgImVjaG8gXCQocHdkIC1XKSJgOwotICAgICAgICAgICAgICAgIGNob21wKCRwd2QpOworICAgICAgICAgICAgaWYoJGN1cmwgPX4gL3dpbjMyfG1pbmd3KDMyfDY0KS8pIHsKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBXaW5kb3dzIE1pbkdXIGJ1aWxkIG9yIG5hdGl2ZSBidWlsZCwgd2UgbmVlZCB0byB1c2UKKyAgICAgICAgICAgICAgICAjIFdpbjMyLXN0eWxlIHBhdGguCisgICAgICAgICAgICAgICAgJHB3ZCA9IHBhdGhoZWxwOjpzeXNfbmF0aXZlX2N1cnJlbnRfcGF0aCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzaWYgKCRjdXJsID1+IC93aW4zMi8pIHsKLSAgICAgICAgICAgICAgICMgTmF0aXZlIFdpbmRvd3MgYnVpbGRzIGRvbid0IHVuZGVyc3RhbmQgdGhlCi0gICAgICAgICAgICAgICAjIG91dHB1dCBvZiBjeWd3aW4ncyBwd2QuICBJdCB3aWxsIGJlCi0gICAgICAgICAgICAgICAjIHNvbWV0aGluZyBsaWtlIC9jeWdkcml2ZS9jLzxzb21lIHBhdGg+LgotICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIyBVc2UgdGhlIGN5Z3BhdGggdXRpbGl0eSB0byBjb252ZXJ0IHRoZQotICAgICAgICAgICAgICAgIyB3b3JraW5nIGRpcmVjdG9yeSB0byBhIFdpbmRvd3MgZnJpZW5kbHkKLSAgICAgICAgICAgICAgICMgcGF0aC4gIFRoZSAtbSBvcHRpb24gY29udmVydHMgdG8gdXNlIGRyaXZlCi0gICAgICAgICAgICAgICAjIGxldHRlcjosIGJ1dCBpdCB1c2VzIC8gaW5zdGVhZCBcLiAgRm9yd2FyZAotICAgICAgICAgICAgICAgIyBzbGFzaGVzICgvKSBhcmUgZWFzaWVyIGZvciB1cy4gIFdlIGRvbid0Ci0gICAgICAgICAgICAgICAjIGhhdmUgdG8gZXNjYXBlIHRoZW0gdG8gZ2V0IHRoZW0gdG8gY3VybAotICAgICAgICAgICAgICAgIyB0aHJvdWdoIGEgc2hlbGwuCi0gICAgICAgICAgICAgICBjaG9tcCgkcHdkID0gYGN5Z3BhdGggLW0gJHB3ZGApOwotICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkbGliY3VybCA9fiAvd2luc3NsL2kpIHsKICAgICAgICAgICAgICAgICRoYXNfd2luc3NsPTE7CiAgICAgICAgICAgICAgICAkc3NsbGliPSJXaW5TU0wiOwpAQCAtMjM1Niw2ICsyMzQ0LDcgQEAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJGxpYmN1cmwgPX4gL3BvbGFyc3NsL2kpIHsKICAgICAgICAgICAgICAgICRoYXNfcG9sYXJzc2w9MTsKKyAgICAgICAgICAgICAgICRoYXNfc3NscGlubmluZz0xOwogICAgICAgICAgICAgICAgJHNzbGxpYj0icG9sYXJzc2wiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbGliY3VybCA9fiAvYXh0bHMvaSkgewpAQCAtMjM2OCwxMiArMjM1NywxOSBAQAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbGliY3VybCA9fiAvQm9yaW5nU1NML2kpIHsKICAgICAgICAgICAgICAgICRoYXNfYm9yaW5nc3NsPTE7CisgICAgICAgICAgICAgICAkaGFzX3NzbHBpbm5pbmc9MTsKICAgICAgICAgICAgICAgICRzc2xsaWI9IkJvcmluZ1NTTCI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRsaWJjdXJsID1+IC9saWJyZXNzbC9pKSB7CiAgICAgICAgICAgICAgICAkaGFzX2xpYnJlc3NsPTE7CisgICAgICAgICAgICAgICAkaGFzX3NzbHBpbm5pbmc9MTsKICAgICAgICAgICAgICAgICRzc2xsaWI9ImxpYnJlc3NsIjsKICAgICAgICAgICAgfQorICAgICAgICAgICBlbHNpZiAoJGxpYmN1cmwgPX4gL21iZWRUTFMvaSkgeworICAgICAgICAgICAgICAgJGhhc19tYmVkdGxzPTE7CisgICAgICAgICAgICAgICAkaGFzX3NzbHBpbm5pbmc9MTsKKyAgICAgICAgICAgICAgICRzc2xsaWI9Im1iZWRUTFMiOworICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkbGliY3VybCA9fiAvYXJlcy9pKSB7CiAgICAgICAgICAgICAgICAkaGFzX2NhcmVzPTE7CiAgICAgICAgICAgICAgICAkcmVzb2x2ZXI9ImMtYXJlcyI7CkBAIC0yNDEwLDExICsyNDA2LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZigkZmVhdCA9fiAvU1NML2kpIHsKICAgICAgICAgICAgICAgICAjIHNzbCBlbmFibGVkCi0gICAgICAgICAgICAgICAgJHNzbF92ZXJzaW9uPTE7CisgICAgICAgICAgICAgICAgJGhhc19zc2w9MTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmKCRmZWF0ID1+IC9MYXJnZWZpbGUvaSkgewogICAgICAgICAgICAgICAgICMgbGFyZ2UgZmlsZSBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgJGxhcmdlX2ZpbGU9MTsKKyAgICAgICAgICAgICAgICAkaGFzX2xhcmdlZmlsZT0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYoJGZlYXQgPX4gL0lETi9pKSB7CiAgICAgICAgICAgICAgICAgIyBJRE4gc3VwcG9ydApAQCAtMjQ3NCw2ICsyNDcwLDEwIEBACiAgICAgICAgICAgICAgICAgIyBNZXRhbGluayBlbmFibGVkCiAgICAgICAgICAgICAgICAgJGhhc19tZXRhbGluaz0xOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoJGZlYXQgPX4gL1BTTC9pKSB7CisgICAgICAgICAgICAgICAgIyBQU0wgZW5hYmxlZAorICAgICAgICAgICAgICAgICRoYXNfcHNsPTE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZigkZmVhdCA9fiAvQXN5bmNoRE5TL2kpIHsKICAgICAgICAgICAgICAgICBpZighJGhhc19jYXJlcykgewogICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbWVhbnMgdGhyZWFkZWQgcmVzb2x2ZXIKQEAgLTI1OTAsNzIgKzI1OTAsNjcgQEAKICAgICAgICAgICAgICAgICIqXG4iKTsKICAgICB9CiAKLSAgICBsb2dtc2cgc3ByaW50ZigiKiBTZXJ2ZXIgU1NMOiAgICU4cyIsICRzdHVubmVsPyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiICBsaWJjdXJsIFNTTDogICVzXG4iLCAkc3NsX3ZlcnNpb24/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIqIGRlYnVnIGJ1aWxkOiAgJThzIiwgJGRlYnVnX2J1aWxkPyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiICB0cmFjayBtZW1vcnk6ICVzXG4iLCAkaGFzX21lbW9yeV90cmFja2luZz8iT04gIjoiT0ZGIik7Ci0gICAgbG9nbXNnIHNwcmludGYoIiogdmFsZ3JpbmQ6ICAgICAlOHMiLCAkdmFsZ3JpbmQ/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIgIEhUVFAgSVB2NiAgICAgJXNcbiIsICRodHRwX2lwdjY/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIqIEhUVFAgVW5peCAgICAgJXNcbiIsICRodHRwX3VuaXg/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIqIEZUUCBJUHY2ICAgICAgJThzIiwgJGZ0cF9pcHY2PyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiICBMaWJ0b29sIGxpYjogICVzXG4iLCAkbGlidG9vbD8iT04gIjoiT0ZGIik7Ci0gICAgbG9nbXNnIHNwcmludGYoIiogU2hhcmVkIGJ1aWxkOiAgICAgICUtM3MiLCAkaGFzX3NoYXJlZCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIiAgUmVzb2x2ZXI6ICAgICAlc1xuIiwgJHJlc29sdmVyKTsKLSAgICBpZigkc3NsX3ZlcnNpb24pIHsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIiogU1NMIGxpYnJhcnk6ICUxM3NcbiIsICRzc2xsaWIpOwotICAgIH0KKyAgICBsb2dtc2cgc3ByaW50ZigiKiBTZXJ2ZXJzOiAlcyIsICRzdHVubmVsPyJTU0wgIjoiIik7CisgICAgbG9nbXNnIHNwcmludGYoIiVzIiwgJGh0dHBfaXB2Nj8iSFRUUC1JUHY2ICI6IiIpOworICAgIGxvZ21zZyBzcHJpbnRmKCIlcyIsICRodHRwX3VuaXg/IkhUVFAtdW5peCAiOiIiKTsKKyAgICBsb2dtc2cgc3ByaW50ZigiJXNcbiIsICRmdHBfaXB2Nj8iRlRQLUlQdjYgIjoiT0ZGIik7CiAKLSAgICBsb2dtc2cgIiogUG9ydHM6XG4iOworICAgIGxvZ21zZyBzcHJpbnRmKCIqIEVudjogJXMlcyIsICR2YWxncmluZD8iVmFsZ3JpbmQgIjoiIiwKKyAgICAgICAgICAgICAgICAgICAkcnVuX2V2ZW50X2Jhc2VkPyJldmVudC1iYXNlZCAiOiIiKTsKKyAgICBsb2dtc2cgc3ByaW50ZigiJXNcbiIsICRsaWJ0b29sPyJMaWJ0b29sICI6IiIpOwogCi0gICAgbG9nbXNnIHNwcmludGYoIiogICBIVFRQLyVkICIsICRIVFRQUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIkZUUC8lZCAiLCAkRlRQUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIkZUUDIvJWQgIiwgJEZUUDJQT1JUKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiUlRTUC8lZCAiLCAkUlRTUFBPUlQpOwotICAgIGlmKCRzdHVubmVsKSB7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJGVFBTLyVkICIsICRGVFBTUE9SVCk7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJIVFRQUy8lZCAiLCAkSFRUUFNQT1JUKTsKLSAgICB9Ci0gICAgbG9nbXNnIHNwcmludGYoIlxuKiAgIFRGVFAvJWQgIiwgJFRGVFBQT1JUKTsKLSAgICBpZigkaHR0cF9pcHY2KSB7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJIVFRQLUlQdjYvJWQgIiwgJEhUVFA2UE9SVCk7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJSVFNQLUlQdjYvJWQgIiwgJFJUU1A2UE9SVCk7Ci0gICAgfQotICAgIGlmKCRmdHBfaXB2NikgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiRlRQLUlQdjYvJWQgIiwgJEZUUDZQT1JUKTsKLSAgICB9Ci0gICAgaWYoJHRmdHBfaXB2NikgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiVEZUUC1JUHY2LyVkICIsICRURlRQNlBPUlQpOwotICAgIH0KLSAgICBsb2dtc2cgc3ByaW50ZigiXG4qICAgR09QSEVSLyVkICIsICRHT1BIRVJQT1JUKTsKLSAgICBpZigkZ29waGVyX2lwdjYpIHsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIkdPUEhFUi1JUHY2LyVkIiwgJEdPUEhFUlBPUlQpOwotICAgIH0KLSAgICBsb2dtc2cgc3ByaW50ZigiXG4qICAgU1NILyVkICIsICRTU0hQT1JUKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiU09DS1MvJWQgIiwgJFNPQ0tTUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIlBPUDMvJWQgIiwgJFBPUDNQT1JUKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiSU1BUC8lZCAiLCAkSU1BUFBPUlQpOwotICAgIGxvZ21zZyBzcHJpbnRmKCJTTVRQLyVkXG4iLCAkU01UUFBPUlQpOwotICAgIGlmKCRmdHBfaXB2NikgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIFBPUDMtSVB2Ni8lZCAiLCAkUE9QMzZQT1JUKTsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIklNQVAtSVB2Ni8lZCAiLCAkSU1BUDZQT1JUKTsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIlNNVFAtSVB2Ni8lZFxuIiwgJFNNVFA2UE9SVCk7Ci0gICAgfQotICAgIGlmKCRodHRwdGxzc3J2KSB7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCIqICAgSFRUUFRMUy8lZCAiLCAkSFRUUFRMU1BPUlQpOwotICAgICAgICBpZigkaGFzX2lwdjYpIHsKLSAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJIVFRQVExTLUlQdjYvJWQgIiwgJEhUVFBUTFM2UE9SVCk7CisgICAgaWYoJHZlcmJvc2UpIHsKKyAgICAgICAgbG9nbXNnICIqIFBvcnRzOlxuIjsKKworICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFAvJWQgIiwgJEhUVFBQT1JUKTsKKyAgICAgICAgbG9nbXNnIHNwcmludGYoIkZUUC8lZCAiLCAkRlRQUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJGVFAyLyVkICIsICRGVFAyUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJSVFNQLyVkICIsICRSVFNQUE9SVCk7CisgICAgICAgIGlmKCRzdHVubmVsKSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiRlRQUy8lZCAiLCAkRlRQU1BPUlQpOworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIkhUVFBTLyVkICIsICRIVFRQU1BPUlQpOwogICAgICAgICB9Ci0gICAgICAgIGxvZ21zZyAiXG4iOwotICAgIH0KLSAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFAtUElQRS8lZCBcbiIsICRIVFRQUElQRVBPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiXG4qICAgVEZUUC8lZCAiLCAkVEZUUFBPUlQpOworICAgICAgICBpZigkaHR0cF9pcHY2KSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiSFRUUC1JUHY2LyVkICIsICRIVFRQNlBPUlQpOworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIlJUU1AtSVB2Ni8lZCAiLCAkUlRTUDZQT1JUKTsKKyAgICAgICAgfQorICAgICAgICBpZigkZnRwX2lwdjYpIHsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJGVFAtSVB2Ni8lZCAiLCAkRlRQNlBPUlQpOworICAgICAgICB9CisgICAgICAgIGlmKCR0ZnRwX2lwdjYpIHsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJURlRQLUlQdjYvJWQgIiwgJFRGVFA2UE9SVCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbXNnIHNwcmludGYoIlxuKiAgIEdPUEhFUi8lZCAiLCAkR09QSEVSUE9SVCk7CisgICAgICAgIGlmKCRnb3BoZXJfaXB2NikgeworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIkdPUEhFUi1JUHY2LyVkIiwgJEdPUEhFUlBPUlQpOworICAgICAgICB9CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJcbiogICBTU0gvJWQgIiwgJFNTSFBPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiU09DS1MvJWQgIiwgJFNPQ0tTUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJQT1AzLyVkICIsICRQT1AzUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJJTUFQLyVkICIsICRJTUFQUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJTTVRQLyVkXG4iLCAkU01UUFBPUlQpOworICAgICAgICBpZigkZnRwX2lwdjYpIHsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCIqICAgUE9QMy1JUHY2LyVkICIsICRQT1AzNlBPUlQpOworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIklNQVAtSVB2Ni8lZCAiLCAkSU1BUDZQT1JUKTsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJTTVRQLUlQdjYvJWRcbiIsICRTTVRQNlBPUlQpOworICAgICAgICB9CisgICAgICAgIGlmKCRodHRwdGxzc3J2KSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFBUTFMvJWQgIiwgJEhUVFBUTFNQT1JUKTsKKyAgICAgICAgICAgIGlmKCRoYXNfaXB2NikgeworICAgICAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJIVFRQVExTLUlQdjYvJWQgIiwgJEhUVFBUTFM2UE9SVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2dtc2cgIlxuIjsKKyAgICAgICAgfQorICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFAtUElQRS8lZCBcbiIsICRIVFRQUElQRVBPUlQpOwogCi0gICAgaWYoJGhhc191bml4KSB7Ci0gICAgICAgIGxvZ21zZyAiKiBVbml4IHNvY2tldCBwYXRoczpcbiI7Ci0gICAgICAgIGlmKCRodHRwX3VuaXgpIHsKLSAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCIqICAgSFRUUC1Vbml4OiVzXG4iLCAkSFRUUFVOSVhQQVRIKTsKKyAgICAgICAgaWYoJGhhc191bml4KSB7CisgICAgICAgICAgICBsb2dtc2cgIiogVW5peCBzb2NrZXQgcGF0aHM6XG4iOworICAgICAgICAgICAgaWYoJGh0dHBfdW5peCkgeworICAgICAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCIqICAgSFRUUC1Vbml4OiVzXG4iLCAkSFRUUFVOSVhQQVRIKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQogICAgICRoYXNfdGV4dGF3YXJlID0gKCReTyBlcSAnTVNXaW4zMicpIHx8ICgkXk8gZXEgJ21zeXMnKTsKIAogICAgIGxvZ21zZyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogXG4iOwpAQCAtMjg1Miw3ICsyODQ3LDcgQEAKICAgICAgICAgICAgICRmZWF0dXJleyQxfSA9ICQxOwogCiAgICAgICAgICAgICBpZigkMSBlcSAiU1NMIikgewotICAgICAgICAgICAgICAgIGlmKCRzc2xfdmVyc2lvbikgeworICAgICAgICAgICAgICAgIGlmKCRoYXNfc3NsKSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjkwNyw3ICsyOTAyLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNpZigkMSBlcSAibGFyZ2VfZmlsZSIpIHsKLSAgICAgICAgICAgICAgICBpZigkbGFyZ2VfZmlsZSkgeworICAgICAgICAgICAgICAgIGlmKCRoYXNfbGFyZ2VmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjk4MSw2ICsyOTc2LDExIEBACiAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzaWYoJDEgZXEgIlBTTCIpIHsKKyAgICAgICAgICAgICAgICBpZigkaGFzX3BzbCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2lmKCQxIGVxICJzb2NrcyIpIHsKICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgfQpAQCAtMzAwNSw3ICszMDA1LDcgQEAKIAogICAgICAgICAgICAgaWYoJGYgPX4gL14hKC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgaWYoJDEgZXEgIlNTTCIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoISRzc2xfdmVyc2lvbikgeworICAgICAgICAgICAgICAgICAgICBpZighJGhhc19zc2wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zMDQ1LDcgKzMwNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2lmKCQxIGVxICJsYXJnZV9maWxlIikgewotICAgICAgICAgICAgICAgICAgICBpZighJGxhcmdlX2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoISRoYXNfbGFyZ2VmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMzExNyw2ICszMTE3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2lmKCQxIGVxICJQU0wiKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKCEkaGFzX3BzbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICB9CkBAIC0zMjc1LDE4ICszMjgwLDUwIEBACiAKICAgICBpZiAoQHJlcGx5Y2hlY2spIHsKICAgICAgICAgIyB3ZSB1c2UgdGhpcyBmaWxlIGluc3RlYWQgdG8gY2hlY2sgdGhlIGZpbmFsIG91dHB1dCBhZ2FpbnN0Ci0KKyAgICAgICAgIyBnZXQgdGhlIG1vZGUgYXR0cmlidXRlCisgICAgICAgIG15ICRmaWxlbW9kZT0kcmVwbHljaGVja2F0dHJ7J21vZGUnfTsKKyAgICAgICAgaWYoJGZpbGVtb2RlICYmICgkZmlsZW1vZGUgZXEgInRleHQiKSAmJiAkaGFzX3RleHRhd2FyZSkgeworICAgICAgICAgICAgIyB0ZXh0IG1vZGUgd2hlbiBydW5uaW5nIG9uIHdpbmRvd3M6IGZpeCBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAgIG1hcCBzL1xyXG4vXG4vZywgQHJlcGx5Y2hlY2s7CisgICAgICAgICAgICBtYXAgcy9cbi9cclxuL2csIEByZXBseWNoZWNrOworICAgICAgICB9CiAgICAgICAgIGlmKCRyZXBseWNoZWNrYXR0cnsnbm9uZXdsaW5lJ30pIHsKICAgICAgICAgICAgICMgWWVzLCB3ZSBtdXN0IGN1dCBvZmYgdGhlIGZpbmFsIG5ld2xpbmUgZnJvbSB0aGUgZmluYWwgbGluZQogICAgICAgICAgICAgIyBvZiB0aGUgZGF0YWNoZWNrCiAgICAgICAgICAgICBjaG9tcCgkcmVwbHljaGVja1skI3JlcGx5Y2hlY2tdKTsKICAgICAgICAgfQotICAgICAgICBpZigkcmVwbHljaGVja2F0dHJ7J21vZGUnfSkgewotICAgICAgICAgICAgJHJlcGx5YXR0cnsnbW9kZSd9ID0gJHJlcGx5Y2hlY2thdHRyeydtb2RlJ307CisKKyAgICAgICAgZm9yIG15ICRwYXJ0c3VmZml4ICgoJzEnLCAnMicsICczJywgJzQnKSkgeworICAgICAgICAgICAgbXkgQHJlcGx5Y2hlY2twYXJ0ID0gZ2V0cGFydCgicmVwbHkiLCAiZGF0YWNoZWNrIi4kcGFydHN1ZmZpeCk7CisgICAgICAgICAgICBpZihAcmVwbHljaGVja3BhcnQgfHwgcGFydGV4aXN0cygicmVwbHkiLCAiZGF0YWNoZWNrIi4kcGFydHN1ZmZpeCkgKSB7CisgICAgICAgICAgICAgICAgbXkgJXJlcGx5Y2hlY2twYXJ0YXR0ciA9IGdldHBhcnRhdHRyKCJyZXBseSIsICJkYXRhY2hlY2siLiRwYXJ0c3VmZml4KTsKKyAgICAgICAgICAgICAgICAjIGdldCB0aGUgbW9kZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICBteSAkZmlsZW1vZGU9JHJlcGx5Y2hlY2twYXJ0YXR0cnsnbW9kZSd9OworICAgICAgICAgICAgICAgIGlmKCRmaWxlbW9kZSAmJiAoJGZpbGVtb2RlIGVxICJ0ZXh0IikgJiYgJGhhc190ZXh0YXdhcmUpIHsKKyAgICAgICAgICAgICAgICAgICAgIyB0ZXh0IG1vZGUgd2hlbiBydW5uaW5nIG9uIHdpbmRvd3M6IGZpeCBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAgICAgICAgICAgbWFwIHMvXHJcbi9cbi9nLCBAcmVwbHljaGVja3BhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1hcCBzL1xuL1xyXG4vZywgQHJlcGx5Y2hlY2twYXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZigkcmVwbHljaGVja3BhcnRhdHRyeydub25ld2xpbmUnfSkgeworICAgICAgICAgICAgICAgICAgICAjIFllcywgd2UgbXVzdCBjdXQgb2ZmIHRoZSBmaW5hbCBuZXdsaW5lIGZyb20gdGhlIGZpbmFsIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgZGF0YWNoZWNrCisgICAgICAgICAgICAgICAgICAgIGNob21wKCRyZXBseWNoZWNrcGFydFskI3JlcGx5Y2hlY2twYXJ0XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQHJlcGx5Y2hlY2ssIEByZXBseWNoZWNrcGFydCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBAcmVwbHk9QHJlcGx5Y2hlY2s7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICAjIGdldCB0aGUgbW9kZSBhdHRyaWJ1dGUKKyAgICAgICAgbXkgJGZpbGVtb2RlPSRyZXBseWF0dHJ7J21vZGUnfTsKKyAgICAgICAgaWYoJGZpbGVtb2RlICYmICgkZmlsZW1vZGUgZXEgInRleHQiKSAmJiAkaGFzX3RleHRhd2FyZSkgeworICAgICAgICAgICAgIyB0ZXh0IG1vZGUgd2hlbiBydW5uaW5nIG9uIHdpbmRvd3M6IGZpeCBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAgIG1hcCBzL1xyXG4vXG4vZywgQHJlcGx5OworICAgICAgICAgICAgbWFwIHMvXG4vXHJcbi9nLCBAcmVwbHk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAjIHRoaXMgaXMgdGhlIHZhbGlkIHByb3RvY29sIGJsdXJiIGN1cmwgc2hvdWxkIGdlbmVyYXRlCiAgICAgbXkgQHByb3RvY29sPSBmaXhhcnJheSAoIGdldHBhcnQoInZlcmlmeSIsICJwcm90b2NvbCIpICk7CkBAIC0zODIyLDE0ICszODU5LDYgQEAKICAgICBpZighJHJlcGx5YXR0cnsnbm9jaGVjayd9ICYmIChAcmVwbHkgfHwgJHJlcGx5YXR0cnsnc2VuZHplcm8nfSkpIHsKICAgICAgICAgIyB2ZXJpZnkgdGhlIHJlY2VpdmVkIGRhdGEKICAgICAgICAgbXkgQG91dCA9IGxvYWRhcnJheSgkQ1VSTE9VVCk7Ci0gICAgICAgICMgZ2V0IHRoZSBtb2RlIGF0dHJpYnV0ZQotICAgICAgICBteSAkZmlsZW1vZGU9JHJlcGx5YXR0cnsnbW9kZSd9OwotICAgICAgICBpZigkZmlsZW1vZGUgJiYgKCRmaWxlbW9kZSBlcSAidGV4dCIpICYmICRoYXNfdGV4dGF3YXJlKSB7Ci0gICAgICAgICAgICAjIHRleHQgbW9kZSB3aGVuIHJ1bm5pbmcgb24gd2luZG93czogZml4IGxpbmUgZW5kaW5ncwotICAgICAgICAgICAgbWFwIHMvXHJcbi9cbi9nLCBAcmVwbHk7Ci0gICAgICAgICAgICBtYXAgcy9cbi9cclxuL2csIEByZXBseTsKLSAgICAgICAgfQotCiAgICAgICAgICRyZXMgPSBjb21wYXJlKCR0ZXN0bnVtLCAkdGVzdG5hbWUsICJkYXRhIiwgXEBvdXQsIFxAcmVwbHkpOwogICAgICAgICBpZiAoJHJlcykgewogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC00MzM0LDcgKzQzNjMsNyBAQAogICAgICAgICAgICAgICAgICMgd2UgY2FuJ3QgcnVuIGZ0cHMgdGVzdHMgd2l0aG91dCBzdHVubmVsCiAgICAgICAgICAgICAgICAgcmV0dXJuICJubyBzdHVubmVsIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCEkc3NsX3ZlcnNpb24pIHsKKyAgICAgICAgICAgIGlmKCEkaGFzX3NzbCkgewogICAgICAgICAgICAgICAgICMgd2UgY2FuJ3QgcnVuIGZ0cHMgdGVzdHMgaWYgbGliY3VybCBpcyBTU0wtbGVzcwogICAgICAgICAgICAgICAgIHJldHVybiAiY3VybCBsYWNrcyBTU0wgc3VwcG9ydCI7CiAgICAgICAgICAgICB9CkBAIC00MzcyLDcgKzQ0MDEsNyBAQAogICAgICAgICAgICAgICAgICMgd2UgY2FuJ3QgcnVuIGh0dHBzIHRlc3RzIHdpdGhvdXQgc3R1bm5lbAogICAgICAgICAgICAgICAgIHJldHVybiAibm8gc3R1bm5lbCI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZighJHNzbF92ZXJzaW9uKSB7CisgICAgICAgICAgICBpZighJGhhc19zc2wpIHsKICAgICAgICAgICAgICAgICAjIHdlIGNhbid0IHJ1biBodHRwcyB0ZXN0cyBpZiBsaWJjdXJsIGlzIFNTTC1sZXNzCiAgICAgICAgICAgICAgICAgcmV0dXJuICJjdXJsIGxhY2tzIFNTTCBzdXBwb3J0IjsKICAgICAgICAgICAgIH0KQEAgLTQ3MzQsNyArNDc2Myw3IEBACiAgICAgfQogICAgIGVsc2lmICgkQVJHVlswXSBlcSAiLWMiKSB7CiAgICAgICAgICMgdXNlIHRoaXMgcGF0aCB0byBjdXJsIGluc3RlYWQgb2YgZGVmYXVsdAotICAgICAgICAkREJHQ1VSTD0kQ1VSTD0kQVJHVlsxXTsKKyAgICAgICAgJERCR0NVUkw9JENVUkw9IlwiJEFSR1ZbMV1cIiI7CiAgICAgICAgIHNoaWZ0IEBBUkdWOwogICAgIH0KICAgICBlbHNpZiAoJEFSR1ZbMF0gZXEgIi12YyIpIHsKQEAgLTQ3NDQsNyArNDc3Myw3IEBACiAgICAgICAgICMgdGhlIGRldmVsb3BtZW50IHZlcnNpb24gYXMgdGhlbiBpdCB3b24ndCBiZSBhYmxlIHRvIHJ1biBhbnkgdGVzdHMKICAgICAgICAgIyBzaW5jZSBpdCBjYW4ndCB2ZXJpZnkgdGhlIHNlcnZlcnMhCiAKLSAgICAgICAgJFZDVVJMPSRBUkdWWzFdOworICAgICAgICAkVkNVUkw9IlwiJEFSR1ZbMV1cIiI7CiAgICAgICAgIHNoaWZ0IEBBUkdWOwogICAgIH0KICAgICBlbHNpZiAoJEFSR1ZbMF0gZXEgIi1kIikgewpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdXJlc2VydmVyLnBsIGIvdGVzdHMvc2VjdXJlc2VydmVyLnBsCmluZGV4IDYyNzYxMTAuLjNhNzQ0M2MgMTAwNzU1Ci0tLSBhL3Rlc3RzL3NlY3VyZXNlcnZlci5wbAorKysgYi90ZXN0cy9zZWN1cmVzZXJ2ZXIucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsNiArNDAsOCBAQAogICAgIHNlcnZlcl9sb2dmaWxlbmFtZQogICAgICk7CiAKK3VzZSBwYXRoaGVscDsKKwogbXkgJHN0dW5uZWwgPSAic3R1bm5lbCI7CiAKIG15ICR2ZXJib3NlPTA7ICMgc2V0IHRvIDEgZm9yIGRlYnVnZ2luZwpAQCAtMjI5LDkgKzIzMSw5IEBACiBpZigkc3R1bm5lbCA9fiAvdHN0dW5uZWwoXC5leGUpPyI/JC8pIHsKICAgICAkdHN0dW5uZWxfd2luZG93cyA9IDE7CiAKLSAgICAjIHJlcGxhY2UgQ3lnd2luIGFuZCBNaW5HVyBkcml2ZXMgd2l0aGluIHBhdGhzCi0gICAgJGNhcGF0aCA9fiBzL14oXC9jeWdkcml2ZSk/XC8oXHcpXC8vJDJcOlwvLzsKLSAgICAkY2VydGZpbGUgPX4gcy9eKFwvY3lnZHJpdmUpP1wvKFx3KVwvLyQyXDpcLy87CisgICAgIyBjb252ZXJ0IEN5Z3dpbi9NaW5HVyBwYXRocyB0byBXaW4zMiBmb3JtYXQKKyAgICAkY2FwYXRoID0gcGF0aGhlbHA6OnN5c19uYXRpdmVfYWJzX3BhdGgoJGNhcGF0aCk7CisgICAgJGNlcnRmaWxlID0gcGF0aGhlbHA6OnN5c19uYXRpdmVfYWJzX3BhdGgoJGNlcnRmaWxlKTsKIH0KIAogIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyLy5naXRpZ25vcmUgYi90ZXN0cy9zZXJ2ZXIvLmdpdGlnbm9yZQppbmRleCA4MDA3YmVjLi40OTc3ODNiIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvLmdpdGlnbm9yZQorKysgYi90ZXN0cy9zZXJ2ZXIvLmdpdGlnbm9yZQpAQCAtMSw3ICsxLDcgQEAKK2Zha2VfbnRsbQogZ2V0cGFydAogcmVzb2x2ZQogcnRzcGQKIHNvY2tmaWx0CiBzd3MKIHRmdHBkCi1mYWtlX250bG0KZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9NYWtlZmlsZS5hbSBiL3Rlc3RzL3NlcnZlci9NYWtlZmlsZS5hbQppbmRleCA3NTMzYTk4Li5lMjc0YzAxIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvc2VydmVyL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02MCw1ICs2MCw3IEBACiAjIE1ha2VmaWxlLmluYyBwcm92aWRlcyBuZWF0IGRlZmluaXRpb25zCiBpbmNsdWRlIE1ha2VmaWxlLmluYwogCi1FWFRSQV9ESVNUID0gYmFzZTY0LnBsIE1ha2VmaWxlLmluYworRVhUUkFfRElTVCA9IGJhc2U2NC5wbCBNYWtlZmlsZS5pbmMgQ01ha2VMaXN0cy50eHQKIAorY2hlY2tzcmM6CisJQFBFUkxAICQodG9wX3NyY2RpcikvbGliL2NoZWNrc3JjLnBsICQoc3JjZGlyKS8qLmMKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9mYWtlX250bG0uYyBiL3Rlc3RzL3NlcnZlci9mYWtlX250bG0uYwppbmRleCA3OTlmNTczLi44NzExOGIzIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvZmFrZV9udGxtLmMKKysrIGIvdGVzdHMvc2VydmVyL2Zha2VfbnRsbS5jCkBAIC0xMCw3ICsxMCw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzYsNyArNzYsNyBAQAogICAgIHJldHVybiBOVUxMOwogCiAgIGlmKCFpbmxlbmd0aCkgewotICAgIHNwcmludGYoJm91dGJ1ZlswXSwgIiVzIiwgTk9USElOR19TVFIpOworICAgIHNucHJpbnRmKCZvdXRidWZbMF0sIG91dHNpemUsICIlcyIsIE5PVEhJTkdfU1RSKTsKICAgICByZXR1cm4gb3V0YnVmOwogICB9CiAKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgIG8rKzsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICBzcHJpbnRmKCZvdXRidWZbb10sIEhFWF9GTVRfU1RSLCBpbmJ1ZltpXSk7CisgICAgICBzbnByaW50Zigmb3V0YnVmW29dLCBvdXRzaXplIC0gbywgSEVYX0ZNVF9TVFIsIGluYnVmW2ldKTsKICAgICAgIG8gKz0gSEVYX1NUUl9MRU47CiAgICAgfQogCkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICAgICAgICh1c2VfY2FjaGVkX2NyZWRzKSA/ICJ5ZXMiIDogIm5vIik7CiAKICAgZW52ID0gZ2V0ZW52KCJDVVJMX05UTE1fQVVUSF9URVNUTlVNIik7Ci0gIGlmIChlbnYpIHsKKyAgaWYoZW52KSB7CiAgICAgY2hhciAqZW5kcHRyOwogICAgIGxvbmcgbG51bSA9IHN0cnRvbChlbnYsICZlbmRwdHIsIDEwKTsKICAgICBpZigoZW5kcHRyICE9IGVudiArIHN0cmxlbihlbnYpKSB8fCAobG51bSA8IDFMKSkgewpAQCAtMTcxLDEzICsxNzEsMTQgQEAKICAgICAgIGV4aXQoMSk7CiAgICAgfQogICAgIHRlc3RudW0gPSBsbnVtOwotICB9IGVsc2UgeworICB9CisgIGVsc2UgewogICAgIGxvZ21zZygiVGVzdCBudW1iZXIgbm90IHNwZWNpZmllZCBpbiBDVVJMX05UTE1fQVVUSF9URVNUTlVNIik7CiAgICAgZXhpdCgxKTsKICAgfQogCiAgIGVudiA9IGdldGVudigiQ1VSTF9OVExNX0FVVEhfU1JDRElSIik7Ci0gIGlmIChlbnYpIHsKKyAgaWYoZW52KSB7CiAgICAgcGF0aCA9IGVudjsKICAgfQogCkBAIC0yMzAsNyArMjMxLDggQEAKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICBzaXplID0gMDsKLSAgICAgICAgZXJyb3IgPSBnZXRwYXJ0KCZ0eXBlMV9vdXRwdXQsICZzaXplLCAibnRsbV9hdXRoX3R5cGUxIiwgIm91dHB1dCIsIHN0cmVhbSk7CisgICAgICAgIGVycm9yID0gZ2V0cGFydCgmdHlwZTFfb3V0cHV0LCAmc2l6ZSwgIm50bG1fYXV0aF90eXBlMSIsICJvdXRwdXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtKTsKICAgICAgICAgZmNsb3NlKHN0cmVhbSk7CiAgICAgICAgIGlmKGVycm9yIHx8IHNpemUgPT0gMCkgewogICAgICAgICAgIGxvZ21zZygiZ2V0cGFydCgpIHR5cGUgMSBvdXRwdXQgZmFpbGVkIHdpdGggZXJyb3I6ICVkIiwgZXJyb3IpOwpAQCAtMjUxLDcgKzI1Myw4IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgc2l6ZSA9IDA7Ci0gICAgICAgIGVycm9yID0gZ2V0cGFydCgmdHlwZTNfb3V0cHV0LCAmc2l6ZSwgIm50bG1fYXV0aF90eXBlMyIsICJvdXRwdXQiLCBzdHJlYW0pOworICAgICAgICBlcnJvciA9IGdldHBhcnQoJnR5cGUzX291dHB1dCwgJnNpemUsICJudGxtX2F1dGhfdHlwZTMiLCAib3V0cHV0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSk7CiAgICAgICAgIGZjbG9zZShzdHJlYW0pOwogICAgICAgICBpZihlcnJvciB8fCBzaXplID09IDApIHsKICAgICAgICAgICBsb2dtc2coImdldHBhcnQoKSB0eXBlIDMgb3V0cHV0IGZhaWxlZCB3aXRoIGVycm9yOiAlZCIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmMgYi90ZXN0cy9zZXJ2ZXIvZ2V0cGFydC5jCmluZGV4IGY3NzNkZDAuLjk2MGZiYWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmMKKysrIGIvdGVzdHMvc2VydmVyL2dldHBhcnQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgIGludCBieXRlc3RvcmVhZCA9IGN1cmx4X3V6dG9zaSgqYnVmc2l6ZSAtIG9mZnNldCk7CiAKICAgICBpZighZmdldHMoKmJ1ZmZlciArIG9mZnNldCwgYnl0ZXN0b3JlYWQsIHN0cmVhbSkpCi0gICAgICByZXR1cm4gKG9mZnNldCAhPSAwKSA/IEdQRV9PSyA6IEdQRV9FTkRfT0ZfRklMRSA7CisgICAgICByZXR1cm4gKG9mZnNldCAhPSAwKSA/IEdQRV9PSyA6IEdQRV9FTkRfT0ZfRklMRTsKIAogICAgIGxlbmd0aCA9IG9mZnNldCArIHN0cmxlbigqYnVmZmVyICsgb2Zmc2V0KTsKICAgICBpZigqKCpidWZmZXIgKyBsZW5ndGggLSAxKSA9PSAnXG4nKQpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL2dldHBhcnQuaCBiL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmgKaW5kZXggMjUzMjBiMC4uMjc3MzY4NSAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL2dldHBhcnQuaAorKysgYi90ZXN0cy9zZXJ2ZXIvZ2V0cGFydC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3Jlc29sdmUuYyBiL3Rlc3RzL3NlcnZlci9yZXNvbHZlLmMKaW5kZXggMzk4NDllNy4uMjA2MjQ1YSAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3Jlc29sdmUuYworKysgYi90ZXN0cy9zZXJ2ZXIvcmVzb2x2ZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTI2LDcgKzEyNiw3IEBACiAgICAgICBzY2xvc2Uocyk7CiAgICAgfQogCi0gICAgaWYgKHJjID09IDApIHsKKyAgICBpZihyYyA9PSAwKSB7CiAgICAgICAvKiBnZXRhZGRyaW5mbygpIHJlc29sdmUgKi8KICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqYWk7CiAgICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHM7CkBAIC0xMzgsNyArMTM4LDcgQEAKICAgICAgIC8qIFVzZSBwYXJlbnRoZXNpcyBhcm91bmQgZnVuY3Rpb25zIHRvIHN0b3AgdGhlbSBmcm9tIGJlaW5nIHJlcGxhY2VkIGJ5CiAgICAgICAgICB0aGUgbWFjcm8gaW4gbWVtZGVidWcuaCAqLwogICAgICAgcmMgPSAoZ2V0YWRkcmluZm8pKGhvc3QsICI4MCIsICZoaW50cywgJmFpKTsKLSAgICAgIGlmIChyYyA9PSAwKQorICAgICAgaWYocmMgPT0gMCkKICAgICAgICAgKGZyZWVhZGRyaW5mbykoYWkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3J0c3BkLmMgYi90ZXN0cy9zZXJ2ZXIvcnRzcGQuYwppbmRleCAwMjkzZjU5Li45MWVmNmM2IDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvcnRzcGQuYworKysgYi90ZXN0cy9zZXJ2ZXIvcnRzcGQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1MywxNSArMzUzLDE1IEBACiAgICAgY2hhciAqcHRyOwogCiAgICAgaWYoIXN0cmNtcChwcm90X3N0ciwgIkhUVFAiKSkgewotICAgICAgICByZXEtPnByb3RvY29sID0gUlBST1RfSFRUUDsKKyAgICAgIHJlcS0+cHJvdG9jb2wgPSBSUFJPVF9IVFRQOwogICAgIH0KICAgICBlbHNlIGlmKCFzdHJjbXAocHJvdF9zdHIsICJSVFNQIikpIHsKLSAgICAgICAgcmVxLT5wcm90b2NvbCA9IFJQUk9UX1JUU1A7CisgICAgICByZXEtPnByb3RvY29sID0gUlBST1RfUlRTUDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlcS0+cHJvdG9jb2wgPSBSUFJPVF9OT05FOwotICAgICAgICBsb2dtc2coImdvdCB1bmtub3duIHByb3RvY29sICVzIiwgcHJvdF9zdHIpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgIHJlcS0+cHJvdG9jb2wgPSBSUFJPVF9OT05FOworICAgICAgbG9nbXNnKCJnb3QgdW5rbm93biBwcm90b2NvbCAlcyIsIHByb3Rfc3RyKTsKKyAgICAgIHJldHVybiAxOwogICAgIH0KIAogICAgIHJlcS0+cHJvdF92ZXJzaW9uID0gcHJvdF9tYWpvcioxMCArIHByb3RfbWlub3I7CkBAIC0zNzUsMTAgKzM3NSwxMCBAQAogICAgICAgY2hhciAqZmlsZW5hbWU7CiAKICAgICAgIGlmKChzdHJsZW4oZG9jKSArIHN0cmxlbihyZXF1ZXN0KSkgPCAyMDApCi0gICAgICAgIHNwcmludGYobG9nYnVmLCAiR290IHJlcXVlc3Q6ICVzICVzICVzLyVkLiVkIiwKLSAgICAgICAgICAgICAgICByZXF1ZXN0LCBkb2MsIHByb3Rfc3RyLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwgIkdvdCByZXF1ZXN0OiAlcyAlcyAlcy8lZC4lZCIsCisgICAgICAgICAgICAgICAgIHJlcXVlc3QsIGRvYywgcHJvdF9zdHIsIHByb3RfbWFqb3IsIHByb3RfbWlub3IpOwogICAgICAgZWxzZQotICAgICAgICBzcHJpbnRmKGxvZ2J1ZiwgIkdvdCBhICpIVUdFKiByZXF1ZXN0ICVzLyVkLiVkIiwKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwgIkdvdCBhICpIVUdFKiByZXF1ZXN0ICVzLyVkLiVkIiwKICAgICAgICAgICAgICAgICBwcm90X3N0ciwgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CiAgICAgICBsb2dtc2coIiVzIiwgbG9nYnVmKTsKIApAQCAtNDA5LDggKzQwOSw4IEBACiAgICAgICBlbHNlCiAgICAgICAgIHJlcS0+cGFydG5vID0gMDsKIAotICAgICAgc3ByaW50Zihsb2didWYsICJSZXF1ZXN0ZWQgdGVzdCBudW1iZXIgJWxkIHBhcnQgJWxkIiwKLSAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKKyAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJSZXF1ZXN0ZWQgdGVzdCBudW1iZXIgJWxkIHBhcnQgJWxkIiwKKyAgICAgICAgICAgICAgIHJlcS0+dGVzdG5vLCByZXEtPnBhcnRubyk7CiAgICAgICBsb2dtc2coIiVzIiwgbG9nYnVmKTsKIAogICAgICAgZmlsZW5hbWUgPSB0ZXN0MmZpbGUocmVxLT50ZXN0bm8pOwpAQCAtNDg4LDcgKzQ4OCw3IEBACiAgICAgICAgICAgICAgICAgcnRwX3NjcmF0Y2hbMF0gPSAnJCc7CiAKICAgICAgICAgICAgICAgICAvKiBUaGUgY2hhbm5lbCBmb2xsb3dzIGFuZCBpcyBvbmUgYnl0ZSAqLwotICAgICAgICAgICAgICAgIFNFVF9SVFBfUEtUX0NITihydHBfc2NyYXRjaCAscnRwX2NoYW5uZWwpOworICAgICAgICAgICAgICAgIFNFVF9SVFBfUEtUX0NITihydHBfc2NyYXRjaCwgcnRwX2NoYW5uZWwpOwogCiAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIGZvbGxvd3MgYW5kIGlzIGEgdHdvIGJ5dGUgc2hvcnQgaW4gbmV0d29yayBvcmRlciAqLwogICAgICAgICAgICAgICAgIFNFVF9SVFBfUEtUX0xFTihydHBfc2NyYXRjaCwgcnRwX3NpemUpOwpAQCAtNTAxLDE0ICs1MDEsMTggQEAKICAgICAgICAgICAgICAgICBpZihyZXEtPnJ0cF9idWZmZXIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgcmVxLT5ydHBfYnVmZmVyID0gcnRwX3NjcmF0Y2g7CiAgICAgICAgICAgICAgICAgICByZXEtPnJ0cF9idWZmZXJzaXplID0gcnRwX3NpemUgKyA0OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICByZXEtPnJ0cF9idWZmZXIgPSByZWFsbG9jKHJlcS0+cnRwX2J1ZmZlciwgcmVxLT5ydHBfYnVmZmVyc2l6ZSArIHJ0cF9zaXplICsgNCk7Ci0gICAgICAgICAgICAgICAgICBtZW1jcHkocmVxLT5ydHBfYnVmZmVyICsgcmVxLT5ydHBfYnVmZmVyc2l6ZSwgcnRwX3NjcmF0Y2gsIHJ0cF9zaXplICsgNCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgcmVxLT5ydHBfYnVmZmVyID0gcmVhbGxvYyhyZXEtPnJ0cF9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS0+cnRwX2J1ZmZlcnNpemUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBfc2l6ZSArIDQpOworICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcS0+cnRwX2J1ZmZlciArIHJlcS0+cnRwX2J1ZmZlcnNpemUsIHJ0cF9zY3JhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cF9zaXplICsgNCk7CiAgICAgICAgICAgICAgICAgICByZXEtPnJ0cF9idWZmZXJzaXplICs9IHJ0cF9zaXplICsgNDsKICAgICAgICAgICAgICAgICAgIGZyZWUocnRwX3NjcmF0Y2gpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsb2dtc2coInJ0cF9idWZmZXJzaXplIGlzICV6dSwgcnRwX3NpemUgaXMgJWQuIiwgcmVxLT5ydHBfYnVmZmVyc2l6ZSwgcnRwX3NpemUpOwotCisgICAgICAgICAgICAgICAgbG9nbXNnKCJydHBfYnVmZmVyc2l6ZSBpcyAlenUsIHJ0cF9zaXplIGlzICVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcS0+cnRwX2J1ZmZlcnNpemUsIHJ0cF9zaXplKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjksOCArNTMzLDkgQEAKICAgICBlbHNlIHsKICAgICAgIGlmKHNzY2FuZihyZXEtPnJlcWJ1ZiwgIkNPTk5FQ1QgJSIgTUFYRE9DTkFNRUxFTl9UWFQgInMgSFRUUC8lZC4lZCIsCiAgICAgICAgICAgICAgICAgZG9jLCAmcHJvdF9tYWpvciwgJnByb3RfbWlub3IpID09IDMpIHsKLSAgICAgICAgc3ByaW50Zihsb2didWYsICJSZWNlaXZlZCBhIENPTk5FQ1QgJXMgSFRUUC8lZC4lZCByZXF1ZXN0IiwKLSAgICAgICAgICAgICAgICBkb2MsIHByb3RfbWFqb3IsIHByb3RfbWlub3IpOworICAgICAgICBzbnByaW50Zihsb2didWYsIHNpemVvZihsb2didWYpLAorICAgICAgICAgICAgICAgICAiUmVjZWl2ZWQgYSBDT05ORUNUICVzIEhUVFAvJWQuJWQgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgIGRvYywgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CiAgICAgICAgIGxvZ21zZygiJXMiLCBsb2didWYpOwogCiAgICAgICAgIGlmKHJlcS0+cHJvdF92ZXJzaW9uID09IDEwKQpAQCAtNjYyLDEwICs2NjcsMTEgQEAKICAgICByZXEtPm50bG0gPSBUUlVFOyAvKiBOVExNIGZvdW5kICovCiAgICAgbG9nbXNnKCJSZWNlaXZlZCBOVExNIHR5cGUtMSwgc2VuZGluZyBiYWNrIGRhdGEgJWxkIiwgcmVxLT5wYXJ0bm8pOwogICB9Ci0gIGVsc2UgaWYoKHJlcS0+cGFydG5vID49IDEwMDApICYmIHN0cnN0cihyZXEtPnJlcWJ1ZiwgIkF1dGhvcml6YXRpb246IEJhc2ljIikpIHsKLSAgICAvKiBJZiB0aGUgY2xpZW50IGlzIHBhc3NpbmcgdGhpcyBCYXNpYy1oZWFkZXIgYW5kIHRoZSBwYXJ0IG51bWJlciBpcyBhbHJlYWR5Ci0gICAgICAgPj0xMDAwLCB3ZSBhZGQgMSB0byB0aGUgcGFydCBudW1iZXIuICBUaGlzIGFsbG93cyBzaW1wbGUgQmFzaWMgYXV0aGVudGljYXRpb24KLSAgICAgICBuZWdvdGlhdGlvbiB0byB3b3JrIGluIHRoZSB0ZXN0IHN1aXRlLiAqLworICBlbHNlIGlmKChyZXEtPnBhcnRubyA+PSAxMDAwKSAmJgorICAgICAgICAgIHN0cnN0cihyZXEtPnJlcWJ1ZiwgIkF1dGhvcml6YXRpb246IEJhc2ljIikpIHsKKyAgICAvKiBJZiB0aGUgY2xpZW50IGlzIHBhc3NpbmcgdGhpcyBCYXNpYy1oZWFkZXIgYW5kIHRoZSBwYXJ0IG51bWJlciBpcworICAgICAgIGFscmVhZHkgPj0xMDAwLCB3ZSBhZGQgMSB0byB0aGUgcGFydCBudW1iZXIuICBUaGlzIGFsbG93cyBzaW1wbGUgQmFzaWMKKyAgICAgICBhdXRoZW50aWNhdGlvbiBuZWdvdGlhdGlvbiB0byB3b3JrIGluIHRoZSB0ZXN0IHN1aXRlLiAqLwogICAgIHJlcS0+cGFydG5vICs9IDE7CiAgICAgbG9nbXNnKCJSZWNlaXZlZCBCYXNpYyByZXF1ZXN0LCBzZW5kaW5nIGJhY2sgZGF0YSAlbGQiLCByZXEtPnBhcnRubyk7CiAgIH0KQEAgLTcyMywxNSArNzI5LDE1IEBACiAgIHNpemVfdCB3cml0ZWxlZnQ7CiAgIEZJTEUgKmR1bXA7CiAKLSAgaWYgKHJlcWJ1ZiA9PSBOVUxMKQorICBpZihyZXFidWYgPT0gTlVMTCkKICAgICByZXR1cm47Ci0gIGlmICh0b3RhbHNpemUgPT0gMCkKKyAgaWYodG90YWxzaXplID09IDApCiAgICAgcmV0dXJuOwogCiAgIGRvIHsKICAgICBkdW1wID0gZm9wZW4oUkVRVUVTVF9EVU1QLCAiYWIiKTsKLSAgfSB3aGlsZSAoKGR1bXAgPT0gTlVMTCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOwotICBpZiAoZHVtcCA9PSBOVUxMKSB7CisgIH0gd2hpbGUoKGR1bXAgPT0gTlVMTCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOworICBpZihkdW1wID09IE5VTEwpIHsKICAgICBsb2dtc2coIkVycm9yIG9wZW5pbmcgZmlsZSAlcyBlcnJvcjogJWQgJXMiLAogICAgICAgICAgICBSRVFVRVNUX0RVTVAsIGVycm9yLCBzdHJlcnJvcihlcnJvcikpOwogICAgIGxvZ21zZygiRmFpbGVkIHRvIHdyaXRlIHJlcXVlc3QgaW5wdXQgdG8gIiBSRVFVRVNUX0RVTVApOwpAQCAtNzQ2LDcgKzc1Miw3IEBACiAgICAgICBnb3RvIHN0b3JlcmVxdWVzdF9jbGVhbnVwOwogICAgIGlmKHdyaXR0ZW4gPiAwKQogICAgICAgd3JpdGVsZWZ0IC09IHdyaXR0ZW47Ci0gIH0gd2hpbGUgKCh3cml0ZWxlZnQgPiAwKSAmJiAoKGVycm9yID0gZXJybm8pID09IEVJTlRSKSk7CisgIH0gd2hpbGUoKHdyaXRlbGVmdCA+IDApICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKIAogICBpZih3cml0ZWxlZnQgPT0gMCkKICAgICBsb2dtc2coIldyb3RlIHJlcXVlc3QgKCV6dSBieXRlcykgaW5wdXQgdG8gIiBSRVFVRVNUX0RVTVAsIHRvdGFsc2l6ZSk7CkBAIC04MTUsOSArODIxLDkgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICBpZihyZXEtPnNraXApCi0gICAgICAgIC8qIHdlIGFyZSBpbnN0cnVjdGVkIHRvIG5vdCByZWFkIHRoZSBlbnRpcmUgdGhpbmcsIHNvIHdlIG1ha2Ugc3VyZSB0byBvbmx5Ci0gICAgICAgICAgIHJlYWQgd2hhdCB3ZSdyZSBzdXBwb3NlZCB0byBhbmQgTk9UIHJlYWQgdGhlIGVuaXJlIHRoaW5nIHRoZSBjbGllbnQKLSAgICAgICAgICAgd2FudHMgdG8gc2VuZCEgKi8KKyAgICAgICAgLyogd2UgYXJlIGluc3RydWN0ZWQgdG8gbm90IHJlYWQgdGhlIGVudGlyZSB0aGluZywgc28gd2UgbWFrZSBzdXJlIHRvCisgICAgICAgICAgIG9ubHkgcmVhZCB3aGF0IHdlJ3JlIHN1cHBvc2VkIHRvIGFuZCBOT1QgcmVhZCB0aGUgZW5pcmUgdGhpbmcgdGhlCisgICAgICAgICAgIGNsaWVudCB3YW50cyB0byBzZW5kISAqLwogICAgICAgICBnb3QgPSBzcmVhZChzb2NrLCByZXFidWYgKyByZXEtPm9mZnNldCwgcmVxLT5jbCk7CiAgICAgICBlbHNlCiAgICAgICAgIGdvdCA9IHNyZWFkKHNvY2ssIHJlcWJ1ZiArIHJlcS0+b2Zmc2V0LCBSRVFCVUZTSVotMSAtIHJlcS0+b2Zmc2V0KTsKQEAgLTkwOCw3ICs5MTQsNyBAQAogICBjYXNlIFJDTURfU1RSRUFNOgogI2RlZmluZSBTVFJFQU1USElTICJhIHN0cmluZyB0byBzdHJlYW0gMDEyMzQ1Njc4OTBcbiIKICAgICBjb3VudCA9IHN0cmxlbihTVFJFQU1USElTKTsKLSAgICBmb3IgKDs7KSB7CisgICAgZm9yKDs7KSB7CiAgICAgICB3cml0dGVuID0gc3dyaXRlKHNvY2ssIFNUUkVBTVRISVMsIGNvdW50KTsKICAgICAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtOTM3LDEwICs5NDMsMTIgQEAKICAgICBjYXNlIERPQ05VTUJFUl9XRVJVTEVaOgogICAgICAgLyogd2UgZ290IGEgImZyaWVuZHM/IiBxdWVzdGlvbiwgcmVwbHkgYmFjayB0aGF0IHdlIHN1cmUgYXJlICovCiAgICAgICBsb2dtc2coIklkZW50aWZ5aW5nIG91cnNlbHZlcyBhcyBmcmllbmRzIik7Ci0gICAgICBzcHJpbnRmKG1zZ2J1ZiwgIlJUU1BfU0VSVkVSIFdFIFJPT0xaOiAlbGRcclxuIiwgKGxvbmcpZ2V0cGlkKCkpOworICAgICAgc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwgIlJUU1BfU0VSVkVSIFdFIFJPT0xaOiAlbGRcclxuIiwKKyAgICAgICAgICAgICAgIChsb25nKWdldHBpZCgpKTsKICAgICAgIG1zZ2xlbiA9IHN0cmxlbihtc2didWYpOwotICAgICAgc3ByaW50Zih3ZWFyZSwgIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogJXp1XHJcblxyXG4lcyIsCi0gICAgICAgICAgICAgIG1zZ2xlbiwgbXNnYnVmKTsKKyAgICAgIHNucHJpbnRmKHdlYXJlLCBzaXplb2Yod2VhcmUpLAorICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogJXp1XHJcblxyXG4lcyIsCisgICAgICAgICAgICAgICBtc2dsZW4sIG1zZ2J1Zik7CiAgICAgICBidWZmZXIgPSB3ZWFyZTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRE9DTlVNQkVSX0lOVEVSTkFMOgpAQCAtOTU4LDkgKzk2NiwxMCBAQAogICAgIGRlZmF1bHQ6CiAgICAgICBsb2dtc2coIlJlcGx5aW5nIHRvIHdpdGggYSA0MDQiKTsKICAgICAgIGlmKHJlcS0+cHJvdG9jb2wgPT0gUlBST1RfSFRUUCkgewotICAgICAgICAgIGJ1ZmZlciA9IGRvYzQwNF9IVFRQOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBidWZmZXIgPSBkb2M0MDRfUlRTUDsKKyAgICAgICAgYnVmZmVyID0gZG9jNDA0X0hUVFA7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgYnVmZmVyID0gZG9jNDA0X1JUU1A7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9CkBAIC05NzEsNyArOTgwLDcgQEAKICAgICBjaGFyICpmaWxlbmFtZSA9IHRlc3QyZmlsZShyZXEtPnRlc3Rubyk7CiAKICAgICBpZigwICE9IHJlcS0+cGFydG5vKQotICAgICAgc3ByaW50ZihwYXJ0YnVmLCAiZGF0YSVsZCIsIHJlcS0+cGFydG5vKTsKKyAgICAgIHNucHJpbnRmKHBhcnRidWYsIHNpemVvZihwYXJ0YnVmKSwgImRhdGElbGQiLCByZXEtPnBhcnRubyk7CiAKICAgICBzdHJlYW09Zm9wZW4oZmlsZW5hbWUsICJyYiIpOwogICAgIGlmKCFzdHJlYW0pIHsKQEAgLTEwNTgsNyArMTA2Nyw3IEBACiAgICAgaWYobnVtID4gMjAwKQogICAgICAgbnVtID0gMjAwOwogICAgIHdyaXR0ZW4gPSBzd3JpdGUoc29jaywgYnVmZmVyLCBudW0pOwotICAgIGlmICh3cml0dGVuIDwgMCkgeworICAgIGlmKHdyaXR0ZW4gPCAwKSB7CiAgICAgICBzZW5kZmFpbHVyZSA9IFRSVUU7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDgyLDcgKzEwOTEsOCBAQAogICAgICAgc2l6ZV90IG51bSA9IGNvdW50OwogICAgICAgaWYobnVtID4gMjAwKQogICAgICAgICBudW0gPSAyMDA7Ci0gICAgICB3cml0dGVuID0gc3dyaXRlKHNvY2ssIHJlcS0+cnRwX2J1ZmZlciArIChyZXEtPnJ0cF9idWZmZXJzaXplIC0gY291bnQpLCBudW0pOworICAgICAgd3JpdHRlbiA9IHN3cml0ZShzb2NrLCByZXEtPnJ0cF9idWZmZXIgKyAocmVxLT5ydHBfYnVmZmVyc2l6ZSAtIGNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgbnVtKTsKICAgICAgIGlmKHdyaXR0ZW4gPCAwKSB7CiAgICAgICAgIHNlbmRmYWlsdXJlID0gVFJVRTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTA4LDcgKzExMTgsOCBAQAogICB9CiAKICAgaWYoc2VuZGZhaWx1cmUpIHsKLSAgICBsb2dtc2coIlNlbmRpbmcgcmVzcG9uc2UgZmFpbGVkLiBPbmx5ICglenUgYnl0ZXMpIG9mICglenUgYnl0ZXMpIHdlcmUgc2VudCIsCisgICAgbG9nbXNnKCJTZW5kaW5nIHJlc3BvbnNlIGZhaWxlZC4gT25seSAoJXp1IGJ5dGVzKSBvZiAiCisgICAgICAgICAgICIoJXp1IGJ5dGVzKSB3ZXJlIHNlbnQiLAogICAgICAgICAgICByZXNwb25zZXNpemUtY291bnQsIHJlc3BvbnNlc2l6ZSk7CiAgICAgZnJlZShwdHIpOwogICAgIGZyZWUoY21kKTsKQEAgLTExMTksNyArMTEzMCw3IEBACiAgICAgICAgICByZXNwb25zZXNpemUpOwogICBmcmVlKHB0cik7CiAKLSAgaWYoY21kc2l6ZSA+IDAgKSB7CisgIGlmKGNtZHNpemUgPiAwKSB7CiAgICAgY2hhciBjb21tYW5kWzMyXTsKICAgICBpbnQgcXVhcnRlcnM7CiAgICAgaW50IG51bTsKQEAgLTEyNzgsNyArMTI4OSw3IEBACiAgIH0KIAogICBmbGFnID0gMTsKLSAgaWYgKDAgIT0gc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsCisgIGlmKDAgIT0gc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsCiAgICAgICAgICAgICAodm9pZCAqKSZmbGFnLCBzaXplb2YoZmxhZykpKSB7CiAgICAgZXJyb3IgPSBTT0NLRVJSTk87CiAgICAgbG9nbXNnKCJzZXRzb2Nrb3B0KFNPX1JFVVNFQUREUikgZmFpbGVkIHdpdGggZXJyb3I6ICglZCkgJXMiLApAQCAtMTMzMSwxMiArMTM0MiwxMiBAQAogICBpZighd3JvdGVwaWRmaWxlKQogICAgIGdvdG8gc2VydmVyX2NsZWFudXA7CiAKLSAgZm9yICg7OykgeworICBmb3IoOzspIHsKICAgICBtc2dzb2NrID0gYWNjZXB0KHNvY2ssIE5VTEwsIE5VTEwpOwogCiAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgYnJlYWs7Ci0gICAgaWYgKENVUkxfU09DS0VUX0JBRCA9PSBtc2dzb2NrKSB7CisgICAgaWYoQ1VSTF9TT0NLRVRfQkFEID09IG1zZ3NvY2spIHsKICAgICAgIGVycm9yID0gU09DS0VSUk5POwogICAgICAgbG9nbXNnKCJNQUpPUiBFUlJPUjogYWNjZXB0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICglZCkgJXMiLAogICAgICAgICAgICAgIGVycm9yLCBzdHJlcnJvcihlcnJvcikpOwpAQCAtMTM2MCw3ICsxMzcxLDcgQEAKICAgICAgKiByZXNwb25zZSBpbiBtYW55IHNtYWxsIHNlZ21lbnRzIHRvIHRvcnR1cmUgdGhlIGNsaWVudHMgbW9yZS4KICAgICAgKi8KICAgICBmbGFnID0gMTsKLSAgICBpZiAoc2V0c29ja29wdChtc2dzb2NrLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCisgICAgaWYoc2V0c29ja29wdChtc2dzb2NrLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikmZmxhZywgc2l6ZW9mKGZsYWcpKSA9PSAtMSkgewogICAgICAgbG9nbXNnKCI9PT09PiBUQ1BfTk9ERUxBWSBmYWlsZWQiKTsKICAgICB9CkBAIC0xNDI0LDcgKzE0MzUsNyBAQAogICAgICAgY2xlYXJfYWR2aXNvcl9yZWFkX2xvY2soU0VSVkVSTE9HU19MT0NLKTsKICAgICB9CiAKLSAgICBpZiAocmVxLnRlc3RubyA9PSBET0NOVU1CRVJfUVVJVCkKKyAgICBpZihyZXEudGVzdG5vID09IERPQ05VTUJFUl9RVUlUKQogICAgICAgYnJlYWs7CiAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3NlcnZlcl9zZXR1cC5oIGIvdGVzdHMvc2VydmVyL3NlcnZlcl9zZXR1cC5oCmluZGV4IDU5ZTM2OTUuLjc2YzQ2MjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9zZXJ2ZXJfc2V0dXAuaAorKysgYi90ZXN0cy9zZXJ2ZXIvc2VydmVyX3NldHVwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvc2VydmVyX3NvY2thZGRyLmggYi90ZXN0cy9zZXJ2ZXIvc2VydmVyX3NvY2thZGRyLmgKaW5kZXggM2Y0Y2Q2Ny4uYmJjYWI4MyAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3NlcnZlcl9zb2NrYWRkci5oCisrKyBiL3Rlc3RzL3NlcnZlci9zZXJ2ZXJfc29ja2FkZHIuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9zb2NrZmlsdC5jIGIvdGVzdHMvc2VydmVyL3NvY2tmaWx0LmMKaW5kZXggYTQ0OTZlMC4uMzhhYTUxZSAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3NvY2tmaWx0LmMKKysrIGIvdGVzdHMvc2VydmVyL3NvY2tmaWx0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MywzMSArNTMsMzQgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgYSBzaW5nbGUtdGhyZWFkZWQgcHJvY2Vzcy4KICAqCi0gKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgaGlnaGx5IHBvcnRhYmxlIGFuZCBhcyBzdWNoIGl0IG11c3QgYmUga2VwdCBhcwotICogc2ltcGxlIGFzIHBvc3NpYmxlLCBkdWUgdG8gdGhpcyB0aGUgb25seSBzaWduYWwgaGFuZGxpbmcgbWVjaGFuaXNtcyB1c2VkIHdpbGwKLSAqIGJlIHRob3NlIG9mIEFOU0kgQywgYW5kIHVzZWQgb25seSBpbiB0aGUgbW9zdCBiYXNpYyBmb3JtIHdoaWNoIGlzIGdvb2QgZW5vdWdoCi0gKiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtLgorICogVGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIGhpZ2hseSBwb3J0YWJsZSBhbmQgYXMgc3VjaCBpdCBtdXN0IGJlIGtlcHQKKyAqIGFzIHNpbXBsZSBhcyBwb3NzaWJsZSwgZHVlIHRvIHRoaXMgdGhlIG9ubHkgc2lnbmFsIGhhbmRsaW5nIG1lY2hhbmlzbXMgdXNlZAorICogd2lsbCBiZSB0aG9zZSBvZiBBTlNJIEMsIGFuZCB1c2VkIG9ubHkgaW4gdGhlIG1vc3QgYmFzaWMgZm9ybSB3aGljaCBpcyBnb29kCisgKiBlbm91Z2ggZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgcHJvZ3JhbS4KICAqCiAgKiBGb3IgdGhlIGFib3ZlIHJlYXNvbiBhbmQgdGhlIHNwZWNpZmljIG5lZWRzIG9mIHRoaXMgcHJvZ3JhbSBzaWduYWxzIFNJR0hVUCwKLSAqIFNJR1BJUEUgYW5kIFNJR0FMUk0gd2lsbCBiZSBzaW1wbHkgaWdub3JlZCBvbiBzeXN0ZW1zIHdoZXJlIHRoaXMgY2FuIGJlIGRvbmUuCi0gKiBJZiBwb3NzaWJsZSwgc2lnbmFscyBTSUdJTlQgYW5kIFNJR1RFUk0gd2lsbCBiZSBoYW5kbGVkIGJ5IHRoaXMgcHJvZ3JhbSBhcyBhbgotICogaW5kaWNhdGlvbiB0byBjbGVhbnVwIGFuZCBmaW5pc2ggZXhlY3V0aW9uIGFzIHNvb24gYXMgcG9zc2libGUuICBUaGlzIHdpbGwgYmUKLSAqIGFjaGlldmVkIHdpdGggYSBzaW5nbGUgc2lnbmFsIGhhbmRsZXIgJ2V4aXRfc2lnbmFsX2hhbmRsZXInIGZvciBib3RoIHNpZ25hbHMuCisgKiBTSUdQSVBFIGFuZCBTSUdBTFJNIHdpbGwgYmUgc2ltcGx5IGlnbm9yZWQgb24gc3lzdGVtcyB3aGVyZSB0aGlzIGNhbiBiZQorICogZG9uZS4gIElmIHBvc3NpYmxlLCBzaWduYWxzIFNJR0lOVCBhbmQgU0lHVEVSTSB3aWxsIGJlIGhhbmRsZWQgYnkgdGhpcworICogcHJvZ3JhbSBhcyBhbiBpbmRpY2F0aW9uIHRvIGNsZWFudXAgYW5kIGZpbmlzaCBleGVjdXRpb24gYXMgc29vbiBhcworICogcG9zc2libGUuICBUaGlzIHdpbGwgYmUgYWNoaWV2ZWQgd2l0aCBhIHNpbmdsZSBzaWduYWwgaGFuZGxlcgorICogJ2V4aXRfc2lnbmFsX2hhbmRsZXInIGZvciBib3RoIHNpZ25hbHMuCiAgKgogICogVGhlICdleGl0X3NpZ25hbF9oYW5kbGVyJyB1cG9uIHRoZSBmaXJzdCBTSUdJTlQgb3IgU0lHVEVSTSByZWNlaXZlZCBzaWduYWwKICAqIHdpbGwganVzdCBzZXQgdG8gb25lIHRoZSBnbG9iYWwgdmFyICdnb3RfZXhpdF9zaWduYWwnIHN0b3JpbmcgaW4gZ2xvYmFsIHZhcgogICogJ2V4aXRfc2lnbmFsJyB0aGUgc2lnbmFsIHRoYXQgdHJpZ2dlcmVkIHRoaXMgY2hhbmdlLgogICoKICAqIE5vdGhpbmcgZmFuY3kgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgaXMgdXNlZCwgdGhlIHByb2dyYW0gYXQgY2VydGFpbgotICogcG9pbnRzIGluIGl0cyBub3JtYWwgZmxvdyBjaGVja3MgaWYgdmFyICdnb3RfZXhpdF9zaWduYWwnIGlzIHNldCBhbmQgaW4gY2FzZQotICogdGhpcyBpcyB0cnVlIGl0IGp1c3QgbWFrZXMgaXRzIHdheSBvdXQgb2YgbG9vcHMgYW5kIGZ1bmN0aW9ucyBpbiBzdHJ1Y3R1cmVkCi0gKiBhbmQgd2VsbCBiZWhhdmVkIG1hbm5lciB0byBhY2hpZXZlIHByb3BlciBwcm9ncmFtIGNsZWFudXAgYW5kIHRlcm1pbmF0aW9uLgorICogcG9pbnRzIGluIGl0cyBub3JtYWwgZmxvdyBjaGVja3MgaWYgdmFyICdnb3RfZXhpdF9zaWduYWwnIGlzIHNldCBhbmQgaW4KKyAqIGNhc2UgdGhpcyBpcyB0cnVlIGl0IGp1c3QgbWFrZXMgaXRzIHdheSBvdXQgb2YgbG9vcHMgYW5kIGZ1bmN0aW9ucyBpbgorICogc3RydWN0dXJlZCBhbmQgd2VsbCBiZWhhdmVkIG1hbm5lciB0byBhY2hpZXZlIHByb3BlciBwcm9ncmFtIGNsZWFudXAgYW5kCisgKiB0ZXJtaW5hdGlvbi4KICAqCi0gKiBFdmVuIHdpdGggdGhlIGFib3ZlIG1lY2hhbmlzbSBpbXBsZW1lbnRlZCBpdCBpcyB3b3J0aHdpbGUgdG8gbm90ZSB0aGF0IG90aGVyCi0gKiBzaWduYWxzIG1pZ2h0IHN0aWxsIGJlIHJlY2VpdmVkLCBvciB0aGF0IHRoZXJlIG1pZ2h0IGJlIHN5c3RlbXMgb24gd2hpY2ggaXQKLSAqIGlzIG5vdCBwb3NzaWJsZSB0byB0cmFwIGFuZCBpZ25vcmUgc29tZSBvZiB0aGUgYWJvdmUgc2lnbmFscy4gIFRoaXMgaW1wbGllcwotICogdGhhdCBmb3IgaW5jcmVhc2VkIHBvcnRhYmlsaXR5IGFuZCByZWxpYWJpbGl0eSB0aGUgcHJvZ3JhbSBtdXN0IGJlIGNvZGVkIGFzCi0gKiBpZiBubyBzaWduYWwgd2FzIGJlaW5nIGlnbm9yZWQgb3IgaGFuZGxlZCBhdCBhbGwuICBFbmpveSBpdCEKKyAqIEV2ZW4gd2l0aCB0aGUgYWJvdmUgbWVjaGFuaXNtIGltcGxlbWVudGVkIGl0IGlzIHdvcnRod2lsZSB0byBub3RlIHRoYXQKKyAqIG90aGVyIHNpZ25hbHMgbWlnaHQgc3RpbGwgYmUgcmVjZWl2ZWQsIG9yIHRoYXQgdGhlcmUgbWlnaHQgYmUgc3lzdGVtcyBvbgorICogd2hpY2ggaXQgaXMgbm90IHBvc3NpYmxlIHRvIHRyYXAgYW5kIGlnbm9yZSBzb21lIG9mIHRoZSBhYm92ZSBzaWduYWxzLgorICogVGhpcyBpbXBsaWVzIHRoYXQgZm9yIGluY3JlYXNlZCBwb3J0YWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgdGhlIHByb2dyYW0KKyAqIG11c3QgYmUgY29kZWQgYXMgaWYgbm8gc2lnbmFsIHdhcyBiZWluZyBpZ25vcmVkIG9yIGhhbmRsZWQgYXQgYWxsLiAgRW5qb3kKKyAqIGl0IQogICovCiAKICNpZmRlZiBIQVZFX1NJR05BTF9ICkBAIC00NjksMjMgKzQ3MiwyOCBAQAogICB1bnNpZ25lZCBjaGFyICpwdHIgPSBidWZmZXI7CiAgIGNoYXIgKm9wdHIgPSBkYXRhOwogICBzc2l6ZV90IHdpZHRoPTA7CisgIGludCBsZWZ0ID0gc2l6ZW9mKGRhdGEpOwogCiAgIGZvcihpPTA7IGk8bGVuOyBpKyspIHsKICAgICBzd2l0Y2gocHRyW2ldKSB7CiAgICAgY2FzZSAnXG4nOgotICAgICAgc3ByaW50ZihvcHRyLCAiXFxuIik7CisgICAgICBzbnByaW50ZihvcHRyLCBsZWZ0LCAiXFxuIik7CiAgICAgICB3aWR0aCArPSAyOwogICAgICAgb3B0ciArPSAyOworICAgICAgbGVmdC09MjsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1xyJzoKLSAgICAgIHNwcmludGYob3B0ciwgIlxcciIpOworICAgICAgc25wcmludGYob3B0ciwgbGVmdCwgIlxcciIpOwogICAgICAgd2lkdGggKz0gMjsKICAgICAgIG9wdHIgKz0gMjsKKyAgICAgIGxlZnQtPTI7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgc3ByaW50ZihvcHRyLCAiJWMiLCAoSVNHUkFQSChwdHJbaV0pIHx8IHB0cltpXT09MHgyMCkgP3B0cltpXTonLicpOworICAgICAgc25wcmludGYob3B0ciwgbGVmdCwgIiVjIiwgKElTR1JBUEgocHRyW2ldKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cltpXT09MHgyMCkgP3B0cltpXTonLicpOwogICAgICAgd2lkdGgrKzsKICAgICAgIG9wdHIrKzsKKyAgICAgIGxlZnQtLTsKICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDkzLDYgKzUwMSw3IEBACiAgICAgICBsb2dtc2coIiclcyciLCBkYXRhKTsKICAgICAgIHdpZHRoID0gMDsKICAgICAgIG9wdHIgPSBkYXRhOworICAgICAgbGVmdCA9IHNpemVvZihkYXRhKTsKICAgICB9CiAgIH0KICAgaWYod2lkdGgpCkBAIC01MDksOCArNTE4LDggQEAKICAqIG90aGVyIGhhbmRsZSB0eXBlcyBzdXBwb3J0ZWQgYnkgV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KCkgYXMKICAqIHdlbGwgYXMgZGlzayBmaWxlcywgYW5vbnltb3VzIGFuZCBuYW1lcyBwaXBlcywgYW5kIGNoYXJhY3RlciBpbnB1dC4KICAqCi0gKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg3MDI4LmFzcHgKLSAqIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM3NDE1NzIuYXNweAorICogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM2ODcwMjguYXNweAorICogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXM3NDE1NzIuYXNweAogICovCiBzdHJ1Y3Qgc2VsZWN0X3dzX3dhaXRfZGF0YSB7CiAgIEhBTkRMRSBoYW5kbGU7IC8qIGFjdHVhbCBoYW5kbGUgdG8gd2FpdCBmb3IgZHVyaW5nIHNlbGVjdCAqLwpAQCAtNTQ3LDggKzU1Niw4IEBACiAgICAgICAgICogQXBwcm9hY2g6IExvb3AgdGlsbCBlaXRoZXIgdGhlIGludGVybmFsIGV2ZW50IGlzIHNpZ25hbGxlZAogICAgICAgICAqICAgICAgICAgICBvciBpZiB0aGUgZW5kIG9mIHRoZSBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KICAgICAgICAgKi8KLSAgICAgIHdoaWxlKFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCgyLCBoYW5kbGVzLCBGQUxTRSwgSU5GSU5JVEUsIEZBTFNFKQotICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCArIDEpIHsKKyAgICAgIHdoaWxlKFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCgxLCBoYW5kbGVzLCBGQUxTRSwgMCwgRkFMU0UpCisgICAgICAgICAgICA9PSBXQUlUX1RJTUVPVVQpIHsKICAgICAgICAgLyogZ2V0IHRvdGFsIHNpemUgb2YgZmlsZSAqLwogICAgICAgICBsZW5ndGggPSAwOwogICAgICAgICBzaXplLlF1YWRQYXJ0ID0gMDsKQEAgLTU1OCw3ICs1NjcsOCBAQAogICAgICAgICAgIHNpemUuSGlnaFBhcnQgPSBsZW5ndGg7CiAgICAgICAgICAgLyogZ2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uIHdpdGhpbiB0aGUgZmlsZSAqLwogICAgICAgICAgIHBvcy5RdWFkUGFydCA9IDA7Ci0gICAgICAgICAgcG9zLkxvd1BhcnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIDAsICZwb3MuSGlnaFBhcnQsIEZJTEVfQ1VSUkVOVCk7CisgICAgICAgICAgcG9zLkxvd1BhcnQgPSBTZXRGaWxlUG9pbnRlcihoYW5kbGUsIDAsICZwb3MuSGlnaFBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0NVUlJFTlQpOwogICAgICAgICAgIGlmKChwb3MuTG93UGFydCAhPSBJTlZBTElEX1NFVF9GSUxFX1BPSU5URVIpIHx8CiAgICAgICAgICAgICAgKEdldExhc3RFcnJvcigpID09IE5PX0VSUk9SKSkgewogICAgICAgICAgICAgLyogY29tcGFyZSBwb3NpdGlvbiB3aXRoIHNpemUsIGFib3J0IGlmIG5vdCBlcXVhbCAqLwpAQCAtNjExLDggKzYyMSw4IEBACiAgICAgICAgICogQXBwcm9hY2g6IExvb3AgdGlsbCBlaXRoZXIgdGhlIGludGVybmFsIGV2ZW50IGlzIHNpZ25hbGxlZAogICAgICAgICAqICAgICAgICAgICBvciB0aGVyZSBpcyBkYXRhIGluIHRoZSBwaXBlIGF2YWlsYWJsZSBmb3IgcmVhZGluZy4KICAgICAgICAgKi8KLSAgICAgIHdoaWxlKFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCgyLCBoYW5kbGVzLCBGQUxTRSwgSU5GSU5JVEUsIEZBTFNFKQotICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCArIDEpIHsKKyAgICAgIHdoaWxlKFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCgxLCBoYW5kbGVzLCBGQUxTRSwgMCwgRkFMU0UpCisgICAgICAgICAgICA9PSBXQUlUX1RJTUVPVVQpIHsKICAgICAgICAgLyogcGVlayBpbnRvIHRoZSBwaXBlIGFuZCByZXRyaWV2ZSB0aGUgYW1vdW50IG9mIGRhdGEgYXZhaWxhYmxlICovCiAgICAgICAgIGxlbmd0aCA9IDA7CiAgICAgICAgIGlmKFBlZWtOYW1lZFBpcGUoaGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmbGVuZ3RoLCBOVUxMKSkgewpAQCAtNjk1LDcgKzcwNSw3IEBACiAKICAgLyogY2hlY2sgaWYgd2UgZ290IGRlc2NyaXB0b3JzLCBzbGVlcCBpbiBjYXNlIHdlIGdvdCBub25lICovCiAgIGlmKCFuZmRzKSB7Ci0gICAgU2xlZXAoKHRpbWVvdXQtPnR2X3NlYyAqIDEwMDApICsgKHRpbWVvdXQtPnR2X3VzZWMgLyAxMDAwKSk7CisgICAgU2xlZXAoKHRpbWVvdXQtPnR2X3NlYyoxMDAwKSsoRFdPUkQpKCgoZG91YmxlKXRpbWVvdXQtPnR2X3VzZWMpLzEwMDAuMCkpOwogICAgIHJldHVybiAwOwogICB9CiAKQEAgLTg1Niw2ICs4NjYsMTcgQEAKICAgICB9CiAgIH0KIAorICBmb3IoZmRzID0gMDsgZmRzIDwgbmZkczsgZmRzKyspIHsKKyAgICBpZihGRF9JU1NFVChmZHMsIHJlYWRmZHMpKQorICAgICAgbG9nbXNnKCJzZWxlY3Rfd3M6ICVkIGlzIHJlYWRhYmxlIiwgZmRzKTsKKworICAgIGlmKEZEX0lTU0VUKGZkcywgd3JpdGVmZHMpKQorICAgICAgbG9nbXNnKCJzZWxlY3Rfd3M6ICVkIGlzIHdyaXRhYmxlIiwgZmRzKTsKKworICAgIGlmKEZEX0lTU0VUKGZkcywgZXhjZXB0ZmRzKSkKKyAgICAgIGxvZ21zZygic2VsZWN0X3dzOiAlZCBpcyBleGNlcHRlZCIsIGZkcyk7CisgIH0KKwogICBmb3IoaWR4ID0gMDsgaWR4IDwgd3NhOyBpZHgrKykgewogICAgIFdTQUV2ZW50U2VsZWN0KGRhdGFbaWR4XS53c2Fzb2NrLCBOVUxMLCAwKTsKICAgICBXU0FDbG9zZUV2ZW50KGRhdGFbaWR4XS53c2FldmVudCk7CkBAIC0xMDI2LDcgKzEwNDcsNyBAQAogICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgbG9nbXNnKCJSZWNlaXZlZCAlYyVjJWMlYyAob24gc3RkaW4pIiwKLSAgICAgICAgICAgYnVmZmVyWzBdLCBidWZmZXJbMV0sIGJ1ZmZlclsyXSwgYnVmZmVyWzNdICk7CisgICAgICAgICAgIGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0sIGJ1ZmZlclszXSk7CiAKICAgICBpZighbWVtY21wKCJQSU5HIiwgYnVmZmVyLCA0KSkgewogICAgICAgLyogc2VuZCByZXBseSBvbiBzdGRvdXQsIGp1c3QgcHJvdmluZyB3ZSBhcmUgYWxpdmUgKi8KQEAgLTEwMzcsNyArMTA1OCw3IEBACiAgICAgZWxzZSBpZighbWVtY21wKCJQT1JUIiwgYnVmZmVyLCA0KSkgewogICAgICAgLyogUXVlc3Rpb24gYXNraW5nIHVzIHdoYXQgUE9SVCBudW1iZXIgd2UgYXJlIGxpc3RlbmluZyB0by4KICAgICAgICAgIFJlcGxpZXMgdG8gUE9SVCB3aXRoICJJUHZbbnVtXS9bcG9ydF0iICovCi0gICAgICBzcHJpbnRmKChjaGFyICopYnVmZmVyLCAiJXMvJWh1XG4iLCBpcHZfaW51c2UsIHBvcnQpOworICAgICAgc25wcmludGYoKGNoYXIgKilidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMvJWh1XG4iLCBpcHZfaW51c2UsIHBvcnQpOwogICAgICAgYnVmZmVyX2xlbiA9IChzc2l6ZV90KXN0cmxlbigoY2hhciAqKWJ1ZmZlcik7CiAgICAgICBzbnByaW50ZihkYXRhLCBzaXplb2YoZGF0YSksICJQT1JUXG4lMDR6eFxuIiwgYnVmZmVyX2xlbik7CiAgICAgICBpZighd3JpdGVfc3Rkb3V0KGRhdGEsIDEwKSkKQEAgLTEwNTksNyArMTA4MCw3IEBACiAgICAgICBidWZmZXJbNV0gPSAnXDAnOwogCiAgICAgICBidWZmZXJfbGVuID0gKHNzaXplX3Qpc3RydG9sKChjaGFyICopYnVmZmVyLCBOVUxMLCAxNik7Ci0gICAgICBpZiAoYnVmZmVyX2xlbiA+IChzc2l6ZV90KXNpemVvZihidWZmZXIpKSB7CisgICAgICBpZihidWZmZXJfbGVuID4gKHNzaXplX3Qpc2l6ZW9mKGJ1ZmZlcikpIHsKICAgICAgICAgbG9nbXNnKCJFUlJPUjogQnVmZmVyIHNpemUgKCV6dSBieXRlcykgdG9vIHNtYWxsIGZvciBkYXRhIHNpemUgIgogICAgICAgICAgICAgICAgIiglemQgYnl0ZXMpIiwgc2l6ZW9mKGJ1ZmZlciksIGJ1ZmZlcl9sZW4pOwogICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0xNDU3LDcgKzE0NzgsNyBAQAogICAgICAgbWUuc2E0LnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgICAgbWUuc2E0LnNpbl9wb3J0ID0gaHRvbnMoY29ubmVjdHBvcnQpOwogICAgICAgbWUuc2E0LnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0gICAgICBpZiAoIWFkZHIpCisgICAgICBpZighYWRkcikKICAgICAgICAgYWRkciA9ICIxMjcuMC4wLjEiOwogICAgICAgQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgYWRkciwgJm1lLnNhNC5zaW5fYWRkcik7CiAKQEAgLTE0NjgsNyArMTQ4OSw3IEBACiAgICAgICBtZW1zZXQoJm1lLnNhNiwgMCwgc2l6ZW9mKG1lLnNhNikpOwogICAgICAgbWUuc2E2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICBtZS5zYTYuc2luNl9wb3J0ID0gaHRvbnMoY29ubmVjdHBvcnQpOwotICAgICAgaWYgKCFhZGRyKQorICAgICAgaWYoIWFkZHIpCiAgICAgICAgIGFkZHIgPSAiOjoxIjsKICAgICAgIEN1cmxfaW5ldF9wdG9uKEFGX0lORVQ2LCBhZGRyLCAmbWUuc2E2LnNpbjZfYWRkcik7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9zd3MuYyBiL3Rlc3RzL3NlcnZlci9zd3MuYwppbmRleCA5YWQ1NGU0Li4yN2M4NmUwIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvc3dzLmMKKysrIGIvdGVzdHMvc2VydmVyL3N3cy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDkxLDExICs0OTEsMTEgQEAKICAgICAvKiBnZXQgdGhlIG51bWJlciBhZnRlciBpdCAqLwogICAgIGlmKHB0cikgewogICAgICAgaWYoKHN0cmxlbihkb2MpICsgc3RybGVuKHJlcXVlc3QpKSA8IDQwMCkKLSAgICAgICAgc3ByaW50Zihsb2didWYsICJHb3QgcmVxdWVzdDogJXMgJXMgSFRUUC8lZC4lZCIsCi0gICAgICAgICAgICAgICAgcmVxdWVzdCwgZG9jLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwgIkdvdCByZXF1ZXN0OiAlcyAlcyBIVFRQLyVkLiVkIiwKKyAgICAgICAgICAgICAgICAgcmVxdWVzdCwgZG9jLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKICAgICAgIGVsc2UKLSAgICAgICAgc3ByaW50Zihsb2didWYsICJHb3QgYSAqSFVHRSogcmVxdWVzdCBIVFRQLyVkLiVkIiwKLSAgICAgICAgICAgICAgICBwcm90X21ham9yLCBwcm90X21pbm9yKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwgIkdvdCBhICpIVUdFKiByZXF1ZXN0IEhUVFAvJWQuJWQiLAorICAgICAgICAgICAgICAgICBwcm90X21ham9yLCBwcm90X21pbm9yKTsKICAgICAgIGxvZ21zZygiJXMiLCBsb2didWYpOwogCiAgICAgICBpZighc3RybmNtcCgiL3ZlcmlmaWVkc2VydmVyIiwgcHRyLCAxNSkpIHsKQEAgLTUyNyw4ICs1MjcsOCBAQAogCiAgICAgICBpZihyZXEtPnRlc3RubykgewogCi0gICAgICAgIHNwcmludGYobG9nYnVmLCAiUmVxdWVzdGVkIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCIsCi0gICAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwgIlJlcXVlc3RlZCB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQiLAorICAgICAgICAgICAgICAgICByZXEtPnRlc3RubywgcmVxLT5wYXJ0bm8pOwogICAgICAgICBsb2dtc2coIiVzIiwgbG9nYnVmKTsKIAogICAgICAgICAvKiBmaW5kIGFuZCBwYXJzZSA8c2VydmVyY21kPiBmb3IgdGhpcyB0ZXN0ICovCkBAIC01NDgsOCArNTQ4LDkgQEAKICAgICAgICAgY2hhciAqcG9ydHAgPSBOVUxMOwogICAgICAgICB1bnNpZ25lZCBsb25nIHBhcnQ9MDsKIAotICAgICAgICBzcHJpbnRmKGxvZ2J1ZiwgIlJlY2VpdmVkIGEgQ09OTkVDVCAlcyBIVFRQLyVkLiVkIHJlcXVlc3QiLAotICAgICAgICAgICAgICAgIGRvYywgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksCisgICAgICAgICAgICAgICAgICJSZWNlaXZlZCBhIENPTk5FQ1QgJXMgSFRUUC8lZC4lZCByZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAgZG9jLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKICAgICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAKICAgICAgICAgcmVxLT5jb25uZWN0X3JlcXVlc3QgPSBUUlVFOwpAQCAtNTcxLDcgKzU3Miw3IEBACiAgICAgICAgICAgfQogICAgICAgICAgIGlmKCpwICE9ICddJykKICAgICAgICAgICAgIGxvZ21zZygiSW52YWxpZCBDT05ORUNUIElQdjYgYWRkcmVzcyBmb3JtYXQiKTsKLSAgICAgICAgICBlbHNlIGlmICgqKHArMSkgIT0gJzonKQorICAgICAgICAgIGVsc2UgaWYoKihwKzEpICE9ICc6JykKICAgICAgICAgICAgIGxvZ21zZygiSW52YWxpZCBDT05ORUNUIElQdjYgcG9ydCBmb3JtYXQiKTsKICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3J0cCA9IHArMTsKQEAgLTYxOCw4ICs2MTksOSBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgcmVxLT5wYXJ0bm8gPSAwOwogCi0gICAgICAgIHNwcmludGYobG9nYnVmLCAiUmVxdWVzdGVkIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCAoZnJvbSBob3N0IG5hbWUpIiwKLSAgICAgICAgICAgICAgICByZXEtPnRlc3RubywgcmVxLT5wYXJ0bm8pOworICAgICAgICBzbnByaW50Zihsb2didWYsIHNpemVvZihsb2didWYpLAorICAgICAgICAgICAgICAgICAiUmVxdWVzdGVkIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCAoZnJvbSBob3N0IG5hbWUpIiwKKyAgICAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKICAgICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAKICAgICAgIH0KQEAgLTY2OCw4ICs2NzAsOSBAQAogICAgICAgZWxzZQogICAgICAgICByZXEtPnBhcnRubyA9IDA7CiAKLSAgICAgIHNwcmludGYobG9nYnVmLCAiUmVxdWVzdGVkIEdPUEhFUiB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQiLAotICAgICAgICAgICAgICByZXEtPnRlc3RubywgcmVxLT5wYXJ0bm8pOworICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwKKyAgICAgICAgICAgICAgICJSZXF1ZXN0ZWQgR09QSEVSIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCIsCisgICAgICAgICAgICAgICByZXEtPnRlc3RubywgcmVxLT5wYXJ0bm8pOwogICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAgICAgfQogICB9CkBAIC04NDMsMTUgKzg0NiwxNSBAQAogICBGSUxFICpkdW1wOwogICBjb25zdCBjaGFyICpkdW1wZmlsZT1pc19wcm94eT9SRVFVRVNUX1BST1hZX0RVTVA6UkVRVUVTVF9EVU1QOwogCi0gIGlmIChyZXFidWYgPT0gTlVMTCkKKyAgaWYocmVxYnVmID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBpZiAodG90YWxzaXplID09IDApCisgIGlmKHRvdGFsc2l6ZSA9PSAwKQogICAgIHJldHVybjsKIAogICBkbyB7CiAgICAgZHVtcCA9IGZvcGVuKGR1bXBmaWxlLCAiYWIiKTsKLSAgfSB3aGlsZSAoKGR1bXAgPT0gTlVMTCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOwotICBpZiAoZHVtcCA9PSBOVUxMKSB7CisgIH0gd2hpbGUoKGR1bXAgPT0gTlVMTCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOworICBpZihkdW1wID09IE5VTEwpIHsKICAgICBsb2dtc2coIlsyXSBFcnJvciBvcGVuaW5nIGZpbGUgJXMgZXJyb3I6ICVkICVzIiwKICAgICAgICAgICAgZHVtcGZpbGUsIGVycm9yLCBzdHJlcnJvcihlcnJvcikpOwogICAgIGxvZ21zZygiRmFpbGVkIHRvIHdyaXRlIHJlcXVlc3QgaW5wdXQgIik7CkBAIC04NjYsNyArODY5LDcgQEAKICAgICAgIGdvdG8gc3RvcmVyZXF1ZXN0X2NsZWFudXA7CiAgICAgaWYod3JpdHRlbiA+IDApCiAgICAgICB3cml0ZWxlZnQgLT0gd3JpdHRlbjsKLSAgfSB3aGlsZSAoKHdyaXRlbGVmdCA+IDApICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKKyAgfSB3aGlsZSgod3JpdGVsZWZ0ID4gMCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOwogCiAgIGlmKHdyaXRlbGVmdCA9PSAwKQogICAgIGxvZ21zZygiV3JvdGUgcmVxdWVzdCAoJXp1IGJ5dGVzKSBpbnB1dCB0byAlcyIsIHRvdGFsc2l6ZSwgZHVtcGZpbGUpOwpAQCAtOTY4LDcgKzk3MSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYoZ290IDwgMCkgewogICAgICAgZXJyb3IgPSBTT0NLRVJSTk87Ci0gICAgICBpZiAoRUFHQUlOID09IGVycm9yIHx8IEVXT1VMREJMT0NLID09IGVycm9yKSB7CisgICAgICBpZihFQUdBSU4gPT0gZXJyb3IgfHwgRVdPVUxEQkxPQ0sgPT0gZXJyb3IpIHsKICAgICAgICAgLyogbm90aGluZyB0byByZWFkIGF0IHRoZSBtb21lbnQgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgICB9CkBAIC0xMDEzLDcgKzEwMTYsNyBAQAogICAgIHJlcWJ1ZltyZXEtPm9mZnNldF0gPSAnXDAnOwogCiAgIC8qIGF0IHRoZSBlbmQgb2YgYSByZXF1ZXN0IGR1bXAgaXQgdG8gYW4gZXh0ZXJuYWwgZmlsZSAqLwotICBpZiAoZmFpbCB8fCByZXEtPmRvbmVfcHJvY2Vzc2luZykKKyAgaWYoZmFpbCB8fCByZXEtPmRvbmVfcHJvY2Vzc2luZykKICAgICBzdG9yZXJlcXVlc3QocmVxYnVmLCByZXEtPnBpcGVsaW5pbmcgPyByZXEtPmNoZWNraW5kZXggOiByZXEtPm9mZnNldCk7CiAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICByZXR1cm4gLTE7CkBAIC0xMDQ3LDcgKzEwNTAsNyBAQAogICBjYXNlIFJDTURfU1RSRUFNOgogI2RlZmluZSBTVFJFQU1USElTICJhIHN0cmluZyB0byBzdHJlYW0gMDEyMzQ1Njc4OTBcbiIKICAgICBjb3VudCA9IHN0cmxlbihTVFJFQU1USElTKTsKLSAgICBmb3IgKDs7KSB7CisgICAgZm9yKDs7KSB7CiAgICAgICB3cml0dGVuID0gc3dyaXRlKHNvY2ssIFNUUkVBTVRISVMsIGNvdW50KTsKICAgICAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTA3NiwxMyArMTA3OSwxNCBAQAogICAgIGNhc2UgRE9DTlVNQkVSX1dFUlVMRVo6CiAgICAgICAvKiB3ZSBnb3QgYSAiZnJpZW5kcz8iIHF1ZXN0aW9uLCByZXBseSBiYWNrIHRoYXQgd2Ugc3VyZSBhcmUgKi8KICAgICAgIGxvZ21zZygiSWRlbnRpZnlpbmcgb3Vyc2VsdmVzIGFzIGZyaWVuZHMiKTsKLSAgICAgIHNwcmludGYobXNnYnVmLCAiV0UgUk9PTFo6ICVsZFxyXG4iLCAobG9uZylnZXRwaWQoKSk7CisgICAgICBzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLCAiV0UgUk9PTFo6ICVsZFxyXG4iLCAobG9uZylnZXRwaWQoKSk7CiAgICAgICBtc2dsZW4gPSBzdHJsZW4obXNnYnVmKTsKICAgICAgIGlmKHVzZV9nb3BoZXIpCi0gICAgICAgIHNwcmludGYod2VhcmUsICIlcyIsIG1zZ2J1Zik7CisgICAgICAgIHNucHJpbnRmKHdlYXJlLCBzaXplb2Yod2VhcmUpLCAiJXMiLCBtc2didWYpOwogICAgICAgZWxzZQotICAgICAgICBzcHJpbnRmKHdlYXJlLCAiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAlenVcclxuXHJcbiVzIiwKLSAgICAgICAgICAgICAgICBtc2dsZW4sIG1zZ2J1Zik7CisgICAgICAgIHNucHJpbnRmKHdlYXJlLCBzaXplb2Yod2VhcmUpLAorICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAlenVcclxuXHJcbiVzIiwKKyAgICAgICAgICAgICAgICAgbXNnbGVuLCBtc2didWYpOwogICAgICAgYnVmZmVyID0gd2VhcmU7CiAgICAgICBicmVhazsKICAgICBjYXNlIERPQ05VTUJFUl80MDQ6CkBAIC0xMTAzLDkgKzExMDcsOSBAQAogICAgIGNvbnN0IGNoYXIgKnNlY3Rpb249IHJlcS0+Y29ubmVjdF9yZXF1ZXN0PyJjb25uZWN0IjoiZGF0YSI7CiAKICAgICBpZihyZXEtPnBhcnRubykKLSAgICAgIHNwcmludGYocGFydGJ1ZiwgIiVzJWxkIiwgc2VjdGlvbiwgcmVxLT5wYXJ0bm8pOworICAgICAgc25wcmludGYocGFydGJ1Ziwgc2l6ZW9mKHBhcnRidWYpLCAiJXMlbGQiLCBzZWN0aW9uLCByZXEtPnBhcnRubyk7CiAgICAgZWxzZQotICAgICAgc3ByaW50ZihwYXJ0YnVmLCAiJXMiLCBzZWN0aW9uKTsKKyAgICAgIHNucHJpbnRmKHBhcnRidWYsIHNpemVvZihwYXJ0YnVmKSwgIiVzIiwgc2VjdGlvbik7CiAKICAgICBsb2dtc2coIlNlbmQgcmVzcG9uc2UgdGVzdCVsZCBzZWN0aW9uIDwlcz4iLCByZXEtPnRlc3RubywgcGFydGJ1Zik7CiAKQEAgLTExOTEsNyArMTE5NSw3IEBACiAgICAgaWYobnVtID4gMjAwKQogICAgICAgbnVtID0gMjAwOwogICAgIHdyaXR0ZW4gPSBzd3JpdGUoc29jaywgYnVmZmVyLCBudW0pOwotICAgIGlmICh3cml0dGVuIDwgMCkgeworICAgIGlmKHdyaXR0ZW4gPCAwKSB7CiAgICAgICBzZW5kZmFpbHVyZSA9IFRSVUU7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjI4LDcgKzEyMzIsOCBAQAogICB9CiAKICAgaWYoc2VuZGZhaWx1cmUpIHsKLSAgICBsb2dtc2coIlNlbmRpbmcgcmVzcG9uc2UgZmFpbGVkLiBPbmx5ICglenUgYnl0ZXMpIG9mICglenUgYnl0ZXMpIHdlcmUgc2VudCIsCisgICAgbG9nbXNnKCJTZW5kaW5nIHJlc3BvbnNlIGZhaWxlZC4gT25seSAoJXp1IGJ5dGVzKSBvZiAoJXp1IGJ5dGVzKSAiCisgICAgICAgICAgICJ3ZXJlIHNlbnQiLAogICAgICAgICAgICByZXNwb25zZXNpemUtY291bnQsIHJlc3BvbnNlc2l6ZSk7CiAgICAgZnJlZShwdHIpOwogICAgIGZyZWUoY21kKTsKQEAgLTEyMzksNyArMTI0NCw3IEBACiAgICAgICAgICByZXNwb25zZXNpemUsIHJlc3BvbnNlZHVtcCk7CiAgIGZyZWUocHRyKTsKIAotICBpZihjbWRzaXplID4gMCApIHsKKyAgaWYoY21kc2l6ZSA+IDApIHsKICAgICBjaGFyIGNvbW1hbmRbMzJdOwogICAgIGludCBxdWFydGVyczsKICAgICBpbnQgbnVtOwpAQCAtMTU1Miw3ICsxNTU3LDggQEAKICAgICAgICAgICAgICAgICAvKiBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIgKi8KICAgICAgICAgICAgICAgICBzZXJ2ZXJmZFtEQVRBXSA9IGNvbm5lY3RfdG8oaXBhZGRyLCByZXEyLmNvbm5lY3RfcG9ydCk7CiAgICAgICAgICAgICAgICAgaWYoc2VydmVyZmRbREFUQV0gIT0gQ1VSTF9TT0NLRVRfQkFEKSB7Ci0gICAgICAgICAgICAgICAgICAvKiBzZWNvbmRhcnkgdHVubmVsIGVzdGFibGlzaGVkLCBub3cgd2UgaGF2ZSB0d28gY29ubmVjdGlvbnMgKi8KKyAgICAgICAgICAgICAgICAgIC8qIHNlY29uZGFyeSB0dW5uZWwgZXN0YWJsaXNoZWQsIG5vdyB3ZSBoYXZlIHR3bworICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbnMgKi8KICAgICAgICAgICAgICAgICAgIHBvbGxfY2xpZW50X3JkW0RBVEFdID0gVFJVRTsKICAgICAgICAgICAgICAgICAgIHBvbGxfY2xpZW50X3dyW0RBVEFdID0gVFJVRTsKICAgICAgICAgICAgICAgICAgIHBvbGxfc2VydmVyX3JkW0RBVEFdID0gVFJVRTsKQEAgLTE4NzQsNyArMTg4MCw3IEBACiAKICAgd2hpbGUoIXJlcS0+ZG9uZV9wcm9jZXNzaW5nKSB7CiAgICAgaW50IHJjID0gZ2V0X3JlcXVlc3QobXNnc29jaywgcmVxKTsKLSAgICBpZiAocmMgPD0gMCkgeworICAgIGlmKHJjIDw9IDApIHsKICAgICAgIC8qIE5vdGhpbmcgZnVydGhlciB0byByZWFkIG5vdyAocG9zc2libHkgYmVjYXVzZSB0aGUgc29ja2V0IHdhcyBjbG9zZWQgKi8KICAgICAgIHJldHVybiByYzsKICAgICB9CkBAIC0yMTUzLDcgKzIxNTksNyBAQAogICAgICAgLyogc29ja2V0IHNlcnZlciBpcyBub3QgYWxpdmUsIG5vdyBjaGVjayBpZiBpdCB3YXMgYWN0dWFsbHkgYSBzb2NrZXQuCiAgICAgICAgKiBTeXN0ZW1zIHdoaWNoIGhhdmUgVW5peCBzb2NrZXRzIHdpbGwgYWxzbyBoYXZlIGxzdGF0ICovCiAgICAgICByYyA9IGxzdGF0KHVuaXhfc29ja2V0LCAmc3RhdGJ1Zik7Ci0gICAgICBpZiAoMCAhPSByYykgeworICAgICAgaWYoMCAhPSByYykgewogICAgICAgICBsb2dtc2coIkVycm9yIGJpbmRpbmcgc29ja2V0LCBmYWlsZWQgdG8gc3RhdCAlczogKCVkKSAlcyIsCiAgICAgICAgICAgICAgICB1bml4X3NvY2tldCwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIGdvdG8gc3dzX2NsZWFudXA7CkBAIC0yMjIzLDggKzIyMjksOCBAQAogICAgIGN1cmxfc29ja2V0X3QgbWF4ZmQgPSAoY3VybF9zb2NrZXRfdCktMTsKIAogICAgIC8qIENsZWFyIG91dCBjbG9zZWQgc29ja2V0cyAqLwotICAgIGZvciAoc29ja2V0X2lkeCA9IG51bV9zb2NrZXRzIC0gMTsgc29ja2V0X2lkeCA+PSAxOyAtLXNvY2tldF9pZHgpIHsKLSAgICAgIGlmIChDVVJMX1NPQ0tFVF9CQUQgPT0gYWxsX3NvY2tldHNbc29ja2V0X2lkeF0pIHsKKyAgICBmb3Ioc29ja2V0X2lkeCA9IG51bV9zb2NrZXRzIC0gMTsgc29ja2V0X2lkeCA+PSAxOyAtLXNvY2tldF9pZHgpIHsKKyAgICAgIGlmKENVUkxfU09DS0VUX0JBRCA9PSBhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSkgewogICAgICAgICBjaGFyKiBkc3QgPSAoY2hhciAqKSAoYWxsX3NvY2tldHMgKyBzb2NrZXRfaWR4KTsKICAgICAgICAgY2hhciogc3JjID0gKGNoYXIgKikgKGFsbF9zb2NrZXRzICsgc29ja2V0X2lkeCArIDEpOwogICAgICAgICBjaGFyKiBlbmQgPSAoY2hhciAqKSAoYWxsX3NvY2tldHMgKyBudW1fc29ja2V0cyk7CkBAIC0yMjQwLDcgKzIyNDYsNyBAQAogICAgIEZEX1pFUk8oJmlucHV0KTsKICAgICBGRF9aRVJPKCZvdXRwdXQpOwogCi0gICAgZm9yIChzb2NrZXRfaWR4ID0gMDsgc29ja2V0X2lkeCA8IG51bV9zb2NrZXRzOyArK3NvY2tldF9pZHgpIHsKKyAgICBmb3Ioc29ja2V0X2lkeCA9IDA7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KSB7CiAgICAgICAvKiBMaXN0ZW4gb24gYWxsIHNvY2tldHMgKi8KICAgICAgIEZEX1NFVChhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSwgJmlucHV0KTsKICAgICAgIGlmKGFsbF9zb2NrZXRzW3NvY2tldF9pZHhdID4gbWF4ZmQpCkBAIC0yMjUxLDcgKzIyNTcsNyBAQAogICAgICAgZ290byBzd3NfY2xlYW51cDsKIAogICAgIHJjID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLCAmaW5wdXQsICZvdXRwdXQsIE5VTEwsICZ0aW1lb3V0KTsKLSAgICBpZiAocmMgPCAwKSB7CisgICAgaWYocmMgPCAwKSB7CiAgICAgICBlcnJvciA9IFNPQ0tFUlJOTzsKICAgICAgIGxvZ21zZygic2VsZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICglZCkgJXMiLAogICAgICAgICAgICAgIGVycm9yLCBzdHJlcnJvcihlcnJvcikpOwpAQCAtMjI2MSwyNiArMjI2NywyNiBAQAogICAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICAgIGdvdG8gc3dzX2NsZWFudXA7CiAKLSAgICBpZiAocmMgPT0gMCkgeworICAgIGlmKHJjID09IDApIHsKICAgICAgIC8qIFRpbWVkIG91dCAtIHRyeSBhZ2FpbiovCiAgICAgICBjb250aW51ZTsKICAgICB9CiAKICAgICAvKiBDaGVjayBpZiB0aGUgbGlzdGVuaW5nIHNvY2tldCBpcyByZWFkeSB0byBhY2NlcHQgKi8KLSAgICBpZiAoRkRfSVNTRVQoYWxsX3NvY2tldHNbMF0sICZpbnB1dCkpIHsKKyAgICBpZihGRF9JU1NFVChhbGxfc29ja2V0c1swXSwgJmlucHV0KSkgewogICAgICAgLyogU2VydmljZSBhbGwgcXVldWVkIGNvbm5lY3Rpb25zICovCiAgICAgICBjdXJsX3NvY2tldF90IG1zZ3NvY2s7CiAgICAgICBkbyB7CiAgICAgICAgIG1zZ3NvY2sgPSBhY2NlcHRfY29ubmVjdGlvbihzb2NrKTsKICAgICAgICAgbG9nbXNnKCJhY2NlcHRfY29ubmVjdGlvbiAlZCByZXR1cm5lZCAlZCIsIHNvY2ssIG1zZ3NvY2spOwotICAgICAgICBpZiAoQ1VSTF9TT0NLRVRfQkFEID09IG1zZ3NvY2spCisgICAgICAgIGlmKENVUkxfU09DS0VUX0JBRCA9PSBtc2dzb2NrKQogICAgICAgICAgIGdvdG8gc3dzX2NsZWFudXA7Ci0gICAgICB9IHdoaWxlIChtc2dzb2NrID4gMCk7CisgICAgICB9IHdoaWxlKG1zZ3NvY2sgPiAwKTsKICAgICB9CiAKICAgICAvKiBTZXJ2aWNlIGFsbCBjb25uZWN0aW9ucyB0aGF0IGFyZSByZWFkeSAqLwotICAgIGZvciAoc29ja2V0X2lkeCA9IDE7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KSB7Ci0gICAgICBpZiAoRkRfSVNTRVQoYWxsX3NvY2tldHNbc29ja2V0X2lkeF0sICZpbnB1dCkpIHsKKyAgICBmb3Ioc29ja2V0X2lkeCA9IDE7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KSB7CisgICAgICBpZihGRF9JU1NFVChhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSwgJmlucHV0KSkgewogICAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgICAgZ290byBzd3NfY2xlYW51cDsKIApAQCAtMjI5MSw3ICsyMjk3LDcgQEAKICAgICAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgICAgICBnb3RvIHN3c19jbGVhbnVwOwogCi0gICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgIGlmKHJjIDwgMCkgewogICAgICAgICAgICAgbG9nbXNnKCI9PT09PiBDbGllbnQgZGlzY29ubmVjdCAlZCIsIHJlcS5jb25ubW9uKTsKIAogICAgICAgICAgICAgaWYocmVxLmNvbm5tb24pIHsKQEAgLTIzMTUsMTQgKzIzMjEsMTQgQEAKICAgICAgICAgICAgIGlmKCFzZXJ2ZXJsb2dzbG9ja2VkKQogICAgICAgICAgICAgICBjbGVhcl9hZHZpc29yX3JlYWRfbG9jayhTRVJWRVJMT0dTX0xPQ0spOwogCi0gICAgICAgICAgICBpZiAocmVxLnRlc3RubyA9PSBET0NOVU1CRVJfUVVJVCkKKyAgICAgICAgICAgIGlmKHJlcS50ZXN0bm8gPT0gRE9DTlVNQkVSX1FVSVQpCiAgICAgICAgICAgICAgIGdvdG8gc3dzX2NsZWFudXA7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgLyogUmVzZXQgdGhlIHJlcXVlc3QsIHVubGVzcyB3ZSdyZSBzdGlsbCBpbiB0aGUgbWlkZGxlIG9mIHJlYWRpbmcgKi8KLSAgICAgICAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgICBpZihyYyAhPSAwKQogICAgICAgICAgICAgaW5pdF9odHRwcmVxdWVzdCgmcmVxKTsKLSAgICAgICAgfSB3aGlsZSAocmMgPiAwKTsKKyAgICAgICAgfSB3aGlsZShyYyA+IDApOwogICAgICAgfQogICAgIH0KIApAQCAtMjMzMiw3ICsyMzM4LDcgQEAKIAogc3dzX2NsZWFudXA6CiAKLSAgZm9yIChzb2NrZXRfaWR4ID0gMTsgc29ja2V0X2lkeCA8IG51bV9zb2NrZXRzOyArK3NvY2tldF9pZHgpCisgIGZvcihzb2NrZXRfaWR4ID0gMTsgc29ja2V0X2lkeCA8IG51bV9zb2NrZXRzOyArK3NvY2tldF9pZHgpCiAgICAgaWYoKGFsbF9zb2NrZXRzW3NvY2tldF9pZHhdICE9IHNvY2spICYmCiAgICAgIChhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSAhPSBDVVJMX1NPQ0tFVF9CQUQpKQogICAgICAgc2Nsb3NlKGFsbF9zb2NrZXRzW3NvY2tldF9pZHhdKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci90ZXN0cGFydC5jIGIvdGVzdHMvc2VydmVyL3Rlc3RwYXJ0LmMKaW5kZXggOTEyMDk2Zi4uZjNhNzBjNyAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3Rlc3RwYXJ0LmMKKysrIGIvdGVzdHMvc2VydmVyL3Rlc3RwYXJ0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MSw3ICs0MSw3IEBACiAgIGVsc2UgewogICAgIHJjID0gZ2V0cGFydCgmcGFydCwgJnBhcnRsZW4sIGFyZ3ZbMV0sIGFyZ3ZbMl0sIHN0ZGluKTsKICAgICBpZihyYykKLSAgICAgIHJldHVybihyYyk7CisgICAgICByZXR1cm4gcmM7CiAgICAgZm9yKGkgPSAwOyBpIDwgcGFydGxlbjsgaSsrKQogICAgICAgcHJpbnRmKCIlYyIsIHBhcnRbaV0pOwogICAgIGZyZWUocGFydCk7CmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvdGZ0cC5oIGIvdGVzdHMvc2VydmVyL3RmdHAuaAppbmRleCAwNjUwZWZlLi4zY2RkNmU2IDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvdGZ0cC5oCisrKyBiL3Rlc3RzL3NlcnZlci90ZnRwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvdGZ0cGQuYyBiL3Rlc3RzL3NlcnZlci90ZnRwZC5jCmluZGV4IGNlZjEyOWYuLmFmYzA4ODQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci90ZnRwZC5jCisrKyBiL3Rlc3RzL3NlcnZlci90ZnRwZC5jCkBAIC00NTksNyArNDU5LDcgQEAKICAgY3VycmVudCA9ICFjdXJyZW50OyAgICAgICAgICAgICAvKiAiaW5jciIgY3VycmVudCAqLwogCiAgIGIgPSAmYmZzW2N1cnJlbnRdOyAgICAgICAgICAgICAgLyogbG9vayBhdCBuZXcgYnVmZmVyICovCi0gIGlmIChiLT5jb3VudGVyID09IEJGX0ZSRUUpICAgICAgLyogaWYgaXQncyBlbXB0eSAqLworICBpZihiLT5jb3VudGVyID09IEJGX0ZSRUUpICAgICAgLyogaWYgaXQncyBlbXB0eSAqLwogICAgIHJlYWRfYWhlYWQodGVzdCwgY29udmVydCk7ICAgIC8qIGZpbGwgaXQgKi8KIAogICAqZHBwID0gJmItPmJ1Zi5oZHI7ICAgICAgICAgICAgIC8qIHNldCBjYWxsZXIncyBwdHIgKi8KQEAgLTQ2OCw3ICs0NjgsNyBAQAogCiAvKgogICogZmlsbCB0aGUgaW5wdXQgYnVmZmVyLCBkb2luZyBhc2NpaSBjb252ZXJzaW9ucyBpZiByZXF1ZXN0ZWQKLSAqIGNvbnZlcnNpb25zIGFyZSAgbGYgLT4gY3IsbGYgIGFuZCBjciAtPiBjciwgbnVsCisgKiBjb252ZXJzaW9ucyBhcmUgIGxmIC0+IGNyLCBsZiAgYW5kIGNyIC0+IGNyLCBudWwKICAqLwogc3RhdGljIHZvaWQgcmVhZF9haGVhZChzdHJ1Y3QgdGVzdGNhc2UgKnRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb252ZXJ0IC8qIGlmIHRydWUsIGNvbnZlcnQgdG8gYXNjaWkgKi8pCkBAIC00ODAsMTMgKzQ4MCwxMyBAQAogICBzdHJ1Y3QgdGZ0cGhkciAqZHA7CiAKICAgYiA9ICZiZnNbbmV4dG9uZV07ICAgICAgICAgICAgICAvKiBsb29rIGF0ICJuZXh0IiBidWZmZXIgKi8KLSAgaWYgKGItPmNvdW50ZXIgIT0gQkZfRlJFRSkgICAgICAvKiBub3AgaWYgbm90IGZyZWUgKi8KKyAgaWYoYi0+Y291bnRlciAhPSBCRl9GUkVFKSAgICAgIC8qIG5vcCBpZiBub3QgZnJlZSAqLwogICAgIHJldHVybjsKICAgbmV4dG9uZSA9ICFuZXh0b25lOyAgICAgICAgICAgICAvKiAiaW5jciIgbmV4dCBidWZmZXIgcHRyICovCiAKICAgZHAgPSAmYi0+YnVmLmhkcjsKIAotICBpZiAoY29udmVydCA9PSAwKSB7CisgIGlmKGNvbnZlcnQgPT0gMCkgewogICAgIC8qIFRoZSBmb3JtZXIgZmlsZSByZWFkaW5nIGNvZGUgZGlkIHRoaXM6CiAgICAgICAgYi0+Y291bnRlciA9IHJlYWQoZmlsZW5vKGZpbGUpLCBkcC0+dGhfZGF0YSwgU0VHU0laRSk7ICovCiAgICAgc2l6ZV90IGNvcHlfbiA9IE1JTihTRUdTSVpFLCB0ZXN0LT5yY291bnQpOwpAQCAtNTAwLDkgKzUwMCw5IEBACiAgIH0KIAogICBwID0gZHAtPnRoX2RhdGE7Ci0gIGZvciAoaSA9IDAgOyBpIDwgU0VHU0laRTsgaSsrKSB7Ci0gICAgaWYgKG5ld2xpbmUpIHsKLSAgICAgIGlmIChwcmV2Y2hhciA9PSAnXG4nKQorICBmb3IoaSA9IDAgOyBpIDwgU0VHU0laRTsgaSsrKSB7CisgICAgaWYobmV3bGluZSkgeworICAgICAgaWYocHJldmNoYXIgPT0gJ1xuJykKICAgICAgICAgYyA9ICdcbic7ICAgICAgIC8qIGxmIHRvIGNyLGxmICovCiAgICAgICBlbHNlCiAgICAgICAgIGMgPSAnXDAnOyAgICAgICAvKiBjciB0byBjcixudWwgKi8KQEAgLTUxNiw3ICs1MTYsNyBAQAogICAgICAgfQogICAgICAgZWxzZQogICAgICAgICBicmVhazsKLSAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnXHInKSB7CisgICAgICBpZihjID09ICdcbicgfHwgYyA9PSAnXHInKSB7CiAgICAgICAgIHByZXZjaGFyID0gYzsKICAgICAgICAgYyA9ICdccic7CiAgICAgICAgIG5ld2xpbmUgPSAxOwpAQCAtNTM1LDcgKzUzNSw3IEBACiB7CiAgIGJmc1tjdXJyZW50XS5jb3VudGVyID0gY3Q7ICAgICAgLyogc2V0IHNpemUgb2YgZGF0YSB0byB3cml0ZSAqLwogICBjdXJyZW50ID0gIWN1cnJlbnQ7ICAgICAgICAgICAgIC8qIHN3aXRjaCB0byBvdGhlciBidWZmZXIgKi8KLSAgaWYgKGJmc1tjdXJyZW50XS5jb3VudGVyICE9IEJGX0ZSRUUpICAgICAvKiBpZiBub3QgZnJlZSAqLworICBpZihiZnNbY3VycmVudF0uY291bnRlciAhPSBCRl9GUkVFKSAgICAgLyogaWYgbm90IGZyZWUgKi8KICAgICB3cml0ZV9iZWhpbmQodGVzdCwgY29udmVydCk7ICAgICAvKiBmbHVzaCBpdCAqLwogICBiZnNbY3VycmVudF0uY291bnRlciA9IEJGX0FMTE9DOyAgICAgICAgLyogbWFyayBhcyBhbGxvYydkICovCiAgICpkcHAgPSAgJmJmc1tjdXJyZW50XS5idWYuaGRyOwpAQCAtNTQ0LDcgKzU0NCw3IEBACiAKIC8qCiAgKiBPdXRwdXQgYSBidWZmZXIgdG8gYSBmaWxlLCBjb252ZXJ0aW5nIGZyb20gbmV0YXNjaWkgaWYgcmVxdWVzdGVkLgotICogQ1IsTlVMIC0+IENSICBhbmQgQ1IsTEYgPT4gTEYuCisgKiBDUiwgTlVMIC0+IENSICBhbmQgQ1IsIExGID0+IExGLgogICogTm90ZSBzcGVjIGlzIHVuZGVmaW5lZCBpZiB3ZSBnZXQgQ1IgYXMgbGFzdCBieXRlIG9mIGZpbGUgb3IgYQogICogQ1IgZm9sbG93ZWQgYnkgYW55dGhpbmcgZWxzZS4gIEluIHRoaXMgY2FzZSB3ZSBsZWF2ZSBpdCBhbG9uZS4KICAqLwpAQCAtNTU5LDEzICs1NTksMTcgQEAKICAgc3RydWN0IHRmdHBoZHIgKmRwOwogCiAgIGIgPSAmYmZzW25leHRvbmVdOwotICBpZiAoYi0+Y291bnRlciA8IC0xKSAgICAgICAgICAgIC8qIGFueXRoaW5nIHRvIGZsdXNoPyAqLworICBpZihiLT5jb3VudGVyIDwgLTEpICAgICAgICAgICAgLyogYW55dGhpbmcgdG8gZmx1c2g/ICovCiAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgLyoganVzdCBub3AgaWYgbm90aGluZyB0byBkbyAqLwogCiAgIGlmKCF0ZXN0LT5vZmlsZSkgewogICAgIGNoYXIgb3V0ZmlsZVsyNTZdOwogICAgIHNucHJpbnRmKG91dGZpbGUsIHNpemVvZihvdXRmaWxlKSwgImxvZy91cGxvYWQuJWxkIiwgdGVzdC0+dGVzdG5vKTsKKyNpZmRlZiBXSU4zMgorICAgIHRlc3QtPm9maWxlPW9wZW4ob3V0ZmlsZSwgT19DUkVBVHxPX1JEV1J8T19CSU5BUlksIDA3NzcpOworI2Vsc2UKICAgICB0ZXN0LT5vZmlsZT1vcGVuKG91dGZpbGUsIE9fQ1JFQVR8T19SRFdSLCAwNzc3KTsKKyNlbmRpZgogICAgIGlmKHRlc3QtPm9maWxlID09IC0xKSB7CiAgICAgICBsb2dtc2coIkNvdWxkbid0IGNyZWF0ZSBhbmQvb3Igb3BlbiBmaWxlICVzIGZvciB1cGxvYWQhIiwgb3V0ZmlsZSk7CiAgICAgICByZXR1cm4gLTE7IC8qIGZhaWx1cmUhICovCkBAIC01NzgsMjEgKzU4MiwyMSBAQAogICBuZXh0b25lID0gIW5leHRvbmU7ICAgICAgICAgICAgIC8qIGluY3IgZm9yIG5leHQgdGltZSAqLwogICB3cml0ZWJ1ZiA9IGRwLT50aF9kYXRhOwogCi0gIGlmIChjb3VudCA8PSAwKQorICBpZihjb3VudCA8PSAwKQogICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgIC8qIG5hayBsb2dpYz8gKi8KIAotICBpZiAoY29udmVydCA9PSAwKQorICBpZihjb252ZXJ0ID09IDApCiAgICAgcmV0dXJuIHdyaXRlKHRlc3QtPm9maWxlLCB3cml0ZWJ1ZiwgY291bnQpOwogCiAgIHAgPSB3cml0ZWJ1ZjsKICAgY3QgPSBjb3VudDsKLSAgd2hpbGUgKGN0LS0pIHsgICAgICAgICAgICAgICAgICAvKiBsb29wIG92ZXIgdGhlIGJ1ZmZlciAqLworICB3aGlsZShjdC0tKSB7ICAgICAgICAgICAgICAgICAgIC8qIGxvb3Agb3ZlciB0aGUgYnVmZmVyICovCiAgICAgYyA9ICpwKys7ICAgICAgICAgICAgICAgICAgICAgLyogcGljayB1cCBhIGNoYXJhY3RlciAqLwotICAgIGlmIChwcmV2Y2hhciA9PSAnXHInKSB7ICAgICAgIC8qIGlmIHByZXYgY2hhciB3YXMgY3IgKi8KLSAgICAgIGlmIChjID09ICdcbicpICAgICAgICAgICAgICAvKiBpZiBoYXZlIGNyLGxmIHRoZW4ganVzdCAqLworICAgIGlmKHByZXZjaGFyID09ICdccicpIHsgICAgICAgIC8qIGlmIHByZXYgY2hhciB3YXMgY3IgKi8KKyAgICAgIGlmKGMgPT0gJ1xuJykgICAgICAgICAgICAgICAvKiBpZiBoYXZlIGNyLGxmIHRoZW4ganVzdCAqLwogICAgICAgICBsc2Vlayh0ZXN0LT5vZmlsZSwgLTEsIFNFRUtfQ1VSKTsgLyogc21hc2ggbGYgb24gdG9wIG9mIHRoZSBjciAqLwogICAgICAgZWxzZQotICAgICAgICBpZiAoYyA9PSAnXDAnKSAgICAgICAgICAgIC8qIGlmIGhhdmUgY3IsbnVsIHRoZW4gKi8KKyAgICAgICAgaWYoYyA9PSAnXDAnKSAgICAgICAgICAgICAvKiBpZiBoYXZlIGNyLG51bCB0aGVuICovCiAgICAgICAgICAgZ290byBza2lwaXQ7ICAgICAgICAgICAgLyoganVzdCBza2lwIG92ZXIgdGhlIHB1dGMgKi8KICAgICAgIC8qIGVsc2UganVzdCBmYWxsIHRocm91Z2ggYW5kIGFsbG93IGl0ICovCiAgICAgfQpAQCAtNjMwLDEzICs2MzQsMTMgQEAKICAgc3J2cl9zb2NrYWRkcl91bmlvbl90IGZyb21hZGRyOwogICBjdXJsX3NvY2tsZW5fdCBmcm9tYWRkcmxlbjsKIAotICBmb3IgKDs7KSB7CisgIGZvcig7OykgewogI2lmIGRlZmluZWQoSEFWRV9JT0NUTFNPQ0tFVCkKICAgICAodm9pZCkgaW9jdGxzb2NrZXQoZiwgRklPTlJFQUQsICZpKTsKICNlbHNlCiAgICAgKHZvaWQpIGlvY3RsKGYsIEZJT05SRUFELCAmaSk7CiAjZW5kaWYKLSAgICBpZiAoaSkgeworICAgIGlmKGkpIHsKICAgICAgIGorKzsKICNpZmRlZiBFTkFCTEVfSVBWNgogICAgICAgaWYoIXVzZV9pcHY2KQpAQCAtNzY5LDcgKzc3Myw3IEBACiAgIH0KIAogICBmbGFnID0gMTsKLSAgaWYgKDAgIT0gc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsCisgIGlmKDAgIT0gc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsCiAgICAgICAgICAgICAodm9pZCAqKSZmbGFnLCBzaXplb2YoZmxhZykpKSB7CiAgICAgZXJyb3IgPSBTT0NLRVJSTk87CiAgICAgbG9nbXNnKCJzZXRzb2Nrb3B0KFNPX1JFVVNFQUREUikgZmFpbGVkIHdpdGggZXJyb3I6ICglZCkgJXMiLApAQCAtODEyLDcgKzgxNiw3IEBACiAKICAgbG9nbXNnKCJSdW5uaW5nICVzIHZlcnNpb24gb24gcG9ydCBVRFAvJWQiLCBpcHZfaW51c2UsIChpbnQpcG9ydCk7CiAKLSAgZm9yICg7OykgeworICBmb3IoOzspIHsKICAgICBmcm9tbGVuID0gc2l6ZW9mKGZyb20pOwogI2lmZGVmIEVOQUJMRV9JUFY2CiAgICAgaWYoIXVzZV9pcHY2KQpAQCAtODI2LDcgKzgzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcm9tLnNhLCAmZnJvbWxlbik7CiAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgYnJlYWs7Ci0gICAgaWYgKG4gPCAwKSB7CisgICAgaWYobiA8IDApIHsKICAgICAgIGxvZ21zZygicmVjdmZyb20iKTsKICAgICAgIHJlc3VsdCA9IDM7CiAgICAgICBicmVhazsKQEAgLTg3Miw5ICs4NzYsOSBAQAogCiAgICAgdHAgPSAmYnVmLmhkcjsKICAgICB0cC0+dGhfb3Bjb2RlID0gbnRvaHModHAtPnRoX29wY29kZSk7Ci0gICAgaWYgKHRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX1JSUSB8fCB0cC0+dGhfb3Bjb2RlID09IG9wY29kZV9XUlEpIHsKKyAgICBpZih0cC0+dGhfb3Bjb2RlID09IG9wY29kZV9SUlEgfHwgdHAtPnRoX29wY29kZSA9PSBvcGNvZGVfV1JRKSB7CiAgICAgICBtZW1zZXQoJnRlc3QsIDAsIHNpemVvZih0ZXN0KSk7Ci0gICAgICBpZiAoZG9fdGZ0cCgmdGVzdCwgdHAsIG4pIDwgMCkKKyAgICAgIGlmKGRvX3RmdHAoJnRlc3QsIHRwLCBuKSA8IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgZnJlZSh0ZXN0LmJ1ZmZlcik7CiAgICAgfQpAQCAtOTUxLDYgKzk1NSw4IEBACiAjaWZkZWYgVVNFX1dJTlNPQ0sKICAgRFdPUkQgcmVjdnRpbWVvdXQsIHJlY3Z0aW1lb3V0YmFrOwogI2VuZGlmCisgIGNoYXIgKm9wdGlvbiA9IChjaGFyICopIm1vZGUiOyAvKiBtb2RlIGlzIGltcGxpY2l0ICovCisgIGludCB0b2dnbGUgPSAxOwogCiAgIC8qIE9wZW4gcmVxdWVzdCBkdW1wIGZpbGUuICovCiAgIHNlcnZlciA9IGZvcGVuKFJFUVVFU1RfRFVNUCwgImFiIik7CkBAIC05NjYsNDIgKzk3Miw2NyBAQAogCiAgIGNwID0gKGNoYXIgKikmdHAtPnRoX3N0dWZmOwogICBmaWxlbmFtZSA9IGNwOwotYWdhaW46Ci0gIHdoaWxlIChjcCA8ICZidWYuc3RvcmFnZVtzaXplXSkgewotICAgIGlmICgqY3AgPT0gJ1wwJykKKyAgZG8geworICAgIGJvb2wgZW5kb2ZpdCA9IHRydWU7CisgICAgd2hpbGUoY3AgPCAmYnVmLnN0b3JhZ2Vbc2l6ZV0pIHsKKyAgICAgIGlmKCpjcCA9PSAnXDAnKSB7CisgICAgICAgIGVuZG9maXQgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjcCsrOworICAgIH0KKyAgICBpZihlbmRvZml0KQorICAgICAgLyogbm8gbW9yZSBvcHRpb25zICovCiAgICAgICBicmVhazsKLSAgICBjcCsrOwotICB9Ci0gIGlmICgqY3ApIHsKKworICAgIC8qIGJlZm9yZSBpbmNyZWFzaW5nIHBvaW50ZXIsIG1ha2Ugc3VyZSBpdCBpcyBzdGlsbCB3aXRoaW4gdGhlIGxlZ2FsCisgICAgICAgc3BhY2UgKi8KKyAgICBpZigoY3ArMSkgPCAmYnVmLnN0b3JhZ2Vbc2l6ZV0pIHsKKyAgICAgICsrY3A7CisgICAgICBpZihmaXJzdCkgeworICAgICAgICAvKiBzdG9yZSB0aGUgbW9kZSBzaW5jZSB3ZSBuZWVkIGl0IGxhdGVyICovCisgICAgICAgIG1vZGUgPSBjcDsKKyAgICAgICAgZmlyc3QgPSAwOworICAgICAgfQorICAgICAgaWYodG9nZ2xlKQorICAgICAgICAvKiBuYW1lL3ZhbHVlIHBhaXI6ICovCisgICAgICAgIGZwcmludGYoc2VydmVyLCAiJXM6ICVzXG4iLCBvcHRpb24sIGNwKTsKKyAgICAgIGVsc2UgeworICAgICAgICAvKiBzdG9yZSB0aGUgbmFtZSBwb2ludGVyICovCisgICAgICAgIG9wdGlvbiA9IGNwOworICAgICAgfQorICAgICAgdG9nZ2xlIF49IDE7CisgICAgfQorICAgIGVsc2UKKyAgICAgIC8qIE5vIG1vcmUgb3B0aW9ucyAqLworICAgICAgYnJlYWs7CisgIH0gd2hpbGUoMSk7CisKKyAgaWYoKmNwKSB7CiAgICAgbmFrKEVCQURPUCk7CiAgICAgZmNsb3NlKHNlcnZlcik7CiAgICAgcmV0dXJuIDM7CiAgIH0KLSAgaWYgKGZpcnN0KSB7Ci0gICAgbW9kZSA9ICsrY3A7Ci0gICAgZmlyc3QgPSAwOwotICAgIGdvdG8gYWdhaW47Ci0gIH0KKwogICAvKiBzdG9yZSBpbnB1dCBwcm90b2NvbCAqLwogICBmcHJpbnRmKHNlcnZlciwgImZpbGVuYW1lOiAlc1xuIiwgZmlsZW5hbWUpOwogCi0gIGZvciAoY3AgPSBtb2RlOyBjcCAmJiAqY3A7IGNwKyspCisgIGZvcihjcCA9IG1vZGU7IGNwICYmICpjcDsgY3ArKykKICAgICBpZihJU1VQUEVSKCpjcCkpCiAgICAgICAqY3AgPSAoY2hhcil0b2xvd2VyKChpbnQpKmNwKTsKIAogICAvKiBzdG9yZSBpbnB1dCBwcm90b2NvbCAqLwotICBmcHJpbnRmKHNlcnZlciwgIm1vZGU6ICVzXG4iLCBtb2RlKTsKICAgZmNsb3NlKHNlcnZlcik7CiAKLSAgZm9yIChwZiA9IGZvcm1hdGE7IHBmLT5mX21vZGU7IHBmKyspCi0gICAgaWYgKHN0cmNtcChwZi0+Zl9tb2RlLCBtb2RlKSA9PSAwKQorICBmb3IocGYgPSBmb3JtYXRhOyBwZi0+Zl9tb2RlOyBwZisrKQorICAgIGlmKHN0cmNtcChwZi0+Zl9tb2RlLCBtb2RlKSA9PSAwKQogICAgICAgYnJlYWs7Ci0gIGlmICghcGYtPmZfbW9kZSkgeworICBpZighcGYtPmZfbW9kZSkgewogICAgIG5hayhFQkFET1ApOwogICAgIHJldHVybiAyOwogICB9CiAgIGVjb2RlID0gdmFsaWRhdGVfYWNjZXNzKHRlc3QsIGZpbGVuYW1lLCB0cC0+dGhfb3Bjb2RlKTsKLSAgaWYgKGVjb2RlKSB7CisgIGlmKGVjb2RlKSB7CiAgICAgbmFrKGVjb2RlKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtMTAxNSw3ICsxMDQ2LDcgQEAKICAgICAgICAgICAgICAoY29uc3QgY2hhciopJnJlY3Z0aW1lb3V0LCBzaXplb2YocmVjdnRpbWVvdXQpKTsKICNlbmRpZgogCi0gIGlmICh0cC0+dGhfb3Bjb2RlID09IG9wY29kZV9XUlEpCisgIGlmKHRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX1dSUSkKICAgICByZWN2dGZ0cCh0ZXN0LCBwZik7CiAgIGVsc2UKICAgICBzZW5kdGZ0cCh0ZXN0LCBwZik7CkBAIC0xMTEwLDcgKzExNDEsOCBAQAogCiAgIGlmKCFzdHJuY21wKCJ2ZXJpZmllZHNlcnZlciIsIGZpbGVuYW1lLCAxNCkpIHsKICAgICBjaGFyIHdlYXJlWzEyOF07Ci0gICAgc2l6ZV90IGNvdW50ID0gc3ByaW50Zih3ZWFyZSwgIldFIFJPT0xaOiAlbGRcclxuIiwgKGxvbmcpZ2V0cGlkKCkpOworICAgIHNpemVfdCBjb3VudCA9IHNucHJpbnRmKHdlYXJlLCBzaXplb2Yod2VhcmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXRSBST09MWjogJWxkXHJcbiIsIChsb25nKWdldHBpZCgpKTsKIAogICAgIGxvZ21zZygiQXJlLXdlLWZyaWVuZGx5IHF1ZXN0aW9uIHJlY2VpdmVkIik7CiAgICAgdGVzdC0+YnVmZmVyID0gc3RyZHVwKHdlYXJlKTsKQEAgLTExNTIsNyArMTE4NCw3IEBACiAgICAgZmlsZSA9IHRlc3QyZmlsZSh0ZXN0bm8pOwogCiAgICAgaWYoMCAhPSBwYXJ0bm8pCi0gICAgICBzcHJpbnRmKHBhcnRidWYsICJkYXRhJWxkIiwgcGFydG5vKTsKKyAgICAgIHNucHJpbnRmKHBhcnRidWYsIHNpemVvZihwYXJ0YnVmKSwgImRhdGElbGQiLCBwYXJ0bm8pOwogCiAgICAgaWYoZmlsZSkgewogICAgICAgRklMRSAqc3RyZWFtPWZvcGVuKGZpbGUsICJyYiIpOwpAQCAtMTIxMyw3ICsxMjQ1LDcgQEAKICAgc2FwID0gJmFja2J1Zi5oZHI7CiAgIGRvIHsKICAgICBzaXplID0gcmVhZGl0KHRlc3QsICZzZHAsIHBmLT5mX2NvbnZlcnQpOwotICAgIGlmIChzaXplIDwgMCkgeworICAgIGlmKHNpemUgPCAwKSB7CiAgICAgICBuYWsoZXJybm8gKyAxMDApOwogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMzAsMTIgKzEyNjIsMTIgQEAKICAgICB9CiAKICAgICBzZW5kX2RhdGE6Ci0gICAgaWYgKHN3cml0ZShwZWVyLCBzZHAsIHNpemUgKyA0KSAhPSBzaXplICsgNCkgeworICAgIGlmKHN3cml0ZShwZWVyLCBzZHAsIHNpemUgKyA0KSAhPSBzaXplICsgNCkgewogICAgICAgbG9nbXNnKCJ3cml0ZSIpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgICByZWFkX2FoZWFkKHRlc3QsIHBmLT5mX2NvbnZlcnQpOwotICAgIGZvciAoIDsgOyApIHsKKyAgICBmb3IoOzspIHsKICNpZmRlZiBIQVZFX0FMQVJNCiAgICAgICBhbGFybShyZXhtdHZhbCk7ICAgICAgICAvKiByZWFkIHRoZSBhY2sgKi8KICNlbmRpZgpAQCAtMTI0NSwzMiArMTI3NywzMiBAQAogI2VuZGlmCiAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgIHJldHVybjsKLSAgICAgIGlmIChuIDwgMCkgeworICAgICAgaWYobiA8IDApIHsKICAgICAgICAgbG9nbXNnKCJyZWFkOiBmYWlsIik7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIHNhcC0+dGhfb3Bjb2RlID0gbnRvaHMoKHVuc2lnbmVkIHNob3J0KXNhcC0+dGhfb3Bjb2RlKTsKICAgICAgIHNhcC0+dGhfYmxvY2sgPSBudG9ocyhzYXAtPnRoX2Jsb2NrKTsKIAotICAgICAgaWYgKHNhcC0+dGhfb3Bjb2RlID09IG9wY29kZV9FUlJPUikgeworICAgICAgaWYoc2FwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0VSUk9SKSB7CiAgICAgICAgIGxvZ21zZygiZ290IEVSUk9SIik7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KIAotICAgICAgaWYgKHNhcC0+dGhfb3Bjb2RlID09IG9wY29kZV9BQ0spIHsKLSAgICAgICAgaWYgKHNhcC0+dGhfYmxvY2sgPT0gc2VuZGJsb2NrKSB7CisgICAgICBpZihzYXAtPnRoX29wY29kZSA9PSBvcGNvZGVfQUNLKSB7CisgICAgICAgIGlmKHNhcC0+dGhfYmxvY2sgPT0gc2VuZGJsb2NrKSB7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLyogUmUtc3luY2hyb25pemUgd2l0aCB0aGUgb3RoZXIgc2lkZSAqLwogICAgICAgICAodm9pZCkgc3luY2huZXQocGVlcik7Ci0gICAgICAgIGlmIChzYXAtPnRoX2Jsb2NrID09IChzZW5kYmxvY2stMSkpIHsKKyAgICAgICAgaWYoc2FwLT50aF9ibG9jayA9PSAoc2VuZGJsb2NrLTEpKSB7CiAgICAgICAgICAgZ290byBzZW5kX2RhdGE7CiAgICAgICAgIH0KICAgICAgIH0KIAogICAgIH0KICAgICBzZW5kYmxvY2srKzsKLSAgfSB3aGlsZSAoc2l6ZSA9PSBTRUdTSVpFKTsKKyAgfSB3aGlsZShzaXplID09IFNFR1NJWkUpOwogfQogCiAvKgpAQCAtMTI5OSwxMiArMTMzMSwxMiBAQAogICAgICh2b2lkKSBzaWdzZXRqbXAodGltZW91dGJ1ZiwgMSk7CiAjZW5kaWYKIHNlbmRfYWNrOgotICAgIGlmIChzd3JpdGUocGVlciwgJmFja2J1Zi5zdG9yYWdlWzBdLCA0KSAhPSA0KSB7CisgICAgaWYoc3dyaXRlKHBlZXIsICZhY2tidWYuc3RvcmFnZVswXSwgNCkgIT0gNCkgewogICAgICAgbG9nbXNnKCJ3cml0ZTogZmFpbFxuIik7CiAgICAgICBnb3RvIGFib3J0OwogICAgIH0KICAgICB3cml0ZV9iZWhpbmQodGVzdCwgcGYtPmZfY29udmVydCk7Ci0gICAgZm9yICggOyA7ICkgeworICAgIGZvcig7OykgewogI2lmZGVmIEhBVkVfQUxBUk0KICAgICAgIGFsYXJtKHJleG10dmFsKTsKICNlbmRpZgpAQCAtMTMxNCwzNyArMTM0NiwzOCBAQAogI2VuZGlmCiAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgIGdvdG8gYWJvcnQ7Ci0gICAgICBpZiAobiA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWxseT8gKi8KKyAgICAgIGlmKG4gPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFsbHk/ICovCiAgICAgICAgIGxvZ21zZygicmVhZDogZmFpbFxuIik7CiAgICAgICAgIGdvdG8gYWJvcnQ7CiAgICAgICB9CiAgICAgICByZHAtPnRoX29wY29kZSA9IG50b2hzKCh1bnNpZ25lZCBzaG9ydClyZHAtPnRoX29wY29kZSk7CiAgICAgICByZHAtPnRoX2Jsb2NrID0gbnRvaHMocmRwLT50aF9ibG9jayk7Ci0gICAgICBpZiAocmRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0VSUk9SKQorICAgICAgaWYocmRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0VSUk9SKQogICAgICAgICBnb3RvIGFib3J0OwotICAgICAgaWYgKHJkcC0+dGhfb3Bjb2RlID09IG9wY29kZV9EQVRBKSB7Ci0gICAgICAgIGlmIChyZHAtPnRoX2Jsb2NrID09IHJlY3ZibG9jaykgeworICAgICAgaWYocmRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0RBVEEpIHsKKyAgICAgICAgaWYocmRwLT50aF9ibG9jayA9PSByZWN2YmxvY2spIHsKICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm9ybWFsICovCiAgICAgICAgIH0KICAgICAgICAgLyogUmUtc3luY2hyb25pemUgd2l0aCB0aGUgb3RoZXIgc2lkZSAqLwogICAgICAgICAodm9pZCkgc3luY2huZXQocGVlcik7Ci0gICAgICAgIGlmIChyZHAtPnRoX2Jsb2NrID09IChyZWN2YmxvY2stMSkpCisgICAgICAgIGlmKHJkcC0+dGhfYmxvY2sgPT0gKHJlY3ZibG9jay0xKSkKICAgICAgICAgICBnb3RvIHNlbmRfYWNrOyAgICAgICAgICAgICAgICAgLyogcmV4bWl0ICovCiAgICAgICB9CiAgICAgfQogCiAgICAgc2l6ZSA9IHdyaXRlaXQodGVzdCwgJnJkcCwgKGludCkobiAtIDQpLCBwZi0+Zl9jb252ZXJ0KTsKLSAgICBpZiAoc2l6ZSAhPSAobi00KSkgeyAgICAgICAgICAgICAgICAgLyogYWhlbSAqLwotICAgICAgaWYgKHNpemUgPCAwKQorICAgIGlmKHNpemUgIT0gKG4tNCkpIHsgICAgICAgICAgICAgICAgIC8qIGFoZW0gKi8KKyAgICAgIGlmKHNpemUgPCAwKQogICAgICAgICBuYWsoZXJybm8gKyAxMDApOwogICAgICAgZWxzZQogICAgICAgICBuYWsoRU5PU1BBQ0UpOwogICAgICAgZ290byBhYm9ydDsKICAgICB9Ci0gIH0gd2hpbGUgKHNpemUgPT0gU0VHU0laRSk7CisgIH0gd2hpbGUoc2l6ZSA9PSBTRUdTSVpFKTsKICAgd3JpdGVfYmVoaW5kKHRlc3QsIHBmLT5mX2NvbnZlcnQpOwogCi0gIHJhcC0+dGhfb3Bjb2RlID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KW9wY29kZV9BQ0spOyAgLyogc2VuZCB0aGUgImZpbmFsIiBhY2sgKi8KKyAgcmFwLT50aF9vcGNvZGUgPSBodG9ucygodW5zaWduZWQgc2hvcnQpb3Bjb2RlX0FDSyk7ICAvKiBzZW5kIHRoZSAiZmluYWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNrICovCiAgIHJhcC0+dGhfYmxvY2sgPSBodG9ucyhyZWN2YmxvY2spOwogICAodm9pZCkgc3dyaXRlKHBlZXIsICZhY2tidWYuc3RvcmFnZVswXSwgNCk7CiAjaWYgZGVmaW5lZChIQVZFX0FMQVJNKSAmJiBkZWZpbmVkKFNJR0FMUk0pCkBAIC0xMzU4LDkgKzEzOTEsOSBAQAogI2VuZGlmCiAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICBnb3RvIGFib3J0OwotICBpZiAobiA+PSA0ICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIHJlYWQgc29tZSBkYXRhICovCi0gICAgICByZHAtPnRoX29wY29kZSA9PSBvcGNvZGVfREFUQSAmJiAgICAgICAgLyogYW5kIGdvdCBhIGRhdGEgYmxvY2sgKi8KLSAgICAgIHJlY3ZibG9jayA9PSByZHAtPnRoX2Jsb2NrKSB7ICAgICAgICAgICAvKiB0aGVuIG15IGxhc3QgYWNrIHdhcyBsb3N0ICovCisgIGlmKG4gPj0gNCAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiByZWFkIHNvbWUgZGF0YSAqLworICAgICByZHAtPnRoX29wY29kZSA9PSBvcGNvZGVfREFUQSAmJiAgICAgICAgLyogYW5kIGdvdCBhIGRhdGEgYmxvY2sgKi8KKyAgICAgcmVjdmJsb2NrID09IHJkcC0+dGhfYmxvY2spIHsgICAgICAgICAgIC8qIHRoZW4gbXkgbGFzdCBhY2sgd2FzIGxvc3QgKi8KICAgICAodm9pZCkgc3dyaXRlKHBlZXIsICZhY2tidWYuc3RvcmFnZVswXSwgNCk7ICAvKiByZXNlbmQgZmluYWwgYWNrICovCiAgIH0KIGFib3J0OgpAQCAtMTM4MCwxMCArMTQxMywxMCBAQAogICB0cCA9ICZidWYuaGRyOwogICB0cC0+dGhfb3Bjb2RlID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KW9wY29kZV9FUlJPUik7CiAgIHRwLT50aF9jb2RlID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KWVycm9yKTsKLSAgZm9yIChwZSA9IGVycm1zZ3M7IHBlLT5lX2NvZGUgPj0gMDsgcGUrKykKLSAgICBpZiAocGUtPmVfY29kZSA9PSBlcnJvcikKKyAgZm9yKHBlID0gZXJybXNnczsgcGUtPmVfY29kZSA+PSAwOyBwZSsrKQorICAgIGlmKHBlLT5lX2NvZGUgPT0gZXJyb3IpCiAgICAgICBicmVhazsKLSAgaWYgKHBlLT5lX2NvZGUgPCAwKSB7CisgIGlmKHBlLT5lX2NvZGUgPCAwKSB7CiAgICAgcGUtPmVfbXNnID0gc3RyZXJyb3IoZXJyb3IgLSAxMDApOwogICAgIHRwLT50aF9jb2RlID0gRVVOREVGOyAgIC8qIHNldCAndW5kZWYnIGVycm9yY29kZSAqLwogICB9CkBAIC0xMzkzLDYgKzE0MjYsNiBAQAogICAgKiByZXBvcnQgZnJvbSBnbGliYyB3aXRoIEZPUlRJRllfU09VUkNFICovCiAgIG1lbWNweSh0cC0+dGhfbXNnLCBwZS0+ZV9tc2csIGxlbmd0aCArIDEpOwogICBsZW5ndGggKz0gNTsKLSAgaWYgKHN3cml0ZShwZWVyLCAmYnVmLnN0b3JhZ2VbMF0sIGxlbmd0aCkgIT0gbGVuZ3RoKQorICBpZihzd3JpdGUocGVlciwgJmJ1Zi5zdG9yYWdlWzBdLCBsZW5ndGgpICE9IGxlbmd0aCkKICAgICBsb2dtc2coIm5hazogZmFpbFxuIik7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvdXRpbC5jIGIvdGVzdHMvc2VydmVyL3V0aWwuYwppbmRleCAwNmYzY2UxLi5kOTkzMzYzIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvdXRpbC5jCisrKyBiL3Rlc3RzL3NlcnZlci91dGlsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03NywxMSArNzcsMTEgQEAKICAgICBpZigoZGF0YVtpXSA+PSAweDIwKSAmJiAoZGF0YVtpXSA8IDB4N2YpKQogICAgICAgKm9wdHIrKyA9ICppcHRyKys7CiAgICAgZWxzZSB7Ci0gICAgICBzcHJpbnRmKG9wdHIsICIlJSUwMngiLCAqaXB0cisrKTsKKyAgICAgIHNucHJpbnRmKG9wdHIsIDQsICIlJSUwMngiLCAqaXB0cisrKTsKICAgICAgIG9wdHIrPTM7CiAgICAgfQogICB9Ci0gICpvcHRyPTA7IC8qIGluIGNhc2Ugbm8gc3ByaW50ZigpIHdhcyB1c2VkICovCisgICpvcHRyPTA7IC8qIGluIGNhc2Ugbm8gc3ByaW50ZiB3YXMgdXNlZCAqLwogCiAgIHJldHVybiBidWY7CiB9CkBAIC05OSw3ICs5OSw3IEBACiAgIHN0YXRpYyB0aW1lX3QgZXBvY2hfb2Zmc2V0OwogICBzdGF0aWMgaW50ICAgIGtub3duX29mZnNldDsKIAotICBpZiAoIXNlcnZlcmxvZ2ZpbGUpIHsKKyAgaWYoIXNlcnZlcmxvZ2ZpbGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBzZXJ2ZXJsb2dmaWxlIG5vdCBzZXRcbiIpOwogICAgIHJldHVybjsKICAgfQpAQCAtMTQwLDExICsxNDAsMTEgQEAKICAgY2hhciBidWZbNTEyXTsKICAgRFdPUkQgZXJyID0gU09DS0VSUk5POwogCi0gIGlmICghRm9ybWF0TWVzc2FnZShGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSwgTlVMTCwgZXJyLAotICAgICAgICAgICAgICAgICAgICAgTEFOR19ORVVUUkFMLCBidWYsIHNpemVvZihidWYpLCBOVUxMKSkKKyAgaWYoIUZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0sIE5VTEwsIGVyciwKKyAgICAgICAgICAgICAgICAgICAgTEFOR19ORVVUUkFMLCBidWYsIHNpemVvZihidWYpLCBOVUxMKSkKICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVua25vd24gZXJyb3IgJWx1ICglI2x4KSIsIGVyciwgZXJyKTsKLSAgaWYgKG1zZykKLSAgICAgZnByaW50ZihzdGRlcnIsICIlczogIiwgbXNnKTsKKyAgaWYobXNnKQorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICIsIG1zZyk7CiAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGJ1Zik7CiB9CiAjZW5kaWYgIC8qIFdJTjMyICovCkBAIC0xNTksMTUgKzE1OSwxNCBAQAogCiAgIGVyciA9IFdTQVN0YXJ0dXAod1ZlcnNpb25SZXF1ZXN0ZWQsICZ3c2FEYXRhKTsKIAotICBpZiAoZXJyICE9IDApIHsKKyAgaWYoZXJyICE9IDApIHsKICAgICBwZXJyb3IoIldpbnNvY2sgaW5pdCBmYWlsZWQiKTsKICAgICBsb2dtc2coIkVycm9yIGluaXRpYWxpc2luZyB3aW5zb2NrIC0tIGFib3J0aW5nIik7CiAgICAgZXhpdCgxKTsKICAgfQogCi0gIGlmICggTE9CWVRFKCB3c2FEYXRhLndWZXJzaW9uICkgIT0gVVNFX1dJTlNPQ0sgfHwKLSAgICAgICBISUJZVEUoIHdzYURhdGEud1ZlcnNpb24gKSAhPSBVU0VfV0lOU09DSyApIHsKLQorICBpZihMT0JZVEUod3NhRGF0YS53VmVyc2lvbikgIT0gVVNFX1dJTlNPQ0sgfHwKKyAgICAgSElCWVRFKHdzYURhdGEud1ZlcnNpb24pICE9IFVTRV9XSU5TT0NLKSB7CiAgICAgV1NBQ2xlYW51cCgpOwogICAgIHBlcnJvcigiV2luc29jayBpbml0IGZhaWxlZCIpOwogICAgIGxvZ21zZygiTm8gc3VpdGFibGUgd2luc29jay5kbGwgZm91bmQgLS0gYWJvcnRpbmciKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci91dGlsLmggYi90ZXN0cy9zZXJ2ZXIvdXRpbC5oCmluZGV4IDhkMmU1ODIuLjJhMTlhNjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci91dGlsLmgKKysrIGIvdGVzdHMvc2VydmVyL3V0aWwuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlcmhlbHAucG0gYi90ZXN0cy9zZXJ2ZXJoZWxwLnBtCmluZGV4IDIyMGZiYTkuLjhiMjc3OWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlcmhlbHAucG0KKysrIGIvdGVzdHMvc2VydmVyaGVscC5wbQpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvc3NoaGVscC5wbSBiL3Rlc3RzL3NzaGhlbHAucG0KaW5kZXggOTE0ODc5Yi4uYzU2MThhMSAxMDA2NDQKLS0tIGEvdGVzdHMvc3NoaGVscC5wbQorKysgYi90ZXN0cy9zc2hoZWxwLnBtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMjAsOCArMTIwLDggQEAKICRzZnRwbG9nICAgICAgICAgPSB1bmRlZjsgICAgICAgICAgICAgICAgICAgICMgc2Z0cCBjbGllbnQgbG9nIGZpbGUKICRzZnRwY21kcyAgICAgICAgPSAnY3VybF9zZnRwX2NtZHMnOyAgICAgICAgICMgc2Z0cCBjbGllbnQgY29tbWFuZHMgYmF0Y2ggZmlsZQogJGtub3duaG9zdHMgICAgICA9ICdjdXJsX2NsaWVudF9rbm93bmhvc3RzJzsgIyBzc2gga25vd25ob3N0cyBmaWxlCi0kaHN0cHJ2a2V5ZiAgICAgID0gJ2N1cmxfaG9zdF9kc2Ffa2V5JzsgICAgICAjIGhvc3QgcHJpdmF0ZSBrZXkgZmlsZQotJGhzdHB1YmtleWYgICAgICA9ICdjdXJsX2hvc3RfZHNhX2tleS5wdWInOyAgIyBob3N0IHB1YmxpYyBrZXkgZmlsZQorJGhzdHBydmtleWYgICAgICA9ICdjdXJsX2hvc3RfcnNhX2tleSc7ICAgICAgIyBob3N0IHByaXZhdGUga2V5IGZpbGUKKyRoc3RwdWJrZXlmICAgICAgPSAnY3VybF9ob3N0X3JzYV9rZXkucHViJzsgICMgaG9zdCBwdWJsaWMga2V5IGZpbGUKICRjbGlwcnZrZXlmICAgICAgPSAnY3VybF9jbGllbnRfa2V5JzsgICAgICAgICMgY2xpZW50IHByaXZhdGUga2V5IGZpbGUKICRjbGlwdWJrZXlmICAgICAgPSAnY3VybF9jbGllbnRfa2V5LnB1Yic7ICAgICMgY2xpZW50IHB1YmxpYyBrZXkgZmlsZQogCmRpZmYgLS1naXQgYS90ZXN0cy9zc2hzZXJ2ZXIucGwgYi90ZXN0cy9zc2hzZXJ2ZXIucGwKaW5kZXggZDhjMmQ2Zi4uM2ViZjhlNiAxMDA3NTUKLS0tIGEvdGVzdHMvc3Noc2VydmVyLnBsCisrKyBiL3Rlc3RzL3NzaHNlcnZlci5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03NCw2ICs3NCw3IEBACiAgICAgc2VydmVyX2xvZ2ZpbGVuYW1lCiAgICAgKTsKIAordXNlIHBhdGhoZWxwOwogCiAjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTM3MSwxMiArMzcyLDEyIEBACiAgICAgIyBNYWtlIHN1cmUgYWxsIGZpbGVzIGFyZSBnb25lIHNvIHNzaC1rZXlnZW4gZG9lc24ndCBjb21wbGFpbgogICAgIHVubGluaygkaHN0cHJ2a2V5ZiwgJGhzdHB1YmtleWYsICRjbGlwcnZrZXlmLCAkY2xpcHVia2V5Zik7CiAgICAgbG9nbXNnICdnZW5lcmF0aW5nIGhvc3Qga2V5cy4uLicgaWYoJHZlcmJvc2UpOwotICAgIGlmKHN5c3RlbSAiXCIkc3Noa2V5Z2VuXCIgLXEgLXQgZHNhIC1mICRoc3RwcnZrZXlmIC1DICdjdXJsIHRlc3Qgc2VydmVyJyAtTiAnJyIpIHsKKyAgICBpZihzeXN0ZW0gIlwiJHNzaGtleWdlblwiIC1xIC10IHJzYSAtZiAkaHN0cHJ2a2V5ZiAtQyAnY3VybCB0ZXN0IHNlcnZlcicgLU4gJyciKSB7CiAgICAgICAgIGxvZ21zZyAnQ291bGQgbm90IGdlbmVyYXRlIGhvc3Qga2V5JzsKICAgICAgICAgZXhpdCAxOwogICAgIH0KICAgICBsb2dtc2cgJ2dlbmVyYXRpbmcgY2xpZW50IGtleXMuLi4nIGlmKCR2ZXJib3NlKTsKLSAgICBpZihzeXN0ZW0gIlwiJHNzaGtleWdlblwiIC1xIC10IGRzYSAtZiAkY2xpcHJ2a2V5ZiAtQyAnY3VybCB0ZXN0IGNsaWVudCcgLU4gJyciKSB7CisgICAgaWYoc3lzdGVtICJcIiRzc2hrZXlnZW5cIiAtcSAtdCByc2EgLWYgJGNsaXBydmtleWYgLUMgJ2N1cmwgdGVzdCBjbGllbnQnIC1OICcnIikgewogICAgICAgICBsb2dtc2cgJ0NvdWxkIG5vdCBnZW5lcmF0ZSBjbGllbnQga2V5JzsKICAgICAgICAgZXhpdCAxOwogICAgIH0KQEAgLTM4NCw3ICszODUsNyBAQAogCiAKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgQ29udmVydCBwYXRocyBmb3IgY3VybCdzIHRlc3RzIHJ1bm5pbmcgb24gV2luZG93cyB1c2luZyBDeWd3aW4gT3BlblNTSAorIyBDb252ZXJ0IHBhdGhzIGZvciBjdXJsJ3MgdGVzdHMgcnVubmluZyBvbiBXaW5kb3dzIHdpdGggQ3lnd2luL01zeXMgT3BlblNTSAogIwogbXkgJGNsaXB1YmtleWZfY29uZmlnID0gYWJzX3BhdGgoIiRwYXRoLyRjbGlwdWJrZXlmIik7CiBteSAkaHN0cHJ2a2V5Zl9jb25maWcgPSBhYnNfcGF0aCgiJHBhdGgvJGhzdHBydmtleWYiKTsKQEAgLTM5MiwxMCArMzkzLDEwIEBACiBteSAkc2Z0cHNydl9jb25maWcgPSAkc2Z0cHNydjsKIAogaWYgKCReTyBlcSAnTVNXaW4zMicgfHwgJF5PIGVxICdjeWd3aW4nIHx8ICReTyBlcSAnbXN5cycpIHsKLSAgICAjIGNvbnZlcnQgTWluR1cgZHJpdmUgcGF0aHMgdG8gQ3lnd2luIGRyaXZlIHBhdGhzCi0gICAgJGNsaXB1YmtleWZfY29uZmlnID1+IHMvXlwvKFx3KVwvL1wvY3lnZHJpdmVcLyQxXC8vOwotICAgICRoc3RwcnZrZXlmX2NvbmZpZyA9fiBzL15cLyhcdylcLy9cL2N5Z2RyaXZlXC8kMVwvLzsKLSAgICAkcGlkZmlsZV9jb25maWcgPX4gcy9eXC8oXHcpXC8vXC9jeWdkcml2ZVwvJDFcLy87CisgICAgIyBFbnN1cmUgdG8gdXNlIE1pbkdXL0N5Z3dpbiBwYXRocworICAgICRjbGlwdWJrZXlmX2NvbmZpZyA9IHBhdGhoZWxwOjpidWlsZF9zeXNfYWJzX3BhdGgoJGNsaXB1YmtleWZfY29uZmlnKTsKKyAgICAkaHN0cHJ2a2V5Zl9jb25maWcgPSBwYXRoaGVscDo6YnVpbGRfc3lzX2Fic19wYXRoKCRoc3RwcnZrZXlmX2NvbmZpZyk7CisgICAgJHBpZGZpbGVfY29uZmlnID0gcGF0aGhlbHA6OmJ1aWxkX3N5c19hYnNfcGF0aCgkcGlkZmlsZV9jb25maWcpOwogICAgICRzZnRwc3J2X2NvbmZpZyA9ICJpbnRlcm5hbC1zZnRwIjsKIH0KIApAQCAtNTU4LDcgKzU1OSw3IEBACiAgICAgICAgICgkc3NoZGlkID1+IC9TdW5TU0gvKSkgewogICAgICAgICAjIHNzaCBkYWVtb24gc3VwcG9ydHMgY29tbWFuZCBsaW5lIG9wdGlvbnMgLXQgLWYgYW5kIC1vCiAgICAgICAgICRlcnIgPSBncmVwIC8oKFVuc3VwcG9ydGVkKXwoQmFkIGNvbmZpZ3VyYXRpb24pfChEZXByZWNhdGVkKSkgb3B0aW9uLiokb3B0aW9uLywKLSAgICAgICAgICAgICAgICAgICAgcXgoIiRzc2hkIiAtdCAtZiAkc3NoZGNvbmZpZyAtbyAkb3B0aW9uPSR2YWx1ZSAyPiYxKTsKKyAgICAgICAgICAgICAgICAgICAgcXgoIiRzc2hkIiAtdCAtZiAkc3NoZGNvbmZpZyAtbyAiJG9wdGlvbj0kdmFsdWUiIDI+JjEpOwogICAgICAgICByZXR1cm4gISRlcnI7CiAgICAgfQogICAgIGlmKCgkc3NoZGlkID1+IC9PcGVuU1NILykgJiYgKCRzc2hkdmVybnVtID49IDI5OSkpIHsKQEAgLTcyOSwxMSArNzMwLDExIEBACiBpZigoISAtZSAka25vd25ob3N0cykgfHwgKCEgLXMgJGtub3duaG9zdHMpKSB7CiAgICAgbG9nbXNnICdnZW5lcmF0aW5nIHNzaCBjbGllbnQga25vd24gaG9zdHMgZmlsZS4uLicgaWYoJHZlcmJvc2UpOwogICAgIHVubGluaygka25vd25ob3N0cyk7Ci0gICAgaWYob3BlbihEU0FLRVlGSUxFLCAiPCRoc3RwdWJrZXlmIikpIHsKLSAgICAgICAgbXkgQGRzYWhvc3RrZXkgPSBkbyB7IGxvY2FsICQvID0gJyAnOyA8RFNBS0VZRklMRT4gfTsKLSAgICAgICAgaWYoY2xvc2UoRFNBS0VZRklMRSkpIHsKKyAgICBpZihvcGVuKFJTQUtFWUZJTEUsICI8JGhzdHB1YmtleWYiKSkgeworICAgICAgICBteSBAcnNhaG9zdGtleSA9IGRvIHsgbG9jYWwgJC8gPSAnICc7IDxSU0FLRVlGSUxFPiB9OworICAgICAgICBpZihjbG9zZShSU0FLRVlGSUxFKSkgewogICAgICAgICAgICAgaWYob3BlbihLTk9XTkhPU1RTLCAiPiRrbm93bmhvc3RzIikpIHsKLSAgICAgICAgICAgICAgICBwcmludCBLTk9XTkhPU1RTICIkbGlzdGVuYWRkciBzc2gtZHNzICRkc2Fob3N0a2V5WzFdXG4iOworICAgICAgICAgICAgICAgIHByaW50IEtOT1dOSE9TVFMgIiRsaXN0ZW5hZGRyIHNzaC1yc2EgJHJzYWhvc3RrZXlbMV1cbiI7CiAgICAgICAgICAgICAgICAgaWYoIWNsb3NlKEtOT1dOSE9TVFMpKSB7CiAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICJFcnJvcjogY2Fubm90IGNsb3NlIGZpbGUgJGtub3duaG9zdHMiOwogICAgICAgICAgICAgICAgIH0KQEAgLTc2Myw5ICs3NjQsOSBAQAogbXkgJGtub3duaG9zdHNfY29uZmlnID0gYWJzX3BhdGgoIiRwYXRoLyRrbm93bmhvc3RzIik7CiAKIGlmICgkXk8gZXEgJ01TV2luMzInIHx8ICReTyBlcSAnY3lnd2luJyB8fCAkXk8gZXEgJ21zeXMnKSB7Ci0gICAgIyBjb252ZXJ0IE1pbkdXIGRyaXZlIHBhdGhzIHRvIEN5Z3dpbiBkcml2ZSBwYXRocwotICAgICRpZGVudGl0eV9jb25maWcgPX4gcy9eXC8oXHcpXC8vXC9jeWdkcml2ZVwvJDFcLy87Ci0gICAgJGtub3duaG9zdHNfY29uZmlnID1+IHMvXlwvKFx3KVwvL1wvY3lnZHJpdmVcLyQxXC8vOworICAgICMgRW5zdXJlIHRvIHVzZSBNaW5HVy9DeWd3aW4gcGF0aHMKKyAgICAkaWRlbnRpdHlfY29uZmlnID0gcGF0aGhlbHA6OmJ1aWxkX3N5c19hYnNfcGF0aCgkaWRlbnRpdHlfY29uZmlnKTsKKyAgICAka25vd25ob3N0c19jb25maWcgPSBwYXRoaGVscDo6YnVpbGRfc3lzX2Fic19wYXRoKCRrbm93bmhvc3RzX2NvbmZpZyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvdGVzdHMvc3ltYm9sLXNjYW4ucGwgYi90ZXN0cy9zeW1ib2wtc2Nhbi5wbAppbmRleCA4OWY1ZWVmLi41ZDU3MGQ4IDEwMDY0NAotLS0gYS90ZXN0cy9zeW1ib2wtc2Nhbi5wbAorKysgYi90ZXN0cy9zeW1ib2wtc2Nhbi5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0Y3VybC4xIGIvdGVzdHMvdGVzdGN1cmwuMQppbmRleCBlY2VhOTExLi41MDlmNWRjIDEwMDY0NAotLS0gYS90ZXN0cy90ZXN0Y3VybC4xCisrKyBiL3Rlc3RzL3Rlc3RjdXJsLjEKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsNyArMzIsNyBAQAogbWFpbGVkIHRvIGN1cmwtYXV0b2NvbXBpbGVAaGF4eC5zZSB0byBiZSBkZWFsdCB3aXRoIGF1dG9tYXRpY2FsbHkgKG1ha2Ugc3VyZQogdGhlIHN1YmplY3QgaW5jbHVkZXMgdGhlIHdvcmQgImF1dG9idWlsZCIgYXMgdGhlIG1haWwgZ2V0cyBzaWxlbnRseSBkaXNjYXJkZWQKIG90aGVyd2lzZSkuICBUaGUgbW9zdCBjdXJyZW50IGJ1aWxkIHN0YXR1cyAod2l0aCBhIHJlYXNvbmFibGUgYmFja2xvZykgd2lsbCBiZQotcHVibGlzaGVkIG9uIHRoZSBjdXJsIHNpdGUsIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvYXV0by8KK3B1Ymxpc2hlZCBvbiB0aGUgY3VybCBzaXRlLCBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9hdXRvLwogCiBcZklvcHRpb25zXGZQIG1heSBiZSBvbWl0dGVkLiBTZWUgXGZJLS1zZXR1cFxmUCBmb3Igd2hhdCBoYXBwZW5zIHRoZW4uCiAKQEAgLTc5LDEyICs3OSwxMiBAQAogLlNIICJJTklUSUFMIFNFVFVQIgogRmlyc3QgeW91IG1ha2UgYSBjaGVja291dCBmcm9tIGdpdCAob3IgeW91IHdyaXRlIGEgc2NyaXB0IHRoYXQgZG93bmxvYWRzIGRhaWx5CiBzbmFwc2hvdHMgYXV0b21hdGljYWxseSwgZmluZCBpbnNwaXJhdGlvbiBhdAotaHR0cDovL2N1cmwuaGF4eC5zZS9hdXRvL2F1dG9jdXJsLnR4dCk6CitodHRwczovL2N1cmwuaGF4eC5zZS9hdXRvL2F1dG9jdXJsLnR4dCk6CiAKIC5uZgogICAkIG1rZGlyIGRhaWx5LWN1cmwKICAgJCBjZCBkYWlseS1jdXJsCi0gICQgZ2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwuZ2l0CisgICQgZ2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vY3VybC9jdXJsLmdpdAogLmZpCiAKIFdpdGggdGhlIGN1cmwgc291cmNlcyBjaGVja2VkIG91dCwgb3IgZG93bmxvYWRlZCwgeW91IGNhbiBzdGFydCB0ZXN0aW5nIHJpZ2h0CmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0Y3VybC5wbCBiL3Rlc3RzL3Rlc3RjdXJsLnBsCmluZGV4IDJiOWUwODMuLmRjMzVhMDIgMTAwNzU1Ci0tLSBhL3Rlc3RzL3Rlc3RjdXJsLnBsCisrKyBiL3Rlc3RzL3Rlc3RjdXJsLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDcgKzMyLDcgQEAKICMgY3VybC1hdXRvY29tcGlsZUBoYXh4LnNlIHRvIGJlIGRlYWx0IHdpdGggYXV0b21hdGljYWxseSAobWFrZSBzdXJlIHRoZQogIyBzdWJqZWN0IGluY2x1ZGVzIHRoZSB3b3JkICJhdXRvYnVpbGQiIGFzIHRoZSBtYWlsIGdldHMgc2lsZW50bHkgZGlzY2FyZGVkCiAjIG90aGVyd2lzZSkuICBUaGUgbW9zdCBjdXJyZW50IGJ1aWxkIHN0YXR1cyAod2l0aCBhIHJlc29uYWJsZSBiYWNrbG9nKSB3aWxsCi0jIGJlIHB1Ymxpc2hlZCBvbiB0aGUgY3VybCBzaXRlLCBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2F1dG8vCisjIGJlIHB1Ymxpc2hlZCBvbiB0aGUgY3VybCBzaXRlLCBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9hdXRvLwogCiAjIFVTQUdFOgogIyB0ZXN0Y3VybC5wbCBbb3B0aW9uc10gW2N1cmwtZGFpbHktbmFtZV0gPiBvdXRwdXQKZGlmZiAtLWdpdCBhL3Rlc3RzL3RmdHBzZXJ2ZXIucGwgYi90ZXN0cy90ZnRwc2VydmVyLnBsCmluZGV4IDYwZmMzMmQuLmE0YzRlNDcgMTAwNzU1Ci0tLSBhL3Rlc3RzL3RmdHBzZXJ2ZXIucGwKKysrIGIvdGVzdHMvdGZ0cHNlcnZlci5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L01ha2VmaWxlLmFtIGIvdGVzdHMvdW5pdC9NYWtlZmlsZS5hbQppbmRleCA0YjQ3ZjcyLi5kNDk4N2Q2IDEwMDY0NAotLS0gYS90ZXN0cy91bml0L01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL3VuaXQvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTcxLDYgKzcxLDkgQEAKICMgTWFrZWZpbGUuaW5jIHByb3ZpZGVzIG5lYXQgZGVmaW5pdGlvbnMKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKK2NoZWNrc3JjOgorCUBQRVJMQCAkKHRvcF9zcmNkaXIpL2xpYi9jaGVja3NyYy5wbCAkKHNyY2RpcikvKi5jCisKIGlmIEJVSUxEX1VOSVRURVNUUwogbm9pbnN0X1BST0dSQU1TID0gJChVTklUUFJPR1MpCiBlbHNlCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L01ha2VmaWxlLmluYyBiL3Rlc3RzL3VuaXQvTWFrZWZpbGUuaW5jCmluZGV4IDkwNzNiMzQuLmM1YTE1MjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvTWFrZWZpbGUuaW5jCisrKyBiL3Rlc3RzL3VuaXQvTWFrZWZpbGUuaW5jCkBAIC03LDcgKzcsNyBAQAogIyBUaGVzZSBhcmUgYWxsIHVuaXQgdGVzdCBwcm9ncmFtcwogVU5JVFBST0dTID0gdW5pdDEzMDAgdW5pdDEzMDEgdW5pdDEzMDIgdW5pdDEzMDMgdW5pdDEzMDQgdW5pdDEzMDUgdW5pdDEzMDcJXAogIHVuaXQxMzA4IHVuaXQxMzA5IHVuaXQxMzMwIHVuaXQxMzk0IHVuaXQxMzk1IHVuaXQxMzk2IHVuaXQxMzk3IHVuaXQxMzk4CVwKLSB1bml0MTYwMCB1bml0MTYwMSB1bml0MTYwMgorIHVuaXQxNjAwIHVuaXQxNjAxIHVuaXQxNjAyIHVuaXQxNjAzIHVuaXQxNjA0CiAKIHVuaXQxMzAwX1NPVVJDRVMgPSB1bml0MTMwMC5jICQoVU5JVEZJTEVTKQogdW5pdDEzMDBfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQpAQCAtNjYsMyArNjYsOSBAQAogdW5pdDE2MDJfU09VUkNFUyA9IHVuaXQxNjAyLmMgJChVTklURklMRVMpCiB1bml0MTYwMl9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCiAKK3VuaXQxNjAzX1NPVVJDRVMgPSB1bml0MTYwMy5jICQoVU5JVEZJTEVTKQordW5pdDE2MDNfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQorCit1bml0MTYwNF9TT1VSQ0VTID0gdW5pdDE2MDQuYyAkKFVOSVRGSUxFUykKK3VuaXQxNjA0X0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChMSUJNRVRBTElOS19DUFBGTEFHUykKKwpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9jdXJsY2hlY2suaCBiL3Rlc3RzL3VuaXQvY3VybGNoZWNrLmgKaW5kZXggMmUzNzQ2Yi4uMDY2MGUyYiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC9jdXJsY2hlY2suaAorKysgYi90ZXN0cy91bml0L2N1cmxjaGVjay5oCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjQsNyArMjQsNyBAQAogLyogVGhlIGZhaWwgbWFjcm9zIG1hcmsgdGhlIGN1cnJlbnQgdGVzdCBzdGVwIGFzIGZhaWxlZCwgYW5kIGNvbnRpbnVlICovCiAjZGVmaW5lIGZhaWxfaWYoZXhwciwgbXNnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaWYoZXhwcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgQXNzZXJ0aW9uICclcycgbWV0OiAlc1xuIiAsICBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBBc3NlcnRpb24gJyVzJyBtZXQ6ICVzXG4iLCAgIFwKICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHIsIG1zZyk7ICAgICAgICAgICAgXAogICAgIHVuaXRmYWlsKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH0KQEAgLTM4LDEwICszOCwxMCBAQAogCiAjZGVmaW5lIHZlcmlmeV9tZW1vcnkoZHluYW1pYywgY2hlY2ssIGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBpZihkeW5hbWljICYmIG1lbWNtcChkeW5hbWljLCBjaGVjaywgbGVuKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIE1lbW9yeSBidWZmZXIgbWlzbWF0Y2ggc2l6ZSAlZC4gJyVzJyBpcyBub3RcbiIsIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgbGVuLCBoZXhkdW1wKCh1bnNpZ25lZCBjaGFyICopY2hlY2ssIGxlbikpOyAgICAgIFwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIE1lbW9yeSBidWZmZXIgbWlzbWF0Y2ggc2l6ZSAlZC4gJyVzJyBpcyBub3RcbiIsICBcCisgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIGxlbiwgaGV4ZHVtcCgodW5zaWduZWQgY2hhciAqKWNoZWNrLCBsZW4pKTsgXAogICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgdGhlIHNhbWUgYXMgJyVzJ1xuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgaGV4ZHVtcCgodW5zaWduZWQgY2hhciAqKWR5bmFtaWMsIGxlbikpOyAgICAgICAgIFwKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgaGV4ZHVtcCgodW5zaWduZWQgY2hhciAqKWR5bmFtaWMsIGxlbikpOyAgICBcCiAgICAgdW5pdGZhaWwrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB9CiAKQEAgLTU3LDcgKzU3LDcgQEAKIC8qIFRoZSBhYm9ydCBtYWNyb3MgbWFyayB0aGUgY3VycmVudCB0ZXN0IHN0ZXAgYXMgZmFpbGVkLCBhbmQgZXhpdCB0aGUgdGVzdCAqLwogI2RlZmluZSBhYm9ydF9pZihleHByLCBtc2cpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGlmKGV4cHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIEFib3J0IGFzc2VydGlvbiAnJXMnIG1ldDogJXNcbiIgLCAgXAorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgQWJvcnQgYXNzZXJ0aW9uICclcycgbWV0OiAlc1xuIiwgICBcCiAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByLCBtc2cpOyAgICAgICAgICAgICAgICAgIFwKICAgICB1bml0ZmFpbCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGdvdG8gdW5pdF90ZXN0X2Fib3J0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04NSwxMCArODUsMTEgQEAKICNkZWZpbmUgVU5JVFRFU1RfU1RBUlQgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaW50IHRlc3QoY2hhciAqYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKHZvaWQpYXJnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHVuaXRfc2V0dXAoKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmYWlsKCJ1bml0X3NldHVwKCkgZmFpbHVyZSIpOyAgICAgICAgICAgICAgIFwKLSAgfSBlbHNlIHsKKyAgICAodm9pZClhcmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZih1bml0X3NldHVwKCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGZhaWwoInVuaXRfc2V0dXAoKSBmYWlsdXJlIik7ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIHsKIAogI2RlZmluZSBVTklUVEVTVF9TVE9QICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGdvdG8gdW5pdF90ZXN0X2Fib3J0OyAvKiBhdm9pZCB3YXJuaW5nICovICAgXApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTMwMC5jIGIvdGVzdHMvdW5pdC91bml0MTMwMC5jCmluZGV4IDJiODM0MTYuLmM0ZDlkZDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzMDAuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzAwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MSw4ICs0MSw4IEBACiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIGxsaXN0X2Rlc3RpbmF0aW9uID0gQ3VybF9sbGlzdF9hbGxvYyh0ZXN0X2N1cmxfbGxpc3RfZHRvcik7CiAgIGlmKCFsbGlzdF9kZXN0aW5hdGlvbikgewotICAgICAgQ3VybF9sbGlzdF9kZXN0cm95KGxsaXN0LCBOVUxMKTsKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIEN1cmxfbGxpc3RfZGVzdHJveShsbGlzdCwgTlVMTCk7CisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAogICByZXR1cm4gQ1VSTEVfT0s7CmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzAxLmMgYi90ZXN0cy91bml0L3VuaXQxMzAxLmMKaW5kZXggNDdkZjQ4MS4uOTI4MDc2ZSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwMS5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIzLDMyICsyMywzMiBAQAogCiAjaW5jbHVkZSAic3RyZXF1YWwuaCIKIAotc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAoIHZvaWQgKSB7cmV0dXJuIENVUkxFX09LO30KLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApIHt9CitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKSB7cmV0dXJuIENVUkxFX09LO30KK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKSB7fQogCiBVTklUVEVTVF9TVEFSVAogCiBpbnQgcmM7CiAKIHJjID0gY3VybF9zdHJlcXVhbCgiaWlpIiwgIklJSSIpOwotZmFpbF91bmxlc3MoIHJjICE9IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iICk7CitmYWlsX3VubGVzcyhyYyAhPSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iKTsKIAogcmMgPSBjdXJsX3N0cmVxdWFsKCJpaWlhIiwgIklJSSIpOwotZmFpbF91bmxlc3MoIHJjID09IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iICk7CitmYWlsX3VubGVzcyhyYyA9PSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iKTsKIAogcmMgPSBjdXJsX3N0cmVxdWFsKCJpaWkiLCAiSUlJYSIpOwotZmFpbF91bmxlc3MoIHJjID09IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iICk7CitmYWlsX3VubGVzcyhyYyA9PSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIHplcm8iKTsKIAogcmMgPSBjdXJsX3N0cmVxdWFsKCJpaWlBIiwgIklJSWEiKTsKLWZhaWxfdW5sZXNzKCByYyAhPSAwICwgInJldHVybiBjb2RlIHNob3VsZCBiZSBub24temVybyIgKTsKK2ZhaWxfdW5sZXNzKHJjICE9IDAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgbm9uLXplcm8iKTsKIAogcmMgPSBjdXJsX3N0cm5lcXVhbCgiaWlpIiwgIklJSSIsIDMpOwotZmFpbF91bmxlc3MoIHJjICE9IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIiApOworZmFpbF91bmxlc3MocmMgIT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSBub24temVybyIpOwogCiByYyA9IGN1cmxfc3RybmVxdWFsKCJpaWlBQkMiLCAiSUlJY2JhIiwgMyk7Ci1mYWlsX3VubGVzcyggcmMgIT0gMCAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgbm9uLXplcm8iICk7CitmYWlsX3VubGVzcyhyYyAhPSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIik7CiAKIHJjID0gY3VybF9zdHJuZXF1YWwoImlpIiwgIklJIiwgMyk7Ci1mYWlsX3VubGVzcyggcmMgIT0gMCAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgbm9uLXplcm8iICk7CitmYWlsX3VubGVzcyhyYyAhPSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIik7CiAKIFVOSVRURVNUX1NUT1AKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMDIuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDIuYwppbmRleCA0MTJhNzFmLi42NjA1NGRhIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzAyLmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMwMi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNyArMjgsNyBAQAogCiBzdGF0aWMgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE7CiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCiB7CiAgIGRhdGEgPSBjdXJsX2Vhc3lfaW5pdCgpOwogICBpZighZGF0YSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKQorc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCiB7CiAgIGN1cmxfZWFzeV9jbGVhbnVwKGRhdGEpOwogfQpAQCAtNTIsNTAgKzUyLDUwIEBACiByYyA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAiaSIsIDEsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDQsICJzaXplIHNob3VsZCBiZSA0Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJhUT09IiwgNCk7Cit2ZXJpZnlfbWVtb3J5KG91dHB1dCwgImFRPT0iLCA0KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgImlpIiwgMiwgJm91dHB1dCwgJnNpemUpOwogZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfT0ssICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfT0siKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gNCwgInNpemUgc2hvdWxkIGJlIDQiKTsKLXZlcmlmeV9tZW1vcnkoIG91dHB1dCwgImFXaz0iLCA0KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiYVdrPSIsIDQpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiByYyA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAiaWlpIiwgMywgJm91dHB1dCwgJnNpemUpOwogZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfT0ssICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfT0siKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gNCwgInNpemUgc2hvdWxkIGJlIDQiKTsKLXZlcmlmeV9tZW1vcnkoIG91dHB1dCwgImFXbHAiLCA0KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiYVdscCIsIDQpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiByYyA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAiaWlpaSIsIDQsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDgsICJzaXplIHNob3VsZCBiZSA4Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJhV2xwYVE9PSIsIDgpOwordmVyaWZ5X21lbW9yeShvdXRwdXQsICJhV2xwYVE9PSIsIDgpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiByYyA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAiXHhmZlx4MDFceGZlXHgwMiIsIDQsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDgsICJzaXplIHNob3VsZCBiZSA4Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICIvd0grQWc9PSIsIDgpOwordmVyaWZ5X21lbW9yeShvdXRwdXQsICIvd0grQWc9PSIsIDgpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiByYyA9IEN1cmxfYmFzZTY0dXJsX2VuY29kZShkYXRhLCAiXHhmZlx4MDFceGZlXHgwMiIsIDQsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDgsICJzaXplIHNob3VsZCBiZSA4Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJfd0gtQWc9PSIsIDgpOwordmVyaWZ5X21lbW9yeShvdXRwdXQsICJfd0gtQWc9PSIsIDgpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiByYyA9IEN1cmxfYmFzZTY0dXJsX2VuY29kZShkYXRhLCAiaWlpaSIsIDQsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDgsICJzaXplIHNob3VsZCBiZSA4Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJhV2xwYVE9PSIsIDgpOwordmVyaWZ5X21lbW9yeShvdXRwdXQsICJhV2xwYVE9PSIsIDgpOwogQ3VybF9zYWZlZnJlZShvdXRwdXQpOwogCiAvKiAwIGxlbmd0aCBtYWtlcyBpdCBkbyBzdHJsZW4oKSAqLwogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgImlpaWkiLCAwLCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA4LCAic2l6ZSBzaG91bGQgYmUgOCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoImFXbHBhUT09IiwgJmRlY29kZWQsICZzaXplKTsKQEAgLTEyNiw3ICsxMjYsOCBAQAogc2l6ZSA9IDE7IC8qIG5vdCB6ZXJvICovCiBkZWNvZGVkID0gJmFueWNoYXI7IC8qIG5vdCBOVUxMICovCiByYyA9IEN1cmxfYmFzZTY0X2RlY29kZSgiYVEiLCAmZGVjb2RlZCwgJnNpemUpOwotZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkcsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKK2ZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLAorICAgICAgICAgICAgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSAwLCAic2l6ZSBzaG91bGQgYmUgMCIpOwogZmFpbF9pZihkZWNvZGVkLCAicmV0dXJuZWQgcG9pbnRlciBzaG91bGQgYmUgTlVMTCIpOwogCkBAIC0xMzQsNyArMTM1LDggQEAKIHNpemUgPSAxOyAvKiBub3QgemVybyAqLwogZGVjb2RlZCA9ICZhbnljaGFyOyAvKiBub3QgTlVMTCAqLwogcmMgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoImE9PT0iLCAmZGVjb2RlZCwgJnNpemUpOwotZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkcsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKK2ZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLAorICAgICAgICAgICAgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSAwLCAic2l6ZSBzaG91bGQgYmUgMCIpOwogZmFpbF9pZihkZWNvZGVkLCAicmV0dXJuZWQgcG9pbnRlciBzaG91bGQgYmUgTlVMTCIpOwogCkBAIC0xNDIsNyArMTQ0LDggQEAKIHNpemUgPSAxOyAvKiBub3QgemVybyAqLwogZGVjb2RlZCA9ICZhbnljaGFyOyAvKiBub3QgTlVMTCAqLwogcmMgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoImE9UT0iLCAmZGVjb2RlZCwgJnNpemUpOwotZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkcsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKK2ZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLAorICAgICAgICAgICAgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSAwLCAic2l6ZSBzaG91bGQgYmUgMCIpOwogZmFpbF9pZihkZWNvZGVkLCAicmV0dXJuZWQgcG9pbnRlciBzaG91bGQgYmUgTlVMTCIpOwogCkBAIC0xNTAsNyArMTUzLDggQEAKIHNpemUgPSAxOyAvKiBub3QgemVybyAqLwogZGVjb2RlZCA9ICZhbnljaGFyOyAvKiBub3QgTlVMTCAqLwogcmMgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoImFceDFmPT0iLCAmZGVjb2RlZCwgJnNpemUpOwotZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkcsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKK2ZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLAorICAgICAgICAgICAgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSAwLCAic2l6ZSBzaG91bGQgYmUgMCIpOwogZmFpbF9pZihkZWNvZGVkLCAicmV0dXJuZWQgcG9pbnRlciBzaG91bGQgYmUgTlVMTCIpOwogCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzAzLmMgYi90ZXN0cy91bml0L3VuaXQxMzAzLmMKaW5kZXggYjQ4YTYyNS4uN2MwNzMxYSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwMy5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI3LDE1ICsyNywxNSBAQAogCiBzdGF0aWMgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE7CiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCiB7CiAgIGRhdGEgPSBjdXJsX2Vhc3lfaW5pdCgpOwotICBpZiAoIWRhdGEpCisgIGlmKCFkYXRhKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApCitzdGF0aWMgdm9pZCB1bml0X3N0b3Aodm9pZCkKIHsKICAgY3VybF9lYXN5X2NsZWFudXAoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzA0LmMgYi90ZXN0cy91bml0L3VuaXQxMzA0LmMKaW5kZXggMTJiMDI3My4uMTFiYmEzOSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwNC5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDEwICszMSwxMCBAQAogewogICBwYXNzd29yZCA9IHN0cmR1cCgiIik7CiAgIGxvZ2luID0gc3RyZHVwKCIiKTsKLSAgaWYgKCFwYXNzd29yZCB8fCAhbG9naW4pIHsKLQkgIEN1cmxfc2FmZWZyZWUocGFzc3dvcmQpOwotCSAgQ3VybF9zYWZlZnJlZShsb2dpbik7Ci0JICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgaWYoIXBhc3N3b3JkIHx8ICFsb2dpbikgeworICAgIEN1cmxfc2FmZWZyZWUocGFzc3dvcmQpOworICAgIEN1cmxfc2FmZWZyZWUobG9naW4pOworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAgIHJldHVybiBDVVJMRV9PSzsKIH0KQEAgLTcyLDcgKzcyLDggQEAKICAgYWJvcnRfdW5sZXNzKHBhc3N3b3JkICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwogICBmYWlsX3VubGVzcyhwYXNzd29yZFswXSA9PSAwLCAicGFzc3dvcmQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogICBhYm9ydF91bmxlc3MobG9naW4gIT0gTlVMTCwgInJldHVybmVkIE5VTEwhIik7Ci0gIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJtZSIsIDIpID09IDAsICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CisgIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJtZSIsIDIpID09IDAsCisgICAgICAgICAgICAgICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAKICAgLyoKICAgICogVGVzdCBhIG5vbiBleGlzdGVudCBsb2dpbiBhbmQgaG9zdCBpbiBvdXIgbmV0cmMgZmlsZS4KQEAgLTg1LDcgKzg2LDggQEAKICAgYWJvcnRfdW5sZXNzKHBhc3N3b3JkICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwogICBmYWlsX3VubGVzcyhwYXNzd29yZFswXSA9PSAwLCAicGFzc3dvcmQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogICBhYm9ydF91bmxlc3MobG9naW4gIT0gTlVMTCwgInJldHVybmVkIE5VTEwhIik7Ci0gIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJtZSIsIDIpID09IDAsICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CisgIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJtZSIsIDIpID09IDAsCisgICAgICAgICAgICAgICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAKICAgLyoKICAgICogVGVzdCBhIG5vbiBleGlzdGVudCBsb2dpbiAoc3Vic3RyaW5nIG9mIGFuIGV4aXN0aW5nIG9uZSkgaW4gb3VyCkBAIC05OSw3ICsxMDEsOCBAQAogICBhYm9ydF91bmxlc3MocGFzc3dvcmQgIT0gTlVMTCwgInJldHVybmVkIE5VTEwhIik7CiAgIGZhaWxfdW5sZXNzKHBhc3N3b3JkWzBdID09IDAsICJwYXNzd29yZCBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAgIGFib3J0X3VubGVzcyhsb2dpbiAhPSBOVUxMLCAicmV0dXJuZWQgTlVMTCEiKTsKLSAgZmFpbF91bmxlc3Moc3RybmNtcChsb2dpbiwgImFkbWkiLCA0KSA9PSAwLCAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOworICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAiYWRtaSIsIDQpID09IDAsCisgICAgICAgICAgICAgICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAKICAgLyoKICAgICogVGVzdCBhIG5vbiBleGlzdGVudCBsb2dpbiAoc3VwZXJzdHJpbmcgb2YgYW4gZXhpc3Rpbmcgb25lKQpAQCAtMTEzLDcgKzExNiw4IEBACiAgIGFib3J0X3VubGVzcyhwYXNzd29yZCAhPSBOVUxMLCAicmV0dXJuZWQgTlVMTCEiKTsKICAgZmFpbF91bmxlc3MocGFzc3dvcmRbMF0gPT0gMCwgInBhc3N3b3JkIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQiKTsKICAgYWJvcnRfdW5sZXNzKGxvZ2luICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwotICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAiYWRtaW5uIiwgNikgPT0gMCwgImxvZ2luIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQiKTsKKyAgZmFpbF91bmxlc3Moc3RybmNtcChsb2dpbiwgImFkbWlubiIsIDYpID09IDAsCisgICAgICAgICAgICAgICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAKICAgLyoKICAgICogVGVzdCBmb3IgdGhlIGZpcnN0IGV4aXN0aW5nIGhvc3QgaW4gb3VyIG5ldHJjIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMDUuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDUuYwppbmRleCA5NjkxM2YxLi45NWNmZTJiIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzA1LmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMwNS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsMTEgKzQ0LDExIEBACiBzdGF0aWMgY2hhciAqZGF0YV9rZXk7CiBzdGF0aWMgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICpkYXRhX25vZGU7CiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCiB7CiAgIGludCByYzsKICAgZGF0YSA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gIGlmICghZGF0YSkKKyAgaWYoIWRhdGEpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKICAgcmMgPSBDdXJsX21rX2Ruc2NhY2hlKCZocCk7CkBAIC02MCw5ICs2MCw5IEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgdW5pdF9zdG9wKCB2b2lkICkKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQogewotICBpZiAoZGF0YV9ub2RlKSB7CisgIGlmKGRhdGFfbm9kZSkgewogICAgIEN1cmxfZnJlZWFkZHJpbmZvKGRhdGFfbm9kZS0+YWRkcik7CiAgICAgZnJlZShkYXRhX25vZGUpOwogICB9CkBAIC0xMDMsMTUgKzEwMywxNSBAQAogc3RhdGljIENVUkxjb2RlIGNyZWF0ZV9ub2RlKHZvaWQpCiB7CiAgIGRhdGFfa2V5ID0gYXByaW50ZigiJXM6JWQiLCAiZHVtbXkiLCAwKTsKLSAgaWYgKCFkYXRhX2tleSkKKyAgaWYoIWRhdGFfa2V5KQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIGRhdGFfbm9kZSA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IEN1cmxfZG5zX2VudHJ5KSk7Ci0gIGlmICghZGF0YV9ub2RlKQorICBpZighZGF0YV9ub2RlKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIGRhdGFfbm9kZS0+YWRkciA9IGZha2VfYWkoKTsKLSAgaWYgKCFkYXRhX25vZGUtPmFkZHIpCisgIGlmKCFkYXRhX25vZGUtPmFkZHIpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMTI0LDcgKzEyNCw3IEBACiAgIHNpemVfdCBrZXlfbGVuOwogCiAgIC8qIFRlc3QgMTMwNSBleGl0cyB3aXRob3V0IGFkZGluZyBhbnl0aGluZyB0byB0aGUgaGFzaCAqLwotICBpZiAoc3RyY21wKGFyZywgIjEzMDUiKSAhPSAwKSB7CisgIGlmKHN0cmNtcChhcmcsICIxMzA1IikgIT0gMCkgewogICAgIENVUkxjb2RlIHJjID0gY3JlYXRlX25vZGUoKTsKICAgICBhYm9ydF91bmxlc3MocmMgPT0gQ1VSTEVfT0ssICJkYXRhIG5vZGUgY3JlYXRpb24gZmFpbGVkIik7CiAgICAga2V5X2xlbiA9IHN0cmxlbihkYXRhX2tleSk7CkBAIC0xMzQsOCArMTM0LDYgQEAKICAgICBhYm9ydF91bmxlc3Mobm9kZXAsICJpbnNlcnRpb24gaW50byBoYXNoIGZhaWxlZCIpOwogICAgIC8qIEZyZWVpbmcgd2lsbCBub3cgYmUgZG9uZSBieSBDdXJsX2hhc2hfZGVzdHJveSAqLwogICAgIGRhdGFfbm9kZSA9IE5VTEw7Ci0KLSAgICAvKiBUbyBkbzogdGVzdCByZXRyaWV2YWwsIGRlbGV0aW9uLCBlZGdlIGNvbmRpdGlvbnMgKi8KICAgfQogCiBVTklUVEVTVF9TVE9QCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzA3LmMgYi90ZXN0cy91bml0L3VuaXQxMzA3LmMKaW5kZXggYzI2ZTgwYy4uNTc2NDYyMiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwNy5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE2MCw3ICsxNjAsNyBAQAogICB7ICIqKioqLnR4dCIsICAgICAgICAgICAgICAgICAiLnR4dCIsICAgICAgICAgICAgICAgICAgIE1BVENIIH0sCiAKICAgLyogZW1wdHkgc3RyaW5nIG9yIHBhdHRlcm4gKi8KLSAgeyAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICBNQVRDSCB9ICwKKyAgeyAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICBNQVRDSCB9LAogICB7ICIiLCAgICAgICAgICAgICAgICAgICAgICAgICAiaGVsbG8iLCAgICAgICAgICAgICAgICAgIE5PTUFUQ0ggfSwKICAgeyAiZmlsZSIsICAgICAgICAgICAgICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICBOT01BVENIICB9LAogICB7ICI/IiwgICAgICAgICAgICAgICAgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgIE5PTUFUQ0ggfSwKQEAgLTIwOCwxMiArMjA4LDEyIEBACiAgIHsgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgTUFUQ0ggfQogfTsKIAotc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAoIHZvaWQgKQorc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAodm9pZCkKIHsKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKQorc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMDguYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDguYwppbmRleCA4MGU2YzU3Li45NjhiY2ZmIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzA4LmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMwOC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMDkuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDkuYwppbmRleCAxMzA0YmExLi4zY2Y2ZWVmIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzA5LmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMwOS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMzAuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMzAuYwppbmRleCAzMWNhZjMwLi5lNjQzMWJiIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzMwLmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMzMC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzOTQuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTQuYwppbmRleCBhM2VmOGZhLi42Njc5OTFkIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzk0LmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTM5NC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODQsMTIgKzg0LDE0IEBACiAgICAgICAgICAgICAgICJmb3IgLUUgcGFyYW0gJyVzJ1xuIiwgcFsxXSwgY2VydG5hbWUsIHBbMF0pOwogICAgICAgICAgIGZhaWwoImFzc2VydGlvbiBmYWlsdXJlIik7CiAgICAgICAgIH0KLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBlbHNlIHsKICAgICAgICAgcHJpbnRmKCJleHBlY3RlZCBjZXJ0bmFtZSAnJXMnIGJ1dCBnb3QgTlVMTCAiCiAgICAgICAgICAgICAiZm9yIC1FIHBhcmFtICclcydcbiIsIHBbMV0sIHBbMF0pOwogICAgICAgICBmYWlsKCJhc3NlcnRpb24gZmFpbHVyZSIpOwogICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgaWYoY2VydG5hbWUpIHsKICAgICAgICAgcHJpbnRmKCJleHBlY3RlZCBjZXJ0bmFtZSBOVUxMIGJ1dCBnb3QgJyVzJyAiCiAgICAgICAgICAgICAiZm9yIC1FIHBhcmFtICclcydcbiIsIGNlcnRuYW1lLCBwWzBdKTsKQEAgLTEwMywxMiArMTA1LDE0IEBACiAgICAgICAgICAgICAgICJmb3IgLUUgcGFyYW0gJyVzJ1xuIiwgcFsyXSwgcGFzc3BocmFzZSwgcFswXSk7CiAgICAgICAgICAgZmFpbCgiYXNzZXJ0aW9uIGZhaWx1cmUiKTsKICAgICAgICAgfQotICAgICAgfSBlbHNlIHsKKyAgICAgIH0KKyAgICAgIGVsc2UgewogICAgICAgICBwcmludGYoImV4cGVjdGVkIHBhc3NwaHJhc2UgJyVzJyBidXQgZ290IE5VTEwgIgogICAgICAgICAgICAgImZvciAtRSBwYXJhbSAnJXMnXG4iLCBwWzJdLCBwWzBdKTsKICAgICAgICAgZmFpbCgiYXNzZXJ0aW9uIGZhaWx1cmUiKTsKICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgIGlmKHBhc3NwaHJhc2UpIHsKICAgICAgICAgcHJpbnRmKCJleHBlY3RlZCBwYXNzcGhyYXNlIE5VTEwgYnV0IGdvdCAnJXMnICIKICAgICAgICAgICAgICJmb3IgLUUgcGFyYW0gJyVzJ1xuIiwgcGFzc3BocmFzZSwgcFswXSk7CmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzk1LmMgYi90ZXN0cy91bml0L3VuaXQxMzk1LmMKaW5kZXggNmY5ZmM4Yy4uMTNmNDY0MSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTM5NS5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYyLDYgKzYyLDkgQEAKICAgICB7ICIvLi4vLi4vbW9vP2FuZG5vdC8uLi95YXkiLCAiL21vbz9hbmRub3QvLi4veWF5In0sCiAgICAgeyAiLzEyMz9mb289Ly4vJmJhcj0vLi4vIiwgIi8xMjM/Zm9vPS8uLyZiYXI9Ly4uLyJ9LAogICAgIHsgIi8uLi9tb28vLi4/d2hhdCIsICIvP3doYXQiIH0sCisgICAgeyAiLyIsICIvIiB9LAorICAgIHsgIiIsICIiIH0sCisgICAgeyAiLy4uLi8iLCAiLy4uLi8iIH0sCiAgIH07CiAKICAgZm9yKGk9MDsgaSA8IHNpemVvZihwYWlycykvc2l6ZW9mKHBhaXJzWzBdKTsgaSsrKSB7CmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzk2LmMgYi90ZXN0cy91bml0L3VuaXQxMzk2LmMKaW5kZXggYjE4ZDdhOC4uODRhNTE2MiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTM5Ni5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDcgKzMwLDcgQEAKIAogc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCiB7Ci0gIGlmIChobmQpCisgIGlmKGhuZCkKICAgICBjdXJsX2Vhc3lfY2xlYW51cChobmQpOwogfQogCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzk3LmMgYi90ZXN0cy91bml0L3VuaXQxMzk3LmMKaW5kZXggYzA1YzExOS4uNTM5NDMzYyAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTM5Ny5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTcuYwpAQCAtMSwzICsxLDI0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSAiY3VybGNoZWNrLmgiCiAKICNpbmNsdWRlICJob3N0Y2hlY2suaCIgLyogZnJvbSB0aGUgbGliIGRpciAqLwpAQCAtNyw3ICsyOCw3IEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgdW5pdF9zdG9wKCB2b2lkICkKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQogewogICAvKiBkb25lIGJlZm9yZSBzaHV0dGluZyBkb3duIGFuZCBleGl0aW5nICovCiB9CkBAIC0xOSwyOSArNDAsMzYgQEAKIAogICAvKiBoZXJlIHlvdSBzdGFydCBkb2luZyB0aGluZ3MgYW5kIGNoZWNraW5nIHRoYXQgdGhlIHJlc3VsdHMgYXJlIGdvb2QgKi8KIAotZmFpbF91bmxlc3MoIEN1cmxfY2VydF9ob3N0Y2hlY2soInd3dy5leGFtcGxlLmNvbSIsICJ3d3cuZXhhbXBsZS5jb20iKSwgImdvb2QgMSIgKTsKLWZhaWxfdW5sZXNzKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuY29tIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiZ29vZCAyIiApOwotZmFpbF91bmxlc3MoIEN1cmxfY2VydF9ob3N0Y2hlY2soInh4eCouZXhhbXBsZS5jb20iLCAieHh4d3d3LmV4YW1wbGUuY29tIiksICJnb29kIDMiICk7Ci1mYWlsX3VubGVzcyggQ3VybF9jZXJ0X2hvc3RjaGVjaygiZiouZXhhbXBsZS5jb20iLCAiZm9vLmV4YW1wbGUuY29tIiksICJnb29kIDQiICk7Ci1mYWlsX3VubGVzcyggQ3VybF9jZXJ0X2hvc3RjaGVjaygiMTkyLjE2OC4wLjAiLCAiMTkyLjE2OC4wLjAiKSwgImdvb2QgNSIgKTsKK2ZhaWxfdW5sZXNzKEN1cmxfY2VydF9ob3N0Y2hlY2soInd3dy5leGFtcGxlLmNvbSIsICJ3d3cuZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICJnb29kIDEiKTsKK2ZhaWxfdW5sZXNzKEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksCisgICAgICAgICAgICAiZ29vZCAyIik7CitmYWlsX3VubGVzcyhDdXJsX2NlcnRfaG9zdGNoZWNrKCJ4eHgqLmV4YW1wbGUuY29tIiwgInh4eHd3dy5leGFtcGxlLmNvbSIpLAorICAgICAgICAgICAgImdvb2QgMyIpOworZmFpbF91bmxlc3MoQ3VybF9jZXJ0X2hvc3RjaGVjaygiZiouZXhhbXBsZS5jb20iLCAiZm9vLmV4YW1wbGUuY29tIiksCisgICAgICAgICAgICAiZ29vZCA0Iik7CitmYWlsX3VubGVzcyhDdXJsX2NlcnRfaG9zdGNoZWNrKCIxOTIuMTY4LjAuMCIsICIxOTIuMTY4LjAuMCIpLAorICAgICAgICAgICAgImdvb2QgNSIpOwogCi1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCJ4eHguZXhhbXBsZS5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksICJiYWQgMSIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIioiLCAid3d3LmV4YW1wbGUuY29tIiksICJiYWQgMiIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouKi5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksICJiYWQgMyIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS5jb20iLCAiYmFhLmZvby5leGFtcGxlLmNvbSIpLCAiYmFkIDQiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCJmKi5leGFtcGxlLmNvbSIsICJiYWEuZXhhbXBsZS5jb20iKSwgImJhZCA1IiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi5jb20iLCAiZXhhbXBsZS5jb20iKSwgImJhZCA2IiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygiKmZhaWwuY29tIiwgImV4YW1wbGUuY29tIiksICJiYWQgNyIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS4iLCAid3d3LmV4YW1wbGUuIiksICJiYWQgOCIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS4iLCAid3d3LmV4YW1wbGUiKSwgImJhZCA5IiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygiIiwgInd3dyIpLCAiYmFkIDEwIiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygiKiIsICJ3d3ciKSwgImJhZCAxMSIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouMTY4LjAuMCIsICIxOTIuMTY4LjAuMCIpLCAiYmFkIDEyIiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygid3d3LmV4YW1wbGUuY29tIiwgIjE5Mi4xNjguMC4wIiksICJiYWQgMTMiICk7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soInh4eC5leGFtcGxlLmNvbSIsICJ3d3cuZXhhbXBsZS5jb20iKSwgImJhZCAxIik7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soIioiLCAid3d3LmV4YW1wbGUuY29tIiksICJiYWQgMiIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLiouY29tIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiYmFkIDMiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi5leGFtcGxlLmNvbSIsICJiYWEuZm9vLmV4YW1wbGUuY29tIiksICJiYWQgNCIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCJmKi5leGFtcGxlLmNvbSIsICJiYWEuZXhhbXBsZS5jb20iKSwgImJhZCA1Iik7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soIiouY29tIiwgImV4YW1wbGUuY29tIiksICJiYWQgNiIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqZmFpbC5jb20iLCAiZXhhbXBsZS5jb20iKSwgImJhZCA3Iik7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS4iLCAid3d3LmV4YW1wbGUuIiksICJiYWQgOCIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuIiwgInd3dy5leGFtcGxlIiksICJiYWQgOSIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIiLCAid3d3IiksICJiYWQgMTAiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKiIsICJ3d3ciKSwgImJhZCAxMSIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLjE2OC4wLjAiLCAiMTkyLjE2OC4wLjAiKSwgImJhZCAxMiIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCJ3d3cuZXhhbXBsZS5jb20iLCAiMTkyLjE2OC4wLjAiKSwgImJhZCAxMyIpOwogCiAjaWZkZWYgRU5BQkxFX0lQVjYKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIio6OjMyODU6YTlmZjpmZTQ2OmI2MTkiLCAiZmU4MDo6MzI4NTphOWZmOmZlNDY6YjYxOSIpLCAiYmFkIDE0IiApOwotZmFpbF91bmxlc3MoIEN1cmxfY2VydF9ob3N0Y2hlY2soImZlODA6OjMyODU6YTlmZjpmZTQ2OmI2MTkiLCAiZmU4MDo6MzI4NTphOWZmOmZlNDY6YjYxOSIpLCAiZ29vZCA2IiApOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqOjozMjg1OmE5ZmY6ZmU0NjpiNjE5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmU4MDo6MzI4NTphOWZmOmZlNDY6YjYxOSIpLCAiYmFkIDE0Iik7CitmYWlsX3VubGVzcyhDdXJsX2NlcnRfaG9zdGNoZWNrKCJmZTgwOjozMjg1OmE5ZmY6ZmU0NjpiNjE5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZlODA6OjMyODU6YTlmZjpmZTQ2OmI2MTkiKSwgImdvb2QgNiIpOwogI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTM5OC5jIGIvdGVzdHMvdW5pdC91bml0MTM5OC5jCmluZGV4IGU1NzlhNjIuLjk0OTFjNDYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzOTguYworKysgYi90ZXN0cy91bml0L3VuaXQxMzk4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMyw4ICsyMyw4IEBACiAKICNpbmNsdWRlICJjdXJsL21wcmludGYuaCIKIAotc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAoIHZvaWQgKSB7cmV0dXJuIENVUkxFX09LO30KLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApIHt9CitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKSB7cmV0dXJuIENVUkxFX09LO30KK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKSB7fQogCiBVTklUVEVTVF9TVEFSVAogCkBAIC0zOCw1NCArMzgsNTQgQEAKIAogLyogd2l0aG91dCBhIHRyYWlsaW5nIHplcm8gKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA0LCAiJS4qcyIsIHdpZHRoLCBidWYpOwotZmFpbF91bmxlc3MoIHJjID09IDMgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiICk7CitmYWlsX3VubGVzcyhyYyA9PSAzLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiYnVnIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogd2l0aCBhIHRyYWlsaW5nIHplcm8gKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA0LCAiJS4qcyIsIHdpZHRoLCBzdHIpOwotZmFpbF91bmxlc3MoIHJjID09IDMgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiICk7CitmYWlsX3VubGVzcyhyYyA9PSAzLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiYnVnIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogd2lkdGggPSAyOwogLyogb25lIGJ5dGUgbGVzcyAqLwogcmMgPSBjdXJsX21zbnByaW50ZihvdXRwdXQsIDQsICIlLipzIiwgd2lkdGgsIGJ1Zik7Ci1mYWlsX3VubGVzcyggcmMgPT0gMiAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMiIgKTsKK2ZhaWxfdW5sZXNzKHJjID09IDIsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMiIpOwogZmFpbF91bmxlc3MoIXN0cmNtcChvdXRwdXQsICJidSIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIHN0cmluZyB3aXRoIGxhcmdlciBwcmVjaXNpb24gKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA4LCAiJS44cyIsIHN0cik7Ci1mYWlsX3VubGVzcyggcmMgPT0gMyAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMyIgKTsKK2ZhaWxfdW5sZXNzKHJjID09IDMsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMyIpOwogZmFpbF91bmxlc3MoIXN0cmNtcChvdXRwdXQsICJidWciKSwgIndyb25nIG91dHB1dCIpOwogCiAvKiBsb25nZXIgc3RyaW5nIHdpdGggcHJlY2lzaW9uICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgOCwgIiUuM3MiLCAiMDEyMzQ1Njc4OSIpOwotZmFpbF91bmxlc3MoIHJjID09IDMgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiICk7CitmYWlsX3VubGVzcyhyYyA9PSAzLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiMDEyIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogbmVnYXRpdmUgd2lkdGggKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA4LCAiJS04cyIsIHN0cik7Ci1mYWlsX3VubGVzcyggcmMgPT0gOCAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgOCIgKTsKK2ZhaWxfdW5sZXNzKHJjID09IDgsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgOCIpOwogZmFpbF91bmxlc3MoIXN0cmNtcChvdXRwdXQsICJidWcgICAgIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogbGFyZ2VyIHdpZHRoIHRoYXQgc3RyaW5nIGxlbmd0aCAqLwogcmMgPSBjdXJsX21zbnByaW50ZihvdXRwdXQsIDgsICIlOHMiLCBzdHIpOwotZmFpbF91bmxlc3MoIHJjID09IDggLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDgiICk7CitmYWlsX3VubGVzcyhyYyA9PSA4LCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDgiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiICAgICBidSIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIG91dHB1dCBhIG51bWJlciBpbiBhIGxpbWl0ZWQgb3V0cHV0ICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgNCwgIiVkIiwgMTAyNDApOwogLyogVE9ETzogdGhpcyBzaG91bGQgcmV0dXJuIDUgdG8gYmUgUE9TSVgvc25wcmludGYgY29tcGxpYW50ISAqLwotZmFpbF91bmxlc3MoIHJjID09IDQgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDQiICk7CitmYWlsX3VubGVzcyhyYyA9PSA0LCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDQiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiMTAyIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogcGFkZGVkIHN0cmluZ3MgKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCAxNiwgIiU4cyU4cyIsIHN0ciwgc3RyKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAxNiAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMTYiICk7CitmYWlsX3VubGVzcyhyYyA9PSAxNiwgInJldHVybiBjb2RlIHNob3VsZCBiZSAxNiIpOwogZmFpbF91bmxlc3MoIXN0cmNtcChvdXRwdXQsICIgICAgIGJ1ZyAgICAgYnUiKSwgIndyb25nIG91dHB1dCIpOwogCiAvKiBwYWRkZWQgbnVtYmVycyAqLwogcmMgPSBjdXJsX21zbnByaW50ZihvdXRwdXQsIDE2LCAiJThkJThkIiwgMTIzNCwgNTY3OCk7Ci1mYWlsX3VubGVzcyggcmMgPT0gMTYgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDE2IiApOworZmFpbF91bmxlc3MocmMgPT0gMTYsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMTYiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiICAgIDEyMzQgICAgNTY3IiksICJ3cm9uZyBvdXRwdXQiKTsKIAogVU5JVFRFU1RfU1RPUApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTYwMC5jIGIvdGVzdHMvdW5pdC91bml0MTYwMC5jCmluZGV4IDY4MDNjZjMuLmYwZjljYzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDE2MDAuYworKysgYi90ZXN0cy91bml0L3VuaXQxNjAwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw3ICszOSw4IEBACiAKIFVOSVRURVNUX1NUQVJUCiAKLSNpZiBkZWZpbmVkKFVTRV9OVExNKSAmJiAoIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgZGVmaW5lZChVU0VfV0lOMzJfQ1JZUFRPKSkKKyNpZiBkZWZpbmVkKFVTRV9OVExNKSAmJiAoIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKFVTRV9XSU4zMl9DUllQVE8pKQogICB1bnNpZ25lZCBjaGFyIG91dHB1dFsyMV07CiAgIHVuc2lnbmVkIGNoYXIgKnRlc3RwID0gb3V0cHV0OwogICBDdXJsX250bG1fY29yZV9ta19udF9oYXNoKGVhc3ksICIxIiwgb3V0cHV0KTsKQEAgLTU0LDYgKzU1LDcgQEAKICAgICAgICAgICAgICAgIlx4MzlceGFmXHg4N1x4YTZceDc1XHgwYVx4N2FceDAwXHhiYVx4YTAiCiAgICAgICAgICAgICAgICJceGQzXHg0Zlx4MDRceDllXHhjMVx4ZDBceDAwXHgwMFx4MDBceDAwXHgwMCIsIDIxKTsKIAorLyogIWNoZWNrc3JjISBkaXNhYmxlIExPTkdMSU5FIDIgKi8KICAgQ3VybF9udGxtX2NvcmVfbWtfbnRfaGFzaChlYXN5LCAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiwgb3V0cHV0KTsKIAogICB2ZXJpZnlfbWVtb3J5KHRlc3RwLApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTYwMS5jIGIvdGVzdHMvdW5pdC91bml0MTYwMS5jCmluZGV4IDE3YWJhMDUuLmE2MTIwZTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDE2MDEuYworKysgYi90ZXN0cy91bml0L3VuaXQxNjAxLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSwxMCArMzUsMTIgQEAKIAogVU5JVFRFU1RfU1RBUlQKIAorI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKICAgdW5zaWduZWQgY2hhciBvdXRwdXRbMTZdOwogICB1bnNpZ25lZCBjaGFyICp0ZXN0cCA9IG91dHB1dDsKICAgQ3VybF9tZDVpdChvdXRwdXQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIjEiKTsKIAorLyogIWNoZWNrc3JjISBkaXNhYmxlIExPTkdMSU5FIDIgKi8KICAgdmVyaWZ5X21lbW9yeSh0ZXN0cCwKICAgICAgICAgICAgICAgICAiXHhjNFx4Y2FceDQyXHgzOFx4YTBceGI5XHgyM1x4ODJceDBkXHhjY1x4NTBceDlhXHg2Zlx4NzVceDg0XHg5YiIsIDE2KTsKIApAQCAtNDYsNiArNDgsNyBAQAogCiAgIHZlcmlmeV9tZW1vcnkodGVzdHAsCiAgICAgICAgICAgICAgICAgIlx4ODhceDY3XHgwYlx4NmRceDVkXHg3NFx4MmZceGFkXHhhNVx4Y2RceGY5XHhiNlx4ODJceDg3XHg1Zlx4MjIiLCAxNik7CisjZW5kaWYKIAogCiBVTklUVEVTVF9TVE9QCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxNjAyLmMgYi90ZXN0cy91bml0L3VuaXQxNjAyLmMKaW5kZXggM2IyNTU1Ni4uYzY3YzBhNSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTYwMi5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDE1ICsyOCw3IEBACiAKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIiAvKiBMQVNUIGluY2x1ZGUgZmlsZSAqLwogCi0gc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAoIHZvaWQgKQotewotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApCi17Ci0KLX0KK3N0YXRpYyBzdHJ1Y3QgY3VybF9oYXNoIGhhc2hfc3RhdGljOwogCiBzdGF0aWMgdm9pZCBteWR0b3Iodm9pZCAqcCkKIHsKQEAgLTQ0LDM3ICszNiw0MyBAQAogICBmcmVlKHB0cik7CiB9CiAKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCit7CisgIHJldHVybiBDdXJsX2hhc2hfaW5pdCgmaGFzaF9zdGF0aWMsIDcsIEN1cmxfaGFzaF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3N0cl9rZXlfY29tcGFyZSwgbXlkdG9yKTsKK30KKworc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCit7CisgIEN1cmxfaGFzaF9kZXN0cm95KCZoYXNoX3N0YXRpYyk7Cit9CisKIFVOSVRURVNUX1NUQVJUCiAgIGludCAqdmFsdWU7CiAgIGludCAqdmFsdWUyOworICBpbnQgKm5vZGVwOwogICBzaXplX3Qga2xlbiA9IHNpemVvZihpbnQpOwogCi0gIHN0cnVjdCBjdXJsX2hhc2ggaGFzaF9zdGF0aWM7CiAgIGludCBrZXkgPSAyMDsKICAgaW50IGtleTIgPSAyNTsKLSAgaW50IHJjID0gMDsKIAotICByYyA9IEN1cmxfaGFzaF9pbml0KCZoYXNoX3N0YXRpYywgNywgQ3VybF9oYXNoX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEN1cmxfc3RyX2tleV9jb21wYXJlLCBteWR0b3IpOwotCi0gIGlmKHJjKQotICB7Ci0gICAgZmFpbCgiQ3VybF9oYXNoX2luaXQgZmFpbGVkIHRvIGluaXRpYWxpemUgc3RhdGljIGhhc2ghIik7Ci0gICAgZ290byB1bml0X3Rlc3RfYWJvcnQ7Ci0gIH0KIAogICB2YWx1ZSA9IG1hbGxvYyhzaXplb2YoaW50KSk7Ci0gIHZhbHVlMiA9IG1hbGxvYyhzaXplb2YoaW50KSk7Ci0KKyAgYWJvcnRfdW5sZXNzKHZhbHVlICE9IE5VTEwsICJPdXQgb2YgbWVtb3J5Iik7CiAgICp2YWx1ZSA9IDE5OTsKLSAgKnZhbHVlMiA9IDIwNDsKLSAgQ3VybF9oYXNoX2FkZCgmaGFzaF9zdGF0aWMsICZrZXksIGtsZW4sIHZhbHVlKTsKLSAgCisgIG5vZGVwID0gQ3VybF9oYXNoX2FkZCgmaGFzaF9zdGF0aWMsICZrZXksIGtsZW4sIHZhbHVlKTsKKyAgaWYoIW5vZGVwKQorICAgIGZyZWUodmFsdWUpOworICBhYm9ydF91bmxlc3Mobm9kZXAsICJpbnNlcnRpb24gaW50byBoYXNoIGZhaWxlZCIpOwogICBDdXJsX2hhc2hfY2xlYW4oJmhhc2hfc3RhdGljKTsKIAogICAvKiBBdHRlbXB0IHRvIGFkZCBhbm90aGVyIGtleS92YWx1ZSBwYWlyICovCi0gIEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5Miwga2xlbiwgdmFsdWUyKTsKKyAgdmFsdWUyID0gbWFsbG9jKHNpemVvZihpbnQpKTsKKyAgYWJvcnRfdW5sZXNzKHZhbHVlMiAhPSBOVUxMLCAiT3V0IG9mIG1lbW9yeSIpOworICAqdmFsdWUyID0gMjA0OworICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5Miwga2xlbiwgdmFsdWUyKTsKKyAgaWYoIW5vZGVwKQorICAgIGZyZWUodmFsdWUyKTsKKyAgYWJvcnRfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKIAotICBDdXJsX2hhc2hfZGVzdHJveSgmaGFzaF9zdGF0aWMpOwotICAKIFVOSVRURVNUX1NUT1AKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDE2MDMuYyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjBiMjBiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdW5pdC91bml0MTYwMy5jCkBAIC0wLDAgKzEsMTUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAiY3VybGNoZWNrLmgiCisKKyNkZWZpbmUgRU5BQkxFX0NVUkxYX1BSSU5URgorI2luY2x1ZGUgImN1cmx4LmgiCisKKyNpbmNsdWRlICJoYXNoLmgiCisKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIiAvKiBMQVNUIGluY2x1ZGUgZmlsZSAqLworCitzdGF0aWMgc3RydWN0IGN1cmxfaGFzaCBoYXNoX3N0YXRpYzsKK3N0YXRpYyBjb25zdCBpbnQgc2xvdHMgPSAzOworCitzdGF0aWMgdm9pZCBteWR0b3Iodm9pZCAqcCkKK3sKKyAgLyogRGF0YSBhcmUgc3RhdGljYWxseSBhbGxvY2F0ZWQgKi8KKyAodm9pZClwOyAvKiB1bnVzZWQgKi8KK30KKworc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAodm9pZCkKK3sKKyAgcmV0dXJuIEN1cmxfaGFzaF9pbml0KCZoYXNoX3N0YXRpYywgc2xvdHMsIEN1cmxfaGFzaF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3N0cl9rZXlfY29tcGFyZSwgbXlkdG9yKTsKK30KKworc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCit7CisgIEN1cmxfaGFzaF9kZXN0cm95KCZoYXNoX3N0YXRpYyk7Cit9CisKK1VOSVRURVNUX1NUQVJUCisgIGNoYXIga2V5MVtdID0gImtleTEiOworICBjaGFyIGtleTJbXSA9ICJrZXkyYiI7CisgIGNoYXIga2V5M1tdID0gImtleTMiOworICBjaGFyIGtleTRbXSA9ICJrZXk0IjsKKyAgY2hhciBub3Rha2V5W10gPSAibm90YWtleSI7CisgIGNoYXIgKm5vZGVwOworICBpbnQgcmM7CisKKyAgLyogRW5zdXJlIHRoZSBrZXkgaGFzaGVzIGFyZSBhcyBleHBlY3RlZCBpbiBvcmRlciB0byB0ZXN0IGJvdGggaGFzaAorICAgICBjb2xsaXNpb25zIGFuZCBhIGZ1bGwgdGFibGUuIFVuZm9ydHVuYXRlbHksIHRoZSBoYXNoZXMgY2FuIHZhcnkKKyAgICAgYmV0d2VlbiBhcmNoaXRlY3R1cmVzLiAqLworICBpZihDdXJsX2hhc2hfc3RyKGtleTEsIHN0cmxlbihrZXkxKSwgc2xvdHMpICE9IDEgfHwKKyAgICAgQ3VybF9oYXNoX3N0cihrZXkyLCBzdHJsZW4oa2V5MiksIHNsb3RzKSAhPSAwIHx8CisgICAgIEN1cmxfaGFzaF9zdHIoa2V5Mywgc3RybGVuKGtleTMpLCBzbG90cykgIT0gMiB8fAorICAgICBDdXJsX2hhc2hfc3RyKGtleTQsIHN0cmxlbihrZXk0KSwgc2xvdHMpICE9IDEpCisgICAgZnByaW50ZihzdGRlcnIsICJXYXJuaW5nOiBoYXNoZXMgYXJlIG5vdCBjb21wdXRlZCBhcyBleHBlY3RlZCBvbiB0aGlzICIKKyAgICAgICAgICAgICJhcmNoaXRlY3R1cmU7IHRlc3QgY292ZXJhZ2Ugd2lsbCBiZSBsZXNzIGNvbXByZWhlbnNpdmVcbiIpOworCisgIG5vZGVwID0gQ3VybF9oYXNoX2FkZCgmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSksICZrZXkxKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAsICJpbnNlcnRpb24gaW50byBoYXNoIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTEsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKworICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5Miwgc3RybGVuKGtleTIpLCAma2V5Mik7CisgIGZhaWxfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkyLCBzdHJsZW4oa2V5MikpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkyLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTMsIHN0cmxlbihrZXkzKSwgJmtleTMpOworICBmYWlsX3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Mywgc3RybGVuKGtleTMpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MywgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIFRoZSBmb3VydGggZWxlbWVudCBleGNlZWRzIHRoZSBudW1iZXIgb2Ygc2xvdHMgJiBjb2xsaWRlcyAqLworICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpLCAma2V5NCk7CisgIGZhaWxfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXk0LCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgLyogTWFrZSBzdXJlIGFsbCBlbGVtZW50cyBhcmUgc3RpbGwgYWNjZXNzaWJsZSAqLworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTEsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkyLCBzdHJsZW4oa2V5MikpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkyLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Mywgc3RybGVuKGtleTMpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MywgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTQsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKworICAvKiBEZWxldGUgdGhlIHNlY29uZCBvZiB0d28gZW50cmllcyBpbiBhIGJ1Y2tldCAqLworICByYyA9IEN1cmxfaGFzaF9kZWxldGUoJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3MocmMgPT0gMCwgImhhc2ggZGVsZXRlIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTEsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyghbm9kZXAsICJoYXNoIHJldHJpZXZhbCBzaG91bGQgaGF2ZSBmYWlsZWQiKTsKKworICAvKiBJbnNlcnQgdGhhdCBkZWxldGVkIG5vZGUgYWdhaW4gKi8KKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSwgJmtleTQpOworICBmYWlsX3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5NCwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIERlbGV0ZSB0aGUgZmlyc3Qgb2YgdHdvIGVudHJpZXMgaW4gYSBidWNrZXQgKi8KKyAgcmMgPSBDdXJsX2hhc2hfZGVsZXRlKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSk7CisgIGZhaWxfdW5sZXNzKHJjID09IDAsICJoYXNoIGRlbGV0ZSBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyghbm9kZXAsICJoYXNoIHJldHJpZXZhbCBzaG91bGQgaGF2ZSBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXk0LCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgLyogRGVsZXRlIHRoZSByZW1haW5pbmcgb25lIG9mIHR3byBlbnRyaWVzIGluIGEgYnVja2V0ICovCisgIHJjID0gQ3VybF9oYXNoX2RlbGV0ZSgmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyhyYyA9PSAwLCAiaGFzaCBkZWxldGUgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5MSwgc3RybGVuKGtleTEpKTsKKyAgZmFpbF91bmxlc3MoIW5vZGVwLCAiaGFzaCByZXRyaWV2YWwgc2hvdWxkIGhhdmUgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3MoIW5vZGVwLCAiaGFzaCByZXRyaWV2YWwgc2hvdWxkIGhhdmUgZmFpbGVkIik7CisKKyAgLyogRGVsZXRlIGFuIGFscmVhZHkgZGVsZXRlZCBub2RlICovCisgIHJjID0gQ3VybF9oYXNoX2RlbGV0ZSgmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyhyYywgImhhc2ggZGVsZXRlIHNob3VsZCBoYXZlIGZhaWxlZCIpOworCisgIC8qIFJlcGxhY2UgYW4gZXhpc3Rpbmcgbm9kZSAqLworICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5MSwgc3RybGVuKGtleTEpLCAmbm90YWtleSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBub3Rha2V5LCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgLyogTWFrZSBzdXJlIGFsbCByZW1haW5pbmcgZWxlbWVudHMgYXJlIHN0aWxsIGFjY2Vzc2libGUgKi8KKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkyLCBzdHJsZW4oa2V5MikpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkyLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Mywgc3RybGVuKGtleTMpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MywgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIENsZWFuIHVwICovCisgIEN1cmxfaGFzaF9jbGVhbigmaGFzaF9zdGF0aWMpOworCitVTklUVEVTVF9TVE9QCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxNjA0LmMgYi90ZXN0cy91bml0L3VuaXQxNjA0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyYmUwMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDQuYwpAQCAtMCwwICsxLDM0NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAiY3VybGNoZWNrLmgiCisKKyNpbmNsdWRlICJ0b29sX2NmZ2FibGUuaCIKKyNpbmNsdWRlICJ0b29sX2Rvc3dpbi5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgIm1lbWRlYnVnLmgiIC8qIExBU1QgaW5jbHVkZSBmaWxlICovCisKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCit7CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCit7CisKK30KKworI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lOMzIpCisKK3N0YXRpYyBjaGFyICpnZXRmbGFnc3RyKGludCBmbGFncykgeworICBjaGFyICpidWYgPSBtYWxsb2MoMjU2KTsKKyAgZmFpbF91bmxlc3MoYnVmLCAib3V0IG9mIG1lbW9yeSIpOworICBzbnByaW50ZihidWYsIDI1NiwgIiVzLCVzLCVzLCVzIiwKKyAgICAoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfQ09MT05TKSA/ICJTQU5JVElaRV9BTExPV19DT0xPTlMiIDogIiIpLAorICAgICgoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSA/ICJTQU5JVElaRV9BTExPV19QQVRIIiA6ICIiKSwKKyAgICAoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQpID8gIlNBTklUSVpFX0FMTE9XX1JFU0VSVkVEIiA6ICIiKSwKKyAgICAoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpID8gIlNBTklUSVpFX0FMTE9XX1RSVU5DQVRFIiA6ICIiKSk7CisgIHJldHVybiBidWY7Cit9CisKK3N0YXRpYyBjaGFyICpnZXRjdXJsY29kZXN0cihpbnQgY2MpIHsKKyAgY2hhciAqYnVmID0gbWFsbG9jKDI1Nik7CisgIGZhaWxfdW5sZXNzKGJ1ZiwgIm91dCBvZiBtZW1vcnkiKTsKKyAgc25wcmludGYoYnVmLCAyNTYsICIlcyAoJWQpIiwKKyAgICAoY2MgPT0gU0FOSVRJWkVfRVJSX09LID8gIlNBTklUSVpFX0VSUl9PSyIgOgorICAgICBjYyA9PSBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UID8gIlNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQiIDoKKyAgICAgY2MgPT0gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSCA/ICJTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIIiA6CisgICAgIGNjID09IFNBTklUSVpFX0VSUl9PVVRfT0ZfTUVNT1JZID8gIlNBTklUSVpFX0VSUl9PVVRfT0ZfTUVNT1JZIiA6CisgICAgICJ1bmV4cGVjdGVkIGVycm9yIGNvZGUgLSBhZGQgbmFtZSIpLAorICAgIGNjKTsKKyAgcmV0dXJuIGJ1ZjsKK30KKworc3RydWN0IGRhdGEgeworICBjb25zdCBjaGFyICppbnB1dDsKKyAgaW50IGZsYWdzOworICBjb25zdCBjaGFyICpleHBlY3RlZF9vdXRwdXQ7CisgIENVUkxjb2RlIGV4cGVjdGVkX3Jlc3VsdDsKK307CisKK1VOSVRURVNUX1NUQVJUCisKK3sgLyogU1RBUlQgc2FuaXRpemVfZmlsZV9uYW1lICovCisgIHN0cnVjdCBkYXRhIGRhdGFbXSA9IHsKKyAgICB7ICIiLCAwLAorICAgICAgIiIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAibm9ybWFsIGZpbGVuYW1lIiwgMCwKKyAgICAgICJub3JtYWwgZmlsZW5hbWUiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbnRyb2xcdGNoYXIiLCAwLAorICAgICAgImNvbnRyb2xfY2hhciIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiYmFubmVkKmNoYXIiLCAwLAorICAgICAgImJhbm5lZF9jaGFyIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOmZvbyIsIDAsCisgICAgICAiZl9mb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6Zm9vIiwgU0FOSVRJWkVfQUxMT1dfQ09MT05TLAorICAgICAgImY6Zm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOmZvbyIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiZjpmb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxmb28iLCAwLAorICAgICAgImZfX2ZvbyIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpcXGZvbyIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiZjpcXGZvbyIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjovZm9vIiwgMCwKKyAgICAgICJmX19mb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6L2ZvbyIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiZjovZm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyNpZm5kZWYgTVNET1MKKyAgICB7ICJcXFxcP1xcQzpcXGZvbyIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiXFxcXD9cXEM6XFxmb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIlxcXFw/XFxDOlxcZm9vIiwgMCwKKyAgICAgICJfX19fQ19fZm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyNlbmRpZgorICAgIHsgImZvbzpiYXIiLCAwLAorICAgICAgImZvb19iYXIiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImZvb3w8Pi9iYXJcXFwiOj8qYmF6IiwgMCwKKyAgICAgICJmb29fX19fYmFyX19fX19iYXoiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6Zm9vOjokREFUQSIsIDAsCisgICAgICAiZl9mb29fXyREQVRBIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb24gLiBhaXIiLCAwLAorICAgICAgImNvbiBfIGFpciIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29uLmFpciIsIDAsCisgICAgICAiY29uX2FpciIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29uOi94IiwgMCwKKyAgICAgICJjb25fX3giLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImZpbGUgLiAuIC4gLiAgLi4gIC4iLCAwLAorICAgICAgImZpbGUiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImZvbyAuIC4gPyAuIC4gIiwgMCwKKyAgICAgICJmb28gLiAuIF8iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbTEiLCAwLAorICAgICAgIl9jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb20xIiwgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQsCisgICAgICAiY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpcXGNvbTEiLCAwLAorICAgICAgImZfX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJmOlxcX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQsCisgICAgICAiZl9fY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpcXGNvbTEiLCBTQU5JVElaRV9BTExPV19SRVNFUlZFRCB8IFNBTklUSVpFX0FMTE9XX0NPTE9OUywKKyAgICAgICJmOl9jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVEIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJmOlxcY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29tMTpcXGNvbTEiLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIl9jb20xOlxcX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbTE6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQgfCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgImNvbTE6XFxjb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb20xOlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVELAorICAgICAgImNvbTFfX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorI2lmbmRlZiBNU0RPUworICAgIHsgIlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiXFxfY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiXFxcXGNvbTEiLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIlxcXFxjb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJcXFxcP1xcQzpcXGNvbTEiLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIlxcXFw/XFxDOlxcY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisjZW5kaWYKKyAgICB7ICJDb00xIiwgMCwKKyAgICAgICJfQ29NMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiQ29NMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVELAorICAgICAgIkNvTTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIkNPTTU2IiwgMCwKKyAgICAgICJDT001NiIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgLyogQXQgdGhlIG1vbWVudCB3ZSBleHBlY3QgYSBtYXhpbXVtIHBhdGggbGVuZ3RoIG9mIDI1OS4gSSBhc3N1bWUgTVNET1MKKyAgICAgICBoYXMgdmFyaWFibGUgbWF4IHBhdGggbGVuZ3RocyBkZXBlbmRpbmcgb24gY29tcGlsZXIgdGhhdCBhcmUgc2hvcnRlcgorICAgICAgIHNvIGN1cnJlbnRseSB0aGVzZSAiZ29vZCIgdHJ1bmNhdGUgdGVzdHMgd29uJ3QgcnVuIG9uIE1TRE9TICovCisjaWZuZGVmIE1TRE9TCisgICAgeyAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiCisgICAgICAiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIiCisgICAgICAiQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MiCisgICAgICAiREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQiCisgICAgICAiRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUiCisgICAgICAiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSwKKyAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZGRiIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiCisgICAgICAiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIiCisgICAgICAiQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MiCisgICAgICAiREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQiCisgICAgICAiRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUiCisgICAgICAiRkZGXFxGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIiwKKyAgICAgICAgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUgfCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRlxcRkZGRkYiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRlxcRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFLAorICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRl9GIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyNlbmRpZiAvKiAhTVNET1MgKi8KKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIDAsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRICisgICAgfSwKKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZGXFxGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSwKKyAgICAgIE5VTEwsIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEgKKyAgICB9LAorICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZcXEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgIE5VTEwsIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEgKKyAgICB9LAorICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRlxcRkZGRkZGRkZGRkZGRkZGRkZGRkZGOkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgIE5VTEwsIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEgKKyAgICB9LAorICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGXFxGOkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgIE5VTEwsIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEgKKyAgICB9LAorICAgIHsgTlVMTCwgMCwKKyAgICAgIE5VTEwsIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQKKyAgICB9LAorICB9OworCisgIHNpemVfdCBpOworCisgIGZvcihpID0gMDsgaSA8IHNpemVvZiBkYXRhIC8gc2l6ZW9mIGRhdGFbMF07ICsraSkgeworICAgIGNoYXIgKm91dHB1dCA9IE5VTEw7CisgICAgY2hhciAqZmxhZ3N0ciA9IE5VTEw7CisgICAgY2hhciAqcmVjZWl2ZWRfY2NzdHIgPSBOVUxMOworICAgIGNoYXIgKmV4cGVjdGVkX2Njc3RyID0gTlVMTDsKKworICAgIENVUkxjb2RlIHJlcyA9IHNhbml0aXplX2ZpbGVfbmFtZSgmb3V0cHV0LCBkYXRhW2ldLmlucHV0LCBkYXRhW2ldLmZsYWdzKTsKKworICAgIGlmKHJlcyA9PSBkYXRhW2ldLmV4cGVjdGVkX3Jlc3VsdCAmJgorICAgICAgICgoIW91dHB1dCAmJiAhZGF0YVtpXS5leHBlY3RlZF9vdXRwdXQpIHx8CisgICAgICAgIChvdXRwdXQgJiYgZGF0YVtpXS5leHBlY3RlZF9vdXRwdXQgJiYKKyAgICAgICAgICFzdHJjbXAob3V0cHV0LCBkYXRhW2ldLmV4cGVjdGVkX291dHB1dCkpKSkgeyAvKiBPSyAqLworICAgICAgZnJlZShvdXRwdXQpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgZmxhZ3N0ciA9IGdldGZsYWdzdHIoZGF0YVtpXS5mbGFncyk7CisgICAgcmVjZWl2ZWRfY2NzdHIgPSBnZXRjdXJsY29kZXN0cihyZXMpOworICAgIGV4cGVjdGVkX2Njc3RyID0gZ2V0Y3VybGNvZGVzdHIoZGF0YVtpXS5leHBlY3RlZF9yZXN1bHQpOworCisgICAgdW5pdGZhaWwrKzsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIgorICAgICAgICAgICAgIiVzOiVkIHNhbml0aXplX2ZpbGVfbmFtZSBmYWlsZWQuXG4iCisgICAgICAgICAgICAiaW5wdXQ6ICVzXG4iCisgICAgICAgICAgICAiZmxhZ3M6ICVzXG4iCisgICAgICAgICAgICAib3V0cHV0OiAlc1xuIgorICAgICAgICAgICAgInJlc3VsdDogJXNcbiIKKyAgICAgICAgICAgICJleHBlY3RlZCBvdXRwdXQ6ICVzXG4iCisgICAgICAgICAgICAiZXhwZWN0ZWQgcmVzdWx0OiAlc1xuIiwKKyAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgIGRhdGFbaV0uaW5wdXQsCisgICAgICAgICAgICBmbGFnc3RyLAorICAgICAgICAgICAgKG91dHB1dCA/IG91dHB1dCA6ICIobnVsbCkiKSwKKyAgICAgICAgICAgIHJlY2VpdmVkX2Njc3RyLAorICAgICAgICAgICAgKGRhdGFbaV0uZXhwZWN0ZWRfb3V0cHV0ID8gZGF0YVtpXS5leHBlY3RlZF9vdXRwdXQgOiAiKG51bGwpIiksCisgICAgICAgICAgICBleHBlY3RlZF9jY3N0cik7CisKKyAgICBmcmVlKG91dHB1dCk7CisgICAgZnJlZShmbGFnc3RyKTsKKyAgICBmcmVlKHJlY2VpdmVkX2Njc3RyKTsKKyAgICBmcmVlKGV4cGVjdGVkX2Njc3RyKTsKKyAgfQorfSAvKiBFTkQgc2FuaXRpemVfZmlsZV9uYW1lICovCisKKyNlbHNlCitVTklUVEVTVF9TVEFSVAorCit7CisgIGZwcmludGYoc3RkZXJyLCAiU2tpcHBlZCB0ZXN0IG5vdCBmb3IgdGhpcyBwbGF0Zm9ybVxuIik7Cit9CisjZW5kaWYgLyogTVNET1MgfHwgV0lOMzIgKi8KKworVU5JVFRFU1RfU1RPUApkaWZmIC0tZ2l0IGEvdGVzdHMvdmFsZ3JpbmQucG0gYi90ZXN0cy92YWxncmluZC5wbQppbmRleCBmODExOTkzLi44MzgxODNiIDEwMDY0NAotLS0gYS90ZXN0cy92YWxncmluZC5wbQorKysgYi90ZXN0cy92YWxncmluZC5wbQpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvd2luYnVpbGQvQlVJTEQuV0lORE9XUy50eHQgYi93aW5idWlsZC9CVUlMRC5XSU5ET1dTLnR4dAppbmRleCA2MDBmNzM3Li4wZDYwYjk2IDEwMDY0NAotLS0gYS93aW5idWlsZC9CVUlMRC5XSU5ET1dTLnR4dAorKysgYi93aW5idWlsZC9CVUlMRC5XSU5ET1dTLnR4dApAQCAtMSw1ICsxLDUgQEAKLUJ1aWxkaW5nIHdpdGggVmlzdWFsIEMrKywgcHJlcmVxdWlzZXMNCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorQnVpbGRpbmcgd2l0aCBWaXN1YWwgQysrLCBwcmVyZXF1aXNpdGVzDQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogDQogICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIGNvbXBpbGUsIGJ1aWxkIGFuZCBpbnN0YWxsIGN1cmwgYW5kIGxpYmN1cmwNCiAgICBmcm9tIHNvdXJjZXMgdXNpbmcgdGhlIFZpc3VhbCBDKysgYnVpbGQgdG9vbC4gVG8gYnVpbGQgd2l0aCBWQysrLCB5b3Ugd2lsbA0KQEAgLTEyLDEyICsxMiwxMiBAQAogDQogICAgVGhlIGxhdGVzdCBQbGF0Zm9ybSBTREsgY2FuIGJlIGRvd25sb2FkZWQgZnJlZWx5IGZyb206DQogDQotICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9iYjk4MDkyNA0KKyAgICBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL2JiOTgwOTI0DQogDQogICAgSWYgeW91IGFyZSBidWlsZGluZyB3aXRoIFZDNiB0aGVuIHlvdSB3aWxsIGFsc28gbmVlZCB0aGUgRmVicnVhcnkgMjAwMw0KICAgIEVkaXRpb24gb2YgdGhlIFBsYXRmb3JtIFNESyB3aGljaCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOg0KIA0KLSAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTEyMjYxDQorICAgIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTEyMjYxDQogDQogICAgSWYgeW91IHdpc2ggdG8gc3VwcG9ydCB6bGliLCBvcGVuc3NsLCBjLWFyZXMsIHNzaDIsIHlvdSB3aWxsIGhhdmUgdG8gZG93bmxvYWQNCiAgICB0aGVtIHNlcGFyYXRlbHkgYW5kIGNvcHkgdGhlbSB0byB0aGUgZGVwcyBkaXJlY3RvcnkgYXMgc2hvd24gYmVsb3c6DQpAQCAtNTgsNyArNTgsNyBAQAogbm1ha2UgL2YgTWFrZWZpbGUudmMgbW9kZT08c3RhdGljIG9yIGRsbD4gPG9wdGlvbnM+DQogDQogd2hlcmUgPG9wdGlvbnM+IGlzIG9uZSBvciBtYW55IG9mOg0KLSAgVkM9PDYsNyw4LDksMTAsMTEsMTI+ICAgICAgICAtIFZDIHZlcnNpb25zDQorICBWQz08Niw3LDgsOSwxMCwxMSwxMiwxND4gICAgIC0gVkMgdmVyc2lvbnMNCiAgIFdJVEhfREVWRUw9PHBhdGg+ICAgICAgICAgICAgLSBQYXRocyBmb3IgdGhlIGRldmVsb3BtZW50IGZpbGVzIChTU0wsIHpsaWIsIGV0Yy4pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gc2liYmxpbmcgZGlyZWN0b3J5IGRlcHM6IC4uL2RlcHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJyYXJpZXMgY2FuIGJlIGZldGNoZWQgYXQgaHR0cDovL3dpbmRvd3MucGhwLm5ldC9kb3dubG9hZHMvcGhwLXNkay9kZXBzLw0KQEAgLTcxLDcgKzcxLDcgQEAKICAgRU5BQkxFX0lQVjY9PHllcyBvciBubz4gICAgICAtIEVuYWJsZSBJUHY2LCBkZWZhdWx0cyB0byB5ZXMNCiAgIEVOQUJMRV9JRE49PHllcyBvciBubz4gICAgICAgLSBFbmFibGUgdXNlIG9mIFdpbmRvd3MgSUROIEFQSXMsIGRlZmF1bHRzIHRvIHllcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVzIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXIsIG9yIGluc3RhbGxhdGlvbiBmcm9tOg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9kb3dubG9hZHMvZGV0YWlscy5hc3B4P0ZhbWlseUlEPUFENjE1OEQ3LUREQkEtNDE2QS05MTA5LTA3NjA3NDI1QTgxNQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2RldGFpbHMuYXNweD9GYW1pbHlJRD1BRDYxNThENy1EREJBLTQxNkEtOTEwOS0wNzYwNzQyNUE4MTUNCiAgIEVOQUJMRV9XSU5TU0w9PHllcyBvciBubz4gICAgLSBFbmFibGUgbmF0aXZlIFdpbmRvd3MgU1NMIHN1cHBvcnQsIGRlZmF1bHRzIHRvIHllcw0KICAgR0VOX1BEQj08eWVzIG9yIG5vPiAgICAgICAgICAtIEdlbmVyYXRlIFByb2dyYW0gRGF0YWJhc2UgKGRlYnVnIHN5bWJvbHMgZm9yIHJlbGVhc2UgYnVpbGQpDQogICBERUJVRz08eWVzIG9yIG5vPiAgICAgICAgICAgIC0gRGVidWcgYnVpbGRzDQpAQCAtODcsMyArODcsMTIgQEAKIGFscmVhZHkgYnVpbHQgYnV0IG5vdCB3aXRoIHRoYXQgb3B0aW9uLCBvciBpZiB0aGUgb3B0aW9uIHdhcyBzcGVjaWZpZWQNCiBkaWZmZXJlbnRseSwgeW91IG11c3QgZGVzdHJveSB0aGUgYnVpbGQgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24NCiBzbyB0aGF0IG5tYWtlIGNhbiBidWlsZCBpdCBmcm9tIHNjcmF0Y2guDQorDQorTGVnYWN5IFdpbmRvd3MgYW5kIFNTTA0KKz09PT09PT09PT09PT09PT09PT09PT0NCitXaGVuIHlvdSBidWlsZCBjdXJsIHVzaW5nIHRoZSBidWlsZCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSB0aGUgZGVmYXVsdCBTU0wNCitiYWNrZW5kIHdpbGwgYmUgV2luU1NMIChXaW5kb3dzIFNTUEksIG1vcmUgc3BlY2lmaWNhbGx5IFNjaGFubmVsKSwgdGhlIG5hdGl2ZQ0KK1NTTCBsaWJyYXJ5IHRoYXQgY29tZXMgd2l0aCB0aGUgV2luZG93cyBPUy4gV2luU1NMIGluIFdpbmRvd3MgPD0gWFAgaXMgbm90IGFibGUNCit0byBjb25uZWN0IHRvIHNlcnZlcnMgdGhhdCBubyBsb25nZXIgc3VwcG9ydCB0aGUgbGVnYWN5IGhhbmRzaGFrZXMgYW5kDQorYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlIHZlcnNpb25zLiBJZiB5b3Ugd2lsbCBiZSB1c2luZyBjdXJsIGluIG9uZSBvZiB0aG9zZQ0KK2VhcmxpZXIgdmVyc2lvbnMgb2YgV2luZG93cyB5b3Ugc2hvdWxkIGNob29zZSBhbm90aGVyIFNTTCBiYWNrZW5kIGxpa2UgT3BlblNTTC4NCmRpZmYgLS1naXQgYS93aW5idWlsZC9NYWtlZmlsZS5tc3ZjLm5hbWVzIGIvd2luYnVpbGQvTWFrZWZpbGUubXN2Yy5uYW1lcwppbmRleCA1NmM4MWFkLi4xM2VhZmFjIDEwMDY0NAotLS0gYS93aW5idWlsZC9NYWtlZmlsZS5tc3ZjLm5hbWVzCisrKyBiL3dpbmJ1aWxkL01ha2VmaWxlLm1zdmMubmFtZXMKQEAgLTksNyArOSw3IEBACiAjDQogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaA0KICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcw0KLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KICMNCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbA0KICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpkaWZmIC0tZ2l0IGEvd2luYnVpbGQvTWFrZWZpbGUudmMgYi93aW5idWlsZC9NYWtlZmlsZS52YwppbmRleCAyMWUxNjE0Li40ZjkwZTRhIDEwMDY0NAotLS0gYS93aW5idWlsZC9NYWtlZmlsZS52YworKysgYi93aW5idWlsZC9NYWtlZmlsZS52YwpAQCAtMSwyMDUgKzEsMjA4IEBACi0hSUYgIiQoTU9ERSkiPT0ic3RhdGljIg0KLVRBUkdFVCA9ICQoTElCX05BTUVfU1RBVElDKQ0KLUFTX0RMTCA9IGZhbHNlDQotQ0ZHU0VUPXRydWUNCi0hRUxTRUlGICIkKE1PREUpIj09ImRsbCINCi1UQVJHRVQgPSAkKExJQl9OQU1FX0RMTCkNCi1BU19ETEwgPSB0cnVlDQotQ0ZHU0VUPXRydWUNCi0hRUxTRQ0KLSFNRVNTQUdFIEludmFsaWQgbW9kZTogJChNT0RFKQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBVc2FnZQ0KLSMNCi0NCi0hTUVTU0FHRSBVc2FnZTogbm1ha2UgL2YgTWFrZWZpbGUudmMgbW9kZT08c3RhdGljIG9yIGRsbD4gPG9wdGlvbnM+DQotIU1FU1NBR0Ugd2hlcmUgPG9wdGlvbnM+IGlzIG9uZSBvciBtYW55IG9mOg0KLSFNRVNTQUdFICAgVkM9PDYsNyw4LDksMTAsMTEsMTI+ICAgICAgICAtIFZDIHZlcnNpb25zDQotIU1FU1NBR0UgICBXSVRIX0RFVkVMPTxwYXRoPiAgICAgICAgICAgIC0gUGF0aHMgZm9yIHRoZSBkZXZlbG9wbWVudCBmaWxlcyAoU1NMLCB6bGliLCBldGMuKQ0KLSFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHNpYmJsaW5nIGRpcmVjdG9yeSBkZXBzOiAuLi9kZXBzDQotIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlicmFyaWVzIGNhbiBiZSBmZXRjaGVkIGF0IGh0dHA6Ly9wZWNsMi5waHAubmV0L2Rvd25sb2Fkcy9waHAtd2luZG93cy1idWlsZHMvDQotIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5jb21wcmVzcyB0aGVtIGludG8gdGhlIGRlcHMgZm9sZGVyLg0KLSFNRVNTQUdFICAgV0lUSF9TU0w9PGRsbCBvciBzdGF0aWM+ICAgICAtIEVuYWJsZSBPcGVuU1NMIHN1cHBvcnQsIERMTCBvciBzdGF0aWMNCi0hTUVTU0FHRSAgIFdJVEhfQ0FSRVM9PGRsbCBvciBzdGF0aWM+ICAgLSBFbmFibGUgYy1hcmVzIHN1cHBvcnQsIERMTCBvciBzdGF0aWMNCi0hTUVTU0FHRSAgIFdJVEhfWkxJQj08ZGxsIG9yIHN0YXRpYz4gICAgLSBFbmFibGUgemxpYiBzdXBwb3J0LCBETEwgb3Igc3RhdGljDQotIU1FU1NBR0UgICBXSVRIX1NTSDI9PGRsbCBvciBzdGF0aWM+ICAgIC0gRW5hYmxlIGxpYlNTSDIgc3VwcG9ydCwgRExMIG9yIHN0YXRpYw0KLSFNRVNTQUdFICAgRU5BQkxFX0lETj08eWVzIG9yIG5vPiAgICAgICAtIEVuYWJsZSB1c2Ugb2YgV2luZG93cyBJRE4gQVBJcywgZGVmYXVsdHMgdG8geWVzDQotIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZXMgV2luZG93cyBWaXN0YSBvciBsYXRlciwgb3IgaW5zdGFsbGF0aW9uIGZyb206DQotIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SUQ9QUQ2MTU4RDctRERCQS00MTZBLTkxMDktMDc2MDc0MjVBODE1DQotIU1FU1NBR0UgICBFTkFCTEVfSVBWNj08eWVzIG9yIG5vPiAgICAgIC0gRW5hYmxlIElQdjYsIGRlZmF1bHRzIHRvIHllcw0KLSFNRVNTQUdFICAgRU5BQkxFX1NTUEk9PHllcyBvciBubz4gICAgICAtIEVuYWJsZSBTU1BJIHN1cHBvcnQsIGRlZmF1bHRzIHRvIHllcw0KLSFNRVNTQUdFICAgRU5BQkxFX1dJTlNTTD08eWVzIG9yIG5vPiAgICAtIEVuYWJsZSBuYXRpdmUgV2luZG93cyBTU0wgc3VwcG9ydCwgZGVmYXVsdHMgdG8geWVzDQotIU1FU1NBR0UgICBHRU5fUERCPTx5ZXMgb3Igbm8+ICAgICAgICAgIC0gR2VuZXJhdGUgUHJvZ3JhbSBEYXRhYmFzZSAoZGVidWcgc3ltYm9scyBmb3IgcmVsZWFzZSBidWlsZCkNCi0hTUVTU0FHRSAgIERFQlVHPTx5ZXMgb3Igbm8+ICAgICAgICAgICAgLSBEZWJ1ZyBidWlsZHMNCi0hTUVTU0FHRSAgIE1BQ0hJTkU9PHg4NiBvciB4NjQ+ICAgICAgICAgLSBUYXJnZXQgYXJjaGl0ZWN0dXJlIChkZWZhdWx0IHg2NCBvbiBBTUQ2NCwgeDg2IG9uIG90aGVycykNCi0hRVJST1IgcGxlYXNlIGNob29zZSBhIHZhbGlkIG1vZGUNCi0NCi0hRU5ESUYNCi0NCi0hSU5DTFVERSAiLi4vbGliL01ha2VmaWxlLmluYyINCi1MSUJDVVJMX09CSlM9JChDU09VUkNFUzouYz0ub2JqKQ0KLQ0KLSFJTkNMVURFICIuLi9zcmMvTWFrZWZpbGUuaW5jIg0KLQ0KLSMgdG9vbF9odWdlaGVscCBoYXMgYSBzcGVjaWFsIHJ1bGUNCi1DVVJMX09CSlM9JChDVVJMX0NGSUxFUzp0b29sX2h1Z2VoZWxwLmM9KQ0KLQ0KLUNVUkxfT0JKUz0kKENVUkxfT0JKUzouYz0ub2JqKQ0KLQ0KLQ0KLSMgYmFja3dhcmRzIGNvbXBhdGlibGUgY2hlY2sgZm9yIFVTRV9TU1BJDQotIUlGREVGIFVTRV9TU1BJDQotRU5BQkxFX1NTUEkgPSAkKFVTRV9TU1BJKQ0KLSFFTkRJRg0KLQ0KLSMgZGVmYXVsdCBvcHRpb25zDQotIUlGTkRFRiBNQUNISU5FDQotIUlGICIkKFBST0NFU1NPUl9BUkNISVRFQ1RVUkUpIj09IkFNRDY0Ig0KLU1BQ0hJTkUgPSB4NjQNCi0hRUxTRQ0KLU1BQ0hJTkUgPSB4ODYNCi0hRU5ESUYNCi0hRU5ESUYNCi0NCi0hSUZOREVGIEVOQUJMRV9JRE4NCi1VU0VfSUROID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX0lETikiPT0ieWVzIg0KLVVTRV9JRE4gPSB0cnVlDQotIUVMU0VJRiAiJChFTkFCTEVfSUROKSI9PSJubyINCi1VU0VfSUROID0gZmFsc2UNCi0hRU5ESUYNCi0NCi0hSUZOREVGIEVOQUJMRV9JUFY2DQotVVNFX0lQVjYgPSB0cnVlDQotIUVMU0VJRiAiJChFTkFCTEVfSVBWNikiPT0ieWVzIg0KLVVTRV9JUFY2ID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX0lQVjYpIj09Im5vIg0KLVVTRV9JUFY2ID0gZmFsc2UNCi0hRU5ESUYNCi0NCi0hSUZOREVGIEVOQUJMRV9TU1BJDQotVVNFX1NTUEkgPSB0cnVlDQotIUVMU0VJRiAiJChFTkFCTEVfU1NQSSkiPT0ieWVzIg0KLVVTRV9TU1BJID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX1NTUEkpIj09Im5vIg0KLVVTRV9TU1BJID0gZmFsc2UNCi0hRU5ESUYNCi0NCi0hSUZOREVGIEVOQUJMRV9XSU5TU0wNCi0hSUZERUYgV0lUSF9TU0wNCi1VU0VfV0lOU1NMID0gZmFsc2UNCi0hRUxTRQ0KLVVTRV9XSU5TU0wgPSAkKFVTRV9TU1BJKQ0KLSFFTkRJRg0KLSFFTFNFSUYgIiQoRU5BQkxFX1dJTlNTTCkiPT0ieWVzIg0KLVVTRV9XSU5TU0wgPSB0cnVlDQotIUVMU0VJRiAiJChFTkFCTEVfV0lOU1NMKSI9PSJubyINCi1VU0VfV0lOU1NMID0gZmFsc2UNCi0hRU5ESUYNCi0NCi1DT05GSUdfTkFNRV9MSUIgPSBsaWJjdXJsDQotDQotIUlGICIkKFdJVEhfU1NMKSI9PSJkbGwiDQotVVNFX1NTTCA9IHRydWUNCi1TU0wgICAgID0gZGxsDQotIUVMU0VJRiAiJChXSVRIX1NTTCkiPT0ic3RhdGljIg0KLVVTRV9TU0wgPSB0cnVlDQotU1NMICAgICA9IHN0YXRpYw0KLSFFTkRJRg0KLQ0KLSFJRiAiJChXSVRIX0NBUkVTKSI9PSJkbGwiDQotVVNFX0NBUkVTID0gdHJ1ZQ0KLUNBUkVTICAgICA9IGRsbA0KLSFFTFNFSUYgIiQoV0lUSF9DQVJFUykiPT0ic3RhdGljIg0KLVVTRV9DQVJFUyA9IHRydWUNCi1DQVJFUyAgICAgPSBzdGF0aWMNCi0hRU5ESUYNCi0NCi0hSUYgIiQoV0lUSF9aTElCKSI9PSJkbGwiDQotVVNFX1pMSUIgPSB0cnVlDQotWkxJQiAgICAgPSBkbGwNCi0hRUxTRUlGICIkKFdJVEhfWkxJQikiPT0ic3RhdGljIg0KLVVTRV9aTElCID0gdHJ1ZQ0KLVpMSUIgICAgID0gc3RhdGljDQotIUVORElGDQotDQotIUlGICIkKFdJVEhfU1NIMikiPT0iZGxsIg0KLVVTRV9TU0gyID0gdHJ1ZQ0KLVNTSDIgICAgID0gZGxsDQotIUVMU0VJRiAiJChXSVRIX1NTSDIpIj09InN0YXRpYyINCi1VU0VfU1NIMiA9IHRydWUNCi1TU0gyICAgICA9IHN0YXRpYw0KLSFFTkRJRg0KLQ0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS12YyQoVkMpLSQoTUFDSElORSkNCi0NCi0hSUYgIiQoREVCVUcpIj09InllcyINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktZGVidWcNCi0hRUxTRQ0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1yZWxlYXNlDQotIUVORElGDQotDQotIUlGICIkKEFTX0RMTCkiPT0idHJ1ZSINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktZGxsDQotIUVMU0UNCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktc3RhdGljDQotIUVORElGDQotDQotIUlGICIkKFVTRV9TU0wpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXNzbC0kKFNTTCkNCi0hRU5ESUYNCi0NCi0hSUYgIiQoVVNFX0NBUkVTKSI9PSJ0cnVlIg0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1jYXJlcy0kKENBUkVTKQ0KLSFFTkRJRg0KLQ0KLSFJRiAiJChVU0VfWkxJQikiPT0idHJ1ZSINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktemxpYi0kKFpMSUIpDQotIUVORElGDQotDQotIUlGICIkKFVTRV9TU0gyKSI9PSJ0cnVlIg0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1zc2gyLSQoU1NIMikNCi0hRU5ESUYNCi0NCi0hSUYgIiQoVVNFX0lQVjYpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLWlwdjYNCi0hRU5ESUYNCi0NCi0hSUYgIiQoVVNFX1NTUEkpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXNzcGkNCi0hRU5ESUYNCi0NCi0hSUYgIiQoVVNFX1dJTlNTTCkiPT0idHJ1ZSINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktd2luc3NsDQotIUVORElGDQotDQotIU1FU1NBR0UgY29uZmlndXJhdGlvbiBuYW1lOiAkKENPTkZJR19OQU1FX0xJQikNCi0NCi1CVUlMRF9ESVI9Li4vYnVpbGRzLyQoQ09ORklHX05BTUVfTElCKQ0KLUxJQkNVUkxfRElST0JKID0gLi5cYnVpbGRzXCQoQ09ORklHX05BTUVfTElCKS1vYmotbGliDQotQ1VSTF9ESVJPQkogPSAuLlxidWlsZHNcJChDT05GSUdfTkFNRV9MSUIpLW9iai1jdXJsDQotRElSRElTVCA9IC4uXGJ1aWxkc1wkKENPTkZJR19OQU1FX0xJQilcDQotDQotJChNT0RFKToNCi0JQFNFVCBESVJPQko9JChMSUJDVVJMX0RJUk9CSikNCi0JQFNFVCBNQUNST19OQU1FPUxJQkNVUkxfT0JKUw0KLQlAU0VUIE9VVEZJTEU9TElCQ1VSTF9PQkpTLmluYw0KLQlAZ2VuX3Jlc3BfZmlsZS5iYXQgJChMSUJDVVJMX09CSlMpDQotDQotCUBTRVQgRElST0JKPSQoQ1VSTF9ESVJPQkopDQotCUBTRVQgTUFDUk9fTkFNRT1DVVJMX09CSlMNCi0JQFNFVCBPVVRGSUxFPUNVUkxfT0JKUy5pbmMNCi0JQGdlbl9yZXNwX2ZpbGUuYmF0ICQoQ1VSTF9PQkpTKQ0KLQ0KLQlAU0VUIENPTkZJR19OQU1FX0xJQj0kKENPTkZJR19OQU1FX0xJQikNCi0JQFNFVCBNQUNISU5FPSQoTUFDSElORSkNCi0JQFNFVCBVU0VfSUROPSQoVVNFX0lETikNCi0JQFNFVCBVU0VfSVBWNj0kKFVTRV9JUFY2KQ0KLQlAU0VUIFVTRV9TU1BJPSQoVVNFX1NTUEkpDQotCUBTRVQgVVNFX1dJTlNTTD0kKFVTRV9XSU5TU0wpDQotCUAkKE1BS0UpIC9OT0xPR08gL0YgTWFrZWZpbGVCdWlsZC52Yw0KLQ0KLWNvcHlfZnJvbV9saWI6DQotCWVjaG8gY29weWluZyAuYy4uLg0KLQlGT1IgJSVpIElOICgkKENVUkxYX0NGSUxFUzovPVwpKSBETyBjb3B5ICUlaSAuLlxzcmNcDQorIUlGICIkKE1PREUpIj09InN0YXRpYyIKK1RBUkdFVCA9ICQoTElCX05BTUVfU1RBVElDKQorQVNfRExMID0gZmFsc2UKK0NGR1NFVD10cnVlCishRUxTRUlGICIkKE1PREUpIj09ImRsbCIKK1RBUkdFVCA9ICQoTElCX05BTUVfRExMKQorQVNfRExMID0gdHJ1ZQorQ0ZHU0VUPXRydWUKKyFFTFNFCishTUVTU0FHRSBJbnZhbGlkIG1vZGU6ICQoTU9ERSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVXNhZ2UKKyMKKworIU1FU1NBR0UgVXNhZ2U6IG5tYWtlIC9mIE1ha2VmaWxlLnZjIG1vZGU9PHN0YXRpYyBvciBkbGw+IDxvcHRpb25zPgorIU1FU1NBR0Ugd2hlcmUgPG9wdGlvbnM+IGlzIG9uZSBvciBtYW55IG9mOgorIU1FU1NBR0UgICBWQz08Niw3LDgsOSwxMCwxMSwxMiwxND4gICAgIC0gVkMgdmVyc2lvbnMKKyFNRVNTQUdFICAgV0lUSF9ERVZFTD08cGF0aD4gICAgICAgICAgICAtIFBhdGhzIGZvciB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgKFNTTCwgemxpYiwgZXRjLikKKyFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHNpYmJsaW5nIGRpcmVjdG9yeSBkZXBzOiAuLi9kZXBzCishTUVTU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJyYXJpZXMgY2FuIGJlIGZldGNoZWQgYXQgaHR0cDovL3BlY2wyLnBocC5uZXQvZG93bmxvYWRzL3BocC13aW5kb3dzLWJ1aWxkcy8KKyFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuY29tcHJlc3MgdGhlbSBpbnRvIHRoZSBkZXBzIGZvbGRlci4KKyFNRVNTQUdFICAgV0lUSF9TU0w9PGRsbCBvciBzdGF0aWM+ICAgICAtIEVuYWJsZSBPcGVuU1NMIHN1cHBvcnQsIERMTCBvciBzdGF0aWMKKyFNRVNTQUdFICAgV0lUSF9DQVJFUz08ZGxsIG9yIHN0YXRpYz4gICAtIEVuYWJsZSBjLWFyZXMgc3VwcG9ydCwgRExMIG9yIHN0YXRpYworIU1FU1NBR0UgICBXSVRIX1pMSUI9PGRsbCBvciBzdGF0aWM+ICAgIC0gRW5hYmxlIHpsaWIgc3VwcG9ydCwgRExMIG9yIHN0YXRpYworIU1FU1NBR0UgICBXSVRIX1NTSDI9PGRsbCBvciBzdGF0aWM+ICAgIC0gRW5hYmxlIGxpYlNTSDIgc3VwcG9ydCwgRExMIG9yIHN0YXRpYworIU1FU1NBR0UgICBFTkFCTEVfSUROPTx5ZXMgb3Igbm8+ICAgICAgIC0gRW5hYmxlIHVzZSBvZiBXaW5kb3dzIElETiBBUElzLCBkZWZhdWx0cyB0byB5ZXMKKyFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVzIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXIsIG9yIGluc3RhbGxhdGlvbiBmcm9tOgorIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9NzM0CishTUVTU0FHRSAgIEVOQUJMRV9JUFY2PTx5ZXMgb3Igbm8+ICAgICAgLSBFbmFibGUgSVB2NiwgZGVmYXVsdHMgdG8geWVzCishTUVTU0FHRSAgIEVOQUJMRV9TU1BJPTx5ZXMgb3Igbm8+ICAgICAgLSBFbmFibGUgU1NQSSBzdXBwb3J0LCBkZWZhdWx0cyB0byB5ZXMKKyFNRVNTQUdFICAgRU5BQkxFX1dJTlNTTD08eWVzIG9yIG5vPiAgICAtIEVuYWJsZSBuYXRpdmUgV2luZG93cyBTU0wgc3VwcG9ydCwgZGVmYXVsdHMgdG8geWVzCishTUVTU0FHRSAgIEdFTl9QREI9PHllcyBvciBubz4gICAgICAgICAgLSBHZW5lcmF0ZSBQcm9ncmFtIERhdGFiYXNlIChkZWJ1ZyBzeW1ib2xzIGZvciByZWxlYXNlIGJ1aWxkKQorIU1FU1NBR0UgICBERUJVRz08eWVzIG9yIG5vPiAgICAgICAgICAgIC0gRGVidWcgYnVpbGRzCishTUVTU0FHRSAgIE1BQ0hJTkU9PHg4NiBvciB4NjQ+ICAgICAgICAgLSBUYXJnZXQgYXJjaGl0ZWN0dXJlIChkZWZhdWx0IHg2NCBvbiBBTUQ2NCwgeDg2IG9uIG90aGVycykKKyFFUlJPUiBwbGVhc2UgY2hvb3NlIGEgdmFsaWQgbW9kZQorCishRU5ESUYKKworIUlOQ0xVREUgIi4uL2xpYi9NYWtlZmlsZS5pbmMiCitMSUJDVVJMX09CSlM9JChDU09VUkNFUzouYz0ub2JqKQorCishSU5DTFVERSAiLi4vc3JjL01ha2VmaWxlLmluYyIKKworIyB0b29sX2h1Z2VoZWxwIGhhcyBhIHNwZWNpYWwgcnVsZQorQ1VSTF9PQkpTPSQoQ1VSTF9DRklMRVM6dG9vbF9odWdlaGVscC5jPSkKKworQ1VSTF9PQkpTPSQoQ1VSTF9PQkpTOi5jPS5vYmopCisKKworIyBiYWNrd2FyZHMgY29tcGF0aWJsZSBjaGVjayBmb3IgVVNFX1NTUEkKKyFJRkRFRiBVU0VfU1NQSQorRU5BQkxFX1NTUEkgPSAkKFVTRV9TU1BJKQorIUVORElGCisKKyMgZGVmYXVsdCBvcHRpb25zCishSUZOREVGIE1BQ0hJTkUKKyFJRiAiJChQUk9DRVNTT1JfQVJDSElURUNUVVJFKSI9PSJBTUQ2NCIKK01BQ0hJTkUgPSB4NjQKKyFFTFNFCitNQUNISU5FID0geDg2CishRU5ESUYKKyFFTkRJRgorCishSUZOREVGIEVOQUJMRV9JRE4KK1VTRV9JRE4gPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9JRE4pIj09InllcyIKK1VTRV9JRE4gPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9JRE4pIj09Im5vIgorVVNFX0lETiA9IGZhbHNlCishRU5ESUYKKworIUlGTkRFRiBFTkFCTEVfSVBWNgorVVNFX0lQVjYgPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9JUFY2KSI9PSJ5ZXMiCitVU0VfSVBWNiA9IHRydWUKKyFFTFNFSUYgIiQoRU5BQkxFX0lQVjYpIj09Im5vIgorVVNFX0lQVjYgPSBmYWxzZQorIUVORElGCisKKyFJRk5ERUYgRU5BQkxFX1NTUEkKK1VTRV9TU1BJID0gdHJ1ZQorIUVMU0VJRiAiJChFTkFCTEVfU1NQSSkiPT0ieWVzIgorVVNFX1NTUEkgPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9TU1BJKSI9PSJubyIKK1VTRV9TU1BJID0gZmFsc2UKKyFFTkRJRgorCishSUZOREVGIEVOQUJMRV9XSU5TU0wKKyFJRkRFRiBXSVRIX1NTTAorVVNFX1dJTlNTTCA9IGZhbHNlCishRUxTRQorVVNFX1dJTlNTTCA9ICQoVVNFX1NTUEkpCishRU5ESUYKKyFFTFNFSUYgIiQoRU5BQkxFX1dJTlNTTCkiPT0ieWVzIgorVVNFX1dJTlNTTCA9IHRydWUKKyFFTFNFSUYgIiQoRU5BQkxFX1dJTlNTTCkiPT0ibm8iCitVU0VfV0lOU1NMID0gZmFsc2UKKyFFTkRJRgorCitDT05GSUdfTkFNRV9MSUIgPSBsaWJjdXJsCisKKyFJRiAiJChXSVRIX1NTTCkiPT0iZGxsIgorVVNFX1NTTCA9IHRydWUKK1NTTCAgICAgPSBkbGwKKyFFTFNFSUYgIiQoV0lUSF9TU0wpIj09InN0YXRpYyIKK1VTRV9TU0wgPSB0cnVlCitTU0wgICAgID0gc3RhdGljCishRU5ESUYKKworIUlGICIkKFdJVEhfQ0FSRVMpIj09ImRsbCIKK1VTRV9DQVJFUyA9IHRydWUKK0NBUkVTICAgICA9IGRsbAorIUVMU0VJRiAiJChXSVRIX0NBUkVTKSI9PSJzdGF0aWMiCitVU0VfQ0FSRVMgPSB0cnVlCitDQVJFUyAgICAgPSBzdGF0aWMKKyFFTkRJRgorCishSUYgIiQoV0lUSF9aTElCKSI9PSJkbGwiCitVU0VfWkxJQiA9IHRydWUKK1pMSUIgICAgID0gZGxsCishRUxTRUlGICIkKFdJVEhfWkxJQikiPT0ic3RhdGljIgorVVNFX1pMSUIgPSB0cnVlCitaTElCICAgICA9IHN0YXRpYworIUVORElGCisKKyFJRiAiJChXSVRIX1NTSDIpIj09ImRsbCIKK1VTRV9TU0gyID0gdHJ1ZQorU1NIMiAgICAgPSBkbGwKKyFFTFNFSUYgIiQoV0lUSF9TU0gyKSI9PSJzdGF0aWMiCitVU0VfU1NIMiA9IHRydWUKK1NTSDIgICAgID0gc3RhdGljCishRU5ESUYKKworQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXZjJChWQyktJChNQUNISU5FKQorCishSUYgIiQoREVCVUcpIj09InllcyIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1kZWJ1ZworIUVMU0UKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1yZWxlYXNlCishRU5ESUYKKworIUlGICIkKEFTX0RMTCkiPT0idHJ1ZSIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1kbGwKKyFFTFNFCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktc3RhdGljCishRU5ESUYKKworIUlGICIkKFVTRV9TU0wpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktc3NsLSQoU1NMKQorIUVORElGCisKKyFJRiAiJChVU0VfQ0FSRVMpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktY2FyZXMtJChDQVJFUykKKyFFTkRJRgorCishSUYgIiQoVVNFX1pMSUIpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktemxpYi0kKFpMSUIpCishRU5ESUYKKworIUlGICIkKFVTRV9TU0gyKSI9PSJ0cnVlIgorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXNzaDItJChTU0gyKQorIUVORElGCisKKyFJRiAiJChVU0VfSVBWNikiPT0idHJ1ZSIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1pcHY2CishRU5ESUYKKworIUlGICIkKFVTRV9TU1BJKSI9PSJ0cnVlIgorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXNzcGkKKyFFTkRJRgorCishSUYgIiQoVVNFX1dJTlNTTCkiPT0idHJ1ZSIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS13aW5zc2wKKyFFTkRJRgorCishTUVTU0FHRSBjb25maWd1cmF0aW9uIG5hbWU6ICQoQ09ORklHX05BTUVfTElCKQorCitCVUlMRF9ESVI9Li4vYnVpbGRzLyQoQ09ORklHX05BTUVfTElCKQorTElCQ1VSTF9ESVJPQkogPSAuLlxidWlsZHNcJChDT05GSUdfTkFNRV9MSUIpLW9iai1saWIKK0NVUkxfRElST0JKID0gLi5cYnVpbGRzXCQoQ09ORklHX05BTUVfTElCKS1vYmotY3VybAorRElSRElTVCA9IC4uXGJ1aWxkc1wkKENPTkZJR19OQU1FX0xJQilcCisKKyQoTU9ERSk6CisJQElGIE5PVCBFWElTVCAuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmggKCBcCisJICAgQ0FMTCAuLlxidWlsZGNvbmYuYmF0IFwKKwkpCisJQFNFVCBESVJPQko9JChMSUJDVVJMX0RJUk9CSikKKwlAU0VUIE1BQ1JPX05BTUU9TElCQ1VSTF9PQkpTCisJQFNFVCBPVVRGSUxFPUxJQkNVUkxfT0JKUy5pbmMKKwlAZ2VuX3Jlc3BfZmlsZS5iYXQgJChMSUJDVVJMX09CSlMpCisKKwlAU0VUIERJUk9CSj0kKENVUkxfRElST0JKKQorCUBTRVQgTUFDUk9fTkFNRT1DVVJMX09CSlMKKwlAU0VUIE9VVEZJTEU9Q1VSTF9PQkpTLmluYworCUBnZW5fcmVzcF9maWxlLmJhdCAkKENVUkxfT0JKUykKKworCUBTRVQgQ09ORklHX05BTUVfTElCPSQoQ09ORklHX05BTUVfTElCKQorCUBTRVQgTUFDSElORT0kKE1BQ0hJTkUpCisJQFNFVCBVU0VfSUROPSQoVVNFX0lETikKKwlAU0VUIFVTRV9JUFY2PSQoVVNFX0lQVjYpCisJQFNFVCBVU0VfU1NQST0kKFVTRV9TU1BJKQorCUBTRVQgVVNFX1dJTlNTTD0kKFVTRV9XSU5TU0wpCisJQCQoTUFLRSkgL05PTE9HTyAvRiBNYWtlZmlsZUJ1aWxkLnZjCisKK2NvcHlfZnJvbV9saWI6CisJZWNobyBjb3B5aW5nIC5jLi4uCisJRk9SICUlaSBJTiAoJChDVVJMWF9DRklMRVM6Lz1cKSkgRE8gY29weSAlJWkgLi5cc3JjXApkaWZmIC0tZ2l0IGEvd2luYnVpbGQvTWFrZWZpbGVCdWlsZC52YyBiL3dpbmJ1aWxkL01ha2VmaWxlQnVpbGQudmMKaW5kZXggMmNhZDE1Yy4uZDYzMTIwNCAxMDA2NDQKLS0tIGEvd2luYnVpbGQvTWFrZWZpbGVCdWlsZC52YworKysgYi93aW5idWlsZC9NYWtlZmlsZUJ1aWxkLnZjCkBAIC05LDcgKzksNyBAQAogIw0KICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gNCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMNCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCiAjDQogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwNCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KQEAgLTIyLDcgKzIyLDcgQEAKIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICMNCi0jIE1ha2VmaWxlIGZvciBidWlsZGluZyBsaWJjdXJsIHdpdGggTVNWQyA2LCA3LCA4LCA5LCAxMCwgMTEgYW5kIDEyDQorIyBNYWtlZmlsZSBmb3IgYnVpbGRpbmcgbGliY3VybCB3aXRoIE1TVkMgNiwgNywgOCwgOSwgMTAsIDExLCAxMiBhbmQgMTQNCiAjDQogIyBVc2FnZTogc2VlIHVzYWdlIG1lc3NhZ2UgYmVsb3cNCiAjICAgICAgICBTaG91bGQgYmUgaW52b2tlZCBmcm9tIHdpbmJ1aWxkIGRpcmVjdG9yeQ0KQEAgLTQzNiw2ICs0MzYsNyBAQAogDQogJChMSUJfRElST0JKKToNCiAJQGlmIG5vdCBleGlzdCAiJChMSUJfRElST0JKKSIgbWtkaXIgJChMSUJfRElST0JKKQ0KKwlAaWYgbm90IGV4aXN0ICIkKExJQl9ESVJPQkopXHZhdXRoIiBta2RpciAkKExJQl9ESVJPQkopXHZhdXRoDQogCUBpZiBub3QgZXhpc3QgIiQoTElCX0RJUk9CSilcdnRscyIgbWtkaXIgJChMSUJfRElST0JKKVx2dGxzDQogDQogJChDVVJMX0RJUk9CSik6DQpAQCAtNDQ5LDYgKzQ1MCw5IEBACiB7JChMSUJDVVJMX1NSQ19ESVIpXH0uY3skKExJQl9ESVJPQkopXH0ub2JqOg0KIAkkKENDKSAkKENGTEFHUykgL0ZvIiRAIiAgJDwNCiANCit7JChMSUJDVVJMX1NSQ19ESVIpXHZhdXRoXH0uY3skKExJQl9ESVJPQkopXHZhdXRoXH0ub2JqOg0KKwkkKENDKSAkKENGTEFHUykgL0ZvIiRAIiAgJDwNCisNCiB7JChMSUJDVVJMX1NSQ19ESVIpXHZ0bHNcfS5jeyQoTElCX0RJUk9CSilcdnRsc1x9Lm9iajoNCiAJJChDQykgJChDRkxBR1MpIC9GbyIkQCIgICQ8DQogDQo=