From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 2/8] dm_op: convert HVMOP_*ioreq_server* Date: Tue, 6 Dec 2016 13:46:13 +0000 Message-ID: <1481031979-4751-3-git-send-email-paul.durrant@citrix.com> References: <1481031979-4751-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cEGQM-0007y6-3s for xen-devel@lists.xenproject.org; Tue, 06 Dec 2016 14:08:50 +0000 In-Reply-To: <1481031979-4751-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org VGhlIGRlZmluaXRpb25zIG9mIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV8qIGhhdmUgdG8gcGVyc2lz dCBhcyB0aGV5IGFyZQphbHJlYWR5IGluIHVzZSBieSBjYWxsZXJzIG9mIHRoZSBsaWJ4YyBpbnRl cmZhY2UuCgpTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0KQ2M6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFj a3NvbkBldS5jaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBEYW5pZWwgRGUg R3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KCnYyOgotIEFkZHJlc3NlZCBzZXZlcmFsIGNv bW1lbnRzIGZyb20gSmFuLgotLS0KIHRvb2xzL2xpYnhjL3hjX2RvbWFpbi5jICAgICAgICAgIHwg MjEyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9o dm0vZG0uYyAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9o dm0vaHZtLmMgICAgICAgICAgIHwgMjE5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgfCAgMzYgKysrLS0tLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgIDMgKy0KIHhlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaCAgIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCAgfCAxMzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAgIHwgICA2IC0tCiB4ZW4vaW5jbHVk ZS94c20veHNtLmggICAgICAgICAgICB8ICAgNiAtLQogeGVuL3hzbS9kdW1teS5jICAgICAgICAg ICAgICAgICAgfCAgIDEgLQogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAgICAgICAgfCAgIDYg LS0KIDExIGZpbGVzIGNoYW5nZWQsIDM1NiBpbnNlcnRpb25zKCspLCA1MDcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMgYi90b29scy9saWJ4Yy94Y19k b21haW4uYwppbmRleCAyOTZiODUyLi40MTlhODk3IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94 Y19kb21haW4uYworKysgYi90b29scy9saWJ4Yy94Y19kb21haW4uYwpAQCAtMTQxNywyNCArMTQx NywyNCBAQCBpbnQgeGNfaHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhhbmRsZV9idWZpb3JlcSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90ICppZCkKIHsKLSAgICBERUNM QVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyX3QsIGFyZyk7 CisgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9p b3JlcV9zZXJ2ZXIgKmRhdGE7CiAgICAgaW50IHJjOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxs X2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBO VUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkp OwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAgIGFyZy0+aGFuZGxlX2J1ZmlvcmVxID0g aGFuZGxlX2J1ZmlvcmVxOworICAgIG9wLm9wID0gWEVOX0RNT1BfY3JlYXRlX2lvcmVxX3NlcnZl cjsKKyAgICBkYXRhID0gJm9wLnUuY3JlYXRlX2lvcmVxX3NlcnZlcjsKIAotICAgIHJjID0geGVu Y2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAg IEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICBIWVBFUkNBTExf QlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBkYXRhLT5oYW5kbGVfYnVmaW9yZXEgPSBoYW5kbGVf YnVmaW9yZXE7CisKKyAgICByYyA9IGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9m KG9wKSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKIAotICAgICppZCA9IGFy Zy0+aWQ7CisgICAgKmlkID0gZGF0YS0+aWQ7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2Zy ZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsKIH0KIAogaW50IHhj X2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsCkBAIC0xNDQ0LDg0 ICsxNDQ0LDcxIEBAIGludCB4Y19odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKHhjX2ludGVyZmFj ZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90ICpidWZp b3JlcV9wZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90 ICpidWZpb3JlcV9wb3J0KQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZt X2dldF9pb3JlcV9zZXJ2ZXJfaW5mb190LCBhcmcpOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7 CisgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gKmRhdGE7CiAgICAg aW50IHJjOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywg c2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0x OworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRv bWlkOwotICAgIGFyZy0+aWQgPSBpZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX2dldF9pb3JlcV9z ZXJ2ZXJfaW5mbzsKKyAgICBkYXRhID0gJm9wLnUuZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOwogCi0g ICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAg ICAgICAgICAgICAgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvLAotICAgICAgICAgICAgICAg ICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAg ICAgICAgZ290byBkb25lOworICAgIGRhdGEtPmlkID0gaWQ7CisKKyAgICByYyA9IGRvX2RtX29w KHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CisgICAgaWYgKCByYyApCisgICAgICAg IHJldHVybiByYzsKIAogICAgIGlmICggaW9yZXFfcGZuICkKLSAgICAgICAgKmlvcmVxX3BmbiA9 IGFyZy0+aW9yZXFfcGZuOworICAgICAgICAqaW9yZXFfcGZuID0gZGF0YS0+aW9yZXFfcGZuOwog CiAgICAgaWYgKCBidWZpb3JlcV9wZm4gKQotICAgICAgICAqYnVmaW9yZXFfcGZuID0gYXJnLT5i dWZpb3JlcV9wZm47CisgICAgICAgICpidWZpb3JlcV9wZm4gPSBkYXRhLT5idWZpb3JlcV9wZm47 CiAKICAgICBpZiAoIGJ1ZmlvcmVxX3BvcnQgKQotICAgICAgICAqYnVmaW9yZXFfcG9ydCA9IGFy Zy0+YnVmaW9yZXFfcG9ydDsKKyAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBkYXRhLT5idWZpb3Jl cV9wb3J0OwogCi1kb25lOgotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7 Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiAwOwogfQogCiBpbnQgeGNfaHZtX21hcF9pb19y YW5nZV90b19pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpZCwgaW50 IGlzX21taW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIo eGVuX2h2bV9pb19yYW5nZV90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVuX2Rt X29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRhOwog Ci0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCph cmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1l bXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAg IGFyZy0+aWQgPSBpZDsKLSAgICBhcmctPnR5cGUgPSBpc19tbWlvID8gSFZNT1BfSU9fUkFOR0Vf TUVNT1JZIDogSFZNT1BfSU9fUkFOR0VfUE9SVDsKLSAgICBhcmctPnN0YXJ0ID0gc3RhcnQ7Ci0g ICAgYXJnLT5lbmQgPSBlbmQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9tYXBfaW9fcmFuZ2VfdG9f aW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS5tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2Vy dmVyOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29w LAotICAgICAgICAgICAgICAgICAgSFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlciwK LSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRh dGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IGlzX21taW8gPyBYRU5fRE1PUF9JT19SQU5H RV9NRU1PUlkgOiBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOworICAgIGRhdGEtPnN0YXJ0ID0gc3Rh cnQ7CisgICAgZGF0YS0+ZW5kID0gZW5kOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVl KHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGRvX2RtX29wKHhjaCwgZG9t aWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAKIGludCB4Y19odm1fdW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQsIGlu dCBpc19tbWlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JV RkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4 ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRh dGE7CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYXJnLCBzaXpl b2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICByZXR1cm4gLTE7Cisg ICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRvbWlkID0gZG9taWQ7 Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IGlzX21taW8gPyBIVk1PUF9JT19S QU5HRV9NRU1PUlkgOiBIVk1PUF9JT19SQU5HRV9QT1JUOwotICAgIGFyZy0+c3RhcnQgPSBzdGFy dDsKLSAgICBhcmctPmVuZCA9IGVuZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX3VubWFwX2lvX3Jh bmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1hcF9pb19yYW5nZV9m cm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBF UlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zy b21faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19B UkcoYXJnKSk7CisgICAgZGF0YS0+aWQgPSBpZDsKKyAgICBkYXRhLT50eXBlID0gaXNfbW1pbyA/ IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWSA6IFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ7CisgICAg ZGF0YS0+c3RhcnQgPSBzdGFydDsKKyAgICBkYXRhLT5lbmQgPSBlbmQ7CiAKLSAgICB4Y19oeXBl cmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4g ZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAogaW50IHhjX2h2 bV9tYXBfcGNpZGV2X3RvX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBk b21pZCwKQEAgLTE1MjksMzcgKzE1MTYsMzIgQEAgaW50IHhjX2h2bV9tYXBfcGNpZGV2X3RvX2lv cmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4X3QgZGV2aWNlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZ1bmN0aW9uKQog ewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFyZyk7 Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9k bV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2aWNlID4gMHgxZiB8 fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0 dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNo LCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJl dHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9t aWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBlID0gSFZNT1BfSU9f UkFOR0VfUENJOworICAgIG9wLm9wID0gWEVOX0RNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3Nl cnZlcjsKKyAgICBkYXRhID0gJm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjsKKwor ICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IFhFTl9ETU9QX0lPX1JBTkdFX1BD STsKIAogICAgIC8qCiAgICAgICogVGhlIHVuZGVybHlpbmcgaHlwZXJjYWxsIHdpbGwgZGVhbCB3 aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgogICAgICAqIGJ1dCwgZm9yIHNpbXBsaWNpdHksIHRoZSBB UEkgb25seSB1c2VzIHNpbmdsZXRvbnMuCiAgICAgICovCi0gICAgYXJnLT5zdGFydCA9IGFyZy0+ ZW5kID0gSFZNT1BfUENJX1NCREYoKHVpbnQ2NF90KXNlZ21lbnQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWJ1cywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClmdW5jdGlvbik7Ci0K LSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAg ICAgICAgICAgICAgICBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyLAotICAgICAg ICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+c3Rh cnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JERigodWludDY0X3Qpc2VnbWVudCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCli dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWlu dDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJl ZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBkb19kbV9vcCh4Y2gsIGRv bWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX3VubWFwX3BjaWRldl9m cm9tX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKQEAgLTE1 NjcsNTQgKzE1NDksNDkgQEAgaW50IHhjX2h2bV91bm1hcF9wY2lkZXZfZnJvbV9pb3JlcV9zZXJ2 ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGJ1cywgdWludDhfdCBkZXZpY2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZ1bmN0aW9uKQog ewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFyZyk7 Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9k bV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2aWNlID4gMHgxZiB8 fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0 dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNo LCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJl dHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9t aWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBlID0gSFZNT1BfSU9f UkFOR0VfUENJOwotICAgIGFyZy0+c3RhcnQgPSBhcmctPmVuZCA9IEhWTU9QX1BDSV9TQkRGKCh1 aW50NjRfdClzZWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh1aW50NjRfdClidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVpbnQ2NF90KWRldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodWludDY0X3QpZnVuY3Rpb24pOwotCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gt PnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1BfdW5t YXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICBIWVBFUkNB TExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX3VubWFwX2lvX3Jh bmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1hcF9pb19yYW5nZV9m cm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFy Zyk7Ci0gICAgcmV0dXJuIHJjOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9 IFhFTl9ETU9QX0lPX1JBTkdFX1BDSTsKKworICAgIC8qCisgICAgICogVGhlIHVuZGVybHlpbmcg aHlwZXJjYWxsIHdpbGwgZGVhbCB3aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgorICAgICAqIGJ1dCwg Zm9yIHNpbXBsaWNpdHksIHRoZSBBUEkgb25seSB1c2VzIHNpbmdsZXRvbnMuCisgICAgICovCisg ICAgZGF0YS0+c3RhcnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JERigodWludDY0X3Qp c2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1aW50NjRfdClidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodWludDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKKworICAgIHJldHVybiBkb19k bV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX2Rl c3Ryb3lfaW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpb3NlcnZpZF90IGlkKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5f aHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVj dCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZl ciAqZGF0YTsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBhcmcs IHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAt MTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9taWQgPSBk b21pZDsKLSAgICBhcmctPmlkID0gaWQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9kZXN0cm95X2lv cmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUuZGVzdHJveV9pb3JlcV9zZXJ2ZXI7CiAKLSAg ICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAg ICAgICAgICAgICBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZlciwKLSAgICAgICAgICAgICAgICAg IEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRhdGEtPmlkID0gaWQ7CiAKLSAg ICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAg ICByZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAog aW50IHhjX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHhjX2ludGVyZmFjZSAqeGNoLApAQCAt MTYyMiwyMyArMTU5OSwxOCBAQCBpbnQgeGNfaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoeGNf aW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2 aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5hYmxlZCkK IHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVy X3N0YXRlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7Cisg ICAgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlICpkYXRhOwogCi0gICAg YXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsK LSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbXNldCgm b3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAgIGFyZy0+ aWQgPSBpZDsKLSAgICBhcmctPmVuYWJsZWQgPSAhIWVuYWJsZWQ7CisgICAgb3Aub3AgPSBYRU5f RE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOworICAgIGRhdGEgPSAmb3AudS5zZXRfaW9yZXFf c2VydmVyX3N0YXRlOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklT T1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0 ZSwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAg IGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+ZW5hYmxlZCA9ICEhZW5hYmxlZDsKIAotICAgIHhj X2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJl dHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQg eGNfZG9tYWluX3NldGRlYnVnZ2luZyh4Y19pbnRlcmZhY2UgKnhjaCwKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwppbmRleCA5MDUxMGI4 Li5iOWQ3MGQxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS9kbS5jCkBAIC05MSw4ICs5MSw5NyBAQCBsb25nIGRvX2RtX29wKGRvbWlkX3Qg ZG9taWQsCiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgcmMgPSAtRUlO VkFMOworICAgIGlmICggb3AucGFkICkKKyAgICAgICAgZ290byBvdXQ7CisKICAgICBzd2l0Y2gg KCBvcC5vcCApCiAgICAgeworICAgIGNhc2UgWEVOX0RNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcjoK KyAgICB7CisgICAgICAgIHN0cnVjdCBkb21haW4gKmN1cnJfZCA9IGN1cnJlbnQtPmRvbWFpbjsK KyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyICpkYXRhID0KKyAg ICAgICAgICAgICZvcC51LmNyZWF0ZV9pb3JlcV9zZXJ2ZXI7CisKKyAgICAgICAgcmMgPSAtRUlO VkFMOworICAgICAgICBpZiAoIGRhdGEtPnBhZCApCisgICAgICAgICAgICBicmVhazsKKworICAg ICAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAw LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmhhbmRsZV9idWZp b3JlcSwgJmRhdGEtPmlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5f RE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86CisgICAgeworICAgICAgICBzdHJ1Y3QgeGVuX2Rt X29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyAqZGF0YSA9CisgICAgICAgICAgICAmb3AudS5nZXRf aW9yZXFfc2VydmVyX2luZm87CisKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAo IGRhdGEtPnBhZCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9nZXRf aW9yZXFfc2VydmVyX2luZm8oZCwgZGF0YS0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZGF0YS0+aW9yZXFfcGZuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmRhdGEtPmJ1ZmlvcmVxX3BmbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkYXRhLT5idWZpb3JlcV9wb3J0KTsKKyAgICAgICAgYnJlYWs7 CisgICAgfQorCisgICAgY2FzZSBYRU5fRE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVy OgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFu Z2UgKmRhdGEgPQorICAgICAgICAgICAgJm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZl cjsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAg ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX21hcF9pb19yYW5nZV90b19pb3Jl cV9zZXJ2ZXIoZCwgZGF0YS0+aWQsIGRhdGEtPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhcnQsIGRhdGEtPmVuZCk7CisgICAgICAg IGJyZWFrOworICAgIH0KKworICAgIGNhc2UgWEVOX0RNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9p b3JlcV9zZXJ2ZXI6CisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVx X3NlcnZlcl9yYW5nZSAqZGF0YSA9CisgICAgICAgICAgICAmb3AudS51bm1hcF9pb19yYW5nZV9m cm9tX2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICgg ZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX3VubWFw X2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkLCBkYXRhLT50eXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGFy dCwgZGF0YS0+ZW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5fRE1P UF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhl bl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlICpkYXRhID0KKyAgICAgICAgICAgICZvcC51 LnNldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7CisKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAg ICBpZiAoIGRhdGEtPnBhZCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2 bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKGQsIGRhdGEtPmlkLCAhIWRhdGEtPmVuYWJsZWQpOwor ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFhFTl9ETU9QX2Rlc3Ryb3lfaW9yZXFf c2VydmVyOgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lv cmVxX3NlcnZlciAqZGF0YSA9CisgICAgICAgICAgICAmb3AudS5kZXN0cm95X2lvcmVxX3NlcnZl cjsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAg ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVy KGQsIGRhdGEtPmlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAg ICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCA2ZjAwMmJh Li4zMDA5NDQ5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQ4MDYsMTk1ICs0ODA2LDYgQEAgc3RhdGljIGludCBodm1v cF9mbHVzaF90bGJfYWxsKHZvaWQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaHZt b3BfY3JlYXRlX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9o dm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KSB1b3ApCi17Ci0gICAgc3RydWN0IGRvbWFpbiAqY3Vy cl9kID0gY3VycmVudC0+ZG9tYWluOwotICAgIHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90 IG9wOwotICAgIHN0cnVjdCBkb21haW4gKmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5 X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAg ICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBp ZiAoIHJjICE9IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0g ICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMg PSB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fRE1fUFJJViwgZCwgSFZNT1BfY3JlYXRlX2lvcmVx X3NlcnZlcik7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICBy YyA9IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAwLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AuaGFuZGxlX2J1ZmlvcmVxLCAmb3AuaWQp OwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBjb3B5 X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQgOiAwOwotICAgIAotIG91dDoKLSAgICBy Y3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZt b3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKAotICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVu X2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCkgdW9wKQotewotICAgIHhlbl9odm1fZ2V0X2lv cmVxX3NlcnZlcl9pbmZvX3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7 Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1 cm4gLUVGQVVMVDsKLQotICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5k b21pZCwgJmQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAg IHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290 byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBI Vk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAg IGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKGQsIG9wLmlk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3AuaW9yZXFfcGZuLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3AuYnVmaW9yZXFfcGZuLCAKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wLmJ1ZmlvcmVxX3BvcnQpOwotICAgIGlm ICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBjb3B5X3RvX2d1ZXN0 KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQgOiAwOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2Nr X2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfbWFwX2lv X3JhbmdlX3RvX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9o dm1faW9fcmFuZ2VfdCkgdW9wKQotewotICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsKLSAgICBz dHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAgIGlmICggY29weV9mcm9tX2d1ZXN0 KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMgPSByY3Vf bG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCByYyAhPSAw ICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIWlz X2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0geHNtX2h2bV9p b3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9z ZXJ2ZXIpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMg PSBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihkLCBvcC5pZCwgb3AudHlwZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLnN0YXJ0LCBvcC5lbmQp OwotCi0gb3V0OgotICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0K LQotc3RhdGljIGludCBodm1vcF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcigKLSAg ICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewotICAg IHhlbl9odm1faW9fcmFuZ2VfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCBy YzsKLQotICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJl dHVybiAtRUZBVUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9w LmRvbWlkLCAmZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0g ICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBn b3RvIG91dDsKLQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQs IEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKTsKLSAgICBpZiAoIHJjICE9 IDAgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gaHZtX3VubWFwX2lvX3JhbmdlX2Zy b21faW9yZXFfc2VydmVyKGQsIG9wLmlkLCBvcC50eXBlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9wLnN0YXJ0LCBvcC5lbmQpOwotICAgIAotIG91dDoK LSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBp bnQgaHZtb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSgKLSAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSB1b3ApCi17Ci0gICAgeGVuX2h2 bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsKLSAg ICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQotICAg ICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9i eV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVybiBy YzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKLSAg ICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ETV9Q UklWLCBkLCBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKTsKLSAgICBpZiAoIHJjICE9IDAg KQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3Rh dGUoZCwgb3AuaWQsICEhb3AuZW5hYmxlZCk7Ci0KLSBvdXQ6Ci0gICAgcmN1X3VubG9ja19kb21h aW4oZCk7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgaW50IGh2bW9wX2Rlc3Ryb3lfaW9y ZXFfc2VydmVyKAotICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9kZXN0cm95X2lv cmVxX3NlcnZlcl90KSB1b3ApCi17Ci0gICAgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90 IG9wOwotICAgIHN0cnVjdCBkb21haW4gKmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5 X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAg ICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBp ZiAoIHJjICE9IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0g ICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMg PSB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fRE1fUFJJViwgZCwgSFZNT1BfZGVzdHJveV9pb3Jl cV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAg cmMgPSBodm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQpOwotCi0gb3V0OgotICAgIHJj dV91bmxvY2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0KLQogc3RhdGljIGludCBodm1v cF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3IoCiAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5faHZtX2V2dGNobl91cGNhbGxfdmVjdG9yX3QpIHVvcCkKIHsKQEAgLTU3MDQsMzYgKzU1MTUs NiBAQCBsb25nIGRvX2h2bV9vcCh1bnNpZ25lZCBsb25nIG9wLCBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHZvaWQpIGFyZykKICAgICBzdGFydF9pdGVyID0gb3AgJiB+bWFzazsKICAgICBzd2l0Y2gg KCBvcCAmPSBtYXNrICkKICAgICB7Ci0gICAgY2FzZSBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVy OgotICAgICAgICByYyA9IGh2bW9wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBn dWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KSk7Ci0g ICAgICAgIGJyZWFrOwotICAgIAotICAgIGNhc2UgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZv OgotICAgICAgICByYyA9IGh2bW9wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbygKLSAgICAgICAgICAg IGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCkp OwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhWTU9QX21hcF9pb19yYW5nZV90b19p b3JlcV9zZXJ2ZXI6Ci0gICAgICAgIHJjID0gaHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3Nl cnZlcigKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9pb19yYW5n ZV90KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIAotICAgIGNhc2UgSFZNT1BfdW5tYXBfaW9fcmFu Z2VfZnJvbV9pb3JlcV9zZXJ2ZXI6Ci0gICAgICAgIHJjID0gaHZtb3BfdW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhl bl9odm1faW9fcmFuZ2VfdCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSFZNT1Bfc2V0 X2lvcmVxX3NlcnZlcl9zdGF0ZToKLSAgICAgICAgcmMgPSBodm1vcF9zZXRfaW9yZXFfc2VydmVy X3N0YXRlKAotICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX3NldF9p b3JlcV9zZXJ2ZXJfc3RhdGVfdCkpOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhW TU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyOgotICAgICAgICByYyA9IGh2bW9wX2Rlc3Ryb3lfaW9y ZXFfc2VydmVyKAotICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2Rl c3Ryb3lfaW9yZXFfc2VydmVyX3QpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgCiAgICAgY2FzZSBI Vk1PUF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3I6CiAgICAgICAgIHJjID0gaHZtb3Bfc2V0X2V2 dGNobl91cGNhbGxfdmVjdG9yKAogICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4 ZW5faHZtX2V2dGNobl91cGNhbGxfdmVjdG9yX3QpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA4ODA3MWFiLi41 MWEwNGY3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS9pb3JlcS5jCkBAIC01MTMsOSArNTEzLDkgQEAgc3RhdGljIGludCBodm1faW9y ZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAg ICAgICAgY2hhciAqbmFtZTsKIAogICAgICAgICByYyA9IGFzcHJpbnRmKCZuYW1lLCAiaW9yZXFf c2VydmVyICVkICVzIiwgcy0+aWQsCi0gICAgICAgICAgICAgICAgICAgICAgKGkgPT0gSFZNT1Bf SU9fUkFOR0VfUE9SVCkgPyAicG9ydCIgOgotICAgICAgICAgICAgICAgICAgICAgIChpID09IEhW TU9QX0lPX1JBTkdFX01FTU9SWSkgPyAibWVtb3J5IiA6Ci0gICAgICAgICAgICAgICAgICAgICAg KGkgPT0gSFZNT1BfSU9fUkFOR0VfUENJKSA/ICJwY2kiIDoKKyAgICAgICAgICAgICAgICAgICAg ICAoaSA9PSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUKSA/ICJwb3J0IiA6CisgICAgICAgICAgICAg ICAgICAgICAgKGkgPT0gWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZKSA/ICJtZW1vcnkiIDoKKyAg ICAgICAgICAgICAgICAgICAgICAoaSA9PSBYRU5fRE1PUF9JT19SQU5HRV9QQ0kpID8gInBjaSIg OgogICAgICAgICAgICAgICAgICAgICAgICIiKTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAg ICAgICBnb3RvIGZhaWw7CkBAIC04MzMsOSArODMzLDkgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2Vf dG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAKICAgICAg ICAgICAgIHN3aXRjaCAoIHR5cGUgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBI Vk1PUF9JT19SQU5HRV9QT1JUOgotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9NRU1P Ulk6Ci0gICAgICAgICAgICBjYXNlIEhWTU9QX0lPX1JBTkdFX1BDSToKKyAgICAgICAgICAgIGNh c2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9f UkFOR0VfTUVNT1JZOgorICAgICAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6CiAg ICAgICAgICAgICAgICAgciA9IHMtPnJhbmdlW3R5cGVdOwogICAgICAgICAgICAgICAgIGJyZWFr OwogCkBAIC04ODUsOSArODg1LDkgQEAgaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogCiAgICAgICAgICAgICBz d2l0Y2ggKCB0eXBlICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9f UkFOR0VfUE9SVDoKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAg ICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QQ0k6CisgICAgICAgICAgICBjYXNlIFhFTl9E TU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01F TU9SWToKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAg ICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAt MTEyOCwxMiArMTEyOCwxMiBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9p b3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgICAgICAvKiBQQ0kgY29uZmlnIGRh dGEgY3ljbGUgKi8KIAotICAgICAgICBzYmRmID0gSFZNT1BfUENJX1NCREYoMCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBDSV9CVVMoQ0Y4X0JERihjZjgpKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKENGOF9CREYoY2Y4KSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhDRjhfQkRGKGNmOCkpKTsKKyAgICAgICAgc2JkZiA9 IFhFTl9ETU9QX1BDSV9TQkRGKDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Q0lfQlVTKENGOF9CREYoY2Y4KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Q0lfU0xPVChDRjhfQkRGKGNmOCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7CiAKLSAgICAgICAgdHlwZSA9IEhWTU9QX0lPX1JBTkdF X1BDSTsKKyAgICAgICAgdHlwZSA9IFhFTl9ETU9QX0lPX1JBTkdFX1BDSTsKICAgICAgICAgYWRk ciA9ICgodWludDY0X3Qpc2JkZiA8PCAzMikgfAogICAgICAgICAgICAgICAgQ0Y4X0FERFJfTE8o Y2Y4KSB8CiAgICAgICAgICAgICAgICAocC0+YWRkciAmIDMpOwpAQCAtMTE1Miw3ICsxMTUyLDcg QEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVj dCBkb21haW4gKmQsCiAgICAgZWxzZQogICAgIHsKICAgICAgICAgdHlwZSA9IChwLT50eXBlID09 IElPUkVRX1RZUEVfUElPKSA/Ci0gICAgICAgICAgICAgICAgSFZNT1BfSU9fUkFOR0VfUE9SVCA6 IEhWTU9QX0lPX1JBTkdFX01FTU9SWTsKKyAgICAgICAgICAgICAgICBYRU5fRE1PUF9JT19SQU5H RV9QT1JUIDogWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOwogICAgICAgICBhZGRyID0gcC0+YWRk cjsKICAgICB9CiAKQEAgLTExNzQsMTkgKzExNzQsMTkgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIHsK ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwogCi0gICAgICAgIGNhc2UgSFZNT1BfSU9f UkFOR0VfUE9SVDoKKyAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgogICAgICAg ICAgICAgZW5kID0gYWRkciArIHAtPnNpemUgLSAxOwogICAgICAgICAgICAgaWYgKCByYW5nZXNl dF9jb250YWluc19yYW5nZShyLCBhZGRyLCBlbmQpICkKICAgICAgICAgICAgICAgICByZXR1cm4g czsKIAogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVN T1JZOgorICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKICAgICAgICAgICAg IGVuZCA9IGFkZHIgKyAocC0+c2l6ZSAqIHAtPmNvdW50KSAtIDE7CiAgICAgICAgICAgICBpZiAo IHJhbmdlc2V0X2NvbnRhaW5zX3JhbmdlKHIsIGFkZHIsIGVuZCkgKQogICAgICAgICAgICAgICAg IHJldHVybiBzOwogCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVk1PUF9JT19S QU5HRV9QQ0k6CisgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAg ICAgaWYgKCByYW5nZXNldF9jb250YWluc19zaW5nbGV0b24ociwgYWRkciA+PiAzMikgKQogICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgIHAtPnR5cGUgPSBJT1JFUV9UWVBFX1BDSV9DT05G SUc7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCmluZGV4IGYzNGQ3ODQuLmU4NjkyODUgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8cHVibGlj L2h2bS9wYXJhbXMuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL3NhdmUuaD4KICNpbmNsdWRlIDxw dWJsaWMvaHZtL2h2bV9vcC5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KIAogc3Ry dWN0IGh2bV9pb3JlcV9wYWdlIHsKICAgICB1bnNpZ25lZCBsb25nIGdtZm47CkBAIC00Nyw3ICs0 OCw3IEBAIHN0cnVjdCBodm1faW9yZXFfdmNwdSB7CiAgICAgYm9vbF90ICAgICAgICAgICBwZW5k aW5nOwogfTsKIAotI2RlZmluZSBOUl9JT19SQU5HRV9UWVBFUyAoSFZNT1BfSU9fUkFOR0VfUENJ ICsgMSkKKyNkZWZpbmUgTlJfSU9fUkFOR0VfVFlQRVMgKFhFTl9ETU9QX0lPX1JBTkdFX1BDSSAr IDEpCiAjZGVmaW5lIE1BWF9OUl9JT19SQU5HRVMgIDI1NgogCiBzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciB7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKaW5kZXggODYyYzkxNC4uMmIyMjA3NyAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaApAQCAtMjcsMTEgKzI3LDE2NCBAQAogI2lmIGRlZmluZWQoX19YRU5f XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQogCiAjaW5jbHVkZSAiLi4veGVuLmgiCisjaW5j bHVkZSAiLi4vZXZlbnRfY2hhbm5lbC5oIgogCiAjZGVmaW5lIFhFTl9ETU9QX2ludmFsaWQgMAog CisvKgorICogSU9SRVEgU2VydmVycworICoKKyAqIFRoZSBpbnRlcmZhY2UgYmV0d2VlbiBhbiBJ L08gZW11bGF0b3IgYW4gWGVuIGlzIGNhbGxlZCBhbiBJT1JFUSBTZXJ2ZXIuCisgKiBBIGRvbWFp biBzdXBwb3J0cyBhIHNpbmdsZSAnbGVnYWN5JyBJT1JFUSBTZXJ2ZXIgd2hpY2ggaXMgaW5zdGFu dGlhdGVkIGlmCisgKiBwYXJhbWV0ZXIuLi4KKyAqCisgKiBIVk1fUEFSQU1fSU9SRVFfUEZOIGlz IHJlYWQgKHRvIGdldCB0aGUgZ21mbiBjb250YWluaW5nIHRoZSBzeW5jaHJvbm91cworICogaW9y ZXEgc3RydWN0dXJlcyksIG9yLi4uCisgKiBIVk1fUEFSQU1fQlVGSU9SRVFfUEZOIGlzIHJlYWQg KHRvIGdldCB0aGUgZ21mbiBjb250YWluaW5nIHRoZSBidWZmZXJlZAorICogaW9yZXEgcmluZyks IG9yLi4uCisgKiBIVk1fUEFSQU1fQlVGSU9SRVFfRVZUQ0hOIGlzIHJlYWQgKHRvIGdldCB0aGUg ZXZlbnQgY2hhbm5lbCB0aGF0IFhlbiB1c2VzCisgKiB0byByZXF1ZXN0IGJ1ZmZlcmVkIEkvTyBl bXVsYXRpb24pLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgaHlwZXJjYWxscyBmYWNpbGl0YXRlIHRo ZSBjcmVhdGlvbiBvZiBJT1JFUSBTZXJ2ZXJzIGZvcgorICogJ3NlY29uZGFyeScgZW11bGF0b3Jz IHdoaWNoIGFyZSBpbnZva2VkIHRvIGltcGxlbWVudCBwb3J0IEkvTywgbWVtb3J5LCBvcgorICog UENJIGNvbmZpZyBzcGFjZSByYW5nZXMgd2hpY2ggdGhleSBleHBsaWNpdGx5IHJlZ2lzdGVyLgor ICovCisKK3R5cGVkZWYgdWludDE2X3QgaW9zZXJ2aWRfdDsKKworLyoKKyAqIFhFTl9ETU9QX2Ny ZWF0ZV9pb3JlcV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3IElPUkVRIFNlcnZlciBmb3IgYQor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5IGVtdWxhdG9yLgorICoK KyAqIFRoZSA8aWQ+IGhhbmRlZCBiYWNrIGlzIHVuaXF1ZSBmb3IgdGFyZ2V0IGRvbWFpbi4gVGhl IHZhbHVyIG9mCisgKiA8aGFuZGxlX2J1ZmlvcmVxPiBzaG91bGQgYmUgb25lIG9mIEhWTV9JT1JF UVNSVl9CVUZJT1JFUV8qIGRlZmluZWQgaW4KKyAqIGh2bV9vcC5oLiBJZiB0aGUgdmFsdWUgaXMg SFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRiB0aGVuICB0aGUgYnVmZmVyZWQKKyAqIGlvcmVxIHJp bmcgd2lsbCBub3QgYmUgYWxsb2NhdGVkIGFuZCBoZW5jZSBhbGwgZW11bGF0aW9uIHJlcXVlc3Rz IHRvCisgKiB0aGlzIHNlcnZlciB3aWxsIGJlIHN5bmNocm9ub3VzLgorICovCisjZGVmaW5lIFhF Tl9ETU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgMQorCitzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9p b3JlcV9zZXJ2ZXIgeworICAgIC8qIElOIC0gc2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQg aW9yZXFzICovCisgICAgdWludDhfdCBoYW5kbGVfYnVmaW9yZXE7CisgICAgdWludDhfdCBwYWRb M107CisgICAgLyogT1VUIC0gc2VydmVyIGlkICovCisgICAgaW9zZXJ2aWRfdCBpZDsKK307CisK Ky8qCisgKiBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9y bWF0aW9uIG5lY2Vzc2FyeSB0bworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Y2Nlc3MgSU9SRVEgU2VydmVyIDxpZD4uCisgKgorICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1h cCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJlcyBhbmQgYnVmZmVyZWQKKyAqIGlvcmVx IHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4g VGhlc2UgYXJlCisgKiBob3N0ZWQgaW4gdGhlIHRhcmdldCBkb21haW4ncyBnbWZucyA8aW9yZXFf cGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KKyAqIHJlc3BlY3RpdmVseS4gSW4gYWRkaXRpb24sIGlm IHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVyZWQKKyAqIGVtdWxhdGlvbiByZXF1 ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8gZXZlbnQgY2hhbm5lbAorICogPGJ1 ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRoZSBldmVudCBjaGFubmVscyB1c2Vk IGZvcgorICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4g dGhlIHBlci1DUFUgaW9yZXEKKyAqIHN0cnVjdHVyZXMgaW4gPGlvcmVxX3Bmbj4pLgorICogSWYg dGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVl c3RzIHRoZW4gdGhlCisgKiB2YWx1ZXMgaGFuZGVkIGJhY2sgaW4gPGJ1ZmlvcmVxX3Bmbj4gYW5k IDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KKyAqLworI2RlZmluZSBYRU5fRE1PUF9n ZXRfaW9yZXFfc2VydmVyX2luZm8gMgorCitzdHJ1Y3QgeGVuX2RtX29wX2dldF9pb3JlcV9zZXJ2 ZXJfaW5mbyB7CisgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOwor ICAgIHVpbnQxNl90IHBhZDsKKyAgICAvKiBPVVQgLSBidWZmZXJlZCBpb3JlcSBwb3J0ICovCisg ICAgZXZ0Y2huX3BvcnRfdCBidWZpb3JlcV9wb3J0OworICAgIC8qIE9VVCAtIHN5bmMgaW9yZXEg cGZuICovCisgICAgdWludDY0X2FsaWduZWRfdCBpb3JlcV9wZm47CisgICAgLyogT1VUIC0gYnVm ZmVyZWQgaW9yZXEgcGZuICovCisgICAgdWludDY0X2FsaWduZWRfdCBidWZpb3JlcV9wZm47Cit9 OworCisvKgorICogWEVOX0RNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjogUmVnaXN0 ZXIgYW4gSS9PIHJhbmdlIGZvcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW11bGF0aW9uIGJ5IHRoZSBjbGllbnQgb2YKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElPUkVRIFNlcnZlciA8aWQ+LgorICogWEVOX0RNT1BfdW5tYXBf aW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSByZWdp c3RlcmVkIGZvcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSU9SRVEgU2VydmVyIDxpZD4uCisgKgorICogVGhlcmUgYXJlIHRo cmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRlZDogcG9ydCBJL08sIG1lbW9yeQor ICogYWNjZXNzZXMgYW5kIFBDSSBjb25maWcgc3BhY2UgYWNjZXNzZXMuIFRoZSA8dHlwZT4gZmll bGQgZGVub3RlcyB3aGljaAorICogdHlwZSBvZiByYW5nZSogdGhlIDxzdGFydD4gYW5kIDxlbmQ+ IChpbmNsdXNpdmUpIGZpZWxkcyBhcmUgc3BlY2lmeWluZy4KKyAqIFBDSSBjb25maWcgc3BhY2Ug cmFuZ2VzIGFyZSBzcGVjaWZpZWQgYnkgc2VnbWVudC9idXMvZGV2aWNlL2Z1bmN0aW9uCisgKiB2 YWx1ZXMgd2hpY2ggc2hvdWxkIGJlIGVuY29kZWQgdXNpbmcgdGhlIERNT1BfUENJX1NCREYgaGVs cGVyIG1hY3JvCisgKiBiZWxvdy4KKyAqCisgKiBOT1RFOiB1bmxlc3MgYW4gZW11bGF0aW9uIHJl cXVlc3QgZmFsbHMgZW50aXJlbHkgd2l0aGluIGEgcmFuZ2UgbWFwcGVkCisgKiBieSBhIHNlY29u ZGFyeSBlbXVsYXRvciwgaXQgd2lsbCBub3QgYmUgcGFzc2VkIHRvIHRoYXQgZW11bGF0b3IuCisg Ki8KKyNkZWZpbmUgWEVOX0RNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlciAzCisjZGVm aW5lIFhFTl9ETU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDQKKworc3RydWN0 IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgeworICAgIC8qIElOIC0gc2VydmVyIGlkICov CisgICAgaW9zZXJ2aWRfdCBpZDsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgLyogSU4gLSB0eXBl IG9mIHJhbmdlICovCisgICAgdWludDMyX3QgdHlwZTsKKyMgZGVmaW5lIFhFTl9ETU9QX0lPX1JB TkdFX1BPUlQgICAwIC8qIEkvTyBwb3J0IHJhbmdlICovCisjIGRlZmluZSBYRU5fRE1PUF9JT19S QU5HRV9NRU1PUlkgMSAvKiBNTUlPIHJhbmdlICovCisjIGRlZmluZSBYRU5fRE1PUF9JT19SQU5H RV9QQ0kgICAgMiAvKiBQQ0kgc2VnbWVudC9idXMvZGV2L2Z1bmMgcmFuZ2UgKi8KKyAgICAvKiBJ TiAtIGluY2x1c2l2ZSBzdGFydCBhbmQgZW5kIG9mIHJhbmdlICovCisgICAgdWludDY0X2FsaWdu ZWRfdCBzdGFydCwgZW5kOworfTsKKworI2RlZmluZSBYRU5fRE1PUF9QQ0lfU0JERihzLGIsZCxm KSBcCisJKCgoKHMpICYgMHhmZmZmKSA8PCAxNikgfCAgXAorCSAoKChiKSAmIDB4ZmYpIDw8IDgp IHwgICAgIFwKKwkgKCgoZCkgJiAweDFmKSA8PCAzKSB8ICAgICBcCisJICgoZikgJiAweDA3KSkK KworLyoKKyAqIFhFTl9ETU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNh YmxlIHRoZSBJT1JFUSBTZXJ2ZXIgPGlkPgorICoKKyAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBu b3QgYmUgcGFzc2VkIGFueSBlbXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMKKyAqIGluIHRo ZSBlbmFibGVkIHN0YXRlLgorICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFf cGZuIGFuZCBidWZpb3JlcV9mbiAoc2VlCisgKiBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2lu Zm8pIGFyZSBub3QgbWVhbmluZ2Z1bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyCisgKiBpcyBpbiB0 aGUgZW5hYmxlZCBzdGF0ZS4KKyAqLworI2RlZmluZSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVy X3N0YXRlIDUKKworc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKKyAg ICAvKiBJTiAtIHNlcnZlciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgLyogSU4gLSBl bmFibGVkPyAqLworICAgIHVpbnQ4X3QgZW5hYmxlZDsKKyAgICB1aW50OF90IHBhZDsKK307CisK Ky8qCisgKiBYRU5fRE1PUF9kZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEg U2VydmVyIDxpZD4uCisgKgorICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1 dG9tYXRpY2FsbHkgZGVyZWdpc3RlcmVkLgorICovCisjZGVmaW5lIFhFTl9ETU9QX2Rlc3Ryb3lf aW9yZXFfc2VydmVyIDYKKworc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciB7 CisgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOworICAgIHVpbnQx Nl90IHBhZDsKK307CisKIHN0cnVjdCB4ZW5fZG1fb3AgewogICAgIHVpbnQzMl90IG9wOworICAg IHVpbnQzMl90IHBhZDsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfY3Jl YXRlX2lvcmVxX3NlcnZlciBjcmVhdGVfaW9yZXFfc2VydmVyOworICAgICAgICBzdHJ1Y3QgeGVu X2RtX29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyBnZXRfaW9yZXFfc2VydmVyX2luZm87CisgICAg ICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlIG1hcF9pb19yYW5nZV90b19p b3JlcV9zZXJ2ZXI7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3Jhbmdl IHVubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgICAgICBzdHJ1Y3QgeGVuX2Rt X29wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZTsKKyAgICAg ICAgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciBkZXN0cm95X2lvcmVxX3Nl cnZlcjsKKyAgICB9IHU7CiB9OwogCiBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB7CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2h2 bS9odm1fb3AuaAppbmRleCBiM2U0NWNmLi42ZmNkODZkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9wdWJsaWMvaHZtL2h2bV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29w LmgKQEAgLTI0MywzNyArMjQzLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhlbl9odm1faW5qZWN0X21z aSB4ZW5faHZtX2luamVjdF9tc2lfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1f aW5qZWN0X21zaV90KTsKIAogLyoKLSAqIElPUkVRIFNlcnZlcnMKLSAqCi0gKiBUaGUgaW50ZXJm YWNlIGJldHdlZW4gYW4gSS9PIGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxsZWQgYW4gSU9SRVEgU2Vy dmVyLgotICogQSBkb21haW4gc3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2FjeScgSU9SRVEgU2VydmVy IHdoaWNoIGlzIGluc3RhbnRpYXRlZCBpZgotICogcGFyYW1ldGVyLi4uCi0gKgotICogSFZNX1BB UkFNX0lPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgc3lu Y2hyb25vdXMKLSAqIGlvcmVxIHN0cnVjdHVyZXMpLCBvci4uLgotICogSFZNX1BBUkFNX0JVRklP UkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgYnVmZmVyZWQK LSAqIGlvcmVxIHJpbmcpLCBvci4uLgotICogSFZNX1BBUkFNX0JVRklPUkVRX0VWVENITiBpcyBy ZWFkICh0byBnZXQgdGhlIGV2ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNlcwotICogdG8gcmVxdWVz dCBidWZmZXJlZCBJL08gZW11bGF0aW9uKS4KLSAqIAotICogVGhlIGZvbGxvd2luZyBoeXBlcmNh bGxzIGZhY2lsaXRhdGUgdGhlIGNyZWF0aW9uIG9mIElPUkVRIFNlcnZlcnMgZm9yCi0gKiAnc2Vj b25kYXJ5JyBlbXVsYXRvcnMgd2hpY2ggYXJlIGludm9rZWQgdG8gaW1wbGVtZW50IHBvcnQgSS9P LCBtZW1vcnksIG9yCi0gKiBQQ0kgY29uZmlnIHNwYWNlIHJhbmdlcyB3aGljaCB0aGV5IGV4cGxp Y2l0bHkgcmVnaXN0ZXIuCisgKiBEZWZpbml0aW9ucyByZWxhdGluZyB0byBETU9QX2NyZWF0ZV9p b3JlcV9zZXJ2ZXIuIChEZWZpbmVkIGhlcmUgZm9yCisgKiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0 eSkuCiAgKi8KIAotdHlwZWRlZiB1aW50MTZfdCBpb3NlcnZpZF90OwotCi0vKgotICogSFZNT1Bf Y3JlYXRlX2lvcmVxX3NlcnZlcjogSW5zdGFudGlhdGUgYSBuZXcgSU9SRVEgU2VydmVyIGZvciBh IHNlY29uZGFyeQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0b3Igc2Vydmlj aW5nIGRvbWFpbiA8ZG9taWQ+LgotICoKLSAqIFRoZSA8aWQ+IGhhbmRlZCBiYWNrIGlzIHVuaXF1 ZSBmb3IgPGRvbWlkPi4gSWYgPGhhbmRsZV9idWZpb3JlcT4gaXMgemVybwotICogdGhlIGJ1ZmZl cmVkIGlvcmVxIHJpbmcgd2lsbCBub3QgYmUgYWxsb2NhdGVkIGFuZCBoZW5jZSBhbGwgZW11bGF0 aW9uCi0gKiByZXF1ZXN0ZXMgdG8gdGhpcyBzZXJ2ZXIgd2lsbCBiZSBzeW5jaHJvbm91cy4KLSAq LwotI2RlZmluZSBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyIDE3Ci1zdHJ1Y3QgeGVuX2h2bV9j cmVhdGVfaW9yZXFfc2VydmVyIHsKLSAgICBkb21pZF90IGRvbWlkOyAgICAgICAgICAgLyogSU4g LSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KICNkZWZpbmUgSFZNX0lPUkVRU1JWX0JVRklPUkVR X09GRiAgICAwCiAjZGVmaW5lIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9MRUdBQ1kgMQogLyoKQEAg LTI4MSwxMDcgKzI1NCw2IEBAIHN0cnVjdCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgewog ICogdGhlIHBvaW50ZXIgcGFpciBnZXRzIHJlYWQgYXRvbWljYWxseToKICAqLwogI2RlZmluZSBI Vk1fSU9SRVFTUlZfQlVGSU9SRVFfQVRPTUlDIDIKLSAgICB1aW50OF90IGhhbmRsZV9idWZpb3Jl cTsgLyogSU4gLSBzaG91bGQgc2VydmVyIGhhbmRsZSBidWZmZXJlZCBpb3JlcXMgKi8KLSAgICBp b3NlcnZpZF90IGlkOyAgICAgICAgICAgLyogT1VUIC0gc2VydmVyIGlkICovCi19OwotdHlwZWRl ZiBzdHJ1Y3QgeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyIHhlbl9odm1fY3JlYXRlX2lvcmVx X3NlcnZlcl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9jcmVhdGVfaW9yZXFf c2VydmVyX3QpOwotCi0vKgotICogSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOiBHZXQgYWxs IHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gYWNjZXNzCi0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElPUkVRIFNlcnZlciA8aWQ+LiAKLSAqCi0gKiBUaGUgZW11bGF0b3IgbmVl ZHMgdG8gbWFwIHRoZSBzeW5jaHJvbm91cyBpb3JlcSBzdHJ1Y3R1cmVzIGFuZCBidWZmZXJlZAot ICogaW9yZXEgcmluZyAoaWYgaXQgZXhpc3RzKSB0aGF0IFhlbiB1c2VzIHRvIHJlcXVlc3QgZW11 bGF0aW9uLiBUaGVzZSBhcmUKLSAqIGhvc3RlZCBpbiBkb21haW4gPGRvbWlkPidzIGdtZm5zIDxp b3JlcV9wZm4+IGFuZCA8YnVmaW9yZXFfcGZuPgotICogcmVzcGVjdGl2ZWx5LiBJbiBhZGRpdGlv biwgaWYgdGhlIElPUkVRIFNlcnZlciBpcyBoYW5kbGluZyBidWZmZXJlZAotICogZW11bGF0aW9u IHJlcXVlc3RzLCB0aGUgZW11bGF0b3IgbmVlZHMgdG8gYmluZCB0byBldmVudCBjaGFubmVsCi0g KiA8YnVmaW9yZXFfcG9ydD4gdG8gbGlzdGVuIGZvciB0aGVtLiAoVGhlIGV2ZW50IGNoYW5uZWxz IHVzZWQgZm9yCi0gKiBzeW5jaHJvbm91cyBlbXVsYXRpb24gcmVxdWVzdHMgYXJlIHNwZWNpZmll ZCBpbiB0aGUgcGVyLUNQVSBpb3JlcQotICogc3RydWN0dXJlcyBpbiA8aW9yZXFfcGZuPikuCi0g KiBJZiB0aGUgSU9SRVEgU2VydmVyIGlzIG5vdCBoYW5kbGluZyBidWZmZXJlZCBlbXVsYXRpb24g cmVxdWVzdHMgdGhlbiB0aGUKLSAqIHZhbHVlcyBoYW5kZWQgYmFjayBpbiA8YnVmaW9yZXFfcGZu PiBhbmQgPGJ1ZmlvcmVxX3BvcnQ+IHdpbGwgYm90aCBiZSAwLgotICovCi0jZGVmaW5lIEhWTU9Q X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyAxOAotc3RydWN0IHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZl cl9pbmZvIHsKLSAgICBkb21pZF90IGRvbWlkOyAgICAgICAgICAgICAgICAgLyogSU4gLSBkb21h aW4gdG8gYmUgc2VydmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAgICAgICAgICAgICAgICAg LyogSU4gLSBzZXJ2ZXIgaWQgKi8KLSAgICBldnRjaG5fcG9ydF90IGJ1ZmlvcmVxX3BvcnQ7ICAg LyogT1VUIC0gYnVmZmVyZWQgaW9yZXEgcG9ydCAqLwotICAgIHVpbnQ2NF9hbGlnbmVkX3QgaW9y ZXFfcGZuOyAgICAvKiBPVVQgLSBzeW5jIGlvcmVxIHBmbiAqLwotICAgIHVpbnQ2NF9hbGlnbmVk X3QgYnVmaW9yZXFfcGZuOyAvKiBPVVQgLSBidWZmZXJlZCBpb3JlcSBwZm4gKi8KLX07Ci10eXBl ZGVmIHN0cnVjdCB4ZW5faHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB4ZW5faHZtX2dldF9pb3Jl cV9zZXJ2ZXJfaW5mb190OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9nZXRfaW9y ZXFfc2VydmVyX2luZm9fdCk7Ci0KLS8qCi0gKiBIVk1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3Nl cnZlcjogUmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIGRvbWFpbiA8ZG9taWQ+Ci0gKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9m IElPUkVRCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVyIDxpZD4K LSAqIEhWTV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjogRGVyZWdpc3RlciBhbiBJ L08gcmFuZ2Ugb2YgPGRvbWlkPgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgZW11bGF0aW9uIGJ5IHRoZSBjbGllbnQgb2YgSU9SRVEKLSAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVyIDxpZD4KLSAqCi0gKiBUaGVyZSBhcmUg dGhyZWUgdHlwZXMgb2YgSS9PIHRoYXQgY2FuIGJlIGVtdWxhdGVkOiBwb3J0IEkvTywgbWVtb3J5 IGFjY2Vzc2VzCi0gKiBhbmQgUENJIGNvbmZpZyBzcGFjZSBhY2Nlc3Nlcy4gVGhlIDx0eXBlPiBm aWVsZCBkZW5vdGVzIHdoaWNoIHR5cGUgb2YgcmFuZ2UKLSAqIHRoZSA8c3RhcnQ+IGFuZCA8ZW5k PiAoaW5jbHVzaXZlKSBmaWVsZHMgYXJlIHNwZWNpZnlpbmcuCi0gKiBQQ0kgY29uZmlnIHNwYWNl IHJhbmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHNlZ21lbnQvYnVzL2RldmljZS9mdW5jdGlvbiB2YWx1 ZXMKLSAqIHdoaWNoIHNob3VsZCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBIVk1PUF9QQ0lfU0JERiBo ZWxwZXIgbWFjcm8gYmVsb3cuCi0gKgotICogTk9URTogdW5sZXNzIGFuIGVtdWxhdGlvbiByZXF1 ZXN0IGZhbGxzIGVudGlyZWx5IHdpdGhpbiBhIHJhbmdlIG1hcHBlZAotICogYnkgYSBzZWNvbmRh cnkgZW11bGF0b3IsIGl0IHdpbGwgbm90IGJlIHBhc3NlZCB0byB0aGF0IGVtdWxhdG9yLgotICov Ci0jZGVmaW5lIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIgMTkKLSNkZWZpbmUg SFZNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIgMjAKLXN0cnVjdCB4ZW5faHZt X2lvX3JhbmdlIHsKLSAgICBkb21pZF90IGRvbWlkOyAgICAgICAgICAgICAgIC8qIElOIC0gZG9t YWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAgICAgICAgICAgICAv KiBJTiAtIHNlcnZlciBpZCAqLwotICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAgICAgICAgLyog SU4gLSB0eXBlIG9mIHJhbmdlICovCi0jIGRlZmluZSBIVk1PUF9JT19SQU5HRV9QT1JUICAgMCAv KiBJL08gcG9ydCByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9fUkFOR0VfTUVNT1JZIDEgLyog TU1JTyByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9fUkFOR0VfUENJICAgIDIgLyogUENJIHNl Z21lbnQvYnVzL2Rldi9mdW5jIHJhbmdlICovCi0gICAgdWludDY0X2FsaWduZWRfdCBzdGFydCwg ZW5kOyAvKiBJTiAtIGluY2x1c2l2ZSBzdGFydCBhbmQgZW5kIG9mIHJhbmdlICovCi19OwotdHlw ZWRlZiBzdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB4ZW5faHZtX2lvX3JhbmdlX3Q7Ci1ERUZJTkVf WEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2lvX3JhbmdlX3QpOwotCi0jZGVmaW5lIEhWTU9QX1BD SV9TQkRGKHMsYixkLGYpICAgICAgICAgICAgICAgICBcCi0JKCgoKHMpICYgMHhmZmZmKSA8PCAx NikgfCAgICAgICAgICAgICAgICAgICBcCi0JICgoKGIpICYgMHhmZikgPDwgOCkgfCAgICAgICAg ICAgICAgICAgICAgICBcCi0JICgoKGQpICYgMHgxZikgPDwgMykgfCAgICAgICAgICAgICAgICAg ICAgICBcCi0JICgoZikgJiAweDA3KSkKLQotLyoKLSAqIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2Vy dmVyOiBEZXN0cm95IHRoZSBJT1JFUSBTZXJ2ZXIgPGlkPiBzZXJ2aWNpbmcgZG9tYWluCi0gKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRvbWlkPi4KLSAqCi0gKiBBbnkgcmVnaXN0ZXJl ZCBJL08gcmFuZ2VzIHdpbGwgYmUgYXV0b21hdGljYWxseSBkZXJlZ2lzdGVyZWQuCi0gKi8KLSNk ZWZpbmUgSFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIgMjEKLXN0cnVjdCB4ZW5faHZtX2Rlc3Ry b3lfaW9yZXFfc2VydmVyIHsKLSAgICBkb21pZF90IGRvbWlkOyAvKiBJTiAtIGRvbWFpbiB0byBi ZSBzZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7IC8qIElOIC0gc2VydmVyIGlkICovCi19 OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB4ZW5faHZtX2Rl c3Ryb3lfaW9yZXFfc2VydmVyX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2Rl c3Ryb3lfaW9yZXFfc2VydmVyX3QpOwotCi0vKgotICogSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9z dGF0ZTogRW5hYmxlIG9yIGRpc2FibGUgdGhlIElPUkVRIFNlcnZlciA8aWQ+IHNlcnZpY2luZwot ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluIDxkb21pZD4uCi0gKgotICog VGhlIElPUkVRIFNlcnZlciB3aWxsIG5vdCBiZSBwYXNzZWQgYW55IGVtdWxhdGlvbiByZXF1ZXN0 cyB1bnRpbCBpdCBpcyBpbiB0aGUKLSAqIGVuYWJsZWQgc3RhdGUuCi0gKiBOb3RlIHRoYXQgdGhl IGNvbnRlbnRzIG9mIHRoZSBpb3JlcV9wZm4gYW5kIGJ1ZmlvcmVxX2ZuIChzZWUKLSAqIEhWTU9Q X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbykgYXJlIG5vdCBtZWFuaW5nZnVsIHVudGlsIHRoZSBJT1JF USBTZXJ2ZXIgaXMgaW4KLSAqIHRoZSBlbmFibGVkIHN0YXRlLgotICovCi0jZGVmaW5lIEhWTU9Q X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgMjIKLXN0cnVjdCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2 ZXJfc3RhdGUgewotICAgIGRvbWlkX3QgZG9taWQ7ICAgLyogSU4gLSBkb21haW4gdG8gYmUgc2Vy dmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAgIC8qIElOIC0gc2VydmVyIGlkICovCi0gICAg dWludDhfdCBlbmFibGVkOyAvKiBJTiAtIGVuYWJsZWQ/ICovICAgIAotfTsKLXR5cGVkZWYgc3Ry dWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2 ZXJfc3RhdGVfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZV90KTsKIAogI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChf X1hFTl9UT09MU19fKSAqLwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaCBi L3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCmluZGV4IGIyMDZmNWEuLjlmN2MxNzQgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCisrKyBiL3hlbi9pbmNsdWRlL3hzbS9kdW1teS5o CkBAIC02MzQsMTIgKzYzNCw2IEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21faHZtX2luamVj dF9tc2koWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIHhzbV9k ZWZhdWx0X2FjdGlvbihhY3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwgZCk7CiB9CiAKLXN0YXRpYyBY U01fSU5MSU5FIGludCB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fREVGQVVMVF9BUkcgc3RydWN0 IGRvbWFpbiAqZCwgaW50IG9wKQotewotICAgIFhTTV9BU1NFUlRfQUNUSU9OKFhTTV9ETV9QUklW KTsKLSAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0aW9uKGFjdGlvbiwgY3VycmVudC0+ZG9tYWlu LCBkKTsKLX0KLQogc3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV9tZW1fc2hhcmluZ19vcChYU01f REVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFpbiAqY2QsIGludCBvcCkK IHsKICAgICBYU01fQVNTRVJUX0FDVElPTihYU01fRE1fUFJJVik7CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94c20veHNtLmggYi94ZW4vaW5jbHVkZS94c20veHNtLmgKaW5kZXggZTJkMzM2Zi4u YjU4NDVhMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveHNtL3hzbS5oCisrKyBiL3hlbi9pbmNs dWRlL3hzbS94c20uaApAQCAtMTY2LDcgKzE2Niw2IEBAIHN0cnVjdCB4c21fb3BlcmF0aW9ucyB7 CiAgICAgaW50ICgqaHZtX3NldF9pc2FfaXJxX2xldmVsKSAoc3RydWN0IGRvbWFpbiAqZCk7CiAg ICAgaW50ICgqaHZtX3NldF9wY2lfbGlua19yb3V0ZSkgKHN0cnVjdCBkb21haW4gKmQpOwogICAg IGludCAoKmh2bV9pbmplY3RfbXNpKSAoc3RydWN0IGRvbWFpbiAqZCk7Ci0gICAgaW50ICgqaHZt X2lvcmVxX3NlcnZlcikgKHN0cnVjdCBkb21haW4gKmQsIGludCBvcCk7CiAgICAgaW50ICgqbWVt X3NoYXJpbmdfb3ApIChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9w KTsKICAgICBpbnQgKCphcGljKSAoc3RydWN0IGRvbWFpbiAqZCwgaW50IGNtZCk7CiAgICAgaW50 ICgqbWVtdHlwZSkgKHVpbnQzMl90IGFjY2Vzcyk7CkBAIC02NTYsMTEgKzY1NSw2IEBAIHN0YXRp YyBpbmxpbmUgaW50IHhzbV9odm1faW5qZWN0X21zaSAoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVj dCBkb21haW4gKmQpCiAgICAgcmV0dXJuIHhzbV9vcHMtPmh2bV9pbmplY3RfbXNpKGQpOwogfQog Ci1zdGF0aWMgaW5saW5lIGludCB4c21faHZtX2lvcmVxX3NlcnZlciAoeHNtX2RlZmF1bHRfdCBk ZWYsIHN0cnVjdCBkb21haW4gKmQsIGludCBvcCkKLXsKLSAgICByZXR1cm4geHNtX29wcy0+aHZt X2lvcmVxX3NlcnZlcihkLCBvcCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgaW50IHhzbV9tZW1fc2hh cmluZ19vcCAoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkb21h aW4gKmNkLCBpbnQgb3ApCiB7CiAgICAgcmV0dXJuIHhzbV9vcHMtPm1lbV9zaGFyaW5nX29wKGQs IGNkLCBvcCk7CmRpZmYgLS1naXQgYS94ZW4veHNtL2R1bW15LmMgYi94ZW4veHNtL2R1bW15LmMK aW5kZXggYTA4MmIyOC4uZDU0NGVjMSAxMDA2NDQKLS0tIGEveGVuL3hzbS9kdW1teS5jCisrKyBi L3hlbi94c20vZHVtbXkuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIHZvaWQgX19pbml0IHhzbV9maXh1 cF9vcHMgKHN0cnVjdCB4c21fb3BlcmF0aW9ucyAqb3BzKQogICAgIHNldF90b19kdW1teV9pZl9u dWxsKG9wcywgaHZtX3NldF9pc2FfaXJxX2xldmVsKTsKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVs bChvcHMsIGh2bV9zZXRfcGNpX2xpbmtfcm91dGUpOwogICAgIHNldF90b19kdW1teV9pZl9udWxs KG9wcywgaHZtX2luamVjdF9tc2kpOwotICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgaHZt X2lvcmVxX3NlcnZlcik7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBtZW1fc2hhcmlu Z19vcCk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBhcGljKTsKICAgICBzZXRfdG9f ZHVtbXlfaWZfbnVsbChvcHMsIG1hY2hpbmVfbWVtb3J5X21hcCk7CmRpZmYgLS1naXQgYS94ZW4v eHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggMmVkNTg4OC4u MTQ3YmVkNyAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hlbi94c20v Zmxhc2svaG9va3MuYwpAQCAtMTUyMiwxMSArMTUyMiw2IEBAIHN0YXRpYyBpbnQgZmxhc2tfaHZt X2luamVjdF9tc2koc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gY3VycmVudF9oYXNfcGVy bShkLCBTRUNDTEFTU19IVk0sIEhWTV9fU0VORF9JUlEpOwogfQogCi1zdGF0aWMgaW50IGZsYXNr X2h2bV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW50IG9wKQotewotICAgIHJldHVy biBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0hWTSwgSFZNX19IVk1DVEwpOwotfQotCiBz dGF0aWMgaW50IGZsYXNrX21lbV9zaGFyaW5nX29wKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBk b21haW4gKmNkLCBpbnQgb3ApCiB7CiAgICAgaW50IHJjID0gY3VycmVudF9oYXNfcGVybShjZCwg U0VDQ0xBU1NfSFZNLCBIVk1fX01FTV9TSEFSSU5HKTsKQEAgLTE4MDUsNyArMTgwMCw2IEBAIHN0 YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxhc2tfb3BzID0gewogICAgIC5odm1fc2V0X2lz YV9pcnFfbGV2ZWwgPSBmbGFza19odm1fc2V0X2lzYV9pcnFfbGV2ZWwsCiAgICAgLmh2bV9zZXRf cGNpX2xpbmtfcm91dGUgPSBmbGFza19odm1fc2V0X3BjaV9saW5rX3JvdXRlLAogICAgIC5odm1f aW5qZWN0X21zaSA9IGZsYXNrX2h2bV9pbmplY3RfbXNpLAotICAgIC5odm1faW9yZXFfc2VydmVy ID0gZmxhc2tfaHZtX2lvcmVxX3NlcnZlciwKICAgICAubWVtX3NoYXJpbmdfb3AgPSBmbGFza19t ZW1fc2hhcmluZ19vcCwKICAgICAuYXBpYyA9IGZsYXNrX2FwaWMsCiAgICAgLm1hY2hpbmVfbWVt b3J5X21hcCA9IGZsYXNrX21hY2hpbmVfbWVtb3J5X21hcCwKLS0gCjIuMS40CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==