From: Tom St Denis Subject: [PATCH umr] Add more detail and colour to the ring decoder Date: Tue, 28 Nov 2017 14:02:36 -0500 Message-ID: <20171128190236.786-1-tom.stdenis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Tom St Denis Tm93IHlvdSBjYW4gdXNlICctTyB1c2VfY29sb3VyJyB0byBzcHJ1Y2UgdXAgdGhlIHJpbmcvaWIK ZGVjb2Rlci4gICBZb3UgY2FuIHByZXZpb3VzbHkgdXNlICctTyBiaXRzJyB0byBkZWNvZGUKcmVn aXN0ZXIgd3JpdGVzIHdoaWNoIGhhcyBhbHNvIGJlZW4gY2xlYW5lZCB1cC4KCkFzc3VtZXMgYSB3 aWRlIGRpc3BsYXkgd2hpY2ggZm9yIGEgZ3JhcGhpY3MgY29tcGFueSBpcyBwcm9iYWJseQpzYWZl IHRvIGFzc3VtZSB5b3UncmUgbm90IG9uIGFuIDgweDI1IE1EQSBkaXNwbGF5LgoKU2lnbmVkLW9m Zi1ieTogVG9tIFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQuY29tPgotLS0KIHNyYy9hcHAvcmlu Z19yZWFkLmMgICB8ICAgNiArLQogc3JjL2xpYi9kdW1wX2liLmMgICAgIHwgIDE5ICsrKy0KIHNy Yy9saWIvcmluZ19kZWNvZGUuYyB8IDMwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3Vtci5oICAgICAgICAgICAgIHwgIDEwICstCiA0IGZp bGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2FwcC9yaW5nX3JlYWQuYyBiL3NyYy9hcHAvcmluZ19yZWFkLmMKaW5kZXggMWU1 Njk4NzVmNzc5Li40MjRlNDQyODhmOGMgMTAwNjQ0Ci0tLSBhL3NyYy9hcHAvcmluZ19yZWFkLmMK KysrIGIvc3JjL2FwcC9yaW5nX3JlYWQuYwpAQCAtMTE4LDcgKzExOCwxMCBAQCB2b2lkIHVtcl9y ZWFkX3Jpbmcoc3RydWN0IHVtcl9hc2ljICphc2ljLCBjaGFyICpyaW5ncGF0aCkKIAogCWRvIHsK IAkJdmFsdWUgPSByaW5nX2RhdGFbKHN0YXJ0KzEyKT4+Ml07Ci0JCXByaW50ZigiJXMuJXMucmlu Z1slNGx1XSA9PSAweCUwOGx4ICAgIiwgYXNpYy0+YXNpY25hbWUsIHJpbmduYW1lLCAodW5zaWdu ZWQgbG9uZylzdGFydCA+PiAyLCAodW5zaWduZWQgbG9uZyl2YWx1ZSk7CisJCXByaW50ZigiJXMu JXMucmluZ1slcyU0bHUlc10gPT0gJXMweCUwOGx4JXMgICAiLAorCQkJYXNpYy0+YXNpY25hbWUs IHJpbmduYW1lLAorCQkJQkxVRSwgKHVuc2lnbmVkIGxvbmcpc3RhcnQgPj4gMiwgUlNULAorCQkJ WUVMTE9XLCAodW5zaWduZWQgbG9uZyl2YWx1ZSwgUlNUKTsKIAkJaWYgKGVuYWJsZV9kZWNvZGVy ICYmIHN0YXJ0ID09IHJwdHIgJiYgc3RhcnQgIT0gd3B0cikgewogCQkJdXNlX2RlY29kZXIgPSAx OwogCQkJZGVjb2Rlci5wbTQuY3VyX29wY29kZSA9IDB4RkZGRkZGRkY7CkBAIC0xMjcsNiArMTMw LDcgQEAgdm9pZCB1bXJfcmVhZF9yaW5nKHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgY2hhciAqcmlu Z3BhdGgpCiAJCQkoc3RhcnQgPT0gcnB0cikgPyAncicgOiAnLicsCiAJCQkoc3RhcnQgPT0gd3B0 cikgPyAndycgOiAnLicsCiAJCQkoc3RhcnQgPT0gZHJ2X3dwdHIpID8gJ0QnIDogJy4nKTsKKwkJ ZGVjb2Rlci5uZXh0X2liX2luZm8uYWRkciA9IHN0YXJ0IC8gNDsKIAkJaWYgKHVzZV9kZWNvZGVy KQogCQkJdW1yX3ByaW50X2RlY29kZShhc2ljLCAmZGVjb2RlciwgdmFsdWUpOwogCQlwcmludGYo IlxuIik7CmRpZmYgLS1naXQgYS9zcmMvbGliL2R1bXBfaWIuYyBiL3NyYy9saWIvZHVtcF9pYi5j CmluZGV4IGNiYTQ5NzM3M2ZlMi4uMTg2MDBmYmM4MDEwIDEwMDY0NAotLS0gYS9zcmMvbGliL2R1 bXBfaWIuYworKysgYi9zcmMvbGliL2R1bXBfaWIuYwpAQCAtMzAsMTkgKzMwLDMyIEBAIHZvaWQg dW1yX2R1bXBfaWIoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1yX3JpbmdfZGVjb2Rl ciAqZGVjb2RlcikKIAl1aW50MzJfdCAqZGF0YSA9IE5VTEwsIHg7CiAJc3RhdGljIGNvbnN0IGNo YXIgKmh1YnNbXSA9IHsgImdmeGh1YiIsICJtbWh1YiIgfTsKIAotCXByaW50ZigiRHVtcGluZyBJ QiBhdCAoJXMpIFZNSUQ6JXUgMHglbGx4IG9mICV1IHdvcmRzXG4iLAotCQlodWJzW2RlY29kZXIt Pm5leHRfaWJfaW5mby52bWlkID4+IDhdLAorCXByaW50ZigiRHVtcGluZyBJQiBhdCAoJXMlcyVz KSBWTUlEOiV1IDB4JWxseCBvZiAldSB3b3JkcyBmcm9tICIsCisJCUdSRUVOLCBodWJzW2RlY29k ZXItPm5leHRfaWJfaW5mby52bWlkID4+IDhdLCBSU1QsCiAJCSh1bnNpZ25lZClkZWNvZGVyLT5u ZXh0X2liX2luZm8udm1pZCAmIDB4RkYsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpZGVjb2Rlci0+ bmV4dF9pYl9pbmZvLmliX2FkZHIsCiAJCSh1bnNpZ25lZClkZWNvZGVyLT5uZXh0X2liX2luZm8u c2l6ZS80KTsKIAorCWlmIChkZWNvZGVyLT5zcmMuaWJfYWRkciA9PSAwKQorCQlwcmludGYoInJp bmdbJXMldSVzXSIsIEJMVUUsICh1bnNpZ25lZClkZWNvZGVyLT5zcmMuYWRkciwgUlNUKTsKKwll bHNlCisJCXByaW50ZigiSUJbJXMldSVzXSBhdCAlcyVkJXM6JXMweCVsbHglcyIsCisJCQlCTFVF LCAodW5zaWduZWQpZGVjb2Rlci0+c3JjLmFkZHIsIFJTVCwKKwkJCVlFTExPVywgZGVjb2Rlci0+ c3JjLnZtaWQsIFJTVCwKKwkJCVlFTExPVywgKHVuc2lnbmVkIGxvbmcgbG9uZylkZWNvZGVyLT5z cmMuaWJfYWRkciwgUlNUKTsKKworCXByaW50ZigiXG4iKTsKKwogCS8vIHJlYWQgSUIKIAlkYXRh ID0gY2FsbG9jKHNpemVvZigqZGF0YSksIGRlY29kZXItPm5leHRfaWJfaW5mby5zaXplL3NpemVv ZigqZGF0YSkpOwogCWlmIChkYXRhICYmICF1bXJfcmVhZF92cmFtKGFzaWMsIGRlY29kZXItPm5l eHRfaWJfaW5mby52bWlkLCBkZWNvZGVyLT5uZXh0X2liX2luZm8uaWJfYWRkciwgZGVjb2Rlci0+ bmV4dF9pYl9pbmZvLnNpemUsIGRhdGEpKSB7CiAJLy8gZHVtcCBJQgogCQlkZWNvZGVyLT5wbTQu Y3VyX29wY29kZSA9IDB4RkZGRkZGRkY7CiAJCWZvciAoeCA9IDA7IHggPCBkZWNvZGVyLT5uZXh0 X2liX2luZm8uc2l6ZS80OyB4KyspIHsKLQkJCXByaW50ZigiSUJbJTV1XSA9IDB4JTA4bHggLi4u ICIsICh1bnNpZ25lZCl4LCAodW5zaWduZWQgbG9uZylkYXRhW3hdKTsKKwkJCWRlY29kZXItPm5l eHRfaWJfaW5mby5hZGRyID0geDsKKwkJCXByaW50ZigiSUJbJXMlNXUlc10gPSAlczB4JTA4bHgl cyAuLi4gIiwKKwkJCUJMVUUsICh1bnNpZ25lZCl4LCBSU1QsCisJCQlZRUxMT1csICh1bnNpZ25l ZCBsb25nKWRhdGFbeF0sIFJTVCk7CiAJCQl1bXJfcHJpbnRfZGVjb2RlKGFzaWMsIGRlY29kZXIs IGRhdGFbeF0pOwogCQkJcHJpbnRmKCJcbiIpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvbGliL3Jp bmdfZGVjb2RlLmMgYi9zcmMvbGliL3JpbmdfZGVjb2RlLmMKaW5kZXggYTJjYzFlZjZhNjY4Li44 MDc5MDY5NjQ5YmIgMTAwNjQ0Ci0tLSBhL3NyYy9saWIvcmluZ19kZWNvZGUuYworKysgYi9zcmMv bGliL3JpbmdfZGVjb2RlLmMKQEAgLTM1Nyw2ICszNTcsMTEgQEAgc3RhdGljIHZvaWQgYWRkX2li KHN0cnVjdCB1bXJfcmluZ19kZWNvZGVyICpkZWNvZGVyKQogCXBkZWNvZGVyLT5uZXh0X2liX2lu Zm8udm1pZCAgICA9IGRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLmliX3ZtaWQ7CiAJcGRlY29k ZXItPm5leHRfaWJfaW5mby52bV9iYXNlX2FkZHIgPSB+MFVMTDsgLy8gbm90IHVzZWQgeWV0Lgog CisKKwlwZGVjb2Rlci0+c3JjLmliX2FkZHIgPSBkZWNvZGVyLT5uZXh0X2liX2luZm8uaWJfYWRk cjsKKwlwZGVjb2Rlci0+c3JjLnZtaWQgICAgPSBkZWNvZGVyLT5uZXh0X2liX2luZm8udm1pZDsK KwlwZGVjb2Rlci0+c3JjLmFkZHIgICAgPSBkZWNvZGVyLT5uZXh0X2liX2luZm8uYWRkcjsKKwog CW1lbXNldCgmZGVjb2Rlci0+cG00Lm5leHRfaWJfc3RhdGUsIDAsIHNpemVvZihkZWNvZGVyLT5w bTQubmV4dF9pYl9zdGF0ZSkpOwogfQogCkBAIC0zNjksMTQgKzM3NCwxNCBAQCBzdGF0aWMgY2hh ciAqdW1yX3JlZ19uYW1lKHN0cnVjdCB1bXJfYXNpYyAqYXNpYywgdWludDY0X3QgYWRkcikKIAog CXJlZyA9IHVtcl9maW5kX3JlZ19ieV9hZGRyKGFzaWMsIGFkZHIsICZpcCk7CiAJaWYgKGlwICYm IHJlZykgewotCQlzcHJpbnRmKG5hbWUsICIlcy4lcyIsIGlwLT5pcG5hbWUsIHJlZy0+cmVnbmFt ZSk7CisJCXNwcmludGYobmFtZSwgIiVzJXMuJXMlcyIsIFJFRCwgaXAtPmlwbmFtZSwgcmVnLT5y ZWduYW1lLCBSU1QpOwogCQlyZXR1cm4gbmFtZTsKIAl9IGVsc2UgewogCQlyZXR1cm4gIjx1bmtu b3duPiI7CiAJfQogfQogCi1zdGF0aWMgdm9pZCBwcmludF9iaXRzKHN0cnVjdCB1bXJfYXNpYyAq YXNpYywgdWludDMyX3QgcmVnbm8sIHVpbnQzMl90IHZhbHVlKQorc3RhdGljIHZvaWQgcHJpbnRf Yml0cyhzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIHVpbnQzMl90IHJlZ25vLCB1aW50MzJfdCB2YWx1 ZSwgaW50IHRhYnMpCiB7CiAJc3RydWN0IHVtcl9pcF9ibG9jayAqaXA7CiAJc3RydWN0IHVtcl9y ZWcgKnJlZyA9IHVtcl9maW5kX3JlZ19ieV9hZGRyKGFzaWMsIHJlZ25vLCAmaXApOwpAQCAtMzg2 LDcgKzM5MSwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF9iaXRzKHN0cnVjdCB1bXJfYXNpYyAqYXNp YywgdWludDMyX3QgcmVnbm8sIHVpbnQzMl90IHZhbHVlKQogCQlwcmludGYoIlxuIik7CiAJCWZv ciAoayA9IDA7IGsgPCByZWctPm5vX2JpdHM7IGsrKykgewogCQkJdWludDMyX3QgdjsKLQkJCXBy aW50ZigiXHRcdFx0XHRcdFx0XHQiKTsKKwkJCWlmICh0YWJzKSBwcmludGYoIlx0XHQiKTsKKwkJ CWlmIChrID09IChyZWctPm5vX2JpdHMgLSAxKSkKKwkJCQlwcmludGYoIlx0XHRcdFx0XHRcdFx0 XHRcXC0tLS0rICIpOworCQkJZWxzZQorCQkJCXByaW50ZigiXHRcdFx0XHRcdFx0XHRcdHwtLS0t KyAiKTsKIAkJCXYgPSAodmFsdWUgPj4gcmVnLT5iaXRzW2tdLnN0YXJ0KSAmICgxVUwgPDwgKHJl Zy0+Yml0c1trXS5zdG9wIC0gcmVnLT5iaXRzW2tdLnN0YXJ0KSk7CiAJCQlyZWctPmJpdHNba10u Yml0ZmllbGRfcHJpbnQoYXNpYywgYXNpYy0+YXNpY25hbWUsIGlwLT5pcG5hbWUsIHJlZy0+cmVn bmFtZSwgcmVnLT5iaXRzW2tdLnJlZ25hbWUsIHJlZy0+Yml0c1trXS5zdGFydCwgcmVnLT5iaXRz W2tdLnN0b3AsIHYpOwogCQl9CkBAIC00MDAsNTQgKzQwOSw2OCBAQCBzdGF0aWMgdm9pZCBwcmlu dF9kZWNvZGVfcG00X3BrdDMoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1yX3Jpbmdf ZGVjb2RlcgogCXN0YXRpYyBjb25zdCBjaGFyICpvcF8zN19kc3Rfc2VsW10gPSB7ICJtZW0tbWFw cGVkIHJlZyIsICJtZW1vcnkgc3luYyIsICJUQy9MMiIsICJHRFMiLCAicmVzZXJ2ZWQiLCAibWVt b3J5IGFzeW5jIiwgInJlc2VydmVkIiwgInJlc2VydmVkIiB9OwogCXN0YXRpYyBjb25zdCBjaGFy ICpvcF84NF9jbnRyX3NlbFtdID0geyAiaW52YWxpZCIsICJjZSIsICJjcyIsICJjZSBhbmQgY3Mi IH07CiAJc3RydWN0IHVtcl9yZWcgKnJlZzsKLQlwcmludGYoIiAgIFBLVDMgT1BDT0RFIDB4JTAy eCwgd29yZCAldTogIiwgKHVuc2lnbmVkKWRlY29kZXItPnBtNC5jdXJfb3Bjb2RlLCAodW5zaWdu ZWQpZGVjb2Rlci0+cG00LmN1cl93b3JkKTsKKworCWlmIChkZWNvZGVyLT5wbTQubl93b3JkcyA9 PSAxKQorCQlwcmludGYoIlxcLS0tKyAiKTsKKwllbHNlCisJCXByaW50ZigifC0tLSsgIik7CisK KwlwcmludGYoIlBLVDMgT1BDT0RFIDB4JTAyeCwgd29yZCAldTogIiwgKHVuc2lnbmVkKWRlY29k ZXItPnBtNC5jdXJfb3Bjb2RlLCAodW5zaWduZWQpZGVjb2Rlci0+cG00LmN1cl93b3JkKTsKIAlz d2l0Y2ggKGRlY29kZXItPnBtNC5jdXJfb3Bjb2RlKSB7CiAJCWNhc2UgMHgyMjogLy8gQ09ORF9F WEVDCiAJCQlzd2l0Y2ggKGRlY29kZXItPnBtNC5jdXJfd29yZCkgewotCQkJCWNhc2UgMDogcHJp bnRmKCJHUFVfQUREUl9MTzMyOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpaWIpOworCQkJCWNh c2UgMDogcHJpbnRmKCJHUFVfQUREUl9MTzMyOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2ln bmVkIGxvbmcpaWIsIFJTVCk7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgMTogcHJpbnRmKCJHUFVf QUREUl9ISTMyOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpaWIpOworCQkJCWNhc2UgMTogcHJp bnRmKCJHUFVfQUREUl9ISTMyOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxvbmcp aWIsIFJTVCk7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgMjogcHJpbnRmKCJURVNUX1ZBTFVFOiAw eCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpaWIpOworCQkJCWNhc2UgMjogcHJpbnRmKCJURVNUX1ZB TFVFOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxvbmcpaWIsIFJTVCk7CiAJCQkJ CWJyZWFrOwotCQkJCWNhc2UgMzogcHJpbnRmKCJQQVRDSF9WQUxVRTogMHglMDhseCIsICh1bnNp Z25lZCBsb25nKWliKTsKKwkJCQljYXNlIDM6IHByaW50ZigiUEFUQ0hfVkFMVUU6ICVzMHglMDhs eCVzIiwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDogcHJpbnRmKCJJbnZhbGlkIHdvcmQgZm9yIG9wY29kZSAweCUwMmx4IiwgKHVuc2ln bmVkIGxvbmcpZGVjb2Rlci0+cG00LmN1cl9vcGNvZGUpOwogCQkJfQogCQkJYnJlYWs7CiAJCWNh c2UgMHgyNzogLy8gRFJBV19JTkRFWF8yCiAJCQlzd2l0Y2ggKGRlY29kZXItPnBtNC5jdXJfd29y ZCkgewotCQkJCWNhc2UgMDogcHJpbnRmKCJNQVhfU0laRTogJWx1IiwgKHVuc2lnbmVkIGxvbmcp IEJJVFMoaWIsIDAsIDMyKSk7IGJyZWFrOwotCQkJCWNhc2UgMTogcHJpbnRmKCJJTkRFWF9CQVNF X0xPOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpIEJJVFMoaWIsIDAsIDMyKSk7IGJyZWFrOwot CQkJCWNhc2UgMjogcHJpbnRmKCJJTkRFWF9CQVNFX0hJOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxv bmcpIEJJVFMoaWIsIDAsIDMyKSk7IGJyZWFrOwotCQkJCWNhc2UgMzogcHJpbnRmKCJJTkRFWF9D T1VOVDogJWx1IiwgKHVuc2lnbmVkIGxvbmcpIEJJVFMoaWIsIDAsIDMyKSk7IGJyZWFrOwotCQkJ CWNhc2UgNDogcHJpbnRmKCJEUkFXX0lOSVRJQVRPUjogMHglMDhseCIsICh1bnNpZ25lZCBsb25n KSBCSVRTKGliLCAwLCAzMikpOyBicmVhazsKKwkJCQljYXNlIDA6IHByaW50ZigiTUFYX1NJWkU6 ICVzJWx1JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZykgQklUUyhpYiwgMCwgMzIpLCBSU1QpOyBi cmVhazsKKwkJCQljYXNlIDE6IHByaW50ZigiSU5ERVhfQkFTRV9MTzogJXMweCUwOGx4JXMiLCBZ RUxMT1csICh1bnNpZ25lZCBsb25nKSBCSVRTKGliLCAwLCAzMiksIFJTVCk7IGJyZWFrOworCQkJ CWNhc2UgMjogcHJpbnRmKCJJTkRFWF9CQVNFX0hJOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVu c2lnbmVkIGxvbmcpIEJJVFMoaWIsIDAsIDMyKSwgUlNUKTsgYnJlYWs7CisJCQkJY2FzZSAzOiBw cmludGYoIklOREVYX0NPVU5UOiAlcyVsdSVzIiwgQkxVRSwgKHVuc2lnbmVkIGxvbmcpIEJJVFMo aWIsIDAsIDMyKSwgUlNUKTsgYnJlYWs7CisJCQkJY2FzZSA0OiBwcmludGYoIkRSQVdfSU5JVElB VE9SOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxvbmcpIEJJVFMoaWIsIDAsIDMy KSwgUlNUKTsgYnJlYWs7CiAJCQkJZGVmYXVsdDogcHJpbnRmKCJJbnZhbGlkIHdvcmQgZm9yIG9w Y29kZSAweCUwMmx4IiwgKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+cG00LmN1cl9vcGNvZGUpOwog CQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgMHgyODogLy8gQ09OVEVYVF9DT05UUk9MCiAJCQlzd2l0 Y2ggKGRlY29kZXItPnBtNC5jdXJfd29yZCkgewotCQkJCWNhc2UgMDogcHJpbnRmKCJMT0FEX0VO OiAlbHUsIExPQURfQ1M6ICVsdSwgTE9BRF9HRlg6ICVsdSwgTE9BRF9NVUxUSTogJWx1LCBMT0FE X1NJTkdMRTogJWx1IiwKLQkJCQkJCUJJVFMoaWIsIDMxLCAzMiksIEJJVFMoaWIsIDI0LCAyNSks IEJJVFMoaWIsIDE2LDE3KSwgQklUUyhpYiwgMSwyKSwgQklUUyhpYiwgMCwgMSkpOwotCQkJCQli cmVhazsKLQkJCQljYXNlIDE6IHByaW50ZigiU0hBRE9XX0VOOiAlbHUsIFNIQURPV19DUzogJWx1 LCBTSEFET1dfR0ZYOiAlbHUsIFNIQURPV19NVUxUSTogJWx1LCBTSEFET1dfU0lOR0xFOiAlbHUi LAotCQkJCQkJQklUUyhpYiwgMzEsIDMyKSwgQklUUyhpYiwgMjQsIDI1KSwgQklUUyhpYiwgMTYs MTcpLCBCSVRTKGliLCAxLDIpLCBCSVRTKGliLCAwLCAxKSk7CisJCQkJY2FzZSAwOiBwcmludGYo IkxPQURfRU46ICVzJWx1JXMsIExPQURfQ1M6ICVzJWx1JXMsIExPQURfR0ZYOiAlcyVsdSVzLCBM T0FEX01VTFRJOiAlcyVsdSVzLCBMT0FEX1NJTkdMRTogJXMlbHUlcyIsCisJCQkJCQlCTFVFLCBC SVRTKGliLCAzMSwgMzIpLCBSU1QsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAyNCwgMjUpLCBSU1Qs CisJCQkJCQlCTFVFLCBCSVRTKGliLCAxNiwxNyksIFJTVCwKKwkJCQkJCUJMVUUsIEJJVFMoaWIs IDEsMiksIFJTVCwKKwkJCQkJCUJMVUUsIEJJVFMoaWIsIDAsIDEpLCBSU1QpOworCQkJCQlicmVh azsKKwkJCQljYXNlIDE6IHByaW50ZigiU0hBRE9XX0VOOiAlcyVsdSVzLCBTSEFET1dfQ1M6ICVz JWx1JXMsIFNIQURPV19HRlg6ICVzJWx1JXMsIFNIQURPV19NVUxUSTogJXMlbHUlcywgU0hBRE9X X1NJTkdMRTogJXMlbHUlcyIsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAzMSwgMzIpLCBSU1QsCisJ CQkJCQlCTFVFLCBCSVRTKGliLCAyNCwgMjUpLCBSU1QsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAx NiwxNyksIFJTVCwKKwkJCQkJCUJMVUUsIEJJVFMoaWIsIDEsMiksIFJTVCwKKwkJCQkJCUJMVUUs IEJJVFMoaWIsIDAsIDEpLCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OiBwcmludGYo IkludmFsaWQgd29yZCBmb3Igb3Bjb2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9uZylkZWNvZGVy LT5wbTQuY3VyX29wY29kZSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAweDJkOiAvLyBEUkFX X0lOREVYX0FVVE8KIAkJCXN3aXRjaCAoZGVjb2Rlci0+cG00LmN1cl93b3JkKSB7Ci0JCQkJY2Fz ZSAwOiBwcmludGYoIklOREVYX0NPVU5UOiAlbHUiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJ Y2FzZSAwOiBwcmludGYoIklOREVYX0NPVU5UOiAlcyVsdSVzIiwgQkxVRSwgKHVuc2lnbmVkIGxv bmcpaWIsIFJTVCk7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgMTogcHJpbnRmKCJEUkFXX0lOSVRJ QVRPUjogMHglbHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSAxOiBwcmludGYoIkRS QVdfSU5JVElBVE9SOiAlczB4JWx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1Qp OwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OiBwcmludGYoIkludmFsaWQgd29yZCBmb3Igb3Bj b2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQuY3VyX29wY29kZSk7CiAJ CQl9CiAJCQlicmVhazsKIAkJY2FzZSAweDJmOiAvLyBOVU1fSU5TVEFOQ0VTCiAJCQlzd2l0Y2gg KGRlY29kZXItPnBtNC5jdXJfd29yZCkgewotCQkJCWNhc2UgMDogcHJpbnRmKCJOVU1fSU5TVEFO Q0VTOiAlbHUiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSAwOiBwcmludGYoIk5VTV9J TlNUQU5DRVM6ICVzJWx1JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJ YnJlYWs7CiAJCQkJZGVmYXVsdDogcHJpbnRmKCJJbnZhbGlkIHdvcmQgZm9yIG9wY29kZSAweCUw Mmx4IiwgKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+cG00LmN1cl9vcGNvZGUpOwogCQkJfQpAQCAt NDU1LDEzICs0NzgsMTMgQEAgc3RhdGljIHZvaWQgcHJpbnRfZGVjb2RlX3BtNF9wa3QzKHN0cnVj dCB1bXJfYXNpYyAqYXNpYywgc3RydWN0IHVtcl9yaW5nX2RlY29kZXIKIAkJY2FzZSAweDNmOiAv LyBJTkRJUkVDVF9CVUZGRVJfQ0lLCiAJCWNhc2UgMHgzMzogLy8gSU5ESVJFQ1RfQlVGRkVSX0NP TlNUCiAJCQlzd2l0Y2ggKGRlY29kZXItPnBtNC5jdXJfd29yZCkgewotCQkJCWNhc2UgMDogcHJp bnRmKCJJQl9CQVNFX0xPOiAweCUwOGx4LCBTV0FQOiVsdSIsIEJJVFMoaWIsIDIsIDMyKSA8PCAy LCBCSVRTKGliLCAwLCAyKSk7CisJCQkJY2FzZSAwOiBwcmludGYoIklCX0JBU0VfTE86ICVzMHgl MDhseCVzLCBTV0FQOiVsdSIsIFlFTExPVywgQklUUyhpYiwgMiwgMzIpIDw8IDIsIFJTVCwgQklU UyhpYiwgMCwgMikpOwogCQkJCQlkZWNvZGVyLT5wbTQubmV4dF9pYl9zdGF0ZS5pYl9hZGRyX2xv ID0gQklUUyhpYiwgMiwgMzIpIDw8IDI7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgMTogcHJpbnRm KCJJQl9CQVNFX0hJOiAweCUwOGx4IiwgQklUUyhpYiwgMCwgMTYpKTsKKwkJCQljYXNlIDE6IHBy aW50ZigiSUJfQkFTRV9ISTogJXMweCUwOGx4JXMiLCBZRUxMT1csIEJJVFMoaWIsIDAsIDE2KSwg UlNUKTsKIAkJCQkJZGVjb2Rlci0+cG00Lm5leHRfaWJfc3RhdGUuaWJfYWRkcl9oaSA9IEJJVFMo aWIsIDAsIDE2KTsKIAkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAyOiBwcmludGYoIklCX1NJWkU6JWx1 LCBWTUlEOiAlbHUiLCBCSVRTKGliLCAwLCAyMCksIEJJVFMoaWIsIDI0LCAzMikpOworCQkJCWNh c2UgMjogcHJpbnRmKCJJQl9TSVpFOiVzJWx1JXMsIFZNSUQ6ICVzJWx1JXMiLCBCTFVFLCBCSVRT KGliLCAwLCAyMCksIFJTVCwgQkxVRSwgQklUUyhpYiwgMjQsIDMyKSwgUlNUKTsKIAkJCQkJZGVj b2Rlci0+cG00Lm5leHRfaWJfc3RhdGUuaWJfc2l6ZSA9IEJJVFMoaWIsIDAsIDIwKSAqIDQ7CiAJ CQkJCWRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLmliX3ZtaWQgPSBCSVRTKGliLCAyNCwgMzIp OwogCQkJCQlhZGRfaWIoZGVjb2Rlcik7CkBAIC00NzEsMjQgKzQ5NCwyNiBAQCBzdGF0aWMgdm9p ZCBwcmludF9kZWNvZGVfcG00X3BrdDMoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1y X3JpbmdfZGVjb2RlcgogCQkJYnJlYWs7CiAJCWNhc2UgMHgzNzogLy8gV1JJVEVfREFUQQogCQkJ c3dpdGNoIChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNlIDA6IHByaW50ZigiRU5H SU5FOlslc10sIFdSX0NPTkZJUk06JWx1LCBXUl9PTkVfQUREUjolbHUsIERTVF9TRUw6WyVzXSIs Ci0JCQkJCQlvcF8zN19lbmdpbmVzW0JJVFMoaWIsMzAsMzIpXSwKLQkJCQkJCUJJVFMoaWIsMjAs MjEpLAotCQkJCQkJQklUUyhpYiwxNiwxNyksCi0JCQkJCQlvcF8zN19kc3Rfc2VsW0JJVFMoaWIs IDgsIDEyKV0pOworCQkJCWNhc2UgMDogcHJpbnRmKCJFTkdJTkU6WyVzJXMlc10sIFdSX0NPTkZJ Uk06JXMlbHUlcywgV1JfT05FX0FERFI6JXMlbHUlcywgRFNUX1NFTDpbJXMlcyVzXSIsCisJCQkJ CQlCTFVFLCBvcF8zN19lbmdpbmVzW0JJVFMoaWIsMzAsMzIpXSwgUlNULAorCQkJCQkJQkxVRSwg QklUUyhpYiwyMCwyMSksIFJTVCwKKwkJCQkJCUJMVUUsIEJJVFMoaWIsMTYsMTcpLCBSU1QsCisJ CQkJCQlCTFVFLCBvcF8zN19kc3Rfc2VsW0JJVFMoaWIsIDgsIDEyKV0sIFJTVCk7CiAJCQkJCWRl Y29kZXItPnBtNC5jb250cm9sID0gaWI7CiAJCQkJCWRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21l bS50eXBlID0gQklUUyhpYiwgOCwgMTIpOwogCQkJCQlicmVhazsKLQkJCQljYXNlIDE6IHByaW50 ZigiRFNUX0FERFJfTE86IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSAx OiBwcmludGYoIkRTVF9BRERSX0xPOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxv bmcpaWIsIFJTVCk7CiAJCQkJCWRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvID0g aWI7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgMjogcHJpbnRmKCJEU1RfQUREUl9ISTogMHglMDhs eCIsICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQljYXNlIDI6IHByaW50ZigiRFNUX0FERFJfSEk6 ICVzMHglMDhseCVzIiwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJZGVj b2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfaGkgPSBpYjsKIAkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKIAkJCQkJaWYgKGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS50eXBlID09IDAp IHsgLy8gbWVtLW1hcHBlZCByZWcKLQkJCQkJCXByaW50ZigiJXMgPD0gJTA4bHgiLCB1bXJfcmVn X25hbWUoYXNpYywgKCh1aW50NjRfdClkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9o aSA8PCAzMikgfCBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbyksICh1bnNpZ25l ZCBsb25nKWliKTsKLQkJCQkJCXByaW50X2JpdHMoYXNpYywgZGVjb2Rlci0+cG00Lm5leHRfd3Jp dGVfbWVtLmFkZHJfbG8sIGliKTsKKwkJCQkJCXByaW50ZigiJXMgPD0gJXMweCUwOGx4JXMiLAor CQkJCQkJCXVtcl9yZWdfbmFtZShhc2ljLCAoKHVpbnQ2NF90KWRlY29kZXItPnBtNC5uZXh0X3dy aXRlX21lbS5hZGRyX2hpIDw8IDMyKSB8IGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRy X2xvKSwKKwkJCQkJCQlZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOworCQkJCQkJcHJp bnRfYml0cyhhc2ljLCBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbywgaWIsIDEp OwogCQkJCQkJZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8rKzsKIAkJCQkJCWlm ICghZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8pCiAJCQkJCQkJZGVjb2Rlci0+ cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfaGkrKzsKQEAgLTQ5OSwyOSArNTI0LDMxIEBAIHN0YXRp YyB2b2lkIHByaW50X2RlY29kZV9wbTRfcGt0MyhzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIHN0cnVj dCB1bXJfcmluZ19kZWNvZGVyCiAJCQlicmVhazsKIAkJY2FzZSAweDNDOiAvLyBXQUlUX01FTV9S RUcKIAkJCXN3aXRjaChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNlIDA6IHByaW50 ZigiRU5HSU5FOiVzLCBNRU1TUEFDRTolcywgRlVOQzpbJXNdIiwKLQkJCQkJCUJJVFMoaWIsIDgs IDkpID8gIlBGUCIgOiAiTUUiLAotCQkJCQkJQklUUyhpYiwgNCwgNSkgPyAiUkVHIiA6ICJNRU0i LAotCQkJCQkJb3BfM2NfZnVuY3Rpb25zW0JJVFMoaWIsIDAsIDQpXSk7CisJCQkJY2FzZSAwOiBw cmludGYoIkVOR0lORTolcyVzJXMsIE1FTVNQQUNFOiVzJXMlcywgRlVOQzpbJXMlcyVzXSIsCisJ CQkJCQlCTFVFLCBCSVRTKGliLCA4LCA5KSA/ICJQRlAiIDogIk1FIiwgUlNULAorCQkJCQkJQkxV RSwgQklUUyhpYiwgNCwgNSkgPyAiUkVHIiA6ICJNRU0iLCBSU1QsCisJCQkJCQlCTFVFLCBvcF8z Y19mdW5jdGlvbnNbQklUUyhpYiwgMCwgNCldLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNl IDE6IHByaW50ZigiUE9MTF9BRERSRVNTX0xPOiAweCUwOGx4LCBTV0FQOiAlbHUiLCBCSVRTKGli LCAyLCAzMiksIEJJVFMoaWIsIDAsIDIpKTsKKwkJCQljYXNlIDE6IHByaW50ZigiUE9MTF9BRERS RVNTX0xPOiAlczB4JTA4bHglcywgU1dBUDogJXMlbHUlcyIsCisJCQkJCQlZRUxMT1csIEJJVFMo aWIsIDIsIDMyKSwgUlNULAorCQkJCQkJQkxVRSwgQklUUyhpYiwgMCwgMiksIFJTVCk7CiAJCQkJ CWJyZWFrOwotCQkJCWNhc2UgMjogcHJpbnRmKCJQT0xMX0FERFJFU1NfSEk6IDB4JTA4bHgiLCAo dW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSAyOiBwcmludGYoIlBPTExfQUREUkVTU19ISTog JXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOwogCQkJCQlicmVh azsKLQkJCQljYXNlIDM6IHByaW50ZigiUkVGRVJFTkNFOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxv bmcpaWIpOworCQkJCWNhc2UgMzogcHJpbnRmKCJSRUZFUkVOQ0U6ICVzMHglMDhseCVzIiwgWUVM TE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJYnJlYWs7Ci0JCQkJY2FzZSA0OiBw cmludGYoIk1BU0s6IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSA0OiBw cmludGYoIk1BU0s6ICVzMHglMDhseCVzIiwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNU KTsKIAkJCQkJYnJlYWs7Ci0JCQkJY2FzZSA1OiBwcmludGYoIlBPTEwgSU5URVJWQUw6IDB4JTA4 bHgiLCBCSVRTKGliLCAwLCAxNikpOworCQkJCWNhc2UgNTogcHJpbnRmKCJQT0xMIElOVEVSVkFM OiAlczB4JTA4bHglcyIsIFlFTExPVywgQklUUyhpYiwgMCwgMTYpLCBSU1QpOwogCQkJCQlicmVh azsKIAkJCQlkZWZhdWx0OiBwcmludGYoIkludmFsaWQgd29yZCBmb3Igb3Bjb2RlIDB4JTAybHgi LCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQuY3VyX29wY29kZSk7CiAJCQl9CiAJCQlicmVh azsKIAkJY2FzZSAweDQzOiAvLyBTVVJGQUNFX1NZTkMKIAkJCXN3aXRjaCAoZGVjb2Rlci0+cG00 LmN1cl93b3JkKSB7Ci0JCQkJY2FzZSAwOiBwcmludGYoIkVOR0lORTogJXMsIENPSEVSX0NOVEw6 IDB4JTA4bHgiLAotCQkJCQkJQklUUyhpYiwgMzEsIDMyKSA/ICJNRSIgOiAiUEZQIiwKLQkJCQkJ CUJJVFMoaWIsIDAsIDI5KSk7CisJCQkJY2FzZSAwOiBwcmludGYoIkVOR0lORTogJXMlcyVzLCBD T0hFUl9DTlRMOiAlczB4JTA4bHglcyIsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAzMSwgMzIpID8g Ik1FIiA6ICJQRlAiLCBSU1QsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAwLCAyOSksIFJTVCk7CiAJ CQkJCXJlZyA9IHVtcl9maW5kX3JlZ19kYXRhKGFzaWMsICJtbUNQX0NPSEVSX0NOVEwiKTsKIAkJ CQkJaWYgKHJlZyAmJiByZWctPmJpdHMpIHsKIAkJCQkJCWludCBpLCBrOwpAQCAtNTI5LDcgKzU1 Niw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2RlY29kZV9wbTRfcGt0MyhzdHJ1Y3QgdW1yX2FzaWMg KmFzaWMsIHN0cnVjdCB1bXJfcmluZ19kZWNvZGVyCiAJCQkJCQlwcmludGYoIiAoIik7CiAJCQkJ CQlmb3IgKGkgPSAwOyBpIDwgcmVnLT5ub19iaXRzOyBpKyspIHsKIAkJCQkJCQlpZiAoaWIgJiAo MVVMIDw8IHJlZy0+Yml0c1tpXS5zdGFydCkpIHsKLQkJCQkJCQkJcHJpbnRmKCIlcyVzIiwgayA/ ICIsICIgOiAiIiwgcmVnLT5iaXRzW2ldLnJlZ25hbWUpOworCQkJCQkJCQlwcmludGYoIiVzJXMl cyVzIiwgayA/ICIsICIgOiAiIiwgUkVELCByZWctPmJpdHNbaV0ucmVnbmFtZSwgUlNUKTsKIAkJ CQkJCQkJKytrOwogCQkJCQkJCX0KIAkJCQkJCX0KQEAgLTUzNyw3MSArNTY0LDc1IEBAIHN0YXRp YyB2b2lkIHByaW50X2RlY29kZV9wbTRfcGt0MyhzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIHN0cnVj dCB1bXJfcmluZ19kZWNvZGVyCiAJCQkJCX0KIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSAxOgotCQkJ CQlwcmludGYoIkNPSEVSX1NJWkU6IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJ CXByaW50ZigiQ09IRVJfU0laRTogJXMweCUwOGx4JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZylp YiwgUlNUKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSAyOgotCQkJCQlwcmludGYoIkNPSEVSX0JB U0U6IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJCXByaW50ZigiQ09IRVJfQkFT RTogJXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOwogCQkJCQli cmVhazsKIAkJCQljYXNlIDM6Ci0JCQkJCXByaW50ZigiUE9MTF9JTlRFUlZBTDogJWx1IiwgQklU UyhpYiwgMCwgMTYpKTsKKwkJCQkJcHJpbnRmKCJQT0xMX0lOVEVSVkFMOiAlcyVsdSVzIiwgQkxV RSwgQklUUyhpYiwgMCwgMTYpLCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OiBwcmlu dGYoIkludmFsaWQgd29yZCBmb3Igb3Bjb2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9uZylkZWNv ZGVyLT5wbTQuY3VyX29wY29kZSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAweDQ2OiAvLyBF VkVOVF9XUklURQogCQkJc3dpdGNoIChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNl IDA6IHByaW50ZigiRVZFTlRfVFlQRTogMHglbHgsIEVWRU5UX0lOREVYOiAweCVseCIsCi0JCQkJ CSAgICAgICAodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCA2KSwKLQkJCQkJICAgICAgICh1bnNp Z25lZCBsb25nKUJJVFMoaWIsIDgsMTIpKTsKKwkJCQljYXNlIDA6IHByaW50ZigiRVZFTlRfVFlQ RTogJXMweCVseCVzLCBFVkVOVF9JTkRFWDogJXMweCVseCVzIiwKKwkJCQkJICAgICAgIEJMVUUs ICh1bnNpZ25lZCBsb25nKUJJVFMoaWIsIDAsIDYpLCBSU1QsCisJCQkJCSAgICAgICBCTFVFLCAo dW5zaWduZWQgbG9uZylCSVRTKGliLCA4LDEyKSwgUlNUKTsKIAkJCQkJYnJlYWs7Ci0JCQkJY2Fz ZSAxOiBwcmludGYoIkFERFJFU1NfTE86IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJ CQkJY2FzZSAxOiBwcmludGYoIkFERFJFU1NfTE86ICVzMHglMDhseCVzIiwgWUVMTE9XLCAodW5z aWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAyOiBwcmludGYoIkFE RFJFU1NfSEk6IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSAyOiBwcmlu dGYoIkFERFJFU1NfSEk6ICVzMHglMDhseCVzIiwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwg UlNUKTsKIAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDogcHJpbnRmKCJJbnZhbGlkIHdvcmQgZm9y IG9wY29kZSAweCUwMmx4IiwgKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+cG00LmN1cl9vcGNvZGUp OwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgMHg0NzogLy8gRVZFTlRfV1JJVEVfRU9QCiAJCQlz d2l0Y2goZGVjb2Rlci0+cG00LmN1cl93b3JkKSB7Ci0JCQkJY2FzZSAwOiBwcmludGYoIklOVl9M MjolbHUsIEVWRU5UX0lOREVYOiVsdSwgRVZFTlRfVFlQRTolbHUiLAotCQkJCQkJQklUUyhpYiwg MjAsIDIxKSwKLQkJCQkJCUJJVFMoaWIsIDgsIDEyKSwKLQkJCQkJCUJJVFMoaWIsIDAsIDYpKTsK KwkJCQljYXNlIDA6IHByaW50ZigiSU5WX0wyOiVzJWx1JXMsIEVWRU5UX0lOREVYOiVzJWx1JXMs IEVWRU5UX1RZUEU6JXMlbHUlcyIsCisJCQkJCQlCTFVFLCBCSVRTKGliLCAyMCwgMjEpLCBSU1Qs CisJCQkJCQlCTFVFLCBCSVRTKGliLCA4LCAxMiksIFJTVCwKKwkJCQkJCUJMVUUsIEJJVFMoaWIs IDAsIDYpLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNlIDE6IHByaW50ZigiQUREUkVTU19M TzogMHglMDhseCIsIEJJVFMoaWIsIDIsIDMyKSk7CisJCQkJY2FzZSAxOiBwcmludGYoIkFERFJF U1NfTE86ICVzMHglMDhseCVzIiwgWUVMTE9XLCBCSVRTKGliLCAyLCAzMiksIFJTVCk7CiAJCQkJ CWJyZWFrOwotCQkJCWNhc2UgMjogcHJpbnRmKCJEQVRBX1NFTDolbHUsIElOVF9TRUw6JWx1LCBB RERSRVNTX0hJOiAweCUwOGx4IiwKLQkJCQkJCUJJVFMoaWIsIDI5LCAzMiksCi0JCQkJCQlCSVRT KGliLCAyNCwgMjYpLAotCQkJCQkJQklUUyhpYiwgMCwgIDE2KSk7CisJCQkJY2FzZSAyOiBwcmlu dGYoIkRBVEFfU0VMOiVzJWx1JXMsIElOVF9TRUw6JXMlbHUlcywgQUREUkVTU19ISTogJXMweCUw OGx4JXMiLAorCQkJCQkJQkxVRSwgQklUUyhpYiwgMjksIDMyKSwgUlNULAorCQkJCQkJQkxVRSwg QklUUyhpYiwgMjQsIDI2KSwgUlNULAorCQkJCQkJWUVMTE9XLCBCSVRTKGliLCAwLCAgMTYpLCBS U1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNlIDM6IHByaW50ZigiREFUQV9MTzogMHglMDhseCIs ICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQljYXNlIDM6IHByaW50ZigiREFUQV9MTzogJXMweCUw OGx4JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJYnJlYWs7Ci0JCQkJ Y2FzZSA0OiBwcmludGYoIkRBVEFfSEk6IDB4JTA4bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJ CQkJY2FzZSA0OiBwcmludGYoIkRBVEFfSEk6ICVzMHglMDhseCVzIiwgQkxVRSwgKHVuc2lnbmVk IGxvbmcpaWIsIFJTVCk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6IHByaW50ZigiSW52YWxp ZCB3b3JkIGZvciBvcGNvZGUgMHglMDJseCIsICh1bnNpZ25lZCBsb25nKWRlY29kZXItPnBtNC5j dXJfb3Bjb2RlKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIDB4NDk6IC8vIFJFTEVBU0VfTUVN CiAJCQlzd2l0Y2goZGVjb2Rlci0+cG00LmN1cl93b3JkKSB7Ci0JCQkJY2FzZSAwOiBwcmludGYo IkVPUF9UQ0wxX0FDVElPTjogJWx1LCBFT1BfVENfQUNUSU9OOiAlbHUsIEVPUF9UQ19XQl9BQ1RJ T046ICVsdSwgRVZFTlRfVFlQRTogJWx1WyVzXSwgRVZFTlRfSU5ERVg6ICVsdSIsCi0JCQkJQklU UyhpYiwgMTYsIDE3KSwgQklUUyhpYiwgMTcsIDE4KSwgQklUUyhpYiwgMTUsIDE2KSwgQklUUyhp YiwgMCwgNyksIHZndF9ldmVudF9kZWNvZGUoQklUUyhpYiwgMCwgNykpLCBCSVRTKGliLCA4LCAx NSkpOworCQkJCWNhc2UgMDogcHJpbnRmKCJFT1BfVENMMV9BQ1RJT046ICVzJWx1JXMsIEVPUF9U Q19BQ1RJT046ICVzJWx1JXMsIEVPUF9UQ19XQl9BQ1RJT046ICVzJWx1JXMsIEVWRU5UX1RZUEU6 ICVzJWx1JXNbJXMlcyVzXSwgRVZFTlRfSU5ERVg6ICVzJWx1JXMiLAorCQkJCUJMVUUsIEJJVFMo aWIsIDE2LCAxNyksIFJTVCwKKwkJCQlCTFVFLCBCSVRTKGliLCAxNywgMTgpLCBSU1QsCisJCQkJ QkxVRSwgQklUUyhpYiwgMTUsIDE2KSwgUlNULAorCQkJCUJMVUUsIEJJVFMoaWIsIDAsIDcpLCBS U1QsIENZQU4sIHZndF9ldmVudF9kZWNvZGUoQklUUyhpYiwgMCwgNykpLCBSU1QsCisJCQkJQkxV RSwgQklUUyhpYiwgOCwgMTUpLCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQljYXNlIDE6Ci0JCQkJ CXByaW50ZigiREFUQV9TRUwrSU5UX1NFTDogMHglMDhseCIsICh1bnNpZ25lZCBsb25nKWliKTsK KwkJCQkJcHJpbnRmKCJEQVRBX1NFTCtJTlRfU0VMOiAlczB4JTA4bHglcyIsIEJMVUUsICh1bnNp Z25lZCBsb25nKWliLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNlIDI6IHByaW50ZigiQURE Ul9MTzogMHglMDhseCIsICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQljYXNlIDI6IHByaW50Zigi QUREUl9MTzogJXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOwog CQkJCQlicmVhazsKLQkJCQljYXNlIDM6IHByaW50ZigiQUREUl9ISTogMHglMDhseCIsICh1bnNp Z25lZCBsb25nKWliKTsKKwkJCQljYXNlIDM6IHByaW50ZigiQUREUl9ISTogJXMweCUwOGx4JXMi LCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNl IDQ6IHByaW50ZigiU0VRX0xPOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpaWIpOworCQkJCWNh c2UgNDogcHJpbnRmKCJTRVFfTE86ICVzMHglMDhseCVzIiwgQkxVRSwgKHVuc2lnbmVkIGxvbmcp aWIsIFJTVCk7CiAJCQkJCWJyZWFrOwotCQkJCWNhc2UgNTogcHJpbnRmKCJTRVFfSEk6IDB4JTA4 bHgiLCAodW5zaWduZWQgbG9uZylpYik7CisJCQkJY2FzZSA1OiBwcmludGYoIlNFUV9ISTogJXMw eCUwOGx4JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJYnJlYWs7CiAJ CQkJY2FzZSA2OgogCQkJCQlpZiAoYXNpYy0+ZmFtaWx5ID49IEZBTUlMWV9BSSkgewogCQkJCQkJ Ly8gZGVjb2RlIGFkZGl0aW9uYWwgd29yZHMKLQkJCQkJCXByaW50ZigiREFUQTogMHglMDhseCIs ICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQkJCXByaW50ZigiREFUQTogJXMweCUwOGx4JXMiLCBC TFVFLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKIAkJCQkJCWJyZWFrOwogCQkJCQl9CiAJCQkJ CS8vIGZhbGwgdGhyb3VnaCB0byBpbnZhbGlkCkBAIC02MTAsMjYgKzY0MSwyNiBAQCBzdGF0aWMg dm9pZCBwcmludF9kZWNvZGVfcG00X3BrdDMoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3Qg dW1yX3JpbmdfZGVjb2RlcgogCQkJYnJlYWs7CiAJCWNhc2UgMHg1MDogLy8gRE1BX0RBVEEKIAkJ CXN3aXRjaChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNlIDA6IHByaW50ZigiRU5H X1NFTDogJWQsIFNSQ19DQUNIRTogJWQsIERTVF9TRUw6ICVkLCBEU1RfQ0FDSEU6ICVkLCBTUkNf U0VMOiAlZCwgQ1BfU1lOQzogJWQiLAotCQkJCQkJKGludClCSVRTKGliLCAwLCAxKSwKLQkJCQkJ CShpbnQpQklUUyhpYiwgMSsxMiwgMSsxMisyKSwKLQkJCQkJCShpbnQpQklUUyhpYiwgMSsxMisy KzUsMSsxMisyKzUrMiksCi0JCQkJCQkoaW50KUJJVFMoaWIsIDErMTIrMis1KzIrMywgMSsxMisy KzUrMiszKzIpLAotCQkJCQkJKGludClCSVRTKGliLCAxKzEyKzIrNSsyKzMrMisyLCAxKzEyKzIr NSsyKzMrMisyKzIpLAotCQkJCQkJKGludClCSVRTKGliLCAxKzEyKzIrNSsyKzMrMisyKzIsIDEr MTIrMis1KzIrMysyKzIrMisxKSk7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgMTogcHJpbnRmKCJT UkNfQUREUl9MT19PUl9EQVRBOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwg MzIpKTsgYnJlYWs7Ci0JCQkJY2FzZSAyOiBwcmludGYoIlNSQ19BRERSX0hJOiAweCUwOGx4Iiwg KHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMzIpKTsgYnJlYWs7Ci0JCQkJY2FzZSAzOiBwcmlu dGYoIkRTVF9BRERSX0xPOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMzIp KTsgYnJlYWs7Ci0JCQkJY2FzZSA0OiBwcmludGYoIkRTVF9BRERSX0hJOiAweCUwOGx4IiwgKHVu c2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMzIpKTsgYnJlYWs7Ci0JCQkJY2FzZSA1OiBwcmludGYo IkJZVEUgQ09VTlQ6ICVsdSwgU0FTOiAlZCwgREFTOiAlZCwgU0FJQzogJWQsIERBSUM6ICVkLCBS QVdfV0FJVDogJWQsIERJU19XQzogJWQiLAotCQkJCQkJKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwg MCwgMjYpLAotCQkJCQkJKGludClCSVRTKGliLCAyNiwgMjYrMSksCi0JCQkJCQkoaW50KUJJVFMo aWIsIDI2KzEsIDI2KzErMSksCi0JCQkJCQkoaW50KUJJVFMoaWIsIDI2KzErMSwgMjYrMSsxKzEp LAotCQkJCQkJKGludClCSVRTKGliLCAyNisxKzErMSwgMjYrMSsxKzErMSksCi0JCQkJCQkoaW50 KUJJVFMoaWIsIDI2KzErMSsxKzEsIDI2KzErMSsxKzErMSksCi0JCQkJCQkoaW50KUJJVFMoaWIs IDI2KzErMSsxKzErMSwgMjYrMSsxKzErMSsxKzEpKTsKKwkJCQljYXNlIDA6IHByaW50ZigiRU5H X1NFTDogJXMlZCVzLCBTUkNfQ0FDSEU6ICVzJWQlcywgRFNUX1NFTDogJXMlZCVzLCBEU1RfQ0FD SEU6ICVzJWQlcywgU1JDX1NFTDogJXMlZCVzLCBDUF9TWU5DOiAlcyVkJXMiLAorCQkJCQkJQkxV RSwgKGludClCSVRTKGliLCAwLCAxKSwgUlNULAorCQkJCQkJQkxVRSwgKGludClCSVRTKGliLCAx KzEyLCAxKzEyKzIpLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDErMTIrMis1LDEr MTIrMis1KzIpLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDErMTIrMis1KzIrMywg MSsxMisyKzUrMiszKzIpLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDErMTIrMis1 KzIrMysyKzIsIDErMTIrMis1KzIrMysyKzIrMiksIFJTVCwKKwkJCQkJCUJMVUUsIChpbnQpQklU UyhpYiwgMSsxMisyKzUrMiszKzIrMisyLCAxKzEyKzIrNSsyKzMrMisyKzIrMSksIFJTVCk7CisJ CQkJCWJyZWFrOworCQkJCWNhc2UgMTogcHJpbnRmKCJTUkNfQUREUl9MT19PUl9EQVRBOiAlczB4 JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMzIpLCBSU1QpOyBi cmVhazsKKwkJCQljYXNlIDI6IHByaW50ZigiU1JDX0FERFJfSEk6ICVzMHglMDhseCVzIiwgWUVM TE9XLCAodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCAzMiksIFJTVCk7IGJyZWFrOworCQkJCWNh c2UgMzogcHJpbnRmKCJEU1RfQUREUl9MTzogJXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25l ZCBsb25nKUJJVFMoaWIsIDAsIDMyKSwgUlNUKTsgYnJlYWs7CisJCQkJY2FzZSA0OiBwcmludGYo IkRTVF9BRERSX0hJOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVuc2lnbmVkIGxvbmcpQklUUyhp YiwgMCwgMzIpLCBSU1QpOyBicmVhazsKKwkJCQljYXNlIDU6IHByaW50ZigiQllURSBDT1VOVDog JXMlbHUlcywgU0FTOiAlcyVkJXMsIERBUzogJXMlZCVzLCBTQUlDOiAlcyVkJXMsIERBSUM6ICVz JWQlcywgUkFXX1dBSVQ6ICVzJWQlcywgRElTX1dDOiAlcyVkJXMiLAorCQkJCQkJQkxVRSwgKHVu c2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMjYpLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMo aWIsIDI2LCAyNisxKSwgUlNULAorCQkJCQkJQkxVRSwgKGludClCSVRTKGliLCAyNisxLCAyNisx KzEpLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDI2KzErMSwgMjYrMSsxKzEpLCBS U1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDI2KzErMSsxLCAyNisxKzErMSsxKSwgUlNU LAorCQkJCQkJQkxVRSwgKGludClCSVRTKGliLCAyNisxKzErMSsxLCAyNisxKzErMSsxKzEpLCBS U1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDI2KzErMSsxKzErMSwgMjYrMSsxKzErMSsx KzEpLCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OiBwcmludGYoIkludmFsaWQgd29y ZCBmb3Igb3Bjb2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQuY3VyX29w Y29kZSk7CiAJCQl9CkBAIC02MzcsNTQgKzY2OCw1NCBAQCBzdGF0aWMgdm9pZCBwcmludF9kZWNv ZGVfcG00X3BrdDMoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1yX3JpbmdfZGVjb2Rl cgogCQljYXNlIDB4Njg6IC8vIFNFVF9DT05GSUdfUkVHCiAJCQlzd2l0Y2goZGVjb2Rlci0+cG00 LmN1cl93b3JkKSB7CiAJCQkJY2FzZSAwOiBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRk cl9sbyA9IEJJVFMoaWIsIDAsIDE2KSArIDB4MjAwMDsKLQkJCQkJcHJpbnRmKCJPRkZTRVQ6IDB4 JWx4IiwgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMTYpKTsKKwkJCQkJcHJpbnRmKCJPRkZT RVQ6ICVzMHglbHglcyIsIEJMVUUsICh1bnNpZ25lZCBsb25nKUJJVFMoaWIsIDAsIDE2KSwgUlNU KTsKIAkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDogcHJpbnRmKCIlcyA8PSAweCUwOGx4IiwgdW1y X3JlZ19uYW1lKGFzaWMsIGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvKyspLCAo dW5zaWduZWQgbG9uZylpYik7Ci0JCQkJCXByaW50X2JpdHMoYXNpYywgZGVjb2Rlci0+cG00Lm5l eHRfd3JpdGVfbWVtLmFkZHJfbG8gLSAxLCBpYik7CisJCQkJZGVmYXVsdDogcHJpbnRmKCIlcyA8 PSAlczB4JTA4bHglcyIsIHVtcl9yZWdfbmFtZShhc2ljLCBkZWNvZGVyLT5wbTQubmV4dF93cml0 ZV9tZW0uYWRkcl9sbysrKSwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsKKwkJCQkJ cHJpbnRfYml0cyhhc2ljLCBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbyAtIDEs IGliLCAwKTsKIAkJCQkJYnJlYWs7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSAweDY5OiAvLyBT RVRfQ09OVEVYVF9SRUcKIAkJCXN3aXRjaChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKIAkJCQlj YXNlIDA6IGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvID0gQklUUyhpYiwgMCwg MTYpICsgMHhBMDAwOwotCQkJCQlwcmludGYoIk9GRlNFVDogMHglbHgiLCAodW5zaWduZWQgbG9u ZylCSVRTKGliLCAwLCAxNikpOworCQkJCQlwcmludGYoIk9GRlNFVDogJXMweCVseCVzIiwgQkxV RSwgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMTYpLCBSU1QpOwogCQkJCQlicmVhazsKLQkJ CQlkZWZhdWx0OiBwcmludGYoIiVzIDw9IDB4JTA4bHgiLCB1bXJfcmVnX25hbWUoYXNpYywgZGVj b2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8rKyksICh1bnNpZ25lZCBsb25nKWliKTsK LQkJCQkJcHJpbnRfYml0cyhhc2ljLCBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9s byAtIDEsIGliKTsKKwkJCQlkZWZhdWx0OiBwcmludGYoIiVzIDw9ICVzMHglMDhseCVzIiwgdW1y X3JlZ19uYW1lKGFzaWMsIGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvKyspLCBZ RUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOworCQkJCQlwcmludF9iaXRzKGFzaWMsIGRl Y29kZXItPnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvIC0gMSwgaWIsIDApOwogCQkJCQlicmVh azsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIDB4NzY6IC8vIFNFVF9TSF9SRUcKIAkJCXN3aXRj aChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKIAkJCQljYXNlIDA6IGRlY29kZXItPnBtNC5uZXh0 X3dyaXRlX21lbS5hZGRyX2xvID0gQklUUyhpYiwgMCwgMTYpICsgMHgyQzAwOwotCQkJCQlwcmlu dGYoIk9GRlNFVDogMHglbHgiLCAodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCAxNikpOworCQkJ CQlwcmludGYoIk9GRlNFVDogJXMweCVseCVzIiwgQkxVRSwgKHVuc2lnbmVkIGxvbmcpQklUUyhp YiwgMCwgMTYpLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQlkZWZhdWx0OiBwcmludGYoIiVzIDw9 IDB4JTA4bHgiLCB1bXJfcmVnX25hbWUoYXNpYywgZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVt LmFkZHJfbG8rKyksICh1bnNpZ25lZCBsb25nKWliKTsKLQkJCQkJcHJpbnRfYml0cyhhc2ljLCBk ZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbyAtIDEsIGliKTsKKwkJCQlkZWZhdWx0 OiBwcmludGYoIiVzIDw9ICVzMHglMDhseCVzIiwgdW1yX3JlZ19uYW1lKGFzaWMsIGRlY29kZXIt PnBtNC5uZXh0X3dyaXRlX21lbS5hZGRyX2xvKyspLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWli LCBSU1QpOworCQkJCQlwcmludF9iaXRzKGFzaWMsIGRlY29kZXItPnBtNC5uZXh0X3dyaXRlX21l bS5hZGRyX2xvIC0gMSwgaWIsIDApOwogCQkJCQlicmVhazsKIAkJCX0KIAkJCWJyZWFrOwogCQlj YXNlIDB4Nzk6IC8vIFNFVF9VQ09ORklHX1JFRwogCQkJc3dpdGNoKGRlY29kZXItPnBtNC5jdXJf d29yZCkgewogCQkJCWNhc2UgMDogZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8g PSBCSVRTKGliLCAwLCAxNikgKyAweEMwMDA7Ci0JCQkJCXByaW50ZigiT0ZGU0VUOiAweCVseCIs ICh1bnNpZ25lZCBsb25nKUJJVFMoaWIsIDAsIDE2KSk7CisJCQkJCXByaW50ZigiT0ZGU0VUOiAl czB4JWx4JXMiLCBCTFVFLCAodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCAxNiksIFJTVCk7CiAJ CQkJCWJyZWFrOwotCQkJCWRlZmF1bHQ6IHByaW50ZigiJXMgPD0gMHglMDhseCIsIHVtcl9yZWdf bmFtZShhc2ljLCBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbysrKSwgKHVuc2ln bmVkIGxvbmcpaWIpOwotCQkJCQlwcmludF9iaXRzKGFzaWMsIGRlY29kZXItPnBtNC5uZXh0X3dy aXRlX21lbS5hZGRyX2xvIC0gMSwgaWIpOworCQkJCWRlZmF1bHQ6IHByaW50ZigiJXMgPD0gJXMw eCUwOGx4JXMiLCB1bXJfcmVnX25hbWUoYXNpYywgZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVt LmFkZHJfbG8rKyksIFlFTExPVywgKHVuc2lnbmVkIGxvbmcpaWIsIFJTVCk7CisJCQkJCXByaW50 X2JpdHMoYXNpYywgZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8gLSAxLCBpYiwg MCk7CiAJCQkJCWJyZWFrOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgMHg4MDogLy8gTE9BRF9D T05TVF9SQU0KIAkJCXN3aXRjaChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNlIDA6 IHByaW50ZigiQUREUl9MTzogMHglMDhseCIsICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQljYXNl IDA6IHByaW50ZigiQUREUl9MTzogJXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25n KWliLCBSU1QpOwogCQkJCQlicmVhazsKLQkJCQljYXNlIDE6IHByaW50ZigiQUREUl9ISTogMHgl MDhseCIsICh1bnNpZ25lZCBsb25nKWliKTsKKwkJCQljYXNlIDE6IHByaW50ZigiQUREUl9ISTog JXMweCUwOGx4JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKWliLCBSU1QpOwogCQkJCQlicmVh azsKLQkJCQljYXNlIDI6IHByaW50ZigiTlVNX0RXOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcp QklUUyhpYiwgMCwgMTUpKTsKKwkJCQljYXNlIDI6IHByaW50ZigiTlVNX0RXOiAlczB4JTA4bHgl cyIsIEJMVUUsICh1bnNpZ25lZCBsb25nKUJJVFMoaWIsIDAsIDE1KSwgUlNUKTsKIAkJCQkJYnJl YWs7Ci0JCQkJY2FzZSAzOiBwcmludGYoIlNUQVJUX0FERFI6IDB4JTA4bHgsIENBQ0hFX1BPTElD WTogJXMiLAotCQkJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMTYpLAotCQkJ CQkgICAgICAgQklUUyhpYiwgMjUsIDI3KSA/ICJzdHJlYW0iIDogImxydSIpOworCQkJCWNhc2Ug MzogcHJpbnRmKCJTVEFSVF9BRERSOiAlczB4JTA4bHglcywgQ0FDSEVfUE9MSUNZOiAlcyVzJXMi LAorCQkJCQkgICAgICAgWUVMTE9XLCAodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCAxNiksIFJT VCwKKwkJCQkJICAgICAgIENZQU4sIEJJVFMoaWIsIDI1LCAyNykgPyAic3RyZWFtIiA6ICJscnUi LCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OiBwcmludGYoIkludmFsaWQgd29yZCBm b3Igb3Bjb2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQuY3VyX29wY29k ZSk7CiAJCQl9CkBAIC02OTIsNDcgKzcyMyw0OSBAQCBzdGF0aWMgdm9pZCBwcmludF9kZWNvZGVf cG00X3BrdDMoc3RydWN0IHVtcl9hc2ljICphc2ljLCBzdHJ1Y3QgdW1yX3JpbmdfZGVjb2Rlcgog CQljYXNlIDB4ODE6IC8vIFdSSVRFX0NPTlNUX1JBTQogCQkJc3dpdGNoKGRlY29kZXItPnBtNC5j dXJfd29yZCkgewogCQkJCWNhc2UgMDogZGVjb2Rlci0+cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJf bG8gPSBCSVRTKGliLCAwLCAxNik7Ci0JCQkJCXByaW50ZigiT0ZGU0VUOiAweCVseCIsICh1bnNp Z25lZCBsb25nKUJJVFMoaWIsIDAsIDE2KSk7CisJCQkJCXByaW50ZigiT0ZGU0VUOiAlczB4JWx4 JXMiLCBZRUxMT1csICh1bnNpZ25lZCBsb25nKUJJVFMoaWIsIDAsIDE2KSwgUlNUKTsKIAkJCQkJ YnJlYWs7Ci0JCQkJZGVmYXVsdDogcHJpbnRmKCJDT05TVF9SQU1bMHglbHhdIDw9IDB4JTA4bHgi LCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9sbywgKHVu c2lnbmVkIGxvbmcpaWIpOworCQkJCWRlZmF1bHQ6IHByaW50ZigiQ09OU1RfUkFNWyVzMHglbHgl c10gPD0gJXMweCUwOGx4JXMiLAorCQkJCQkJQkxVRSwgKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+ cG00Lm5leHRfd3JpdGVfbWVtLmFkZHJfbG8sIFJTVCwKKwkJCQkJCVlFTExPVywgKHVuc2lnbmVk IGxvbmcpaWIsIFJTVCk7CiAJCQkJCSBkZWNvZGVyLT5wbTQubmV4dF93cml0ZV9tZW0uYWRkcl9s byArPSA0OwogCQkJCQlicmVhazsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIDB4ODM6IC8vIERV TVBfQ09OU1RfUkFNCiAJCQlzd2l0Y2goZGVjb2Rlci0+cG00LmN1cl93b3JkKSB7Ci0JCQkJY2Fz ZSAwOiBwcmludGYoIk9GRlNFVDogMHglbHgsIENBQ0hFX1BPTElDWTogWyVzXSwgSU5DX0NFOiAl ZCwgSU5DX0NTOiAlZCIsCi0JCQkJCQkodW5zaWduZWQgbG9uZylCSVRTKGliLCAwLCAxNiksCi0J CQkJCQlCSVRTKGliLCAyNSwgMjYpID8gInN0cmVhbSIgOiAibHJ1IiwKLQkJCQkJCShpbnQpQklU UyhpYiwgMzAsIDMxKSwKLQkJCQkJCShpbnQpQklUUyhpYiwgMzEsIDMyKSk7CisJCQkJY2FzZSAw OiBwcmludGYoIk9GRlNFVDogJXMweCVseCVzLCBDQUNIRV9QT0xJQ1k6IFslcyVzJXNdLCBJTkNf Q0U6ICVzJWQlcywgSU5DX0NTOiAlcyVkJXMiLAorCQkJCQkJWUVMTE9XLCAodW5zaWduZWQgbG9u ZylCSVRTKGliLCAwLCAxNiksIFJTVCwKKwkJCQkJCUNZQU4sIEJJVFMoaWIsIDI1LCAyNikgPyAi c3RyZWFtIiA6ICJscnUiLCBSU1QsCisJCQkJCQlCTFVFLCAoaW50KUJJVFMoaWIsIDMwLCAzMSks IFJTVCwKKwkJCQkJCUJMVUUsIChpbnQpQklUUyhpYiwgMzEsIDMyKSwgUlNUKTsKIAkJCQkJYnJl YWs7CiAJCQkJY2FzZSAxOgotCQkJCQlwcmludGYoIk5VTV9EVzogMHglbHgiLCAodW5zaWduZWQg bG9uZylCSVRTKGliLCAwLCAxNSkpOworCQkJCQlwcmludGYoIk5VTV9EVzogJXMweCVseCVzIiwg QkxVRSwgKHVuc2lnbmVkIGxvbmcpQklUUyhpYiwgMCwgMTUpLCBSU1QpOwogCQkJCQlicmVhazsK IAkJCQljYXNlIDI6Ci0JCQkJCXByaW50ZigiQUREUl9MTzogMHglMDhseCIsICh1bnNpZ25lZCBs b25nKWliKTsKKwkJCQkJcHJpbnRmKCJBRERSX0xPOiAlczB4JTA4bHglcyIsIFlFTExPVywgKHVu c2lnbmVkIGxvbmcpaWIsIFJTVCk7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgMzoKLQkJCQkJcHJp bnRmKCJBRERSX0hJOiAweCUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpaWIpOworCQkJCQlwcmludGYo IkFERFJfSEk6ICVzMHglMDhseCVzIiwgWUVMTE9XLCAodW5zaWduZWQgbG9uZylpYiwgUlNUKTsK IAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDogcHJpbnRmKCJJbnZhbGlkIHdvcmQgZm9yIG9wY29k ZSAweCUwMmx4IiwgKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+cG00LmN1cl9vcGNvZGUpOwogCQkJ fQogCQkJYnJlYWs7CiAJCWNhc2UgMHg4NDogLy8gSU5DUkVNRU5UX0NFX0NPVU5URVIKIAkJCXN3 aXRjaChkZWNvZGVyLT5wbTQuY3VyX3dvcmQpIHsKLQkJCQljYXNlIDA6IHByaW50ZigiQ05UUlNF TDogWyVzXSIsCi0JCQkJCQlvcF84NF9jbnRyX3NlbFtCSVRTKGliLCAwLCAyKV0pOworCQkJCWNh c2UgMDogcHJpbnRmKCJDTlRSU0VMOiBbJXMlcyVzXSIsCisJCQkJCQlDWUFOLCBvcF84NF9jbnRy X3NlbFtCSVRTKGliLCAwLCAyKV0sIFJTVCk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6IHBy aW50ZigiSW52YWxpZCB3b3JkIGZvciBvcGNvZGUgMHglMDJseCIsICh1bnNpZ25lZCBsb25nKWRl Y29kZXItPnBtNC5jdXJfb3Bjb2RlKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIDB4ODY6IC8v IFdBSVRfT05fQ0VfQ09VTlRFUgogCQkJc3dpdGNoKGRlY29kZXItPnBtNC5jdXJfd29yZCkgewot CQkJCWNhc2UgMDogcHJpbnRmKCJDT05EX0FDUVVJUkVfTUVNOiAlZCwgRk9SQ0VfU1lOQzogJWQs IE1FTV9WT0xBVElMRTogJWQiLAotCQkJCQkJKGludClCSVRTKGliLCAwLCAxKSwKLQkJCQkJCShp bnQpQklUUyhpYiwgMSwgMiksCi0JCQkJCQkoaW50KUJJVFMoaWIsIDI3LCAyOCkpOworCQkJCWNh c2UgMDogcHJpbnRmKCJDT05EX0FDUVVJUkVfTUVNOiAlcyVkJXMsIEZPUkNFX1NZTkM6ICVzJWQl cywgTUVNX1ZPTEFUSUxFOiAlcyVkJXMiLAorCQkJCQkJQkxVRSwgKGludClCSVRTKGliLCAwLCAx KSwgUlNULAorCQkJCQkJQkxVRSwgKGludClCSVRTKGliLCAxLCAyKSwgUlNULAorCQkJCQkJQkxV RSwgKGludClCSVRTKGliLCAyNywgMjgpLCBSU1QpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0 OiBwcmludGYoIkludmFsaWQgd29yZCBmb3Igb3Bjb2RlIDB4JTAybHgiLCAodW5zaWduZWQgbG9u ZylkZWNvZGVyLT5wbTQuY3VyX29wY29kZSk7CiAJCQl9CkBAIC03NjAsNyArNzkzLDkgQEAgc3Rh dGljIHZvaWQgcHJpbnRfZGVjb2RlX3BtNChzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIHN0cnVjdCB1 bXJfcmluZ19kZWNvZGVyICpkZWMKIAkJCQlwcmludGYoIlBLVDIiKTsKIAkJCX0gZWxzZSBpZiAo ZGVjb2Rlci0+cG00LnBrdF90eXBlID09IDMpIHsKIAkJCQlkZWNvZGVyLT5wbTQuY3VyX29wY29k ZSA9IChpYiA+PiA4KSAmIDB4RkY7Ci0JCQkJcHJpbnRmKCJQS1QzLCBDT1VOVDolbHUsIFBSRURJ Q0FURTolbHUsIFNIQURFUl9UWVBFOiVsdSwgT1BDT0RFOiUwMmx4WyVzXSIsICh1bnNpZ25lZCBs b25nKWRlY29kZXItPnBtNC5uX3dvcmRzLCAodW5zaWduZWQgbG9uZykoaWImMSksICh1bnNpZ25l ZCBsb25nKSgoaWI+PjEpJjEpLCAodW5zaWduZWQgbG9uZylkZWNvZGVyLT5wbTQuY3VyX29wY29k ZSwgcG00X3BrdDNfb3Bjb2RlX25hbWVzW2RlY29kZXItPnBtNC5jdXJfb3Bjb2RlJjB4RkZdKTsK KwkJCQlwcmludGYoIlBLVDMsIENPVU5UOiVsdSwgUFJFRElDQVRFOiVsdSwgU0hBREVSX1RZUEU6 JWx1LCBPUENPREU6JTAybHhbJXMlcyVzXSIsCisJCQkJKHVuc2lnbmVkIGxvbmcpZGVjb2Rlci0+ cG00Lm5fd29yZHMsICh1bnNpZ25lZCBsb25nKShpYiYxKSwgKHVuc2lnbmVkIGxvbmcpKChpYj4+ MSkmMSksICh1bnNpZ25lZCBsb25nKWRlY29kZXItPnBtNC5jdXJfb3Bjb2RlLAorCQkJCUNZQU4s IHBtNF9wa3QzX29wY29kZV9uYW1lc1tkZWNvZGVyLT5wbTQuY3VyX29wY29kZSYweEZGXSwgUlNU KTsKIAkJCX0KIAkJCWlmICghZGVjb2Rlci0+cG00Lm5fd29yZHMpCiAJCQkJZGVjb2Rlci0+cG00 LmN1cl9vcGNvZGUgPSAweEZGRkZGRkZGOwpAQCAtNzc1LDIwICs4MTAsMjUgQEAgc3RhdGljIHZv aWQgcHJpbnRfZGVjb2RlX3BtNChzdHJ1Y3QgdW1yX2FzaWMgKmFzaWMsIHN0cnVjdCB1bXJfcmlu Z19kZWNvZGVyICpkZWMKIAogCQkJLy8gZGV0ZWN0IFZDTi9VVkQgSUJzIGFuZCBjaGFpbiB0aGVt IG9uY2UgYWxsCiAJCQkvLyA0IHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBhcmUgZm91bmQKLQkJCWlm ICghc3RyY21wKG5hbWUsICJtbVVWRF9MTUlfUkJDX0lCX1ZNSUQiKSkgeworCQkJaWYgKHN0cnN0 cihuYW1lLCAibW1VVkRfTE1JX1JCQ19JQl9WTUlEIikpIHsKIAkJCQlkZWNvZGVyLT5wbTQubmV4 dF9pYl9zdGF0ZS5pYl92bWlkID0gaWIgfCAoKGFzaWMtPmZhbWlseSA8PSBGQU1JTFlfVkkpID8g MCA6IFVNUl9NTV9IVUIpOwogCQkJCWRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLnRhbGx5IHw9 IDE7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAobmFtZSwgIm1tVVZEX0xNSV9SQkNfSUJfNjRCSVRf QkFSX0xPVyIpKSB7CisJCQl9IGVsc2UgaWYgKHN0cnN0cihuYW1lLCAibW1VVkRfTE1JX1JCQ19J Ql82NEJJVF9CQVJfTE9XIikpIHsKIAkJCQlkZWNvZGVyLT5wbTQubmV4dF9pYl9zdGF0ZS5pYl9h ZGRyX2xvID0gaWI7CiAJCQkJZGVjb2Rlci0+cG00Lm5leHRfaWJfc3RhdGUudGFsbHkgfD0gMjsK LQkJCX0gZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAibW1VVkRfTE1JX1JCQ19JQl82NEJJVF9CQVJf SElHSCIpKSB7CisJCQl9IGVsc2UgaWYgKHN0cnN0cihuYW1lLCAibW1VVkRfTE1JX1JCQ19JQl82 NEJJVF9CQVJfSElHSCIpKSB7CiAJCQkJZGVjb2Rlci0+cG00Lm5leHRfaWJfc3RhdGUuaWJfYWRk cl9oaSA9IGliOwogCQkJCWRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLnRhbGx5IHw9IDQ7Ci0J CQl9IGVsc2UgaWYgKCFzdHJjbXAobmFtZSwgIm1tVVZEX1JCQ19JQl9TSVpFIikpIHsKKwkJCX0g ZWxzZSBpZiAoc3Ryc3RyKG5hbWUsICJtbVVWRF9SQkNfSUJfU0laRSIpKSB7CiAJCQkJZGVjb2Rl ci0+cG00Lm5leHRfaWJfc3RhdGUuaWJfc2l6ZSA9IGliICogNDsKIAkJCQlkZWNvZGVyLT5wbTQu bmV4dF9pYl9zdGF0ZS50YWxseSB8PSA4OwogCQkJfQogCisJCQlpZiAoZGVjb2Rlci0+cG00Lm5l eHRfaWJfc3RhdGUudGFsbHkgPT0gKDJ8NHw4KSkgeworCQkJCWRlY29kZXItPnBtNC5uZXh0X2li X3N0YXRlLmliX3ZtaWQgPSAwOworCQkJCWRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLnRhbGx5 ID0gMTU7CisJCQl9CisKIAkJCWlmIChkZWNvZGVyLT5wbTQubmV4dF9pYl9zdGF0ZS50YWxseSA9 PSAxNSkgewogCQkJCWRlY29kZXItPnBtNC5uZXh0X2liX3N0YXRlLnRhbGx5ID0gMDsKIAkJCQlh ZGRfaWIoZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9zcmMvdW1yLmggYi9zcmMvdW1yLmgKaW5kZXgg NmVmZTNhNDY4MjUzLi5jMDgyMWYyZDJjMDMgMTAwNjQ0Ci0tLSBhL3NyYy91bXIuaAorKysgYi9z cmMvdW1yLmgKQEAgLTM1Miw2ICszNTIsMTMgQEAgc3RydWN0IHVtcl9yaW5nX2RlY29kZXIgewog CQlwbTsKIAogCXN0cnVjdCB7CisJCXVpbnQ2NF90CisJCQlhZGRyLAorCQkJdm1pZCwKKwkJCWli X2FkZHI7CisJfSBzcmM7IAorCisJc3RydWN0IHsKIAkJdWludDMyX3QKIAkJCWN1cl9vcGNvZGUs CiAJCQlwa3RfdHlwZSwKQEAgLTM4Miw3ICszODksOCBAQCBzdHJ1Y3QgdW1yX3JpbmdfZGVjb2Rl ciB7CiAJCXVpbnQ2NF90IGliX2FkZHIsCiAJCQkgdm1fYmFzZV9hZGRyOyAvLyBub3QgdXNlZCB5 ZXQgKHdpbGwgYmUgdXNlZCBieSBJQiBwYXJzZXIuLi4pCiAJCXVpbnQzMl90IHZtaWQsCi0JCQkg c2l6ZTsKKwkJCSBzaXplLAorCQkJIGFkZHI7CiAJfSBuZXh0X2liX2luZm87CiB9OwogCi0tIAoy LjEyLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFt ZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=