Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkroQ-00G1Pl-OC for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Mar 2024 20:36:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rkroP-0032Mk-BL for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Mar 2024 20:36:25 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkroO-0032MX-BH for pgsql-hackers@lists.postgresql.org; Thu, 14 Mar 2024 20:36:25 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rkroF-004WNw-Bo for pgsql-hackers@lists.postgresql.org; Thu, 14 Mar 2024 20:36:23 +0000 Received: from [172.30.1.222] (unknown [172.30.1.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 4B604E20E2D; Thu, 14 Mar 2024 23:36:12 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1710448572; bh=PBRh6eSY8lV95E7GOzU5aZmRvJKRkBk/gtgmuTzz5HA=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=NjLtPv+Tl0KhP+i/qiWspOeQD7LH5LtH+zTji6khljPetM6aPUeiDMjF52ZotcVpm 0+lbzS3+2edJEaBOex2O4wvn6qzIACUat80iyOJFI396u+eR9udqPlEDfahQfwfDaJ z28+5Hp01PpEHZIU6CcrGuOkW+pMKbflNpyWhtC7WSxaL5R3U7ZbHnv32CDsX56El2 rcl3TP9yBzlDuPp2TjuYGQxFq1ItU7KhAhPVZHgBKq8nzVhuRNKi5k73+6eRt/b9Nj WrKxkbqgGjK5AUkSerWausxGG00kZVWowiDK8LY8LcnL2wiiRxK6CXjGWXCu8tmOAH o9T8RNTtRtNfA== Content-Type: multipart/mixed; boundary="------------2YrWVz3rzfPlOjamePaoJg1W" Message-ID: Date: Thu, 14 Mar 2024 23:36:12 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add the ability to limit the amount of memory that can be allocated to backends. From: "Anton A. Melnikov" To: Aleksander Alekseev , "pgsql-hackers@lists.postgresql.org" Cc: Tomas Vondra , Andres Freund , Andrei Lepikhov , Stephen Frost , reid.thompson@crunchydata.com, Arne Roland , vignesh C , Justin Pryzby , Ibrar Ahmed , "stephen.frost" References: <7912c911af51d5cf28c611190bf3d463b9209343.camel@crunchydata.com> <4edafedc0f8acb12a2979088ac1317bd7dd42145.camel@crunchydata.com> <268e0ac7-8a81-4d65-8b40-b62c4b3f1bf9@postgrespro.ru> <48548d40-634b-4943-a737-3c9d95eacf06@postgrespro.ru> <8fcb4406-49f5-4069-b8e9-197a38004ddd@postgrespro.ru> <20231024024435.yaqrajcchcliwhjl@awork3.anarazel.de> <98646b96-6dcf-8d8a-3daf-837f25f8b1e3@enterprisedb.com> <1c5f1856-817d-45e5-8e1a-acd95c6dd335@enterprisedb.com> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2YrWVz3rzfPlOjamePaoJg1W Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 13.03.2024 10:41, Anton A. Melnikov wrote: > Here is a version updated for the current master. > During patch updating i mistakenly added double counting of deallocatated blocks. That's why the tests in the patch tester failed. Fixed it and squashed fix 0002 with 0001. Here is fixed version. With the best wishes! -- Anton A. Melnikov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------2YrWVz3rzfPlOjamePaoJg1W Content-Type: text/x-patch; charset=UTF-8; name="v20240314-0001-Add-tracking-of-backend-memory-allocated.patch" Content-Disposition: attachment; filename*0="v20240314-0001-Add-tracking-of-backend-memory-allocated.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA3YTA5MjVhMzhhY2ZiOWE5NDUwODczMThhNWQ5MWZhZTQ2ODBkYjBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAyNiBEZWMgMjAyMyAxNzo1NDo0MCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMS8yXSBBZGQgdHJhY2tpbmcgb2YgYmFja2VuZCBtZW1vcnkgYWxsb2NhdGVkCgpB ZGQgdHJhY2tpbmcgb2YgYmFja2VuZCBtZW1vcnkgYWxsb2NhdGVkIGluIHRvdGFsIGFuZCBi eSBhbGxvY2F0aW9uCnR5cGUgKGFzZXQsIGRzbSwgZ2VuZXJhdGlvbiwgc2xhYikgYnkgcHJv Y2Vzcy4KCmFsbG9jYXRlZF9ieXRlcyB0cmFja3MgdGhlIGN1cnJlbnQgYnl0ZXMgb2YgbWVt b3J5IGFsbG9jYXRlZCB0byB0aGUKYmFja2VuZCBwcm9jZXNzLiBhc2V0X2FsbG9jYXRlZF9i eXRlcywgZHNtX2FsbG9jYXRlZF9ieXRlcywKZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXMg YW5kIHNsYWJfYWxsb2NhdGVkX2J5dGVzIHRyYWNrIHRoZQphbGxvY2F0aW9uIGJ5IHR5cGUg Zm9yIHRoZSBiYWNrZW5kIHByb2Nlc3MuIFRoZXkgYXJlIHVwZGF0ZWQgZm9yIHRoZQpwcm9j ZXNzIGFzIG1lbW9yeSBpcyBtYWxsb2MnZC9mcmVlZC4gIE1lbW9yeSBhbGxvY2F0ZWQgdG8g aXRlbXMgb24KdGhlIGZyZWVsaXN0IGlzIGluY2x1ZGVkLiAgRHluYW1pYyBzaGFyZWQgbWVt b3J5IGFsbG9jYXRpb25zIGFyZQppbmNsdWRlZCBvbmx5IGluIHRoZSB2YWx1ZSBkaXNwbGF5 ZWQgZm9yIHRoZSBiYWNrZW5kIHRoYXQgY3JlYXRlZAp0aGVtLCB0aGV5IGFyZSBub3QgaW5j bHVkZWQgaW4gdGhlIHZhbHVlIGZvciBiYWNrZW5kcyB0aGF0IGFyZQphdHRhY2hlZCB0byB0 aGVtIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZy4gRFNNIGFsbG9jYXRpb25zIHRoYXQgYXJl Cm5vdCBkZXN0cm95ZWQgYnkgdGhlIGNyZWF0aW5nIHByb2Nlc3MgcHJpb3IgdG8gaXQncyBl eGl0IGFyZQpjb25zaWRlcmVkIGxvbmcgbGl2ZWQgYW5kIGFyZSB0cmFja2VkIGluIGEgZ2xv YmFsIGNvdW50ZXIKZ2xvYmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXMuIFdlIGxpbWl0IHRoZSBm bG9vciBvZiBhbGxvY2F0aW9uCmNvdW50ZXJzIHRvIHplcm8uIENyZWF0ZWQgdmlld3MgcGdf c3RhdF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24gYW5kCnBnX3N0YXRfbWVtb3J5X2FsbG9j YXRpb24gZm9yIGFjY2VzcyB0byB0aGVzZSB0cmFja2Vycy4KLS0tCiBkb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgIHwgIDM0 ICsrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMgICAgICAgICAgICAgICB8ICAx MSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYyAgICAgICAgICB8ICA3 OCArKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMg fCAxMTQgKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAg ICAgICAgIHwgIDg0ICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YyAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMgICAg ICAgICAgICAgICB8ICAxNyArKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9u LmMgICAgICAgICB8ICAxMyArKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMgICAg ICAgICAgICAgICB8ICAyMiArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAg ICAgICAgICAgICB8ICAxNyArKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAg ICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5o ICAgICAgICAgIHwgMTQ0ICsrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgICAgICAgICB8ICAyNyArKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3RhdHMub3V0ICAgICAgICAgfCAgMzYgKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9z dGF0cy5zcWwgICAgICAgICAgICAgIHwgIDIwICsrCiAxNyBmaWxlcyBjaGFuZ2VkLCA4Njcg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRl eCA4NzM2ZWFjMjg0Li40MWQ3ODhiZTQ1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ1 OTksNiArNDU5OSwyNTIgQEAgZGVzY3JpcHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGlu aXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFibGUgc3RvcmFnZQogCiAgPC9zZWN0 Mj4KIAorIDxzZWN0MiBpZD0ibW9uaXRvcmluZy1wZy1zdGF0LW1lbW9yeS1hbGxvY2F0aW9u LXZpZXciPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlv bjwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJpbWFyeT5w Z19zdGF0X21lbW9yeV9hbGxvY2F0aW9uPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKwor ICA8cGFyYT4KKyAgIFRoZSA8c3RydWN0bmFtZT5wZ19zdGF0X21lbW9yeV9hbGxvY2F0aW9u PC9zdHJ1Y3RuYW1lPiB2aWV3IHdpbGwgaGF2ZSBvbmUKKyAgIHJvdyBwZXIgc2VydmVyIHBy b2Nlc3MsIHNob3dpbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgY3VycmVudCBtZW1v cnkKKyAgIGFsbG9jYXRpb24gb2YgdGhhdCBwcm9jZXNzIGluIHRvdGFsIGFuZCBieSBhbGxv Y2F0b3IgdHlwZS4gRHVlIHRvIHRoZQorICAgZHluYW1pYyBuYXR1cmUgb2YgbWVtb3J5IGFs bG9jYXRpb25zIHRoZSBhbGxvY2F0ZWQgYnl0ZXMgdmFsdWVzIG1heSBub3QgYmUKKyAgIGV4 YWN0IGJ1dCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIGludGVuZGVkIHB1cnBvc2Vz LiBEeW5hbWljIHNoYXJlZAorICAgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbmNsdWRlZCBv bmx5IGluIHRoZSB2YWx1ZSBkaXNwbGF5ZWQgZm9yIHRoZSBiYWNrZW5kCisgICB0aGF0IGNy ZWF0ZWQgdGhlbSwgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSB2YWx1ZSBmb3IgYmFj a2VuZHMgdGhhdCBhcmUKKyAgIGF0dGFjaGVkIHRvIHRoZW0gdG8gYXZvaWQgZG91YmxlIGNv dW50aW5nLiAgVXNlCisgICA8ZnVuY3Rpb24+cGdfc2l6ZV9wcmV0dHk8L2Z1bmN0aW9uPiBk ZXNjcmliZWQgaW4KKyAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1hZG1pbi1kYnNpemUi Lz4gdG8gbWFrZSB0aGVzZSB2YWx1ZXMgbW9yZSBlYXNpbHkKKyAgIHJlYWRhYmxlLgorICA8 L3BhcmE+CisKKyAgPHRhYmxlIGlkPSJwZy1zdGF0LW1lbW9yeS1hbGxvY2F0aW9uLXZpZXci IHhyZWZsYWJlbD0icGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbiI+CisgICA8dGl0bGU+PHN0 cnVjdG5hbWU+cGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbjwvc3RydWN0bmFtZT4gVmlldzwv dGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRhdGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgT0lEIG9mIHRoZSBkYXRhYmFzZSB0aGlzIGJhY2tlbmQgaXMgY29ubmVjdGVk IHRvCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBpZDwvc3RydWN0Zmll bGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBQcm9jZXNzIElEIG9mIHRoaXMgYmFja2VuZAorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5hbGxvY2F0ZWRfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5i aWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTWVtb3J5 IGN1cnJlbnRseSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIGluIGJ5dGVzLiBUaGlzIGlz IHRoZSBiYWxhbmNlCisgICAgICBvZiBieXRlcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIGJ5IHRo aXMgYmFja2VuZC4gRHluYW1pYyBzaGFyZWQgbWVtb3J5CisgICAgICBhbGxvY2F0aW9ucyBh cmUgaW5jbHVkZWQgb25seSBpbiB0aGUgdmFsdWUgZGlzcGxheWVkIGZvciB0aGUgYmFja2Vu ZCB0aGF0CisgICAgICBjcmVhdGVkIHRoZW0sIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0 aGUgdmFsdWUgZm9yIGJhY2tlbmRzIHRoYXQgYXJlCisgICAgICBhdHRhY2hlZCB0byB0aGVt IHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZy4KKyAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5hc2V0X2FsbG9jYXRlZF9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1lbW9yeSBj dXJyZW50bHkgYWxsb2NhdGVkIHRvIHRoaXMgYmFja2VuZCBpbiBieXRlcyB2aWEgdGhlIGFs bG9jYXRpb24KKyAgICAgICBzZXQgYWxsb2NhdG9yLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5kc21fYWxsb2NhdGVkX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTWVt b3J5IGN1cnJlbnRseSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIGluIGJ5dGVzIHZpYSB0 aGUgZHluYW1pYworICAgICAgIHNoYXJlZCBtZW1vcnkgYWxsb2NhdG9yLiBVcG9uIHByb2Nl c3MgZXhpdCwgZHNtIGFsbG9jYXRpb25zIHRoYXQgaGF2ZQorICAgICAgIG5vdCBiZWVuIGZy ZWVkIGFyZSBjb25zaWRlcmVkIGxvbmcgbGl2ZWQgYW5kIGFkZGVkIHRvCisgICAgICAgPHN0 cnVjdGZpZWxkPmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gZm91 bmQgaW4gdGhlCisgICAgICAgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LWds b2JhbC1tZW1vcnktYWxsb2NhdGlvbi12aWV3Ij4KKyAgICAgICA8c3RydWN0bmFtZT5wZ19z dGF0X2dsb2JhbF9tZW1vcnlfYWxsb2NhdGlvbjwvc3RydWN0bmFtZT48L2xpbms+IHZpZXcu CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmdlbmVyYXRpb25fYWxsb2Nh dGVkX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTWVtb3J5IGN1cnJlbnRseSBhbGxvY2F0ZWQg dG8gdGhpcyBiYWNrZW5kIGluIGJ5dGVzIHZpYSB0aGUgZ2VuZXJhdGlvbgorICAgICAgIGFs bG9jYXRvci4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2xhYl9hbGxv Y2F0ZWRfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBNZW1vcnkgY3VycmVudGx5IGFsbG9jYXRl ZCB0byB0aGlzIGJhY2tlbmQgaW4gYnl0ZXMgdmlhIHRoZSBzbGFiCisgICAgICAgYWxsb2Nh dG9yLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgPC90Ym9k eT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisgPC9zZWN0Mj4KKworIDxzZWN0MiBp ZD0ibW9uaXRvcmluZy1wZy1zdGF0LWdsb2JhbC1tZW1vcnktYWxsb2NhdGlvbi12aWV3Ij4K KyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0aW9u PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnBn X3N0YXRfZ2xvYmFsLW1lbW9yeV9hbGxvY2F0aW9uPC9wcmltYXJ5PgorICA8L2luZGV4dGVy bT4KKworICA8cGFyYT4KKyAgIFRoZSA8c3RydWN0bmFtZT5wZ19zdGF0X2dsb2JhbF9tZW1v cnlfYWxsb2NhdGlvbjwvc3RydWN0bmFtZT4gdmlldyB3aWxsCisgICBoYXZlIG9uZSByb3cg c2hvd2luZyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGN1cnJlbnQgc2hhcmVkIG1lbW9yeQor ICAgYWxsb2NhdGlvbnMuIER1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YgbWVtb3J5IGFs bG9jYXRpb25zIHRoZSBhbGxvY2F0ZWQKKyAgIGJ5dGVzIHZhbHVlcyBtYXkgbm90IGJlIGV4 YWN0IGJ1dCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdGhlIGludGVuZGVkCisgICBwdXJw b3Nlcy4gVXNlIDxmdW5jdGlvbj5wZ19zaXplX3ByZXR0eTwvZnVuY3Rpb24+IGRlc2NyaWJl ZCBpbgorICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLWFkbWluLWRic2l6ZSIvPiB0byBt YWtlIHRoZSBieXRlIHBvcHVsYXRlZCB2YWx1ZXMKKyAgIG1vcmUgZWFzaWx5IHJlYWRhYmxl LgorICA8L3BhcmE+CisKKyAgPHRhYmxlIGlkPSJwZy1zdGF0LWdsb2JhbC1tZW1vcnktYWxs b2NhdGlvbi12aWV3IiB4cmVmbGFiZWw9InBnX3N0YXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0 aW9uIj4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2dsb2JhbF9tZW1vcnlfYWxs b2NhdGlvbjwvc3RydWN0bmFtZT4gVmlldzwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEi PgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg Q29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2Ny aXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmRhdGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgT0lEIG9mIHRoZSBkYXRhYmFz ZSB0aGlzIGJhY2tlbmQgaXMgY29ubmVjdGVkIHRvCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPnNoYXJlZF9tZW1vcnlfc2l6ZV9tYjwvc3RydWN0ZmllbGQ+IDx0eXBl PmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBS ZXBvcnRzIHRoZSBzaXplIG9mIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgYXJlYSwgcm91bmRl ZCB1cCB0byB0aGUKKyAgICAgICBuZWFyZXN0IG1lZ2FieXRlLiBTZWUgPHhyZWYgbGlua2Vu ZD0iZ3VjLXNoYXJlZC1tZW1vcnktc2l6ZSIvPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+c2hhcmVkX21lbW9yeV9zaXplX2luX2h1Z2VfcGFnZXM8L3N0cnVjdGZp ZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgor ICAgICAgUmVwb3J0cyB0aGUgbnVtYmVyIG9mIGh1Z2UgcGFnZXMgdGhhdCBhcmUgbmVlZGVk IGZvciB0aGUgbWFpbiBzaGFyZWQKKyAgICAgIG1lbW9yeSBhcmVhIGJhc2VkIG9uIHRoZSBz cGVjaWZpZWQgaHVnZV9wYWdlX3NpemUuIElmIGh1Z2UgcGFnZXMgYXJlIG5vdAorICAgICAg c3VwcG9ydGVkLCB0aGlzIHdpbGwgYmUgLTEuIFNlZQorICAgICAgPHhyZWYgbGlua2VuZD0i Z3VjLXNoYXJlZC1tZW1vcnktc2l6ZS1pbi1odWdlLXBhZ2VzIi8+LgorICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgTG9uZyBsaXZlZCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5IGN1 cnJlbnRseSBhbGxvY2F0ZWQgdG8gdGhlCisgICAgICAgZGF0YWJhc2UuIFVwb24gcHJvY2Vz cyBleGl0LCBkc20gYWxsb2NhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIGZyZWVkCisgICAg ICAgYXJlIGNvbnNpZGVyZWQgbG9uZyBsaXZlZCBhbmQgYWRkZWQgdG8KKyAgICAgICA8c3Ry dWN0ZmllbGQ+Z2xvYmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXM8L3N0cnVjdGZpZWxkPi4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYXNldF9hbGxvY2F0ZWRf Ynl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBTdW0gdG90YWwgb2YgPHN0cnVjdGZpZWxkPmFzZXRf YWxsb2NhdGVkX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gZm9yIGFsbAorICAgICAgIGJhY2tlbmQg cHJvY2Vzc2VzIGZyb20KKyAgICAgICA8bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0 YXQtbWVtb3J5LWFsbG9jYXRpb24tdmlldyI+CisgICAgICAgPHN0cnVjdG5hbWU+cGdfc3Rh dF9tZW1vcnlfYWxsb2NhdGlvbjwvc3RydWN0bmFtZT48L2xpbms+IHZpZXcuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXM8 L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBTdW0gdG90YWwgb2YgPHN0cnVjdGZpZWxkPmRzbV9hbGxvY2F0 ZWRfYnl0ZXM8L3N0cnVjdGZpZWxkPiBmb3IgYWxsCisgICAgICAgYmFja2VuZCBwcm9jZXNz ZXMgZnJvbQorICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0b3JpbmctcGctc3RhdC1tZW1v cnktYWxsb2NhdGlvbi12aWV3Ij4KKyAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X21lbW9y eV9hbGxvY2F0aW9uPC9zdHJ1Y3RuYW1lPjwvbGluaz4gdmlldy4KKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXM8 L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBTdW0gdG90YWwgb2YgPHN0cnVjdGZpZWxkPmdlbmVyYXRpb25f YWxsb2NhdGVkX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gZm9yCisgICAgICAgYWxsIGJhY2tlbmQg cHJvY2Vzc2VzIGZyb20KKyAgICAgICA8bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0 YXQtbWVtb3J5LWFsbG9jYXRpb24tdmlldyI+CisgICAgICAgPHN0cnVjdG5hbWU+cGdfc3Rh dF9tZW1vcnlfYWxsb2NhdGlvbjwvc3RydWN0bmFtZT48L2xpbms+IHZpZXcuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX3NsYWJfYWxsb2NhdGVkX2J5dGVz PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgU3VtIHRvdGFsIG9mIDxzdHJ1Y3RmaWVsZD5zbGFiX2FsbG9j YXRlZF9ieXRlczwvc3RydWN0ZmllbGQ+IGZvciBhbGwKKyAgICAgICBiYWNrZW5kIHByb2Nl c3NlcyBmcm9tCisgICAgICAgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LW1l bW9yeS1hbGxvY2F0aW9uLXZpZXciPgorICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfbWVt b3J5X2FsbG9jYXRpb248L3N0cnVjdG5hbWU+PC9saW5rPiB2aWV3LgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgor ICA8L3RhYmxlPgorCisgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0ibW9uaXRvcmluZy1zdGF0 cy1mdW5jdGlvbnMiPgogICA8dGl0bGU+U3RhdGlzdGljcyBGdW5jdGlvbnM8L3RpdGxlPgog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMDQyMjdhNzJkMS4u NjFmZjRhNTliNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAt MTM3NSwzICsxMzc1LDM3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0 YXRzIEFTCiAKIENSRUFURSBWSUVXIHBnX3dhaXRfZXZlbnRzIEFTCiAgICAgU0VMRUNUICog RlJPTSBwZ19nZXRfd2FpdF9ldmVudHMoKTsKKworQ1JFQVRFIFZJRVcgcGdfc3RhdF9tZW1v cnlfYWxsb2NhdGlvbiBBUworICAgIFNFTEVDVAorICAgICAgICBTLmRhdGlkIEFTIGRhdGlk LAorICAgICAgICBTLnBpZCwKKyAgICAgICAgUy5hbGxvY2F0ZWRfYnl0ZXMsCisgICAgICAg IFMuYXNldF9hbGxvY2F0ZWRfYnl0ZXMsCisgICAgICAgIFMuZHNtX2FsbG9jYXRlZF9ieXRl cywKKyAgICAgICAgUy5nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcywKKyAgICAgICAgUy5z bGFiX2FsbG9jYXRlZF9ieXRlcworICAgIEZST00gcGdfc3RhdF9nZXRfbWVtb3J5X2FsbG9j YXRpb24oTlVMTCkgQVMgUworICAgICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgQVMgRCBP TiAoUy5kYXRpZCA9IEQub2lkKTsKKworQ1JFQVRFIFZJRVcgcGdfc3RhdF9nbG9iYWxfbWVt b3J5X2FsbG9jYXRpb24gQVMKK1dJVEggc3VtcyBBUyAoCisgICAgU0VMRUNUCisgICAgICAg IFNVTShhc2V0X2FsbG9jYXRlZF9ieXRlcykgQVMgdG90YWxfYXNldF9hbGxvY2F0ZWRfYnl0 ZXMsCisgICAgICAgIFNVTShkc21fYWxsb2NhdGVkX2J5dGVzKSBBUyB0b3RhbF9kc21fYWxs b2NhdGVkX2J5dGVzLAorICAgICAgICBTVU0oZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXMp IEFTIHRvdGFsX2dlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzLAorICAgICAgICBTVU0oc2xh Yl9hbGxvY2F0ZWRfYnl0ZXMpIEFTIHRvdGFsX3NsYWJfYWxsb2NhdGVkX2J5dGVzCisgICAg RlJPTQorICAgICAgICBwZ19zdGF0X21lbW9yeV9hbGxvY2F0aW9uCispCitTRUxFQ1QKKyAg ICAgICAgUy5kYXRpZCBBUyBkYXRpZCwKKyAgICAgICAgY3VycmVudF9zZXR0aW5nKCdzaGFy ZWRfbWVtb3J5X3NpemUnLCB0cnVlKSBhcyBzaGFyZWRfbWVtb3J5X3NpemUsCisgICAgICAg IChjdXJyZW50X3NldHRpbmcoJ3NoYXJlZF9tZW1vcnlfc2l6ZV9pbl9odWdlX3BhZ2VzJywg dHJ1ZSkpOjppbnRlZ2VyIGFzIHNoYXJlZF9tZW1vcnlfc2l6ZV9pbl9odWdlX3BhZ2VzLAor ICAgICAgICBTLmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzLAorICAgICAgICBzdW1zLnRv dGFsX2FzZXRfYWxsb2NhdGVkX2J5dGVzLAorICAgICAgICBzdW1zLnRvdGFsX2RzbV9hbGxv Y2F0ZWRfYnl0ZXMsCisgICAgICAgIHN1bXMudG90YWxfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRf Ynl0ZXMsCisgICAgICAgIHN1bXMudG90YWxfc2xhYl9hbGxvY2F0ZWRfYnl0ZXMKKyAgICBG Uk9NIHN1bXMsIHBnX3N0YXRfZ2V0X2dsb2JhbF9tZW1vcnlfYWxsb2NhdGlvbigpIEFTIFMK KyAgICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEFTIEQgT04gKFMuZGF0aWQgPSBELm9p ZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jCmluZGV4IGMyZTMzYTdlNDMuLmI5NTA2NDA2NDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jCkBAIC04MDIsNiArODAyLDE1IEBAIGRzbV9kZXRh Y2hfYWxsKHZvaWQpCiB2b2lkCiBkc21fZGV0YWNoKGRzbV9zZWdtZW50ICpzZWcpCiB7CisJ LyoKKwkgKiBSZXRhaW4gbWFwcGVkX3NpemUgdG8gcGFzcyBpbnRvIGRlc3Ryb3kgY2FsbCBp biBjYXNlcyB3aGVyZSB0aGUgZGV0YWNoCisJICogaXMgdGhlIGxhc3QgcmVmZXJlbmNlLiBt YXBwZWRfc2l6ZSBpcyB6ZXJvZWQgYXMgcGFydCBvZiB0aGUgZGV0YWNoCisJICogcHJvY2Vz cywgYnV0IGlzIG5lZWRlZCBsYXRlciBpbiB0aGVzZSBjYXNlcyBmb3IgZHNtX2FsbG9jYXRl ZF9ieXRlcworCSAqIGFjY291bnRpbmcuCisJICovCisJU2l6ZQkJbG9jYWxfc2VnX21hcHBl ZF9zaXplID0gc2VnLT5tYXBwZWRfc2l6ZTsKKwlTaXplCSAgICpwdHJfbG9jYWxfc2VnX21h cHBlZF9zaXplID0gJmxvY2FsX3NlZ19tYXBwZWRfc2l6ZTsKKwogCS8qCiAJICogSW52b2tl IHJlZ2lzdGVyZWQgY2FsbGJhY2tzLiAgSnVzdCBpbiBjYXNlIG9uZSBvZiB0aG9zZSBjYWxs YmFja3MKIAkgKiB0aHJvd3MgYSBmdXJ0aGVyIGVycm9yIHRoYXQgYnJpbmdzIHVzIGJhY2sg aGVyZSwgcG9wIHRoZSBjYWxsYmFjawpAQCAtODgyLDcgKzg5MSw3IEBAIGRzbV9kZXRhY2go ZHNtX3NlZ21lbnQgKnNlZykKIAkJCSAqLwogCQkJaWYgKGlzX21haW5fcmVnaW9uX2RzbV9o YW5kbGUoc2VnLT5oYW5kbGUpIHx8CiAJCQkJZHNtX2ltcGxfb3AoRFNNX09QX0RFU1RST1ks IHNlZy0+aGFuZGxlLCAwLCAmc2VnLT5pbXBsX3ByaXZhdGUsCi0JCQkJCQkJJnNlZy0+bWFw cGVkX2FkZHJlc3MsICZzZWctPm1hcHBlZF9zaXplLCBXQVJOSU5HKSkKKwkJCQkJCQkmc2Vn LT5tYXBwZWRfYWRkcmVzcywgcHRyX2xvY2FsX3NlZ19tYXBwZWRfc2l6ZSwgV0FSTklORykp CiAJCQl7CiAJCQkJTFdMb2NrQWNxdWlyZShEeW5hbWljU2hhcmVkTWVtb3J5Q29udHJvbExv Y2ssIExXX0VYQ0xVU0lWRSk7CiAJCQkJaWYgKGlzX21haW5fcmVnaW9uX2RzbV9oYW5kbGUo c2VnLT5oYW5kbGUpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNt X2ltcGwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKaW5kZXggOGRk NjY5ZTBjZS4uYWY2N2U1NWJkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtX2ltcGwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5j CkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9kc21faW1wbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxz L2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKQEAgLTIzMiw2ICsyMzMs MTQgQEAgZHNtX2ltcGxfcG9zaXgoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6 ZSByZXF1ZXN0X3NpemUsCiAJCQkJCQkJbmFtZSkpKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJ fQorCisJCS8qCisJCSAqIERldGFjaCBhbmQgZGVzdHJveSBwYXNzIHRocm91Z2ggaGVyZSwg b25seSBkZWNyZWFzZSB0aGUgbWVtb3J5CisJCSAqIHNob3duIGFsbG9jYXRlZCBpbiBwZ19z dGF0X2FjdGl2aXR5IHdoZW4gdGhlIGNyZWF0b3IgZGVzdHJveXMgdGhlCisJCSAqIGFsbG9j YXRpb24uCisJCSAqLworCQlpZiAob3AgPT0gRFNNX09QX0RFU1RST1kpCisJCQlwZ3N0YXRf cmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZSgqbWFwcGVkX3NpemUsIFBHX0FMTE9D X0RTTSk7CiAJCSptYXBwZWRfYWRkcmVzcyA9IE5VTEw7CiAJCSptYXBwZWRfc2l6ZSA9IDA7 CiAJCWlmIChvcCA9PSBEU01fT1BfREVTVFJPWSAmJiBzaG1fdW5saW5rKG5hbWUpICE9IDAp CkBAIC0zMzIsNiArMzQxLDMzIEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hh bmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJbmFtZSkpKTsKIAkJcmV0 dXJuIGZhbHNlOwogCX0KKworCS8qCisJICogQXR0YWNoIGFuZCBjcmVhdGUgcGFzcyB0aHJv dWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQgbWVtb3J5CisJICogYWxsb2NhdGVkIGlu IHBnX3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHByb2Nlc3MuCisJICovCisJaWYg KG9wID09IERTTV9PUF9DUkVBVEUpCisJeworCQkvKgorCQkgKiBQb3NpeCBjcmVhdGlvbiBj YWxscyBkc21faW1wbF9wb3NpeF9yZXNpemUgaW1wbHlpbmcgdGhhdCByZXNpemluZworCQkg KiBvY2N1cnMgb3IgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuIEFzIGltcGxlbWVudGVk CisJCSAqIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZSB1dGlsaXplcyBmYWxsb2NhdGUgb3IgdHJ1 bmNhdGUsIHBhc3NpbmcgdGhlCisJCSAqIHdob2xlIG5ldyBzaXplIGFzIGlucHV0LCBncm93 aW5nIHRoZSBhbGxvY2F0aW9uIGFzIG5lZWRlZCAob25seQorCQkgKiB0cnVuY2F0ZSBzdXBw b3J0cyBzaHJpbmtpbmcpLiBXZSB1cGRhdGUgYnkgcmVwbGFjaW5nIHRoZSBvbGQKKwkJICog YWxsb2NhdGlvbiB3aXRoIHRoZSBuZXcuCisJCSAqLworI2lmIGRlZmluZWQoSEFWRV9QT1NJ WF9GQUxMT0NBVEUpICYmIGRlZmluZWQoX19saW51eF9fKQorCQkvKgorCQkgKiBwb3NpeF9m YWxsb2NhdGUgZG9lcyBub3Qgc2hyaW5rIGFsbG9jYXRpb25zLCBhZGp1c3Qgb25seSBvbgor CQkgKiBhbGxvY2F0aW9uIGluY3JlYXNlLgorCQkgKi8KKwkJaWYgKHJlcXVlc3Rfc2l6ZSA+ ICptYXBwZWRfc2l6ZSkKKwkJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2luY3Jl YXNlKHJlcXVlc3Rfc2l6ZSAtICptYXBwZWRfc2l6ZSwgUEdfQUxMT0NfRFNNKTsKKyNlbHNl CisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2RlY3JlYXNlKCptYXBwZWRfc2l6 ZSwgUEdfQUxMT0NfRFNNKTsKKwkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfaW5j cmVhc2UocmVxdWVzdF9zaXplLCBQR19BTExPQ19EU00pOworI2VuZGlmCisJfQogCSptYXBw ZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXplOwog CWNsb3NlKGZkKTsKQEAgLTUzOCw2ICs1NzQsMTQgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Ag b3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCQluYW1l KSkpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CisKKwkJLyoKKwkJICogRGV0YWNoIGFuZCBk ZXN0cm95IHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IGRlY3JlYXNlIHRoZSBtZW1vcnkKKwkJ ICogc2hvd24gYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0aXZpdHkgd2hlbiB0aGUgY3JlYXRv ciBkZXN0cm95cyB0aGUKKwkJICogYWxsb2NhdGlvbi4KKwkJICovCisJCWlmIChvcCA9PSBE U01fT1BfREVTVFJPWSkKKwkJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2RlY3Jl YXNlKCptYXBwZWRfc2l6ZSwgUEdfQUxMT0NfRFNNKTsKIAkJKm1hcHBlZF9hZGRyZXNzID0g TlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9Z ICYmIHNobWN0bChpZGVudCwgSVBDX1JNSUQsIE5VTEwpIDwgMCkKQEAgLTU4NSw2ICs2Mjks MTMgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXpl IHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CisK KwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IHVw ZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5 IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JF QVRFKQorCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19pbmNyZWFzZShyZXF1ZXN0 X3NpemUsIFBHX0FMTE9DX0RTTSk7CiAJKm1hcHBlZF9hZGRyZXNzID0gYWRkcmVzczsKIAkq bWFwcGVkX3NpemUgPSByZXF1ZXN0X3NpemU7CiAKQEAgLTY1Myw2ICs3MDQsMTMgQEAgZHNt X2ltcGxfd2luZG93cyhkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXplIHJlcXVl c3Rfc2l6ZSwKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCisJCS8qCisJCSAqIERldGFjaCBh bmQgZGVzdHJveSBwYXNzIHRocm91Z2ggaGVyZSwgb25seSBkZWNyZWFzZSB0aGUgbWVtb3J5 CisJCSAqIHNob3duIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5IHdoZW4gdGhlIGNy ZWF0b3IgZGVzdHJveXMgdGhlCisJCSAqIGFsbG9jYXRpb24uCisJCSAqLworCQlpZiAob3Ag PT0gRFNNX09QX0RFU1RST1kpCisJCQlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19k ZWNyZWFzZSgqbWFwcGVkX3NpemUsIFBHX0FMTE9DX0RTTSk7CiAJCSppbXBsX3ByaXZhdGUg PSBOVUxMOwogCQkqbWFwcGVkX2FkZHJlc3MgPSBOVUxMOwogCQkqbWFwcGVkX3NpemUgPSAw OwpAQCAtNzY5LDYgKzgyNywxMiBAQCBkc21faW1wbF93aW5kb3dzKGRzbV9vcCBvcCwgZHNt X2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCisJLyoKKwkgKiBBdHRhY2ggYW5kIGNyZWF0ZSBwYXNzIHRocm91Z2ggaGVyZSwgb25s eSB1cGRhdGUgYmFja2VuZCBtZW1vcnkKKwkgKiBhbGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rp dml0eSBmb3IgdGhlIGNyZWF0b3IgcHJvY2Vzcy4KKwkgKi8KKwlpZiAob3AgPT0gRFNNX09Q X0NSRUFURSkKKwkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfaW5jcmVhc2UoaW5m by5SZWdpb25TaXplLCBQR19BTExPQ19EU00pOwogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJl c3M7CiAJKm1hcHBlZF9zaXplID0gaW5mby5SZWdpb25TaXplOwogCSppbXBsX3ByaXZhdGUg PSBobWFwOwpAQCAtODEzLDYgKzg3NywxMyBAQCBkc21faW1wbF9tbWFwKGRzbV9vcCBvcCwg ZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7 CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KKworCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ry b3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBz aG93biBhbGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRl c3Ryb3lzIHRoZQorCQkgKiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJcGdzdGF0X3JlcG9ydF9h bGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2UoKm1hcHBlZF9zaXplLCBQR19BTExPQ19EU00pOwog CQkqbWFwcGVkX2FkZHJlc3MgPSBOVUxMOwogCQkqbWFwcGVkX3NpemUgPSAwOwogCQlpZiAo b3AgPT0gRFNNX09QX0RFU1RST1kgJiYgdW5saW5rKG5hbWUpICE9IDApCkBAIC05MzQsNiAr MTAwNSwxMyBAQCBkc21faW1wbF9tbWFwKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUs IFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJbmFtZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwog CX0KKworCS8qCisJICogQXR0YWNoIGFuZCBjcmVhdGUgcGFzcyB0aHJvdWdoIGhlcmUsIG9u bHkgdXBkYXRlIGJhY2tlbmQgbWVtb3J5CisJICogYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0 aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHByb2Nlc3MuCisJICovCisJaWYgKG9wID09IERTTV9P UF9DUkVBVEUpCisJCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2luY3JlYXNlKHJl cXVlc3Rfc2l6ZSwgUEdfQUxMT0NfRFNNKTsKIAkqbWFwcGVkX2FkZHJlc3MgPSBhZGRyZXNz OwogCSptYXBwZWRfc2l6ZSA9IHJlcXVlc3Rfc2l6ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cm9jLmMKaW5kZXggZjNlMjAwMzhmNC4uMTk1OWI1ZjRlNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jCkBAIC0xODAsNiArMTgwLDcgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAlQ cm9jR2xvYmFsLT5jaGVja3BvaW50ZXJMYXRjaCA9IE5VTEw7CiAJcGdfYXRvbWljX2luaXRf dTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0 LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlByb2NHbG9i YWwtPmdsb2JhbF9kc21fYWxsb2NhdGlvbiwgMCk7CiAKIAkvKgogCSAqIENyZWF0ZSBhbmQg aW5pdGlhbGl6ZSBhbGwgdGhlIFBHUFJPQyBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQuICBUaGVy ZSBhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRf c3RhdHVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5j CmluZGV4IDFjY2Y0YzZkODMuLjI1YjU0NTQ0MWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtNDgsNiArNDgsMjQgQEAgaW50CQkJ cGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemUgPSAxMDI0OwogLyogZXhwb3NlZCBz byB0aGF0IGJhY2tlbmRfcHJvZ3Jlc3MuYyBjYW4gYWNjZXNzIGl0ICovCiBQZ0JhY2tlbmRT dGF0dXMgKk15QkVFbnRyeSA9IE5VTEw7CiAKKy8qCisgKiBNZW1vcnkgYWxsb2NhdGVkIHRv IHRoaXMgYmFja2VuZCBwcmlvciB0byBwZ3N0YXRzIGluaXRpYWxpemF0aW9uLiBNaWdyYXRl ZCB0bworICogc2hhcmVkIG1lbW9yeSBvbiBwZ3N0YXRzIGluaXRpYWxpemF0aW9uLgorICov Cit1aW50NjQJCWxvY2FsX215X2FsbG9jYXRlZF9ieXRlcyA9IDA7Cit1aW50NjQJICAgKm15 X2FsbG9jYXRlZF9ieXRlcyA9ICZsb2NhbF9teV9hbGxvY2F0ZWRfYnl0ZXM7CisKKy8qIE1l bW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIGJ5IHR5cGUgcHJpb3IgdG8gcGdzdGF0 cyBpbml0aWFsaXphdGlvbi4KKyAqIE1pZ3JhdGVkIHRvIHNoYXJlZCBtZW1vcnkgb24gcGdz dGF0cyBpbml0aWFsaXphdGlvbgorICovCit1aW50NjQJCWxvY2FsX215X2FzZXRfYWxsb2Nh dGVkX2J5dGVzID0gMDsKK3VpbnQ2NAkgICAqbXlfYXNldF9hbGxvY2F0ZWRfYnl0ZXMgPSAm bG9jYWxfbXlfYXNldF9hbGxvY2F0ZWRfYnl0ZXM7Cit1aW50NjQJCWxvY2FsX215X2RzbV9h bGxvY2F0ZWRfYnl0ZXMgPSAwOwordWludDY0CSAgICpteV9kc21fYWxsb2NhdGVkX2J5dGVz ID0gJmxvY2FsX215X2RzbV9hbGxvY2F0ZWRfYnl0ZXM7Cit1aW50NjQJCWxvY2FsX215X2dl bmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzID0gMDsKK3VpbnQ2NAkgICAqbXlfZ2VuZXJhdGlv bl9hbGxvY2F0ZWRfYnl0ZXMgPSAmbG9jYWxfbXlfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0 ZXM7Cit1aW50NjQJCWxvY2FsX215X3NsYWJfYWxsb2NhdGVkX2J5dGVzID0gMDsKK3VpbnQ2 NAkgICAqbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXMgPSAmbG9jYWxfbXlfc2xhYl9hbGxvY2F0 ZWRfYnl0ZXM7CiAKIHN0YXRpYyBQZ0JhY2tlbmRTdGF0dXMgKkJhY2tlbmRTdGF0dXNBcnJh eSA9IE5VTEw7CiBzdGF0aWMgY2hhciAqQmFja2VuZEFwcG5hbWVCdWZmZXIgPSBOVUxMOwpA QCAtMzgyLDYgKzQwMCwzMiBAQCBwZ3N0YXRfYmVzdGFydCh2b2lkKQogCWxiZWVudHJ5LnN0 X3Byb2dyZXNzX2NvbW1hbmRfdGFyZ2V0ID0gSW52YWxpZE9pZDsKIAlsYmVlbnRyeS5zdF9x dWVyeV9pZCA9IFVJTlQ2NENPTlNUKDApOwogCisJLyogQWx0ZXIgYWxsb2NhdGlvbiByZXBv cnRpbmcgZnJvbSBsb2NhbCBzdG9yYWdlIHRvIHNoYXJlZCBtZW1vcnkgKi8KKwlwZ3N0YXRf c2V0X2FsbG9jYXRlZF9ieXRlc19zdG9yYWdlKCZNeUJFRW50cnktPmFsbG9jYXRlZF9ieXRl cywKKwkJCQkJCQkJCSAgICZNeUJFRW50cnktPmFzZXRfYWxsb2NhdGVkX2J5dGVzLAorCQkJ CQkJCQkJICAgJk15QkVFbnRyeS0+ZHNtX2FsbG9jYXRlZF9ieXRlcywKKwkJCQkJCQkJCSAg ICZNeUJFRW50cnktPmdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzLAorCQkJCQkJCQkJICAg Jk15QkVFbnRyeS0+c2xhYl9hbGxvY2F0ZWRfYnl0ZXMpOworCisJLyoKKwkgKiBQb3B1bGF0 ZSBzdW0gb2YgbWVtb3J5IGFsbG9jYXRlZCBwcmlvciB0byBwZ3N0YXRzIGluaXRpYWxpemF0 aW9uIHRvCisJICogcGdzdGF0cyBhbmQgemVybyB0aGUgbG9jYWwgdmFyaWFibGUuIFRoaXMg aXMgYSArPSBhc3NpZ25tZW50IGJlY2F1c2UKKwkgKiBJbml0UG9zdGdyZXMgYWxsb2NhdGVz IG1lbW9yeSBhZnRlciBwZ3N0YXRfYmVpbml0IGJ1dCBwcmlvciB0bworCSAqIHBnc3RhdF9i ZXN0YXJ0IHNvIHdlIGhhdmUgYWxsb2NhdGlvbnMgdG8gYm90aCBsb2NhbCBhbmQgc2hhcmVk IG1lbW9yeQorCSAqIHRvIGNvbWJpbmUuCisJICovCisJbGJlZW50cnkuYWxsb2NhdGVkX2J5 dGVzICs9IGxvY2FsX215X2FsbG9jYXRlZF9ieXRlczsKKwlsb2NhbF9teV9hbGxvY2F0ZWRf Ynl0ZXMgPSAwOworCWxiZWVudHJ5LmFzZXRfYWxsb2NhdGVkX2J5dGVzICs9IGxvY2FsX215 X2FzZXRfYWxsb2NhdGVkX2J5dGVzOworCWxvY2FsX215X2FzZXRfYWxsb2NhdGVkX2J5dGVz ID0gMDsKKworCWxiZWVudHJ5LmRzbV9hbGxvY2F0ZWRfYnl0ZXMgKz0gbG9jYWxfbXlfZHNt X2FsbG9jYXRlZF9ieXRlczsKKwlsb2NhbF9teV9kc21fYWxsb2NhdGVkX2J5dGVzID0gMDsK KwlsYmVlbnRyeS5nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyArPSBsb2NhbF9teV9nZW5l cmF0aW9uX2FsbG9jYXRlZF9ieXRlczsKKwlsb2NhbF9teV9nZW5lcmF0aW9uX2FsbG9jYXRl ZF9ieXRlcyA9IDA7CisJbGJlZW50cnkuc2xhYl9hbGxvY2F0ZWRfYnl0ZXMgKz0gbG9jYWxf bXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7CisJbG9jYWxfbXlfc2xhYl9hbGxvY2F0ZWRfYnl0 ZXMgPSAwOworCiAJLyoKIAkgKiB3ZSBkb24ndCB6ZXJvIHN0X3Byb2dyZXNzX3BhcmFtIGhl cmUgdG8gc2F2ZSBjeWNsZXM7IG5vYm9keSBzaG91bGQKIAkgKiBleGFtaW5lIGl0IHVudGls IHN0X3Byb2dyZXNzX2NvbW1hbmQgaGFzIGJlZW4gc2V0IHRvIHNvbWV0aGluZyBvdGhlcgpA QCAtNDQxLDYgKzQ4NSw5IEBAIHBnc3RhdF9iZXNodXRkb3duX2hvb2soaW50IGNvZGUsIERh dHVtIGFyZykKIHsKIAl2b2xhdGlsZSBQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnkgPSBNeUJF RW50cnk7CiAKKwkvKiBTdG9wIHJlcG9ydGluZyBtZW1vcnkgYWxsb2NhdGlvbiBjaGFuZ2Vz IHRvIHNoYXJlZCBtZW1vcnkgKi8KKwlwZ3N0YXRfcmVzZXRfYWxsb2NhdGVkX2J5dGVzX3N0 b3JhZ2UoKTsKKwogCS8qCiAJICogQ2xlYXIgbXkgc3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcg dGhlIHByb3RvY29sIG9mIGJ1bXBpbmcgc3RfY2hhbmdlY291bnQKIAkgKiBiZWZvcmUgYW5k IGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRlciBoZXJlIHRvIGVuc3VyZSB0aGUK QEAgLTExOTUsMyArMTI0Miw3MCBAQCBwZ3N0YXRfY2xpcF9hY3Rpdml0eShjb25zdCBjaGFy ICpyYXdfYWN0aXZpdHkpCiAKIAlyZXR1cm4gYWN0aXZpdHk7CiB9CisKKy8qCisgKiBDb25m aWd1cmUgYnl0ZXMgYWxsb2NhdGVkIHJlcG9ydGluZyB0byByZXBvcnQgYWxsb2NhdGVkIGJ5 dGVzIHRvCisgKiBzaGFyZWQgbWVtb3J5LgorICoKKyAqIEV4cGVjdGVkIHRvIGJlIGNhbGxl ZCBkdXJpbmcgYmFja2VuZCBzdGFydHVwIChpbiBwZ3N0YXRfYmVzdGFydCksIHRvIHBvaW50 CisgKiBhbGxvY2F0ZWQgYnl0ZXMgYWNjb3VudGluZyBpbnRvIHNoYXJlZCBtZW1vcnkuCisg Ki8KK3ZvaWQKK3Bnc3RhdF9zZXRfYWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2UodWludDY0ICph bGxvY2F0ZWRfYnl0ZXMsCisJCQkJCQkJCSAgIHVpbnQ2NCAqYXNldF9hbGxvY2F0ZWRfYnl0 ZXMsCisJCQkJCQkJCSAgIHVpbnQ2NCAqZHNtX2FsbG9jYXRlZF9ieXRlcywKKwkJCQkJCQkJ ICAgdWludDY0ICpnZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcywKKwkJCQkJCQkJICAgdWlu dDY0ICpzbGFiX2FsbG9jYXRlZF9ieXRlcykKK3sKKwkvKiBNYXAgYWxsb2NhdGlvbnMgdG8g c2hhcmVkIG1lbW9yeSAqLworCW15X2FsbG9jYXRlZF9ieXRlcyA9IGFsbG9jYXRlZF9ieXRl czsKKwkqYWxsb2NhdGVkX2J5dGVzID0gbG9jYWxfbXlfYWxsb2NhdGVkX2J5dGVzOworCisJ bXlfYXNldF9hbGxvY2F0ZWRfYnl0ZXMgPSBhc2V0X2FsbG9jYXRlZF9ieXRlczsKKwkqYXNl dF9hbGxvY2F0ZWRfYnl0ZXMgPSBsb2NhbF9teV9hc2V0X2FsbG9jYXRlZF9ieXRlczsKKwor CW15X2RzbV9hbGxvY2F0ZWRfYnl0ZXMgPSBkc21fYWxsb2NhdGVkX2J5dGVzOworCSpkc21f YWxsb2NhdGVkX2J5dGVzID0gbG9jYWxfbXlfZHNtX2FsbG9jYXRlZF9ieXRlczsKKworCW15 X2dlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzID0gZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0 ZXM7CisJKmdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzID0gbG9jYWxfbXlfZ2VuZXJhdGlv bl9hbGxvY2F0ZWRfYnl0ZXM7CisKKwlteV9zbGFiX2FsbG9jYXRlZF9ieXRlcyA9IHNsYWJf YWxsb2NhdGVkX2J5dGVzOworCSpzbGFiX2FsbG9jYXRlZF9ieXRlcyA9IGxvY2FsX215X3Ns YWJfYWxsb2NhdGVkX2J5dGVzOworfQorCisvKgorICogUmVzZXQgYWxsb2NhdGVkIGJ5dGVz IHN0b3JhZ2UgbG9jYXRpb24uCisgKgorICogRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGR1cmlu ZyBiYWNrZW5kIHNodXRkb3duLCBiZWZvcmUgdGhlIGxvY2F0aW9ucyBzZXQgdXAKKyAqIGJ5 IHBnc3RhdF9zZXRfYWxsb2NhdGVkX2J5dGVzX3N0b3JhZ2UgYmVjb21lIGludmFsaWQuCisg Ki8KK3ZvaWQKK3Bnc3RhdF9yZXNldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh2b2lkKQor eworCWlmIChQcm9jR2xvYmFsKQorCXsKKwkJdm9sYXRpbGUgUFJPQ19IRFIgKnByb2NnbG9i YWwgPSBQcm9jR2xvYmFsOworCisJCS8qCisJCSAqIEFkZCBkc20gYWxsb2NhdGlvbnMgdGhh dCBoYXZlIG5vdCBiZWVuIGZyZWVkIHRvIGdsb2JhbCBkc20KKwkJICogYWNjb3VudGluZwor CQkgKi8KKwkJcGdfYXRvbWljX2FkZF9mZXRjaF91NjQoJnByb2NnbG9iYWwtPmdsb2JhbF9k c21fYWxsb2NhdGlvbiwKKwkJCQkJCQkJKm15X2RzbV9hbGxvY2F0ZWRfYnl0ZXMpOworCX0K KworCS8qIFJlc2V0IG1lbW9yeSBhbGxvY2F0aW9uIHZhcmlhYmxlcyAqLworCSpteV9hbGxv Y2F0ZWRfYnl0ZXMgPSBsb2NhbF9teV9hbGxvY2F0ZWRfYnl0ZXMgPSAwOworCSpteV9hc2V0 X2FsbG9jYXRlZF9ieXRlcyA9IGxvY2FsX215X2FzZXRfYWxsb2NhdGVkX2J5dGVzID0gMDsK KwkqbXlfZHNtX2FsbG9jYXRlZF9ieXRlcyA9IGxvY2FsX215X2RzbV9hbGxvY2F0ZWRfYnl0 ZXMgPSAwOworCSpteV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyA9IGxvY2FsX215X2dl bmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzID0gMDsKKwkqbXlfc2xhYl9hbGxvY2F0ZWRfYnl0 ZXMgPSBsb2NhbF9teV9zbGFiX2FsbG9jYXRlZF9ieXRlcyA9IDA7CisKKwkvKiBQb2ludCBt eV97Kl99YWxsb2NhdGVkX2J5dGVzIGZyb20gc2hhcmVkIG1lbW9yeSBiYWNrIHRvIGxvY2Fs ICovCisJbXlfYWxsb2NhdGVkX2J5dGVzID0gJmxvY2FsX215X2FsbG9jYXRlZF9ieXRlczsK KwlteV9hc2V0X2FsbG9jYXRlZF9ieXRlcyA9ICZsb2NhbF9teV9hc2V0X2FsbG9jYXRlZF9i eXRlczsKKwlteV9kc21fYWxsb2NhdGVkX2J5dGVzID0gJmxvY2FsX215X2RzbV9hbGxvY2F0 ZWRfYnl0ZXM7CisJbXlfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXMgPSAmbG9jYWxfbXlf Z2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXM7CisJbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXMg PSAmbG9jYWxfbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ3N0YXRmdW5jcy5jCmluZGV4IDM4NzYzMzllZTEuLjljODJlYzQ4Y2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0yMDMyLDMgKzIwMzIsODcgQEAgcGdf c3RhdF9oYXZlX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChw Z3N0YXRfaGF2ZV9lbnRyeShraW5kLCBkYm9pZCwgb2Jqb2lkKSk7CiB9CisKKy8qCisgKiBH ZXQgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9mIFBHIGJhY2tlbmRzLgorICovCitEYXR1bQor cGdfc3RhdF9nZXRfbWVtb3J5X2FsbG9jYXRpb24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNk ZWZpbmUgUEdfU1RBVF9HRVRfTUVNT1JZX0FMTE9DQVRJT05fQ09MUwk3CisJaW50CQkJbnVt X2JhY2tlbmRzID0gcGdzdGF0X2ZldGNoX3N0YXRfbnVtYmFja2VuZHMoKTsKKwlpbnQJCQlj dXJyX2JhY2tlbmQ7CisJaW50CQkJcGlkID0gUEdfQVJHSVNOVUxMKDApID8gLTEgOiBQR19H RVRBUkdfSU5UMzIoMCk7CisJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldElu Zm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOworCisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2lu Zm8sIDApOworCisJLyogMS1iYXNlZCBpbmRleCAqLworCWZvciAoY3Vycl9iYWNrZW5kID0g MTsgY3Vycl9iYWNrZW5kIDw9IG51bV9iYWNrZW5kczsgY3Vycl9iYWNrZW5kKyspCisJewor CQkvKiBmb3IgZWFjaCByb3cgKi8KKwkJRGF0dW0JCXZhbHVlc1tQR19TVEFUX0dFVF9NRU1P UllfQUxMT0NBVElPTl9DT0xTXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbUEdfU1RBVF9HRVRf TUVNT1JZX0FMTE9DQVRJT05fQ09MU10gPSB7MH07CisJCUxvY2FsUGdCYWNrZW5kU3RhdHVz ICpsb2NhbF9iZWVudHJ5OworCQlQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnk7CisKKwkJLyog R2V0IHRoZSBuZXh0IG9uZSBpbiB0aGUgbGlzdCAqLworCQlsb2NhbF9iZWVudHJ5ID0gcGdz dGF0X2dldF9sb2NhbF9iZWVudHJ5X2J5X2luZGV4KGN1cnJfYmFja2VuZCk7CisJCWJlZW50 cnkgPSAmbG9jYWxfYmVlbnRyeS0+YmFja2VuZFN0YXR1czsKKworCQkvKiBJZiBsb29raW5n IGZvciBzcGVjaWZpYyBQSUQsIGlnbm9yZSBhbGwgdGhlIG90aGVycyAqLworCQlpZiAocGlk ICE9IC0xICYmIGJlZW50cnktPnN0X3Byb2NwaWQgIT0gcGlkKQorCQkJY29udGludWU7CisK KwkJLyogVmFsdWVzIGF2YWlsYWJsZSB0byBhbGwgY2FsbGVycyAqLworCQlpZiAoYmVlbnRy eS0+c3RfZGF0YWJhc2VpZCAhPSBJbnZhbGlkT2lkKQorCQkJdmFsdWVzWzBdID0gT2JqZWN0 SWRHZXREYXR1bShiZWVudHJ5LT5zdF9kYXRhYmFzZWlkKTsKKwkJZWxzZQorCQkJbnVsbHNb MF0gPSB0cnVlOworCisJCXZhbHVlc1sxXSA9IEludDMyR2V0RGF0dW0oYmVlbnRyeS0+c3Rf cHJvY3BpZCk7CisJCXZhbHVlc1syXSA9IFVJbnQ2NEdldERhdHVtKGJlZW50cnktPmFsbG9j YXRlZF9ieXRlcyk7CisJCXZhbHVlc1szXSA9IFVJbnQ2NEdldERhdHVtKGJlZW50cnktPmFz ZXRfYWxsb2NhdGVkX2J5dGVzKTsKKwkJdmFsdWVzWzRdID0gVUludDY0R2V0RGF0dW0oYmVl bnRyeS0+ZHNtX2FsbG9jYXRlZF9ieXRlcyk7CisJCXZhbHVlc1s1XSA9IFVJbnQ2NEdldERh dHVtKGJlZW50cnktPmdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzKTsKKwkJdmFsdWVzWzZd ID0gVUludDY0R2V0RGF0dW0oYmVlbnRyeS0+c2xhYl9hbGxvY2F0ZWRfYnl0ZXMpOworCisJ CXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERl c2MsIHZhbHVlcywgbnVsbHMpOworCisJCS8qIElmIG9ubHkgYSBzaW5nbGUgYmFja2VuZCB3 YXMgcmVxdWVzdGVkLCBhbmQgd2UgZm91bmQgaXQsIGJyZWFrLiAqLworCQlpZiAocGlkICE9 IC0xKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIChEYXR1bSkgMDsKK30KKworLyoKKyAq IEdldCB0aGUgZ2xvYmFsIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXRpc3RpY3MuCisgKi8KK0Rh dHVtCitwZ19zdGF0X2dldF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24oUEdfRlVOQ1RJT05f QVJHUykKK3sKKyNkZWZpbmUgUEdfU1RBVF9HRVRfR0xPQkFMX01FTU9SWV9BTExPQ0FUSU9O X0NPTFMJMgorCVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVtCQl2YWx1ZXNbUEdfU1RBVF9H RVRfR0xPQkFMX01FTU9SWV9BTExPQ0FUSU9OX0NPTFNdID0gezB9OworCWJvb2wJCW51bGxz W1BHX1NUQVRfR0VUX0dMT0JBTF9NRU1PUllfQUxMT0NBVElPTl9DT0xTXSA9IHswfTsKKwl2 b2xhdGlsZSBQUk9DX0hEUiAqcHJvY2dsb2JhbCA9IFByb2NHbG9iYWw7CisKKwkvKiBJbml0 aWFsaXNlIGF0dHJpYnV0ZXMgaW5mb3JtYXRpb24gaW4gdGhlIHR1cGxlIGRlc2NyaXB0b3Ig Ki8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoUEdfU1RBVF9HRVRfR0xP QkFMX01FTU9SWV9BTExPQ0FUSU9OX0NPTFMpOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgMSwgImRhdGlkIiwKKwkJCQkJICAgT0lET0lELCAtMSwgMCk7 CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAiZ2xvYmFs X2RzbV9hbGxvY2F0ZWRfYnl0ZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJQmxl c3NUdXBsZURlc2ModHVwZGVzYyk7CisKKwkvKiBkYXRpZCAqLworCXZhbHVlc1swXSA9IE9i amVjdElkR2V0RGF0dW0oTXlEYXRhYmFzZUlkKTsKKworCS8qIGdldCBnbG9iYWxfZHNtX2Fs bG9jYXRlZF9ieXRlcyAqLworCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0ocGdfYXRvbWlj X3JlYWRfdTY0KCZwcm9jZ2xvYmFsLT5nbG9iYWxfZHNtX2FsbG9jYXRpb24pKTsKKworCS8q IFJldHVybnMgdGhlIHJlY29yZCBhcyBEYXR1bSAqLworCVBHX1JFVFVSTl9EQVRVTShIZWFw VHVwbGVHZXREYXR1bShoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscykp KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCA1MzdkOTJjMGNmLi45 YjQ3NDUwODEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCkBAIC0xNzAsNiAr MTcwLDkgQEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCQkJCShlcnJjb2RlX2Zvcl9z b2NrZXRfYWNjZXNzKCksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiY291bGQgbm90IHNldCBw b3N0bWFzdGVyIGRlYXRoIG1vbml0b3JpbmcgcGlwZSB0byBGRF9DTE9FWEVDIG1vZGU6ICVt IikpKTsKICNlbmRpZgorCisJLyogSW5pdCBhbGxvY2F0ZWQgYnl0ZXMgdG8gYXZvaWQgZG91 YmxlIGNvdW50aW5nIHBhcmVudCBhbGxvY2F0aW9uICovCisJcGdzdGF0X2luaXRfYWxsb2Nh dGVkX2J5dGVzKCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t bWdyL2FzZXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4IDc1MWNj MzQwOGMuLmNkMDc0YWRkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv YXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC00Nyw2ICs0 Nyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgInBvcnQvcGdfYml0 dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUg InV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlsc19pbnRlcm5hbC5oIgpAQCAtNTE3LDYgKzUxOCw3IEBAIEFs bG9jU2V0Q29udGV4dENyZWF0ZUludGVybmFsKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJ CQkJbmFtZSk7CiAKIAkoKE1lbW9yeUNvbnRleHQpIHNldCktPm1lbV9hbGxvY2F0ZWQgPSBm aXJzdEJsb2NrU2l6ZTsKKwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19pbmNyZWFz ZShmaXJzdEJsb2NrU2l6ZSwgUEdfQUxMT0NfQVNFVCk7CiAKIAlyZXR1cm4gKE1lbW9yeUNv bnRleHQpIHNldDsKIH0KQEAgLTUzOSw2ICs1NDEsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9y eUNvbnRleHQgY29udGV4dCkKIAlBbGxvY1NldAlzZXQgPSAoQWxsb2NTZXQpIGNvbnRleHQ7 CiAJQWxsb2NCbG9jawlibG9jazsKIAlTaXplCQlrZWVwZXJzaXplIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWTsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9IDA7CiAKIAlBc3NlcnQoQWxs b2NTZXRJc1ZhbGlkKHNldCkpOwogCkBAIC01ODEsNiArNTg0LDcgQEAgQWxsb2NTZXRSZXNl dChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCXsKIAkJCS8qIE5vcm1hbCBjYXNlLCByZWxl YXNlIHRoZSBibG9jayAqLwogCQkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCAtPSBibG9jay0+ ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKKwkJCWRlYWxsb2NhdGlvbiArPSBibG9jay0+ ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKIAogI2lmZGVmIENMT0JCRVJfRlJFRURfTUVN T1JZCiAJCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikgYmxv Y2spKTsKQEAgLTU5MSw2ICs1OTUsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQg Y29udGV4dCkKIAl9CiAKIAlBc3NlcnQoY29udGV4dC0+bWVtX2FsbG9jYXRlZCA9PSBrZWVw ZXJzaXplKTsKKwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZShkZWFs bG9jYXRpb24sIFBHX0FMTE9DX0FTRVQpOwogCiAJLyogUmVzZXQgYmxvY2sgc2l6ZSBhbGxv Y2F0aW9uIHNlcXVlbmNlLCB0b28gKi8KIAlzZXQtPm5leHRCbG9ja1NpemUgPSBzZXQtPmlu aXRCbG9ja1NpemU7CkBAIC02MDksNiArNjE0LDcgQEAgQWxsb2NTZXREZWxldGUoTWVtb3J5 Q29udGV4dCBjb250ZXh0KQogCUFsbG9jU2V0CXNldCA9IChBbGxvY1NldCkgY29udGV4dDsK IAlBbGxvY0Jsb2NrCWJsb2NrID0gc2V0LT5ibG9ja3M7CiAJU2l6ZQkJa2VlcGVyc2l6ZSBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJdWludDY0CQlkZWFsbG9jYXRpb24gPSAwOwog CiAJQXNzZXJ0KEFsbG9jU2V0SXNWYWxpZChzZXQpKTsKIApAQCAtNjQ3LDExICs2NTMsMTMg QEAgQWxsb2NTZXREZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCiAJCQkJZnJlZWxp c3QtPmZpcnN0X2ZyZWUgPSAoQWxsb2NTZXRDb250ZXh0ICopIG9sZHNldC0+aGVhZGVyLm5l eHRjaGlsZDsKIAkJCQlmcmVlbGlzdC0+bnVtX2ZyZWUtLTsKKwkJCQlkZWFsbG9jYXRpb24g Kz0gb2xkc2V0LT5oZWFkZXIubWVtX2FsbG9jYXRlZDsKIAogCQkJCS8qIEFsbCB0aGF0IHJl bWFpbnMgaXMgdG8gZnJlZSB0aGUgaGVhZGVyL2luaXRpYWwgYmxvY2sgKi8KIAkJCQlmcmVl KG9sZHNldCk7CiAJCQl9CiAJCQlBc3NlcnQoZnJlZWxpc3QtPm51bV9mcmVlID09IDApOwor CQkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2UoZGVhbGxvY2F0aW9u LCBQR19BTExPQ19BU0VUKTsKIAkJfQogCiAJCS8qIE5vdyBhZGQgdGhlIGp1c3QtZGVsZXRl ZCBjb250ZXh0IHRvIHRoZSBmcmVlbGlzdC4gKi8KQEAgLTY2OCw3ICs2NzYsMTAgQEAgQWxs b2NTZXREZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQlBbGxvY0Jsb2NrCW5leHQg PSBibG9jay0+bmV4dDsKIAogCQlpZiAoIUlzS2VlcGVyQmxvY2soc2V0LCBibG9jaykpCisJ CXsKIAkJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgLT0gYmxvY2stPmVuZHB0ciAtICgoY2hh ciAqKSBibG9jayk7CisJCQlkZWFsbG9jYXRpb24gKz0gYmxvY2stPmVuZHB0ciAtICgoY2hh ciAqKSBibG9jayk7CisJCX0KIAogI2lmZGVmIENMT0JCRVJfRlJFRURfTUVNT1JZCiAJCXdp cGVfbWVtKGJsb2NrLCBibG9jay0+ZnJlZXB0ciAtICgoY2hhciAqKSBibG9jaykpOwpAQCAt NjgxLDYgKzY5Miw3IEBAIEFsbG9jU2V0RGVsZXRlKE1lbW9yeUNvbnRleHQgY29udGV4dCkK IAl9CiAKIAlBc3NlcnQoY29udGV4dC0+bWVtX2FsbG9jYXRlZCA9PSBrZWVwZXJzaXplKTsK KwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZShkZWFsbG9jYXRpb24g KyBjb250ZXh0LT5tZW1fYWxsb2NhdGVkLCBQR19BTExPQ19BU0VUKTsKIAogCS8qIEZpbmFs bHksIGZyZWUgdGhlIGNvbnRleHQgaGVhZGVyLCBpbmNsdWRpbmcgdGhlIGtlZXBlciBibG9j ayAqLwogCWZyZWUoc2V0KTsKQEAgLTcxNyw2ICs3MjksNyBAQCBBbGxvY1NldEFsbG9jTGFy Z2UoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUsIGludCBmbGFncykKIAkJcmV0 dXJuIE1lbW9yeUNvbnRleHRBbGxvY2F0aW9uRmFpbHVyZShjb250ZXh0LCBzaXplLCBmbGFn cyk7CiAKIAljb250ZXh0LT5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJcGdzdGF0X3Jl cG9ydF9hbGxvY2F0ZWRfYnl0ZXNfaW5jcmVhc2UoYmxrc2l6ZSwgUEdfQUxMT0NfQVNFVCk7 CiAKIAlibG9jay0+YXNldCA9IHNldDsKIAlibG9jay0+ZnJlZXB0ciA9IGJsb2NrLT5lbmRw dHIgPSAoKGNoYXIgKikgYmxvY2spICsgYmxrc2l6ZTsKQEAgLTkyMyw2ICs5MzYsNyBAQCBB bGxvY1NldEFsbG9jRnJvbU5ld0Jsb2NrKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBz aXplLCBpbnQgZmxhZ3MsCiAJCXJldHVybiBNZW1vcnlDb250ZXh0QWxsb2NhdGlvbkZhaWx1 cmUoY29udGV4dCwgc2l6ZSwgZmxhZ3MpOwogCiAJY29udGV4dC0+bWVtX2FsbG9jYXRlZCAr PSBibGtzaXplOworCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2luY3JlYXNlKGJs a3NpemUsIFBHX0FMTE9DX0FTRVQpOwogCiAJYmxvY2stPmFzZXQgPSBzZXQ7CiAJYmxvY2st PmZyZWVwdHIgPSAoKGNoYXIgKikgYmxvY2spICsgQUxMT0NfQkxPQ0tIRFJTWjsKQEAgLTEx MDAsNiArMTExNCw3IEBAIEFsbG9jU2V0RnJlZSh2b2lkICpwb2ludGVyKQogCQkJYmxvY2st Pm5leHQtPnByZXYgPSBibG9jay0+cHJldjsKIAogCQlzZXQtPmhlYWRlci5tZW1fYWxsb2Nh dGVkIC09IGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOworCQlwZ3N0YXRfcmVw b3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZShibG9jay0+ZW5kcHRyIC0gKChjaGFyICop IGJsb2NrKSwgUEdfQUxMT0NfQVNFVCk7CiAKICNpZmRlZiBDTE9CQkVSX0ZSRUVEX01FTU9S WQogCQl3aXBlX21lbShibG9jaywgYmxvY2stPmZyZWVwdHIgLSAoKGNoYXIgKikgYmxvY2sp KTsKQEAgLTEyMzMsNyArMTI0OCw5IEBAIEFsbG9jU2V0UmVhbGxvYyh2b2lkICpwb2ludGVy LCBTaXplIHNpemUsIGludCBmbGFncykKIAogCQkvKiB1cGRhdGVkIHNlcGFyYXRlbHksIG5v dCB0byB1bmRlcmZsb3cgd2hlbiAob2xkYmxrc2l6ZSA+IGJsa3NpemUpICovCiAJCXNldC0+ aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gb2xkYmxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9h bGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2Uob2xkYmxrc2l6ZSwgUEdfQUxMT0NfQVNFVCk7CiAJ CXNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9y dF9hbGxvY2F0ZWRfYnl0ZXNfaW5jcmVhc2UoYmxrc2l6ZSwgUEdfQUxMT0NfQVNFVCk7CiAK IAkJYmxvY2stPmZyZWVwdHIgPSBibG9jay0+ZW5kcHRyID0gKChjaGFyICopIGJsb2NrKSAr IGJsa3NpemU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJh dGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKaW5kZXggNWQ4 MWFmMWY5NC4uZGJlYTRmMjQ4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9nZW5lcmF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9u LmMKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1 ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1 cy5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlsc19pbnRlcm5hbC5oIgpAQCAtMjY2 LDYgKzI2Nyw3IEBAIEdlbmVyYXRpb25Db250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRleHQgcGFy ZW50LAogCQkJCQkJbmFtZSk7CiAKIAkoKE1lbW9yeUNvbnRleHQpIHNldCktPm1lbV9hbGxv Y2F0ZWQgPSBmaXJzdEJsb2NrU2l6ZTsKKwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRl c19pbmNyZWFzZShmaXJzdEJsb2NrU2l6ZSwgUEdfQUxMT0NfR0VORVJBVElPTik7CiAKIAly ZXR1cm4gKE1lbW9yeUNvbnRleHQpIHNldDsKIH0KQEAgLTI4NCw2ICsyODYsNyBAQCBHZW5l cmF0aW9uUmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCUdlbmVyYXRpb25Db250 ZXh0ICpzZXQgPSAoR2VuZXJhdGlvbkNvbnRleHQgKikgY29udGV4dDsKIAlkbGlzdF9tdXRh YmxlX2l0ZXIgbWl0ZXI7CisJdWludDY0CQlkZWFsbG9jYXRpb24gPSAwOwogCiAJQXNzZXJ0 KEdlbmVyYXRpb25Jc1ZhbGlkKHNldCkpOwogCkBAIC0zMDYsOSArMzA5LDE0IEBAIEdlbmVy YXRpb25SZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCWlmIChJc0tlZXBlckJsb2Nr KHNldCwgYmxvY2spKQogCQkJR2VuZXJhdGlvbkJsb2NrTWFya0VtcHR5KGJsb2NrKTsKIAkJ ZWxzZQorCQl7CisJCQlkZWFsbG9jYXRpb24gKz0gYmxvY2stPmJsa3NpemU7CiAJCQlHZW5l cmF0aW9uQmxvY2tGcmVlKHNldCwgYmxvY2spOworCQl9CiAJfQogCisJcGdzdGF0X3JlcG9y dF9hbGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2UoZGVhbGxvY2F0aW9uLCBQR19BTExPQ19HRU5F UkFUSU9OKTsKKwogCS8qIHNldCBpdCBzbyBuZXcgYWxsb2NhdGlvbnMgdG8gbWFrZSB1c2Ug b2YgdGhlIGtlZXBlciBibG9jayAqLwogCXNldC0+YmxvY2sgPSBLZWVwZXJCbG9jayhzZXQp OwogCkBAIC0zMjksNiArMzM3LDkgQEAgR2VuZXJhdGlvbkRlbGV0ZShNZW1vcnlDb250ZXh0 IGNvbnRleHQpCiB7CiAJLyogUmVzZXQgdG8gcmVsZWFzZSBhbGwgcmVsZWFzYWJsZSBHZW5l cmF0aW9uQmxvY2tzICovCiAJR2VuZXJhdGlvblJlc2V0KGNvbnRleHQpOworCisJcGdzdGF0 X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2UoY29udGV4dC0+bWVtX2FsbG9jYXRl ZCwgUEdfQUxMT0NfR0VORVJBVElPTik7CisKIAkvKiBBbmQgZnJlZSB0aGUgY29udGV4dCBo ZWFkZXIgYW5kIGtlZXBlciBibG9jayAqLwogCWZyZWUoY29udGV4dCk7CiB9CkBAIC0zNjYs NiArMzc3LDcgQEAgR2VuZXJhdGlvbkFsbG9jTGFyZ2UoTWVtb3J5Q29udGV4dCBjb250ZXh0 LCBTaXplIHNpemUsIGludCBmbGFncykKIAkJcmV0dXJuIE1lbW9yeUNvbnRleHRBbGxvY2F0 aW9uRmFpbHVyZShjb250ZXh0LCBzaXplLCBmbGFncyk7CiAKIAljb250ZXh0LT5tZW1fYWxs b2NhdGVkICs9IGJsa3NpemU7CisJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfaW5j cmVhc2UoYmxrc2l6ZSwgUEdfQUxMT0NfR0VORVJBVElPTik7CiAKIAkvKiBibG9jayB3aXRo IGEgc2luZ2xlICh1c2VkKSBjaHVuayAqLwogCWJsb2NrLT5jb250ZXh0ID0gc2V0OwpAQCAt NDg4LDYgKzUwMCw3IEBAIEdlbmVyYXRpb25BbGxvY0Zyb21OZXdCbG9jayhNZW1vcnlDb250 ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSwgaW50IGZsYWdzLAogCQlyZXR1cm4gTWVtb3J5Q29u dGV4dEFsbG9jYXRpb25GYWlsdXJlKGNvbnRleHQsIHNpemUsIGZsYWdzKTsKIAogCWNvbnRl eHQtPm1lbV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwlwZ3N0YXRfcmVwb3J0X2FsbG9jYXRl ZF9ieXRlc19pbmNyZWFzZShibGtzaXplLCBQR19BTExPQ19HRU5FUkFUSU9OKTsKIAogCS8q IGluaXRpYWxpemUgdGhlIG5ldyBibG9jayAqLwogCUdlbmVyYXRpb25CbG9ja0luaXQoc2V0 LCBibG9jaywgYmxrc2l6ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdy L3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCmluZGV4IDNlMTVkNTk2 ODMuLjg1MDc2MGY0ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xh Yi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCkBAIC02OSw2ICs2OSw3 IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgor I2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt ZGVidWcuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzX2ludGVybmFsLmgiCkBAIC00MTcsNiArNDE4LDEzIEBAIFNsYWJDb250ZXh0 Q3JlYXRlKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJCQkJcGFyZW50LAogCQkJCQkJbmFt ZSk7CiAKKwkvKgorCSAqIElmIFNsYWJDb250ZXh0Q3JlYXRlIGlzIHVwZGF0ZWQgdG8gYWRk IGNvbnRleHQgaGVhZGVyIHNpemUgdG8KKwkgKiBjb250ZXh0LT5tZW1fYWxsb2NhdGVkLCB0 aGVuIHVwZGF0ZSBoZXJlIGFuZCBTbGFiRGVsZXRlIGFwcHJvcHJpYXRlbHkKKwkgKi8KKwlw Z3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19pbmNyZWFzZShTbGFiX0NPTlRFWFRfSERS U1ooc2xhYi0+Y2h1bmtzUGVyQmxvY2spLAorCQkJCQkJCQkJCSAgIFBHX0FMTE9DX1NMQUIp OworCiAJcmV0dXJuIChNZW1vcnlDb250ZXh0KSBzbGFiOwogfQogCkBAIC00MzMsNiArNDQx LDcgQEAgU2xhYlJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlTbGFiQ29udGV4dCAq c2xhYiA9IChTbGFiQ29udGV4dCAqKSBjb250ZXh0OwogCWRsaXN0X211dGFibGVfaXRlciBt aXRlcjsKIAlpbnQJCQlpOworCXVpbnQ2NAkJZGVhbGxvY2F0aW9uID0gMDsKIAogCUFzc2Vy dChTbGFiSXNWYWxpZChzbGFiKSk7CiAKQEAgLTQ1Myw2ICs0NjIsNyBAQCBTbGFiUmVzZXQo TWVtb3J5Q29udGV4dCBjb250ZXh0KQogI2VuZGlmCiAJCWZyZWUoYmxvY2spOwogCQljb250 ZXh0LT5tZW1fYWxsb2NhdGVkIC09IHNsYWItPmJsb2NrU2l6ZTsKKwkJZGVhbGxvY2F0aW9u ICs9IHNsYWItPmJsb2NrU2l6ZTsKIAl9CiAKIAkvKiB3YWxrIG92ZXIgYmxvY2tsaXN0IGFu ZCBmcmVlIHRoZSBibG9ja3MgKi8KQEAgLTQ2OSw5ICs0NzksMTEgQEAgU2xhYlJlc2V0KE1l bW9yeUNvbnRleHQgY29udGV4dCkKICNlbmRpZgogCQkJZnJlZShibG9jayk7CiAJCQljb250 ZXh0LT5tZW1fYWxsb2NhdGVkIC09IHNsYWItPmJsb2NrU2l6ZTsKKwkJCWRlYWxsb2NhdGlv biArPSBzbGFiLT5ibG9ja1NpemU7CiAJCX0KIAl9CiAKKwlwZ3N0YXRfcmVwb3J0X2FsbG9j YXRlZF9ieXRlc19kZWNyZWFzZShkZWFsbG9jYXRpb24sIFBHX0FMTE9DX1NMQUIpOwogCXNs YWItPmN1ckJsb2NrbGlzdEluZGV4ID0gMDsKIAogCUFzc2VydChjb250ZXh0LT5tZW1fYWxs b2NhdGVkID09IDApOwpAQCAtNDg2LDYgKzQ5OCwxNCBAQCBTbGFiRGVsZXRlKE1lbW9yeUNv bnRleHQgY29udGV4dCkKIHsKIAkvKiBSZXNldCB0byByZWxlYXNlIGFsbCB0aGUgU2xhYkJs b2NrcyAqLwogCVNsYWJSZXNldChjb250ZXh0KTsKKworCS8qCisJICogVW50aWwgY29udGV4 dCBoZWFkZXIgYWxsb2NhdGlvbiBpcyBpbmNsdWRlZCBpbiBjb250ZXh0LT5tZW1fYWxsb2Nh dGVkLAorCSAqIGNhc3QgdG8gc2xhYiBhbmQgZGVjcmVtZW50IHRoZSBoZWFkZXIgYWxsb2Nh dGlvbgorCSAqLworCXBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2RlY3JlYXNlKFNs YWJfQ09OVEVYVF9IRFJTWigoKFNsYWJDb250ZXh0ICopIGNvbnRleHQpLT5jaHVua3NQZXJC bG9jayksCisJCQkJCQkJCQkJICAgUEdfQUxMT0NfU0xBQik7CisKIAkvKiBBbmQgZnJlZSB0 aGUgY29udGV4dCBoZWFkZXIgKi8KIAlmcmVlKGNvbnRleHQpOwogfQpAQCAtNTY5LDYgKzU4 OSw3IEBAIFNsYWJBbGxvY0Zyb21OZXdCbG9jayhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNp emUgc2l6ZSwgaW50IGZsYWdzKQogCiAJCWJsb2NrLT5zbGFiID0gc2xhYjsKIAkJY29udGV4 dC0+bWVtX2FsbG9jYXRlZCArPSBzbGFiLT5ibG9ja1NpemU7CisJCXBnc3RhdF9yZXBvcnRf YWxsb2NhdGVkX2J5dGVzX2luY3JlYXNlKHNsYWItPmJsb2NrU2l6ZSwgUEdfQUxMT0NfU0xB Qik7CiAKIAkJLyogdXNlIHRoZSBmaXJzdCBjaHVuayBpbiB0aGUgbmV3IGJsb2NrICovCiAJ CWNodW5rID0gU2xhYkJsb2NrR2V0Q2h1bmsoc2xhYiwgYmxvY2ssIDApOwpAQCAtNzk3LDYg KzgxOCw3IEBAIFNsYWJGcmVlKHZvaWQgKnBvaW50ZXIpCiAjZW5kaWYKIAkJCWZyZWUoYmxv Y2spOwogCQkJc2xhYi0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gc2xhYi0+YmxvY2tTaXpl OworCQkJcGdzdGF0X3JlcG9ydF9hbGxvY2F0ZWRfYnl0ZXNfZGVjcmVhc2Uoc2xhYi0+Ymxv Y2tTaXplLCBQR19BTExPQ19TTEFCKTsKIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCA0YWY1YzJlODQ3Li41NmFiMWY5NDcwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTU0MzUsNiArNTQzNSwyMyBAQAogICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF9iYWNrZW5kX2lkc2V0JywgcHJvcm93cyA9PiAnMTAwJywgcHJvcmV0c2V0ID0+ ICd0JywKICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsIHByb3Jl dHR5cGUgPT4gJ2ludDQnLAogICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19z dGF0X2dldF9iYWNrZW5kX2lkc2V0JyB9LAoreyBvaWQgPT4gJzk4OTAnLAorICBkZXNjciA9 PiAnc3RhdGlzdGljczogbWVtb3J5IGFsbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIGJhY2tl bmRzJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfbWVtb3J5X2FsbG9jYXRpb24nLCBw cm9yb3dzID0+ICcxMDAnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb3JldHNldCA9PiAn dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAorICBwcm9yZXR0 eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnaW50NCcsCisgIHByb2FsbGFyZ3R5 cGVzID0+ICd7aW50NCxvaWQsaW50NCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDh9JywKKyAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4g J3twaWQsZGF0aWQscGlkLGFsbG9jYXRlZF9ieXRlcyxhc2V0X2FsbG9jYXRlZF9ieXRlcyxk c21fYWxsb2NhdGVkX2J5dGVzLGdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzLHNsYWJfYWxs b2NhdGVkX2J5dGVzfScsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfbWVtb3J5X2FsbG9j YXRpb24nIH0sCit7IG9pZCA9PiAnOTg5MScsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBn bG9iYWwgbWVtb3J5IGFsbG9jYXRpb24gaW5mb3JtYXRpb24nLAorICBwcm9uYW1lID0+ICdw Z19zdGF0X2dldF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24nLCBwcm9pc3N0cmljdCA9PiAn ZicsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdyZWNvcmQnLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvYWxsYXJndHlwZXMg PT4gJ3tvaWQsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sb30nLAorICBwcm9hcmdu YW1lcyA9PiAne2RhdGlkLGdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzfScsCisgIHByb3Ny YyA9PidwZ19zdGF0X2dldF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24nIH0sCiB7IG9pZCA9 PiAnMjAyMicsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBpbmZvcm1hdGlvbiBhYm91dCBj dXJyZW50bHkgYWN0aXZlIGJhY2tlbmRzJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRf YWN0aXZpdHknLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9pc3N0cmljdCA9PiAnZicsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvYy5oCmluZGV4IDEwOTVhZWZkZGYuLmEzNTBmNDU1Y2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Yy5oCkBAIC00MjIsNiArNDIyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAlpbnQJ CQlzcGluc19wZXJfZGVsYXk7CiAJLyogQnVmZmVyIGlkIG9mIHRoZSBidWZmZXIgdGhhdCBT dGFydHVwIHByb2Nlc3Mgd2FpdHMgZm9yIHBpbiBvbiwgb3IgLTEgKi8KIAlpbnQJCQlzdGFy dHVwQnVmZmVyUGluV2FpdEJ1ZklkOworCS8qIEdsb2JhbCBkc20gYWxsb2NhdGlvbnMgKi8K KwlwZ19hdG9taWNfdWludDY0IGdsb2JhbF9kc21fYWxsb2NhdGlvbjsKIH0gUFJPQ19IRFI7 CiAKIGV4dGVybiBQR0RMTElNUE9SVCBQUk9DX0hEUiAqUHJvY0dsb2JhbDsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IDdiN2Y2ZjU5ZDAuLmNiZjgwMTg4NGQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaApAQCAtMTAsNiArMTAsNyBAQAogI2lm bmRlZiBCQUNLRU5EX1NUQVRVU19ICiAjZGVmaW5lIEJBQ0tFTkRfU1RBVFVTX0gKIAorI2lu Y2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIJCQkv KiBmb3IgQmFja2VuZFR5cGUgKi8KQEAgLTMyLDYgKzMzLDE0IEBAIHR5cGVkZWYgZW51bSBC YWNrZW5kU3RhdGUKIAlTVEFURV9ESVNBQkxFRCwKIH0gQmFja2VuZFN0YXRlOwogCisvKiBF bnVtIGhlbHBlciBmb3IgcmVwb3J0aW5nIG1lbW9yeSBhbGxvY2F0b3IgdHlwZSAqLworZW51 bSBwZ19hbGxvY2F0b3JfdHlwZQoreworCVBHX0FMTE9DX0FTRVQgPSAxLAorCVBHX0FMTE9D X0RTTSwKKwlQR19BTExPQ19HRU5FUkFUSU9OLAorCVBHX0FMTE9DX1NMQUIKK307CiAKIC8q IC0tLS0tLS0tLS0KICAqIFNoYXJlZC1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzCkBAIC0xNzAs NiArMTc5LDE1IEBAIHR5cGVkZWYgc3RydWN0IFBnQmFja2VuZFN0YXR1cwogCiAJLyogcXVl cnkgaWRlbnRpZmllciwgb3B0aW9uYWxseSBjb21wdXRlZCB1c2luZyBwb3N0X3BhcnNlX2Fu YWx5emVfaG9vayAqLwogCXVpbnQ2NAkJc3RfcXVlcnlfaWQ7CisKKwkvKiBDdXJyZW50IG1l bW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kICovCisJdWludDY0CQlhbGxvY2F0ZWRf Ynl0ZXM7CisKKwkvKiBDdXJyZW50IG1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5k IGJ5IHR5cGUgKi8KKwl1aW50NjQJCWFzZXRfYWxsb2NhdGVkX2J5dGVzOworCXVpbnQ2NAkJ ZHNtX2FsbG9jYXRlZF9ieXRlczsKKwl1aW50NjQJCWdlbmVyYXRpb25fYWxsb2NhdGVkX2J5 dGVzOworCXVpbnQ2NAkJc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7CiB9IFBnQmFja2VuZFN0YXR1 czsKIAogCkBAIC0yOTIsNiArMzEwLDExIEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcGdz dGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemU7CiAgKiAtLS0tLS0tLS0tCiAgKi8KIGV4 dGVybiBQR0RMTElNUE9SVCBQZ0JhY2tlbmRTdGF0dXMgKk15QkVFbnRyeTsKK2V4dGVybiBQ R0RMTElNUE9SVCB1aW50NjQgKm15X2FsbG9jYXRlZF9ieXRlczsKK2V4dGVybiBQR0RMTElN UE9SVCB1aW50NjQgKm15X2FzZXRfYWxsb2NhdGVkX2J5dGVzOworZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQ2NCAqbXlfZHNtX2FsbG9jYXRlZF9ieXRlczsKK2V4dGVybiBQR0RMTElNUE9S VCB1aW50NjQgKm15X2dlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzOworZXh0ZXJuIFBHRExM SU1QT1JUIHVpbnQ2NCAqbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7CiAKIAogLyogLS0tLS0t LS0tLQpAQCAtMzIzLDcgKzM0NiwxMiBAQCBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dl dF9iYWNrZW5kX2N1cnJlbnRfYWN0aXZpdHkoaW50IHBpZCwgYm9vbCBjaGVja1VzZXIpOwog ZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfY3Jhc2hlZF9iYWNrZW5kX2FjdGl2aXR5 KGludCBwaWQsIGNoYXIgKmJ1ZmZlciwKIAkJCQkJCQkJCQkJCQkgICBpbnQgYnVmbGVuKTsK IGV4dGVybiB1aW50NjQgcGdzdGF0X2dldF9teV9xdWVyeV9pZCh2b2lkKTsKLQorZXh0ZXJu IHZvaWQgcGdzdGF0X3NldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh1aW50NjQgKmFsbG9j YXRlZF9ieXRlcywKKwkJCQkJCQkJCQkJICAgdWludDY0ICphc2V0X2FsbG9jYXRlZF9ieXRl cywKKwkJCQkJCQkJCQkJICAgdWludDY0ICpkc21fYWxsb2NhdGVkX2J5dGVzLAorCQkJCQkJ CQkJCQkgICB1aW50NjQgKmdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzLAorCQkJCQkJCQkJ CQkgICB1aW50NjQgKnNsYWJfYWxsb2NhdGVkX2J5dGVzKTsKK2V4dGVybiB2b2lkIHBnc3Rh dF9yZXNldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSh2b2lkKTsKIAogLyogLS0tLS0tLS0t LQogICogU3VwcG9ydCBmdW5jdGlvbnMgZm9yIHRoZSBTUUwtY2FsbGFibGUgZnVuY3Rpb25z IHRvCkBAIC0zMzYsNSArMzY0LDExOSBAQCBleHRlcm4gTG9jYWxQZ0JhY2tlbmRTdGF0dXMg KnBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9ieV9wcm9jX251bWJlcihQcm9jTnVtYmVyCiBl eHRlcm4gTG9jYWxQZ0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9i eV9pbmRleChpbnQgaWR4KTsKIGV4dGVybiBjaGFyICpwZ3N0YXRfY2xpcF9hY3Rpdml0eShj b25zdCBjaGFyICpyYXdfYWN0aXZpdHkpOwogCisvKiAtLS0tLS0tLS0tCisgKiBwZ3N0YXRf cmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZSgpIC0KKyAqICBDYWxsZWQgdG8gcmVw b3J0IGRlY3JlYXNlIGluIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoaXMgYmFja2VuZC4KKyAq CisgKiBteV97Kl99YWxsb2NhdGVkX2J5dGVzIGluaXRpYWxseSBwb2ludHMgdG8gbG9jYWwg bWVtb3J5LCBtYWtpbmcgaXQgc2FmZSB0bworICogY2FsbCB0aGlzIGJlZm9yZSBwZ3N0YXRz IGhhcyBiZWVuIGluaXRpYWxpemVkLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK3Bnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2RlY3JlYXNlKGludDY0 IHByb2NfYWxsb2NhdGVkX2J5dGVzLAorCQkJCQkJCQkJICAgaW50IHBnX2FsbG9jYXRvcl90 eXBlKQoreworCXVpbnQ2NAkJdGVtcDsKKworCS8qIEF2b2lkIGFsbG9jYXRlZF9ieXRlcyB1 bnNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IG9uIGRlY3JlYXNlICovCisJaWYgKHBnX3N1Yl91 NjRfb3ZlcmZsb3coKm15X2FsbG9jYXRlZF9ieXRlcywgcHJvY19hbGxvY2F0ZWRfYnl0ZXMs ICZ0ZW1wKSkKKwl7CisJCS8qIE9uIG92ZXJmbG93LCBzZXQgYWxsb2NhdGVkIGJ5dGVzIGFu ZCBhbGxvY2F0b3IgdHlwZSBieXRlcyB0byB6ZXJvICovCisJCSpteV9hbGxvY2F0ZWRfYnl0 ZXMgPSAwOworCQkqbXlfYXNldF9hbGxvY2F0ZWRfYnl0ZXMgPSAwOworCQkqbXlfZHNtX2Fs bG9jYXRlZF9ieXRlcyA9IDA7CisJCSpteV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyA9 IDA7CisJCSpteV9zbGFiX2FsbG9jYXRlZF9ieXRlcyA9IDA7CisJfQorCWVsc2UKKwl7CisJ CS8qIGRlY3JlYXNlIGFsbG9jYXRpb24gKi8KKwkJKm15X2FsbG9jYXRlZF9ieXRlcyAtPSBw cm9jX2FsbG9jYXRlZF9ieXRlczsKKworCQkvKiBEZWNyZWFzZSBhbGxvY2F0b3IgdHlwZSBh bGxvY2F0ZWQgYnl0ZXMuICovCisJCXN3aXRjaCAocGdfYWxsb2NhdG9yX3R5cGUpCisJCXsK KwkJCWNhc2UgUEdfQUxMT0NfQVNFVDoKKwkJCQkqbXlfYXNldF9hbGxvY2F0ZWRfYnl0ZXMg LT0gcHJvY19hbGxvY2F0ZWRfYnl0ZXM7CisJCQkJYnJlYWs7CisJCQljYXNlIFBHX0FMTE9D X0RTTToKKworCQkJCS8qCisJCQkJICogU29tZSBkc20gYWxsb2NhdGlvbnMgbGl2ZSBiZXlv bmQgcHJvY2VzcyBleGl0LiBUaGVzZSBhcmUKKwkJCQkgKiBhY2NvdW50ZWQgZm9yIGluIGEg Z2xvYmFsIGNvdW50ZXIgaW4KKwkJCQkgKiBwZ3N0YXRfcmVzZXRfYWxsb2NhdGVkX2J5dGVz X3N0b3JhZ2UgYXQgcHJvY2VzcyBleGl0LgorCQkJCSAqLworCQkJCSpteV9kc21fYWxsb2Nh dGVkX2J5dGVzIC09IHByb2NfYWxsb2NhdGVkX2J5dGVzOworCQkJCWJyZWFrOworCQkJY2Fz ZSBQR19BTExPQ19HRU5FUkFUSU9OOgorCQkJCSpteV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9i eXRlcyAtPSBwcm9jX2FsbG9jYXRlZF9ieXRlczsKKwkJCQlicmVhazsKKwkJCWNhc2UgUEdf QUxMT0NfU0xBQjoKKwkJCQkqbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXMgLT0gcHJvY19hbGxv Y2F0ZWRfYnl0ZXM7CisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm47Cit9CisKKy8q IC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2luY3JlYXNl KCkgLQorICogIENhbGxlZCB0byByZXBvcnQgaW5jcmVhc2UgaW4gbWVtb3J5IGFsbG9jYXRl ZCBmb3IgdGhpcyBiYWNrZW5kLgorICoKKyAqIG15X2FsbG9jYXRlZF9ieXRlcyBpbml0aWFs bHkgcG9pbnRzIHRvIGxvY2FsIG1lbW9yeSwgbWFraW5nIGl0IHNhZmUgdG8gY2FsbAorICog dGhpcyBiZWZvcmUgcGdzdGF0cyBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAqIC0tLS0tLS0t LS0KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9i eXRlc19pbmNyZWFzZShpbnQ2NCBwcm9jX2FsbG9jYXRlZF9ieXRlcywKKwkJCQkJCQkJCSAg IGludCBwZ19hbGxvY2F0b3JfdHlwZSkKK3sKKwkqbXlfYWxsb2NhdGVkX2J5dGVzICs9IHBy b2NfYWxsb2NhdGVkX2J5dGVzOworCisJLyogSW5jcmVhc2UgYWxsb2NhdG9yIHR5cGUgYWxs b2NhdGVkIGJ5dGVzICovCisJc3dpdGNoIChwZ19hbGxvY2F0b3JfdHlwZSkKKwl7CisJCWNh c2UgUEdfQUxMT0NfQVNFVDoKKwkJCSpteV9hc2V0X2FsbG9jYXRlZF9ieXRlcyArPSBwcm9j X2FsbG9jYXRlZF9ieXRlczsKKwkJCWJyZWFrOworCQljYXNlIFBHX0FMTE9DX0RTTToKKwor CQkJLyoKKwkJCSAqIFNvbWUgZHNtIGFsbG9jYXRpb25zIGxpdmUgYmV5b25kIHByb2Nlc3Mg ZXhpdC4gVGhlc2UgYXJlCisJCQkgKiBhY2NvdW50ZWQgZm9yIGluIGEgZ2xvYmFsIGNvdW50 ZXIgaW4KKwkJCSAqIHBnc3RhdF9yZXNldF9hbGxvY2F0ZWRfYnl0ZXNfc3RvcmFnZSBhdCBw cm9jZXNzIGV4aXQuCisJCQkgKi8KKwkJCSpteV9kc21fYWxsb2NhdGVkX2J5dGVzICs9IHBy b2NfYWxsb2NhdGVkX2J5dGVzOworCQkJYnJlYWs7CisJCWNhc2UgUEdfQUxMT0NfR0VORVJB VElPTjoKKwkJCSpteV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyArPSBwcm9jX2FsbG9j YXRlZF9ieXRlczsKKwkJCWJyZWFrOworCQljYXNlIFBHX0FMTE9DX1NMQUI6CisJCQkqbXlf c2xhYl9hbGxvY2F0ZWRfYnl0ZXMgKz0gcHJvY19hbGxvY2F0ZWRfYnl0ZXM7CisJCQlicmVh azsKKwl9CisKKwlyZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLQorICogcGdzdGF0X2luaXRf YWxsb2NhdGVkX2J5dGVzKCkgLQorICoKKyAqIENhbGxlZCB0byBpbml0aWFsaXplIGFsbG9j YXRlZCBieXRlcyB2YXJpYWJsZXMgYWZ0ZXIgZm9yayBhbmQgdG8KKyAqIGF2b2lkIGRvdWJs ZSBjb3VudGluZyBhbGxvY2F0aW9ucy4KKyAqIC0tLS0tLS0tLQorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK3Bnc3RhdF9pbml0X2FsbG9jYXRlZF9ieXRlcyh2b2lkKQoreworCSpteV9h bGxvY2F0ZWRfYnl0ZXMgPSAwOworCSpteV9hc2V0X2FsbG9jYXRlZF9ieXRlcyA9IDA7CisJ Km15X2RzbV9hbGxvY2F0ZWRfYnl0ZXMgPSAwOworCSpteV9nZW5lcmF0aW9uX2FsbG9jYXRl ZF9ieXRlcyA9IDA7CisJKm15X3NsYWJfYWxsb2NhdGVkX2J5dGVzID0gMDsKKworCXJldHVy bjsKK30KIAogI2VuZGlmCQkJCQkJCS8qIEJBQ0tFTkRfU1RBVFVTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMGNkMmM2NGZjYS4uMmY2MmY1ZTRlYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NzcsNiArMTg3Nywy NCBAQCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0c3wgU0VMRUNUIG9pZCBBUyBkYXRpZCwK ICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKG9pZCkgQVMg Y29uZmxfZGVhZGxvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNs b3Qob2lkKSBBUyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QKICAgIEZST00gcGdfZGF0YWJh c2UgZDsKK3BnX3N0YXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0aW9ufCBXSVRIIHN1bXMgQVMg KAorICAgICAgICAgU0VMRUNUIHN1bShwZ19zdGF0X21lbW9yeV9hbGxvY2F0aW9uLmFzZXRf YWxsb2NhdGVkX2J5dGVzKSBBUyB0b3RhbF9hc2V0X2FsbG9jYXRlZF9ieXRlcywKKyAgICAg ICAgICAgIHN1bShwZ19zdGF0X21lbW9yeV9hbGxvY2F0aW9uLmRzbV9hbGxvY2F0ZWRfYnl0 ZXMpIEFTIHRvdGFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXMsCisgICAgICAgICAgICBzdW0ocGdf c3RhdF9tZW1vcnlfYWxsb2NhdGlvbi5nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcykgQVMg dG90YWxfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXMsCisgICAgICAgICAgICBzdW0ocGdf c3RhdF9tZW1vcnlfYWxsb2NhdGlvbi5zbGFiX2FsbG9jYXRlZF9ieXRlcykgQVMgdG90YWxf c2xhYl9hbGxvY2F0ZWRfYnl0ZXMKKyAgICAgICAgICAgRlJPTSBwZ19zdGF0X21lbW9yeV9h bGxvY2F0aW9uCisgICAgICAgICkKKyBTRUxFQ1Qgcy5kYXRpZCwKKyAgICBjdXJyZW50X3Nl dHRpbmcoJ3NoYXJlZF9tZW1vcnlfc2l6ZSc6OnRleHQsIHRydWUpIEFTIHNoYXJlZF9tZW1v cnlfc2l6ZSwKKyAgICAoY3VycmVudF9zZXR0aW5nKCdzaGFyZWRfbWVtb3J5X3NpemVfaW5f aHVnZV9wYWdlcyc6OnRleHQsIHRydWUpKTo6aW50ZWdlciBBUyBzaGFyZWRfbWVtb3J5X3Np emVfaW5faHVnZV9wYWdlcywKKyAgICBzLmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzLAor ICAgIHN1bXMudG90YWxfYXNldF9hbGxvY2F0ZWRfYnl0ZXMsCisgICAgc3Vtcy50b3RhbF9k c21fYWxsb2NhdGVkX2J5dGVzLAorICAgIHN1bXMudG90YWxfZ2VuZXJhdGlvbl9hbGxvY2F0 ZWRfYnl0ZXMsCisgICAgc3Vtcy50b3RhbF9zbGFiX2FsbG9jYXRlZF9ieXRlcworICAgRlJP TSBzdW1zLAorICAgIChwZ19zdGF0X2dldF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24oKSBz KGRhdGlkLCBnbG9iYWxfZHNtX2FsbG9jYXRlZF9ieXRlcykKKyAgICAgTEVGVCBKT0lOIHBn X2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5vaWQpKSk7CiBwZ19zdGF0X2dzc2FwaXwg U0VMRUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBnc3NfYXV0aGVudGljYXRlZCwKICAgICBn c3NfcHJpbmMgQVMgcHJpbmNpcGFsLApAQCAtMTkwMyw2ICsxOTIxLDE1IEBAIHBnX3N0YXRf aW98IFNFTEVDVCBiYWNrZW5kX3R5cGUsCiAgICAgZnN5bmNfdGltZSwKICAgICBzdGF0c19y ZXNldAogICAgRlJPTSBwZ19zdGF0X2dldF9pbygpIGIoYmFja2VuZF90eXBlLCBvYmplY3Qs IGNvbnRleHQsIHJlYWRzLCByZWFkX3RpbWUsIHdyaXRlcywgd3JpdGVfdGltZSwgd3JpdGVi YWNrcywgd3JpdGViYWNrX3RpbWUsIGV4dGVuZHMsIGV4dGVuZF90aW1lLCBvcF9ieXRlcywg aGl0cywgZXZpY3Rpb25zLCByZXVzZXMsIGZzeW5jcywgZnN5bmNfdGltZSwgc3RhdHNfcmVz ZXQpOworcGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbnwgU0VMRUNUIHMuZGF0aWQsCisgICAg cy5waWQsCisgICAgcy5hbGxvY2F0ZWRfYnl0ZXMsCisgICAgcy5hc2V0X2FsbG9jYXRlZF9i eXRlcywKKyAgICBzLmRzbV9hbGxvY2F0ZWRfYnl0ZXMsCisgICAgcy5nZW5lcmF0aW9uX2Fs bG9jYXRlZF9ieXRlcywKKyAgICBzLnNsYWJfYWxsb2NhdGVkX2J5dGVzCisgICBGUk9NIChw Z19zdGF0X2dldF9tZW1vcnlfYWxsb2NhdGlvbihOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBw aWQsIGFsbG9jYXRlZF9ieXRlcywgYXNldF9hbGxvY2F0ZWRfYnl0ZXMsIGRzbV9hbGxvY2F0 ZWRfYnl0ZXMsIGdlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzLCBzbGFiX2FsbG9jYXRlZF9i eXRlcykKKyAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5v aWQpKSk7CiBwZ19zdGF0X3Byb2dyZXNzX2FuYWx5emV8IFNFTEVDVCBzLnBpZCwKICAgICBz LmRhdGlkLAogICAgIGQuZGF0bmFtZSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5v dXQKaW5kZXggNmUwODg5OGIxOC4uOTAyZDgyNzk5OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zdGF0cy5vdXQKQEAgLTE2NDYsNCArMTY0Niw0MCBAQCBTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2hvdF8zIFdIRVJFIGEgPSAyOwogCiBEUk9QIFRBQkxFIGJyaW5faG90XzM7 CiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKKy0tIGVuc3VyZSB0aGF0IGFsbG9jYXRlZF9i eXRlcyBleGlzdCBmb3IgYmFja2VuZHMKK1NFTEVDVAorICAgIGFsbG9jYXRlZF9ieXRlcyA+ IDAgQVMgcmVzdWx0CitGUk9NCisgICAgcGdfc3RhdF9hY3Rpdml0eSBwcworICAgIEpPSU4g cGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbiBwYSBPTiAocGEucGlkID0gcHMucGlkKQorV0hF UkUKKyAgICBiYWNrZW5kX3R5cGUgSU4gKCdjaGVja3BvaW50ZXInLCAnYmFja2dyb3VuZCB3 cml0ZXInLCAnd2Fsd3JpdGVyJywgJ2F1dG92YWN1dW0gbGF1bmNoZXInKTsKKyByZXN1bHQg CistLS0tLS0tLQorIHQKKyB0CisgdAorIHQKKyg0IHJvd3MpCisKKy0tIGVuc3VyZSB0aGF0 IHBnX3N0YXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0aW9uIHZpZXcgZXhpc3RzCitTRUxFQ1QK KyAgICBkYXRpZCA+IDAsIHBnX3NpemVfYnl0ZXMoc2hhcmVkX21lbW9yeV9zaXplKSA+PSAw LCBzaGFyZWRfbWVtb3J5X3NpemVfaW5faHVnZV9wYWdlcyA+PSAtMSwgZ2xvYmFsX2RzbV9h bGxvY2F0ZWRfYnl0ZXMgPj0gMAorRlJPTQorICAgIHBnX3N0YXRfZ2xvYmFsX21lbW9yeV9h bGxvY2F0aW9uOworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyB8ID9jb2x1bW4/ IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHQgICAg ICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQKKygxIHJvdykKKworLS0gZW5zdXJlIHRo YXQgcGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbiB2aWV3IGV4aXN0cworU0VMRUNUCisgICAg cGlkID4gMCwgYWxsb2NhdGVkX2J5dGVzID49IDAsIGFzZXRfYWxsb2NhdGVkX2J5dGVzID49 IDAsIGRzbV9hbGxvY2F0ZWRfYnl0ZXMgPj0gMCwgZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0 ZXMgPj0gMCwgc2xhYl9hbGxvY2F0ZWRfYnl0ZXMgPj0gMAorRlJPTQorICAgIHBnX3N0YXRf bWVtb3J5X2FsbG9jYXRpb24gbGltaXQgMTsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IHwgP2Nv bHVtbj8gfCA/Y29sdW1uPyB8ID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAg fCB0CisoMSByb3cpCisKIC0tIEVuZCBvZiBTdGF0cyBUZXN0CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0 cy5zcWwKaW5kZXggZDhhYzBkMDZmNC4uNDA3NDZjOTI1OCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0 YXRzLnNxbApAQCAtODQ5LDQgKzg0OSwyNCBAQCBEUk9QIFRBQkxFIGJyaW5faG90XzM7CiAK IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9uOwogCistLSBlbnN1cmUgdGhhdCBhbGxvY2F0ZWRf Ynl0ZXMgZXhpc3QgZm9yIGJhY2tlbmRzCitTRUxFQ1QKKyAgICBhbGxvY2F0ZWRfYnl0ZXMg PiAwIEFTIHJlc3VsdAorRlJPTQorICAgIHBnX3N0YXRfYWN0aXZpdHkgcHMKKyAgICBKT0lO IHBnX3N0YXRfbWVtb3J5X2FsbG9jYXRpb24gcGEgT04gKHBhLnBpZCA9IHBzLnBpZCkKK1dI RVJFCisgICAgYmFja2VuZF90eXBlIElOICgnY2hlY2twb2ludGVyJywgJ2JhY2tncm91bmQg d3JpdGVyJywgJ3dhbHdyaXRlcicsICdhdXRvdmFjdXVtIGxhdW5jaGVyJyk7CisKKy0tIGVu c3VyZSB0aGF0IHBnX3N0YXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0aW9uIHZpZXcgZXhpc3Rz CitTRUxFQ1QKKyAgICBkYXRpZCA+IDAsIHBnX3NpemVfYnl0ZXMoc2hhcmVkX21lbW9yeV9z aXplKSA+PSAwLCBzaGFyZWRfbWVtb3J5X3NpemVfaW5faHVnZV9wYWdlcyA+PSAtMSwgZ2xv YmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXMgPj0gMAorRlJPTQorICAgIHBnX3N0YXRfZ2xvYmFs X21lbW9yeV9hbGxvY2F0aW9uOworCistLSBlbnN1cmUgdGhhdCBwZ19zdGF0X21lbW9yeV9h bGxvY2F0aW9uIHZpZXcgZXhpc3RzCitTRUxFQ1QKKyAgICBwaWQgPiAwLCBhbGxvY2F0ZWRf Ynl0ZXMgPj0gMCwgYXNldF9hbGxvY2F0ZWRfYnl0ZXMgPj0gMCwgZHNtX2FsbG9jYXRlZF9i eXRlcyA+PSAwLCBnZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyA+PSAwLCBzbGFiX2FsbG9j YXRlZF9ieXRlcyA+PSAwCitGUk9NCisgICAgcGdfc3RhdF9tZW1vcnlfYWxsb2NhdGlvbiBs aW1pdCAxOwogLS0gRW5kIG9mIFN0YXRzIFRlc3QKLS0gCjIuNDMuMgoK --------------2YrWVz3rzfPlOjamePaoJg1W Content-Type: text/x-patch; charset=UTF-8; name="v20240314-0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.patch" Content-Disposition: attachment; filename*0="v20240314-0002-Add-the-ability-to-limit-the-amount-of-memory"; filename*1="-that-c.patch" Content-Transfer-Encoding: base64 RnJvbSA3MjY1NmJmYTY4MTk5OTBiZTc5YmY5MjVlNWU4ODgxNjhhZWI3MWE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAyNiBEZWMgMjAyMyAxNzo1NToyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi8yXSBBZGQgdGhlIGFiaWxpdHkgdG8gbGltaXQgdGhlIGFtb3VudCBvZiBtZW1v cnkgdGhhdCBjYW4gYmUKIGFsbG9jYXRlZCB0byBiYWNrZW5kcy4KClRoaXMgYnVpbGRzIG9u IHRoZSB3b3JrIHRoYXQgYWRkcyBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0ZWQgdHJhY2tpbmcu CgpBZGQgR1VDIHZhcmlhYmxlIG1heF90b3RhbF9iYWNrZW5kX21lbW9yeS4KClNwZWNpZmll cyBhIGxpbWl0IHRvIHRoZSBhbW91bnQgb2YgbWVtb3J5IChpbiBNQikgdGhhdCBtYXkgYmUg YWxsb2NhdGVkIHRvCmJhY2tlbmRzIGluIHRvdGFsIChpLmUuIHRoaXMgaXMgbm90IGEgcGVy IHVzZXIgb3IgcGVyIGJhY2tlbmQgbGltaXQpLiBJZiB1bnNldCwKb3Igc2V0IHRvIDAgaXQg aXMgZGlzYWJsZWQuIEl0IGlzIGludGVuZGVkIGFzIGEgcmVzb3VyY2UgdG8gaGVscCBhdm9p ZCB0aGUgT09NCmtpbGxlciBvbiBMSU5VWCBhbmQgbWFuYWdlIHJlc291cmNlcyBpbiBnZW5l cmFsLiBBIGJhY2tlbmQgcmVxdWVzdCB0aGF0IHdvdWxkCmV4aGF1c3QgbWF4X3RvdGFsX2Jh Y2tlbmRfbWVtb3J5IG1lbW9yeSB3aWxsIGJlIGRlbmllZCB3aXRoIGFuIG91dCBvZiBtZW1v cnkKZXJyb3IgY2F1c2luZyB0aGF0IGJhY2tlbmQncyBjdXJyZW50IHF1ZXJ5L3RyYW5zYWN0 aW9uIHRvIGZhaWwuICBGdXJ0aGVyCnJlcXVlc3RzIHdpbGwgbm90IGJlIGFsbG9jYXRlZCB1 bnRpbCBkcm9wcGluZyBiZWxvdyB0aGUgbGltaXQuIEtlZXAgdGhpcyBpbgptaW5kIHdoZW4g c2V0dGluZyB0aGlzIHZhbHVlLiBEdWUgdG8gdGhlIGR5bmFtaWMgbmF0dXJlIG9mIG1lbW9y eSBhbGxvY2F0aW9ucywKdGhpcyBsaW1pdCBpcyBub3QgZXhhY3QuIFRoaXMgbGltaXQgZG9l cyBub3QgYWZmZWN0IGF1eGlsaWFyeSBiYWNrZW5kCnByb2Nlc3Nlcy4gQmFja2VuZCBtZW1v cnkgYWxsb2NhdGlvbnMgYXJlIGRpc3BsYXllZCBpbiB0aGUKcGdfc3RhdF9tZW1vcnlfYWxs b2NhdGlvbiBhbmQgcGdfc3RhdF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24gdmlld3MuCi0t LQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDMw ICsrKwogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwg IDM4ICsrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYyAgICAgICAgICAgICAg ICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAg ICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgICAgICAg ICAgICB8ICAxOCArKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAg ICAgICAgIHwgIDQ1ICsrKysrCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5k X3N0YXR1cy5jICAgfCAxNzUgKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2hhc2gvZHluYWhhc2guYyAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAzICsKIHNyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvYXNldC5jICAgICAgICAgICAgICAgICB8ICAzMyArKysrCiBzcmMv YmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyAgICAgICAgICAgfCAgMTYgKysKIHNy Yy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jICAgICAgICAgICAgICAgICB8ICAxNSArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA2ICst CiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDcg Kwogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAgICAgIHwgMTAz ICsrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgICAgfCAgIDQgKy0KIDIwIGZpbGVzIGNoYW5nZWQsIDUyNiBpbnNlcnRpb25zKCspLCAy MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNjVhNmU2YzQwOC4uNGYyNjI4NGVl MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbApAQCAtMjMwNiw2ICsyMzA2LDM2IEBAIGluY2x1ZGVfZGlyICdj b25mLmQnCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXRvdGFsLWJhY2tlbmQtbWVtb3J5IiB4cmVm bGFiZWw9Im1heF90b3RhbF9iYWNrZW5kX21lbW9yeSI+CisgICAgICA8dGVybT48dmFybmFt ZT5tYXhfdG90YWxfYmFja2VuZF9tZW1vcnk8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4 X3RvdGFsX2JhY2tlbmRfbWVtb3J5PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRl cjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZpZXMgYSBsaW1pdCB0 byB0aGUgYW1vdW50IG9mIG1lbW9yeSAoTUIpIHRoYXQgbWF5IGJlIGFsbG9jYXRlZCB0bwor ICAgICAgICBiYWNrZW5kcyBpbiB0b3RhbCAoaS5lLiB0aGlzIGlzIG5vdCBhIHBlciB1c2Vy IG9yIHBlciBiYWNrZW5kIGxpbWl0KS4KKyAgICAgICAgSWYgdW5zZXQsIG9yIHNldCB0byAw IGl0IGlzIGRpc2FibGVkLiAgQXQgZGF0YWJzZSBzdGFydHVwCisgICAgICAgIG1heF90b3Rh bF9iYWNrZW5kX21lbW9yeSBpcyByZWR1Y2VkIGJ5IHNoYXJlZF9tZW1vcnlfc2l6ZV9tYgor ICAgICAgICAoaW5jbHVkZXMgc2hhcmVkIGJ1ZmZlcnMgYW5kIG90aGVyIG1lbW9yeSByZXF1 aXJlZCBmb3IgaW5pdGlhbGl6YXRpb24pLgorICAgICAgICBFYWNoIGJhY2tlbmQgcHJvY2Vz cyBpcyBpbnRpYWxpemVkIHdpdGggYSAxTUIgbG9jYWwgYWxsb3dhbmNlIHdoaWNoCisgICAg ICAgIGFsc28gcmVkdWNlcyB0b3RhbF9ia2VuZF9tZW1fYnl0ZXNfYXZhaWxhYmxlLiBLZWVw IHRoaXMgaW4gbWluZCB3aGVuCisgICAgICAgIHNldHRpbmcgdGhpcyB2YWx1ZS4gQSBiYWNr ZW5kIHJlcXVlc3QgdGhhdCB3b3VsZCBleGhhdXN0IHRoZSBsaW1pdCB3aWxsCisgICAgICAg IGJlIGRlbmllZCB3aXRoIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgY2F1c2luZyB0aGF0IGJh Y2tlbmQncyBjdXJyZW50CisgICAgICAgIHF1ZXJ5L3RyYW5zYWN0aW9uIHRvIGZhaWwuIEZ1 cnRoZXIgcmVxdWVzdHMgd2lsbCBub3QgYmUgYWxsb2NhdGVkIHVudGlsCisgICAgICAgIGRy b3BwaW5nIGJlbG93IHRoZSBsaW1pdC4gIFRoaXMgbGltaXQgZG9lcyBub3QgYWZmZWN0IGF1 eGlsaWFyeSBiYWNrZW5kCisgICAgICAgIHByb2Nlc3NlcworICAgICAgICA8eHJlZiBsaW5r ZW5kPSJnbG9zc2FyeS1hdXhpbGlhcnktcHJvYyIvPiBvciB0aGUgcG9zdG1hc3RlciBwcm9j ZXNzLgorICAgICAgICBCYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9ucyAoPHZhcm5hbWU+YWxs b2NhdGVkX2J5dGVzPC92YXJuYW1lPikgYXJlCisgICAgICAgIGRpc3BsYXllZCBpbiB0aGUK KyAgICAgICAgPGxpbmsgbGlua2VuZD0ibW9uaXRvcmluZy1wZy1zdGF0LW1lbW9yeS1hbGxv Y2F0aW9uLXZpZXciPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfbWVtb3J5X2FsbG9jYXRpb248L3N0 cnVjdG5hbWU+PC9saW5rPgorICAgICAgICB2aWV3LiAgRHVlIHRvIHRoZSBkeW5hbWljIG5h dHVyZSBvZiBtZW1vcnkgYWxsb2NhdGlvbnMsIHRoaXMgbGltaXQgaXMKKyAgICAgICAgbm90 IGV4YWN0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbAppbmRleCA0MWQ3ODhiZTQ1Li4zYzM2ODljMDNiIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwKQEAgLTQ2NTksMTAgKzQ2NTksNyBAQCBkZXNjcmlwdGlvbiB8IFdh aXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVyYWJs ZSBzdG9yYWdlCiAgICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgTWVtb3J5IGN1 cnJlbnRseSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIGluIGJ5dGVzLiBUaGlzIGlzIHRo ZSBiYWxhbmNlCi0gICAgICBvZiBieXRlcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIGJ5IHRoaXMg YmFja2VuZC4gRHluYW1pYyBzaGFyZWQgbWVtb3J5Ci0gICAgICBhbGxvY2F0aW9ucyBhcmUg aW5jbHVkZWQgb25seSBpbiB0aGUgdmFsdWUgZGlzcGxheWVkIGZvciB0aGUgYmFja2VuZCB0 aGF0Ci0gICAgICBjcmVhdGVkIHRoZW0sIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUg dmFsdWUgZm9yIGJhY2tlbmRzIHRoYXQgYXJlCi0gICAgICBhdHRhY2hlZCB0byB0aGVtIHRv IGF2b2lkIGRvdWJsZSBjb3VudGluZy4KKyAgICAgIG9mIGJ5dGVzIGFsbG9jYXRlZCBhbmQg ZnJlZWQgYnkgdGhpcyBiYWNrZW5kLgogICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTQ3NzksNiArNDc3NiwzOSBAQCBkZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9y IGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVyYWJsZSBzdG9yYWdl CiAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bWF4X3RvdGFsX2JhY2tlbmRf bWVtb3J5X2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFJlcG9ydHMgdGhlIHVzZXIgZGVmaW5lZCBi YWNrZW5kIG1heGltdW0gYWxsb3dlZCBzaGFyZWQgbWVtb3J5IGluIGJ5dGVzLgorICAgICAg MCBpZiBkaXNhYmxlZCBvciBub3Qgc2V0LiBTZWUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1 Yy1tYXgtdG90YWwtYmFja2VuZC1tZW1vcnkiLz4uCisgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+dG90YWxfYmtlbmRfbWVtX2J5dGVzX2F2YWlsYWJsZTwvc3RydWN0Zmll bGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+Cisg ICAgICBUcmFja3MgbWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5IChpbiBieXRlcykgYXZhaWxh YmxlIGZvciBhbGxvY2F0aW9uLiBBdAorICAgICAgZGF0YWJhc2Ugc3RhcnR1cCwgdG90YWxf YmtlbmRfbWVtX2J5dGVzX2F2YWlsYWJsZSBpcyByZWR1Y2VkIGJ5IHRoZQorICAgICAgYnl0 ZSBlcXVpdmFsZW50IG9mIHNoYXJlZF9tZW1vcnlfc2l6ZV9tYi4gRWFjaCBiYWNrZW5kIHBy b2Nlc3MgaXMKKyAgICAgIGludGlhbGl6ZWQgd2l0aCBhIDFNQiBsb2NhbCBhbGxvd2FuY2Ug d2hpY2ggYWxzbyByZWR1Y2VzCisgICAgICB0b3RhbF9ia2VuZF9tZW1fYnl0ZXNfYXZhaWxh YmxlLiBBIHByb2Nlc3MncyBhbGxvY2F0aW9uIHJlcXVlc3RzIHJlZHVjZQorICAgICAgaXQn cyBsb2NhbCBhbGxvd2FuY2UuIElmIGEgcHJvY2VzcydzIGFsbG9jYXRpb24gcmVxdWVzdCBl eGNlZWRzIGl0J3MKKyAgICAgIHJlbWFpbmluZyBhbGxvd2FuY2UsIGFuIGF0dGVtcHQgaXMg bWFkZSB0byByZWZpbGwgdGhlIGxvY2FsIGFsbG93YW5jZQorICAgICAgZnJvbSB0b3RhbF9i a2VuZF9tZW1fYnl0ZXNfYXZhaWxhYmxlLiBJZiB0aGUgcmVmaWxsIHJlcXVlc3QgZmFpbHMs IHRoZW4KKyAgICAgIHRoZSByZXF1ZXN0aW5nIHByb2Nlc3Mgd2lsbCBmYWlsIHdpdGggYW4g b3V0IG9mIG1lbW9yeSBlcnJvciByZXN1bHRpbmcKKyAgICAgIGluIHRoZSBjYW5jZWxsYXRp b24gb2YgdGhhdCBwcm9jZXNzJ3MgYWN0aXZlIHF1ZXJ5L3RyYW5zYWN0aW9uLiAgVGhlCisg ICAgICBkZWZhdWx0IHJlZmlsbCBhbGxvY2F0aW9uIHF1YW50aXR5IGlzIDFNQi4gIElmIGEg cmVxdWVzdCBpcyBncmVhdGVyIHRoYW4KKyAgICAgIDFNQiwgYW4gYXR0ZW1wdCB3aWxsIGJl IG1hZGUgdG8gYWxsb2NhdGUgdGhlIGZ1bGwgYW1vdW50LiBJZgorICAgICAgbWF4X3RvdGFs X2JhY2tlbmRfbWVtb3J5IGlzIGRpc2FibGVkLCB0aGlzIHdpbGwgYmUgLTEuCisgICAgICA8 eHJlZiBsaW5rZW5kPSJndWMtbWF4LXRvdGFsLWJhY2tlbmQtbWVtb3J5Ii8+LgorICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVz PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCmluZGV4IDYxZmY0YTU5YjYuLmM2NDZiMjhmMTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTE0MDIsNiArMTQwMiw4IEBAIFNF TEVDVAogICAgICAgICBTLmRhdGlkIEFTIGRhdGlkLAogICAgICAgICBjdXJyZW50X3NldHRp bmcoJ3NoYXJlZF9tZW1vcnlfc2l6ZScsIHRydWUpIGFzIHNoYXJlZF9tZW1vcnlfc2l6ZSwK ICAgICAgICAgKGN1cnJlbnRfc2V0dGluZygnc2hhcmVkX21lbW9yeV9zaXplX2luX2h1Z2Vf cGFnZXMnLCB0cnVlKSk6OmludGVnZXIgYXMgc2hhcmVkX21lbW9yeV9zaXplX2luX2h1Z2Vf cGFnZXMsCisgICAgICAgIHBnX3NpemVfYnl0ZXMoY3VycmVudF9zZXR0aW5nKCdtYXhfdG90 YWxfYmFja2VuZF9tZW1vcnknLCB0cnVlKSkgYXMgbWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5 X2J5dGVzLAorICAgICAgICBTLnRvdGFsX2JrZW5kX21lbV9ieXRlc19hdmFpbGFibGUsCiAg ICAgICAgIFMuZ2xvYmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXMsCiAgICAgICAgIHN1bXMudG90 YWxfYXNldF9hbGxvY2F0ZWRfYnl0ZXMsCiAgICAgICAgIHN1bXMudG90YWxfZHNtX2FsbG9j YXRlZF9ieXRlcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5j IGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKaW5kZXggMWE2ZDhmYTBmYi4uYzA3 ODg3MzJkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNs dWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0 dXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9v a3MuaCIKICNpbmNsdWRlICJ1dGlscy9waWRmaWxlLmgiCkBAIC05MTgsNiArOTE5LDE0IEBA IFBHU2hhcmVkTWVtb3J5UmVBdHRhY2godm9pZCkKIAlkc21fc2V0X2NvbnRyb2xfaGFuZGxl KGhkci0+ZHNtX2NvbnRyb2wpOwogCiAJVXNlZFNobWVtU2VnQWRkciA9IGhkcjsJCS8qIHBy b2JhYmx5IHJlZHVuZGFudCAqLworCisJLyoKKwkgKiBJbml0IGFsbG9jYXRlZCBieXRlcyB0 byBhdm9pZCBkb3VibGUgY291bnRpbmcgcGFyZW50IGFsbG9jYXRpb24gZm9yCisJICogZm9y ay9leGVjIHByb2Nlc3Nlcy4gRm9ya2VkIHByb2Nlc3NlcyBwZXJmb3JtIHRoaXMgYWN0aW9u IGluCisJICogSW5pdFBvc3RtYXN0ZXJDaGlsZC4gRm9yIEVYRUNfQkFDS0VORCBwcm9jZXNz ZXMgd2UgaGF2ZSB0byB3YWl0IGZvcgorCSAqIHNoYXJlZCBtZW1vcnkgdG8gYmUgcmVhdHRh Y2hlZC4KKwkgKi8KKwlwZ3N0YXRfaW5pdF9hbGxvY2F0ZWRfYnl0ZXMoKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggNDlmYzZmOTc5ZS4uYWJi MTBlZDdjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTU1Niw2 ICs1NTYsNyBAQCB0eXBlZGVmIHN0cnVjdAogI2VuZGlmCiAJY2hhcgkJbXlfZXhlY19wYXRo W01BWFBHUEFUSF07CiAJY2hhcgkJcGtnbGliX3BhdGhbTUFYUEdQQVRIXTsKKwlpbnQJCQlt YXhfdG90YWxfYmtlbmRfbWVtOwogfSBCYWNrZW5kUGFyYW1ldGVyczsKIAogc3RhdGljIHZv aWQgcmVhZF9iYWNrZW5kX3ZhcmlhYmxlcyhjaGFyICppZCwgQ2xpZW50U29ja2V0ICoqY2xp ZW50X3NvY2ssIEJhY2tncm91bmRXb3JrZXIgKip3b3JrZXIpOwpAQCAtNjE1Miw2ICs2MTUz LDggQEAgc2F2ZV9iYWNrZW5kX3ZhcmlhYmxlcyhCYWNrZW5kUGFyYW1ldGVycyAqcGFyYW0s IENsaWVudFNvY2tldCAqY2xpZW50X3NvY2ssIEJhY2sKIAogCXN0cmxjcHkocGFyYW0tPnBr Z2xpYl9wYXRoLCBwa2dsaWJfcGF0aCwgTUFYUEdQQVRIKTsKIAorCXBhcmFtLT5tYXhfdG90 YWxfYmtlbmRfbWVtID0gbWF4X3RvdGFsX2JrZW5kX21lbTsKKwogCXJldHVybiB0cnVlOwog fQogCkBAIC02MzkxLDYgKzYzOTQsOCBAQCByZXN0b3JlX2JhY2tlbmRfdmFyaWFibGVzKEJh Y2tlbmRQYXJhbWV0ZXJzICpwYXJhbSwgQ2xpZW50U29ja2V0ICoqY2xpZW50X3NvY2ssCiAK IAlzdHJsY3B5KHBrZ2xpYl9wYXRoLCBwYXJhbS0+cGtnbGliX3BhdGgsIE1BWFBHUEFUSCk7 CiAKKwltYXhfdG90YWxfYmtlbmRfbWVtID0gcGFyYW0tPm1heF90b3RhbF9ia2VuZF9tZW07 CisKIAkvKgogCSAqIFdlIG5lZWQgdG8gcmVzdG9yZSBmZC5jJ3MgY291bnRzIG9mIGV4dGVy bmFsbHktb3BlbmVkIEZEczsgdG8gYXZvaWQKIAkgKiBjb25mdXNpb24sIGJlIHN1cmUgdG8g ZG8gdGhpcyBhZnRlciByZXN0b3JpbmcgbWF4X3NhZmVfZmRzLiAgKE5vdGU6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvZHNtX2ltcGwuYwppbmRleCBhZjY3ZTU1YmRmLi5iNmRlZTc1NDIzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKQEAgLTI1NCw2ICsyNTQsMTYgQEAg ZHNtX2ltcGxfcG9zaXgoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1 ZXN0X3NpemUsCiAJCXJldHVybiB0cnVlOwogCX0KIAorCS8qIERvIG5vdCBleGNlZWQgbWF4 aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJaWYgKG9wID09IERTTV9PUF9D UkVBVEUgJiYgZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKHJlcXVlc3Rfc2l6ZSkpCisJ eworCQllcmVwb3J0KGVsZXZlbCwKKwkJCQkoZXJyY29kZV9mb3JfZHluYW1pY19zaGFyZWRf bWVtb3J5KCksCisJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSBmb3Igc2VnbWVudCBcIiVz XCIgLSBleGNlZWRzIG1heF90b3RhbF9iYWNrZW5kX21lbW9yeTogJW0iLAorCQkJCQkJbmFt ZSkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJICogQ3JlYXRlIG5ldyBzZWdt ZW50IG9yIG9wZW4gYW4gZXhpc3Rpbmcgb25lIGZvciBhdHRhY2guCiAJICoKQEAgLTUyMyw2 ICs1MzMsMTAgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxl LCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJaW50CQkJZmxhZ3MgPSBJUENQcm90ZWN0aW9uOwog CQlzaXplX3QJCXNlZ3NpemU7CiAKKwkJLyogRG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93 ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKG9wID09IERTTV9PUF9DUkVBVEUgJiYg ZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKHJlcXVlc3Rfc2l6ZSkpCisJCQlyZXR1cm4g ZmFsc2U7CisKIAkJLyoKIAkJICogQWxsb2NhdGUgdGhlIG1lbW9yeSBCRUZPUkUgYWNxdWly aW5nIHRoZSByZXNvdXJjZSwgc28gdGhhdCB3ZSBkb24ndAogCQkgKiBsZWFrIHRoZSByZXNv dXJjZSBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4KQEAgLTcxNyw2ICs3MzEsMTAgQEAg ZHNtX2ltcGxfd2luZG93cyhkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXplIHJl cXVlc3Rfc2l6ZSwKIAkJcmV0dXJuIHRydWU7CiAJfQogCisJLyogRG8gbm90IGV4Y2VlZCBt YXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlpZiAob3AgPT0gRFNNX09Q X0NSRUFURSAmJiBleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0ocmVxdWVzdF9zaXplKSkK KwkJcmV0dXJuIGZhbHNlOworCiAJLyogQ3JlYXRlIG5ldyBzZWdtZW50IG9yIG9wZW4gYW4g ZXhpc3Rpbmcgb25lIGZvciBhdHRhY2guICovCiAJaWYgKG9wID09IERTTV9PUF9DUkVBVEUp CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggMTk1OWI1ZjRlNi4uNmRiZTQz NzNmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC01MCw2ICs1MCw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGlu LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCisjaW5jbHVkZSAidXRpbHMvZ3Vj LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVz dGFtcC5oIgogCkBAIC0xODIsNiArMTgzLDUwIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJ cGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5jbG9nR3JvdXBGaXJzdCwgSU5WQUxJ RF9QUk9DX05VTUJFUik7CiAJcGdfYXRvbWljX2luaXRfdTY0KCZQcm9jR2xvYmFsLT5nbG9i YWxfZHNtX2FsbG9jYXRpb24sIDApOwogCisJLyogU2V0dXAgYmFja2VuZCBtZW1vcnkgbGlt aXRpbmcgaWYgY29uZmlndXJlZCAqLworCWlmIChtYXhfdG90YWxfYmtlbmRfbWVtID4gMCkK Kwl7CisJCS8qCisJCSAqIENvbnZlcnQgbWF4X3RvdGFsX2JrZW5kX21lbSB0byBieXRlcywg YWNjb3VudCBmb3IKKwkJICogc2hhcmVkX21lbW9yeV9zaXplLCBhbmQgaW5pdGlhbGl6ZSB0 b3RhbF9ia2VuZF9tZW1fYnl0ZXMuCisJCSAqLworCQlpbnQJCQlyZXN1bHQgPSAwOworCisJ CS8qIEdldCBpbnRlZ2VyIHZhbHVlIG9mIHNoYXJlZF9tZW1vcnlfc2l6ZSAqLworCQlpZiAo cGFyc2VfaW50KEdldENvbmZpZ09wdGlvbigic2hhcmVkX21lbW9yeV9zaXplIiwgdHJ1ZSwg ZmFsc2UpLCAmcmVzdWx0LCAwLCBOVUxMKSkKKwkJeworCQkJLyoKKwkJCSAqIEVycm9yIG9u IHN0YXJ0dXAgaWYgYmFja2VuZCBtZW1vcnkgbGltaXQgaXMgbGVzcyB0aGFuIHNoYXJlZAor CQkJICogbWVtb3J5IHNpemUuIFdhcm4gb24gc3RhcnR1cCBpZiBiYWNrZW5kIG1lbW9yeSBh dmFpbGFibGUgaXMKKwkJCSAqIGxlc3MgdGhhbiBhcmJpdHJhcmlseSBwaWNrZWQgdmFsdWUg b2YgMTAwTUIuCisJCQkgKi8KKworCQkJaWYgKG1heF90b3RhbF9ia2VuZF9tZW0gLSByZXN1 bHQgPD0gMCkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJybXNnKCJjb25m aWd1cmVkIG1heF90b3RhbF9iYWNrZW5kX21lbW9yeSAlZE1CIGlzIDw9IHNoYXJlZF9tZW1v cnlfc2l6ZSAlZE1CIiwKKwkJCQkJCQkgICBtYXhfdG90YWxfYmtlbmRfbWVtLCByZXN1bHQp LAorCQkJCQkJZXJyaGludCgiRGlzYWJsZSBvciBpbmNyZWFzZSB0aGUgY29uZmlndXJhdGlv biBwYXJhbWV0ZXIgXCJtYXhfdG90YWxfYmFja2VuZF9tZW1vcnlcIi4iKSk7CisJCQl9CisJ CQllbHNlIGlmIChtYXhfdG90YWxfYmtlbmRfbWVtIC0gcmVzdWx0IDw9IDEwMCkKKwkJCXsK KwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQllcnJtc2coIm1heF90b3RhbF9iYWNrZW5k X21lbW9yeSAlZE1CIC0gc2hhcmVkX21lbW9yeV9zaXplICVkTUIgaXMgPD0gMTAwTUIiLAor CQkJCQkJCSAgIG1heF90b3RhbF9ia2VuZF9tZW0sIHJlc3VsdCksCisJCQkJCQllcnJoaW50 KCJDb25zaWRlciBpbmNyZWFzaW5nIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBcIm1h eF90b3RhbF9iYWNrZW5kX21lbW9yeVwiLiIpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEFj Y291bnQgZm9yIHNoYXJlZCBtZW1vcnkgc2l6ZSBhbmQgaW5pdGlhbGl6ZQorCQkJICogdG90 YWxfYmtlbmRfbWVtX2J5dGVzLgorCQkJICovCisJCQlwZ19hdG9taWNfaW5pdF91NjQoJlBy b2NHbG9iYWwtPnRvdGFsX2JrZW5kX21lbV9ieXRlcywKKwkJCQkJCQkgICAodWludDY0KSBt YXhfdG90YWxfYmtlbmRfbWVtICogMTAyNCAqIDEwMjQgLSAodWludDY0KSByZXN1bHQgKiAx MDI0ICogMTAyNCk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwgZXJybXNnKCJt YXhfdG90YWxfYmFja2VuZF9tZW1vcnkgaW5pdGlhbGl6YXRpb24gaXMgdW5hYmxlIHRvIHBh cnNlIHNoYXJlZF9tZW1vcnlfc2l6ZSIpKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhbmQg aW5pdGlhbGl6ZSBhbGwgdGhlIFBHUFJPQyBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQuICBUaGVy ZSBhcmUKIAkgKiBmaXZlIHNlcGFyYXRlIGNvbnN1bWVyczogKDEpIG5vcm1hbCBiYWNrZW5k cywgKDIpIGF1dG92YWN1dW0gd29ya2VycwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L2JhY2tlbmRfc3RhdHVzLmMKaW5kZXggMjViNTQ1NDQxYi4uYzEyNWRjM2FiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCkBAIC00 NCw2ICs0NCwxMiBAQAogYm9vbAkJcGdzdGF0X3RyYWNrX2FjdGl2aXRpZXMgPSBmYWxzZTsK IGludAkJCXBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplID0gMTAyNDsKIAorLyoK KyAqIE1heCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9uIGFsbG93ZWQgKE1CKS4gMCA9IGRp c2FibGVkLgorICogQ2VudHJhbGl6ZWQgYnVja2V0IFByb2NHbG9iYWwtPm1heF90b3RhbF9i a2VuZF9tZW0gaXMgaW5pdGlhbGl6ZWQKKyAqIGFzIGEgYnl0ZSByZXByZXNlbnRhdGlvbiBv ZiB0aGlzIHZhbHVlIGluIEluaXRQcm9jR2xvYmFsKCkuCisgKi8KK2ludAkJCW1heF90b3Rh bF9ia2VuZF9tZW0gPSAwOwogCiAvKiBleHBvc2VkIHNvIHRoYXQgYmFja2VuZF9wcm9ncmVz cy5jIGNhbiBhY2Nlc3MgaXQgKi8KIFBnQmFja2VuZFN0YXR1cyAqTXlCRUVudHJ5ID0gTlVM TDsKQEAgLTY3LDYgKzczLDMxIEBAIHVpbnQ2NAkgICAqbXlfZ2VuZXJhdGlvbl9hbGxvY2F0 ZWRfYnl0ZXMgPSAmbG9jYWxfbXlfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXM7CiB1aW50 NjQJCWxvY2FsX215X3NsYWJfYWxsb2NhdGVkX2J5dGVzID0gMDsKIHVpbnQ2NAkgICAqbXlf c2xhYl9hbGxvY2F0ZWRfYnl0ZXMgPSAmbG9jYWxfbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7 CiAKKy8qCisgKiBEZWZpbmUgaW5pdGlhbCBhbGxvY2F0aW9uIGFsbG93YW5jZSBmb3IgYSBi YWNrZW5kLgorICoKKyAqIE5PVEU6IGluaXRpYWxfYWxsb2NhdGlvbl9hbGxvd2FuY2UgJiYg YWxsb2NhdGlvbl9hbGxvd2FuY2VfcmVmaWxsX3F0eQorICogbWF5IGJlIGNhbmRpZGF0ZXMg Zm9yIGZ1dHVyZSBHVUMgdmFyaWFibGVzLiBBcmJpdHJhcnkgMU1CIHNlbGVjdGVkIGluaXRp YWxseS4KKyAqLwordWludDY0CQlpbml0aWFsX2FsbG9jYXRpb25fYWxsb3dhbmNlID0gMTAy NCAqIDEwMjQ7Cit1aW50NjQJCWFsbG9jYXRpb25fYWxsb3dhbmNlX3JlZmlsbF9xdHkgPSAx MDI0ICogMTAyNDsKKworLyoKKyAqIExvY2FsIGNvdW50ZXIgdG8gbWFuYWdlIHNoYXJlZCBt ZW1vcnkgYWxsb2NhdGlvbnMuIEF0IGJhY2tlbmQgc3RhcnR1cCwgc2V0IHRvCisgKiBpbml0 aWFsX2FsbG9jYXRpb25fYWxsb3dhbmNlIHZpYSBwZ3N0YXRfaW5pdF9hbGxvY2F0ZWRfYnl0 ZXMoKS4gRGVjcmVhc2UgYXMKKyAqIG1lbW9yeSBpcyBtYWxsb2MnZC4gV2hlbiBleGhhdXN0 ZWQsIGF0b21pY2FsbHkgcmVmaWxsIGlmIGF2YWlsYWJsZSBmcm9tCisgKiBQcm9jR2xvYmFs LT5tYXhfdG90YWxfYmtlbmRfbWVtIHZpYSBleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0o KS4KKyAqLwordWludDY0CQlhbGxvY2F0aW9uX2FsbG93YW5jZSA9IDA7CisKKy8qCisgKiBM b2NhbCBjb3VudGVyIG9mIGZyZWUnZCBzaGFyZWQgbWVtb3J5LiBSZXR1cm4gdG8gZ2xvYmFs CisgKiBtYXhfdG90YWxfYmtlbmRfbWVtIHdoZW4gcmV0dXJuIHRocmVzaG9sZCBpcyBtZXQu IEFyYml0cmFyeSAxTUIgYnl0ZXMKKyAqIHNlbGVjdGVkIGluaXRpYWxseS4KKyAqLwordWlu dDY0CQlhbGxvY2F0aW9uX3JldHVybiA9IDA7Cit1aW50NjQJCWFsbG9jYXRpb25fcmV0dXJu X3RocmVzaG9sZCA9IDEwMjQgKiAxMDI0OworCiBzdGF0aWMgUGdCYWNrZW5kU3RhdHVzICpC YWNrZW5kU3RhdHVzQXJyYXkgPSBOVUxMOwogc3RhdGljIGNoYXIgKkJhY2tlbmRBcHBuYW1l QnVmZmVyID0gTlVMTDsKIHN0YXRpYyBjaGFyICpCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZm ZXIgPSBOVUxMOwpAQCAtMTI3Miw2ICsxMzAzLDggQEAgcGdzdGF0X3NldF9hbGxvY2F0ZWRf Ynl0ZXNfc3RvcmFnZSh1aW50NjQgKmFsbG9jYXRlZF9ieXRlcywKIAogCW15X3NsYWJfYWxs b2NhdGVkX2J5dGVzID0gc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7CiAJKnNsYWJfYWxsb2NhdGVk X2J5dGVzID0gbG9jYWxfbXlfc2xhYl9hbGxvY2F0ZWRfYnl0ZXM7CisKKwlyZXR1cm47CiB9 CiAKIC8qCkBAIC0xMjk1LDYgKzEzMjgsMjMgQEAgcGdzdGF0X3Jlc2V0X2FsbG9jYXRlZF9i eXRlc19zdG9yYWdlKHZvaWQpCiAJCQkJCQkJCSpteV9kc21fYWxsb2NhdGVkX2J5dGVzKTsK IAl9CiAKKwkvKgorCSAqIFdoZW4gbGltaXRpbmcgbWF4aW11bSBiYWNrZW5kIG1lbW9yeSwg cmV0dXJuIHRoaXMgYmFja2VuZCdzIG1lbW9yeQorCSAqIGFsbG9jYXRpb25zIHRvIGdsb2Jh bC4KKwkgKi8KKwlpZiAobWF4X3RvdGFsX2JrZW5kX21lbSkKKwl7CisJCXZvbGF0aWxlIFBS T0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKKworCQlwZ19hdG9taWNfYWRkX2Zl dGNoX3U2NCgmcHJvY2dsb2JhbC0+dG90YWxfYmtlbmRfbWVtX2J5dGVzLAorCQkJCQkJCQkq bXlfYWxsb2NhdGVkX2J5dGVzICsgYWxsb2NhdGlvbl9hbGxvd2FuY2UgKworCQkJCQkJCQlh bGxvY2F0aW9uX3JldHVybik7CisKKwkJLyogUmVzZXQgbWVtb3J5IGFsbG9jYXRpb24gdmFy aWFibGVzICovCisJCWFsbG9jYXRpb25fYWxsb3dhbmNlID0gMDsKKwkJYWxsb2NhdGlvbl9y ZXR1cm4gPSAwOworCX0KKwogCS8qIFJlc2V0IG1lbW9yeSBhbGxvY2F0aW9uIHZhcmlhYmxl cyAqLwogCSpteV9hbGxvY2F0ZWRfYnl0ZXMgPSBsb2NhbF9teV9hbGxvY2F0ZWRfYnl0ZXMg PSAwOwogCSpteV9hc2V0X2FsbG9jYXRlZF9ieXRlcyA9IGxvY2FsX215X2FzZXRfYWxsb2Nh dGVkX2J5dGVzID0gMDsKQEAgLTEzMDgsNCArMTM1OCwxMjkgQEAgcGdzdGF0X3Jlc2V0X2Fs bG9jYXRlZF9ieXRlc19zdG9yYWdlKHZvaWQpCiAJbXlfZHNtX2FsbG9jYXRlZF9ieXRlcyA9 ICZsb2NhbF9teV9kc21fYWxsb2NhdGVkX2J5dGVzOwogCW15X2dlbmVyYXRpb25fYWxsb2Nh dGVkX2J5dGVzID0gJmxvY2FsX215X2dlbmVyYXRpb25fYWxsb2NhdGVkX2J5dGVzOwogCW15 X3NsYWJfYWxsb2NhdGVkX2J5dGVzID0gJmxvY2FsX215X3NsYWJfYWxsb2NhdGVkX2J5dGVz OworCisJcmV0dXJuOworfQorCisvKgorICogRGV0ZXJtaW5lIGlmIGFsbG9jYXRpb24gcmVx dWVzdCB3aWxsIGV4Y2VlZCBtYXggYmFja2VuZCBtZW1vcnkgYWxsb3dlZC4KKyAqIERvIG5v dCBhcHBseSB0byBhdXhpbGlhcnkgcHJvY2Vzc2VzLgorICogUmVmaWxsIGFsbG9jYXRpb24g cmVxdWVzdCBidWNrZXQgd2hlbiBuZWVkZWQvcG9zc2libGUuCisgKi8KK2Jvb2wKK2V4Y2Vl ZHNfbWF4X3RvdGFsX2JrZW5kX21lbSh1aW50NjQgYWxsb2NhdGlvbl9yZXF1ZXN0KQorewor CWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJLyoKKwkgKiBXaGVuIGxpbWl0aW5nIG1heGlt dW0gYmFja2VuZCBtZW1vcnksIGF0dGVtcHQgdG8gcmVmaWxsIGFsbG9jYXRpb24KKwkgKiBy ZXF1ZXN0IGJ1Y2tldCBpZiBuZWVkZWQuCisJICovCisJaWYgKG1heF90b3RhbF9ia2VuZF9t ZW0gJiYgYWxsb2NhdGlvbl9yZXF1ZXN0ID4gYWxsb2NhdGlvbl9hbGxvd2FuY2UgJiYKKwkJ UHJvY0dsb2JhbCAhPSBOVUxMKQorCXsKKwkJdm9sYXRpbGUgUFJPQ19IRFIgKnByb2NnbG9i YWwgPSBQcm9jR2xvYmFsOworCQl1aW50NjQJCWF2YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRf bWVtID0gMDsKKwkJYm9vbAkJc3RzID0gZmFsc2U7CisKKwkJLyoKKwkJICogSWYgYWxsb2Nh dGlvbiByZXF1ZXN0IGlzIGxhcmdlciB0aGFuIG1lbW9yeSByZWZpbGwgcXVhbnRpdHkgdGhl bgorCQkgKiBhdHRlbXB0IHRvIGluY3JlYXNlIGFsbG9jYXRpb24gYWxsb3dhbmNlIHdpdGgg cmVxdWVzdGVkIGFtb3VudCwKKwkJICogb3RoZXJ3aXNlIGZhbGwgdGhyb3VnaC4gSWYgdGhp cyByZWZpbGwgZmFpbHMgd2UgZG8gbm90IGhhdmUgZW5vdWdoCisJCSAqIG1lbW9yeSB0byBt ZWV0IHRoZSByZXF1ZXN0LgorCQkgKi8KKwkJaWYgKGFsbG9jYXRpb25fcmVxdWVzdCA+PSBh bGxvY2F0aW9uX2FsbG93YW5jZV9yZWZpbGxfcXR5KQorCQl7CisJCQl3aGlsZSAoKGF2YWls YWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtID0gcGdfYXRvbWljX3JlYWRfdTY0KCZwcm9jZ2xv YmFsLT50b3RhbF9ia2VuZF9tZW1fYnl0ZXMpKSA+PSBhbGxvY2F0aW9uX3JlcXVlc3QpCisJ CQl7CisJCQkJaWYgKChyZXN1bHQgPSBwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91NjQo JnByb2NnbG9iYWwtPnRvdGFsX2JrZW5kX21lbV9ieXRlcywKKwkJCQkJCQkJCQkJCQkJCSAm YXZhaWxhYmxlX21heF90b3RhbF9ia2VuZF9tZW0sCisJCQkJCQkJCQkJCQkJCQkgYXZhaWxh YmxlX21heF90b3RhbF9ia2VuZF9tZW0gLSBhbGxvY2F0aW9uX3JlcXVlc3QpKSkKKwkJCQl7 CisJCQkJCWFsbG9jYXRpb25fYWxsb3dhbmNlID0gYWxsb2NhdGlvbl9hbGxvd2FuY2UgKyBh bGxvY2F0aW9uX3JlcXVlc3Q7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJLyoK KwkJCSAqIEV4Y2x1ZGUgYXV4aWxpYXJ5IGFuZCBQb3N0bWFzdGVyIHByb2Nlc3NlcyBmcm9t IHRoZSBjaGVjay4KKwkJCSAqIFJldHVybiBmYWxzZS4gV2hpbGUgd2Ugd2FudCB0byBleGNs dWRlIHRoZW0gZnJvbSB0aGUgY2hlY2ssIHdlCisJCQkgKiBkbyBub3Qgd2FudCB0byBleGNs dWRlIHRoZW0gZnJvbSB0aGUgYWJvdmUgYWxsb2NhdGlvbiBoYW5kbGluZy4KKwkJCSAqLwor CQkJc3dpdGNoIChNeUJhY2tlbmRUeXBlKQorCQkJeworCQkJCWNhc2UgQl9TVEFSVFVQOgor CQkJCWNhc2UgQl9BUkNISVZFUjoKKwkJCQljYXNlIEJfQkdfV1JJVEVSOgorCQkJCWNhc2Ug Ql9DSEVDS1BPSU5URVI6CisJCQkJY2FzZSBCX1dBTF9XUklURVI6CisJCQkJY2FzZSBCX1dB TF9SRUNFSVZFUjoKKwkJCQljYXNlIEJfV0FMX1NVTU1BUklaRVI6CisJCQkJCXJldHVybiBm YWxzZTsKKwkJCQlkZWZhdWx0OgorCQkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKE15UHJv Y1BpZCA9PSBQb3N0bWFzdGVyUGlkKQorCQkJCXJldHVybiBmYWxzZTsKKworCQkJLyoKKwkJ CSAqIElmIHRoZSBhdG9taWMgZXhjaGFuZ2UgZmFpbHMgKHJlc3VsdCA9PSBmYWxzZSksIHdl IGRvIG5vdCBoYXZlCisJCQkgKiBlbm91Z2ggcmVzZXJ2ZSBtZW1vcnkgdG8gbWVldCB0aGUg cmVxdWVzdC4gTmVnYXRlIHJlc3VsdCB0bworCQkJICogcmV0dXJuIHRoZSBwcm9wZXIgdmFs dWUuCisJCQkgKi8KKworCQkJcmV0dXJuICFyZXN1bHQ7CisJCX0KKworCQkvKgorCQkgKiBB dHRlbXB0IHRvIGluY3JlYXNlIGFsbG9jYXRpb24gYWxsb3dhbmNlIGJ5IG1lbW9yeSByZWZp bGwgcXVhbnRpdHkuCisJCSAqIElmIGF2YWlsYWJsZSBtZW1vcnkgaXMvYmVjb21lcyBsZXNz IHRoYW4gbWVtb3J5IHJlZmlsbCBxdWFudGl0eSwKKwkJICogZmFsbCB0aHJvdWdoIHRvIGF0 dGVtcHQgdG8gYWxsb2NhdGUgcmVtYWluaW5nIGF2YWlsYWJsZSBtZW1vcnkuCisJCSAqLwor CQl3aGlsZSAoKGF2YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtID0gcGdfYXRvbWljX3Jl YWRfdTY0KCZwcm9jZ2xvYmFsLT50b3RhbF9ia2VuZF9tZW1fYnl0ZXMpKSA+PSBhbGxvY2F0 aW9uX2FsbG93YW5jZV9yZWZpbGxfcXR5KQorCQl7CisJCQlpZiAoKHN0cyA9IHBnX2F0b21p Y19jb21wYXJlX2V4Y2hhbmdlX3U2NCgmcHJvY2dsb2JhbC0+dG90YWxfYmtlbmRfbWVtX2J5 dGVzLAorCQkJCQkJCQkJCQkJCSAgJmF2YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtLAor CQkJCQkJCQkJCQkJCSAgYXZhaWxhYmxlX21heF90b3RhbF9ia2VuZF9tZW0gLSBhbGxvY2F0 aW9uX2FsbG93YW5jZV9yZWZpbGxfcXR5KSkpCisJCQl7CisJCQkJYWxsb2NhdGlvbl9hbGxv d2FuY2UgPSBhbGxvY2F0aW9uX2FsbG93YW5jZSArIGFsbG9jYXRpb25fYWxsb3dhbmNlX3Jl ZmlsbF9xdHk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQkvKiBEbyBub3QgYXR0ZW1w dCB0byBpbmNyZWFzZSBhbGxvY2F0aW9uIGlmIGF2YWlsYWJsZSBtZW1vcnkgaXMgYmVsb3cK KwkJICogYWxsb2NhdGlvbl9hbGxvd2FuY2VfcmVmaWxsX3F0eSAuCisJCSAqLworCisJCS8q CisJCSAqIElmIHJlZmlsbCBpcyBub3Qgc3VjY2Vzc2Z1bCwgd2UgcmV0dXJuIHRydWUsIG1l bW9yeSBsaW1pdCBleGNlZWRlZAorCQkgKi8KKwkJaWYgKCFzdHMpCisJCQlyZXN1bHQgPSB0 cnVlOworCX0KKworCS8qCisJICogRXhjbHVkZSBhdXhpbGlhcnkgYW5kIHBvc3RtYXN0ZXIg cHJvY2Vzc2VzIGZyb20gdGhlIGNoZWNrLiBSZXR1cm4gZmFsc2UuCisJICogV2hpbGUgd2Ug d2FudCB0byBleGNsdWRlIHRoZW0gZnJvbSB0aGUgY2hlY2ssIHdlIGRvIG5vdCB3YW50IHRv IGV4Y2x1ZGUKKwkgKiB0aGVtIGZyb20gdGhlIGFib3ZlIGFsbG9jYXRpb24gaGFuZGxpbmcu CisJICovCisJc3dpdGNoIChNeUJhY2tlbmRUeXBlKQorCXsKKwkJY2FzZSBCX1NUQVJUVVA6 CisJCWNhc2UgQl9BUkNISVZFUjoKKwkJY2FzZSBCX0JHX1dSSVRFUjoKKwkJY2FzZSBCX0NI RUNLUE9JTlRFUjoKKwkJY2FzZSBCX1dBTF9XUklURVI6CisJCWNhc2UgQl9XQUxfUkVDRUlW RVI6CisJCWNhc2UgQl9XQUxfU1VNTUFSSVpFUjoKKwkJCXJlc3VsdCA9IGZhbHNlOworCQlk ZWZhdWx0OgorCQkJYnJlYWs7CisJfQorCisJaWYgKE15UHJvY1BpZCA9PSBQb3N0bWFzdGVy UGlkKQorCQlyZXN1bHQgPSBmYWxzZTsKKworCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDljODJlYzQ4Y2IuLjE1ZDI4MDBkNWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0yMDkzLDcgKzIwOTMs NyBAQCBwZ19zdGF0X2dldF9tZW1vcnlfYWxsb2NhdGlvbihQR19GVU5DVElPTl9BUkdTKQog RGF0dW0KIHBnX3N0YXRfZ2V0X2dsb2JhbF9tZW1vcnlfYWxsb2NhdGlvbihQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9HTE9CQUxfTUVNT1JZX0FMTE9DQVRJ T05fQ09MUwkyCisjZGVmaW5lIFBHX1NUQVRfR0VUX0dMT0JBTF9NRU1PUllfQUxMT0NBVElP Tl9DT0xTCTMKIAlUdXBsZURlc2MJdHVwZGVzYzsKIAlEYXR1bQkJdmFsdWVzW1BHX1NUQVRf R0VUX0dMT0JBTF9NRU1PUllfQUxMT0NBVElPTl9DT0xTXSA9IHswfTsKIAlib29sCQludWxs c1tQR19TVEFUX0dFVF9HTE9CQUxfTUVNT1JZX0FMTE9DQVRJT05fQ09MU10gPSB7MH07CkBA IC0yMTAzLDE1ICsyMTAzLDIzIEBAIHBnX3N0YXRfZ2V0X2dsb2JhbF9tZW1vcnlfYWxsb2Nh dGlvbihQR19GVU5DVElPTl9BUkdTKQogCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxl RGVzYyhQR19TVEFUX0dFVF9HTE9CQUxfTUVNT1JZX0FMTE9DQVRJT05fQ09MUyk7CiAJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAiZGF0aWQiLAogCQkJ CQkgICBPSURPSUQsIC0xLCAwKTsKLQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0 dHJOdW1iZXIpIDIsICJnbG9iYWxfZHNtX2FsbG9jYXRlZF9ieXRlcyIsCisJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAidG90YWxfYmtlbmRfbWVtX2J5 dGVzX2F2YWlsYWJsZSIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDMsICJnbG9iYWxfZHNtX2FsbG9jYXRl ZF9ieXRlcyIsCiAJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKIAlCbGVzc1R1cGxlRGVzYyh0 dXBkZXNjKTsKIAogCS8qIGRhdGlkICovCiAJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXREYXR1 bShNeURhdGFiYXNlSWQpOwogCi0JLyogZ2V0IGdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVz ICovCi0JdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bShwZ19hdG9taWNfcmVhZF91NjQoJnBy b2NnbG9iYWwtPmdsb2JhbF9kc21fYWxsb2NhdGlvbikpOworCS8qIEdldCB0b3RhbF9ia2Vu ZF9tZW1fYnl0ZXMgLSByZXR1cm4gLTEgaWYgZGlzYWJsZWQgKi8KKwlpZiAobWF4X3RvdGFs X2JrZW5kX21lbSA9PSAwKQorCQl2YWx1ZXNbMV0gPSBJbnQ2NEdldERhdHVtKC0xKTsKKwll bHNlCisJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0ocGdfYXRvbWljX3JlYWRfdTY0KCZw cm9jZ2xvYmFsLT50b3RhbF9ia2VuZF9tZW1fYnl0ZXMpKTsKKworCS8qIEdldCBnbG9iYWxf ZHNtX2FsbG9jYXRlZF9ieXRlcyAqLworCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0ocGdf YXRvbWljX3JlYWRfdTY0KCZwcm9jZ2xvYmFsLT5nbG9iYWxfZHNtX2FsbG9jYXRpb24pKTsK IAogCS8qIFJldHVybnMgdGhlIHJlY29yZCBhcyBEYXR1bSAqLwogCVBHX1JFVFVSTl9EQVRV TShIZWFwVHVwbGVHZXREYXR1bShoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBu dWxscykpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2gu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYwppbmRleCBhNDE1MjA4MGI1 Li45NDUwMDMyYTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFo YXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCkBAIC0xMDQs NyArMTA0LDYgQEAKICNpbmNsdWRlICJ1dGlscy9keW5haGFzaC5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAKLQogLyoKICAqIENvbnN0YW50cwogICoKQEAgLTM1OSw3ICsz NTgsNiBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVtLCBj b25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJQXNzZXJ0KGZsYWdzICYgSEFTSF9F TEVNKTsKIAlBc3NlcnQoaW5mby0+a2V5c2l6ZSA+IDApOwogCUFzc2VydChpbmZvLT5lbnRy eXNpemUgPj0gaW5mby0+a2V5c2l6ZSk7Ci0KIAkvKgogCSAqIEZvciBzaGFyZWQgaGFzaCB0 YWJsZXMsIHdlIGhhdmUgYSBsb2NhbCBoYXNoIGhlYWRlciAoSFRBQiBzdHJ1Y3QpIHRoYXQK IAkgKiB3ZSBhbGxvY2F0ZSBpbiBUb3BNZW1vcnlDb250ZXh0OyBhbGwgZWxzZSBpcyBpbiBz aGFyZWQgbWVtb3J5LgpAQCAtMzc3LDYgKzM3NSw3IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNo YXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFn cykKIAl9CiAJZWxzZQogCXsKKwkJLyogU2V0IHVwIHRvIGFsbG9jYXRlIHRoZSBoYXNoIGhl YWRlciAqLwogCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUncyBwcml2YXRlIG1lbW9yeSBj b250ZXh0ICovCiAJCWlmIChmbGFncyAmIEhBU0hfQ09OVEVYVCkKIAkJCUN1cnJlbnREeW5h SGFzaEN4dCA9IGluZm8tPmhjeHQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9p bml0L21pc2Npbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKaW5k ZXggOWI0NzQ1MDgxMy4uZDcyZWMzYTBkYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYwpAQCAtMTcxLDggKzE3MSwxNiBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZvaWQpCiAJ CQkJIGVycm1zZ19pbnRlcm5hbCgiY291bGQgbm90IHNldCBwb3N0bWFzdGVyIGRlYXRoIG1v bml0b3JpbmcgcGlwZSB0byBGRF9DTE9FWEVDIG1vZGU6ICVtIikpKTsKICNlbmRpZgogCisJ LyoKKwkgKiBJbml0IHBnc3RhdCBhbGxvY2F0ZWQgYnl0ZXMgY291bnRlcnMgaGVyZSBmb3Ig Zm9ya2VkIGJhY2tlbmRzLgorCSAqIEZvcmsvZXhlYyBiYWNrZW5kcyBoYXZlIG5vdCB5ZXQg cmVhdHRhY2hlZCB0byBzaGFyZWQgbWVtb3J5IGF0IHRoaXMKKwkgKiBwb2ludC4gVGhleSB3 aWxsIGluaXQgcGdzdGF0IGFsbG9jYXRlZCBieXRlcyBjb3VudGVycyBpbgorCSAqIFBHU2hh cmVkTWVtb3J5UmVBdHRhY2guCisJICovCisjaWZuZGVmIEVYRUNfQkFDS0VORAogCS8qIElu aXQgYWxsb2NhdGVkIGJ5dGVzIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZyBwYXJlbnQgYWxs b2NhdGlvbiAqLwogCXBnc3RhdF9pbml0X2FsbG9jYXRlZF9ieXRlcygpOworI2VuZGlmCiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDU3ZDlkZTRk ZDkuLjY1ZjBiNjkzMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBA IC0zNjI2LDYgKzM2MjYsMTcgQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJ bnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7Im1heF90b3RhbF9i YWNrZW5kX21lbW9yeSIsIFBHQ19TVV9CQUNLRU5ELCBSRVNPVVJDRVNfTUVNLAorCQkJZ2V0 dGV4dF9ub29wKCJSZXN0cmljdCB0b3RhbCBiYWNrZW5kIG1lbW9yeSBhbGxvY2F0aW9ucyB0 byB0aGlzIG1heC4iKSwKKwkJCWdldHRleHRfbm9vcCgiMCB0dXJucyB0aGlzIGZlYXR1cmUg b2ZmLiIpLAorCQkJR1VDX1VOSVRfTUIKKwkJfSwKKwkJJm1heF90b3RhbF9ia2VuZF9tZW0s CisJCTAsIDAsIElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJLyogRW5k LW9mLWxpc3QgbWFya2VyICovCiAJewogCQl7TlVMTCwgMCwgMCwgTlVMTCwgTlVMTH0sIE5V TEwsIDAsIDAsIDAsIE5VTEwsIE5VTEwsIE5VTEwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAyMjQ0ZWU1MmY3Li41MGUyYmIy YmNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCkBAIC0xNjksNiArMTY5LDkgQEAKICN2YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0 ID0gMjU2a0IJIyBzaXplIG9mIHZhY3V1bSBhbmQgYW5hbHl6ZSBidWZmZXIgYWNjZXNzIHN0 cmF0ZWd5IHJpbmc7CiAJCQkJCSMgMCB0byBkaXNhYmxlIHZhY3V1bSBidWZmZXIgYWNjZXNz IHN0cmF0ZWd5OwogCQkJCQkjIHJhbmdlIDEyOGtCIHRvIDE2R0IKKyNtYXhfdG90YWxfYmFj a2VuZF9tZW1vcnkgPSAwTUIJCSMgUmVzdHJpY3QgdG90YWwgYmFja2VuZCBtZW1vcnkgYWxs b2NhdGlvbnMKKwkJCQkJCQkJCSMgdG8gdGhpcyBtYXggKGluIE1CKS4gMCB0dXJucyB0aGlz IGZlYXR1cmUKKwkJCQkJCQkJCSMgb2ZmLgogCiAjIC0gRGlzayAtCiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9hc2V0LmMKaW5kZXggY2QwNzRhZGQxNy4uZjBlZTZhOTM5MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9hc2V0LmMKQEAgLTQzOCw2ICs0MzgsMTggQEAgQWxsb2NTZXRDb250ZXh0Q3JlYXRlSW50 ZXJuYWwoTWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJZWxzZQogCQlmaXJzdEJsb2NrU2l6ZSA9 IE1heChmaXJzdEJsb2NrU2l6ZSwgaW5pdEJsb2NrU2l6ZSk7CiAKKwkvKiBEbyBub3QgZXhj ZWVkIG1heGltdW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChleGNlZWRz X21heF90b3RhbF9ia2VuZF9tZW0oZmlyc3RCbG9ja1NpemUpKQorCXsKKwkJaWYgKFRvcE1l bW9yeUNvbnRleHQpCisJCQlNZW1vcnlDb250ZXh0U3RhdHMoVG9wTWVtb3J5Q29udGV4dCk7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZ KSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IC0gZXhjZWVkcyBtYXhfdG90YWxfYmFj a2VuZF9tZW1vcnkiKSwKKwkJCQkgZXJyZGV0YWlsKCJGYWlsZWQgd2hpbGUgY3JlYXRpbmcg bWVtb3J5IGNvbnRleHQgXCIlc1wiLiIsCisJCQkJCQkgICBuYW1lKSkpOworCX0KKwogCS8q CiAJICogQWxsb2NhdGUgdGhlIGluaXRpYWwgYmxvY2suICBVbmxpa2Ugb3RoZXIgYXNldC5j IGJsb2NrcywgaXQgc3RhcnRzIHdpdGgKIAkgKiB0aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0 cyBibG9jayBoZWFkZXIgZm9sbG93cyB0aGF0LgpAQCAtNzI0LDYgKzczNiwxMSBAQCBBbGxv Y1NldEFsbG9jTGFyZ2UoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUsIGludCBm bGFncykKICNlbmRpZgogCiAJYmxrc2l6ZSA9IGNodW5rX3NpemUgKyBBTExPQ19CTE9DS0hE UlNaICsgQUxMT0NfQ0hVTktIRFJTWjsKKworCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBh bGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJaWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2Jr ZW5kX21lbShibGtzaXplKSkKKwkJcmV0dXJuIE5VTEw7CisKIAlibG9jayA9IChBbGxvY0Js b2NrKSBtYWxsb2MoYmxrc2l6ZSk7CiAJaWYgKGJsb2NrID09IE5VTEwpCiAJCXJldHVybiBN ZW1vcnlDb250ZXh0QWxsb2NhdGlvbkZhaWx1cmUoY29udGV4dCwgc2l6ZSwgZmxhZ3MpOwpA QCAtOTE3LDYgKzkzNCwxMCBAQCBBbGxvY1NldEFsbG9jRnJvbU5ld0Jsb2NrKE1lbW9yeUNv bnRleHQgY29udGV4dCwgU2l6ZSBzaXplLCBpbnQgZmxhZ3MsCiAJd2hpbGUgKGJsa3NpemUg PCByZXF1aXJlZF9zaXplKQogCQlibGtzaXplIDw8PSAxOwogCisJLyogRG8gbm90IGV4Y2Vl ZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlpZiAoZXhjZWVkc19t YXhfdG90YWxfYmtlbmRfbWVtKGJsa3NpemUpKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qIFRy eSB0byBhbGxvY2F0ZSBpdCAqLwogCWJsb2NrID0gKEFsbG9jQmxvY2spIG1hbGxvYyhibGtz aXplKTsKIApAQCAtMTIzOCw2ICsxMjU5LDE4IEBAIEFsbG9jU2V0UmVhbGxvYyh2b2lkICpw b2ludGVyLCBTaXplIHNpemUsIGludCBmbGFncykKIAkJYmxrc2l6ZSA9IGNoa3NpemUgKyBB TExPQ19CTE9DS0hEUlNaICsgQUxMT0NfQ0hVTktIRFJTWjsKIAkJb2xkYmxrc2l6ZSA9IGJs b2NrLT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOwogCisJCS8qCisJCSAqIERvIG5vdCBl eGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uLiBOT1RFOiBjaGVja2lu ZyBmb3IKKwkJICogdGhlIGZ1bGwgc2l6ZSBoZXJlIHJhdGhlciB0aGFuIGp1c3QgdGhlIGFt b3VudCBvZiBpbmNyZWFzZWQKKwkJICogYWxsb2NhdGlvbiB0byBwcmV2ZW50IGEgcG90ZW50 aWFsIHVuZGVyZmxvdyBvZiAqbXlfYWxsb2NhdGlvbgorCQkgKiBhbGxvd2FuY2UgaW4gY2Fz ZXMgd2hlcmUgYmxrc2l6ZSAtIG9sZGJsa3NpemUgZG9lcyBub3QgdHJpZ2dlciBhCisJCSAq IHJlZmlsbCBidXQgYmxrc2l6ZSBpcyBncmVhdGVyIHRoYW4gKm15X2FsbG9jYXRpb25fYWxs b3dhbmNlLgorCQkgKiBVbmRlcmZsb3cgd291bGQgb2NjdXIgd2l0aCB0aGUgY2FsbCBiZWxv dyB0bworCQkgKiBwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19pbmNyZWFzZSgpCisJ CSAqLworCQlpZiAoYmxrc2l6ZSA+IG9sZGJsa3NpemUgJiYgZXhjZWVkc19tYXhfdG90YWxf YmtlbmRfbWVtKGJsa3NpemUpKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJYmxvY2sgPSAoQWxs b2NCbG9jaykgcmVhbGxvYyhibG9jaywgYmxrc2l6ZSk7CiAJCWlmIChibG9jayA9PSBOVUxM KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24u YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCmluZGV4IGRiZWE0ZjI0 OGUuLjNhNmUzYWJlYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2Vu ZXJhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCkBA IC0yMDMsNiArMjAzLDE2IEBAIEdlbmVyYXRpb25Db250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRl eHQgcGFyZW50LAogCWVsc2UKIAkJYWxsb2NTaXplID0gTWF4KGFsbG9jU2l6ZSwgaW5pdEJs b2NrU2l6ZSk7CiAKKwlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGFsbG9jU2l6 ZSkpCisJeworCQlNZW1vcnlDb250ZXh0U3RhdHMoVG9wTWVtb3J5Q29udGV4dCk7CisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJ CQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IC0gZXhjZWVkcyBtYXhfdG90YWxfYmFja2VuZF9t ZW1vcnkiKSwKKwkJCQkgZXJyZGV0YWlsKCJGYWlsZWQgd2hpbGUgY3JlYXRpbmcgbWVtb3J5 IGNvbnRleHQgXCIlc1wiLiIsCisJCQkJCQkgICBuYW1lKSkpOworCX0KKwogCS8qCiAJICog QWxsb2NhdGUgdGhlIGluaXRpYWwgYmxvY2suICBVbmxpa2Ugb3RoZXIgZ2VuZXJhdGlvbi5j IGJsb2NrcywgaXQKIAkgKiBzdGFydHMgd2l0aCB0aGUgY29udGV4dCBoZWFkZXIgYW5kIGl0 cyBibG9jayBoZWFkZXIgZm9sbG93cyB0aGF0LgpAQCAtMzcyLDYgKzM4Miw5IEBAIEdlbmVy YXRpb25BbGxvY0xhcmdlKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXplLCBpbnQg ZmxhZ3MpCiAJcmVxdWlyZWRfc2l6ZSA9IGNodW5rX3NpemUgKyBHZW5lcmF0aW9uX0NIVU5L SERSU1o7CiAJYmxrc2l6ZSA9IHJlcXVpcmVkX3NpemUgKyBHZW5lcmF0aW9uX0JMT0NLSERS U1o7CiAKKwlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGJsa3NpemUpKQorCQly ZXR1cm4gTlVMTDsKKwogCWJsb2NrID0gKEdlbmVyYXRpb25CbG9jayAqKSBtYWxsb2MoYmxr c2l6ZSk7CiAJaWYgKGJsb2NrID09IE5VTEwpCiAJCXJldHVybiBNZW1vcnlDb250ZXh0QWxs b2NhdGlvbkZhaWx1cmUoY29udGV4dCwgc2l6ZSwgZmxhZ3MpOwpAQCAtNDk0LDYgKzUwNyw5 IEBAIEdlbmVyYXRpb25BbGxvY0Zyb21OZXdCbG9jayhNZW1vcnlDb250ZXh0IGNvbnRleHQs IFNpemUgc2l6ZSwgaW50IGZsYWdzLAogCWlmIChibGtzaXplIDwgcmVxdWlyZWRfc2l6ZSkK IAkJYmxrc2l6ZSA9IHBnX25leHRwb3dlcjJfc2l6ZV90KHJlcXVpcmVkX3NpemUpOwogCisJ aWYgKGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShibGtzaXplKSkKKwkJcmV0dXJuIE5V TEw7CisKIAlibG9jayA9IChHZW5lcmF0aW9uQmxvY2sgKikgbWFsbG9jKGJsa3NpemUpOwog CiAJaWYgKGJsb2NrID09IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t bWdyL3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCmluZGV4IDg1MDc2 MGY0ODUuLjM2YjNmMTQyNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv c2xhYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCkBAIC0zNjAsNyAr MzYwLDE2IEBAIFNsYWJDb250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQll bG9nKEVSUk9SLCAiYmxvY2sgc2l6ZSAlenUgZm9yIHNsYWIgaXMgdG9vIHNtYWxsIGZvciAl enUtYnl0ZSBjaHVua3MiLAogCQkJIGJsb2NrU2l6ZSwgY2h1bmtTaXplKTsKIAotCisJLyog RG8gbm90IGV4Y2VlZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlp ZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKFNsYWJfQ09OVEVYVF9IRFJTWihjaHVu a3NQZXJCbG9jaykpKQorCXsKKwkJTWVtb3J5Q29udGV4dFN0YXRzKFRvcE1lbW9yeUNvbnRl eHQpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01F TU9SWSksCisJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSAtIGV4Y2VlZHMgbWF4X3RvdGFs X2JhY2tlbmRfbWVtb3J5IiksCisJCQkJIGVycmRldGFpbCgiRmFpbGVkIHdoaWxlIGNyZWF0 aW5nIG1lbW9yeSBjb250ZXh0IFwiJXNcIi4iLAorCQkJCQkJICAgbmFtZSkpKTsKKwl9CiAK IAlzbGFiID0gKFNsYWJDb250ZXh0ICopIG1hbGxvYyhTbGFiX0NPTlRFWFRfSERSU1ooY2h1 bmtzUGVyQmxvY2spKTsKIAlpZiAoc2xhYiA9PSBOVUxMKQpAQCAtNTgyLDYgKzU5MSwxMCBA QCBTbGFiQWxsb2NGcm9tTmV3QmxvY2soTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNp emUsIGludCBmbGFncykKIAl9CiAJZWxzZQogCXsKKwkJLyogRG8gbm90IGV4Y2VlZCBtYXhp bXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwkJaWYgKGV4Y2VlZHNfbWF4X3Rv dGFsX2JrZW5kX21lbShzbGFiLT5ibG9ja1NpemUpKQorCQkJcmV0dXJuIE1lbW9yeUNvbnRl eHRBbGxvY2F0aW9uRmFpbHVyZShjb250ZXh0LCBzaXplLCBmbGFncyk7CisKIAkJYmxvY2sg PSAoU2xhYkJsb2NrICopIG1hbGxvYyhzbGFiLT5ibG9ja1NpemUpOwogCiAJCWlmICh1bmxp a2VseShibG9jayA9PSBOVUxMKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDU2 YWIxZjk0NzAuLjc5ODY5ZDFjNDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt NTQ0OCw5ICs1NDQ4LDkgQEAKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGdsb2JhbCBtZW1v cnkgYWxsb2NhdGlvbiBpbmZvcm1hdGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0 X2dsb2JhbF9tZW1vcnlfYWxsb2NhdGlvbicsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3Jl Y29yZCcsCi0gIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxp bnQ4fScsCi0gIHByb2FyZ21vZGVzID0+ICd7byxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7 ZGF0aWQsZ2xvYmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXN9JywKKyAgcHJvYXJndHlwZXMgPT4g JycsIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLGludDgsaW50OH0nLAorICBwcm9hcmdtb2Rl cyA9PiAne28sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7ZGF0aWQsdG90YWxfYmtlbmRf bWVtX2J5dGVzX2F2YWlsYWJsZSxnbG9iYWxfZHNtX2FsbG9jYXRlZF9ieXRlc30nLAogICBw cm9zcmMgPT4ncGdfc3RhdF9nZXRfZ2xvYmFsX21lbW9yeV9hbGxvY2F0aW9uJyB9LAogeyBv aWQgPT4gJzIwMjInLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogaW5mb3JtYXRpb24gYWJv dXQgY3VycmVudGx5IGFjdGl2ZSBiYWNrZW5kcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IGEz NTBmNDU1Y2QuLmZhN2M5NGM2YzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC00MjQsNiArNDI0 LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBST0NfSERSCiAJaW50CQkJc3RhcnR1cEJ1ZmZlclBp bldhaXRCdWZJZDsKIAkvKiBHbG9iYWwgZHNtIGFsbG9jYXRpb25zICovCiAJcGdfYXRvbWlj X3VpbnQ2NCBnbG9iYWxfZHNtX2FsbG9jYXRpb247CisKKwkvKgorCSAqIE1heCBiYWNrZW5k IG1lbW9yeSBhbGxvY2F0aW9uIHRyYWNrZXIuIFVzZWQvSW5pdGlhbGl6ZWQgd2hlbgorCSAq IG1heF90b3RhbF9ia2VuZF9tZW0gPiAwIGFzIG1heF90b3RhbF9ia2VuZF9tZW0gKE1CKSBj b252ZXJ0ZWQgdG8gYnl0ZXMuCisJICogRGVjcmVhc2VzL2luY3JlYXNlcyB3aXRoIGZyZWUv bWFsbG9jIG9mIGJhY2tlbmQgbWVtb3J5LgorCSAqLworCXBnX2F0b21pY191aW50NjQgdG90 YWxfYmtlbmRfbWVtX2J5dGVzOwogfSBQUk9DX0hEUjsKIAogZXh0ZXJuIFBHRExMSU1QT1JU IFBST0NfSERSICpQcm9jR2xvYmFsOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv YmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgK aW5kZXggY2JmODAxODg0ZC4uYTgzMzk0MTI3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvYmFja2VuZF9zdGF0dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5k X3N0YXR1cy5oCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0 YW1wLmgiCiAjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCQkJLyogZm9yIEJhY2tlbmRUeXBlICovCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVt YmVyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFj a2VuZF9wcm9ncmVzcy5oIgogCiAKQEAgLTMwMyw2ICszMDMsNyBAQCB0eXBlZGVmIHN0cnVj dCBMb2NhbFBnQmFja2VuZFN0YXR1cwogICovCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBw Z3N0YXRfdHJhY2tfYWN0aXZpdGllczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcGdzdGF0 X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemU7CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1h eF90b3RhbF9ia2VuZF9tZW07CiAKIAogLyogLS0tLS0tLS0tLQpAQCAtMzE1LDYgKzMxNiwx MCBAQCBleHRlcm4gUEdETExJTVBPUlQgdWludDY0ICpteV9hc2V0X2FsbG9jYXRlZF9ieXRl czsKIGV4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgKm15X2RzbV9hbGxvY2F0ZWRfYnl0ZXM7 CiBleHRlcm4gUEdETExJTVBPUlQgdWludDY0ICpteV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9i eXRlczsKIGV4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgKm15X3NsYWJfYWxsb2NhdGVkX2J5 dGVzOworZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ2NCBhbGxvY2F0aW9uX2FsbG93YW5jZTsK K2V4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgaW5pdGlhbF9hbGxvY2F0aW9uX2FsbG93YW5j ZTsKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgYWxsb2NhdGlvbl9yZXR1cm47CitleHRl cm4gUEdETExJTVBPUlQgdWludDY0IGFsbG9jYXRpb25fcmV0dXJuX3RocmVzaG9sZDsKIAog CiAvKiAtLS0tLS0tLS0tCkBAIC0zNjMsNiArMzY4LDcgQEAgZXh0ZXJuIFBnQmFja2VuZFN0 YXR1cyAqcGdzdGF0X2dldF9iZWVudHJ5X2J5X3Byb2NfbnVtYmVyKFByb2NOdW1iZXIgcHJv Y051bWJlcikKIGV4dGVybiBMb2NhbFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2dldF9sb2Nh bF9iZWVudHJ5X2J5X3Byb2NfbnVtYmVyKFByb2NOdW1iZXIgcHJvY051bWJlcik7CiBleHRl cm4gTG9jYWxQZ0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9ieV9p bmRleChpbnQgaWR4KTsKIGV4dGVybiBjaGFyICpwZ3N0YXRfY2xpcF9hY3Rpdml0eShjb25z dCBjaGFyICpyYXdfYWN0aXZpdHkpOworZXh0ZXJuIGJvb2wgZXhjZWVkc19tYXhfdG90YWxf YmtlbmRfbWVtKHVpbnQ2NCBhbGxvY2F0aW9uX3JlcXVlc3QpOwogCiAvKiAtLS0tLS0tLS0t CiAgKiBwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZSgpIC0KQEAgLTM3 OCw3ICszODQsNyBAQCBwZ3N0YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19kZWNyZWFzZShp bnQ2NCBwcm9jX2FsbG9jYXRlZF9ieXRlcywKIHsKIAl1aW50NjQJCXRlbXA7CiAKLQkvKiBB dm9pZCBhbGxvY2F0ZWRfYnl0ZXMgdW5zaWduZWQgaW50ZWdlciBvdmVyZmxvdyBvbiBkZWNy ZWFzZSAqLworCS8qIFNhbml0eSBjaGVjazogbXkgYWxsb2NhdGVkIGJ5dGVzIHNob3VsZCBu ZXZlciBkcm9wIGJlbG93IHplcm8gKi8KIAlpZiAocGdfc3ViX3U2NF9vdmVyZmxvdygqbXlf YWxsb2NhdGVkX2J5dGVzLCBwcm9jX2FsbG9jYXRlZF9ieXRlcywgJnRlbXApKQogCXsKIAkJ LyogT24gb3ZlcmZsb3csIHNldCBhbGxvY2F0ZWQgYnl0ZXMgYW5kIGFsbG9jYXRvciB0eXBl IGJ5dGVzIHRvIHplcm8gKi8KQEAgLTM4NywxMyArMzkzLDM1IEBAIHBnc3RhdF9yZXBvcnRf YWxsb2NhdGVkX2J5dGVzX2RlY3JlYXNlKGludDY0IHByb2NfYWxsb2NhdGVkX2J5dGVzLAog CQkqbXlfZHNtX2FsbG9jYXRlZF9ieXRlcyA9IDA7CiAJCSpteV9nZW5lcmF0aW9uX2FsbG9j YXRlZF9ieXRlcyA9IDA7CiAJCSpteV9zbGFiX2FsbG9jYXRlZF9ieXRlcyA9IDA7CisKKwkJ LyogQWRkIGZyZWVkIG1lbW9yeSB0byBhbGxvY2F0aW9uIHJldHVybiBjb3VudGVyLiAqLwor CQlhbGxvY2F0aW9uX3JldHVybiArPSBwcm9jX2FsbG9jYXRlZF9ieXRlczsKKworCQkvKgor CQkgKiBSZXR1cm4gZnJlZWQgbWVtb3J5IHRvIHRoZSBnbG9iYWwgY291bnRlciBpZiByZXR1 cm4gdGhyZXNob2xkIGlzCisJCSAqIG1ldC4KKwkJICovCisJCWlmIChtYXhfdG90YWxfYmtl bmRfbWVtICYmIGFsbG9jYXRpb25fcmV0dXJuID49IGFsbG9jYXRpb25fcmV0dXJuX3RocmVz aG9sZCkKKwkJeworCQkJaWYgKFByb2NHbG9iYWwpCisJCQl7CisJCQkJdm9sYXRpbGUgUFJP Q19IRFIgKnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOworCisJCQkJLyogQWRkIHRvIGdsb2Jh bCB0cmFja2VyICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91NjQoJnByb2NnbG9iYWwt PnRvdGFsX2JrZW5kX21lbV9ieXRlcywKKwkJCQkJCQkJCQlhbGxvY2F0aW9uX3JldHVybik7 CisKKwkJCQkvKiBSZXN0YXJ0IHRoZSBjb3VudCAqLworCQkJCWFsbG9jYXRpb25fcmV0dXJu ID0gMDsKKwkJCX0KKwkJfQogCX0KIAllbHNlCiAJewotCQkvKiBkZWNyZWFzZSBhbGxvY2F0 aW9uICovCi0JCSpteV9hbGxvY2F0ZWRfYnl0ZXMgLT0gcHJvY19hbGxvY2F0ZWRfYnl0ZXM7 CisJCS8qIEFkZCBmcmVlZCBtZW1vcnkgdG8gYWxsb2NhdGlvbiByZXR1cm4gY291bnRlciAq LworCQlhbGxvY2F0aW9uX3JldHVybiArPSBwcm9jX2FsbG9jYXRlZF9ieXRlczsKIAotCQkv KiBEZWNyZWFzZSBhbGxvY2F0b3IgdHlwZSBhbGxvY2F0ZWQgYnl0ZXMuICovCisJCS8qIERl Y3JlYXNlIGFsbG9jYXRvciB0eXBlIGFsbG9jYXRlZCBieXRlcyAqLwogCQlzd2l0Y2ggKHBn X2FsbG9jYXRvcl90eXBlKQogCQl7CiAJCQljYXNlIFBHX0FMTE9DX0FTRVQ6CkBAIC00MTUs NiArNDQzLDMwIEBAIHBnc3RhdF9yZXBvcnRfYWxsb2NhdGVkX2J5dGVzX2RlY3JlYXNlKGlu dDY0IHByb2NfYWxsb2NhdGVkX2J5dGVzLAogCQkJCSpteV9zbGFiX2FsbG9jYXRlZF9ieXRl cyAtPSBwcm9jX2FsbG9jYXRlZF9ieXRlczsKIAkJCQlicmVhazsKIAkJfQorCisJCS8qIGRl Y3JlYXNlIGFsbG9jYXRpb24gKi8KKwkJKm15X2FsbG9jYXRlZF9ieXRlcyA9ICpteV9hc2V0 X2FsbG9jYXRlZF9ieXRlcyArCisJCQkqbXlfZHNtX2FsbG9jYXRlZF9ieXRlcyArICpteV9n ZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyArCisJCQkqbXlfc2xhYl9hbGxvY2F0ZWRfYnl0 ZXM7CisKKwkJLyoKKwkJICogUmV0dXJuIGZyZWVkIG1lbW9yeSB0byB0aGUgZ2xvYmFsIGNv dW50ZXIgaWYgcmV0dXJuIHRocmVzaG9sZCBpcworCQkgKiBtZXQuCisJCSAqLworCQlpZiAo bWF4X3RvdGFsX2JrZW5kX21lbSAmJiBhbGxvY2F0aW9uX3JldHVybiA+PSBhbGxvY2F0aW9u X3JldHVybl90aHJlc2hvbGQpCisJCXsKKwkJCWlmIChQcm9jR2xvYmFsKQorCQkJeworCQkJ CXZvbGF0aWxlIFBST0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKKworCQkJCS8q IEFkZCB0byBnbG9iYWwgdHJhY2tlciAqLworCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTY0 KCZwcm9jZ2xvYmFsLT50b3RhbF9ia2VuZF9tZW1fYnl0ZXMsCisJCQkJCQkJCQkJYWxsb2Nh dGlvbl9yZXR1cm4pOworCisJCQkJLyogUmVzdGFydCB0aGUgY291bnQgKi8KKwkJCQlhbGxv Y2F0aW9uX3JldHVybiA9IDA7CisJCQl9CisJCX0KIAl9CiAKIAlyZXR1cm47CkBAIC00MzIs NyArNDg0LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZAogcGdzdGF0X3JlcG9ydF9hbGxvY2F0 ZWRfYnl0ZXNfaW5jcmVhc2UoaW50NjQgcHJvY19hbGxvY2F0ZWRfYnl0ZXMsCiAJCQkJCQkJ CQkgICBpbnQgcGdfYWxsb2NhdG9yX3R5cGUpCiB7Ci0JKm15X2FsbG9jYXRlZF9ieXRlcyAr PSBwcm9jX2FsbG9jYXRlZF9ieXRlczsKKwl1aW50NjQJCXRlbXA7CisKKwkvKiBTYW5pdHkg Y2hlY2s6IG15IGFsbG9jYXRlZCBieXRlcyBzaG91bGQgbmV2ZXIgZHJvcCBiZWxvdyB6ZXJv ICovCisJaWYgKHBnX3N1Yl91NjRfb3ZlcmZsb3coYWxsb2NhdGlvbl9hbGxvd2FuY2UsIHBy b2NfYWxsb2NhdGVkX2J5dGVzLCAmdGVtcCkpCisJCWFsbG9jYXRpb25fYWxsb3dhbmNlID0g MDsKKwllbHNlCisJCWFsbG9jYXRpb25fYWxsb3dhbmNlIC09IHByb2NfYWxsb2NhdGVkX2J5 dGVzOwogCiAJLyogSW5jcmVhc2UgYWxsb2NhdG9yIHR5cGUgYWxsb2NhdGVkIGJ5dGVzICov CiAJc3dpdGNoIChwZ19hbGxvY2F0b3JfdHlwZSkKQEAgLTQ1Nyw2ICs1MTUsOSBAQCBwZ3N0 YXRfcmVwb3J0X2FsbG9jYXRlZF9ieXRlc19pbmNyZWFzZShpbnQ2NCBwcm9jX2FsbG9jYXRl ZF9ieXRlcywKIAkJCWJyZWFrOwogCX0KIAorCSpteV9hbGxvY2F0ZWRfYnl0ZXMgPSAqbXlf YXNldF9hbGxvY2F0ZWRfYnl0ZXMgKyAqbXlfZHNtX2FsbG9jYXRlZF9ieXRlcyArCisJCSpt eV9nZW5lcmF0aW9uX2FsbG9jYXRlZF9ieXRlcyArICpteV9zbGFiX2FsbG9jYXRlZF9ieXRl czsKKwogCXJldHVybjsKIH0KIApAQCAtNDc2LDYgKzUzNywzNiBAQCBwZ3N0YXRfaW5pdF9h bGxvY2F0ZWRfYnl0ZXModm9pZCkKIAkqbXlfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0ZXMg PSAwOwogCSpteV9zbGFiX2FsbG9jYXRlZF9ieXRlcyA9IDA7CiAKKwkvKiBJZiB3ZSdyZSBs aW1pdGluZyBiYWNrZW5kIG1lbW9yeSAqLworCWlmIChtYXhfdG90YWxfYmtlbmRfbWVtKQor CXsKKwkJdm9sYXRpbGUgUFJPQ19IRFIgKnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOworCQl1 aW50NjQJCWF2YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtID0gMDsKKworCQlhbGxvY2F0 aW9uX3JldHVybiA9IDA7CisJCWFsbG9jYXRpb25fYWxsb3dhbmNlID0gMDsKKworCQkvKiBB Y2NvdW50IGZvciB0aGUgaW5pdGlhbCBhbGxvY2F0aW9uIGFsbG93YW5jZSAqLworCQl3aGls ZSAoKGF2YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtID0gcGdfYXRvbWljX3JlYWRfdTY0 KCZwcm9jZ2xvYmFsLT50b3RhbF9ia2VuZF9tZW1fYnl0ZXMpKSA+PSBpbml0aWFsX2FsbG9j YXRpb25fYWxsb3dhbmNlKQorCQl7CisJCQkvKgorCQkJICogT24gc3VjY2VzcyBwb3B1bGF0 ZSBhbGxvY2F0aW9uX2FsbG93YW5jZS4gRmFpbHVyZSBoZXJlIHdpbGwKKwkJCSAqIHJlc3Vs dCBpbiB0aGUgYmFja2VuZCdzIGZpcnN0IGludm9jYXRpb24gb2YKKwkJCSAqIGV4Y2VlZHNf bWF4X3RvdGFsX2JrZW5kX21lbSBhbGxvY2F0aW5nIHJlcXVlc3RlZCwgZGVmYXVsdCwgb3IK KwkJCSAqIGF2YWlsYWJsZSBtZW1vcnkgb3IgcmVzdWx0IGluIGFuIG91dCBvZiBtZW1vcnkg ZXJyb3IuCisJCQkgKi8KKwkJCWlmIChwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91NjQo JnByb2NnbG9iYWwtPnRvdGFsX2JrZW5kX21lbV9ieXRlcywKKwkJCQkJCQkJCQkJICAgJmF2 YWlsYWJsZV9tYXhfdG90YWxfYmtlbmRfbWVtLAorCQkJCQkJCQkJCQkgICBhdmFpbGFibGVf bWF4X3RvdGFsX2JrZW5kX21lbSAtCisJCQkJCQkJCQkJCSAgIGluaXRpYWxfYWxsb2NhdGlv bl9hbGxvd2FuY2UpKQorCQkJeworCQkJCWFsbG9jYXRpb25fYWxsb3dhbmNlID0gaW5pdGlh bF9hbGxvY2F0aW9uX2FsbG93YW5jZTsKKworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQor CiAJcmV0dXJuOwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4 IDJmNjJmNWU0ZWEuLjAxZGVlOGRkZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0xODg3LDEzICsxODg3LDE1IEBAIHBnX3N0YXRfZ2xvYmFsX21lbW9yeV9h bGxvY2F0aW9ufCBXSVRIIHN1bXMgQVMgKAogIFNFTEVDVCBzLmRhdGlkLAogICAgIGN1cnJl bnRfc2V0dGluZygnc2hhcmVkX21lbW9yeV9zaXplJzo6dGV4dCwgdHJ1ZSkgQVMgc2hhcmVk X21lbW9yeV9zaXplLAogICAgIChjdXJyZW50X3NldHRpbmcoJ3NoYXJlZF9tZW1vcnlfc2l6 ZV9pbl9odWdlX3BhZ2VzJzo6dGV4dCwgdHJ1ZSkpOjppbnRlZ2VyIEFTIHNoYXJlZF9tZW1v cnlfc2l6ZV9pbl9odWdlX3BhZ2VzLAorICAgIHBnX3NpemVfYnl0ZXMoY3VycmVudF9zZXR0 aW5nKCdtYXhfdG90YWxfYmFja2VuZF9tZW1vcnknOjp0ZXh0LCB0cnVlKSkgQVMgbWF4X3Rv dGFsX2JhY2tlbmRfbWVtb3J5X2J5dGVzLAorICAgIHMudG90YWxfYmtlbmRfbWVtX2J5dGVz X2F2YWlsYWJsZSwKICAgICBzLmdsb2JhbF9kc21fYWxsb2NhdGVkX2J5dGVzLAogICAgIHN1 bXMudG90YWxfYXNldF9hbGxvY2F0ZWRfYnl0ZXMsCiAgICAgc3Vtcy50b3RhbF9kc21fYWxs b2NhdGVkX2J5dGVzLAogICAgIHN1bXMudG90YWxfZ2VuZXJhdGlvbl9hbGxvY2F0ZWRfYnl0 ZXMsCiAgICAgc3Vtcy50b3RhbF9zbGFiX2FsbG9jYXRlZF9ieXRlcwogICAgRlJPTSBzdW1z LAotICAgIChwZ19zdGF0X2dldF9nbG9iYWxfbWVtb3J5X2FsbG9jYXRpb24oKSBzKGRhdGlk LCBnbG9iYWxfZHNtX2FsbG9jYXRlZF9ieXRlcykKKyAgICAocGdfc3RhdF9nZXRfZ2xvYmFs X21lbW9yeV9hbGxvY2F0aW9uKCkgcyhkYXRpZCwgdG90YWxfYmtlbmRfbWVtX2J5dGVzX2F2 YWlsYWJsZSwgZ2xvYmFsX2RzbV9hbGxvY2F0ZWRfYnl0ZXMpCiAgICAgIExFRlQgSk9JTiBw Z19kYXRhYmFzZSBkIE9OICgocy5kYXRpZCA9IGQub2lkKSkpOwogcGdfc3RhdF9nc3NhcGl8 IFNFTEVDVCBwaWQsCiAgICAgZ3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoy LjQzLjIKCg== --------------2YrWVz3rzfPlOjamePaoJg1W--