From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 185C9C4708F for ; Wed, 2 Jun 2021 19:12:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CAF1E613E6 for ; Wed, 2 Jun 2021 19:12:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CAF1E613E6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5DC6E6E546; Wed, 2 Jun 2021 19:12:04 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB12F6E546 for ; Wed, 2 Jun 2021 19:12:02 +0000 (UTC) IronPort-SDR: 5M/+9fC2MMnClWI2qPeAQKMc8xH8pjF6fjUl9pBaybqdBpX/mNooDErJ5tEuVCPkZvhiAWFEpY x11rZIOHH27Q== X-IronPort-AV: E=McAfee;i="6200,9189,10003"; a="203901850" X-IronPort-AV: E=Sophos;i="5.83,242,1616482800"; d="scan'208";a="203901850" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2021 12:12:00 -0700 IronPort-SDR: CP92PVIhPFZPvgerucY78IUxx0F9QUE5lVPLb5Sm9UFCewbujAOt3XahISo7K6If2xzZFbRIIS DwNxWgzl+9NA== X-IronPort-AV: E=Sophos;i="5.83,242,1616482800"; d="scan'208";a="479828610" Received: from lucas-s2600cw.jf.intel.com ([10.165.21.202]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2021 12:12:00 -0700 From: Lucas De Marchi To: intel-gfx@lists.freedesktop.org Date: Wed, 2 Jun 2021 12:11:42 -0700 Message-Id: <20210602191148.3344574-2-lucas.demarchi@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210602191148.3344574-1-lucas.demarchi@intel.com> References: <20210602191148.3344574-1-lucas.demarchi@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 1/7] drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" VGhpcyB3YXMgZG9uZSBieSB0aGUgZm9sbG93aW5nIHNlbWFudGljIHBhdGNoOgoKCUBAIGV4cHJl c3Npb24gaTkxNTsgQEAKCS0gSU5URUxfR0VOKGk5MTUpCgkrIEdSQVBISUNTX1ZFUihpOTE1KQoK CUBAIGV4cHJlc3Npb24gaTkxNTsgZXhwcmVzc2lvbiBFOyBAQAoJLSBJTlRFTF9HRU4oaTkxNSkg Pj0gRQoJKyBHUkFQSElDU19WRVIoaTkxNSkgPj0gRQoKCUBAIGV4cHJlc3Npb24gZGV2X3ByaXY7 IGV4cHJlc3Npb24gRTsgQEAKCS0gIUlTX0dFTihkZXZfcHJpdiwgRSkKCSsgR1JBUEhJQ1NfVkVS KGRldl9wcml2KSAhPSBFCgoJQEAgZXhwcmVzc2lvbiBkZXZfcHJpdjsgZXhwcmVzc2lvbiBFOyBA QAoJLSBJU19HRU4oZGV2X3ByaXYsIEUpCgkrIEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPT0gRQoK CUBACglleHByZXNzaW9uIGRldl9wcml2OwoJZXhwcmVzc2lvbiBmcm9tLCB1bnRpbDsKCUBACgkt IElTX0dFTl9SQU5HRShkZXZfcHJpdiwgZnJvbSwgdW50aWwpCgkrIElTX0dSQVBISUNTX1ZFUihk ZXZfcHJpdiwgZnJvbSwgdW50aWwpCgoJQGRlZkAKCWV4cHJlc3Npb24gRTsKCWlkZW50aWZpZXIg aWQgPX4gIl5nZW4kIjsKCUBACgktIGlkID0gR1JBUEhJQ1NfVkVSKEUpCgkrIHZlciA9IEdSQVBI SUNTX1ZFUihFKQoKCUBACglpZGVudGlmaWVyIGRlZi5pZDsKCUBACgktIGlkCgkrIHZlcgoKSXQg YWxzbyB0YWtlcyBjYXJlIG9mIHJlbmFtaW5nIHRoZSB2YXJpYWJsZSB3ZSBhc3NpZ24gdG8gR1JB UEhJQ1NfVkVSKCkKc28gdG8gdXNlICJ2ZXIiIHJhdGhlciB0aGFuICJnZW4iLgoKU2lnbmVkLW9m Zi1ieTogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+ClJldmlld2Vk LWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYyAgICAgICB8IDM4ICsrKysrLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jICAgICAgfCAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYyAgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBndHQuYyAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYyAgfCAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgNTQgKysrKysrKy0tLS0tLS0t CiAuLi4vZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyAgfCAxOCArKy0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jICAgICAgICAgIHwgMTggKyst LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHRfZmVuY2luZy5jICB8IDM0ICsr KysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgICAgICAgICAgICB8 IDI3ICsrKystLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMg ICAgfCAxMiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9pcnEuYyAgICAg ICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJxLmMgICAg IHwgMTAgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYyAgICAgICAgICAg fCAxNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYyAgICAgICAgICAg fCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAgIHwg NDYgKysrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jICAg ICAgICAgIHwgIDggKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jICAg ICAgICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMgICAgICAg ICAgIHwgMTYgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRl LmMgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAg ICAgfCAxNCArKy0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5j ICAgfCA2NCArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3Jwcy5jICAgICAgICAgICB8IDYwICsrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmMgICAgICAgICAgfCAxNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jICAgfCA2NiArKysrKysrKystLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYyAgfCAgNiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jICB8ICA0ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5jICAgICAgfCAgOCArLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jICB8ICA4ICstLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbGxjLmMgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICAgICAgICB8ICA4ICstLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jICAgICAgICB8ICA0ICstCiAuLi4vZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMgICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfcnBzLmMgICAgICAgIHwgMTYgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICA2ICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgICAgfCAgOCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Yy5jICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfYWRzLmMgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX2Z3LmMgICAgIHwgIDIgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8IDEwICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfaHVjLmMgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX3VjLmMgICAgICAgICB8ICA0ICstCiA0NCBmaWxlcyBjaGFuZ2VkLCAzMjQgaW5zZXJ0aW9u cygrKSwgMzIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2RlYnVnZnNfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3Rf cG0uYwppbmRleCBkNGY0NDUyY2U1ZWQuLjAzODliY2VlYmQwNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2RlYnVnZnNfZ3RfcG0uYwpAQCAtODUsMTQgKzg1LDE0IEBAIHN0YXRpYyBpbnQgZ2Vu Nl9kcnBjKHN0cnVjdCBzZXFfZmlsZSAqbSkKIAlndF9jb3JlX3N0YXR1cyA9IGludGVsX3VuY29y ZV9yZWFkX2Z3KHVuY29yZSwgR0VONl9HVF9DT1JFX1NUQVRVUyk7CiAKIAlyY2N0bDEgPSBpbnRl bF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjZfUkNfQ09OVFJPTCk7Ci0JaWYgKElOVEVMX0dFTihp OTE1KSA+PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7CiAJCWdlbjlfcG93 ZXJnYXRlX2VuYWJsZSA9CiAJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjlfUEdfRU5B QkxFKTsKIAkJZ2VuOV9wb3dlcmdhdGVfc3RhdHVzID0KIAkJCWludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgR0VOOV9QV1JHVF9ET01BSU5fU1RBVFVTKTsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGk5 MTUpIDw9IDcpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSA3KQogCQlzYW5keWJyaWRnZV9w Y29kZV9yZWFkKGk5MTUsIEdFTjZfUENPREVfUkVBRF9SQzZWSURTLAogCQkJCSAgICAgICAmcmM2 dmlkcywgTlVMTCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGdlbjZfZHJwYyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJCSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDMWVf RU5BQkxFKSk7CiAJc2VxX3ByaW50ZihtLCAiUkM2IEVuYWJsZWQ6ICVzXG4iLAogCQkgICB5ZXNu byhyY2N0bDEgJiBHRU42X1JDX0NUTF9SQzZfRU5BQkxFKSk7Ci0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7CiAJCXNlcV9wcmludGYo bSwgIlJlbmRlciBXZWxsIEdhdGluZyBFbmFibGVkOiAlc1xuIiwKIAkJCSAgIHllc25vKGdlbjlf cG93ZXJnYXRlX2VuYWJsZSAmIEdFTjlfUkVOREVSX1BHX0VOQUJMRSkpOwogCQlzZXFfcHJpbnRm KG0sICJNZWRpYSBXZWxsIEdhdGluZyBFbmFibGVkOiAlc1xuIiwKQEAgLTEzNCw3ICsxMzQsNyBA QCBzdGF0aWMgaW50IGdlbjZfZHJwYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAKIAlzZXFfcHJpbnRm KG0sICJDb3JlIFBvd2VyIERvd246ICVzXG4iLAogCQkgICB5ZXNubyhndF9jb3JlX3N0YXR1cyAm IEdFTjZfQ09SRV9DUERfU1RBVEVfTUFTSykpOwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkg eworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkgewogCQlzZXFfcHJpbnRmKG0sICJSZW5k ZXIgUG93ZXIgV2VsbDogJXNcbiIsCiAJCQkgICAoZ2VuOV9wb3dlcmdhdGVfc3RhdHVzICYKIAkJ CSAgICBHRU45X1BXUkdUX1JFTkRFUl9TVEFUVVNfTUFTSykgPyAiVXAiIDogIkRvd24iKTsKQEAg LTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IGdlbjZfZHJwYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0p CiAJcHJpbnRfcmM2X3JlcyhtLCAiUkM2KyByZXNpZGVuY3kgc2luY2UgYm9vdDoiLCBHRU42X0dU X0dGWF9SQzZwKTsKIAlwcmludF9yYzZfcmVzKG0sICJSQzYrKyByZXNpZGVuY3kgc2luY2UgYm9v dDoiLCBHRU42X0dUX0dGWF9SQzZwcCk7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDcpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDcpIHsKIAkJc2VxX3ByaW50ZihtLCAiUkM2ICAg dm9sdGFnZTogJWRtVlxuIiwKIAkJCSAgIEdFTjZfREVDT0RFX1JDNl9WSUQoKChyYzZ2aWRzID4+ IDApICYgMHhmZikpKTsKIAkJc2VxX3ByaW50ZihtLCAiUkM2KyAgdm9sdGFnZTogJWRtVlxuIiwK QEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KHVuY29yZS0+cnBtKTsKIAotCWlmIChJU19HRU4oaTkxNSwgNSkpIHsKKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID09IDUpIHsKIAkJdTE2IHJndnN3Y3RsID0gaW50ZWxfdW5jb3JlX3JlYWQxNih1 bmNvcmUsIE1FTVNXQ1RMKTsKIAkJdTE2IHJndnN0YXQgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVu Y29yZSwgTUVNU1RBVF9JTEspOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIGludCBmcmVx dWVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAogCQlzZXFfcHJp bnRmKG0sICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCiAJCQkgICBpbnRl bF9ncHVfZnJlcShycHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKLQl9IGVsc2UgaWYgKElOVEVM X0dFTihpOTE1KSA+PSA2KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikg ewogCQl1MzIgcnBfc3RhdGVfbGltaXRzOwogCQl1MzIgZ3RfcGVyZl9zdGF0dXM7CiAJCXUzMiBy cF9zdGF0ZV9jYXA7CkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAogCQlyZXFmID0gaW50ZWxfdW5jb3Jl X3JlYWQodW5jb3JlLCBHRU42X1JQTlNXUkVRKTsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5 KSB7CisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkgewogCQkJcmVxZiA+Pj0gMjM7CiAJ CX0gZWxzZSB7CiAJCQlyZXFmICY9IH5HRU42X1RVUkJPX0RJU0FCTEU7CkBAIC0zNTQsNyArMzU0 LDcgQEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKIAogCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FL RV9BTEwpOwogCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKKwkJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA+PSAxMSkgewogCQkJcG1faWVyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LCBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfRU5BQkxFKTsKIAkJCXBtX2ltciA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwgR0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRSX01BU0spOwogCQkJLyoK QEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQkJICovCiAJCQlwbV9pc3IgPSAwOwogCQkJcG1faWly ID0gMDsKLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCQl9IGVsc2UgaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7CiAJCQlwbV9pZXIgPSBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIEdFTjhfR1RfSUVSKDIpKTsKIAkJCXBtX2ltciA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgR0VOOF9HVF9JTVIoMikpOwogCQkJcG1faXNyID0gaW50ZWxfdW5jb3JlX3JlYWQo dW5jb3JlLCBHRU44X0dUX0lTUigyKSk7CkBAIC0zODYsMTQgKzM4NiwxNCBAQCBzdGF0aWMgaW50 IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCXNl cV9wcmludGYobSwgIlBNIElFUj0weCUwOHggSU1SPTB4JTA4eCwgTUFTSz0weCUwOHhcbiIsCiAJ CQkgICBwbV9pZXIsIHBtX2ltciwgcG1fbWFzayk7Ci0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0g MTApCisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPD0gMTApCiAJCQlzZXFfcHJpbnRmKG0sICJQ TSBJU1I9MHglMDh4IElJUj0weCUwOHhcbiIsCiAJCQkJICAgcG1faXNyLCBwbV9paXIpOwogCQlz ZXFfcHJpbnRmKG0sICJwbV9pbnRybXNrX21iejogMHglMDh4XG4iLAogCQkJICAgcnBzLT5wbV9p bnRybXNrX21ieik7CiAJCXNlcV9wcmludGYobSwgIkdUX1BFUkZfU1RBVFVTOiAweCUwOHhcbiIs IGd0X3BlcmZfc3RhdHVzKTsKIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgcmF0aW86 ICVkXG4iLAotCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKElOVEVMX0dFTihpOTE1KSA+PSA5ID8g MHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOworCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOwogCQlzZXFfcHJp bnRmKG0sICJSZW5kZXIgcC1zdGF0ZSBWSUQ6ICVkXG4iLAogCQkJICAgZ3RfcGVyZl9zdGF0dXMg JiAweGZmKTsKIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgbGltaXQ6ICVkXG4iLApA QCAtNDM3LDIwICs0MzcsMjAgQEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hvdyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJbWF4X2ZyZXEgPSAoSVNfR0VOOV9MUChpOTE1KSA/ IHJwX3N0YXRlX2NhcCA+PiAwIDoKIAkJCSAgICBycF9zdGF0ZV9jYXAgPj4gMTYpICYgMHhmZjsK IAkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoaTkxNSkgfHwKLQkJCSAgICAgSU5URUxfR0VOKGk5 MTUpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOworCQkJICAgICBHUkFQSElDU19WRVIo aTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7CiAJCXNlcV9wcmludGYobSwgIkxv d2VzdCAoUlBOKSBmcmVxdWVuY3k6ICVkTUh6XG4iLAogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBz LCBtYXhfZnJlcSkpOwogCiAJCW1heF9mcmVxID0gKHJwX3N0YXRlX2NhcCAmIDB4ZmYwMCkgPj4g ODsKIAkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoaTkxNSkgfHwKLQkJCSAgICAgSU5URUxfR0VO KGk5MTUpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOworCQkJICAgICBHUkFQSElDU19W RVIoaTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7CiAJCXNlcV9wcmludGYobSwg Ik5vbWluYWwgKFJQMSkgZnJlcXVlbmN5OiAlZE1IelxuIiwKIAkJCSAgIGludGVsX2dwdV9mcmVx KHJwcywgbWF4X2ZyZXEpKTsKIAogCQltYXhfZnJlcSA9IChJU19HRU45X0xQKGk5MTUpID8gcnBf c3RhdGVfY2FwID4+IDE2IDoKIAkJCSAgICBycF9zdGF0ZV9jYXAgPj4gMCkgJiAweGZmOwogCQlt YXhfZnJlcSAqPSAoSVNfR0VOOV9CQyhpOTE1KSB8fAotCQkJICAgICBJTlRFTF9HRU4oaTkxNSkg Pj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7CisJCQkgICAgIEdSQVBISUNTX1ZFUihpOTE1 KSA+PSAxMCA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKTsKIAkJc2VxX3ByaW50ZihtLCAiTWF4IG5v bi1vdmVyY2xvY2tlZCAoUlAwKSBmcmVxdWVuY3k6ICVkTUh6XG4iLAogCQkJICAgaW50ZWxfZ3B1 X2ZyZXEocnBzLCBtYXhfZnJlcSkpOwogCQlzZXFfcHJpbnRmKG0sICJNYXggb3ZlcmNsb2NrZWQg ZnJlcXVlbmN5OiAlZE1IelxuIiwKQEAgLTQ4OCw3ICs0ODgsNyBAQCBzdGF0aWMgaW50IGxsY19z aG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gbS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5p OTE1OwotCWNvbnN0IGJvb2wgZWRyYW0gPSBJTlRFTF9HRU4oaTkxNSkgPiA4OworCWNvbnN0IGJv b2wgZWRyYW0gPSBHUkFQSElDU19WRVIoaTkxNSkgPiA4OwogCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZndC0+cnBzOwogCXVuc2lnbmVkIGludCBtYXhfZ3B1X2ZyZXEsIG1pbl9ncHVfZnJlcTsK IAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50 IGxsY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCW1pbl9ncHVfZnJl cSA9IHJwcy0+bWluX2ZyZXE7CiAJbWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKLQlpZiAo SVNfR0VOOV9CQyhpOTE1KSB8fCBJTlRFTF9HRU4oaTkxNSkgPj0gMTApIHsKKwlpZiAoSVNfR0VO OV9CQyhpOTE1KSB8fCBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTApIHsKIAkJLyogQ29udmVydCBH VCBmcmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KIAkJbWluX2dwdV9mcmVxIC89IEdFTjlfRlJF UV9TQ0FMRVI7CiAJCW1heF9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOwpAQCAtNTE4LDcg KzUxOCw3IEBAIHN0YXRpYyBpbnQgbGxjX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLAogCQkJCQkgIChncHVfZnJlcSAqCiAJCQkJ CSAgIChJU19HRU45X0JDKGk5MTUpIHx8Ci0JCQkJCSAgICBJTlRFTF9HRU4oaTkxNSkgPj0gMTAg PworCQkJCQkgICAgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwID8KIAkJCQkJICAgIEdFTjlfRlJF UV9TQ0FMRVIgOiAxKSkpLAogCQkJICAgKChpYV9mcmVxID4+IDApICYgMHhmZikgKiAxMDAsCiAJ CQkgICAoKGlhX2ZyZXEgPj4gOCkgJiAweGZmKSAqIDEwMCk7CkBAIC01ODAsNyArNTgwLDcgQEAg c3RhdGljIGludCBycHNfYm9vc3Rfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp CiAKIAlzZXFfcHJpbnRmKG0sICJXYWl0IGJvb3N0czogJWRcbiIsIFJFQURfT05DRShycHMtPmJv b3N0cykpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2ICYmIGludGVsX3Jwc19pc19hY3Rp dmUocnBzKSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNiAmJiBpbnRlbF9ycHNfaXNf YWN0aXZlKHJwcykpIHsKIAkJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29y ZTsKIAkJdTMyIHJwdXAsIHJwdXBlaTsKIAkJdTMyIHJwZG93biwgcnBkb3duZWk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYwppbmRleCA5NjQ2MjAwZDI3OTIuLjYxMzgz ODMwNTA1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVf Y3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCkBAIC03 NCw3ICs3NCw3IEBAIGludCBnZW40X2VtaXRfZmx1c2hfcmNzKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLCB1MzIgbW9kZSkKIAljbWQgPSBNSV9GTFVTSDsKIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJ REFURSkgewogCQljbWQgfD0gTUlfRVhFX0ZMVVNIOwotCQlpZiAoSVNfRzRYKHJxLT5lbmdpbmUt Pmk5MTUpIHx8IElTX0dFTihycS0+ZW5naW5lLT5pOTE1LCA1KSkKKwkJaWYgKElTX0c0WChycS0+ ZW5naW5lLT5pOTE1KSB8fCBHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPT0gNSkKIAkJ CWNtZCB8PSBNSV9JTlZBTElEQVRFX0lTUDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9n ZW44X2VuZ2luZV9jcy5jCmluZGV4IDczMmMyZWQxZDkzMy4uOTRlMGE1NjY5ZjkwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKQEAgLTM4LDcgKzM4LDcgQEAgaW50 IGdlbjhfZW1pdF9mbHVzaF9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQog CQkgKiBPbiBHRU45OiBiZWZvcmUgVkZfQ0FDSEVfSU5WQUxJREFURSB3ZSBuZWVkIHRvIGVtaXQg YSBOVUxMCiAJCSAqIHBpcGUgY29udHJvbC4KIAkJICovCi0JCWlmIChJU19HRU4ocnEtPmVuZ2lu ZS0+aTkxNSwgOSkpCisJCWlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPT0gOSkK IAkJCXZmX2ZsdXNoX3dhID0gdHJ1ZTsKIAogCQkvKiBXYUZvckdBTUhhbmc6a2JsICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X3BwZ3R0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9nZW44X3BwZ3R0LmMKaW5kZXggZTNhODkyNGQyMjg2Li4yMWM4YjczNTBi N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBndHQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X3BwZ3R0LmMKQEAgLTcwOSw3ICs3MDksNyBA QCBzdHJ1Y3QgaTkxNV9wcGd0dCAqZ2VuOF9wcGd0dF9jcmVhdGUoc3RydWN0IGludGVsX2d0ICpn dCkKIAkgKgogCSAqIEdlbjEyIGhhcyBpbmhlcml0ZWQgdGhlIHNhbWUgcmVhZC1vbmx5IGZhdWx0 IGlzc3VlIGZyb20gZ2VuMTEuCiAJICovCi0JcHBndHQtPnZtLmhhc19yZWFkX29ubHkgPSAhSVNf R0VOX1JBTkdFKGd0LT5pOTE1LCAxMSwgMTIpOworCXBwZ3R0LT52bS5oYXNfcmVhZF9vbmx5ID0g IUlTX0dSQVBISUNTX1ZFUihndC0+aTkxNSwgMTEsIDEyKTsKIAogCWlmIChIQVNfTE1FTShndC0+ aTkxNSkpCiAJCXBwZ3R0LT52bS5hbGxvY19wdF9kbWEgPSBhbGxvY19wdF9sbWVtOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF9zc2V1LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYwppbmRleCA4ZGZkOGY2NTZh YWEuLmU4NmQ4MjU1ZmVlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dF9zc2V1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29u dGV4dF9zc2V1LmMKQEAgLTc2LDcgKzc2LDcgQEAgaW50ZWxfY29udGV4dF9yZWNvbmZpZ3VyZV9z c2V1KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIHsKIAlpbnQgcmV0OwogCi0JR0VNX0JVR19P TihJTlRFTF9HRU4oY2UtPmVuZ2luZS0+aTkxNSkgPCA4KTsKKwlHRU1fQlVHX09OKEdSQVBISUNT X1ZFUihjZS0+ZW5naW5lLT5pOTE1KSA8IDgpOwogCiAJcmV0ID0gaW50ZWxfY29udGV4dF9sb2Nr X3Bpbm5lZChjZSk7CiAJaWYgKHJldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX2NzLmMKaW5kZXggM2Y5YTgxMWViMDJiLi41NGJhZjE3YjgxYjYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yNDAsMTAgKzI0MCwxMCBAQCB2b2lk IGludGVsX2VuZ2luZV9zZXRfaHdzcF93cml0ZW1hc2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCB1MzIgbWFzaykKIAkgKiBUaG91Z2ggdGhleSBhZGRlZCBtb3JlIHJpbmdzIG9uIGc0 eC9pbGssIHRoZXkgZGlkIG5vdCBhZGQKIAkgKiBwZXItZW5naW5lIEhXU1RBTSB1bnRpbCBnZW42 LgogCSAqLwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDYgJiYgZW5naW5lLT5jbGFz cyAhPSBSRU5ERVJfQ0xBU1MpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgNiAm JiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuOwogCi0JaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID49IDMpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp ID49IDMpCiAJCUVOR0lORV9XUklURShlbmdpbmUsIFJJTkdfSFdTVEFNLCBtYXNrKTsKIAllbHNl CiAJCUVOR0lORV9XUklURTE2KGVuZ2luZSwgUklOR19IV1NUQU0sIG1hc2spOwpAQCAtMzE1LDcg KzMxNSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBpbnRlbF9ndCAq Z3QsIGVudW0gaW50ZWxfZW5naW5lX2lkIGlkKQogCQlDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNF X0RVUkFUSU9OOwogCiAJLyogT3ZlcnJpZGUgdG8gdW5pbnRlcnJ1cHRpYmxlIGZvciBPcGVuQ0wg d29ya2xvYWRzLiAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPT0gMTIgJiYgZW5naW5lLT5jbGFz cyA9PSBSRU5ERVJfQ0xBU1MpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMiAmJiBlbmdp bmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKIAkJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVv dXRfbXMgPSAwOwogCiAJZW5naW5lLT5kZWZhdWx0cyA9IGVuZ2luZS0+cHJvcHM7IC8qIG5ldmVy IHRvIGNoYW5nZSBhZ2FpbiAqLwpAQCAtMzUyLDggKzM1Miw4IEBAIHN0YXRpYyB2b2lkIF9fc2V0 dXBfZW5naW5lX2NhcGFiaWxpdGllcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ CSAqIEhFVkMgc3VwcG9ydCBpcyBwcmVzZW50IG9uIGZpcnN0IGVuZ2luZSBpbnN0YW5jZQogCQkg KiBiZWZvcmUgR2VuMTEgYW5kIG9uIGFsbCBpbnN0YW5jZXMgYWZ0ZXJ3YXJkcy4KIAkJICovCi0J CWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEgfHwKLQkJICAgIChJTlRFTF9HRU4oaTkxNSkgPj0g OSAmJiBlbmdpbmUtPmluc3RhbmNlID09IDApKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDExIHx8CisJCSAgICAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0YW5j ZSA9PSAwKSkKIAkJCWVuZ2luZS0+dWFiaV9jYXBhYmlsaXRpZXMgfD0KIAkJCQlJOTE1X1ZJREVP X0NMQVNTX0NBUEFCSUxJVFlfSEVWQzsKIApAQCAtMzYxLDE0ICszNjEsMTQgQEAgc3RhdGljIHZv aWQgX19zZXR1cF9lbmdpbmVfY2FwYWJpbGl0aWVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAkJICogU0ZDIGJsb2NrIGlzIHByZXNlbnQgb25seSBvbiBldmVuIGxvZ2ljYWwgZW5n aW5lCiAJCSAqIGluc3RhbmNlcy4KIAkJICovCi0JCWlmICgoSU5URUxfR0VOKGk5MTUpID49IDEx ICYmCisJCWlmICgoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExICYmCiAJCSAgICAgKGVuZ2luZS0+ Z3QtPmluZm8udmRib3hfc2ZjX2FjY2VzcyAmCiAJCSAgICAgIEJJVChlbmdpbmUtPmluc3RhbmNl KSkpIHx8Ci0JCSAgICAoSU5URUxfR0VOKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0YW5jZSA9 PSAwKSkKKwkJICAgIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSAmJiBlbmdpbmUtPmluc3RhbmNl ID09IDApKQogCQkJZW5naW5lLT51YWJpX2NhcGFiaWxpdGllcyB8PQogCQkJCUk5MTVfVklERU9f QU5EX0VOSEFOQ0VfQ0xBU1NfQ0FQQUJJTElUWV9TRkM7CiAJfSBlbHNlIGlmIChlbmdpbmUtPmNs YXNzID09IFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTKSB7Ci0JCWlmIChJTlRFTF9HRU4oaTkxNSkg Pj0gOSkKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQkJZW5naW5lLT51YWJpX2Nh cGFiaWxpdGllcyB8PQogCQkJCUk5MTVfVklERU9fQU5EX0VOSEFOQ0VfQ0xBU1NfQ0FQQUJJTElU WV9TRkM7CiAJfQpAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190 IGluaXRfZW5naW5lX21hc2soc3RydWN0IGludGVsX2d0ICpndCkKIAogCWluZm8tPmVuZ2luZV9t YXNrID0gSU5URUxfSU5GTyhpOTE1KS0+cGxhdGZvcm1fZW5naW5lX21hc2s7CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpIDwgMTEpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDExKQogCQlyZXR1 cm4gaW5mby0+ZW5naW5lX21hc2s7CiAKIAltZWRpYV9mdXNlID0gfmludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgR0VOMTFfR1RfVkVCT1hfVkRCT1hfRElTQUJMRSk7CkBAIC00OTIsNyArNDkyLDcg QEAgc3RhdGljIGludGVsX2VuZ2luZV9tYXNrX3QgaW5pdF9lbmdpbmVfbWFzayhzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQogCQkgKiBob29rZWQgdXAgdG8gYW4gU0ZDIChTY2FsZXIgJiBGb3JtYXQgQ29u dmVydGVyKSB1bml0LgogCQkgKiBJbiBUR0wgZWFjaCBWREJPWCBoYXMgYWNjZXNzIHRvIGFuIFNG Qy4KIAkJICovCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIgfHwgbG9naWNhbF92ZGJveCsr ICUgMiA9PSAwKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyIHx8IGxvZ2ljYWxfdmRi b3grKyAlIDIgPT0gMCkKIAkJCWd0LT5pbmZvLnZkYm94X3NmY19hY2Nlc3MgfD0gQklUKGkpOwog CX0KIAlkcm1fZGJnKCZpOTE1LT5kcm0sICJ2ZGJveCBlbmFibGU6ICUwNHgsIGluc3RhbmNlczog JTA0bHhcbiIsCkBAIC03MjksNyArNzI5LDcgQEAgc3RhdGljIGludCBlbmdpbmVfc2V0dXBfY29t bW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpbnRlbF9lbmdpbmVfaW5pdF93 aGl0ZWxpc3QoZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2EoZW5naW5lKTsKIAot CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPj0gMTIpCiAJCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1JF TEFUSVZFX01NSU87CiAKIAlyZXR1cm4gMDsKQEAgLTk5Nyw5ICs5OTcsOSBAQCB1NjQgaW50ZWxf ZW5naW5lX2dldF9hY3RpdmVfaGVhZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAKIAl1NjQgYWN0aGQ7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA4KQogCQlhY3RoZCA9IEVOR0lORV9SRUFENjQoZW5naW5lLCBS SU5HX0FDVEhELCBSSU5HX0FDVEhEX1VEVyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49 IDQpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpCiAJCWFjdGhkID0gRU5HSU5F X1JFQUQoZW5naW5lLCBSSU5HX0FDVEhEKTsKIAllbHNlCiAJCWFjdGhkID0gRU5HSU5FX1JFQUQo ZW5naW5lLCBBQ1RIRCk7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCB1NjQgaW50ZWxfZW5naW5lX2dl dF9sYXN0X2JhdGNoX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog ewogCXU2NCBiYmFkZHI7CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOCkKKwlp ZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOCkKIAkJYmJhZGRyID0gRU5HSU5FX1JF QUQ2NChlbmdpbmUsIFJJTkdfQkJBRERSLCBSSU5HX0JCQUREUl9VRFcpOwogCWVsc2UKIAkJYmJh ZGRyID0gRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0JCQUREUik7CkBAIC0xMDU4LDcgKzEwNTgs NyBAQCBpbnQgaW50ZWxfZW5naW5lX3N0b3BfY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogewogCWludCBlcnIgPSAwOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwg MykKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCAzKQogCQlyZXR1cm4gLUVOT0RF VjsKIAogCUVOR0lORV9UUkFDRShlbmdpbmUsICJcbiIpOwpAQCAtMTEwOCw3ICsxMTA4LDcgQEAg cmVhZF9zdWJzbGljZV9yZWcoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAog CXUzMiBtY3JfbWFzaywgbWNyX3NzLCBtY3IsIG9sZF9tY3IsIHZhbDsKIAllbnVtIGZvcmNld2Fr ZV9kb21haW5zIGZ3X2RvbWFpbnM7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewogCQltY3JfbWFzayA9IEdFTjExX01DUl9T TElDRV9NQVNLIHwgR0VOMTFfTUNSX1NVQlNMSUNFX01BU0s7CiAJCW1jcl9zcyA9IEdFTjExX01D Ul9TTElDRShzbGljZSkgfCBHRU4xMV9NQ1JfU1VCU0xJQ0Uoc3Vic2xpY2UpOwogCX0gZWxzZSB7 CkBAIC0xMTU3LDcgKzExNTcsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJbWVtc2V0KGluc3Rkb25lLCAw LCBzaXplb2YoKmluc3Rkb25lKSk7CiAKLQlzd2l0Y2ggKElOVEVMX0dFTihpOTE1KSkgeworCXN3 aXRjaCAoR1JBUEhJQ1NfVkVSKGk5MTUpKSB7CiAJZGVmYXVsdDoKIAkJaW5zdGRvbmUtPmluc3Rk b25lID0KIAkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgUklOR19JTlNURE9ORShtbWlvX2Jh c2UpKTsKQEAgLTExNjcsNyArMTE2Nyw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9u ZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAkJaW5zdGRvbmUtPnNs aWNlX2NvbW1vbiA9CiAJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjdfU0NfSU5TVERP TkUpOwotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKSB7CisJCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gMTIpIHsKIAkJCWluc3Rkb25lLT5zbGljZV9jb21tb25fZXh0cmFbMF0gPQogCQkJ CWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTJfU0NfSU5TVERPTkVfRVhUUkEpOwogCQkJ aW5zdGRvbmUtPnNsaWNlX2NvbW1vbl9leHRyYVsxXSA9CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBz dGF0aWMgYm9vbCByaW5nX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CQlpZGxlID0gZmFsc2U7CiAKIAkvKiBObyBiaXQgZm9yIGdlbjIsIHNvIGFzc3VtZSB0aGUgQ1Mg cGFyc2VyIGlzIGlkbGUgKi8KLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPiAyICYmCisJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID4gMiAmJgogCSAgICAhKEVOR0lORV9SRUFE KGVuZ2luZSwgUklOR19NSV9NT0RFKSAmIE1PREVfSURMRSkpCiAJCWlkbGUgPSBmYWxzZTsKIApA QCAtMTMyNyw3ICsxMzI3LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3Vi bWlzc2lvbihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiBib29sIGludGVsX2VuZ2luZV9jYW5fc3Rv cmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN3aXRjaCAoSU5U RUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5 MTUpKSB7CiAJY2FzZSAyOgogCQlyZXR1cm4gZmFsc2U7IC8qIHVzZXMgcGh5c2ljYWwgbm90IHZp cnR1YWwgYWRkcmVzc2VzICovCiAJY2FzZSAzOgpAQCAtMTQzMiw3ICsxNDMyLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlz dHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CiAJdTY0IGFkZHI7CiAKLQlpZiAoZW5naW5lLT5pZCA9 PSBSRU5ERVJfQ0xBU1MgJiYgSVNfR0VOX1JBTkdFKGRldl9wcml2LCA0LCA3KSkKKwlpZiAoZW5n aW5lLT5pZCA9PSBSRU5ERVJfQ0xBU1MgJiYgSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCA0LCA3 KSkKIAkJZHJtX3ByaW50ZihtLCAiXHRDQ0lEOiAweCUwOHhcbiIsIEVOR0lORV9SRUFEKGVuZ2lu ZSwgQ0NJRCkpOwogCWlmIChIQVNfRVhFQ0xJU1RTKGRldl9wcml2KSkgewogCQlkcm1fcHJpbnRm KG0sICJcdEVMX1NUQVRfSEk6IDB4JTA4eFxuIiwKQEAgLTE0NDksMTMgKzE0NDksMTMgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCiAJZHJtX3ByaW50ZihtLCAiXHRSSU5HX0NUTDogICAweCUwOHglc1xuIiwK IAkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0NUTCksCiAJCSAgIEVOR0lORV9SRUFEKGVu Z2luZSwgUklOR19DVEwpICYgKFJJTkdfV0FJVCB8IFJJTkdfV0FJVF9TRU1BUEhPUkUpID8gIiBb d2FpdGluZ10iIDogIiIpOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+IDIpIHsKKwlp ZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPiAyKSB7CiAJCWRybV9wcmludGYobSwgIlx0 UklOR19NT0RFOiAgMHglMDh4JXNcbiIsCiAJCQkgICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdf TUlfTU9ERSksCiAJCQkgICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfTUlfTU9ERSkgJiAoTU9E RV9JRExFKSA/ICIgW2lkbGVdIiA6ICIiKTsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNikgewogCQlkcm1fcHJp bnRmKG0sICJcdFJJTkdfSU1SOiAgIDB4JTA4eFxuIiwKIAkJCSAgIEVOR0lORV9SRUFEKGVuZ2lu ZSwgUklOR19JTVIpKTsKIAkJZHJtX3ByaW50ZihtLCAiXHRSSU5HX0VTUjogICAweCUwOHhcbiIs CkBAIC0xNDcyLDE1ICsxNDcyLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9wcmludF9y ZWdpc3RlcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWFkZHIgPSBpbnRlbF9l bmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChlbmdpbmUpOwogCWRybV9wcmludGYobSwgIlx0QkJB RERSOiAweCUwOHhfJTA4eFxuIiwKIAkJICAgdXBwZXJfMzJfYml0cyhhZGRyKSwgbG93ZXJfMzJf Yml0cyhhZGRyKSk7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGRldl9wcml2KSA+PSA4KQogCQlhZGRyID0gRU5HSU5FX1JFQUQ2NChlbmdpbmUsIFJJ TkdfRE1BX0ZBREQsIFJJTkdfRE1BX0ZBRERfVURXKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSA0KQogCQlh ZGRyID0gRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0RNQV9GQUREKTsKIAllbHNlCiAJCWFkZHIg PSBFTkdJTkVfUkVBRChlbmdpbmUsIERNQV9GQUREX0k4WFgpOwogCWRybV9wcmludGYobSwgIlx0 RE1BX0ZBRERSOiAweCUwOHhfJTA4eFxuIiwKIAkJICAgdXBwZXJfMzJfYml0cyhhZGRyKSwgbG93 ZXJfMzJfYml0cyhhZGRyKSk7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgeworCWlm IChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDQpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRJUEVJ UjogMHglMDh4XG4iLAogCQkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0lQRUlSKSk7CiAJ CWRybV9wcmludGYobSwgIlx0SVBFSFI6IDB4JTA4eFxuIiwKQEAgLTE1NTksNyArMTU1OSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCQl9CiAJCXJjdV9yZWFkX3VubG9jaygpOwogCQlleGVjbGlzdHNf YWN0aXZlX3VubG9ja19iaChleGVjbGlzdHMpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+IDYpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPiA2KSB7CiAJ CWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0U6IDB4JTA4eFxuIiwKIAkJCSAgIEVOR0lORV9S RUFEKGVuZ2luZSwgUklOR19QUF9ESVJfQkFTRSkpOwogCQlkcm1fcHJpbnRmKG0sICJcdFBQX0RJ Ul9CQVNFX1JFQUQ6IDB4JTA4eFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jCmluZGV4IDhkYjIwMDQyMjk1MC4uZmM3NzU5 MmQ4OGE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlz dHNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNs aXN0c19zdWJtaXNzaW9uLmMKQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHByb2Nlc3NfY3NiKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqKmluYWN0aXZl KQogCQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiY3NiWyVkXTogc3RhdHVzPTB4JTA4eDoweCUwOHhc biIsCiAJCQkgICAgIGhlYWQsIHVwcGVyXzMyX2JpdHMoY3NiKSwgbG93ZXJfMzJfYml0cyhjc2Ip KTsKIAotCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCisJCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJCXByb21vdGUgPSBnZW4xMl9jc2JfcGFyc2Uo Y3NiKTsKIAkJZWxzZQogCQkJcHJvbW90ZSA9IGdlbjhfY3NiX3BhcnNlKGNzYik7CkBAIC0yNzcy LDcgKzI3NzIsNyBAQCBzdGF0aWMgdm9pZCBlbmFibGVfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAogCWludGVsX2VuZ2luZV9zZXRfaHdzcF93cml0ZW1hc2soZW5n aW5lLCB+MHUpOyAvKiBIV1NUQU0gKi8KIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+ PSAxMSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCW1vZGUgPSBf TUFTS0VEX0JJVF9FTkFCTEUoR0VOMTFfR0ZYX0RJU0FCTEVfTEVHQUNZX01PREUpOwogCWVsc2UK IAkJbW9kZSA9IF9NQVNLRURfQklUX0VOQUJMRShHRlhfUlVOX0xJU1RfRU5BQkxFKTsKQEAgLTMx MDMsNyArMzEwMyw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19wYXJrKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIGJvb2wgY2FuX3ByZWVtcHQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+IDgp CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID4gOCkKIAkJcmV0dXJuIHRydWU7CiAK IAkvKiBHUEdQVSBvbiBiZHcgcmVxdWlyZXMgZXh0cmEgdy9hOyBub3QgaW1wbGVtZW50ZWQgKi8K QEAgLTMxNTYsMTMgKzMxNTYsMTMgQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2Vt aXRfZmx1c2hfeGNzOwogCWVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIgPSBnZW44X2VtaXRf aW5pdF9icmVhZGNydW1iOwogCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW44X2Vt aXRfZmluaV9icmVhZGNydW1iX3hjczsKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0g MTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpIHsKIAkJZW5naW5l LT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjEyX2VtaXRfZmluaV9icmVhZGNydW1iX3hjczsK IAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVzaF94Y3M7CiAJfQogCWVuZ2lu ZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9IGV4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNz aW9uOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgMTEpIHsKKwlpZiAoR1JBUEhJ Q1NfVkVSKGVuZ2luZS0+aTkxNSkgPCAxMSkgewogCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW44 X2xvZ2ljYWxfcmluZ19lbmFibGVfaXJxOwogCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuOF9s b2dpY2FsX3JpbmdfZGlzYWJsZV9pcnE7CiAJfSBlbHNlIHsKQEAgLTMxOTUsNyArMzE5NSw3IEBA IHN0YXRpYyB2b2lkIGxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogewogCXVuc2lnbmVkIGludCBzaGlmdCA9IDA7CiAKLQlpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkgeworCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSA8IDExKSB7CiAJCWNvbnN0IHU4IGlycV9zaGlmdHNbXSA9IHsKIAkJCVtSQ1MwXSAgPSBHRU44 X1JDU19JUlFfU0hJRlQsCiAJCQlbQkNTMF0gID0gR0VOOF9CQ1NfSVJRX1NISUZULApAQCAtMzIx NSw3ICszMjE1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyB2b2lkIHJjc19zdWJtaXNzaW9u X292ZXJyaWRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzd2l0Y2ggKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19WRVIoZW5naW5lLT5p OTE1KSkgewogCWNhc2UgMTI6CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjEyX2VtaXRfZmx1 c2hfcmNzOwogCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5p X2JyZWFkY3J1bWJfcmNzOwpAQCAtMzI2NiwxMyArMzI2NiwxMyBAQCBpbnQgaW50ZWxfZXhlY2xp c3RzX3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWV4 ZWNsaXN0cy0+Y3NiX3dyaXRlID0KIAkJJmVuZ2luZS0+c3RhdHVzX3BhZ2UuYWRkcltpbnRlbF9o d3NfY3NiX3dyaXRlX2luZGV4KGk5MTUpXTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCAxMSkK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpCiAJCWV4ZWNsaXN0cy0+Y3NiX3NpemUgPSBH RU44X0NTQl9FTlRSSUVTOwogCWVsc2UKIAkJZXhlY2xpc3RzLT5jc2Jfc2l6ZSA9IEdFTjExX0NT Ql9FTlRSSUVTOwogCiAJZW5naW5lLT5jb250ZXh0X3RhZyA9IEdFTk1BU0soQklUU19QRVJfTE9O RyAtIDIsIDApOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkgeworCWlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMSkgewogCQlleGVjbGlzdHMtPmNjaWQgfD0g ZW5naW5lLT5pbnN0YW5jZSA8PCAoR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUIC0gMzIpOwog CQlleGVjbGlzdHMtPmNjaWQgfD0gZW5naW5lLT5jbGFzcyA8PCAoR0VOMTFfRU5HSU5FX0NMQVNT X1NISUZUIC0gMzIpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2dndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHQuYwppbmRleCAx MGMyM2E3NDlhOTUuLjIwZTQ2Yjg0MzMyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dn dHQuYwpAQCAtMTA3LDEwICsxMDcsMTAgQEAgc3RhdGljIGJvb2wgbmVlZHNfaWRsZV9tYXBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmICghaW50ZWxfdnRkX2FjdGl2ZSgpKQog CQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDUpICYmIElTX01PQklMRShpOTE1 KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUgJiYgSVNfTU9CSUxFKGk5MTUpKQogCQly ZXR1cm4gdHJ1ZTsKIAotCWlmIChJU19HRU4oaTkxNSwgMTIpKQorCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPT0gMTIpCiAJCXJldHVybiB0cnVlOyAvKiBYWFggRE1BUiBmYXVsdCByZWFzb24gNyAq LwogCiAJcmV0dXJuIGZhbHNlOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyB2b2lkIGd1Y19n Z3R0X2ludmFsaWRhdGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAogCWdlbjhfZ2d0dF9pbnZh bGlkYXRlKGdndHQpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDEyKQogCQlpbnRlbF91bmNvcmVfd3JpdGVfZncodW5jb3JlLCBHRU4x Ml9HVUNfVExCX0lOVl9DUiwKIAkJCQkgICAgICBHRU4xMl9HVUNfVExCX0lOVl9DUl9JTlZBTElE QVRFKTsKIAllbHNlCkBAIC04MzIsNyArODMyLDcgQEAgc3RhdGljIGludCBnZ3R0X3Byb2JlX2Nv bW1vbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LCB1NjQgc2l6ZSkKIAkgKiByZXNvcnQgdG8gYW4g dW5jYWNoZWQgbWFwcGluZy4gVGhlIFdDIGlzc3VlIGlzIGVhc2lseSBjYXVnaHQgYnkgdGhlCiAJ ICogcmVhZGJhY2sgY2hlY2sgd2hlbiB3cml0aW5nIEdUVCBQVEUgZW50cmllcy4KIAkgKi8KLQlp ZiAoSVNfR0VOOV9MUChpOTE1KSB8fCBJTlRFTF9HRU4oaTkxNSkgPj0gMTApCisJaWYgKElTX0dF TjlfTFAoaTkxNSkgfHwgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwKQogCQlnZ3R0LT5nc20gPSBp b3JlbWFwKHBoeXNfYWRkciwgc2l6ZSk7CiAJZWxzZQogCQlnZ3R0LT5nc20gPSBpb3JlbWFwX3dj KHBoeXNfYWRkciwgc2l6ZSk7CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBzdGF0aWMgaW50IGdlbjZf Z21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCQlnZ3R0LT52bS5wdGVfZW5jb2Rl ID0gaHN3X3B0ZV9lbmNvZGU7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJZ2d0 dC0+dm0ucHRlX2VuY29kZSA9IGJ5dF9wdGVfZW5jb2RlOwotCWVsc2UgaWYgKElOVEVMX0dFTihp OTE1KSA+PSA3KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA3KQogCQlnZ3R0LT52 bS5wdGVfZW5jb2RlID0gaXZiX3B0ZV9lbmNvZGU7CiAJZWxzZQogCQlnZ3R0LT52bS5wdGVfZW5j b2RlID0gc25iX3B0ZV9lbmNvZGU7CkBAIC0xMTUwLDkgKzExNTAsOSBAQCBzdGF0aWMgaW50IGdn dHRfcHJvYmVfaHcoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgc3RydWN0IGludGVsX2d0ICpndCkK IAlnZ3R0LT52bS5kbWEgPSBpOTE1LT5kcm0uZGV2OwogCWRtYV9yZXN2X2luaXQoJmdndHQtPnZt Ll9yZXN2KTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNSkKKwlpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpIDw9IDUpCiAJCXJldCA9IGk5MTVfZ21jaF9wcm9iZShnZ3R0KTsKLQllbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPCA4KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDgpCiAJ CXJldCA9IGdlbjZfZ21jaF9wcm9iZShnZ3R0KTsKIAllbHNlCiAJCXJldCA9IGdlbjhfZ21jaF9w cm9iZShnZ3R0KTsKQEAgLTEyMDksNyArMTIwOSw3IEBAIGludCBpOTE1X2dndHRfcHJvYmVfaHco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIGludCBpOTE1X2dndHRfZW5hYmxlX2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewotCWlmIChJTlRFTF9HRU4oaTkxNSkg PCA2ICYmICFpbnRlbF9lbmFibGVfZ3R0KCkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDYg JiYgIWludGVsX2VuYWJsZV9ndHQoKSkKIAkJcmV0dXJuIC1FSU87CiAKIAlyZXR1cm4gMDsKQEAg LTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgaTkxNV9nZ3R0X3Jlc3VtZShzdHJ1Y3QgaTkxNV9nZ3R0 ICpnZ3R0KQogCWlmIChmbHVzaCkKIAkJd2JpbnZkX29uX2FsbF9jcHVzKCk7CiAKLQlpZiAoSU5U RUxfR0VOKGdndHQtPnZtLmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihnZ3R0LT52bS5p OTE1KSA+PSA4KQogCQlzZXR1cF9wcml2YXRlX3BhdChnZ3R0LT52bS5ndC0+dW5jb3JlKTsKIAog CWludGVsX2dndHRfcmVzdG9yZV9mZW5jZXMoZ2d0dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2dndHRfZmVuY2luZy5jCmluZGV4IDdiZjg0Y2QyMTU0My4uY2FjN2YzZjQ0NjQy IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcuYwpAQCAt NTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgaTkx NV9mZW5jZV9yZWcgKmZlbmNlKQogCWludCBmZW5jZV9waXRjaF9zaGlmdDsKIAl1NjQgdmFsOwog Ci0JaWYgKElOVEVMX0dFTihmZW5jZV90b19pOTE1KGZlbmNlKSkgPj0gNikgeworCWlmIChHUkFQ SElDU19WRVIoZmVuY2VfdG9faTkxNShmZW5jZSkpID49IDYpIHsKIAkJZmVuY2VfcmVnX2xvID0g RkVOQ0VfUkVHX0dFTjZfTE8oZmVuY2UtPmlkKTsKIAkJZmVuY2VfcmVnX2hpID0gRkVOQ0VfUkVH X0dFTjZfSEkoZmVuY2UtPmlkKTsKIAkJZmVuY2VfcGl0Y2hfc2hpZnQgPSBHRU42X0ZFTkNFX1BJ VENIX1NISUZUOwpAQCAtMTczLDkgKzE3Myw5IEBAIHN0YXRpYyB2b2lkIGZlbmNlX3dyaXRlKHN0 cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCiAJICogYW5kIGV4cGxpY2l0bHkgbWFuYWdlZCBm b3IgaW50ZXJuYWwgdXNlcnMuCiAJICovCiAKLQlpZiAoSVNfR0VOKGk5MTUsIDIpKQorCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gMikKIAkJaTgzMF93cml0ZV9mZW5jZV9yZWcoZmVuY2UpOwot CWVsc2UgaWYgKElTX0dFTihpOTE1LCAzKSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkg PT0gMykKIAkJaTkxNV93cml0ZV9mZW5jZV9yZWcoZmVuY2UpOwogCWVsc2UKIAkJaTk2NV93cml0 ZV9mZW5jZV9yZWcoZmVuY2UpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyB2b2lkIGZlbmNl X3dyaXRlKHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCiAKIHN0YXRpYyBib29sIGdwdV91 c2VzX2ZlbmNlX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlKQogewotCXJl dHVybiBJTlRFTF9HRU4oZmVuY2VfdG9faTkxNShmZW5jZSkpIDwgNDsKKwlyZXR1cm4gR1JBUEhJ Q1NfVkVSKGZlbmNlX3RvX2k5MTUoZmVuY2UpKSA8IDQ7CiB9CiAKIHN0YXRpYyBpbnQgZmVuY2Vf dXBkYXRlKHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCkBAIC01NjksNyArNTY5LDcgQEAg c3RhdGljIHZvaWQgZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkK IAl1MzIgc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CiAJdTMyIHN3aXp6 bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwogCi0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA4IHx8IElTX1ZBTExFWVZJRVcoaTkxNSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDggfHwgSVNfVkFMTEVZVklFVyhpOTE1KSkgewogCQkvKgogCQkgKiBPbiBCRFcrLCBzd2l6 emxpbmcgaXMgbm90IHVzZWQuIFdlIGxlYXZlIHRoZSBDUFUgbWVtb3J5CiAJCSAqIGNvbnRyb2xs ZXIgaW4gY2hhcmdlIG9mIG9wdGltaXppbmcgbWVtb3J5IGFjY2Vzc2VzIHdpdGhvdXQKQEAgLTU3 OSw3ICs1NzksNyBAQCBzdGF0aWMgdm9pZCBkZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0KQogCQkgKi8KIAkJc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX05P TkU7CiAJCXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOwotCX0gZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA2KSB7CiAJCWlmIChpOTE1LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUpIHsKIAkJCWlmIChpbnRl bF91bmNvcmVfcmVhZCh1bmNvcmUsIERJU1BfQVJCX0NUTCkgJgogCQkJICAgIERJU1BfVElMRV9T VVJGQUNFX1NXSVpaTElORykgewpAQCAtNjExLDE0ICs2MTEsMTQgQEAgc3RhdGljIHZvaWQgZGV0 ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAkJCQlzd2l6emxlX3kg PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKIAkJCX0KIAkJfQotCX0gZWxzZSBpZiAoSVNfR0VO KGk5MTUsIDUpKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNSkgewogCQkv KgogCQkgKiBPbiBJcm9ubGFrZSB3aGF0ZXZlciBEUkFNIGNvbmZpZywgR1BVIGFsd2F5cyBkbwog CQkgKiBzYW1lIHN3aXp6bGluZyBzZXR1cC4KIAkJICovCiAJCXN3aXp6bGVfeCA9IEk5MTVfQklU XzZfU1dJWlpMRV85XzEwOwogCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfOTsKLQl9 IGVsc2UgaWYgKElTX0dFTihpOTE1LCAyKSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID09IDIpIHsKIAkJLyoKIAkJICogQXMgZmFyIGFzIHdlIGtub3csIHRoZSA4NjUgZG9lc24n dCBoYXZlIHRoZXNlIGJpdCA2CiAJCSAqIHN3aXp6bGluZyBpc3N1ZXMuCkBAIC02OTcsNyArNjk3 LDcgQEAgc3RhdGljIHZvaWQgZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAq Z2d0dCkKIAkJfQogCiAJCS8qIGNoZWNrIGZvciBMLXNoYXBlZCBtZW1vcnkgYWthIG1vZGlmaWVk IGVuaGFuY2VkIGFkZHJlc3NpbmcgKi8KLQkJaWYgKElTX0dFTihpOTE1LCA0KSAmJgorCQlpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID09IDQgJiYKIAkJICAgICEoaW50ZWxfdW5jb3JlX3JlYWQodW5j b3JlLCBEQ0MyKSAmIERDQzJfTU9ESUZJRURfRU5IQU5DRURfRElTQUJMRSkpIHsKIAkJCXN3aXp6 bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwogCQkJc3dpenpsZV95ID0gSTkxNV9C SVRfNl9TV0laWkxFX1VOS05PV047CkBAIC04NDQsMTAgKzg0NCwxMCBAQCB2b2lkIGludGVsX2dn dHRfaW5pdF9mZW5jZXMoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAogCWlmICghaTkxNV9nZ3R0 X2hhc19hcGVydHVyZShnZ3R0KSkKIAkJbnVtX2ZlbmNlcyA9IDA7Ci0JZWxzZSBpZiAoSU5URUxf R0VOKGk5MTUpID49IDcgJiYKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNyAmJgog CQkgIShJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpKQogCQludW1f ZmVuY2VzID0gMzI7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQgfHwKKwllbHNlIGlm IChHUkFQSElDU19WRVIoaTkxNSkgPj0gNCB8fAogCQkgSVNfSTk0NUcoaTkxNSkgfHwgSVNfSTk0 NUdNKGk5MTUpIHx8CiAJCSBJU19HMzMoaTkxNSkgfHwgSVNfUElORVZJRVcoaTkxNSkpCiAJCW51 bV9mZW5jZXMgPSAxNjsKQEAgLTg5NSwyOSArODk1LDI5IEBAIHZvaWQgaW50ZWxfZ3RfaW5pdF9z d2l6emxpbmcoc3RydWN0IGludGVsX2d0ICpndCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGd0LT5pOTE1OwogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNv cmU7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNSB8fAorCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPCA1IHx8CiAJICAgIGk5MTUtPmdndHQuYml0XzZfc3dpenpsZV94ID09IEk5MTVfQklUXzZf U1dJWlpMRV9OT05FKQogCQlyZXR1cm47CiAKIAlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgRElT UF9BUkJfQ1RMLCAwLCBESVNQX1RJTEVfU1VSRkFDRV9TV0laWkxJTkcpOwogCi0JaWYgKElTX0dF TihpOTE1LCA1KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpCiAJCXJldHVybjsKIAog CWludGVsX3VuY29yZV9ybXcodW5jb3JlLCBUSUxFQ1RMLCAwLCBUSUxFQ1RMX1NXWkNUTCk7CiAK LQlpZiAoSVNfR0VOKGk5MTUsIDYpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikKIAkJ aW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBBUkJfTU9ERSwKIAkJCQkgICBfTUFT S0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9TTkIpKTsKLQllbHNlIGlmIChJU19HRU4o aTkxNSwgNykpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDcpCiAJCWludGVsX3Vu Y29yZV93cml0ZSh1bmNvcmUsCiAJCQkJICAgQVJCX01PREUsCiAJCQkJICAgX01BU0tFRF9CSVRf RU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfSVZCKSk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDgp KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA4KQogCQlpbnRlbF91bmNvcmVfd3Jp dGUodW5jb3JlLAogCQkJCSAgIEdBTVRBUkJNT0RFLAogCQkJCSAgIF9NQVNLRURfQklUX0VOQUJM RShBUkJfTU9ERV9TV0laWkxFX0JEVykpOwogCWVsc2UKLQkJTUlTU0lOR19DQVNFKElOVEVMX0dF TihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0LmMKaW5kZXggM2Y4OGVjZGVlMDMxLi4yMTYxYmYwMWVmOGIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwpAQCAtMTEzLDEwICsxMTMsMTAgQEAgc3RhdGlj IHZvaWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGludGVsX2d0ICpndCkKIAkJaW5pdF91bnVz ZWRfcmluZyhndCwgU1JCMV9CQVNFKTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwgU1JCMl9CQVNF KTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwgU1JCM19CQVNFKTsKLQl9IGVsc2UgaWYgKElTX0dF TihpOTE1LCAyKSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDIpIHsKIAkJ aW5pdF91bnVzZWRfcmluZyhndCwgU1JCMF9CQVNFKTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwg U1JCMV9CQVNFKTsKLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAzKSkgeworCX0gZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID09IDMpIHsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwgUFJCMV9C QVNFKTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwgUFJCMl9CQVNFKTsKIAl9CkBAIC0xMzMsNyAr MTMzLDcgQEAgaW50IGludGVsX2d0X2luaXRfaHcoc3RydWN0IGludGVsX2d0ICpndCkKIAkvKiBE b3VibGUgbGF5ZXIgc2VjdXJpdHkgYmxhbmtldCwgc2VlIGk5MTVfZ2VtX2luaXQoKSAqLwogCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAKLQlpZiAo SEFTX0VEUkFNKGk5MTUpICYmIElOVEVMX0dFTihpOTE1KSA8IDkpCisJaWYgKEhBU19FRFJBTShp OTE1KSAmJiBHUkFQSElDU19WRVIoaTkxNSkgPCA5KQogCQlpbnRlbF91bmNvcmVfcm13KHVuY29y ZSwgSFNXX0lESUNSLCAwLCBJRElIQVNITVNLKDB4ZikpOwogCiAJaWYgKElTX0hBU1dFTEwoaTkx NSkpCkBAIC0yMDYsMTAgKzIwNiwxMCBAQCBpbnRlbF9ndF9jbGVhcl9lcnJvcl9yZWdpc3RlcnMo c3RydWN0IGludGVsX2d0ICpndCwKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+ dW5jb3JlOwogCXUzMiBlaXI7CiAKLQlpZiAoIUlTX0dFTihpOTE1LCAyKSkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpICE9IDIpCiAJCWNsZWFyX3JlZ2lzdGVyKHVuY29yZSwgUEdUQkxfRVIpOwog Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDQp CiAJCWNsZWFyX3JlZ2lzdGVyKHVuY29yZSwgSVBFSVIoUkVOREVSX1JJTkdfQkFTRSkpOwogCWVs c2UKIAkJY2xlYXJfcmVnaXN0ZXIodW5jb3JlLCBJUEVJUl9JOTY1KTsKQEAgLTIyNywxMyArMjI3 LDEzIEBAIGludGVsX2d0X2NsZWFyX2Vycm9yX3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0 LAogCQkJCSAgIEk5MTVfTUFTVEVSX0VSUk9SX0lOVEVSUlVQVCk7CiAJfQogCi0JaWYgKElOVEVM X0dFTihpOTE1KSA+PSAxMikgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIpIHsKIAkJ cm13X2NsZWFyKHVuY29yZSwgR0VOMTJfUklOR19GQVVMVF9SRUcsIFJJTkdfRkFVTFRfVkFMSUQp OwogCQlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkKHVuY29yZSwgR0VOMTJfUklOR19GQVVMVF9S RUcpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpIHsKKwl9IGVsc2UgaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7CiAJCXJtd19jbGVhcih1bmNvcmUsIEdFTjhfUklOR19G QVVMVF9SRUcsIFJJTkdfRkFVTFRfVkFMSUQpOwogCQlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFk KHVuY29yZSwgR0VOOF9SSU5HX0ZBVUxUX1JFRyk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpIHsKIAkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK IApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfY2hlY2tfZmF1bHRzKHN0cnVj dCBpbnRlbF9ndCAqZ3QpCiAJaTkxNV9yZWdfdCBmYXVsdF9yZWcsIGZhdWx0X2RhdGEwX3JlZywg ZmF1bHRfZGF0YTFfcmVnOwogCXUzMiBmYXVsdDsKIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUp ID49IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gMTIpIHsKIAkJZmF1bHRf cmVnID0gR0VOMTJfUklOR19GQVVMVF9SRUc7CiAJCWZhdWx0X2RhdGEwX3JlZyA9IEdFTjEyX0ZB VUxUX1RMQl9EQVRBMDsKIAkJZmF1bHRfZGF0YTFfcmVnID0gR0VOMTJfRkFVTFRfVExCX0RBVEEx OwpAQCAtMzExLDkgKzMxMSw5IEBAIHZvaWQgaW50ZWxfZ3RfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0 cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g Z3QtPmk5MTU7CiAKIAkvKiBGcm9tIEdFTjggb253YXJkcyB3ZSBvbmx5IGhhdmUgb25lICdBbGwg RW5naW5lIEZhdWx0IFJlZ2lzdGVyJyAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpCiAJCWdlbjhfY2hlY2tfZmF1bHRzKGd0KTsKLQll bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gNikKIAkJZ2VuNl9jaGVja19mYXVsdHMoZ3QpOwogCWVsc2UKIAkJcmV0dXJuOwpAQCAt MzY1LDcgKzM2NSw3IEBAIHZvaWQgaW50ZWxfZ3RfZmx1c2hfZ2d0dF93cml0ZXMoc3RydWN0IGlu dGVsX2d0ICpndCkKIHZvaWQgaW50ZWxfZ3RfY2hpcHNldF9mbHVzaChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQogewogCXdtYigpOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNikKKwlpZiAoR1JB UEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDYpCiAJCWludGVsX2d0dF9jaGlwc2V0X2ZsdXNoKCk7CiB9 CiAKQEAgLTU4OSw3ICs1ODksOCBAQCBpbnQgaW50ZWxfZ3RfaW5pdChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQogCSAqLwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGd0LT51bmNvcmUsIEZPUkNF V0FLRV9BTEwpOwogCi0JZXJyID0gaW50ZWxfZ3RfaW5pdF9zY3JhdGNoKGd0LCBJU19HRU4oZ3Qt Pmk5MTUsIDIpID8gU1pfMjU2SyA6IFNaXzRLKTsKKwllcnIgPSBpbnRlbF9ndF9pbml0X3NjcmF0 Y2goZ3QsCisJCQkJICAgIEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPT0gMiA/IFNaXzI1NksgOiBT Wl80Syk7CiAJaWYgKGVycikKIAkJZ290byBvdXRfZnc7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jCmluZGV4IDU4MmZjYWVlMTFhYS4uOWYwZTcy OWQyZDE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9j a191dGlscy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0 aWxzLmMKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJdTMyIGYxOV8yX21oeiA9IDE5MjAwMDAwOwog CXUzMiBmMjRfbWh6ID0gMjQwMDAwMDA7CiAKLQlpZiAoSU5URUxfR0VOKHVuY29yZS0+aTkxNSkg PD0gNCkgeworCWlmIChHUkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA8PSA0KSB7CiAJCS8qCiAJ CSAqIFBSTXMgc2F5OgogCQkgKgpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdTMyIHJlYWRfY2xv Y2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAkJICogICAgICAo4oCc Q0xLQ0ZH4oCdKSBNQ0hCQVIgcmVnaXN0ZXIpCiAJCSAqLwogCQlyZXR1cm4gUlVOVElNRV9JTkZP KHVuY29yZS0+aTkxNSktPnJhd2Nsa19mcmVxICogMTAwMCAvIDE2OwotCX0gZWxzZSBpZiAoSU5U RUxfR0VOKHVuY29yZS0+aTkxNSkgPD0gOCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKHVu Y29yZS0+aTkxNSkgPD0gOCkgewogCQkvKgogCQkgKiBQUk1zIHNheToKIAkJICoKQEAgLTk0LDcg Kzk0LDcgQEAgc3RhdGljIHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUpCiAJCSAqICAgICAgcm9sbGluZyBvdmVyIGV2ZXJ5IDEuNSBob3VycykuCiAJ CSAqLwogCQlyZXR1cm4gZjEyXzVfbWh6OwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKHVuY29yZS0+ aTkxNSkgPD0gOSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKHVuY29yZS0+aTkxNSkgPD0g OSkgewogCQl1MzIgY3RjX3JlZyA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgQ1RDX01PREUp OwogCQl1MzIgZnJlcSA9IDA7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgdTMyIHJlYWRf Y2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAkJfQogCiAJCXJl dHVybiBmcmVxOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKHVuY29yZS0+aTkxNSkgPD0gMTIpIHsK Kwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUpIDw9IDEyKSB7CiAJCXUzMiBj dGNfcmVnID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBDVENfTU9ERSk7CiAJCXUzMiBmcmVx ID0gMDsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyB1MzIgcmVhZF9jbG9ja19mcmVxdWVu Y3koc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCQl9IGVsc2UgewogCQkJdTMyIGMwID0g aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBSUE1fQ09ORklHMCk7CiAKLQkJCWlmIChJTlRFTF9H RU4odW5jb3JlLT5pOTE1KSA8PSAxMCkKKwkJCWlmIChHUkFQSElDU19WRVIodW5jb3JlLT5pOTE1 KSA8PSAxMCkKIAkJCQlmcmVxID0gZ2VuMTBfZ2V0X2NyeXN0YWxfY2xvY2tfZnJlcSh1bmNvcmUs IGMwKTsKIAkJCWVsc2UKIAkJCQlmcmVxID0gZ2VuMTFfZ2V0X2NyeXN0YWxfY2xvY2tfZnJlcSh1 bmNvcmUsIGMwKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB1NjQgaW50ZWxfZ3RfbnNfdG9fcG1faW50 ZXJ2YWwoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTY0IG5zKQogCSAqIGZyb3plbiBtYWNo aW5lLgogCSAqLwogCXZhbCA9IGRpdl91NjRfcm91bmR1cChpbnRlbF9ndF9uc190b19jbG9ja19p bnRlcnZhbChndCwgbnMpLCAxNik7Ci0JaWYgKElTX0dFTihndC0+aTkxNSwgNikpCisJaWYgKEdS QVBISUNTX1ZFUihndC0+aTkxNSkgPT0gNikKIAkJdmFsID0gZGl2X3U2NF9yb3VuZHVwKHZhbCwg MjUpICogMjU7CiAKIAlyZXR1cm4gdmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9p cnEuYwppbmRleCBkMjkxMjZjNDU4YmEuLjFlYzYzY2NlYWJmNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIGdlbjVfZ3RfaXJx X3Jlc2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gZ3QtPnVuY29yZTsKIAogCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwgR1QpOwotCWlmIChJTlRF TF9HRU4oZ3QtPmk5MTUpID49IDYpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gNikK IAkJR0VOM19JUlFfUkVTRVQodW5jb3JlLCBHRU42X1BNKTsKIH0KIApAQCAtNDEzLDE0ICs0MTMs MTQgQEAgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQog CX0KIAogCWd0X2lycXMgfD0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwotCWlmIChJU19HRU4o Z3QtPmk5MTUsIDUpKQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID09IDUpCiAJCWd0X2ly cXMgfD0gSUxLX0JTRF9VU0VSX0lOVEVSUlVQVDsKIAllbHNlCiAJCWd0X2lycXMgfD0gR1RfQkxU X1VTRVJfSU5URVJSVVBUIHwgR1RfQlNEX1VTRVJfSU5URVJSVVBUOwogCiAJR0VOM19JUlFfSU5J VCh1bmNvcmUsIEdULCBndC0+Z3RfaW1yLCBndF9pcnFzKTsKIAotCWlmIChJTlRFTF9HRU4oZ3Qt Pmk5MTUpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA2KSB7CiAJCS8q CiAJCSAqIFJQUyBpbnRlcnJ1cHRzIHdpbGwgZ2V0IGVuYWJsZWQvZGlzYWJsZWQgb24gZGVtYW5k IHdoZW4gUlBTCiAJCSAqIGl0c2VsZiBpcyBlbmFibGVkL2Rpc2FibGVkLgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJxLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEuYwppbmRleCA4MTFhMTFlZDE4MWMuLmZlNTFmODk0 YjA3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJx LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJxLmMKQEAgLTE2 LDEwICsxNiwxMCBAQCBzdGF0aWMgdm9pZCB3cml0ZV9wbV9pbXIoc3RydWN0IGludGVsX2d0ICpn dCkKIAl1MzIgbWFzayA9IGd0LT5wbV9pbXI7CiAJaTkxNV9yZWdfdCByZWc7CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewog CQlyZWcgPSBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfTUFTSzsKIAkJbWFzayA8PD0gMTY7IC8q IHBtIGlzIGluIHVwcGVyIGhhbGYgKi8KLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4 KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQlyZWcgPSBHRU44 X0dUX0lNUigyKTsKIAl9IGVsc2UgewogCQlyZWcgPSBHRU42X1BNSU1SOwpAQCAtNjEsNyArNjEs NyBAQCB2b2lkIGdlbjZfZ3RfcG1fbWFza19pcnEoc3RydWN0IGludGVsX2d0ICpndCwgdTMyIG1h c2spCiB2b2lkIGdlbjZfZ3RfcG1fcmVzZXRfaWlyKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHUzMiBy ZXNldF9tYXNrKQogewogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNvcmU7 Ci0JaTkxNV9yZWdfdCByZWcgPSBJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDggPyBHRU44X0dUX0lJ UigyKSA6IEdFTjZfUE1JSVI7CisJaTkxNV9yZWdfdCByZWcgPSBHUkFQSElDU19WRVIoZ3QtPmk5 MTUpID49IDggPyBHRU44X0dUX0lJUigyKSA6IEdFTjZfUE1JSVI7CiAKIAlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZndC0+aXJxX2xvY2spOwogCkBAIC03NywxMCArNzcsMTAgQEAgc3RhdGljIHZvaWQg d3JpdGVfcG1faWVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJdTMyIG1hc2sgPSBndC0+cG1faWVy OwogCWk5MTVfcmVnX3QgcmVnOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCWlm IChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsKIAkJcmVnID0gR0VOMTFfR1BNX1dHQk9YUEVS Rl9JTlRSX0VOQUJMRTsKIAkJbWFzayA8PD0gMTY7IC8qIHBtIGlzIGluIHVwcGVyIGhhbGYgKi8K LQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7CisJfSBlbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gOCkgewogCQlyZWcgPSBHRU44X0dUX0lFUigyKTsKIAl9IGVsc2Ugewog CQlyZWcgPSBHRU42X1BNSUVSOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYwppbmRleCA5 NDg0OTU2NzE0M2QuLjA4NGVhNjVkNTljMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0 LmMKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogCQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLAogCQkJCSAgIEdFTjhf TDNfTFJBXzFfR1BHUFUsCiAJCQkJICAgR0VOOV9MM19MUkFfMV9HUEdQVV9ERUZBVUxUX1ZBTFVF X0JYVCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDkgJiYgSU5URUxfR0VOKGk5MTUp IDw9IDExKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ICYmIEdSQVBISUNTX1ZF UihpOTE1KSA8PSAxMSkKIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBHRU44 X0wzX0xSQV8xX0dQR1BVLAogCQkJCSAgIEdFTjlfTDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxV RV9TS0wpOwpAQCAtMzczLDEzICszNzMsMTMgQEAgdm9pZCBndHRfd3JpdGVfd29ya2Fyb3VuZHMo c3RydWN0IGludGVsX2d0ICpndCkKIAkgKiBkcml2ZXIuCiAJICovCiAJaWYgKEhBU19QQUdFX1NJ WkVTKGk5MTUsIEk5MTVfR1RUX1BBR0VfU0laRV82NEspICYmCi0JICAgIElOVEVMX0dFTihpOTE1 KSA8PSAxMCkKKwkgICAgR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDEwKQogCQlpbnRlbF91bmNvcmVf cm13KHVuY29yZSwKIAkJCQkgR0VOOF9HQU1XX0VDT19ERVZfUldfSUEsCiAJCQkJIDAsCiAJCQkJ IEdBTVdfRUNPX0VOQUJMRV82NEtfSVBTX0ZJRUxEKTsKIAotCWlmIChJU19HRU5fUkFOR0UoaTkx NSwgOCwgMTEpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA4LCAxMSkpIHsKIAkJYm9v bCBjYW5fdXNlX2d0dF9jYWNoZSA9IHRydWU7CiAKIAkJLyoKQEAgLTQ2MSw3ICs0NjEsNyBAQCBz dGF0aWMgdm9pZCBiZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSkKIAkgICAgICBHRU44X1BQQVQoNywgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0xMQ0VM TEMgfCBHRU44X1BQQVRfQUdFKDMpKTsKIAogCS8qIGZvciBzY2Fub3V0IHdpdGggZUxMQyAqLwot CWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkp CiAJCXBhdCB8PSBHRU44X1BQQVQoMiwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0VMTENfT1ZF UlJJREUpOwogCWVsc2UKIAkJcGF0IHw9IEdFTjhfUFBBVCgyLCBHRU44X1BQQVRfV1QgfCBHRU44 X1BQQVRfTExDRUxMQyk7CkBAIC01MTAsMTEgKzUxMCwxMSBAQCB2b2lkIHNldHVwX3ByaXZhdGVf cGF0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHVuY29yZS0+aTkxNTsKIAotCUdFTV9CVUdfT04oSU5URUxfR0VOKGk5MTUp IDwgOCk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkgPCA4KTsKIAotCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gMTIpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikKIAkJdGds X3NldHVwX3ByaXZhdGVfcHBhdCh1bmNvcmUpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+ PSAxMCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTApCiAJCWNubF9zZXR1cF9w cml2YXRlX3BwYXQodW5jb3JlKTsKIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGk5MTUpIHx8IElT X0dFTjlfTFAoaTkxNSkpCiAJCWNodl9zZXR1cF9wcml2YXRlX3BwYXQodW5jb3JlKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmMKaW5kZXggMDc1ZDc0MTY0NGFlLi5lYjFhMTVkZWVkMjIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRp YyBib29sIGdldF9pYV9jb25zdGFudHMoc3RydWN0IGludGVsX2xsYyAqbGxjLAogCiAJY29uc3Rz LT5taW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxOwogCWNvbnN0cy0+bWF4X2dwdV9mcmVxID0g cnBzLT5tYXhfZnJlcTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDkpIHsKIAkJLyogQ29udmVydCBHVCBmcmVxdWVuY3kgdG8gNTAgSFog dW5pdHMgKi8KIAkJY29uc3RzLT5taW5fZ3B1X2ZyZXEgLz0gR0VOOV9GUkVRX1NDQUxFUjsKIAkJ Y29uc3RzLT5tYXhfZ3B1X2ZyZXEgLz0gR0VOOV9GUkVRX1NDQUxFUjsKQEAgLTgzLDEzICs4Mywx MyBAQCBzdGF0aWMgdm9pZCBjYWxjX2lhX2ZyZXEoc3RydWN0IGludGVsX2xsYyAqbGxjLAogCWNv bnN0IGludCBkaWZmID0gY29uc3RzLT5tYXhfZ3B1X2ZyZXEgLSBncHVfZnJlcTsKIAl1bnNpZ25l ZCBpbnQgaWFfZnJlcSA9IDAsIHJpbmdfZnJlcSA9IDA7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJLyoKIAkJICogcmlu Z19mcmVxID0gMiAqIEdULiByaW5nX2ZyZXEgaXMgaW4gMTAwTUh6IHVuaXRzCiAJCSAqIE5vIGZs b29yIHJlcXVpcmVkIGZvciByaW5nIGZyZXF1ZW5jeSBvbiBTS0wuCiAJCSAqLwogCQlyaW5nX2Zy ZXEgPSBncHVfZnJlcTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7CisJfSBl bHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQkvKiBtYXgoMiAqIEdULCBERFIp LiBOQjogR1QgaXMgNTBNSHogdW5pdHMgKi8KIAkJcmluZ19mcmVxID0gbWF4KGNvbnN0cy0+bWlu X3JpbmdfZnJlcSwgZ3B1X2ZyZXEpOwogCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChpOTE1KSkgewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwppbmRleCBhYWZlMmE0ZGY0OTYuLmEyN2JhYzBh NGJmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKQEAgLTQ3LDcgKzQ3LDcgQEAg c3RhdGljIHZvaWQgc2V0X29mZnNldHModTMyICpyZWdzLAogCQkqcmVncyA9IE1JX0xPQURfUkVH SVNURVJfSU1NKGNvdW50KTsKIAkJaWYgKGZsYWdzICYgUE9TVEVEKQogCQkJKnJlZ3MgfD0gTUlf TFJJX0ZPUkNFX1BPU1RFRDsKLQkJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDExKQor CQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCQkqcmVncyB8PSBNSV9M UklfTFJNX0NTX01NSU87CiAJCXJlZ3MrKzsKIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgdm9p ZCBzZXRfb2Zmc2V0cyh1MzIgKnJlZ3MsCiAJaWYgKGNsb3NlKSB7CiAJCS8qIENsb3NlIHRoZSBi YXRjaDsgdXNlZCBtYWlubHkgYnkgbGl2ZV9scmNfbGF5b3V0KCkgKi8KIAkJKnJlZ3MgPSBNSV9C QVRDSF9CVUZGRVJfRU5EOwotCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTApCisJ CWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMCkKIAkJCSpyZWdzIHw9IEJJVCgw KTsKIAl9CiB9CkBAIC00OTgsMjIgKzQ5OCwyMiBAQCBzdGF0aWMgY29uc3QgdTggKnJlZ19vZmZz ZXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBhZGRyZXNzaW5n IHRvIGF1dG9tYXRpYyBmaXh1cCB0aGUgcmVnaXN0ZXIgc3RhdGUgYmV0d2VlbiB0aGUKIAkgKiBw aHlzaWNhbCBlbmdpbmVzIGZvciB2aXJ0dWFsIGVuZ2luZS4KIAkgKi8KLQlHRU1fQlVHX09OKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyICYmCisJR0VNX0JVR19PTihHUkFQSElDU19WRVIo ZW5naW5lLT5pOTE1KSA+PSAxMiAmJgogCQkgICAhaW50ZWxfZW5naW5lX2hhc19yZWxhdGl2ZV9t bWlvKGVuZ2luZSkpOwogCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKSB7Ci0J CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwkJaWYgKEdSQVBISUNTX1ZFUihl bmdpbmUtPmk5MTUpID49IDEyKQogCQkJcmV0dXJuIGdlbjEyX3Jjc19vZmZzZXRzOwotCQllbHNl IGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkKKwkJZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCQlyZXR1cm4gZ2VuMTFfcmNzX29mZnNldHM7Ci0J CWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDkpCisJCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJCQlyZXR1cm4gZ2VuOV9yY3Nfb2Zmc2V0czsK IAkJZWxzZQogCQkJcmV0dXJuIGdlbjhfcmNzX29mZnNldHM7CiAJfSBlbHNlIHsKLQkJaWYgKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPj0gMTIpCiAJCQlyZXR1cm4gZ2VuMTJfeGNzX29mZnNldHM7Ci0JCWVsc2UgaWYgKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDkpCisJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdp bmUtPmk5MTUpID49IDkpCiAJCQlyZXR1cm4gZ2VuOV94Y3Nfb2Zmc2V0czsKIAkJZWxzZQogCQkJ cmV0dXJuIGdlbjhfeGNzX29mZnNldHM7CkBAIC01MjIsOSArNTIyLDkgQEAgc3RhdGljIGNvbnN0 IHU4ICpyZWdfb2Zmc2V0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAK IHN0YXRpYyBpbnQgbHJjX3JpbmdfbWlfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQorCWlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJcmV0dXJuIDB4NjA7Ci0JZWxzZSBp ZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIo ZW5naW5lLT5pOTE1KSA+PSA5KQogCQlyZXR1cm4gMHg1NDsKIAllbHNlIGlmIChlbmdpbmUtPmNs YXNzID09IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuIDB4NTg7CkBAIC01MzQsOSArNTM0LDkgQEAg c3RhdGljIGludCBscmNfcmluZ19taV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAogc3RhdGljIGludCBscmNfcmluZ19ncHIwKGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIp CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQogCQlyZXR1cm4gMHg3NDsK LQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5KQorCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJCXJldHVybiAweDY4OwogCWVsc2UgaWYgKGVu Z2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm4gMHhkODsKQEAgLTU0Niw5ICs1 NDYsOSBAQCBzdGF0aWMgaW50IGxyY19yaW5nX2dwcjAoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgaW50IGxyY19yaW5nX3dhX2JiX3Blcl9jdHgoY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlmIChJTlRFTF9HRU4oZW5naW5l LT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCiAJ CXJldHVybiAweDEyOwotCWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDkgfHwg ZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPj0gOSB8fCBlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKIAkJcmV0 dXJuIDB4MTg7CiAJZWxzZQogCQlyZXR1cm4gLTE7CkBAIC01ODEsOSArNTgxLDkgQEAgc3RhdGlj IGludCBscmNfcmluZ19jbWRfYnVmX2NjdGwoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuIC0x OwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQorCWlmIChHUkFQSElDU19W RVIoZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJcmV0dXJuIDB4YjY7Ci0JZWxzZSBpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPj0gMTEpCiAJCXJldHVybiAweGFhOwogCWVsc2UKIAkJcmV0dXJuIC0xOwpAQCAtNTky LDkgKzU5Miw5IEBAIHN0YXRpYyBpbnQgbHJjX3JpbmdfY21kX2J1Zl9jY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyB1MzIKIGxyY19yaW5nX2luZGlyZWN0 X29mZnNldF9kZWZhdWx0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK LQlzd2l0Y2ggKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19W RVIoZW5naW5lLT5pOTE1KSkgewogCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSk7CiAJCWZhbGx0aHJvdWdoOwogCWNhc2UgMTI6CiAJCXJldHVybiBHRU4xMl9DVFhfUkNTX0lO RElSRUNUX0NUWF9PRkZTRVRfREVGQVVMVDsKQEAgLTYzNyw3ICs2MzcsNyBAQCBzdGF0aWMgdm9p ZCBpbml0X2NvbW1vbl9yZWdzKHUzMiAqIGNvbnN0IHJlZ3MsCiAJY3RsIHw9IF9NQVNLRURfQklU X0RJU0FCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQpOwogCWlmIChpbmhp Yml0KQogCQljdGwgfD0gQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQ7Ci0JaWYg KElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgMTEpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUt Pmk5MTUpIDwgMTEpCiAJCWN0bCB8PSBfTUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VOR0lO RV9DVFhfU0FWRV9JTkhJQklUIHwKIAkJCQkJICAgQ1RYX0NUUkxfUlNfQ1RYX0VOQUJMRSk7CiAJ cmVnc1tDVFhfQ09OVEVYVF9DT05UUk9MXSA9IGN0bDsKQEAgLTgwNSw3ICs4MDUsNyBAQCBfX2xy Y19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VN KSkKIAkJY29udGV4dF9zaXplICs9IEk5MTVfR1RUX1BBR0VfU0laRTsgLyogZm9yIHJlZHpvbmUg Ki8KIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAxMikgeworCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA9PSAxMikgewogCQljZS0+d2FfYmJfcGFnZSA9IGNvbnRleHRf c2l6ZSAvIFBBR0VfU0laRTsKIAkJY29udGV4dF9zaXplICs9IFBBR0VfU0laRTsKIAl9CkBAIC0x MTE0LDcgKzExMTQsNyBAQCBzdGF0aWMgdTMyIGxyY19kZXNjcmlwdG9yKGNvbnN0IHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKIAlkZXNjIDw8PSBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJ RlQ7CiAKIAlkZXNjIHw9IEdFTjhfQ1RYX1ZBTElEIHwgR0VOOF9DVFhfUFJJVklMRUdFOwotCWlm IChJU19HRU4oY2UtPnZtLT5pOTE1LCA4KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGNlLT52bS0+aTkx NSkgPT0gOCkKIAkJZGVzYyB8PSBHRU44X0NUWF9MM0xMQ19DT0hFUkVOVDsKIAogCXJldHVybiBp OTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgfCBkZXNjOwpAQCAtMTQ2OSw3ICsxNDY5LDcgQEAg dm9pZCBscmNfaW5pdF93YV9jdHgoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlm IChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuOwogCi0Jc3dpdGNoIChJ TlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgeworCXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkpIHsKIAljYXNlIDEyOgogCWNhc2UgMTE6CiAJCXJldHVybjsKQEAgLTE0ODYsNyArMTQ4 Niw3IEBAIHZvaWQgbHJjX2luaXRfd2FfY3R4KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkJd2FfYmJfZm5bMV0gPSBOVUxMOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlNSVNTSU5H X0NBU0UoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpOworCQlNSVNTSU5HX0NBU0UoR1JBUEhJQ1Nf VkVSKGVuZ2luZS0+aTkxNSkpOwogCQlyZXR1cm47CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9tb2NzLmMKaW5kZXggYjE0MTM4ZmQ1MDVjLi4xNzg0ODgwN2YxMTEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgZ2V0X21vY3Nfc2V0dGluZ3MoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJCXRhYmxlLT5zaXplID0gQVJSQVlfU0laRShkZzFfbW9jc190YWJsZSk7CiAJCXRh YmxlLT50YWJsZSA9IGRnMV9tb2NzX3RhYmxlOwogCQl0YWJsZS0+bl9lbnRyaWVzID0gR0VOOV9O VU1fTU9DU19FTlRSSUVTOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKSB7CisJ fSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIpIHsKIAkJdGFibGUtPnNpemUgID0g QVJSQVlfU0laRSh0Z2xfbW9jc190YWJsZSk7CiAJCXRhYmxlLT50YWJsZSA9IHRnbF9tb2NzX3Rh YmxlOwogCQl0YWJsZS0+bl9lbnRyaWVzID0gR0VOOV9OVU1fTU9DU19FTlRSSUVTOwotCX0gZWxz ZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDExKSB7CiAJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUoaWNsX21vY3NfdGFibGUpOwog CQl0YWJsZS0+dGFibGUgPSBpY2xfbW9jc190YWJsZTsKIAkJdGFibGUtPm5fZW50cmllcyA9IEdF TjlfTlVNX01PQ1NfRU5UUklFUzsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgdW5zaWduZWQg aW50IGdldF9tb2NzX3NldHRpbmdzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogCQl0YWJsZS0+bl9lbnRyaWVzID0gR0VOOV9OVU1fTU9DU19FTlRSSUVTOwogCQl0YWJsZS0+ dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7CiAJfSBlbHNlIHsKLQkJZHJtX1dBUk5fT05DRSgm aTkxNS0+ZHJtLCBJTlRFTF9HRU4oaTkxNSkgPj0gOSwKKwkJZHJtX1dBUk5fT05DRSgmaTkxNS0+ ZHJtLCBHUkFQSElDU19WRVIoaTkxNSkgPj0gOSwKIAkJCSAgICAgICJQbGF0Zm9ybSB0aGF0IHNo b3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzIG5vdC5cbiIpOwogCQlyZXR1cm4gMDsKIAl9CkBA IC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfbW9jc19zZXR0aW5ncyhj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJcmV0dXJuIDA7CiAKIAkvKiBX YURpc2FibGVTa2lwQ2FjaGluZzpza2wsYnh0LGtibCxnbGsgKi8KLQlpZiAoSVNfR0VOKGk5MTUs IDkpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KSB7CiAJCWludCBpOwogCiAJCWZv ciAoaSA9IDA7IGkgPCB0YWJsZS0+c2l6ZTsgaSsrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcHBndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3BwZ3R0LmMKaW5kZXggYWVlM2E4OTI5MjQ1Li44ODYwNjBmN2U2ZmMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfcHBndHQuYwpAQCAtMTQ2LDkgKzE0Niw5IEBAIGludCBpOTE1X3BwZ3R0 X2luaXRfaHcoc3RydWN0IGludGVsX2d0ICpndCkKIAogCWd0dF93cml0ZV93b3JrYXJvdW5kcyhn dCk7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDYpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0g NikKIAkJZ2VuNl9wcGd0dF9lbmFibGUoZ3QpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCA3KSkK KwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNykKIAkJZ2VuN19wcGd0dF9lbmFibGUo Z3QpOwogCiAJcmV0dXJuIDA7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGk5MTVfcHBndHRfaW5p dF9odyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogc3RhdGljIHN0cnVjdCBpOTE1X3BwZ3R0ICoKIF9f cHBndHRfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7Ci0JaWYgKElOVEVMX0dFTihndC0+ aTkxNSkgPCA4KQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOCkKIAkJcmV0dXJuIGdl bjZfcHBndHRfY3JlYXRlKGd0KTsKIAllbHNlCiAJCXJldHVybiBnZW44X3BwZ3R0X2NyZWF0ZShn dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5jCmluZGV4IDNiN2U2MmRlYmU3ZS4uMjU5 ZDdlYjRlMTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYwpAQCAtMTA5LDcgKzEw OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjExX3JjNl9lbmFibGUoc3RydWN0IGludGVsX3JjNiAqcmM2 KQogCQlHRU45X01FRElBX1BHX0VOQUJMRSB8CiAJCUdFTjExX01FRElBX1NBTVBMRVJfUEdfRU5B QkxFOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gMTIpIHsKKwlpZiAoR1JBUEhJQ1Nf VkVSKGd0LT5pOTE1KSA+PSAxMikgewogCQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfVkNTOyBp KyspCiAJCQlpZiAoSEFTX0VOR0lORShndCwgX1ZDUyhpKSkpCiAJCQkJcGdfZW5hYmxlIHw9IChW RE5fSENQX1BPV0VSR0FURV9FTkFCTEUoaSkgfApAQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyB2 b2lkIGdlbjlfcmM2X2VuYWJsZShzdHJ1Y3QgaW50ZWxfcmM2ICpyYzYpCiAJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7CiAKIAkvKiAyYjogUHJvZ3JhbSBSQzYgdGhyZXNob2xkcy4qLwotCWlmIChJ TlRFTF9HRU4ocmM2X3RvX2k5MTUocmM2KSkgPj0gMTApIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKHJj Nl90b19pOTE1KHJjNikpID49IDEwKSB7CiAJCXNldCh1bmNvcmUsIEdFTjZfUkM2X1dBS0VfUkFU RV9MSU1JVCwgNTQgPDwgMTYgfCA4NSk7CiAJCXNldCh1bmNvcmUsIEdFTjEwX01FRElBX1dBS0Vf UkFURV9MSU1JVCwgMTUwKTsKIAl9IGVsc2UgaWYgKElTX1NLWUxBS0UocmM2X3RvX2k5MTUocmM2 KSkpIHsKQEAgLTI0OSw5ICsyNDksOSBAQCBzdGF0aWMgdm9pZCBnZW42X3JjNl9lbmFibGUoc3Ry dWN0IGludGVsX3JjNiAqcmM2KQogCXJjNnZpZHMgPSAwOwogCXJldCA9IHNhbmR5YnJpZGdlX3Bj b2RlX3JlYWQoaTkxNSwgR0VONl9QQ09ERV9SRUFEX1JDNlZJRFMsCiAJCQkJICAgICAmcmM2dmlk cywgTlVMTCk7Ci0JaWYgKElTX0dFTihpOTE1LCA2KSAmJiByZXQpIHsKKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID09IDYgJiYgcmV0KSB7CiAJCWRybV9kYmcoJmk5MTUtPmRybSwgIkNvdWxkbid0 IGNoZWNrIGZvciBCSU9TIHdvcmthcm91bmRcbiIpOwotCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUs IDYpICYmCisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNiAmJgogCQkgICAoR0VO Nl9ERUNPREVfUkM2X1ZJRChyYzZ2aWRzICYgMHhmZikgPCA0NTApKSB7CiAJCWRybV9kYmcoJmk5 MTUtPmRybSwKIAkJCSJZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIEJJT1MuIENvcnJlY3RpbmcgbWlu aW11bSByYzYgdm9sdGFnZSAoJWRtVi0+JWRtVilcbiIsCkBAIC01MTUsNyArNTE1LDcgQEAgc3Rh dGljIHZvaWQgX19pbnRlbF9yYzZfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfcmM2ICpyYzYpCiAJc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gcmM2X3RvX3VuY29yZShyYzYpOwogCiAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKLQlpZiAoSU5URUxf R0VOKGk5MTUpID49IDkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQlzZXQodW5j b3JlLCBHRU45X1BHX0VOQUJMRSwgMCk7CiAJc2V0KHVuY29yZSwgR0VONl9SQ19DT05UUk9MLCAw KTsKIAlzZXQodW5jb3JlLCBHRU42X1JDX1NUQVRFLCAwKTsKQEAgLTU3NSwxMyArNTc1LDEzIEBA IHZvaWQgaW50ZWxfcmM2X2VuYWJsZShzdHJ1Y3QgaW50ZWxfcmM2ICpyYzYpCiAJCWNodl9yYzZf ZW5hYmxlKHJjNik7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJdmx2X3JjNl9l bmFibGUocmM2KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpCisJZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKQogCQlnZW4xMV9yYzZfZW5hYmxlKHJjNik7Ci0JZWxz ZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDkpCiAJCWdlbjlfcmM2X2VuYWJsZShyYzYpOwogCWVsc2UgaWYgKElTX0JST0FEV0VMTChp OTE1KSkKIAkJZ2VuOF9yYzZfZW5hYmxlKHJjNik7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfcmM2X2Vu YWJsZShyYzYpOwogCiAJcmM2LT5tYW51YWwgPSByYzYtPmN0bF9lbmFibGUgJiBHRU42X1JDX0NU TF9SQzZfRU5BQkxFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf cmVuZGVyc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRl LmMKaW5kZXggYjAzZTE5N2IxZDk5Li5iNTc1Y2Q2ZTBiN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUuYwpAQCAtMTUsNyArMTUsNyBAQCByZW5kZXJfc3Rh dGVfZ2V0X3JvZGF0YShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYg KGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm4gTlVMTDsKIAotCXN3aXRj aCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdp bmUtPmk5MTUpKSB7CiAJY2FzZSA2OgogCQlyZXR1cm4gJmdlbjZfbnVsbF9zdGF0ZTsKIAljYXNl IDc6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwppbmRleCA4MDkxODQ2ZDk1NWIu LjcyMjUxNjM4ZDRlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf cmVzZXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCkBAIC00 MjEsNyArNDIxLDcgQEAgc3RhdGljIGludCBnZW4xMV9sb2NrX3NmYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnBhaXJlZF92ZWNzOwog CiAJCWlmIChlbmdpbmUtPmNsYXNzICE9IFZJREVPX0RFQ09ERV9DTEFTUyB8fAotCQkgICAgIUlT X0dFTihlbmdpbmUtPmk5MTUsIDEyKSkKKwkJICAgIEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp ICE9IDEyKQogCQkJcmV0dXJuIDA7CiAKIAkJLyoKQEAgLTYzMyw3ICs2MzMsNyBAQCBzdGF0aWMg aW50IGdlbjhfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkgKi8KIAl9CiAK LQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5p OTE1KSA+PSAxMSkKIAkJcmV0ID0gZ2VuMTFfcmVzZXRfZW5naW5lcyhndCwgZW5naW5lX21hc2ss IHJldHJ5KTsKIAllbHNlCiAJCXJldCA9IGdlbjZfcmVzZXRfZW5naW5lcyhndCwgZW5naW5lX21h c2ssIHJldHJ5KTsKQEAgLTY2MiwxNyArNjYyLDE3IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVs X2dldF9ncHVfcmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCkKIAogCWlmIChpc19tb2Nr X2d0KGd0KSkKIAkJcmV0dXJuIG1vY2tfcmVzZXQ7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDgpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpCiAJCXJldHVybiBnZW44 X3Jlc2V0X2VuZ2luZXM7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCXJldHVybiBnZW42X3Jlc2V0X2VuZ2luZXM7 Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDUpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDUpCiAJCXJldHVybiBpbGtfZG9fcmVzZXQ7CiAJZWxzZSBpZiAoSVNfRzRYKGk5 MTUpKQogCQlyZXR1cm4gZzR4X2RvX3Jlc2V0OwogCWVsc2UgaWYgKElTX0czMyhpOTE1KSB8fCBJ U19QSU5FVklFVyhpOTE1KSkKIAkJcmV0dXJuIGczM19kb19yZXNldDsKLQllbHNlIGlmIChJTlRF TF9HRU4oaTkxNSkgPj0gMykKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMykKIAkJ cmV0dXJuIGk5MTVfZG9fcmVzZXQ7CiAJZWxzZQogCQlyZXR1cm4gTlVMTDsKQEAgLTcyNCw3ICs3 MjQsNyBAQCBib29sIGludGVsX2hhc19yZXNldF9lbmdpbmUoY29uc3Qgc3RydWN0IGludGVsX2d0 ICpndCkKIGludCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndCkKIHsKIAl1MzIg Z3VjX2RvbWFpbiA9Ci0JCUlOVEVMX0dFTihndC0+aTkxNSkgPj0gMTEgPyBHRU4xMV9HUkRPTV9H VUMgOiBHRU45X0dSRE9NX0dVQzsKKwkJR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMSA/IEdF TjExX0dSRE9NX0dVQyA6IEdFTjlfR1JET01fR1VDOwogCWludCByZXQ7CiAKIAlHRU1fQlVHX09O KCFIQVNfR1RfVUMoZ3QtPmk5MTUpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmluZ19zdWJtaXNzaW9uLmMKaW5kZXggMmI2ZGZmY2MyMjYyLi4wYzQyM2YwOTZlMmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jCkBA IC0yOSw3ICsyOSw3IEBAIHN0YXRpYyB2b2lkIHNldF9od3N0YW0oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCB1MzIgbWFzaykKIAkgKiBsb3N0IGludGVycnVwdHMgZm9sbG93aW5nIGEg cmVzZXQuCiAJICovCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKSB7Ci0JCWlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA2KQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2lu ZS0+aTkxNSkgPj0gNikKIAkJCW1hc2sgJj0gfkJJVCgwKTsKIAkJZWxzZQogCQkJbWFzayAmPSB+ STkxNV9VU0VSX0lOVEVSUlVQVDsKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3 c19wZ2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBwaHlzX2FkZHJfdCBwaHlzKQog CXUzMiBhZGRyOwogCiAJYWRkciA9IGxvd2VyXzMyX2JpdHMocGh5cyk7Ci0JaWYgKElOVEVMX0dF TihlbmdpbmUtPmk5MTUpID49IDQpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49 IDQpCiAJCWFkZHIgfD0gKHBoeXMgPj4gMjgpICYgMHhmMDsKIAogCWludGVsX3VuY29yZV93cml0 ZShlbmdpbmUtPnVuY29yZSwgSFdTX1BHQSwgYWRkcik7CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRp YyB2b2lkIHNldF9od3NwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIG9mZnNl dCkKIAkgKiBUaGUgcmluZyBzdGF0dXMgcGFnZSBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBuZXh0 IHRvIHRoZSByZXN0IG9mCiAJICogdGhlIHJpbmcgcmVnaXN0ZXJzIGFzIG9mIGdlbjcuCiAJICov Ci0JaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDcpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdp bmUtPmk5MTUpID09IDcpIHsKIAkJc3dpdGNoIChlbmdpbmUtPmlkKSB7CiAJCS8qCiAJCSAqIE5v IG1vcmUgcmluZ3MgZXhpc3Qgb24gR2VuNy4gRGVmYXVsdCBjYXNlIGlzIG9ubHkgdG8gc2h1dCB1 cApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRfaHdzcChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHUzMiBvZmZzZXQpCiAJCQlod3NwID0gVkVCT1hfSFdTX1BHQV9HRU43 OwogCQkJYnJlYWs7CiAJCX0KLQl9IGVsc2UgaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDYpKSB7 CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA9PSA2KSB7CiAJCWh3c3Ag PSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFzZSk7CiAJfSBlbHNlIHsKIAkJaHdz cCA9IFJJTkdfSFdTX1BHQShlbmdpbmUtPm1taW9fYmFzZSk7CkBAIC0xMDUsNyArMTA1LDcgQEAg c3RhdGljIHZvaWQgc2V0X2h3c3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIg b2Zmc2V0KQogCiBzdGF0aWMgdm9pZCBmbHVzaF9jc190bGIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewotCWlmICghSVNfR0VOX1JBTkdFKGVuZ2luZS0+aTkxNSwgNiwgNykpCisJ aWYgKCFJU19HUkFQSElDU19WRVIoZW5naW5lLT5pOTE1LCA2LCA3KSkKIAkJcmV0dXJuOwogCiAJ LyogcmluZyBzaG91bGQgYmUgaWRsZSBiZWZvcmUgaXNzdWluZyBhIHN5bmMgZmx1c2gqLwpAQCAt MTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIHNldF9wcF9kaXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCUVOR0lORV9XUklURV9GVyhlbmdpbmUsIFJJTkdfUFBfRElSX0RDTFYs IFBQX0RJUl9EQ0xWXzJHKTsKIAlFTkdJTkVfV1JJVEVfRlcoZW5naW5lLCBSSU5HX1BQX0RJUl9C QVNFLCBwcF9kaXIodm0pKTsKIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA3KSB7 CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDcpIHsKIAkJRU5HSU5FX1dSSVRF X0ZXKGVuZ2luZSwKIAkJCQlSSU5HX01PREVfR0VONywKIAkJCQlfTUFTS0VEX0JJVF9FTkFCTEUo R0ZYX1BQR1RUX0VOQUJMRSkpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBpbnQgeGNzX3Jl c3VtZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQkJCSA1MDAwLCAwLCBOVUxM KSkKIAkJZ290byBlcnI7CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPiAyKQorCWlm IChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+IDIpCiAJCUVOR0lORV9XUklURV9GVyhlbmdp bmUsCiAJCQkJUklOR19NSV9NT0RFLCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1BfUklORykpOwog CkBAIC02NDYsOSArNjQ2LDkgQEAgc3RhdGljIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKIAl1MzIgKmNzOwogCiAJbGVuID0gNDsKLQlpZiAoSVNfR0VOKGk5MTUs IDcpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNykKIAkJbGVuICs9IDIgKyAobnVtX2Vu Z2luZXMgPyA0ICogbnVtX2VuZ2luZXMgKyA2IDogMCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUs IDUpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA1KQogCQlsZW4gKz0gMjsKIAlp ZiAoZmxhZ3MgJiBNSV9GT1JDRV9SRVNUT1JFKSB7CiAJCUdFTV9CVUdfT04oZmxhZ3MgJiBNSV9S RVNUT1JFX0lOSElCSVQpOwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBpbnQgbWlfc2V0X2Nv bnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAog CS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRleHQ6aXZiLHZsdixoc3csYmR3 LGNodiAqLwotCWlmIChJU19HRU4oaTkxNSwgNykpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDcpIHsKIAkJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEU7CiAJCWlm IChudW1fZW5naW5lcykgewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwpA QCAtNjc4LDcgKzY3OCw3IEBAIHN0YXRpYyBpbnQgbWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCiAJCQkJCQlHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpOwogCQkJfQog CQl9Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgNSkpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA9PSA1KSB7CiAJCS8qCiAJCSAqIFRoaXMgdy9hIGlzIG9ubHkgbGlzdGVkIGZv ciBwcmUtcHJvZHVjdGlvbiBpbGsgYS9iIHN0ZXBwaW5ncywKIAkJICogYnV0IGlzIGFsc28gbWVu dGlvbmVkIGZvciBwcm9ncmFtbWluZyB0aGUgcG93ZXJjdHguIFRvIGJlCkBAIC03MTYsNyArNzE2 LDcgQEAgc3RhdGljIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwK IAkgKi8KIAkqY3MrKyA9IE1JX05PT1A7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDcpKSB7CisJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA9PSA3KSB7CiAJCWlmIChudW1fZW5naW5lcykgewogCQkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCQkJaTkxNV9yZWdfdCBsYXN0X3JlZyA9 IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwpAQCAtNzQwLDcgKzc0MCw3IEBAIHN0YXRpYyBpbnQg bWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkqY3MrKyA9IE1JX05P T1A7CiAJCX0KIAkJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsKLQl9IGVs c2UgaWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDUpIHsKIAkJKmNzKysgPSBNSV9TVVNQRU5EX0ZMVVNIOwogCX0KIApAQCAtMTAwMSw3ICsx MDAxLDcgQEAgc3RhdGljIHZvaWQgcmluZ19yZWxlYXNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7CiAKLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgSU5URUxfR0VOKGRldl9wcml2 KSA+IDIgJiYKKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgR1JBUEhJQ1NfVkVSKGRldl9w cml2KSA+IDIgJiYKIAkJICAgIChFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfTUlfTU9ERSkgJiBN T0RFX0lETEUpID09IDApOwogCiAJaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKGVuZ2luZSk7 CkBAIC0xMDI5LDEzICsxMDI5LDEzIEBAIHN0YXRpYyB2b2lkIHNldHVwX2lycShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAlpbnRlbF9lbmdpbmVfc2V0X2lycV9oYW5kbGVyKGVu Z2luZSwgaXJxX2hhbmRsZXIpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjZf aXJxX2VuYWJsZTsKIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjZfaXJxX2Rpc2FibGU7Ci0J fSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDUpIHsKIAkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuNV9pcnFfZW5hYmxl OwogCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuNV9pcnFfZGlzYWJsZTsKLQl9IGVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA+PSAzKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkg Pj0gMykgewogCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW4zX2lycV9lbmFibGU7CiAJCWVuZ2lu ZS0+aXJxX2Rpc2FibGUgPSBnZW4zX2lycV9kaXNhYmxlOwogCX0gZWxzZSB7CkBAIC0xMDQ5LDcg KzEwNDksNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1 OwogCiAJLyogZ2VuOCsgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggZXhlY2xpc3RzICovCi0JR0VN X0JVR19PTihJTlRFTF9HRU4oaTkxNSkgPj0gOCk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIo aTkxNSkgPj0gOCk7CiAKIAlzZXR1cF9pcnEoZW5naW5lKTsKIApAQCAtMTA3MCwxNCArMTA3MCwx NCBAQCBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCSAqIGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIoKS4KIAkgKi8KIAllbmdpbmUt PmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuM19lbWl0X2JyZWFkY3J1bWI7Ci0JaWYgKElTX0dF TihpOTE1LCA1KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpCiAJCWVuZ2luZS0+ZW1p dF9maW5pX2JyZWFkY3J1bWIgPSBnZW41X2VtaXRfYnJlYWRjcnVtYjsKIAogCWVuZ2luZS0+c2V0 X2RlZmF1bHRfc3VibWlzc2lvbiA9IGk5eHhfc2V0X2RlZmF1bHRfc3VibWlzc2lvbjsKIAotCWlm IChJTlRFTF9HRU4oaTkxNSkgPj0gNikKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJ CWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGdlbjZfZW1pdF9iYl9zdGFydDsKLQllbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gNCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNCkK IAkJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuNF9lbWl0X2JiX3N0YXJ0OwogCWVsc2UgaWYg KElTX0k4MzAoaTkxNSkgfHwgSVNfSTg0NUcoaTkxNSkpCiAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFy dCA9IGk4MzBfZW1pdF9iYl9zdGFydDsKQEAgLTEwOTQsMTYgKzEwOTQsMTYgQEAgc3RhdGljIHZv aWQgc2V0dXBfcmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWVuZ2luZS0+ aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwogCi0JaWYgKElOVEVM X0dFTihpOTE1KSA+PSA3KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA3KSB7CiAJCWVu Z2luZS0+ZW1pdF9mbHVzaCA9IGdlbjdfZW1pdF9mbHVzaF9yY3M7CiAJCWVuZ2luZS0+ZW1pdF9m aW5pX2JyZWFkY3J1bWIgPSBnZW43X2VtaXRfYnJlYWRjcnVtYl9yY3M7Ci0JfSBlbHNlIGlmIChJ U19HRU4oaTkxNSwgNikpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2KSB7 CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfZW1pdF9mbHVzaF9yY3M7CiAJCWVuZ2luZS0+ ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW42X2VtaXRfYnJlYWRjcnVtYl9yY3M7Ci0JfSBlbHNl IGlmIChJU19HRU4oaTkxNSwgNSkpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9 PSA1KSB7CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRfZW1pdF9mbHVzaF9yY3M7CiAJfSBl bHNlIHsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCisJCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPCA0KQogCQkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMl9lbWl0X2ZsdXNoOwogCQllbHNl CiAJCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW40X2VtaXRfZmx1c2hfcmNzOwpAQCAtMTExOCwy MCArMTExOCwyMCBAQCBzdGF0aWMgdm9pZCBzZXR1cF92Y3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5p OTE1OwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA2KSB7CiAJCS8qIGdlbjYgYnNkIG5lZWRzIGEgc3BlY2lhbCB3YSBmb3IgdGFpbCB1 cGRhdGVzICovCi0JCWlmIChJU19HRU4oaTkxNSwgNikpCisJCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPT0gNikKIAkJCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9IGdlbjZfYnNkX3Nl dF9kZWZhdWx0X3N1Ym1pc3Npb247CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfZW1pdF9m bHVzaF92Y3M7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfQlNEX1VTRVJfSU5URVJS VVBUOwogCi0JCWlmIChJU19HRU4oaTkxNSwgNikpCisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkg PT0gNikKIAkJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW42X2VtaXRfYnJlYWRj cnVtYl94Y3M7CiAJCWVsc2UKIAkJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW43 X2VtaXRfYnJlYWRjcnVtYl94Y3M7CiAJfSBlbHNlIHsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0g Z2VuNF9lbWl0X2ZsdXNoX3ZjczsKLQkJaWYgKElTX0dFTihpOTE1LCA1KSkKKwkJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA9PSA1KQogCQkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBJTEtfQlNE X1VTRVJfSU5URVJSVVBUOwogCQllbHNlCiAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEk5 MTVfQlNEX1VTRVJfSU5URVJSVVBUOwpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAgc3RhdGljIHZvaWQg c2V0dXBfYmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmVtaXRf Zmx1c2ggPSBnZW42X2VtaXRfZmx1c2hfeGNzOwogCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0g R1RfQkxUX1VTRVJfSU5URVJSVVBUOwogCi0JaWYgKElTX0dFTihpOTE1LCA2KSkKKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID09IDYpCiAJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBn ZW42X2VtaXRfYnJlYWRjcnVtYl94Y3M7CiAJZWxzZQogCQllbmdpbmUtPmVtaXRfZmluaV9icmVh ZGNydW1iID0gZ2VuN19lbWl0X2JyZWFkY3J1bWJfeGNzOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAg c3RhdGljIHZvaWQgc2V0dXBfdmVjcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CiAKLQlHRU1f QlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDcpOworCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGk5 MTUpIDwgNyk7CiAKIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X2VtaXRfZmx1c2hfeGNzOwog CWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gUE1fVkVCT1hfVVNFUl9JTlRFUlJVUFQ7CkBAIC0x MjAzLDcgKzEyMDMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpnZW43X2N0eF92bWEoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWlu dCBzaXplLCBlcnI7CiAKLQlpZiAoIUlTX0dFTihlbmdpbmUtPmk5MTUsIDcpIHx8IGVuZ2luZS0+ Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSAh PSA3IHx8IGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm4gMDsKIAogCWVy ciA9IGdlbjdfY3R4X3N3aXRjaF9iYl9zZXR1cChlbmdpbmUsIE5VTEwgLyogcHJvYmUgc2l6ZSAq Lyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jCmluZGV4IDk3Y2FiMWI5OTg3MS4uMDZl OWE4ZWQ0ZTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMuYwpAQCAtMTk2LDcgKzE5 Niw3IEBAIHN0YXRpYyB2b2lkIHJwc19yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpbnRlbF9ycHMg KnJwcykKIAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gcnBzX3RvX2d0KHJwcyk7CiAKIAlzcGluX2xv Y2tfaXJxKCZndC0+aXJxX2xvY2spOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDExKQor CWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDExKQogCQlnZW4xMV9ycHNfcmVzZXRfaW50 ZXJydXB0cyhycHMpOwogCWVsc2UKIAkJZ2VuNl9ycHNfcmVzZXRfaW50ZXJydXB0cyhycHMpOwpA QCAtNjMwLDcgKzYzMCw3IEBAIHN0YXRpYyB1MzIgcnBzX2xpbWl0cyhzdHJ1Y3QgaW50ZWxfcnBz ICpycHMsIHU4IHZhbCkKIAkgKiBmcmVxdWVuY3ksIGlmIHRoZSBkb3duIHRocmVzaG9sZCBleHBp cmVzIGluIHRoYXQgd2luZG93IHdlIHdpbGwgbm90CiAJICogcmVjZWl2ZSBhIGRvd24gaW50ZXJy dXB0LgogCSAqLwotCWlmIChJTlRFTF9HRU4ocnBzX3RvX2k5MTUocnBzKSkgPj0gOSkgeworCWlm IChHUkFQSElDU19WRVIocnBzX3RvX2k5MTUocnBzKSkgPj0gOSkgewogCQlsaW1pdHMgPSBycHMt Pm1heF9mcmVxX3NvZnRsaW1pdCA8PCAyMzsKIAkJaWYgKHZhbCA8PSBycHMtPm1pbl9mcmVxX3Nv ZnRsaW1pdCkKIAkJCWxpbWl0cyB8PSBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCA8PCAxNDsKQEAg LTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgdm9pZCBycHNfc2V0X3Bvd2VyKHN0cnVjdCBpbnRlbF9y cHMgKnJwcywgaW50IG5ld19wb3dlcikKIAkgICAgaW50ZWxfZ3RfbnNfdG9fcG1faW50ZXJ2YWwo Z3QsIGVpX2Rvd24gKiB0aHJlc2hvbGRfZG93biAqIDEwKSk7CiAKIAlzZXQodW5jb3JlLCBHRU42 X1JQX0NPTlRST0wsCi0JICAgIChJTlRFTF9HRU4oZ3QtPmk5MTUpID4gOSA/IDAgOiBHRU42X1JQ X01FRElBX1RVUkJPKSB8CisJICAgIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID4gOSA/IDAgOiBH RU42X1JQX01FRElBX1RVUkJPKSB8CiAJICAgIEdFTjZfUlBfTUVESUFfSFdfTk9STUFMX01PREUg fAogCSAgICBHRU42X1JQX01FRElBX0lTX0dGWCB8CiAJICAgIEdFTjZfUlBfRU5BQkxFIHwKQEAg LTc3MSw3ICs3NzEsNyBAQCBzdGF0aWMgaW50IGdlbjZfcnBzX3NldChzdHJ1Y3QgaW50ZWxfcnBz ICpycHMsIHU4IHZhbCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHJwc190b19p OTE1KHJwcyk7CiAJdTMyIHN3cmVxOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCWlm IChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJc3dyZXEgPSBHRU45X0ZSRVFVRU5DWSh2YWwp OwogCWVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUpKQogCQlz d3JlcSA9IEhTV19GUkVRVUVOQ1kodmFsKTsKQEAgLTgxMiwxNCArODEyLDE0IEBAIHN0YXRpYyBp bnQgcnBzX3NldChzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIHU4IHZhbCwgYm9vbCB1cGRhdGUpCiAK IAlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19DSEVSUllWSUVXKGk5MTUpKQogCQllcnIg PSB2bHZfcnBzX3NldChycHMsIHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYp CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWVyciA9IGdlbjZfcnBzX3Nl dChycHMsIHZhbCk7CiAJZWxzZQogCQllcnIgPSBnZW41X3Jwc19zZXQocnBzLCB2YWwpOwogCWlm IChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAodXBkYXRlICYmIElOVEVMX0dFTihpOTE1KSA+ PSA2KQorCWlmICh1cGRhdGUgJiYgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfcnBz X3NldF90aHJlc2hvbGRzKHJwcywgdmFsKTsKIAlycHMtPmxhc3RfZnJlcSA9IHZhbDsKIApAQCAt ODUzLDcgKzg1Myw3IEBAIHZvaWQgaW50ZWxfcnBzX3VucGFyayhzdHJ1Y3QgaW50ZWxfcnBzICpy cHMpCiAJaWYgKGludGVsX3Jwc191c2VzX3RpbWVyKHJwcykpCiAJCXJwc19zdGFydF90aW1lcihy cHMpOwogCi0JaWYgKElTX0dFTihycHNfdG9faTkxNShycHMpLCA1KSkKKwlpZiAoR1JBUEhJQ1Nf VkVSKHJwc190b19pOTE1KHJwcykpID09IDUpCiAJCWdlbjVfcnBzX3VwZGF0ZShycHMpOwogfQog CkBAIC05OTksNyArOTk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaW5pdChzdHJ1Y3QgaW50 ZWxfcnBzICpycHMpCiAKIAlycHMtPmVmZmljaWVudF9mcmVxID0gcnBzLT5ycDFfZnJlcTsKIAlp ZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9BRFdFTEwoaTkxNSkgfHwKLQkgICAgSVNfR0VO OV9CQyhpOTE1KSB8fCBJTlRFTF9HRU4oaTkxNSkgPj0gMTApIHsKKwkgICAgSVNfR0VOOV9CQyhp OTE1KSB8fCBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTApIHsKIAkJdTMyIGRkY2Nfc3RhdHVzID0g MDsKIAogCQlpZiAoc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChpOTE1LApAQCAtMTAxMiw3ICsxMDEy LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJ CQkJCXJwcy0+bWF4X2ZyZXEpOwogCX0KIAotCWlmIChJU19HRU45X0JDKGk5MTUpIHx8IElOVEVM X0dFTihpOTE1KSA+PSAxMCkgeworCWlmIChJU19HRU45X0JDKGk5MTUpIHx8IEdSQVBISUNTX1ZF UihpOTE1KSA+PSAxMCkgewogCQkvKiBTdG9yZSB0aGUgZnJlcXVlbmN5IHZhbHVlcyBpbiAxNi42 NiBNSFogdW5pdHMsIHdoaWNoIGlzCiAJCSAqIHRoZSBuYXR1cmFsIGhhcmR3YXJlIHVuaXQgZm9y IFNLTAogCQkgKi8KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHN0YXRpYyBib29sIGdlbjlfcnBzX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gZ3QtPnVuY29yZTsKIAogCS8qIFByb2dyYW0gZGVmYXVsdHMgYW5kIHRocmVzaG9sZHMgZm9y IFJQUyAqLwotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDkpKQorCWlmIChHUkFQSElDU19WRVIoZ3Qt Pmk5MTUpID09IDkpCiAJCWludGVsX3VuY29yZV93cml0ZV9mdyh1bmNvcmUsIEdFTjZfUkNfVklE RU9fRlJFUSwKIAkJCQkgICAgICBHRU45X0ZSRVFVRU5DWShycHMtPnJwMV9mcmVxKSk7CiAKQEAg LTEzNjUsMTYgKzEzNjUsMTYgQEAgdm9pZCBpbnRlbF9ycHNfZW5hYmxlKHN0cnVjdCBpbnRlbF9y cHMgKnJwcykKIAkJZW5hYmxlZCA9IGNodl9ycHNfZW5hYmxlKHJwcyk7CiAJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhpOTE1KSkKIAkJZW5hYmxlZCA9IHZsdl9ycHNfZW5hYmxlKHJwcyk7Ci0JZWxz ZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDkpCiAJCWVuYWJsZWQgPSBnZW45X3Jwc19lbmFibGUocnBzKTsKLQllbHNlIGlmIChJTlRF TF9HRU4oaTkxNSkgPj0gOCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkKIAkJ ZW5hYmxlZCA9IGdlbjhfcnBzX2VuYWJsZShycHMpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA2KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQllbmFibGVkID0g Z2VuNl9ycHNfZW5hYmxlKHJwcyk7CiAJZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShpOTE1KSkKIAkJ ZW5hYmxlZCA9IGdlbjVfcnBzX2VuYWJsZShycHMpOwogCWVsc2UKLQkJTUlTU0lOR19DQVNFKElO VEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwogCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAJaWYgKCFl bmFibGVkKQogCQlyZXR1cm47CkBAIC0xMzkzLDcgKzEzOTMsNyBAQCB2b2lkIGludGVsX3Jwc19l bmFibGUoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCiAJaWYgKGhhc19idXN5X3N0YXRzKHJwcykp CiAJCWludGVsX3Jwc19zZXRfdGltZXIocnBzKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkg Pj0gNikKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKIAkJaW50ZWxfcnBzX3Nl dF9pbnRlcnJ1cHRzKHJwcyk7CiAJZWxzZQogCQkvKiBJcm9ubGFrZSBjdXJyZW50bHkgdXNlcyBp bnRlbF9pcHMua28gKi8ge30KQEAgLTE0MTQsNyArMTQxNCw3IEBAIHZvaWQgaW50ZWxfcnBzX2Rp c2FibGUoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCWludGVsX3Jwc19jbGVhcl9pbnRlcnJ1cHRz KHJwcyk7CiAJaW50ZWxfcnBzX2NsZWFyX3RpbWVyKHJwcyk7CiAKLQlpZiAoSU5URUxfR0VOKGk5 MTUpID49IDYpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlnZW42X3Jwc19kaXNh YmxlKHJwcyk7CiAJZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShpOTE1KSkKIAkJZ2VuNV9ycHNfZGlz YWJsZShycHMpOwpAQCAtMTQ1MywxNCArMTQ1MywxNCBAQCBpbnQgaW50ZWxfZ3B1X2ZyZXEoc3Ry dWN0IGludGVsX3JwcyAqcnBzLCBpbnQgdmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gcnBzX3RvX2k5MTUocnBzKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpCiAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VT VCh2YWwgKiBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUiwKIAkJCQkJIEdFTjlfRlJFUV9TQ0FMRVIp OwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoaTkxNSkpCiAJCXJldHVybiBjaHZfZ3B1X2ZyZXEo cnBzLCB2YWwpOwogCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkpCiAJCXJldHVybiBieXRf Z3B1X2ZyZXEocnBzLCB2YWwpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlyZXR1cm4gdmFsICogR1RfRlJFUVVF TkNZX01VTFRJUExJRVI7CiAJZWxzZQogCQlyZXR1cm4gdmFsOwpAQCAtMTQ3MCwxNCArMTQ3MCwx NCBAQCBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGludGVsX3JwcyAqcnBzLCBpbnQgdmFs KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcnBzX3RvX2k5MTUocnBzKTsK IAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDkpCiAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2YWwgKiBHRU45X0ZSRVFfU0NBTEVSLAog CQkJCQkgR1RfRlJFUVVFTkNZX01VTFRJUExJRVIpOwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVco aTkxNSkpCiAJCXJldHVybiBjaHZfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwogCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoaTkxNSkpCiAJCXJldHVybiBieXRfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwot CWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA2KQogCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmFsLCBHVF9GUkVRVUVOQ1lf TVVMVElQTElFUik7CiAJZWxzZQogCQlyZXR1cm4gdmFsOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAg dm9pZCBnZW42X3Jwc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIHUzMiBwbV9p aXIpCiAJCXNwaW5fdW5sb2NrKCZndC0+aXJxX2xvY2spOwogCX0KIAotCWlmIChJTlRFTF9HRU4o Z3QtPmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gOCkKIAkJcmV0 dXJuOwogCiAJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUKQpAQCAtMTgzMyw3 ICsxODMzLDcgQEAgdm9pZCBpbnRlbF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJ CWNodl9ycHNfaW5pdChycHMpOwogCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkpCiAJCXZs dl9ycHNfaW5pdChycHMpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlnZW42X3Jwc19pbml0KHJwcyk7CiAJZWxz ZSBpZiAoSVNfSVJPTkxBS0VfTShpOTE1KSkKIAkJZ2VuNV9ycHNfaW5pdChycHMpOwpAQCAtMTg0 Myw3ICsxODQzLDcgQEAgdm9pZCBpbnRlbF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpycHMp CiAJcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQgPSBycHMtPm1pbl9mcmVxOwogCiAJLyogQWZ0ZXIg c2V0dGluZyBtYXgtc29mdGxpbWl0LCBmaW5kIHRoZSBvdmVyY2xvY2sgbWF4IGZyZXEgKi8KLQlp ZiAoSVNfR0VOKGk5MTUsIDYpIHx8IElTX0lWWUJSSURHRShpOTE1KSB8fCBJU19IQVNXRUxMKGk5 MTUpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2IHx8IElTX0lWWUJSSURHRShpOTE1 KSB8fCBJU19IQVNXRUxMKGk5MTUpKSB7CiAJCXUzMiBwYXJhbXMgPSAwOwogCiAJCXNhbmR5YnJp ZGdlX3Bjb2RlX3JlYWQoaTkxNSwgR0VONl9SRUFEX09DX1BBUkFNUywKQEAgLTE4NzIsMTYgKzE4 NzIsMTYgQEAgdm9pZCBpbnRlbF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJICoK IAkgKiBUT0RPOiB2ZXJpZnkgaWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBWTFYsQ0hWLgog CSAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp IDw9IDcpCiAJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VONl9QTV9SUF9VUF9FSV9FWFBJUkVE OwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4ICYmIElOVEVMX0dFTihpOTE1KSA8IDExKQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCAmJiBHUkFQSElDU19WRVIoaTkxNSkgPCAxMSkK IAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RP X0dVQzsKIH0KIAogdm9pZCBpbnRlbF9ycHNfc2FuaXRpemUoc3RydWN0IGludGVsX3JwcyAqcnBz KQogewotCWlmIChJTlRFTF9HRU4ocnBzX3RvX2k5MTUocnBzKSkgPj0gNikKKwlpZiAoR1JBUEhJ Q1NfVkVSKHJwc190b19pOTE1KHJwcykpID49IDYpCiAJCXJwc19kaXNhYmxlX2ludGVycnVwdHMo cnBzKTsKIH0KIApAQCAtMTg5MiwxMSArMTg5MiwxMSBAQCB1MzIgaW50ZWxfcnBzX2dldF9jYWdm KHN0cnVjdCBpbnRlbF9ycHMgKnJwcywgdTMyIHJwc3RhdCkKIAogCWlmIChJU19WQUxMRVlWSUVX KGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCiAJCWNhZ2YgPSAocnBzdGF0ID4+IDgpICYg MHhmZjsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwllbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gOSkKIAkJY2FnZiA9IChycHN0YXQgJiBHRU45X0NBR0ZfTUFTSykgPj4g R0VOOV9DQUdGX1NISUZUOwogCWVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURX RUxMKGk5MTUpKQogCQljYWdmID0gKHJwc3RhdCAmIEhTV19DQUdGX01BU0spID4+IEhTV19DQUdG X1NISUZUOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA2KQogCQljYWdmID0gKHJwc3RhdCAmIEdFTjZfQ0FHRl9NQVNLKSA+ PiBHRU42X0NBR0ZfU0hJRlQ7CiAJZWxzZQogCQljYWdmID0gZ2VuNV9pbnZlcnRfZnJlcShycHMs IChycHN0YXQgJiBNRU1TVEFUX1BTVEFURV9NQVNLKSA+PgpAQCAtMTkxNSw3ICsxOTE1LDcgQEAg c3RhdGljIHUzMiByZWFkX2NhZ2Yoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCQl2bHZfcHVuaXRf Z2V0KGk5MTUpOwogCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoaTkxNSwgUFVOSVRfUkVHX0dQVV9G UkVRX1NUUyk7CiAJCXZsdl9wdW5pdF9wdXQoaTkxNSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpIHsKIAkJ ZnJlcSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9SUFNUQVQxKTsKIAl9IGVsc2Ug ewogCQlmcmVxID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBNRU1TVEFUX0lMSyk7CkBAIC0x OTY4LDcgKzE5NjgsNyBAQCB2b2lkIGludGVsX3Jwc19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGlu dGVsX3JwcyAqcnBzKQogCSAqIFdlIG9ubHkgcmVnaXN0ZXIgdGhlIGk5MTUgaXBzIHBhcnQgd2l0 aCBpbnRlbC1pcHMgb25jZSBldmVyeXRoaW5nIGlzCiAJICogc2V0IHVwLCB0byBhdm9pZCBpbnRl bC1pcHMgc25lYWtpbmcgaW4gYW5kIHJlYWRpbmcgYm9ndXMgdmFsdWVzLgogCSAqLwotCWlmIChJ U19HRU4oZ3QtPmk5MTUsIDUpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPT0gNSkg ewogCQlHRU1fQlVHX09OKGlwc19tY2hkZXYpOwogCQlyY3VfYXNzaWduX3BvaW50ZXIoaXBzX21j aGRldiwgZ3QtPmk5MTUpOwogCQlpcHNfcGluZ19mb3JfaTkxNV9sb2FkKCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmMKaW5kZXggMGQ5Zjc0YWVjOGZlLi4zNjdmZDQ0YjgxYzggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMKQEAgLTU5MCwxMyArNTkwLDEzIEBAIHZv aWQgaW50ZWxfc3NldV9pbmZvX2luaXQoc3RydWN0IGludGVsX2d0ICpndCkKIAkJY2hlcnJ5dmll d19zc2V1X2luZm9faW5pdChndCk7CiAJZWxzZSBpZiAoSVNfQlJPQURXRUxMKGk5MTUpKQogCQli ZHdfc3NldV9pbmZvX2luaXQoZ3QpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCA5KSkKKwllbHNl IGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gOSkKIAkJZ2VuOV9zc2V1X2luZm9faW5pdChndCk7 Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEwKSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkx NSkgPT0gMTApCiAJCWdlbjEwX3NzZXVfaW5mb19pbml0KGd0KTsKLQllbHNlIGlmIChJU19HRU4o aTkxNSwgMTEpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMSkKIAkJZ2VuMTFf c3NldV9pbmZvX2luaXQoZ3QpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikKKwll bHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIpCiAJCWdlbjEyX3NzZXVfaW5mb19pbml0 KGd0KTsKIH0KIApAQCAtNjEzLDcgKzYxMyw3IEBAIHUzMiBpbnRlbF9zc2V1X21ha2VfcnBjcyhz dHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCSAqIE5vIGV4cGxpY2l0IFJQQ1MgcmVxdWVzdCBpcyBuZWVk ZWQgdG8gZW5zdXJlIGZ1bGwKIAkgKiBzbGljZS9zdWJzbGljZS9FVSBlbmFibGVtZW50IHByaW9y IHRvIEdlbjkuCiAJICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDkpCisJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA8IDkpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTY1MSw3ICs2NTEsNyBAQCB1 MzIgaW50ZWxfc3NldV9tYWtlX3JwY3Moc3RydWN0IGludGVsX2d0ICpndCwKIAkgKiBzdWJzbGlj ZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQgYmV0d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZp cnN0CiAJICogc2xpY2UuCiAJICovCi0JaWYgKElTX0dFTihpOTE1LCAxMSkgJiYKKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID09IDExICYmCiAJICAgIHNsaWNlcyA9PSAxICYmCiAJICAgIHN1YnNs aWNlcyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIp KSB7CiAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7CkBAIC02NjksNyArNjY5LDcgQEAgdTMy IGludGVsX3NzZXVfbWFrZV9ycGNzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJaWYgKHNzZXUtPmhh c19zbGljZV9wZykgewogCQl1MzIgbWFzaywgdmFsID0gc2xpY2VzOwogCi0JCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTEpIHsKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewogCQkJ bWFzayA9IEdFTjExX1JQQ1NfU19DTlRfTUFTSzsKIAkJCXZhbCA8PD0gR0VOMTFfUlBDU19TX0NO VF9TSElGVDsKIAkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3Jr YXJvdW5kcy5jCmluZGV4IDYyY2I5ZWU1YmZjMy4uYjYyZDFlMzFhNjQ1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTY5OSw5ICs2OTksOSBAQCBf X2ludGVsX2VuZ2luZV9pbml0X2N0eF93YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAKIAlpZiAoSVNfREcxKGk5MTUpKQogCQlkZzFfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5l LCB3YWwpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMikpCisJZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID09IDEyKQogCQlnZW4xMl9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdh bCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPT0gMTEpCiAJCWljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7CiAJ ZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkKIAkJY25sX2N0eF93b3JrYXJvdW5kc19pbml0 KGVuZ2luZSwgd2FsKTsKQEAgLTcxOSwxNCArNzE5LDE0IEBAIF9faW50ZWxfZW5naW5lX2luaXRf Y3R4X3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJY2h2X2N0eF93b3JrYXJv dW5kc19pbml0KGVuZ2luZSwgd2FsKTsKIAllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCiAJ CWJkd19jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VO KGk5MTUsIDcpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA3KQogCQlnZW43X2N0 eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwg NikpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCiAJCWdlbjZfY3R4X3dvcmth cm91bmRzX2luaXQoZW5naW5lLCB3YWwpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA8IDgp CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgOCkKIAkJOwogCWVsc2UKLQkJTUlTU0lO R19DQVNFKElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoaTkx NSkpOwogCiAJd2FfaW5pdF9maW5pc2god2FsKTsKIH0KQEAgLTk1MCw3ICs5NTAsNyBAQCB3YV9p bml0X21jcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlz dCAqd2FsKQogCXVuc2lnbmVkIGludCBzbGljZSwgc3Vic2xpY2U7CiAJdTMyIGwzX2VuLCBtY3Is IG1jcl9tYXNrOwogCi0JR0VNX0JVR19PTihJTlRFTF9HRU4oaTkxNSkgPCAxMCk7CisJR0VNX0JV R19PTihHUkFQSElDU19WRVIoaTkxNSkgPCAxMCk7CiAKIAkvKgogCSAqIFdhUHJvZ3JhbU1nc3JG b3JMM0JhbmtTcGVjaWZpY01taW9SZWFkczogY25sLGljbApAQCAtOTgwLDcgKzk4MCw3IEBAIHdh X2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwpCiAJICogb2YgZXZlcnkgTU1JTyByZWFkLgogCSAqLwogCi0JaWYgKElOVEVMX0dF TihpOTE1KSA+PSAxMCAmJiBpc19wb3dlcl9vZl8yKHNzZXUtPnNsaWNlX21hc2spKSB7CisJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCAmJiBpc19wb3dlcl9vZl8yKHNzZXUtPnNsaWNlX21h c2spKSB7CiAJCXUzMiBsM19mdXNlID0KIAkJCWludGVsX3VuY29yZV9yZWFkKCZpOTE1LT51bmNv cmUsIEdFTjEwX01JUlJPUl9GVVNFMykgJgogCQkJR0VOMTBfTDNCQU5LX01BU0s7CkBAIC0xMDAy LDcgKzEwMDIsNyBAQCB3YV9pbml0X21jcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCX0KIAlzdWJzbGljZS0tOwogCi0JaWYgKElOVEVM X0dFTihpOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsKIAkJ bWNyID0gR0VOMTFfTUNSX1NMSUNFKHNsaWNlKSB8IEdFTjExX01DUl9TVUJTTElDRShzdWJzbGlj ZSk7CiAJCW1jcl9tYXNrID0gR0VOMTFfTUNSX1NMSUNFX01BU0sgfCBHRU4xMV9NQ1JfU1VCU0xJ Q0VfTUFTSzsKIAl9IGVsc2UgewpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgZ3RfaW5pdF93b3JrYXJv dW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsKQogCQlkZzFfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwogCWVsc2UgaWYgKElT X1RJR0VSTEFLRShpOTE1KSkKIAkJdGdsX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsK LQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTIpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA9PSAxMikKIAkJZ2VuMTJfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwotCWVsc2Ug aWYgKElTX0dFTihpOTE1LCAxMSkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDEx KQogCQlpY2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwogCWVsc2UgaWYgKElTX0NB Tk5PTkxBS0UoaTkxNSkpCiAJCWNubF9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7CkBA IC0xMTkzLDE4ICsxMTkzLDE4IEBAIGd0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJdmx2X2d0X3dvcmth cm91bmRzX2luaXQoaTkxNSwgd2FsKTsKIAllbHNlIGlmIChJU19JVllCUklER0UoaTkxNSkpCiAJ CWl2Yl9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5 MTUsIDYpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2KQogCQlzbmJfZ3Rfd29y a2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCA1KSkKKwll bHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNSkKIAkJaWxrX2d0X3dvcmthcm91bmRzX2lu aXQoaTkxNSwgd2FsKTsKIAllbHNlIGlmIChJU19HNFgoaTkxNSkpCiAJCWc0eF9ndF93b3JrYXJv dW5kc19pbml0KGk5MTUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDQpKQorCWVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA0KQogCQlnZW40X2d0X3dvcmthcm91bmRzX2luaXQo aTkxNSwgd2FsKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPD0gOCkKKwllbHNlIGlmIChH UkFQSElDU19WRVIoaTkxNSkgPD0gOCkKIAkJOwogCWVsc2UKLQkJTUlTU0lOR19DQVNFKElOVEVM X0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwogfQogCiB2 b2lkIGludGVsX2d0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCkBAIC0xNTU4LDkgKzE1NTgsOSBAQCB2b2lkIGludGVsX2VuZ2luZV9pbml0X3doaXRlbGlz dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAlpZiAoSVNfREcxKGk5MTUpKQog CQlkZzFfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEy KSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTIpCiAJCXRnbF93aGl0ZWxpc3Rf YnVpbGQoZW5naW5lKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTEpKQorCWVsc2UgaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA9PSAxMSkKIAkJaWNsX3doaXRlbGlzdF9idWlsZChlbmdpbmUpOwog CWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoaTkxNSkpCiAJCWNubF93aGl0ZWxpc3RfYnVpbGQoZW5n aW5lKTsKQEAgLTE1NzYsMTAgKzE1NzYsMTAgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF93aGl0 ZWxpc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlieHRfd2hpdGVsaXN0X2J1 aWxkKGVuZ2luZSk7CiAJZWxzZSBpZiAoSVNfU0tZTEFLRShpOTE1KSkKIAkJc2tsX3doaXRlbGlz dF9idWlsZChlbmdpbmUpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA8PSA4KQorCWVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSA4KQogCQk7CiAJZWxzZQotCQlNSVNTSU5HX0NBU0Uo SU5URUxfR0VOKGk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihpOTE1KSk7CiAK IAl3YV9pbml0X2ZpbmlzaCh3KTsKIH0KQEAgLTE2OTUsNyArMTY5NSw3IEBAIHJjc19lbmdpbmVf d2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xp c3QgKndhbCkKIAkJCSAgICAgRU5BQkxFX1NNQUxMUEwpOwogCX0KIAotCWlmIChJU19HRU4oaTkx NSwgMTEpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMSkgewogCQkvKiBUaGlzIGlz IG5vdCBhbiBXYS4gRW5hYmxlIGZvciBiZXR0ZXIgaW1hZ2UgcXVhbGl0eSAqLwogCQl3YV9tYXNr ZWRfZW4od2FsLAogCQkJICAgICBfM0RfQ0hJQ0tFTjMsCkBAIC0xNzkzLDcgKzE3OTMsNyBAQCBy Y3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwpCiAJCQkgICAgIEZGX0RPUF9DTE9DS19HQVRFX0RJU0FCTEUpOwog CX0KIAotCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgOSwgMTIpKSB7CisJaWYgKElTX0dSQVBISUNT X1ZFUihpOTE1LCA5LCAxMikpIHsKIAkJLyogRnRyUGVyQ3R4dFByZWVtcHRpb25HcmFudWxhcml0 eUNvbnRyb2w6c2tsLGJ4dCxrYmwsY2ZsLGNubCxpY2wsdGdsICovCiAJCXdhX21hc2tlZF9lbih3 YWwsCiAJCQkgICAgIEdFTjdfRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjEsCkBAIC0xODE3LDcgKzE4MTcs NyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBz dHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCQkgICAgIEdFTjlfUE9PTEVEX0VVX0xPQURfQkFM QU5DSU5HX0ZJWF9ESVNBQkxFKTsKIAl9CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDkpKSB7CisJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KSB7CiAJCS8qIFdhQ29udGV4dFN3aXRjaFdpdGhDb25j dXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCiAJCXdhX21hc2tlZF9l bih3YWwsCiAJCQkgICAgIEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1MsCkBAIC0xOTIxLDcgKzE5MjEs NyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBz dHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCQkJICAgICBHRU43X1BTRF9TSU5HTEVfUE9SVF9E SVNQQVRDSF9FTkFCTEUpOwogCX0KIAotCWlmIChJU19HRU4oaTkxNSwgNykpIHsKKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID09IDcpIHsKIAkJLyogV2FCQ1NWQ1NUbGJJbnZhbGlkYXRpb25Nb2Rl Oml2Yix2bHYsaHN3ICovCiAJCXdhX21hc2tlZF9lbih3YWwsCiAJCQkgICAgIEdGWF9NT0RFX0dF TjcsCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCSAgICAgICBH RU42X1dJWl9IQVNISU5HXzE2eDQpOwogCX0KIAotCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwg NykpCisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA2LCA3KSkKIAkJLyoKIAkJICogV2UgbmVl ZCB0byBkaXNhYmxlIHRoZSBBc3luY0ZsaXAgcGVyZm9ybWFuY2Ugb3B0aW1pc2F0aW9ucyBpbgog CQkgKiBvcmRlciB0byB1c2UgTUlfV0FJVF9GT1JfRVZFTlQgd2l0aGluIHRoZSBDUy4gSXQgc2hv dWxkCkBAIC0xOTY1LDcgKzE5NjUsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCQkgICAgIE1J X01PREUsCiAJCQkgICAgIEFTWU5DX0ZMSVBfUEVSRl9ESVNBQkxFKTsKIAotCWlmIChJU19HRU4o aTkxNSwgNikpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpIHsKIAkJLyoKIAkJICog UmVxdWlyZWQgZm9yIHRoZSBoYXJkd2FyZSB0byBwcm9ncmFtIHNjYW5saW5lIHZhbHVlcyBmb3IK IAkJICogd2FpdGluZwpAQCAtMjAxOSwxNCArMjAxOSwxNCBAQCByY3NfZW5naW5lX3dhX2luaXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwp CiAJCQkgICAgICBDTTBfU1RDX0VWSUNUX0RJU0FCTEVfTFJBX1NOQik7CiAJfQogCi0JaWYgKElT X0dFTl9SQU5HRShpOTE1LCA0LCA2KSkKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDQsIDYp KQogCQkvKiBXYVRpbWVkU2luZ2xlVmVydGV4RGlzcGF0Y2g6Y2wsYncsY3RnLGVsayxpbGssc25i ICovCiAJCXdhX2FkZCh3YWwsIE1JX01PREUsCiAJCSAgICAgICAwLCBfTUFTS0VEX0JJVF9FTkFC TEUoVlNfVElNRVJfRElTUEFUQ0gpLAogCQkgICAgICAgLyogWFhYIGJpdCBkb2Vzbid0IHN0aWNr IG9uIEJyb2Fkd2F0ZXIgKi8KIAkJICAgICAgIElTX0k5NjVHKGk5MTUpID8gMCA6IFZTX1RJTUVS X0RJU1BBVENIKTsKIAotCWlmIChJU19HRU4oaTkxNSwgNCkpCisJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSA0KQogCQkvKgogCQkgKiBEaXNhYmxlIENPTlNUQU5UX0JVRkZFUiBiZWZvcmUgaXQg aXMgbG9hZGVkIGZyb20gdGhlIGNvbnRleHQKIAkJICogaW1hZ2UuIEZvciBhcyBpdCBpcyBsb2Fk ZWQsIGl0IGlzIGV4ZWN1dGVkIGFuZCB0aGUgc3RvcmVkCkBAIC0yMDU4LDcgKzIwNTgsNyBAQCB4 Y3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwpCiBzdGF0aWMgdm9pZAogZW5naW5lX2luaXRfd29ya2Fyb3VuZHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwp CiB7Ci0JaWYgKEk5MTVfU0VMRlRFU1RfT05MWShJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDQp KQorCWlmIChJOTE1X1NFTEZURVNUX09OTFkoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCA0 KSkKIAkJcmV0dXJuOwogCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQpAQCAt MjA3MSw3ICsyMDcxLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF93b3JrYXJvdW5kcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2Fs ID0gJmVuZ2luZS0+d2FfbGlzdDsKIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDQp CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgNCkKIAkJcmV0dXJuOwogCiAJd2Ff aW5pdF9zdGFydCh3YWwsICJlbmdpbmUiLCBlbmdpbmUtPm5hbWUpOwpAQCAtMjExMiw5ICsyMTEy LDkgQEAgc3RhdGljIGJvb2wgbWNyX3JhbmdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1MzIgb2Zmc2V0KQogCWNvbnN0IHN0cnVjdCBtY3JfcmFuZ2UgKm1jcl9yYW5nZXM7CiAJaW50 IGk7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKQorCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gMTIpCiAJCW1jcl9yYW5nZXMgPSBtY3JfcmFuZ2VzX2dlbjEyOwotCWVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSA4KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KQog CQltY3JfcmFuZ2VzID0gbWNyX3Jhbmdlc19nZW44OwogCWVsc2UKIAkJcmV0dXJuIGZhbHNlOwpA QCAtMjE0Myw3ICsyMTQzLDcgQEAgd2FfbGlzdF9zcm0oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs CiAJdTMyIHNybSwgKmNzOwogCiAJc3JtID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JN X0xSTV9HTE9CQUxfR1RUOwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDgpCiAJCXNybSsrOwogCiAJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxp c3Q7IGkgPCB3YWwtPmNvdW50OyBpKyssIHdhKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKaW5kZXggMzQ1M2ViNzdjNDk4Li42NGFiZjVmZWFiZmEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCkBAIC01 Miw3ICs1Miw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfdGltZXN0YW1wKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCBpbnQgc2xvdCkKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCiAJY21kID0gTUlfU1RP UkVfUkVHSVNURVJfTUVNIHwgTUlfVVNFX0dHVFQ7Ci0JaWYgKElOVEVMX0dFTihycS0+ZW5naW5l LT5pOTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPj0gOCkK IAkJY21kKys7CiAJKmNzKysgPSBjbWQ7CiAJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChS SU5HX1RJTUVTVEFNUChycS0+ZW5naW5lLT5tbWlvX2Jhc2UpKTsKQEAgLTEyNSw3ICsxMjUsNyBA QCBzdGF0aWMgaW50IHBlcmZfbWlfYmJfc3RhcnQodm9pZCAqYXJnKQogCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwogCWludCBlcnIgPSAwOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA3 KSAvKiBmb3IgcGVyLWVuZ2luZSBDU19USU1FU1RBTVAgKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGd0 LT5pOTE1KSA8IDcpIC8qIGZvciBwZXItZW5naW5lIENTX1RJTUVTVEFNUCAqLwogCQlyZXR1cm4g MDsKIAogCXBlcmZfYmVnaW4oZ3QpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBpbnQgcGVy Zl9taV9ub29wKHZvaWQgKmFyZykKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlpbnQgZXJy ID0gMDsKIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNykgLyogZm9yIHBlci1lbmdpbmUg Q1NfVElNRVNUQU1QICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA3KSAvKiBmb3Ig cGVyLWVuZ2luZSBDU19USU1FU1RBTVAgKi8KIAkJcmV0dXJuIDA7CiAKIAlwZXJmX2JlZ2luKGd0 KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMKaW5kZXgg MmM4OTg2MjJiZGZiLi43MmNjYTNmMGRhMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIGludCBsaXZl X2VuZ2luZV90aW1lc3RhbXBzKHZvaWQgKmFyZykKIAkgKiB0aGUgc2FtZSBDUyBjbG9jay4KIAkg Ki8KIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0 LT5pOTE1KSA8IDgpCiAJCXJldHVybiAwOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3Qs IGlkKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVj bGlzdHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCmlu ZGV4IDFmOTM1OTFhOGM2OS4uZWEyMjAzYWYwNzY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYwpAQCAtMzI2OSw3ICszMjY5LDcgQEAgc3RhdGljIGlu dCBsaXZlX3ByZWVtcHRfdXNlcih2b2lkICphcmcpCiAJCWlmICghaW50ZWxfZW5naW5lX2hhc19w cmVlbXB0aW9uKGVuZ2luZSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoSVNfR0VOKGd0LT5pOTE1 LCA4KSAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKKwkJaWYgKEdSQVBISUNTX1ZF UihndC0+aTkxNSkgPT0gOCAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJCWNv bnRpbnVlOyAvKiB3ZSBuZWVkIHBlci1jb250ZXh0IEdQUiAqLwogCiAJCWlmIChpZ3RfbGl2ZV90 ZXN0X2JlZ2luKCZ0LCBndC0+aTkxNSwgX19mdW5jX18sIGVuZ2luZS0+bmFtZSkpIHsKQEAgLTQy OTMsNyArNDI5Myw3IEBAIHN0YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX3ByZXNlcnZlZCh2b2lkICph cmcpCiAJCXJldHVybiAwOwogCiAJLyogQXMgd2UgdXNlIENTX0dQUiB3ZSBjYW5ub3QgcnVuIGJl Zm9yZSB0aGV5IGV4aXN0ZWQgb24gYWxsIGVuZ2luZXMuICovCi0JaWYgKElOVEVMX0dFTihndC0+ aTkxNSkgPCA5KQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOSkKIAkJcmV0dXJuIDA7 CiAKIAlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPD0gTUFYX0VOR0lORV9DTEFTUzsgY2xhc3MrKykg ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMKaW5kZXggYzA4NDViZjcy ZGQzLi5iOTQ0MTIxN2NhM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2d0X3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3Rf cG0uYwpAQCAtNzQsMTAgKzc0LDEwIEBAIHN0YXRpYyBpbnQgbGl2ZV9ndF9jbG9ja3Modm9pZCAq YXJnKQogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDQpIC8q IEFueSBDU19USU1FU1RBTVA/ICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA0KSAv KiBBbnkgQ1NfVElNRVNUQU1QPyAqLwogCQlyZXR1cm4gMDsKIAotCWlmIChJU19HRU4oZ3QtPmk5 MTUsIDUpKQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID09IDUpCiAJCS8qCiAJCSAqIFhY WCBDU19USU1FU1RBTVAgbG93IGR3b3JkIGlzIGR5c2Z1bmN0aW9uYWw/CiAJCSAqCkBAIC04Niw3 ICs4Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ndF9jbG9ja3Modm9pZCAqYXJnKQogCQkgKi8KIAkJ cmV0dXJuIDA7CiAKLQlpZiAoSVNfR0VOKGd0LT5pOTE1LCA0KSkKKwlpZiAoR1JBUEhJQ1NfVkVS KGd0LT5pOTE1KSA9PSA0KQogCQkvKgogCQkgKiBYWFggQ1NfVElNRVNUQU1QIGFwcGVhcnMgZ2li YmVyaXNoCiAJCSAqCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIGludCBsaXZlX2d0X2Nsb2Nr cyh2b2lkICphcmcpCiAJCXU2NCB0aW1lOwogCQl1NjQgZHQ7CiAKLQkJaWYgKElOVEVMX0dFTihl bmdpbmUtPmk5MTUpIDwgNyAmJiBlbmdpbmUtPmlkICE9IFJDUzApCisJCWlmIChHUkFQSElDU19W RVIoZW5naW5lLT5pOTE1KSA8IDcgJiYgZW5naW5lLT5pZCAhPSBSQ1MwKQogCQkJY29udGludWU7 CiAKIAkJbWVhc3VyZV9jbG9ja3MoZW5naW5lLCAmY3ljbGVzLCAmZHQpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwppbmRleCA1YjYzZDRkZjhjOTMuLjg1 MzI0NmZhZDA1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf aGFuZ2NoZWNrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2No ZWNrLmMKQEAgLTE4MCw3ICsxODAsNyBAQCBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBoYW5n ICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWdvdG8gY2FuY2VsX3JxOwog CiAJYmF0Y2ggPSBoLT5iYXRjaDsKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA4KSB7CisJ aWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gOCkgewogCQkqYmF0Y2grKyA9IE1JX1NUT1JF X0RXT1JEX0lNTV9HRU40OwogCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMoaHdzX2FkZHJlc3Mo aHdzLCBycSkpOwogCQkqYmF0Y2grKyA9IHVwcGVyXzMyX2JpdHMoaHdzX2FkZHJlc3MoaHdzLCBy cSkpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcg KmgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJKmJhdGNoKysgPSBNSV9CQVRD SF9CVUZGRVJfU1RBUlQgfCAxIDw8IDggfCAxOwogCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMo dm1hLT5ub2RlLnN0YXJ0KTsKIAkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5z dGFydCk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDYpIHsKKwl9IGVsc2Ug aWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gNikgewogCQkqYmF0Y2grKyA9IE1JX1NUT1JF X0RXT1JEX0lNTV9HRU40OwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJf Yml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgaGFuZ19jcmVh dGVfcmVxdWVzdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCQkqYmF0Y2grKyA9IE1JX05PT1A7CiAJCSpiYXRjaCsrID0gTUlfQkFUQ0hfQlVGRkVSX1NU QVJUIHwgMSA8PCA4OwogCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0 KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNCkgeworCX0gZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA0KSB7CiAJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkJKmJhdGNoKysgPSAwOwogCQkqYmF0Y2grKyA9 IGxvd2VyXzMyX2JpdHMoaHdzX2FkZHJlc3MoaHdzLCBycSkpOwpAQCAtMjQzLDcgKzI0Myw3IEBA IGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAl9CiAKIAlmbGFncyA9IDA7Ci0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkg PD0gNSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8PSA1KQogCQlmbGFncyB8PSBJOTE1 X0RJU1BBVENIX1NFQ1VSRTsKIAogCWVyciA9IHJxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEs IHZtYS0+bm9kZS5zdGFydCwgUEFHRV9TSVpFLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9sbGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2xsYy5jCmluZGV4IDk0MDA2ZjExN2JiZC4uNDU5Yjc3NWYxNjNhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9sbGMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9sbGMuYwpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMg aW50IGdlbjZfdmVyaWZ5X3JpbmdfZnJlcShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpCiAJCWlmIChm b3VuZCAhPSBpYV9mcmVxKSB7CiAJCQlwcl9lcnIoIk1pbiBmcmVxIHRhYmxlKCVkL1slZCwgJWRd KTolZE1IeiBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIENQVSBmcmVxLCBmb3VuZCAlZCwgZXhwZWN0 ZWQgJWRcbiIsCiAJCQkgICAgICAgZ3B1X2ZyZXEsIGNvbnN0cy5taW5fZ3B1X2ZyZXEsIGNvbnN0 cy5tYXhfZ3B1X2ZyZXEsCi0JCQkgICAgICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBncHVfZnJlcSAq IChJTlRFTF9HRU4oaTkxNSkgPj0gOSA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSksCisJCQkgICAg ICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBncHVfZnJlcSAqIChHUkFQSElDU19WRVIoaTkxNSkgPj0g OSA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSksCiAJCQkgICAgICAgZm91bmQsIGlhX2ZyZXEpOwog CQkJZXJyID0gLUVJTlZBTDsKIAkJCWJyZWFrOwpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgaW50 IGdlbjZfdmVyaWZ5X3JpbmdfZnJlcShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpCiAJCWlmIChmb3Vu ZCAhPSByaW5nX2ZyZXEpIHsKIAkJCXByX2VycigiTWluIGZyZXEgdGFibGUoJWQvWyVkLCAlZF0p OiVkTUh6IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmluZyBmcmVxLCBmb3VuZCAlZCwgZXhwZWN0 ZWQgJWRcbiIsCiAJCQkgICAgICAgZ3B1X2ZyZXEsIGNvbnN0cy5taW5fZ3B1X2ZyZXEsIGNvbnN0 cy5tYXhfZ3B1X2ZyZXEsCi0JCQkgICAgICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBncHVfZnJlcSAq IChJTlRFTF9HRU4oaTkxNSkgPj0gOSA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSksCisJCQkgICAg ICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBncHVfZnJlcSAqIChHUkFQSElDU19WRVIoaTkxNSkgPj0g OSA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSksCiAJCQkgICAgICAgZm91bmQsIHJpbmdfZnJlcSk7 CiAJCQllcnIgPSAtRUlOVkFMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2xyYy5jCmluZGV4IGQ4ZjY2MjM1MjRlOC4uMzExOTAxNmQ5OTEwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwpAQCAtNTg0LDcgKzU4NCw3IEBAIHN0YXRpYyBpbnQg X19saXZlX2xyY19ncHIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWludCBlcnI7 CiAJaW50IG47CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCA5ICYmIGVuZ2luZS0+ Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA8 IDkgJiYgZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCiAJCXJldHVybiAwOyAvKiBHUFIg b25seSBvbiByY3MwIGZvciBnZW44ICovCiAKIAllcnIgPSBncHJfbWFrZV9kaXJ0eShlbmdpbmUt Pmtlcm5lbF9jb250ZXh0KTsKQEAgLTEzODksMTAgKzEzODksMTAgQEAgc3RhdGljIGludCBfX2xy Y19pc29sYXRpb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgcG9pc29uKQog CiBzdGF0aWMgYm9vbCBza2lwX2lzb2xhdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7Ci0JaWYgKGVuZ2luZS0+Y2xhc3MgPT0gQ09QWV9FTkdJTkVfQ0xBU1MgJiYg SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPT0gOSkKKwlpZiAoZW5naW5lLT5jbGFzcyA9PSBDT1BZ X0VOR0lORV9DTEFTUyAmJiBHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA9PSA5KQogCQlyZXR1 cm4gdHJ1ZTsKIAotCWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUyAmJiBJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSA9PSAxMSkKKwlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xB U1MgJiYgR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPT0gMTEpCiAJCXJldHVybiB0cnVlOwog CiAJcmV0dXJuIGZhbHNlOwpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgc3RhdGljIGludCBfX2xpdmVf bHJjX2luZGlyZWN0X2N0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJLyog V2UgdXNlIHRoZSBhbHJlYWR5IHJlc2VydmVkIGV4dHJhIHBhZ2UgaW4gY29udGV4dCBzdGF0ZSAq LwogCWlmICghYS0+d2FfYmJfcGFnZSkgewogCQlHRU1fQlVHX09OKGItPndhX2JiX3BhZ2UpOwot CQlHRU1fQlVHX09OKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID09IDEyKTsKKwkJR0VNX0JVR19P TihHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA9PSAxMik7CiAJCWdvdG8gdW5waW5fYjsKIAl9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwppbmRleCBlNTVhODg3ZDEx ZTIuLmI5YmIwZTZlOTdmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3Mu YwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyBib29sIG1jcl9yYW5nZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIG9mZnNldCkKIAkgKiB3aGljaCBvbmx5IGNvbnRyb2xzIENQ VSBpbml0aWF0ZWQgTU1JTy4gUm91dGluZyBkb2VzIG5vdAogCSAqIHdvcmsgZm9yIENTIGFjY2Vz cyBzbyB3ZSBjYW5ub3QgdmVyaWZ5IHRoZW0gb24gdGhpcyBwYXRoLgogCSAqLwotCXJldHVybiBJ TlRFTF9HRU4oaTkxNSkgPj0gOCAmJiBvZmZzZXQgPj0gMHhiMDAwICYmIG9mZnNldCA8PSAweGI0 ZmY7CisJcmV0dXJuIEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4ICYmIG9mZnNldCA+PSAweGIwMDAg JiYgb2Zmc2V0IDw9IDB4YjRmZjsKIH0KIAogc3RhdGljIGludCBjaGVja19sM2NjX3RhYmxlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfcmM2LmMKaW5kZXggNzEwZjgyNWY2ZTVhLi44YzcwYjdlMTIwNzQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X3JjNi5jCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIGNvbnN0 IHUzMiAqX19saXZlX3JjNl9jdHgoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCX0KIAogCWNt ZCA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8IE1JX1VTRV9HR1RUOwotCWlmIChJTlRFTF9HRU4o cnEtPmVuZ2luZS0+aTkxNSkgPj0gOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5 MTUpID49IDgpCiAJCWNtZCsrOwogCiAJKmNzKysgPSBjbWQ7CkBAIC0xOTMsNyArMTkzLDcgQEAg aW50IGxpdmVfcmM2X2N0eF93YSh2b2lkICphcmcpCiAJaW50IGVyciA9IDA7CiAKIAkvKiBBIHJl YWQgb2YgQ1RYX0lORk8gdXBzZXRzIHJjNi4gUG9rZSB0aGUgYmVhciEgKi8KLQlpZiAoSU5URUxf R0VOKGd0LT5pOTE1KSA8IDgpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA4KQogCQly ZXR1cm4gMDsKIAogCWVuZ2luZXMgPSByYW5kb21pc2VkX2VuZ2luZXMoZ3QsICZwcm5nLCAmY291 bnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19z dWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1p c3Npb24uYwppbmRleCBjMTJlNzQxNzFiNjMuLjA0MTk1NDQwOGQwZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMKQEAgLTQxLDEw ICs0MSwxMCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpjcmVhdGVfd2FsbHkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1cm4gRVJSX0NBU1QoY3MpOwogCX0KIAotCWlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdp bmUtPmk5MTUpID49IDYpIHsKIAkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKIAkJ KmNzKysgPSAwOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gNCkgewor CX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gNCkgewogCQkqY3MrKyA9 IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CiAJCSpjcysrID0gMDsKIAl9 IGVsc2UgewpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9jdHhfc3dpdGNoX3dh KHZvaWQgKmFyZykKIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp CiAJCQljb250aW51ZTsKIAotCQlpZiAoSVNfR0VOX1JBTkdFKGd0LT5pOTE1LCA0LCA1KSkKKwkJ aWYgKElTX0dSQVBISUNTX1ZFUihndC0+aTkxNSwgNCwgNSkpCiAJCQljb250aW51ZTsgLyogTUlf U1RPUkVfRFdPUkQgaXMgcHJpdmlsZWdlZCEgKi8KIAogCQlzYXZlZF93YSA9IGZldGNoX2FuZF96 ZXJvKCZlbmdpbmUtPndhX2N0eC52bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfcnBzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9y cHMuYwppbmRleCAzY2ExYmQ1NzkzYzMuLjdlZTI1MTNlMTVmOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcnBzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfcnBzLmMKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBzaG93 X3BzdGF0ZV9saW1pdHMoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCQkJaTkxNV9tbWlvX3JlZ19v ZmZzZXQoQlhUX1JQX1NUQVRFX0NBUCksCiAJCQlpbnRlbF91bmNvcmVfcmVhZChycHNfdG9fdW5j b3JlKHJwcyksCiAJCQkJCSAgQlhUX1JQX1NUQVRFX0NBUCkpOwotCX0gZWxzZSBpZiAoSVNfR0VO KGk5MTUsIDkpKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gOSkgewogCQlw cl9pbmZvKCJQX1NUQVRFX0xJTUlUU1sleF06IDB4JTA4eFxuIiwKIAkJCWk5MTVfbW1pb19yZWdf b2Zmc2V0KEdFTjlfUlBfU1RBVEVfTElNSVRTKSwKIAkJCWludGVsX3VuY29yZV9yZWFkKHJwc190 b191bmNvcmUocnBzKSwKQEAgLTIyMiw3ICsyMjIsNyBAQCBpbnQgbGl2ZV9ycHNfY2xvY2tfaW50 ZXJ2YWwodm9pZCAqYXJnKQogCXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGluOwogCWludCBlcnIgPSAw OwogCi0JaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IElOVEVMX0dFTihndC0+aTkx NSkgPCA2KQorCWlmICghaW50ZWxfcnBzX2lzX2VuYWJsZWQocnBzKSB8fCBHUkFQSElDU19WRVIo Z3QtPmk5MTUpIDwgNikKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3Bp biwgZ3QpKQpAQCAtNTA2LDcgKzUwNiw3IEBAIHN0YXRpYyB2b2lkIHNob3dfcGN1X2NvbmZpZyhz dHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAKIAltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxOwog CW1heF9ncHVfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5 KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7CiAJCS8qIENvbnZlcnQgR1QgZnJl cXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCiAJCW1pbl9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NB TEVSOwogCQltYXhfZ3B1X2ZyZXEgLz0gR0VOOV9GUkVRX1NDQUxFUjsKQEAgLTYxNCw3ICs2MTQs NyBAQCBpbnQgbGl2ZV9ycHNfZnJlcXVlbmN5X2NzKHZvaWQgKmFyZykKIAlpZiAoIWludGVsX3Jw c19pc19lbmFibGVkKHJwcykpCiAJCXJldHVybiAwOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkx NSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5 MTUpIDwgOCkgLyogZm9yIENTIHNpbXBsaWNpdHkgKi8KIAkJcmV0dXJuIDA7CiAKIAlpZiAoQ1BV X0xBVEVOQ1kgPj0gMCkKQEAgLTc1NSw3ICs3NTUsNyBAQCBpbnQgbGl2ZV9ycHNfZnJlcXVlbmN5 X3NybSh2b2lkICphcmcpCiAJaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpKQogCQlyZXR1 cm4gMDsKIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgOCkgLyogZm9yIENTIHNpbXBsaWNp dHkgKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpIC8qIGZvciBDUyBzaW1wbGlj aXR5ICovCiAJCXJldHVybiAwOwogCiAJaWYgKENQVV9MQVRFTkNZID49IDApCkBAIC0xMDMxLDcg KzEwMzEsNyBAQCBpbnQgbGl2ZV9ycHNfaW50ZXJydXB0KHZvaWQgKmFyZykKIAkgKiBGaXJzdCwg bGV0J3MgY2hlY2sgd2hldGhlciBvciBub3Qgd2UgYXJlIHJlY2VpdmluZyBpbnRlcnJ1cHRzLgog CSAqLwogCi0JaWYgKCFpbnRlbF9ycHNfaGFzX2ludGVycnVwdHMocnBzKSB8fCBJTlRFTF9HRU4o Z3QtPmk5MTUpIDwgNikKKwlpZiAoIWludGVsX3Jwc19oYXNfaW50ZXJydXB0cyhycHMpIHx8IEdS QVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQogCQlyZXR1cm4gMDsKIAogCWludGVsX2d0X3BtX2dl dChndCk7CkBAIC0xMTM2LDcgKzExMzYsNyBAQCBpbnQgbGl2ZV9ycHNfcG93ZXIodm9pZCAqYXJn KQogCSAqIHRoYXQgdGhlb3J5LgogCSAqLwogCi0JaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChy cHMpIHx8IElOVEVMX0dFTihndC0+aTkxNSkgPCA2KQorCWlmICghaW50ZWxfcnBzX2lzX2VuYWJs ZWQocnBzKSB8fCBHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgNikKIAkJcmV0dXJuIDA7CiAKIAlp ZiAoIWxpYnJhcGxfc3VwcG9ydGVkKGd0LT5pOTE1KSkKQEAgLTEyNDAsNyArMTI0MCw3IEBAIGlu dCBsaXZlX3Jwc19keW5hbWljKHZvaWQgKmFyZykKIAkgKiBtb3ZpbmcgcGFydHMgaW50byBkeW5h bWljIHJlY2xvY2tpbmcgYmFzZWQgb24gbG9hZC4KIAkgKi8KIAotCWlmICghaW50ZWxfcnBzX2lz X2VuYWJsZWQocnBzKSB8fCBJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNikKKwlpZiAoIWludGVsX3Jw c19pc19lbmFibGVkKHJwcykgfHwgR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDYpCiAJCXJldHVy biAwOwogCiAJaWYgKGlndF9zcGlubmVyX2luaXQoJnNwaW4sIGd0KSkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCmluZGV4IDlhZGJkOWQxNDdiZS4uNjRkYTBj OTFkZWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1l bGluZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMK QEAgLTQ1NywxMiArNDU3LDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9nZ3R0X3N0b3JlX2R3KHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgYWRkciwgdTMyIHZhbHVlKQogCWlmIChJU19FUlIoY3Mp KQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5 MTUpID49IDgpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpIHsK IAkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwogCQkqY3Mr KyA9IGFkZHI7CiAJCSpjcysrID0gMDsKIAkJKmNzKysgPSB2YWx1ZTsKLQl9IGVsc2UgaWYgKElO VEVMX0dFTihycS0+ZW5naW5lLT5pOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19W RVIocnEtPmVuZ2luZS0+aTkxNSkgPj0gNCkgewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lN TV9HRU40IHwgTUlfVVNFX0dHVFQ7CiAJCSpjcysrID0gMDsKIAkJKmNzKysgPSBhZGRyOwpAQCAt OTkyLDcgKzk5Miw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCSAq IGV2ZW4gYWNyb3NzIG11bHRpcGxlIHdyYXBzLgogCSAqLwogCi0JaWYgKElOVEVMX0dFTihndC0+ aTkxNSkgPCA4KSAvKiBDUyBjb252ZW5pZW5jZSBbU1JNL0xSTV0gKi8KKwlpZiAoR1JBUEhJQ1Nf VkVSKGd0LT5pOTE1KSA8IDgpIC8qIENTIGNvbnZlbmllbmNlIFtTUk0vTFJNXSAqLwogCQlyZXR1 cm4gMDsKIAogCXRsID0gaW50ZWxfdGltZWxpbmVfY3JlYXRlKGd0KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCmluZGV4IDY0OTM3ZWMzZjJkYy4u YzMwNzU0ZGFmNGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dv cmthcm91bmRzLmMKQEAgLTE0NSw3ICsxNDUsNyBAQCByZWFkX25vbnByaXZzKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIAkJZ290byBlcnJfcmVxOwogCiAJc3JtID0gTUlfU1RPUkVfUkVHSVNU RVJfTUVNIHwgTUlfU1JNX0xSTV9HTE9CQUxfR1RUOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5p OTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA4KQogCQlzcm0r KzsKIAogCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCAqIFJJTkdfTUFYX05PTlBSSVZfU0xP VFMpOwpAQCAtNTQ2LDcgKzU0Niw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfZGlydHlfd2hpdGVsaXN0 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAogCQlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9N RU07CiAJCWxybSA9IE1JX0xPQURfUkVHSVNURVJfTUVNOwotCQlpZiAoSU5URUxfR0VOKGVuZ2lu ZS0+aTkxNSkgPj0gOCkKKwkJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDgpCiAJ CQlscm0rKywgc3JtKys7CiAKIAkJcHJfZGVidWcoIiVzOiBXcml0aW5nIGdhcmJhZ2UgdG8gJXhc biIsCkBAIC03NDksNyArNzQ5LDcgQEAgc3RhdGljIGludCBsaXZlX2RpcnR5X3doaXRlbGlzdCh2 b2lkICphcmcpCiAKIAkvKiBDYW4gdGhlIHVzZXIgd3JpdGUgdG8gdGhlIHdoaXRlbGlzdGVkIHJl Z2lzdGVycz8gKi8KIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNykgLyogbWluaW11bSBy ZXF1aXJlbWVudCBmb3IgTFJJLCBTUk0sIExSTSAqLworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5 MTUpIDwgNykgLyogbWluaW11bSByZXF1aXJlbWVudCBmb3IgTFJJLCBTUk0sIExSTSAqLwogCQly ZXR1cm4gMDsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkgewpAQCAtODI5LDcg KzgyOSw3IEBAIHN0YXRpYyBpbnQgcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlLAogCQlnb3RvIGVycl9yZXE7CiAKIAlzcm0gPSBNSV9TVE9SRV9SRUdJ U1RFUl9NRU07Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDgpCisJaWYgKEdSQVBI SUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDgpCiAJCXNybSsrOwogCiAJY3MgPSBpbnRlbF9yaW5n X2JlZ2luKHJxLCA0ICogZW5naW5lLT53aGl0ZWxpc3QuY291bnQpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWMuYwppbmRleCBhZGFlMDRjNDdhYWIuLjg0ZjgwNjkxMTM3MCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKQEAgLTYwLDcgKzYwLDcgQEAgdm9p ZCBpbnRlbF9ndWNfaW5pdF9zZW5kX3JlZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWVudW0g Zm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucyA9IDA7CiAJdW5zaWduZWQgaW50IGk7CiAKLQlp ZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5 MTUpID49IDExKSB7CiAJCWd1Yy0+c2VuZF9yZWdzLmJhc2UgPQogCQkJCWk5MTVfbW1pb19yZWdf b2Zmc2V0KEdFTjExX1NPRlRfU0NSQVRDSCgwKSk7CiAJCWd1Yy0+c2VuZF9yZWdzLmNvdW50ID0g R0VOMTFfU09GVF9TQ1JBVENIX0NPVU5UOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgaW50ZWxf Z3VjX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCiAJbXV0ZXhfaW5pdCgmZ3Vj LT5zZW5kX211dGV4KTsKIAlzcGluX2xvY2tfaW5pdCgmZ3VjLT5pcnFfbG9jayk7Ci0JaWYgKElO VEVMX0dFTihpOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsK IAkJZ3VjLT5ub3RpZnlfcmVnID0gR0VOMTFfR1VDX0hPU1RfSU5URVJSVVBUOwogCQlndWMtPmlu dGVycnVwdHMucmVzZXQgPSBnZW4xMV9yZXNldF9ndWNfaW50ZXJydXB0czsKIAkJZ3VjLT5pbnRl cnJ1cHRzLmVuYWJsZSA9IGdlbjExX2VuYWJsZV9ndWNfaW50ZXJydXB0czsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwppbmRleCAxNzUyNjcxNzM2OGMuLmIzMmZh ZmJhMmE5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X2Fkcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwpA QCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBpbnRl bF9ndWMgKmd1YykKIAlibG9iLT5zeXN0ZW1faW5mby5nZW5lcmljX2d0X3N5c2luZm9bR1VDX0dF TkVSSUNfR1RfU1lTSU5GT19WREJPWF9TRkNfU1VQUE9SVF9NQVNLXSA9CiAJCWd0LT5pbmZvLnZk Ym94X3NmY19hY2Nlc3M7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyICYmICFJU19ER0ZY KGk5MTUpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMiAmJiAhSVNfREdGWChpOTE1 KSkgewogCQl1MzIgZGlzdGRicmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwKIAkJ CQkJCSAgR0VOMTJfRElTVF9EQlNfUE9QVUxBVEVEKTsKIAkJYmxvYi0+c3lzdGVtX2luZm8uZ2Vu ZXJpY19ndF9zeXNpbmZvW0dVQ19HRU5FUklDX0dUX1NZU0lORk9fRE9PUkJFTExfQ09VTlRfUEVS X1NRSURJXSA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCmluZGV4 IDIyNzBkNmIzYjI3Mi4uNzZmZTc2NmFkMWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfZncuYwpAQCAtMzAsNyArMzAsNyBAQCBzdGF0aWMgdm9pZCBndWNfcHJlcGFy ZV94ZmVyKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAllbHNlCiAJCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIEdFTjlfR1RfUE1fQ09ORklHLCBHVF9ET09SQkVMTF9FTkFCTEUpOwog Ci0JaWYgKElTX0dFTih1bmNvcmUtPmk5MTUsIDkpKSB7CisJaWYgKEdSQVBISUNTX1ZFUih1bmNv cmUtPmk5MTUpID09IDkpIHsKIAkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBj bG9ja3MgKi8KIAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEdFTjdfTUlTQ0NQQ1RMLAogCQkJ CSAwLCBHRU44X0RPUF9DTE9DS19HQVRFX0dVQ19FTkFCTEUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggMzM1NzE5ZjE3NDkw Li41NDFmNmRhMWVjNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19p bnRlcnJ1cHRzX2NhcHR1cmUoc3RydWN0IGludGVsX2d0ICpndCkKIAl1MzIgaXJxcyA9IEdUX0NP TlRFWFRfU1dJVENIX0lOVEVSUlVQVDsKIAl1MzIgZG1hc2sgPSBpcnFzIDw8IDE2IHwgaXJxczsK IAotCUdFTV9CVUdfT04oSU5URUxfR0VOKGd0LT5pOTE1KSA8IDExKTsKKwlHRU1fQlVHX09OKEdS QVBISUNTX1ZFUihndC0+aTkxNSkgPCAxMSk7CiAKIAkvKiBEb24ndCBoYW5kbGUgdGhlIGN0eCBz d2l0Y2ggaW50ZXJydXB0IGluIEd1QyBzdWJtaXNzaW9uIG1vZGUgKi8KIAlpbnRlbF91bmNvcmVf cm13KHVuY29yZSwgR0VOMTFfUkVOREVSX0NPUFlfSU5UUl9FTkFCTEUsIGRtYXNrLCAwKTsKQEAg LTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19yZWxlYXNlKHN0cnVj dCBpbnRlbF9ndCAqZ3QpCiAJdTMyIGlycXMgPSBHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQ7 CiAJdTMyIGRtYXNrID0gaXJxcyA8PCAxNiB8IGlycXM7CiAKLQlHRU1fQlVHX09OKElOVEVMX0dF TihndC0+aTkxNSkgPCAxMSk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwg MTEpOwogCiAJLyogSGFuZGxlIGN0eCBzd2l0Y2ggaW50ZXJydXB0cyBhZ2FpbiAqLwogCWludGVs X3VuY29yZV9ybXcodW5jb3JlLCBHRU4xMV9SRU5ERVJfQ09QWV9JTlRSX0VOQUJMRSwgMCwgZG1h c2spOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5jcyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2Vu OF9lbWl0X2ZsdXNoX3hjczsKIAllbmdpbmUtPmVtaXRfaW5pdF9icmVhZGNydW1iID0gZ2VuOF9l bWl0X2luaXRfYnJlYWRjcnVtYjsKIAllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2Vu OF9lbWl0X2ZpbmlfYnJlYWRjcnVtYl94Y3M7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUp ID49IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKSB7CiAJCWVu Z2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl94 Y3M7CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjEyX2VtaXRfZmx1c2hfeGNzOwogCX0KQEAg LTY3MCw3ICs2NzAsNyBAQCBzdGF0aWMgdm9pZCBndWNfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgdm9pZCByY3Nfc3VibWlzc2lvbl9vdmVy cmlkZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3dpdGNoIChJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSkgeworCXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkp IHsKIAljYXNlIDEyOgogCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW4xMl9lbWl0X2ZsdXNoX3Jj czsKIAkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjEyX2VtaXRfZmluaV9icmVh ZGNydW1iX3JjczsKQEAgLTcwMCw3ICs3MDAsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f c2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIFRoZSBzZXR1cCByZWxp ZXMgb24gc2V2ZXJhbCBhc3N1bXB0aW9ucyAoZS5nLiBpcnFzIGFsd2F5cyBlbmFibGVkKQogCSAq IHRoYXQgYXJlIG9ubHkgdmFsaWQgb24gZ2VuMTErCiAJICovCi0JR0VNX0JVR19PTihJTlRFTF9H RU4oaTkxNSkgPCAxMSk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkgPCAxMSk7CiAK IAl0YXNrbGV0X3NldHVwKCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0LCBndWNfc3VibWlzc2lv bl90YXNrbGV0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfaHVjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwppbmRleCA1 NmQyMTQ0ZGM2YTAuLmZjNTM4N2I0MTBhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfaHVjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfaHVjLmMKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBpbnRlbF9odWNfaW5pdF9lYXJseShzdHJ1 Y3QgaW50ZWxfaHVjICpodWMpCiAKIAlpbnRlbF91Y19md19pbml0X2Vhcmx5KCZodWMtPmZ3LCBJ TlRFTF9VQ19GV19UWVBFX0hVQyk7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewogCQlodWMtPnN0YXR1cy5yZWcgPSBHRU4x MV9IVUNfS0VSTkVMX0xPQURfSU5GTzsKIAkJaHVjLT5zdGF0dXMubWFzayA9IEhVQ19MT0FEX1NV Q0NFU1NGVUw7CiAJCWh1Yy0+c3RhdHVzLnZhbHVlID0gSFVDX0xPQURfU1VDQ0VTU0ZVTDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCmluZGV4IDZhYmI4ZjJkYzMzZC4uNmMyYmY0 YjZiYzEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKQEAgLTIzLDcgKzIz LDcgQEAgc3RhdGljIHZvaWQgdWNfZXhwYW5kX2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgaW50ZWxf dWMgKnVjKQogCQlyZXR1cm47CiAKIAkvKiBEb24ndCBlbmFibGUgR3VDL0h1QyBvbiBwcmUtR2Vu MTIgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgMTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpIDwgMTIpIHsKIAkJaTkxNS0+cGFyYW1zLmVuYWJsZV9ndWMgPSAwOwogCQlyZXR1cm47CiAJ fQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHN0YXRpYyBpbnQgX191Y19pbml0X2h3KHN0cnVjdCBpbnRl bF91YyAqdWMpCiAKIAkvKiBXYUVuYWJsZXVLZXJuZWxIZWFkZXJWYWxpZEZpeDpza2wgKi8KIAkv KiBXYUVuYWJsZUd1Q0Jvb3RIYXNoQ2hlY2tOb3RTZXQ6c2tsLGJ4dCxrYmwgKi8KLQlpZiAoSVNf R0VOKGk5MTUsIDkpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gOSkKIAkJYXR0ZW1wdHMg PSAzOwogCWVsc2UKIAkJYXR0ZW1wdHMgPSAxOwotLSAKMi4zMS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK