ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggMjdkZDlhNy4uNmQwZTcwYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDE5CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDIxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMxLDEwICszMSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU3BlbGxpbmc6Ci0tIFRlc3QgY291bnRpbmcgc3lsbGFibGVzIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgbWF4aW11bS4KLS0gVGVzdCBub2NvbXAgZmxhZyBmb3IgYWZmaXhlcy4KLQotLSBXaGVuIGxvb2tpbmcgZm9yIGZvbGxvd2luZyBjb21wb3VuZCB3b3JkLCBhbHNvIGRvIHBvc3Rwb25lZCBwcmVmaXhlcy4KKy0gTmV3IGh1bnNwZWxsIGhvbWUgcGFnZTogaHR0cDovL2h1bnNwZWxsLnNvdXJjZWZvcmdlLm5ldC8KIAogLSBJbXBsZW1lbnQgbXVsdGlwbGUgZmxhZ3MgZm9yIGNvbXBvdW5kIHdvcmRzIGFuZCBDTVAgaXRlbT8KICAgQXdhaXQgY29tbWVudHMgZnJvbSBvdGhlciBzcGVsbCBjaGVja2luZyBhdXRob3JzLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9lbC9lbF9HUi5kaWZmIGIvcnVudGltZS9zcGVsbC9lbC9lbF9HUi5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3NwZWxsL2VsL2VsX0dSLmRpZmYKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3BlbGwvaHIvaHJfSFIuZGlmZiBiL3J1bnRpbWUvc3BlbGwvaHIvaHJfSFIuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGZhZWJjCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zcGVsbC9oci9ocl9IUi5kaWZmCkBAIC0wLDAgKzEsMTEgQEAKKyoqKiBocl9IUi5vcmlnLmFmZglTdW4gQXVnIDE0IDIwOjAwOjU2IDIwMDUKKy0tLSBocl9IUi5hZmYJV2VkIEF1ZyAxNyAxNzoxMTozNSAyMDA1CisqKioqKioqKioqKioqKioKKyoqKiA0LDUgKioqKgorLS0tIDQsOSAtLS0tCisgIAorKyBGT0wgsaKztbaoubq7vL6/sbKztLW2t7i5uru8vb6/4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KKysgTE9XILGis7W2qLm6u7y+v7Gys7S1tre4ubq7vL2+v+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX2+Pn6+/z9/t//CisrIFVQUCChoqOlpqipqqusrq+xsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tjZ2tvc3d7f/worKyAKKyAgU0ZYIEEgTiAxCmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIvc3JjL2V2YWwuYwppbmRleCAyZGJiYjIyLi4zY2IzYmQ3IDEwMDY0NAotLS0gYS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTYxMiw2ICs2MTIsNyBAQAogc3RhdGljIHZvaWQgZl9zeXN0ZW0gX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CiBzdGF0aWMgdm9pZCBmX3RhZ2xpc3QgX19BUkdTKCh0eXB2YWxfVCAqYXJndmFycywgdHlwdmFsX1QgKnJldHR2KSk7CiBzdGF0aWMgdm9pZCBmX3RlbXBuYW1lIF9fQVJHUygodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikpOworc3RhdGljIHZvaWQgZl90ZXN0IF9fQVJHUygodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikpOwogc3RhdGljIHZvaWQgZl90b2xvd2VyIF9fQVJHUygodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikpOwogc3RhdGljIHZvaWQgZl90b3VwcGVyIF9fQVJHUygodHlwdmFsX1QgKmFyZ3ZhcnMsIHR5cHZhbF9UICpyZXR0dikpOwogc3RhdGljIHZvaWQgZl90ciBfX0FSR1MoKHR5cHZhbF9UICphcmd2YXJzLCB0eXB2YWxfVCAqcmV0dHYpKTsKQEAgLTY4NDksNiArNjg1MCw3IEBACiAgICAgeyJzeXN0ZW0iLAkJMSwgMiwgZl9zeXN0ZW19LAogICAgIHsidGFnbGlzdCIsCQkxLCAxLCBmX3RhZ2xpc3R9LAogICAgIHsidGVtcG5hbWUiLAkwLCAwLCBmX3RlbXBuYW1lfSwKKyAgICB7InRlc3QiLAkJMSwgMSwgZl90ZXN0fSwKICAgICB7InRvbG93ZXIiLAkJMSwgMSwgZl90b2xvd2VyfSwKICAgICB7InRvdXBwZXIiLAkJMSwgMSwgZl90b3VwcGVyfSwKICAgICB7InRyIiwJCTMsIDMsIGZfdHJ9LApAQCAtMTE5NTIsNyArMTE5NTQsNyBAQAogewogICAgIHJldHR2LT52X3R5cGUgPSBWQVJfU1RSSU5HOwogICAgIHJldHR2LT52dmFsLnZfc3RyaW5nID0gTlVMTDsKLSNpZmRlZiBIQVZFX1NUREFSR19ICisjaWZkZWYgSEFWRV9TVERBUkdfSAkgICAgLyogb25seSB2ZXJ5IG9sZCBjb21waWxlcnMgY2FuJ3QgZG8gdGhpcyAqLwogICAgIHsKIAljaGFyX3UJYnVmW05VTUJVRkxFTl07CiAJaW50CWxlbjsKQEAgLTExOTYxLDEwICsxMTk2Myw4IEBACiAJY2hhcgkqZm10OwogCXZhX2xpc3QJYXA7IC8qIGR1bW15ICovCiAKLSMgaWZkZWYgTElOVAotCS8qIGF2b2lkIHdhcm5pbmcgZm9yICJhcCIgdXNlZCBiZWZvcmUgc2V0OyBpdCBpcyB1bnVzZWQuICovCisJLyogQXZvaWQgd2FybmluZyBmb3IgImFwIiB1c2VkIGJlZm9yZSBzZXQ7IGl0J3MgdW51c2VkLiAqLwogCXZhX3N0YXJ0KGFwLCByZXR0dik7Ci0jIGVuZGlmCiAKIAkvKiBHZXQgdGhlIHJlcXVpcmVkIGxlbmd0aCwgYWxsb2NhdGUgdGhlIGJ1ZmZlciBhbmQgZG8gaXQgZm9yIHJlYWwuICovCiAJZGlkX2Vtc2cgPSBGQUxTRTsKQEAgLTE0NDkwLDYgKzE0NDkwLDM4IEBACiB9CiAKIC8qCisgKiAidGVzdChsaXN0KSIgZnVuY3Rpb246IEp1c3QgY2hlY2tpbmcgdGhlIHdhbGxzLi4uCisgKi8KKy8qQVJHU1VTRUQqLworICAgIHN0YXRpYyB2b2lkCitmX3Rlc3QoYXJndmFycywgcmV0dHYpCisgICAgdHlwdmFsX1QJKmFyZ3ZhcnM7CisgICAgdHlwdmFsX1QJKnJldHR2OworeworICAgIC8qIFVzZWQgZm9yIHVuaXQgdGVzdGluZy4gIENoYW5nZSB0aGUgY29kZSBiZWxvdyB0byB5b3VyIGxpa2luZy4gKi8KKyNpZiAwCisgICAgbGlzdGl0ZW1fVAkqbGk7CisgICAgbGlzdF9UCSpsOworICAgIGNoYXJfdQkqYmFkLCAqZ29vZDsKKworICAgIGlmIChhcmd2YXJzWzBdLnZfdHlwZSAhPSBWQVJfTElTVCkKKwlyZXR1cm47CisgICAgbCA9IGFyZ3ZhcnNbMF0udnZhbC52X2xpc3Q7CisgICAgaWYgKGwgPT0gTlVMTCkKKwlyZXR1cm47CisgICAgbGkgPSBsLT5sdl9maXJzdDsKKyAgICBpZiAobGkgPT0gTlVMTCkKKwlyZXR1cm47CisgICAgYmFkID0gZ2V0X3R2X3N0cmluZygmbGktPmxpX3R2KTsKKyAgICBsaSA9IGxpLT5saV9uZXh0OworICAgIGlmIChsaSA9PSBOVUxMKQorCXJldHVybjsKKyAgICBnb29kID0gZ2V0X3R2X3N0cmluZygmbGktPmxpX3R2KTsKKyAgICByZXR0di0+dnZhbC52X251bWJlciA9IHRlc3RfZWRpdF9zY29yZShiYWQsIGdvb2QpOworI2VuZGlmCit9CisKKy8qCiAgKiAidG9sb3dlcihzdHJpbmcpIiBmdW5jdGlvbgogICovCiAgICAgc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5pbiBiL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5pbgppbmRleCBlMDUzMjYxLi4xYmViNDU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0NTguaW4KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDU4LmluCkBAIC0xMDUsMTIgKzEwNSwzMSBAQAogOm1rc3BlbGwhIFh0ZXN0IFh0ZXN0CiA6c2V0IHNwZWxsZmlsZT0KIDpzZXQgc3BsPVh0ZXN0LmxhdGluMS5zcGwKLTptZXNzCiA6c3BlbGxkdW1wCiAxR3lHOnEKIDokcHV0CiA6Y2FsbCBTcGVsbFRlc3QoKQogOiIKKzoiIENvbXBvdW5kaW5nCitnZzovXmNvbXBhZmZzdGFydC8rMSwvXmNvbXBhZmZlbmQvLTF3ISBYdGVzdC5hZmYKK2dnOi9eY29tcGRpY3N0YXJ0LysxLC9eY29tcGRpY2VuZC8tMXchIFh0ZXN0LmRpYworOm1rc3BlbGwhIFh0ZXN0IFh0ZXN0Cis6c2V0IHNwZWxsZmlsZT0KKzpzZXQgc3BsPVh0ZXN0LmxhdGluMS5zcGwKKzpzcGVsbGR1bXAKKzFHeUc6cQorOiRwdXQKKy9eY29tcHRlc3Q6Cis6Zm9yIGkgaW4gcmFuZ2UoMTIpCitub3JtYWwgXXNtbQorbGV0IHN0ciA9IHNwZWxsYmFkd29yZCgpCiskcHV0ID1zdHIKK25vcm1hbCBgbQorbGV0IGxzdCA9IHNwZWxsc3VnZ2VzdChzdHIsIDMpCiskcHV0ID1zdHJpbmcobHN0KQorbm9ybWFsIGBtCitlbmRmb3IKKzoiCiBnZzovXnRlc3Qgb3V0cHV0Oi8sJHdxISB0ZXN0Lm91dAogRU5EVEVTVAogCkBAIC0zODQsNiArNDAzLDYxIEBACiBk6fRyCiBkaWNlbmQKIAorY29tcGFmZnN0YXJ0CitTRVQgSVNPODg1OS0xCisKK0ZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KK0xPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KK1VQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KKworQ09NUE9VTkRGTEFHUyBtKworQ09NUE9VTkRGTEFHUyBzbSplCitDT01QT1VOREZMQUdTIHNtKworQ09NUE9VTkRNSU4gMworQ09NUE9VTkRNQVggMworCitDT01QT1VORFNZTE1BWCA1CitTWUxMQUJMRSBh4WXpae1v8/b1dfr8+3kvYWEvYXUvZWEvZWUvZWkvaWUvb2Evb2Uvb28vb3UvdXUvdWkKKworTUFQIDkKK01BUCBh4OHi4+TlCitNQVAgZejp6usKK01BUCBp7O3u7worTUFQIG/y8/T19gorTUFQIHX5+vv8CitNQVAgbvEKK01BUCBj5worTUFQIHn//QorTUFQIHPfCisKK05FRURBRkZJWCB4CisKK1BGWFBPU1RQT05FCisKK01JRFdPUkQgJy0KKworU0ZYIHEgTiAxCitTRlggcSAgIDAgICAgLW9rIC4KKworU0ZYIGEgWSAyCitTRlggYSAwIHMgLgorU0ZYIGEgMCBpemUgLiBub2NvbXAKKworUEZYIHAgTiAxCitQRlggcCAwIHByZSAuCitjb21wYWZmZW5kCisKK2NvbXBkaWNzdGFydAorMTIzNAord29yZC9tCit1dGlsL2FtCitwcm8veHEKK3RvbWF0by9tCitib3JrL21wCitzdGFydC9zCitlbmQvZQorY29tcGRpY2VuZAorCiBhZGRzdGFydAogL3JlZ2lvbnM9dXNnYm56CiBlbGVxdWludC8yCkBAIC00MDIsNSArNDc2LDE1IEBACiB0ZXN0MjoKIGVsZXF1aW50IHRlc3QgZWxla3dpbnQgdGVzdCBlbGVrd2VudCBhc2RmCiAKK2NvbXB0ZXN0Ogord29yZCB1dGlsCit3b3JkdXRpbCB3b3JkdXRpbHMgd29yZHV0aWxpemUKK3BybyBwcm8tb2sKK2JvcmsgYm9ya2JvcmsgYm9ya2Jvcmtib3JrIGJvcmtib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9ya2JvcmsKK3RvbWF0byB0b21hdG90b21hdG8gdG9tYXRvdG9tYXRvdG9tYXRvCitzdGFydGVuZCBlbmRzdGFydCBlbmRlbmQgc3RhcnRzdGFydAorc3RhcnR3b3JkIHN0YXJ0d29yZHdvcmQgd29yZHN0YXJ0IHN0YXJ0d29yZGVuZCBzdGFydHdvcmR3b3JkZW5kCitwcmVib3JrIHByZWJvcmtwcmVib3JrIHByZWJvcmtib3JrcHJlYm9yayBwcmVib3JrcHJlYm9ya2JvcmsKK2JvcmtwcmVib3JrcHJlYm9ya2JvcmsKIAogdGVzdCBvdXRwdXQ6Cg==