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.96) (envelope-from ) id 1whQxP-000Dha-2B for pgsql-bugs@arkaria.postgresql.org; Wed, 08 Jul 2026 12:00:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whQxO-0077G0-0e for pgsql-bugs@arkaria.postgresql.org; Wed, 08 Jul 2026 12:00:50 +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.96) (envelope-from ) id 1whQxN-0077Fq-1Z for pgsql-bugs@lists.postgresql.org; Wed, 08 Jul 2026 12:00:50 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1whQxI-000000009H0-3b12 for pgsql-bugs@lists.postgresql.org; Wed, 08 Jul 2026 12:00:49 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4gwGrL1mSsz49Q76; Wed, 08 Jul 2026 15:00:33 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1783512036; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=QPWTHaX4bL+o5C4b8gLGw1JkKLgx29WIq2RZVQdY4h8=; b=ZETmkg8nEsbnlUpgxinN98J+2paS8E69utvE1NH5WJgHG8OLlXP0qM2KFK2i8q8lQlIbjJ TkIFuCAAALLFc2ZQ6o2msEo7kMSFpd7RlwHAhm0IOXd3pxREngIFny/CkQzXDZ2mwkqMPI XM2ZFyS6qict7GBXc+Emude52nxMdMJEURaCTwkb3morOogrcNlWwu7e/WH5QySrWy5JOe Gcg6gCtN3l4iWieXh4iRwyG+F0/m0XRbDvHwLY6USYQHAqvaf30M2Tm/gzqxMwcikNFhqT Ul70VcbywtvveTe2gNJdqPSQh19BbwRIvWB+mI6JpfxCoE9ytQsqWAns8JnlUQ== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1783512036; b=j7YfSp72Mrp/zkxoGAyLfeYefq1FJsxSD2w8i0fIQiT3qI0eo0NA7lMvZuJ/2R0IKjorHk 282p9NJg1dFFsY6J6dA9ENXFmcreNnHO4OyLAyQtTq6Ru2CPZ3RvOH4NEa8srO5YlUm24L Uwk/1rOxj3pYBwkAkRkWkw4eptLJCDkWXopHLAsFrNQTE42f0QMAPAg3YKCu999LDJo+u9 TT65Up1PnnSsstBL1EnYA54mJwdL3eBUIimRy+Hqhu0fvH8GVMBM+d+yug+lMZZbiLRQ69 AhicOrOYVJ6VWnPNwUTap3zzizM5gL/2DvgtF5YItBLQo76zDOxT0x0QmuZt1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1783512036; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=QPWTHaX4bL+o5C4b8gLGw1JkKLgx29WIq2RZVQdY4h8=; b=UA/wT7F6Fu63eESlpS2HD7s3sB1swqZNmvGXeR8164pznOiYk824Y9PW3VTAEec1BonX3j 9JhjY7fzMN1fo5Wfz1nQWSG+wjLGrOvSb6tudq0+bfE3bzXjm61Webm6U42g51dxw/c9mp 8yHaOFwKHnbz2NIgnDUCIt7LNpk44Z4vj+B4IlM5fvNmA/fqmpUnFKDTnp/s/x6ujXfCTL ThxOW3T0M9jx0ElwQwisDniDlgek3e8zID4nVejNYQMC7XBLRGhV0lDsJJ336EJokM/fKc FVQtvt1Y/G0Y2ukJGtGP2PGdhxyED0ix8kAjEd7eO7vFKtEY9o0ufScT9QsiVg== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------Je1HeDyGjfH0zQVrjGBK5LZl" Message-ID: Date: Wed, 8 Jul 2026 15:00:33 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BUG #19519: REPACK can fail due to missing chunk for toast value To: Michael Paquier , Srinath Reddy Sadipiralla Cc: Matthias van de Meent , Imran Zaheer , Alexander Lakhin , PostgreSQL mailing lists , Konstantin Knizhnik References: Content-Language: en-US From: Heikki Linnakangas 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. --------------Je1HeDyGjfH0zQVrjGBK5LZl Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 08/07/2026 04:10, Michael Paquier wrote: > On Wed, Jul 08, 2026 at 07:15:16AM +0900, Michael Paquier wrote: >> One thing that I still don't like much in the patch as written is my >> use of a missing_ok argument, which feels super confusing as it >> applies only to the underlying external TOAST, if the relation has >> any. I'd be tempted to rewrite this portion of the patch with a >> uint32 flags. Even if we assign one value for now (say MISSING_TOAST, >> MISSING_TOAST_OK or whatever), it would allow more flexibility on ABI >> grounds if we want more like states in the future across this portion >> of the stack. Again, I strongly doubt that we will be able to >> backpatch any of that. Yeah, boolean arguments in general can be confusing. Especially arguments like "missing_ok" where it's hard to remember which behavior is true and which is false. An IDE that shows the name of the argument helps, but having the caller say "MISSING_TOAST_OK" rather than "true" is much clearer. For backpatching, I think we could smuggle the flag in a global variable, to avoid changing the signature of the relation_fetch_toast_slice() callback. See attached patch 0002 on top of your 0001 patch (which is also attached for completeness). It doesn't fix the problem for hypothetical 3rd party tableam implementations that implement their own relation_fetch_toast_slice() callback. But do such extensions even exist? If yes, they could be fixed too by also checking the global variable. I thought about adding an extra "extended" callback next to relation_fetch_toast_slice(), but I don't see a way to add functions to TableAmRoutine in an ABI-compatible way. For the future, we might want to store sizeof(TableAmRoutine) in the struct itself, so that we could add fields to it in minor versions without breaking the API, in case we need something like this again. > A couple of extra notes while I do not forget about that stuff.. The > patch may be better split into two if we go with this approach, as the > index build and rewrite paths require different solutions: > - One for the rewrite path. It makes little sense to do any kind of > aggressive early detoasting because it may be wasteful due to the > tuple rewrites that update their data with only copies by reference > (main relation tuple is rewritten, reuses the same external TOAST > tuple). For workloads where UPDATEs do not touch the TOASTed > attributes, that would be a waste. I didn't understand this part. Do you mean when rebuilding the indexes after rewriting the heap? I didn't think we support storing toasted external datums in an index at all. > - One for the index build path, which is actually too aggressive with > its early detoasting, now that I think about it. There should be no > need to perform a detoast for anything else than the attributes that > are used in the index definition or the attributes that are used in > index expressions. So as written this patch would lead to a > regression. Yeah, although I wouldn't be too worried about the performance here. The penalty would be when building an index on values that are large enough to be toasted, with lots of RECENTLY_DEAD tuples. That doesn't seem like a very common case. - Heikki --------------Je1HeDyGjfH0zQVrjGBK5LZl Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Fix-missing-chunk-errors-during-heap-rewrites-and.patch" Content-Disposition: attachment; filename*0="v3-0001-Fix-missing-chunk-errors-during-heap-rewrites-and.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyZTljYzYyZGVkYTNkZTg1OWVlMzg5NzcyNDcxNzM0YTJmNGY5ZTVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWll ci54eXo+CkRhdGU6IFR1ZSwgNyBKdWwgMjAyNiAxNDoyMDozMCArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjNdIEZpeCAibWlzc2luZyBjaHVuayIgZXJyb3JzIGR1cmluZyBoZWFwIHJld3Jp dGVzIGFuZCBpbmRleAogYnVpbGRzCgpCbGFoLCBibGFoLgoKVGhpcyBwcm9ibGVtIGhhcyBi ZWVuIHJlcG9ydGVkIHJlY2VudGx5IGJ5IEFsZXhhbmRlciBmb3IgUkVQQUNLLCBidXQgaXQK aXMgYSBtdWNoIG9sZGVyIGlzc3VlICh0ZXN0ZWQgZG93biB0byA5LjUgZm9yIGN1cmlvc2l0 eSdzIHNha2UsIGJ1dCBJCnN1c3BlY3QgdGhhdCBpdCBpcyBtdWNoIG9sZGVyIHRoYW4gdGhh dCkuCgpYWFg6IFRoaXMgcGF0Y2ggaW5jbHVkZXMgYm90aCBUQVAgYW5kIGlzb2xhdGlvbiB0 ZXN0cy4gIFdlIHNob3VsZCByZW1vdmUKb25lIHBhdHRlcm4gYXQgdGhlIGVuZC4KClJlcG9y dGVkLWJ5OiBBbGV4YW5kZXIgTGFraGluIDxleGNsdXNpb25AZ21haWwuY29tPgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE4MzUxLWY2ZTA2MzY0YjNhMmU2NjlAcG9zdGdy ZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8xOTUxOS1mZTAyZDhm ZjY3OWQ4MzRkQHBvc3RncmVzcWwub3JnCi0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2RldG9h c3QuaCAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw dG9hc3QuaCAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Jl d3JpdGVoZWFwLmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy90b2FzdF9oZWxwZXIuaCAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9kZXRvYXN0LmMgICAgICAgICAgIHwgIDQxICsrLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgOTQgKysrKysrLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcHRvYXN0LmMgICAgICAgICAgIHwgIDIyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAgMzEgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdG9hc3RfaGVscGVyLmMgICAgICAgfCAgMTcg Ky0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9yZXdyaXRlX3N0YWxlX3htaW4ucGwgfCAx MjQgKysrKysrKysrCiBjb250cmliL2RibGluay8uZ2l0aWdub3JlICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogY29udHJpYi9kYmxpbmsvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIC4uLi9kYmxpbmsvZXhwZWN0ZWQvcmV3cml0ZV9zdGFsZV94bWlu Lm91dCAgICB8IDIzNyArKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvZGJsaW5rL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBjb250cmliL2RibGluay9zcGVj cy9yZXdyaXRlX3N0YWxlX3htaW4uc3BlYyAgfCAxMzcgKysrKysrKysrKwogMTggZmlsZXMg Y2hhbmdlZCwgNzE4IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X3Jld3JpdGVfc3RhbGVfeG1pbi5w bAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvZGJsaW5rL2V4cGVjdGVkL3Jld3JpdGVf c3RhbGVfeG1pbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2RibGluay9zcGVj cy9yZXdyaXRlX3N0YWxlX3htaW4uc3BlYwoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9kZXRvYXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZGV0b2FzdC5oCmluZGV4IGZi ZDk4MTgxYTNhMS4uYzVlZWVkMDRiMDExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvZGV0b2FzdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9kZXRvYXN0LmgKQEAgLTQz LDYgKzQzLDE1IEBAIGRvIHsgXAogICovCiBleHRlcm4gdmFybGVuYSAqZGV0b2FzdF9leHRl cm5hbF9hdHRyKHZhcmxlbmEgKmF0dHIpOwogCisvKiAtLS0tLS0tLS0tCisgKiBkZXRvYXN0 X2V4dGVybmFsX2F0dHJfZXh0ZW5kZWQoKSAtCisgKgorICoJCUxpa2UgZGV0b2FzdF9leHRl cm5hbF9hdHRyLCBidXQgcmV0dXJucyBOVUxMIGlmIHRvYXN0IGNodW5rcworICoJCWFyZSBt aXNzaW5nIChpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IpLgorICogLS0tLS0tLS0tLQor ICovCitleHRlcm4gdmFybGVuYSAqZGV0b2FzdF9leHRlcm5hbF9hdHRyX2V4dGVuZGVkKHZh cmxlbmEgKmF0dHIpOworCiAvKiAtLS0tLS0tLS0tCiAgKiBkZXRvYXN0X2F0dHIoKSAtCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXB0b2FzdC5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXB0b2FzdC5oCmluZGV4IDYzMWNiMTgzNmI5Ni4uMWJlODVkYjZk ZGQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcHRvYXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXB0b2FzdC5oCkBAIC05MiwxMCArOTIsMTQgQEAKICAq IGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZSAtCiAgKgogICoJQ2FsbGVkIGJ5IGhlYXBf aW5zZXJ0KCkgYW5kIGhlYXBfdXBkYXRlKCkuCisgKgorICoJSWYgbWlzc2luZ19vayBpcyB0 cnVlLCByZXR1cm5zIE5VTEwgd2hlbiBmYWlsaW5nIHRvIGZldGNoIGV4dGVybmFsCisgKglU T0FTVCBkYXRhLCBpbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yLgogICogLS0tLS0tLS0t LQogICovCiBleHRlcm4gSGVhcFR1cGxlIGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZShS ZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQkJCQkJCQkJCSBIZWFwVHVwbGUg b2xkdHVwLCB1aW50MzIgb3B0aW9ucyk7CisJCQkJCQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVw LCB1aW50MzIgb3B0aW9ucywKKwkJCQkJCQkJCQkJIGJvb2wgbWlzc2luZ19vayk7CiAKIC8q IC0tLS0tLS0tLS0KICAqIGhlYXBfdG9hc3RfZGVsZXRlIC0KQEAgLTE0MCwxMCArMTQ0LDEz IEBAIGV4dGVybiBIZWFwVHVwbGUgdG9hc3RfYnVpbGRfZmxhdHRlbmVkX3R1cGxlKFR1cGxl RGVzYyB0dXBsZURlc2MsCiAgKiBoZWFwX2ZldGNoX3RvYXN0X3NsaWNlCiAgKgogICoJRmV0 Y2ggYSBzbGljZSBmcm9tIGEgdG9hc3QgdmFsdWUgc3RvcmVkIGluIGEgaGVhcCB0YWJsZS4K KyAqCUlmIG1pc3Npbmdfb2sgaXMgdHJ1ZSwgcmV0dXJucyBmYWxzZSB3aGVuIGNodW5rcyBh cmUgbWlzc2luZworICoJaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLiAgUmV0dXJucyB0 cnVlIG9uIHN1Y2Nlc3MuCiAgKiAtLS0tLS0tLS0tCiAgKi8KLWV4dGVybiB2b2lkIGhlYXBf ZmV0Y2hfdG9hc3Rfc2xpY2UoUmVsYXRpb24gdG9hc3RyZWwsIE9pZCB2YWx1ZWlkLAorZXh0 ZXJuIGJvb2wgaGVhcF9mZXRjaF90b2FzdF9zbGljZShSZWxhdGlvbiB0b2FzdHJlbCwgT2lk IHZhbHVlaWQsCiAJCQkJCQkJCSAgIGludDMyIGF0dHJzaXplLCBpbnQzMiBzbGljZW9mZnNl dCwKLQkJCQkJCQkJICAgaW50MzIgc2xpY2VsZW5ndGgsIHZhcmxlbmEgKnJlc3VsdCk7CisJ CQkJCQkJCSAgIGludDMyIHNsaWNlbGVuZ3RoLCB2YXJsZW5hICpyZXN1bHQsCisJCQkJCQkJ CSAgIGJvb2wgbWlzc2luZ19vayk7CiAKICNlbmRpZgkJCQkJCQkvKiBIRUFQVE9BU1RfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Jld3JpdGVoZWFwLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvcmV3cml0ZWhlYXAuaAppbmRleCA2Y2NmN2I0NWMwNGUuLmRmNGZh NGZkZTcxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Jld3JpdGVoZWFwLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Jld3JpdGVoZWFwLmgKQEAgLTI1LDggKzI1LDgg QEAgZXh0ZXJuIFJld3JpdGVTdGF0ZSBiZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xk X2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLAogCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBv bGRlc3RfeG1pbiwgVHJhbnNhY3Rpb25JZCBmcmVlemVfeGlkLAogCQkJCQkJCQkJICAgTXVs dGlYYWN0SWQgY3V0b2ZmX211bHRpKTsKIGV4dGVybiB2b2lkIGVuZF9oZWFwX3Jld3JpdGUo UmV3cml0ZVN0YXRlIHN0YXRlKTsKLWV4dGVybiB2b2lkIHJld3JpdGVfaGVhcF90dXBsZShS ZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSBvbGRfdHVwbGUsCi0JCQkJCQkJICAgSGVh cFR1cGxlIG5ld190dXBsZSk7CitleHRlcm4gYm9vbCByZXdyaXRlX2hlYXBfdHVwbGUoUmV3 cml0ZVN0YXRlIHN0YXRlLCBIZWFwVHVwbGUgb2xkX3R1cGxlLAorCQkJCQkJCSAgIEhlYXBU dXBsZSBuZXdfdHVwbGUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gYm9vbCByZXdyaXRl X2hlYXBfZGVhZF90dXBsZShSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSBvbGRfdHVw bGUpOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZjJjMzY2OTZiY2FkLi5hOTBi MTVkZDgyYjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNzgyLDEyICs3ODIsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkgKiBUaGlzIGNhbGxiYWNrIGlzIGlu dm9rZWQgd2hlbiBkZXRvYXN0aW5nIGEgdmFsdWUgc3RvcmVkIGluIGEgdG9hc3QKIAkgKiB0 YWJsZSBpbXBsZW1lbnRlZCBieSB0aGlzIEFNLiAgU2VlIHRhYmxlX3JlbGF0aW9uX2ZldGNo X3RvYXN0X3NsaWNlKCkKIAkgKiBmb3IgbW9yZSBkZXRhaWxzLgorCSAqCisJICogSWYgbWlz c2luZ19vayBpcyB0cnVlLCByZXR1cm5zIGZhbHNlIHdoZW4gY2h1bmtzIGFyZSBtaXNzaW5n IGluc3RlYWQgb2YKKwkgKiByYWlzaW5nIGFuIGVycm9yLiAgUmV0dXJucyB0cnVlIG9uIHN1 Y2Nlc3MuCiAJICovCi0Jdm9pZAkJKCpyZWxhdGlvbl9mZXRjaF90b2FzdF9zbGljZSkgKFJl bGF0aW9uIHRvYXN0cmVsLCBPaWQgdmFsdWVpZCwKKwlib29sCQkoKnJlbGF0aW9uX2ZldGNo X3RvYXN0X3NsaWNlKSAoUmVsYXRpb24gdG9hc3RyZWwsIE9pZCB2YWx1ZWlkLAogCQkJCQkJ CQkJCQkgICBpbnQzMiBhdHRyc2l6ZSwKIAkJCQkJCQkJCQkJICAgaW50MzIgc2xpY2VvZmZz ZXQsCiAJCQkJCQkJCQkJCSAgIGludDMyIHNsaWNlbGVuZ3RoLAotCQkJCQkJCQkJCQkgICB2 YXJsZW5hICpyZXN1bHQpOworCQkJCQkJCQkJCQkgICB2YXJsZW5hICpyZXN1bHQsCisJCQkJ CQkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CiAKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtMTk4MSwxNiArMTk4NSwyMCBAQCB0YWJsZV9yZWxhdGlvbl90b2FzdF9hbShSZWxh dGlvbiByZWwpCiAgKgogICogcmVzdWx0IGlzIGNhbGxlci1hbGxvY2F0ZWQgc3BhY2UgaW50 byB3aGljaCB0aGUgZmV0Y2hlZCBieXRlcyBzaG91bGQgYmUKICAqIHN0b3JlZC4KKyAqCisg KiBtaXNzaW5nX29rOiBpZiB0cnVlLCByZXR1cm4gZmFsc2Ugd2hlbiB0b2FzdCBjaHVua3Mg YXJlIG1pc3NpbmcgaW5zdGVhZAorICogb2YgcmFpc2luZyBhbiBlcnJvci4gIFJldHVybnMg dHJ1ZSBvbiBzdWNjZXNzLgogICovCi1zdGF0aWMgaW5saW5lIHZvaWQKK3N0YXRpYyBpbmxp bmUgYm9vbAogdGFibGVfcmVsYXRpb25fZmV0Y2hfdG9hc3Rfc2xpY2UoUmVsYXRpb24gdG9h c3RyZWwsIE9pZCB2YWx1ZWlkLAogCQkJCQkJCQkgaW50MzIgYXR0cnNpemUsIGludDMyIHNs aWNlb2Zmc2V0LAotCQkJCQkJCQkgaW50MzIgc2xpY2VsZW5ndGgsIHZhcmxlbmEgKnJlc3Vs dCkKKwkJCQkJCQkJIGludDMyIHNsaWNlbGVuZ3RoLCB2YXJsZW5hICpyZXN1bHQsCisJCQkJ CQkJCSBib29sIG1pc3Npbmdfb2spCiB7Ci0JdG9hc3RyZWwtPnJkX3RhYmxlYW0tPnJlbGF0 aW9uX2ZldGNoX3RvYXN0X3NsaWNlKHRvYXN0cmVsLCB2YWx1ZWlkLAotCQkJCQkJCQkJCQkJ CSBhdHRyc2l6ZSwKLQkJCQkJCQkJCQkJCQkgc2xpY2VvZmZzZXQsIHNsaWNlbGVuZ3RoLAot CQkJCQkJCQkJCQkJCSByZXN1bHQpOworCXJldHVybiB0b2FzdHJlbC0+cmRfdGFibGVhbS0+ cmVsYXRpb25fZmV0Y2hfdG9hc3Rfc2xpY2UodG9hc3RyZWwsIHZhbHVlaWQsCisJCQkJCQkJ CQkJCQkJCQlhdHRyc2l6ZSwKKwkJCQkJCQkJCQkJCQkJCXNsaWNlb2Zmc2V0LCBzbGljZWxl bmd0aCwKKwkJCQkJCQkJCQkJCQkJCXJlc3VsdCwgbWlzc2luZ19vayk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RvYXN0X2hlbHBlci5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RvYXN0X2hlbHBlci5oCmluZGV4IDJlYzkyMzk3ZjI2Ny4uZTU0OGJhNTU5 NmI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdG9hc3RfaGVscGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RvYXN0X2hlbHBlci5oCkBAIC0xMDEsNyArMTAxLDcg QEAgdHlwZWRlZiBzdHJ1Y3QKICNkZWZpbmUgVE9BU1RDT0xfSUdOT1JFCQkJCQkJMHgwMDEw CiAjZGVmaW5lIFRPQVNUQ09MX0lOQ09NUFJFU1NJQkxFCQkJCTB4MDAyMAogCi1leHRlcm4g dm9pZCB0b2FzdF90dXBsZV9pbml0KFRvYXN0VHVwbGVDb250ZXh0ICp0dGMpOworZXh0ZXJu IGJvb2wgdG9hc3RfdHVwbGVfaW5pdChUb2FzdFR1cGxlQ29udGV4dCAqdHRjLCBib29sIG1p c3Npbmdfb2spOwogZXh0ZXJuIGludAl0b2FzdF90dXBsZV9maW5kX2JpZ2dlc3RfYXR0cmli dXRlKFRvYXN0VHVwbGVDb250ZXh0ICp0dGMsCiAJCQkJCQkJCQkJCSAgIGJvb2wgZm9yX2Nv bXByZXNzaW9uLAogCQkJCQkJCQkJCQkgICBib29sIGNoZWNrX21haW4pOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9kZXRvYXN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL2RldG9hc3QuYwppbmRleCBhNmMxZjNhNzM0YjIuLmMxNmI2MWExY2Ix YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9kZXRvYXN0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9kZXRvYXN0LmMKQEAgLTIyLDcgKzIyLDcg QEAKICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZGRhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCiAKLXN0YXRpYyB2YXJsZW5hICp0b2FzdF9mZXRjaF9kYXR1bSh2YXJsZW5hICph dHRyKTsKK3N0YXRpYyB2YXJsZW5hICp0b2FzdF9mZXRjaF9kYXR1bSh2YXJsZW5hICphdHRy LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZhcmxlbmEgKnRvYXN0X2ZldGNoX2RhdHVt X3NsaWNlKHZhcmxlbmEgKmF0dHIsCiAJCQkJCQkJCQkJaW50MzIgc2xpY2VvZmZzZXQsCiAJ CQkJCQkJCQkJaW50MzIgc2xpY2VsZW5ndGgpOwpAQCAtNTEsNyArNTEsNyBAQCBkZXRvYXN0 X2V4dGVybmFsX2F0dHIodmFybGVuYSAqYXR0cikKIAkJLyoKIAkJICogVGhpcyBpcyBhbiBl eHRlcm5hbCBzdG9yZWQgcGxhaW4gdmFsdWUKIAkJICovCi0JCXJlc3VsdCA9IHRvYXN0X2Zl dGNoX2RhdHVtKGF0dHIpOworCQlyZXN1bHQgPSB0b2FzdF9mZXRjaF9kYXR1bShhdHRyLCBm YWxzZSk7CiAJfQogCWVsc2UgaWYgKFZBUkFUVF9JU19FWFRFUk5BTF9JTkRJUkVDVChhdHRy KSkKIAl7CkBAIC0xMDIsNiArMTAyLDIzIEBAIGRldG9hc3RfZXh0ZXJuYWxfYXR0cih2YXJs ZW5hICphdHRyKQogfQogCiAKKy8qIC0tLS0tLS0tLS0KKyAqIGRldG9hc3RfZXh0ZXJuYWxf YXR0cl9leHRlbmRlZCAtCisgKgorICoJTGlrZSBkZXRvYXN0X2V4dGVybmFsX2F0dHIsIGJ1 dCByZXR1cm5zIE5VTEwgaWYgdG9hc3QgY2h1bmtzIGFyZQorICoJbWlzc2luZyBmb3IgZXh0 ZXJuYWwgcG9pbnRlcnMuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZhcmxlbmEgKgorZGV0b2Fz dF9leHRlcm5hbF9hdHRyX2V4dGVuZGVkKHZhcmxlbmEgKmF0dHIpCit7CisJaWYgKFZBUkFU VF9JU19FWFRFUk5BTF9PTkRJU0soYXR0cikpCisJCXJldHVybiB0b2FzdF9mZXRjaF9kYXR1 bShhdHRyLCB0cnVlKTsKKwllbHNlCisJCXJldHVybiBkZXRvYXN0X2V4dGVybmFsX2F0dHIo YXR0cik7Cit9CisKKwogLyogLS0tLS0tLS0tLQogICogZGV0b2FzdF9hdHRyIC0KICAqCkBA IC0xMjAsNyArMTM3LDcgQEAgZGV0b2FzdF9hdHRyKHZhcmxlbmEgKmF0dHIpCiAJCS8qCiAJ CSAqIFRoaXMgaXMgYW4gZXh0ZXJuYWxseSBzdG9yZWQgZGF0dW0gLS0tIGZldGNoIGl0IGJh Y2sgZnJvbSB0aGVyZQogCQkgKi8KLQkJYXR0ciA9IHRvYXN0X2ZldGNoX2RhdHVtKGF0dHIp OworCQlhdHRyID0gdG9hc3RfZmV0Y2hfZGF0dW0oYXR0ciwgZmFsc2UpOwogCQkvKiBJZiBp dCdzIGNvbXByZXNzZWQsIGRlY29tcHJlc3MgaXQgKi8KIAkJaWYgKFZBUkFUVF9JU19DT01Q UkVTU0VEKGF0dHIpKQogCQl7CkBAIC0yNjIsNyArMjc5LDcgQEAgZGV0b2FzdF9hdHRyX3Ns aWNlKHZhcmxlbmEgKmF0dHIsCiAJCQlwcmVzbGljZSA9IHRvYXN0X2ZldGNoX2RhdHVtX3Ns aWNlKGF0dHIsIDAsIG1heF9zaXplKTsKIAkJfQogCQllbHNlCi0JCQlwcmVzbGljZSA9IHRv YXN0X2ZldGNoX2RhdHVtKGF0dHIpOworCQkJcHJlc2xpY2UgPSB0b2FzdF9mZXRjaF9kYXR1 bShhdHRyLCBmYWxzZSk7CiAJfQogCWVsc2UgaWYgKFZBUkFUVF9JU19FWFRFUk5BTF9JTkRJ UkVDVChhdHRyKSkKIAl7CkBAIC0zMzcsMTAgKzM1NCwxMiBAQCBkZXRvYXN0X2F0dHJfc2xp Y2UodmFybGVuYSAqYXR0ciwKICAqCiAgKglSZWNvbnN0cnVjdCBhbiBpbiBtZW1vcnkgRGF0 dW0gZnJvbSB0aGUgY2h1bmtzIHNhdmVkCiAgKglpbiB0aGUgdG9hc3QgcmVsYXRpb24KKyAq CisgKglJZiBtaXNzaW5nX29rIGlzIHRydWUsIHJldHVybnMgTlVMTCB3aGVuIGNodW5rcyBh cmUgbWlzc2luZy4KICAqIC0tLS0tLS0tLS0KICAqLwogc3RhdGljIHZhcmxlbmEgKgotdG9h c3RfZmV0Y2hfZGF0dW0odmFybGVuYSAqYXR0cikKK3RvYXN0X2ZldGNoX2RhdHVtKHZhcmxl bmEgKmF0dHIsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlSZWxhdGlvbgl0b2FzdHJlbDsKIAl2 YXJsZW5hICAgICpyZXN1bHQ7CkBAIC0zNzIsOCArMzkxLDE0IEBAIHRvYXN0X2ZldGNoX2Rh dHVtKHZhcmxlbmEgKmF0dHIpCiAJdG9hc3RyZWwgPSB0YWJsZV9vcGVuKHRvYXN0X3BvaW50 ZXIudmFfdG9hc3RyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCS8qIEZldGNoIGFsbCBj aHVua3MgKi8KLQl0YWJsZV9yZWxhdGlvbl9mZXRjaF90b2FzdF9zbGljZSh0b2FzdHJlbCwg dG9hc3RfcG9pbnRlci52YV92YWx1ZWlkLAotCQkJCQkJCQkJIGF0dHJzaXplLCAwLCBhdHRy c2l6ZSwgcmVzdWx0KTsKKwlpZiAoIXRhYmxlX3JlbGF0aW9uX2ZldGNoX3RvYXN0X3NsaWNl KHRvYXN0cmVsLCB0b2FzdF9wb2ludGVyLnZhX3ZhbHVlaWQsCisJCQkJCQkJCQkJICBhdHRy c2l6ZSwgMCwgYXR0cnNpemUsIHJlc3VsdCwKKwkJCQkJCQkJCQkgIG1pc3Npbmdfb2spKQor CXsKKwkJcGZyZWUocmVzdWx0KTsKKwkJdGFibGVfY2xvc2UodG9hc3RyZWwsIEFjY2Vzc1No YXJlTG9jayk7CisJCXJldHVybiBOVUxMOworCX0KIAogCS8qIENsb3NlIHRvYXN0IHRhYmxl ICovCiAJdGFibGVfY2xvc2UodG9hc3RyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CkBAIC00NTQs NyArNDc5LDcgQEAgdG9hc3RfZmV0Y2hfZGF0dW1fc2xpY2UodmFybGVuYSAqYXR0ciwgaW50 MzIgc2xpY2VvZmZzZXQsCiAJLyogRmV0Y2ggYWxsIGNodW5rcyAqLwogCXRhYmxlX3JlbGF0 aW9uX2ZldGNoX3RvYXN0X3NsaWNlKHRvYXN0cmVsLCB0b2FzdF9wb2ludGVyLnZhX3ZhbHVl aWQsCiAJCQkJCQkJCQkgYXR0cnNpemUsIHNsaWNlb2Zmc2V0LCBzbGljZWxlbmd0aCwKLQkJ CQkJCQkJCSByZXN1bHQpOworCQkJCQkJCQkJIHJlc3VsdCwgZmFsc2UpOwogCiAJLyogQ2xv c2UgdG9hc3QgdGFibGUgKi8KIAl0YWJsZV9jbG9zZSh0b2FzdHJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYWJmZDhlODk3MGE2Li4x ZDQwMTg5MzEyMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yMjM2LDcg KzIyMzYsNyBAQCBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJcmV0dXJuIHR1cDsKIAl9CiAJZWxz ZSBpZiAoSGVhcFR1cGxlSGFzRXh0ZXJuYWwodHVwKSB8fCB0dXAtPnRfbGVuID4gVE9BU1Rf VFVQTEVfVEhSRVNIT0xEKQotCQlyZXR1cm4gaGVhcF90b2FzdF9pbnNlcnRfb3JfdXBkYXRl KHJlbGF0aW9uLCB0dXAsIE5VTEwsIG9wdGlvbnMpOworCQlyZXR1cm4gaGVhcF90b2FzdF9p bnNlcnRfb3JfdXBkYXRlKHJlbGF0aW9uLCB0dXAsIE5VTEwsIG9wdGlvbnMsIGZhbHNlKTsK IAllbHNlCiAJCXJldHVybiB0dXA7CiB9CkBAIC0zODcxLDcgKzM4NzEsNyBAQCBsMjoKIAkJ aWYgKG5lZWRfdG9hc3QpCiAJCXsKIAkJCS8qIE5vdGUgd2UgYWx3YXlzIHVzZSBXQUwgYW5k IEZTTSBkdXJpbmcgdXBkYXRlcyAqLwotCQkJaGVhcHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0 X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAmb2xkdHVwLCAwKTsKKwkJCWhlYXB0dXAg PSBoZWFwX3RvYXN0X2luc2VydF9vcl91cGRhdGUocmVsYXRpb24sIG5ld3R1cCwgJm9sZHR1 cCwgMCwgZmFsc2UpOwogCQkJbmV3dHVwc2l6ZSA9IE1BWEFMSUdOKGhlYXB0dXAtPnRfbGVu KTsKIAkJfQogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwppbmRleCAyMjY4Y2MyNzdiY2UuLjJjZDlkMGY0YWViOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xOSw2ICsxOSw3IEBACiAgKi8K ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL2RldG9hc3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgpAQCAtNDgsOSArNDksMTAgQEAKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKIAot c3RhdGljIHZvaWQgcmVmb3JtX2FuZF9yZXdyaXRlX3R1cGxlKEhlYXBUdXBsZSB0dXBsZSwK K3N0YXRpYyBib29sIHJlZm9ybV9hbmRfcmV3cml0ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUs CiAJCQkJCQkJCQkgUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKLQkJCQkJ CQkJCSBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsIFJld3JpdGVTdGF0ZSByd3N0YXRl KTsKKwkJCQkJCQkJCSBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsIFJld3JpdGVTdGF0 ZSByd3N0YXRlLAorCQkJCQkJCQkJIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgdm9pZCBo ZWFwX2luc2VydF9mb3JfcmVwYWNrKEhlYXBUdXBsZSB0dXBsZSwgUmVsYXRpb24gT2xkSGVh cCwKIAkJCQkJCQkJICAgUmVsYXRpb24gTmV3SGVhcCwgRGF0dW0gKnZhbHVlcywgYm9vbCAq aXNudWxsLAogCQkJCQkJCQkgICBCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZSk7CkBAIC03MTcs NiArNzE5LDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24g T2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJSGVhcFR1cGxlCXR1cGxlOwogCQlCdWZm ZXIJCWJ1ZjsKIAkJYm9vbAkJaXNkZWFkOworCQlib29sCQlyZWNlbnRseV9kZWFkID0gZmFs c2U7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtODAyLDYgKzgwNSw3IEBA IGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJl bGF0aW9uIE5ld0hlYXAsCiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgSEVBUFRVUExFX1JFQ0VO VExZX0RFQUQ6CiAJCQkJCSp0dXBzX3JlY2VudGx5X2RlYWQgKz0gMTsKKwkJCQkJcmVjZW50 bHlfZGVhZCA9IHRydWU7CiAJCQkJCXBnX2ZhbGx0aHJvdWdoOwogCQkJCWNhc2UgSEVBUFRV UExFX0xJVkU6CiAJCQkJCS8qIExpdmUgb3IgcmVjZW50bHkgZGVhZCwgbXVzdCBjb3B5IGl0 ICovCkBAIC04MzUsNiArODM5LDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0 ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJCQkJCQkgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoT2xkSGVhcCkpOwogCQkJCQkvKiB0cmVhdCBhcyByZWNlbnRs eSBkZWFkICovCiAJCQkJCSp0dXBzX3JlY2VudGx5X2RlYWQgKz0gMTsKKwkJCQkJcmVjZW50 bHlfZGVhZCA9IHRydWU7CiAJCQkJCWlzZGVhZCA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJ CQlkZWZhdWx0OgpAQCAtODgxLDggKzg4NiwyMiBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9m b3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQkJaW50 NjQJCWN0X3ZhbFsyXTsKIAogCQkJaWYgKCFjb25jdXJyZW50KQotCQkJCXJlZm9ybV9hbmRf cmV3cml0ZV90dXBsZSh0dXBsZSwgT2xkSGVhcCwgTmV3SGVhcCwKLQkJCQkJCQkJCQkgdmFs dWVzLCBpc251bGwsIHJ3c3RhdGUpOworCQkJeworCQkJCWlmICghcmVmb3JtX2FuZF9yZXdy aXRlX3R1cGxlKHR1cGxlLCBPbGRIZWFwLCBOZXdIZWFwLAorCQkJCQkJCQkJCQkgIHZhbHVl cywgaXNudWxsLCByd3N0YXRlLAorCQkJCQkJCQkJCQkgIHJlY2VudGx5X2RlYWQpKQorCQkJ CXsKKwkJCQkJLyoKKwkJCQkJICogTWlzc2luZyBUT0FTVCBjaHVua3MgZm9yIGEgcmVjZW50 bHktZGVhZCB0dXBsZS4gVHJlYXQKKwkJCQkJICogaXQgYXMgZGVhZC4KKwkJCQkJICovCisJ CQkJCSp0dXBzX3ZhY3V1bWVkICs9IDE7CisJCQkJCSpudW1fdHVwbGVzIC09IDE7CisJCQkJ CWlmIChyZWNlbnRseV9kZWFkKQorCQkJCQkJKnR1cHNfcmVjZW50bHlfZGVhZCAtPSAxOwor CQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CiAJCQllbHNlCiAJCQkJaGVhcF9pbnNlcnRf Zm9yX3JlcGFjayh0dXBsZSwgT2xkSGVhcCwgTmV3SGVhcCwKIAkJCQkJCQkJCSAgIHZhbHVl cywgaXNudWxsLCBiaXN0YXRlKTsKQEAgLTkzNCwxMCArOTUzLDE3IEBAIGhlYXBhbV9yZWxh dGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hl YXAsCiAKIAkJCW5fdHVwbGVzICs9IDE7CiAJCQlpZiAoIWNvbmN1cnJlbnQpCi0JCQkJcmVm b3JtX2FuZF9yZXdyaXRlX3R1cGxlKHR1cGxlLAotCQkJCQkJCQkJCSBPbGRIZWFwLCBOZXdI ZWFwLAotCQkJCQkJCQkJCSB2YWx1ZXMsIGlzbnVsbCwKLQkJCQkJCQkJCQkgcndzdGF0ZSk7 CisJCQl7CisJCQkJaWYgKCFyZWZvcm1fYW5kX3Jld3JpdGVfdHVwbGUodHVwbGUsCisJCQkJ CQkJCQkJCSAgT2xkSGVhcCwgTmV3SGVhcCwKKwkJCQkJCQkJCQkJICB2YWx1ZXMsIGlzbnVs bCwKKwkJCQkJCQkJCQkJICByd3N0YXRlLCB0cnVlKSkKKwkJCQl7CisJCQkJCS8qIFRPQVNU IGdvbmUgZm9yIGEgcmVjZW50bHkgZGVhZCB0dXBsZSAqLworCQkJCQluX3R1cGxlcyAtPSAx OworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CiAJCQllbHNlCiAJCQkJaGVhcF9pbnNl cnRfZm9yX3JlcGFjayh0dXBsZSwgT2xkSGVhcCwgTmV3SGVhcCwKIAkJCQkJCQkJCSAgIHZh bHVlcywgaXNudWxsLCBiaXN0YXRlKTsKQEAgLTE2MTMsNiArMTYzOSw0MyBAQCBoZWFwYW1f aW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJY29u dGludWU7CiAJCX0KIAorCQkvKgorCQkgKiBGb3IgUkVDRU5UTFlfREVBRCB0dXBsZXMsIHBy ZS1kZXRvYXN0IGV4dGVybmFsIFRPQVNUIHZhbHVlcy4gV2UgZG8KKwkJICogdGhpcyB0byBk ZXRlY3QgZm9yIG1pc3NpbmcgY2h1bmtzIGF0IGxhdGVyIHN0YWdlcywgZmVlZGluZyBpbmxp bmUKKwkJICogZGF0YSB0byB0aGUgZG93bnN0cmVhbSBhY2Nlc3MgbWV0aG9kIGNvZGUuCisJ CSAqLworCQlpZiAoIXR1cGxlSXNBbGl2ZSkKKwkJeworCQkJVHVwbGVEZXNjCXRkZXNjID0g UmVsYXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pOworCQkJYm9vbAkJc2tpcCA9IGZhbHNl OworCisJCQlzbG90X2dldGFsbGF0dHJzKHNsb3QpOworCQkJZm9yIChpbnQgaSA9IDA7IGkg PCB0ZGVzYy0+bmF0dHM7IGkrKykKKwkJCXsKKwkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQg PSBUdXBsZURlc2NBdHRyKHRkZXNjLCBpKTsKKworCQkJCWlmIChhdHQtPmF0dGxlbiAhPSAt MSB8fCBhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCQkJY29udGludWU7CisJCQkJaWYgKHNsb3Qt PnR0c19pc251bGxbaV0pCisJCQkJCWNvbnRpbnVlOworCQkJCWlmIChWQVJBVFRfSVNfRVhU RVJOQUxfT05ESVNLKERhdHVtR2V0UG9pbnRlcihzbG90LT50dHNfdmFsdWVzW2ldKSkpCisJ CQkJeworCQkJCQl2YXJsZW5hICAgICpkZXRvYXN0ZWQ7CisKKwkJCQkJZGV0b2FzdGVkID0g ZGV0b2FzdF9leHRlcm5hbF9hdHRyX2V4dGVuZGVkKAorCQkJCQkJCQkJCQkJCQkJICAgKHZh cmxlbmEgKikgRGF0dW1HZXRQb2ludGVyKHNsb3QtPnR0c192YWx1ZXNbaV0pKTsKKwkJCQkJ aWYgKGRldG9hc3RlZCA9PSBOVUxMKQorCQkJCQl7CisJCQkJCQlza2lwID0gdHJ1ZTsKKwkJ CQkJCWJyZWFrOworCQkJCQl9CisJCQkJCXNsb3QtPnR0c192YWx1ZXNbaV0gPSBQb2ludGVy R2V0RGF0dW0oZGV0b2FzdGVkKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoc2tpcCkKKwkJCQlj b250aW51ZTsKKwkJfQorCiAJCS8qCiAJCSAqIEZvciB0aGUgY3VycmVudCBoZWFwIHR1cGxl LCBleHRyYWN0IGFsbCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UgaW4KIAkJICogdGhpcyBpbmRl eCwgYW5kIG5vdGUgd2hpY2ggYXJlIG51bGwuICBUaGlzIGFsc28gcGVyZm9ybXMgZXZhbHVh dGlvbgpAQCAtMjM0NywyMCArMjQxMCwyOSBAQCBoZWFwYW1fc2Nhbl9zYW1wbGVfbmV4dF90 dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFNhbXBsZVNjYW5TdGF0ZSAqc2NhbnN0YXRlLAog ICogU0VUIFdJVEhPVVQgT0lEUy4KICAqCiAgKiBTbywgd2UgbXVzdCByZWNvbnN0cnVjdCB0 aGUgdHVwbGUgZnJvbSBjb21wb25lbnQgRGF0dW1zLgorICoKKyAqIFJldHVybnMgdHJ1ZSBv biBzdWNjZXNzLCBhbmQgZmFsc2Ugb24gZmFpbHVyZSBpZiBtaXNzaW5nX29rIGlzCisgKiB0 cnVlLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHJlZm9ybV9hbmRfcmV3cml0 ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkgUmVsYXRpb24gT2xkSGVhcCwgUmVs YXRpb24gTmV3SGVhcCwKLQkJCQkJCSBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsIFJl d3JpdGVTdGF0ZSByd3N0YXRlKQorCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVs bCwgUmV3cml0ZVN0YXRlIHJ3c3RhdGUsCisJCQkJCQkgYm9vbCBtaXNzaW5nX29rKQogewog CUhlYXBUdXBsZQluZXd0dXBsZTsKIAogCW5ld3R1cGxlID0gcmVmb3JtX3R1cGxlKHR1cGxl LCBPbGRIZWFwLCBOZXdIZWFwLCB2YWx1ZXMsIGlzbnVsbCk7CiAKIAkvKiBUaGUgaGVhcCBy ZXdyaXRlIG1vZHVsZSBkb2VzIHRoZSByZXN0ICovCi0JcmV3cml0ZV9oZWFwX3R1cGxlKHJ3 c3RhdGUsIHR1cGxlLCBuZXd0dXBsZSk7CisJaWYgKCFyZXdyaXRlX2hlYXBfdHVwbGUocndz dGF0ZSwgdHVwbGUsIG5ld3R1cGxlLCBtaXNzaW5nX29rKSkKKwl7CisJCWhlYXBfZnJlZXR1 cGxlKG5ld3R1cGxlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAogCWhlYXBfZnJlZXR1cGxl KG5ld3R1cGxlKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXB0b2FzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcHRvYXN0LmMKaW5kZXggMDNmODg1YTI1YjA3Li4zODg5NmEwYzc0OTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXB0b2FzdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXB0b2FzdC5jCkBAIC05NCw3ICs5NCw3IEBAIGhlYXBf dG9hc3RfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIG9sZHR1cCwgYm9vbCBpc19z cGVjdWxhdGl2ZSkKICAqLwogSGVhcFR1cGxlCiBoZWFwX3RvYXN0X2luc2VydF9vcl91cGRh dGUoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgbmV3dHVwLCBIZWFwVHVwbGUgb2xkdHVwLAot CQkJCQkJCXVpbnQzMiBvcHRpb25zKQorCQkJCQkJCXVpbnQzMiBvcHRpb25zLCBib29sIG1p c3Npbmdfb2spCiB7CiAJSGVhcFR1cGxlCXJlc3VsdF90dXBsZTsKIAlUdXBsZURlc2MJdHVw bGVEZXNjOwpAQCAtMTU0LDcgKzE1NCw4IEBAIGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0 ZShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBuZXd0dXAsIEhlYXBUdXBsZSBvbGR0dXAsCiAJ CXR0Yy50dGNfb2xkaXNudWxsID0gdG9hc3Rfb2xkaXNudWxsOwogCX0KIAl0dGMudHRjX2F0 dHIgPSB0b2FzdF9hdHRyOwotCXRvYXN0X3R1cGxlX2luaXQoJnR0Yyk7CisJaWYgKCF0b2Fz dF90dXBsZV9pbml0KCZ0dGMsIG1pc3Npbmdfb2spKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q IC0tLS0tLS0tLS0KIAkgKiBDb21wcmVzcyBhbmQvb3Igc2F2ZSBleHRlcm5hbCB1bnRpbCBk YXRhIGZpdHMgaW50byB0YXJnZXQgbGVuZ3RoCkBAIC02MjEsMTEgKzYyMiwxNCBAQCB0b2Fz dF9idWlsZF9mbGF0dGVuZWRfdHVwbGUoVHVwbGVEZXNjIHR1cGxlRGVzYywKICAqIHNsaWNl b2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCB3aXRoaW4gdGhlIFRPQVNUIHZhbHVlIGZyb20g d2hpY2ggdG8gZmV0Y2guCiAgKiBzbGljZWxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVz IHRvIGJlIGZldGNoZWQgZnJvbSB0aGUgVE9BU1QgdmFsdWUuCiAgKiByZXN1bHQgaXMgdGhl IHZhcmxlbmEgaW50byB3aGljaCB0aGUgcmVzdWx0cyBzaG91bGQgYmUgd3JpdHRlbi4KKyAq IG1pc3Npbmdfb2sgaWYgdHJ1ZSwgcmV0dXJuIGZhbHNlIG9uIG1pc3NpbmcgY2h1bmtzIGlu c3RlYWQgb2YgZXJyb3IuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNl IGlmIG1pc3Npbmdfb2sgYW5kIGNodW5rcyBhcmUgbWlzc2luZy4KICAqLwotdm9pZAorYm9v bAogaGVhcF9mZXRjaF90b2FzdF9zbGljZShSZWxhdGlvbiB0b2FzdHJlbCwgT2lkIHZhbHVl aWQsIGludDMyIGF0dHJzaXplLAogCQkJCQkgICBpbnQzMiBzbGljZW9mZnNldCwgaW50MzIg c2xpY2VsZW5ndGgsCi0JCQkJCSAgIHZhcmxlbmEgKnJlc3VsdCkKKwkJCQkJICAgdmFybGVu YSAqcmVzdWx0LCBib29sIG1pc3Npbmdfb2spCiB7CiAJUmVsYXRpb24gICAqdG9hc3RpZHhz OwogCVNjYW5LZXlEYXRhIHRvYXN0a2V5WzNdOwpAQCAtNzc5LDEzICs3ODMsMjMgQEAgaGVh cF9mZXRjaF90b2FzdF9zbGljZShSZWxhdGlvbiB0b2FzdHJlbCwgT2lkIHZhbHVlaWQsIGlu dDMyIGF0dHJzaXplLAogCSAqIEZpbmFsIGNoZWNrcyB0aGF0IHdlIHN1Y2Nlc3NmdWxseSBm ZXRjaGVkIHRoZSBkYXR1bQogCSAqLwogCWlmIChleHBlY3RlZGNodW5rICE9IChlbmRjaHVu ayArIDEpKQorCXsKKwkJaWYgKG1pc3Npbmdfb2spCisJCXsKKwkJCXN5c3RhYmxlX2VuZHNj YW5fb3JkZXJlZCh0b2FzdHNjYW4pOworCQkJdG9hc3RfY2xvc2VfaW5kZXhlcyh0b2FzdGlk eHMsIG51bV9pbmRleGVzLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJcmV0dXJuIGZhbHNlOwor CQl9CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJV UFRFRCksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgibWlzc2luZyBjaHVuayBudW1iZXIgJWQg Zm9yIHRvYXN0IHZhbHVlICV1IGluICVzIiwKIAkJCQkJCQkJIGV4cGVjdGVkY2h1bmssIHZh bHVlaWQsCiAJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0b2FzdHJlbCkpKSk7 CisJfQogCiAJLyogRW5kIHNjYW4gYW5kIGNsb3NlIGluZGV4ZXMuICovCiAJc3lzdGFibGVf ZW5kc2Nhbl9vcmRlcmVkKHRvYXN0c2Nhbik7CiAJdG9hc3RfY2xvc2VfaW5kZXhlcyh0b2Fz dGlkeHMsIG51bV9pbmRleGVzLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHRydWU7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCA1YTUzOThh NzZhZTcuLmZiYjZlNmNhMWY5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcmV3cml0ZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRl aGVhcC5jCkBAIC0yMTEsNyArMjExLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3cml0ZU1hcHBp bmdEYXRhRW50cnkKIAogCiAvKiBwcm90b3R5cGVzIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMg Ki8KLXN0YXRpYyB2b2lkIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhl YXBUdXBsZSB0dXApOworc3RhdGljIGJvb2wgcmF3X2hlYXBfaW5zZXJ0KFJld3JpdGVTdGF0 ZSBzdGF0ZSwgSGVhcFR1cGxlIHR1cCwKKwkJCQkJCQlib29sIG1pc3Npbmdfb2spOwogCiAv KiBpbnRlcm5hbCBsb2dpY2FsIHJlbWFwcGluZyBwcm90b3R5cGVzICovCiBzdGF0aWMgdm9p ZCBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpOwpAQCAt MzA5LDcgKzMxMCw3IEBAIGVuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQog CXdoaWxlICgodW5yZXNvbHZlZCA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9 IE5VTEwpCiAJewogCQlJdGVtUG9pbnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQtPnR1cGxl LT50X2RhdGEtPnRfY3RpZCk7Ci0JCXJhd19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNvbHZl ZC0+dHVwbGUpOworCQlyYXdfaGVhcF9pbnNlcnQoc3RhdGUsIHVucmVzb2x2ZWQtPnR1cGxl LCBmYWxzZSk7CiAJfQogCiAJLyogV3JpdGUgdGhlIGxhc3QgcGFnZSwgaWYgYW55ICovCkBA IC0zMzgsOSArMzM5LDEwIEBAIGVuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRl KQogICogb2xkX3R1cGxlCW9yaWdpbmFsIHR1cGxlIGluIHRoZSBvbGQgaGVhcAogICogbmV3 X3R1cGxlCW5ldywgcmV3cml0dGVuIHR1cGxlIHRvIGJlIGluc2VydGVkIHRvIG5ldyBoZWFw CiAgKi8KLXZvaWQKK2Jvb2wKIHJld3JpdGVfaGVhcF90dXBsZShSZXdyaXRlU3RhdGUgc3Rh dGUsCi0JCQkJICAgSGVhcFR1cGxlIG9sZF90dXBsZSwgSGVhcFR1cGxlIG5ld190dXBsZSkK KwkJCQkgICBIZWFwVHVwbGUgb2xkX3R1cGxlLCBIZWFwVHVwbGUgbmV3X3R1cGxlLAorCQkJ CSAgIGJvb2wgbWlzc2luZ19vaykKIHsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7CiAJSXRl bVBvaW50ZXJEYXRhIG9sZF90aWQ7CkBAIC00MzcsNyArNDM5LDcgQEAgcmV3cml0ZV9oZWFw X3R1cGxlKFJld3JpdGVTdGF0ZSBzdGF0ZSwKIAkJCSAqIHR1cGxlIHdpbGwgYmUgd3JpdHRl bi4KIAkJCSAqLwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOwotCQkJcmV0 dXJuOworCQkJcmV0dXJuIHRydWU7CiAJCX0KIAl9CiAKQEAgLTQ1NSw3ICs0NTcsMTMgQEAg cmV3cml0ZV9oZWFwX3R1cGxlKFJld3JpdGVTdGF0ZSBzdGF0ZSwKIAkJSXRlbVBvaW50ZXJE YXRhIG5ld190aWQ7CiAKIAkJLyogSW5zZXJ0IHRoZSB0dXBsZSBhbmQgZmluZCBvdXQgd2hl cmUgaXQncyBwdXQgaW4gbmV3X2hlYXAgKi8KLQkJcmF3X2hlYXBfaW5zZXJ0KHN0YXRlLCBu ZXdfdHVwbGUpOworCQlpZiAoIXJhd19oZWFwX2luc2VydChzdGF0ZSwgbmV3X3R1cGxlLCBt aXNzaW5nX29rKSkKKwkJeworCQkJaWYgKGZyZWVfbmV3KQorCQkJCWhlYXBfZnJlZXR1cGxl KG5ld190dXBsZSk7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2N4dCk7CisJCQly ZXR1cm4gZmFsc2U7CisJCX0KIAkJbmV3X3RpZCA9IG5ld190dXBsZS0+dF9zZWxmOwogCiAJ CWxvZ2ljYWxfcmV3cml0ZV9oZWFwX3R1cGxlKHN0YXRlLCBvbGRfdGlkLCBuZXdfdHVwbGUp OwpAQCAtNTMyLDYgKzU0MCw3IEBAIHJld3JpdGVfaGVhcF90dXBsZShSZXdyaXRlU3RhdGUg c3RhdGUsCiAJfQogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOworCXJldHVy biB0cnVlOwogfQogCiAvKgpAQCAtNTkzLDggKzYwMiw4IEBAIHJld3JpdGVfaGVhcF9kZWFk X3R1cGxlKFJld3JpdGVTdGF0ZSBzdGF0ZSwgSGVhcFR1cGxlIG9sZF90dXBsZSkKICAqIHR1 cGxlIGlzIGludmFsaWQgb24gZW50cnksIGl0J3MgcmVwbGFjZWQgd2l0aCB0aGUgbmV3IFRJ RCBhcyB3ZWxsIChpbgogICogdGhlIGluc2VydGVkIGRhdGEgb25seSwgbm90IGluIHRoZSBj YWxsZXIncyBjb3B5KS4KICAqLwotc3RhdGljIHZvaWQKLXJhd19oZWFwX2luc2VydChSZXdy aXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0dXApCitzdGF0aWMgYm9vbAorcmF3X2hlYXBf aW5zZXJ0KFJld3JpdGVTdGF0ZSBzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgYm9vbCBtaXNzaW5n X29rKQogewogCVBhZ2UJCXBhZ2U7CiAJU2l6ZQkJcGFnZUZyZWVTcGFjZSwKQEAgLTYyOCw3 ICs2MzcsOSBAQCByYXdfaGVhcF9pbnNlcnQoUmV3cml0ZVN0YXRlIHN0YXRlLCBIZWFwVHVw bGUgdHVwKQogCQlvcHRpb25zIHw9IEhFQVBfSU5TRVJUX05PX0xPR0lDQUw7CiAKIAkJaGVh cHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZShzdGF0ZS0+cnNfbmV3X3JlbCwg dHVwLCBOVUxMLAotCQkJCQkJCQkJCQkgIG9wdGlvbnMpOworCQkJCQkJCQkJCQkgIG9wdGlv bnMsIG1pc3Npbmdfb2spOworCQlpZiAoaGVhcHR1cCA9PSBOVUxMKQorCQkJcmV0dXJuIGZh bHNlOwogCX0KIAllbHNlCiAJCWhlYXB0dXAgPSB0dXA7CkBAIC03MDIsNiArNzEzLDggQEAg cmF3X2hlYXBfaW5zZXJ0KFJld3JpdGVTdGF0ZSBzdGF0ZSwgSGVhcFR1cGxlIHR1cCkKIAkv KiBJZiBoZWFwdHVwIGlzIGEgcHJpdmF0ZSBjb3B5LCByZWxlYXNlIGl0LiAqLwogCWlmICho ZWFwdHVwICE9IHR1cCkKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CisKKwlyZXR1cm4g dHJ1ZTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdG9hc3RfaGVscGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdG9hc3RfaGVscGVyLmMKaW5kZXggMmYyMDIyZDk5NTEwLi43ZTk4YzAxYTVlZWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90b2FzdF9oZWxwZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdG9hc3RfaGVscGVyLmMKQEAgLTM2LDkg KzM2LDEyIEBACiAgKiB0b2FzdF9mbGFncyBpcyBqdXN0IGEgc2luZ2xlIHVpbnQ4LCBidXQg dG9hc3RfYXR0ciBpcyBhIGNhbGxlci1wcm92aWRlZAogICogYXJyYXkgd2l0aCBhIGxlbmd0 aCBlcXVhbCB0byB0dXBsZURlc2MtPm5hdHRzLiAgVGhlIGNhbGxlciBuZWVkIG5vdAogICog cGVyZm9ybSBhbnkgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGFycmF5IGJlZm9yZSBjYWxsaW5n IHRoaXMgZnVuY3Rpb24uCisgKgorICogSWYgbWlzc2luZ19vayBpcyB0cnVlIGFuZCBhbiBl eHRlcm5hbCBUT0FTVCB2YWx1ZSBjYW5ub3QgYmUgZmV0Y2hlZCwKKyAqIHJldHVybnMgZmFs c2UuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KICAqLwotdm9pZAotdG9hc3RfdHVwbGVf aW5pdChUb2FzdFR1cGxlQ29udGV4dCAqdHRjKQorYm9vbAordG9hc3RfdHVwbGVfaW5pdChU b2FzdFR1cGxlQ29udGV4dCAqdHRjLCBib29sIG1pc3Npbmdfb2spCiB7CiAJVHVwbGVEZXNj CXR1cGxlRGVzYyA9IHR0Yy0+dHRjX3JlbC0+cmRfYXR0OwogCWludAkJCW51bUF0dHJzID0g dHVwbGVEZXNjLT5uYXR0czsKQEAgLTEzNyw3ICsxNDAsMTMgQEAgdG9hc3RfdHVwbGVfaW5p dChUb2FzdFR1cGxlQ29udGV4dCAqdHRjKQogCQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTChu ZXdfdmFsdWUpKQogCQkJewogCQkJCXR0Yy0+dHRjX2F0dHJbaV0udGFpX29sZGV4dGVybmFs ID0gbmV3X3ZhbHVlOwotCQkJCWlmIChhdHQtPmF0dHN0b3JhZ2UgPT0gVFlQU1RPUkFHRV9Q TEFJTikKKwkJCQlpZiAobWlzc2luZ19vayAmJiBWQVJBVFRfSVNfRVhURVJOQUxfT05ESVNL KG5ld192YWx1ZSkpCisJCQkJeworCQkJCQluZXdfdmFsdWUgPSBkZXRvYXN0X2V4dGVybmFs X2F0dHJfZXh0ZW5kZWQobmV3X3ZhbHVlKTsKKwkJCQkJaWYgKG5ld192YWx1ZSA9PSBOVUxM KQorCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCX0KKwkJCQllbHNlIGlmIChhdHQtPmF0dHN0 b3JhZ2UgPT0gVFlQU1RPUkFHRV9QTEFJTikKIAkJCQkJbmV3X3ZhbHVlID0gZGV0b2FzdF9h dHRyKG5ld192YWx1ZSk7CiAJCQkJZWxzZQogCQkJCQluZXdfdmFsdWUgPSBkZXRvYXN0X2V4 dGVybmFsX2F0dHIobmV3X3ZhbHVlKTsKQEAgLTE1OSw2ICsxNjgsOCBAQCB0b2FzdF90dXBs ZV9pbml0KFRvYXN0VHVwbGVDb250ZXh0ICp0dGMpCiAJCQl0dGMtPnR0Y19hdHRyW2ldLnRh aV9jb2xmbGFncyB8PSBUT0FTVENPTF9JR05PUkU7CiAJCX0KIAl9CisKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYWQwZDg1ZjQxODk3Li43 ZTU4M2VlMzlhMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxk CisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC02Myw2ICs2Myw3IEBA IHRlc3RzICs9IHsKICAgICAgICd0LzA1Ml9jaGVja3BvaW50X3NlZ21lbnRfbWlzc2luZy5w bCcsCiAgICAgICAndC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsJywKICAg ICAgICd0LzA1NF91bmxvZ2dlZF9zZXF1ZW5jZV9wcm9tb3Rpb24ucGwnLAorICAgICAgJ3Qv MDU1X3Jld3JpdGVfc3RhbGVfeG1pbi5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X3Jld3JpdGVfc3RhbGVfeG1pbi5wbCBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDU1X3Jld3JpdGVfc3RhbGVfeG1pbi5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRhZDk1YzBjZjk2NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X3Jld3JpdGVfc3RhbGVfeG1pbi5w bApAQCAtMCwwICsxLDEyNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMKKyMgVGVzdCB0aGF0IGhlYXAgcmV3 cml0ZXMgKENMVVNURVIsIFZBQ1VVTSBGVUxMLCBSRVBBQ0spIGFuZCBpbmRleCBidWlsZHMK KyMgd29yayBpbiB0aGUgY2FzZSB3aGVuIHRoZSBiYWNrZW5kJ3Mgb3duIHhtaW4gaXMgaGVs ZCBiYWNrIGJ5IGEgdHJhbnNhY3Rpb24KKyMgaW4gYW5vdGhlciBkYXRhYmFzZS4KKwordXNl IHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdDsKKyMgTm8gQXV0b3ZhY3V1bSwg bm8gcmFuZG9tIGludGVyZmVyZW5jZXMuCiskbm9kZS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3Rn cmVzcWwuY29uZicsIHFxWworYXV0b3ZhY3V1bSA9IG9mZgorXSk7Ciskbm9kZS0+c3RhcnQ7 CisKKyMgQ3JlYXRlIHR3byBkYXRhYmFzZXMuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdDUkVBVEUgREFUQUJBU0UgZGJfaG9sZGVyJyk7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdDUkVBVEUgREFUQUJBU0UgZGJfdGFyZ2V0Jyk7CisKKyMgU2V0IHVwIGEg dGFibGUgd2l0aCBUT0FTVCBkYXRhLiAgUmV0dXJucyB0aGUgdG9hc3QgdGFibGUgbmFtZS4K K3N1YiBzZXR1cF90YWJsZQoreworCW15ICgkdGJsbmFtZSwgJGV4dHJhX2RkbCkgPSBAXzsK KwkkZXh0cmFfZGRsIC8vPSAnJzsKKworCSRub2RlLT5zYWZlX3BzcWwoCisJCSdkYl90YXJn ZXQnLCBxcXsKKwkJRFJPUCBUQUJMRSBJRiBFWElTVFMgJHRibG5hbWU7CisJCUNSRUFURSBU QUJMRSAkdGJsbmFtZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBkYXRhIHRleHQpCisJCQlXSVRI IChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOworCQlBTFRFUiBUQUJMRSAkdGJsbmFtZSBB TFRFUiBDT0xVTU4gZGF0YSBTRVQgU1RPUkFHRSBFWFRFUk5BTDsKKwkJSU5TRVJUIElOVE8g JHRibG5hbWUgVkFMVUVTICgxLCByZXBlYXQoJ3gnLCAyNTAwKSk7CisJCUlOU0VSVCBJTlRP ICR0YmxuYW1lIFZBTFVFUyAoMiwgcmVwZWF0KCd6JywgMjUwMCkpOworCQkkZXh0cmFfZGRs CisJfSk7CisKKwlteSAkdG9hc3QgPSAkbm9kZS0+c2FmZV9wc3FsKAorCQknZGJfdGFyZ2V0 JywgcXF7CisJCVNFTEVDVCAncGdfdG9hc3QuJyB8fCByZWxuYW1lIEZST00gcGdfY2xhc3MK KwkJV0hFUkUgb2lkID0gKFNFTEVDVCByZWx0b2FzdHJlbGlkIEZST00gcGdfY2xhc3MKKwkJ CQkJIFdIRVJFIHJlbG5hbWUgPSAnJHRibG5hbWUnKTsKKwl9KTsKKwljaG9tcCAkdG9hc3Q7 CisJcmV0dXJuICR0b2FzdDsKK30KKworIyBDcmVhdGUgcHJlY29uZGl0aW9uIHN0YXRlLiAg UmVxdWlyZXMgdGhhdCAkaG9sZGVyIGlzIGFscmVhZHkgcnVubmluZyB3aXRoCisjIGEgd3Jp dGUgWElELgorc3ViIGNyZWF0ZV9taXNzaW5nX3RvYXN0X3N0YXRlCit7CisJbXkgKCR0Ymxu YW1lLCAkdG9hc3RfdGFibGUpID0gQF87CisKKwkjIEhvbGQgeG1pbiBpbiBzYW1lIERCIHRv IHByZXZlbnQgbWFpbiB0dXBsZSByZW1vdmFsLgorCW15ICR4bWluX2hvbGRlciA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ2RiX3RhcmdldCcsIG9uX2Vycm9yX3N0b3AgPT4gMSk7CisJ JHhtaW5faG9sZGVyLT5xdWVyeV9zYWZlKCJCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFU QUJMRSBSRUFEIik7CisJJHhtaW5faG9sZGVyLT5xdWVyeV9zYWZlKCJTRUxFQ1QgMSIpOwor CisJIyBEZWxldGUgdGhlIHJvdyB3aXRoIFRPQVNUIGRhdGEuCisJJG5vZGUtPnNhZmVfcHNx bCgnZGJfdGFyZ2V0JywgIkRFTEVURSBGUk9NICR0YmxuYW1lIFdIRVJFIGlkID0gMSIpOwor CisJIyBWQUNVVU0gbWFpbiB0YWJsZSBvbmx5LiAgVGhlIHhtaW5faG9sZGVyIGtlZXBzIHRo ZSBkZWFkIHR1cGxlLgorCSRub2RlLT5zYWZlX3BzcWwoJ2RiX3RhcmdldCcsICJWQUNVVU0g KFBST0NFU1NfVE9BU1QgZmFsc2UpICR0YmxuYW1lIik7CisKKwkjIFJlbGVhc2Ugc2FtZS1E QiB4bWluLgorCSR4bWluX2hvbGRlci0+cXVlcnlfc2FmZSgiQ09NTUlUIik7CisJJHhtaW5f aG9sZGVyLT5xdWl0OworCisJIyBWYWN1dW0gdG9hc3QgdGFibGU6IHRvYXN0IGNodW5rcyBu b3cgREVBRCBhbmQgcmVtb3ZlZC4KKwkkbm9kZS0+c2FmZV9wc3FsKCdkYl90YXJnZXQnLCAi VkFDVVVNICR0b2FzdF90YWJsZSIpOworfQorCisjIE9wZW4gYSB0cmFuc2FjdGlvbiBob2xk aW5nIGFuIFhJRCBiZWZvcmUgYW55IGRlbGV0ZXMuICBUaGlzIFhJRCB3aWxsIGhvbGQKKyMg YmFjayBHZXRTbmFwc2hvdERhdGEoKSBnbG9iYWxseSwgb24gYSBkaWZmZXJlbnQgZGF0YWJh c2UgdGhhbiB0aGUgb25lCisjIHJ1bm5pbmcgdGhlIHZhcmlvdXMgcmV3cml0ZSBvcGVyYXRp b25zLgorbXkgJGhvbGRlciA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ2RiX2hvbGRlcics IG9uX2Vycm9yX3N0b3AgPT4gMSk7CiskaG9sZGVyLT5xdWVyeV9zYWZlKCJCRUdJTiIpOwor JGhvbGRlci0+cXVlcnlfc2FmZSgiQ1JFQVRFIFRFTVAgVEFCTEUgeGlkX2hvbGRlcih4IGlu dCkiKTsKKworIyBUZXN0IDE6IENMVVNURVIKK215ICR0b2FzdCA9IHNldHVwX3RhYmxlKCdy ZXdyaXRlX3Rlc3QnKTsKK2NyZWF0ZV9taXNzaW5nX3RvYXN0X3N0YXRlKCdyZXdyaXRlX3Rl c3QnLCAkdG9hc3QpOworCitteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPQorICAkbm9k ZS0+cHNxbCgnZGJfdGFyZ2V0JywgJ0NMVVNURVIgcmV3cml0ZV90ZXN0IFVTSU5HIHJld3Jp dGVfdGVzdF9wa2V5Jyk7CitpcygkcmV0LCAwLCAiQ0xVU1RFUiBzdWNjZWVkcyB3aXRob3V0 IG1pc3NpbmctY2h1bmsgZXJyb3IiKTsKK3VubGlrZSgkc3RkZXJyLCBxci9taXNzaW5nIGNo dW5rLywgIkNMVVNURVI6IG5vIG1pc3NpbmctY2h1bmsgZXJyb3IiKTsKKworIyBUZXN0IDI6 IFZBQ1VVTSBGVUxMCiskdG9hc3QgPSBzZXR1cF90YWJsZSgncmV3cml0ZV90ZXN0Jyk7Citj cmVhdGVfbWlzc2luZ190b2FzdF9zdGF0ZSgncmV3cml0ZV90ZXN0JywgJHRvYXN0KTsKKwor KCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0KKyAgJG5vZGUtPnBzcWwoJ2RiX3RhcmdldCcs ICdWQUNVVU0gRlVMTCByZXdyaXRlX3Rlc3QnKTsKK2lzKCRyZXQsIDAsICJWQUNVVU0gRlVM TCBzdWNjZWVkcyB3aXRob3V0IG1pc3NpbmctY2h1bmsgZXJyb3IiKTsKK3VubGlrZSgkc3Rk ZXJyLCBxci9taXNzaW5nIGNodW5rLywgIlZBQ1VVTSBGVUxMOiBubyBtaXNzaW5nLWNodW5r IGVycm9yIik7CisKKyMgVGVzdCAzOiBSRVBBQ0sKKyR0b2FzdCA9IHNldHVwX3RhYmxlKCdy ZXdyaXRlX3Rlc3QnKTsKK2NyZWF0ZV9taXNzaW5nX3RvYXN0X3N0YXRlKCdyZXdyaXRlX3Rl c3QnLCAkdG9hc3QpOworCisoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZS0+cHNx bCgnZGJfdGFyZ2V0JywgJ1JFUEFDSyByZXdyaXRlX3Rlc3QnKTsKK2lzKCRyZXQsIDAsICJS RVBBQ0sgc3VjY2VlZHMgd2l0aG91dCBtaXNzaW5nLWNodW5rIGVycm9yIik7Cit1bmxpa2Uo JHN0ZGVyciwgcXIvbWlzc2luZyBjaHVuay8sICJSRVBBQ0s6IG5vIG1pc3NpbmctY2h1bmsg ZXJyb3IiKTsKKworIyBUZXN0IDQ6IENSRUFURSBJTkRFWCBvbiB0b2FzdGVkIGNvbHVtbgor JHRvYXN0ID0gc2V0dXBfdGFibGUoJ3Jld3JpdGVfdGVzdCcpOworY3JlYXRlX21pc3Npbmdf dG9hc3Rfc3RhdGUoJ3Jld3JpdGVfdGVzdCcsICR0b2FzdCk7CisKKygkcmV0LCAkc3Rkb3V0 LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKCdkYl90YXJnZXQnLAorCSdDUkVBVEUgSU5ERVgg cmV3cml0ZV90ZXN0X2RhdGFfaWR4IE9OIHJld3JpdGVfdGVzdCAoZGF0YSknKTsKK2lzKCRy ZXQsIDAsICJDUkVBVEUgSU5ERVggc3VjY2VlZHMgd2l0aG91dCBtaXNzaW5nLWNodW5rIGVy cm9yIik7Cit1bmxpa2UoJHN0ZGVyciwgcXIvbWlzc2luZyBjaHVuay8sICJDUkVBVEUgSU5E RVg6IG5vIG1pc3NpbmctY2h1bmsgZXJyb3IiKTsKKworIyBDbGVhbnVwLgorJGhvbGRlci0+ cXVlcnlfc2FmZSgiQ09NTUlUIik7CiskaG9sZGVyLT5xdWl0OworCiskbm9kZS0+c3RvcDsK K2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvLmdpdGlnbm9y ZSBiL2NvbnRyaWIvZGJsaW5rLy5naXRpZ25vcmUKaW5kZXggNWRjYjNmZjk3MjM1Li4zM2Jj OGQ4ZmZlYjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZGJsaW5rLy5naXRpZ25vcmUKKysrIGIv Y29udHJpYi9kYmxpbmsvLmdpdGlnbm9yZQpAQCAtMiwzICsyLDUgQEAKIC9sb2cvCiAvcmVz dWx0cy8KIC90bXBfY2hlY2svCisvb3V0cHV0X2lzby8KKy90bXBfY2hlY2tfaXNvLwpkaWZm IC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvTWFrZWZpbGUgYi9jb250cmliL2RibGluay9NYWtl ZmlsZQppbmRleCBmZGUwYjQ5ZGRiYmQuLmEwYmE0MTI4MDgxMyAxMDA2NDQKLS0tIGEvY29u dHJpYi9kYmxpbmsvTWFrZWZpbGUKKysrIGIvY29udHJpYi9kYmxpbmsvTWFrZWZpbGUKQEAg LTEzLDYgKzEzLDggQEAgUEdGSUxFREVTQyA9ICJkYmxpbmsgLSBjb25uZWN0IHRvIG90aGVy IFBvc3RncmVTUUwgZGF0YWJhc2VzIgogCiBSRUdSRVNTID0gZGJsaW5rCiBSRUdSRVNTX09Q VFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcworSVNPTEFU SU9OID0gcmV3cml0ZV9zdGFsZV94bWluCitJU09MQVRJT05fT1BUUyA9IC0tbG9hZC1leHRl bnNpb249ZGJsaW5rCiBUQVBfVEVTVFMgPSAxCiAKIGlmZGVmIFVTRV9QR1hTCmRpZmYgLS1n aXQgYS9jb250cmliL2RibGluay9leHBlY3RlZC9yZXdyaXRlX3N0YWxlX3htaW4ub3V0IGIv Y29udHJpYi9kYmxpbmsvZXhwZWN0ZWQvcmV3cml0ZV9zdGFsZV94bWluLm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJlNWE3OTQwZWEyNgotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvZGJsaW5rL2V4cGVjdGVkL3Jld3JpdGVfc3RhbGVfeG1p bi5vdXQKQEAgLTAsMCArMSwyMzcgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAzIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9ob2xkX3htaW4gczJfYmVnaW4gczNf ZGVsZXRlIHMzX3ZhY3V1bV9tYWluX29ubHkgczJfY29tbWl0IHMzX3ZhY3V1bV90b2FzdCBz M19jbHVzdGVyIHMxX3JlbGVhc2UKK3N0ZXAgczFfaG9sZF94bWluOiAKKyAgICBTRUxFQ1Qg ZGJsaW5rX2Nvbm5lY3QoJ2hvbGRlcicsCisgICAgICAgICdkYm5hbWU9cmVncmVzc19vdGhl cl9kYiBwb3J0PScgfHwgY3VycmVudF9zZXR0aW5nKCdwb3J0JykpOworICAgIFNFTEVDVCBk YmxpbmtfZXhlYygnaG9sZGVyJywgJ0JFR0lOJyk7CisgICAgU0VMRUNUIGRibGlua19leGVj KCdob2xkZXInLCAnQ1JFQVRFIFRFTVAgVEFCTEUgeGlkX2hvbGRlcih4IGludCknKTsKKwor ZGJsaW5rX2Nvbm5lY3QKKy0tLS0tLS0tLS0tLS0tCitPSyAgICAgICAgICAgIAorKDEgcm93 KQorCitkYmxpbmtfZXhlYworLS0tLS0tLS0tLS0KK0JFR0lOICAgICAgCisoMSByb3cpCisK K2RibGlua19leGVjIAorLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUKKygxIHJvdykKKwor c3RlcCBzMl9iZWdpbjogCisgICAgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKKyAgICBTRUxFQ1QgMTsKKworP2NvbHVtbj8KKy0tLS0tLS0tCisgICAgICAgMQor KDEgcm93KQorCitzdGVwIHMzX2RlbGV0ZTogCisgICAgREVMRVRFIEZST00gcmV3cml0ZV90 ZXN0IFdIRVJFIGlkID0gMTsKKworc3RlcCBzM192YWN1dW1fbWFpbl9vbmx5OiAKKyAgICBW QUNVVU0gKFBST0NFU1NfVE9BU1QgZmFsc2UpIHJld3JpdGVfdGVzdDsKKworc3RlcCBzMl9j b21taXQ6IENPTU1JVDsKK3N0ZXAgczNfdmFjdXVtX3RvYXN0OiAKKyAgICBWQUNVVU0gcGdf dG9hc3QucmV3cml0ZV90ZXN0X3RvYXN0OworCitzdGVwIHMzX2NsdXN0ZXI6IAorICAgIENM VVNURVIgcmV3cml0ZV90ZXN0IFVTSU5HIHJld3JpdGVfdGVzdF9wa2V5OworCitzdGVwIHMx X3JlbGVhc2U6IAorICAgIFNFTEVDVCBkYmxpbmtfZXhlYygnaG9sZGVyJywgJ0NPTU1JVCcp OworICAgIFNFTEVDVCBkYmxpbmtfZGlzY29ubmVjdCgnaG9sZGVyJyk7CisKK2RibGlua19l eGVjCistLS0tLS0tLS0tLQorQ09NTUlUICAgICAKKygxIHJvdykKKworZGJsaW5rX2Rpc2Nv bm5lY3QKKy0tLS0tLS0tLS0tLS0tLS0tCitPSyAgICAgICAgICAgICAgIAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9ob2xkX3htaW4gczJfYmVnaW4gczNfZGVs ZXRlIHMzX3ZhY3V1bV9tYWluX29ubHkgczJfY29tbWl0IHMzX3ZhY3V1bV90b2FzdCBzM192 YWN1dW1fZnVsbCBzMV9yZWxlYXNlCitzdGVwIHMxX2hvbGRfeG1pbjogCisgICAgU0VMRUNU IGRibGlua19jb25uZWN0KCdob2xkZXInLAorICAgICAgICAnZGJuYW1lPXJlZ3Jlc3Nfb3Ro ZXJfZGIgcG9ydD0nIHx8IGN1cnJlbnRfc2V0dGluZygncG9ydCcpKTsKKyAgICBTRUxFQ1Qg ZGJsaW5rX2V4ZWMoJ2hvbGRlcicsICdCRUdJTicpOworICAgIFNFTEVDVCBkYmxpbmtfZXhl YygnaG9sZGVyJywgJ0NSRUFURSBURU1QIFRBQkxFIHhpZF9ob2xkZXIoeCBpbnQpJyk7CisK K2RibGlua19jb25uZWN0CistLS0tLS0tLS0tLS0tLQorT0sgICAgICAgICAgICAKKygxIHJv dykKKworZGJsaW5rX2V4ZWMKKy0tLS0tLS0tLS0tCitCRUdJTiAgICAgIAorKDEgcm93KQor CitkYmxpbmtfZXhlYyAKKy0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFCisoMSByb3cpCisK K3N0ZXAgczJfYmVnaW46IAorICAgIEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQ7CisgICAgU0VMRUNUIDE7CisKKz9jb2x1bW4/CistLS0tLS0tLQorICAgICAgIDEK KygxIHJvdykKKworc3RlcCBzM19kZWxldGU6IAorICAgIERFTEVURSBGUk9NIHJld3JpdGVf dGVzdCBXSEVSRSBpZCA9IDE7CisKK3N0ZXAgczNfdmFjdXVtX21haW5fb25seTogCisgICAg VkFDVVVNIChQUk9DRVNTX1RPQVNUIGZhbHNlKSByZXdyaXRlX3Rlc3Q7CisKK3N0ZXAgczJf Y29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX3ZhY3V1bV90b2FzdDogCisgICAgVkFDVVVNIHBn X3RvYXN0LnJld3JpdGVfdGVzdF90b2FzdDsKKworc3RlcCBzM192YWN1dW1fZnVsbDogCisg ICAgVkFDVVVNIEZVTEwgcmV3cml0ZV90ZXN0OworCitzdGVwIHMxX3JlbGVhc2U6IAorICAg IFNFTEVDVCBkYmxpbmtfZXhlYygnaG9sZGVyJywgJ0NPTU1JVCcpOworICAgIFNFTEVDVCBk YmxpbmtfZGlzY29ubmVjdCgnaG9sZGVyJyk7CisKK2RibGlua19leGVjCistLS0tLS0tLS0t LQorQ09NTUlUICAgICAKKygxIHJvdykKKworZGJsaW5rX2Rpc2Nvbm5lY3QKKy0tLS0tLS0t LS0tLS0tLS0tCitPSyAgICAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMV9ob2xkX3htaW4gczJfYmVnaW4gczNfZGVsZXRlIHMzX3ZhY3V1bV9t YWluX29ubHkgczJfY29tbWl0IHMzX3ZhY3V1bV90b2FzdCBzM19yZXBhY2sgczFfcmVsZWFz ZQorc3RlcCBzMV9ob2xkX3htaW46IAorICAgIFNFTEVDVCBkYmxpbmtfY29ubmVjdCgnaG9s ZGVyJywKKyAgICAgICAgJ2RibmFtZT1yZWdyZXNzX290aGVyX2RiIHBvcnQ9JyB8fCBjdXJy ZW50X3NldHRpbmcoJ3BvcnQnKSk7CisgICAgU0VMRUNUIGRibGlua19leGVjKCdob2xkZXIn LCAnQkVHSU4nKTsKKyAgICBTRUxFQ1QgZGJsaW5rX2V4ZWMoJ2hvbGRlcicsICdDUkVBVEUg VEVNUCBUQUJMRSB4aWRfaG9sZGVyKHggaW50KScpOworCitkYmxpbmtfY29ubmVjdAorLS0t LS0tLS0tLS0tLS0KK09LICAgICAgICAgICAgCisoMSByb3cpCisKK2RibGlua19leGVjCist LS0tLS0tLS0tLQorQkVHSU4gICAgICAKKygxIHJvdykKKworZGJsaW5rX2V4ZWMgCistLS0t LS0tLS0tLS0KK0NSRUFURSBUQUJMRQorKDEgcm93KQorCitzdGVwIHMyX2JlZ2luOiAKKyAg ICBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworICAgIFNFTEVDVCAx OworCis/Y29sdW1uPworLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK3N0ZXAgczNf ZGVsZXRlOiAKKyAgICBERUxFVEUgRlJPTSByZXdyaXRlX3Rlc3QgV0hFUkUgaWQgPSAxOwor CitzdGVwIHMzX3ZhY3V1bV9tYWluX29ubHk6IAorICAgIFZBQ1VVTSAoUFJPQ0VTU19UT0FT VCBmYWxzZSkgcmV3cml0ZV90ZXN0OworCitzdGVwIHMyX2NvbW1pdDogQ09NTUlUOworc3Rl cCBzM192YWN1dW1fdG9hc3Q6IAorICAgIFZBQ1VVTSBwZ190b2FzdC5yZXdyaXRlX3Rlc3Rf dG9hc3Q7CisKK3N0ZXAgczNfcmVwYWNrOiAKKyAgICBSRVBBQ0sgcmV3cml0ZV90ZXN0Owor CitzdGVwIHMxX3JlbGVhc2U6IAorICAgIFNFTEVDVCBkYmxpbmtfZXhlYygnaG9sZGVyJywg J0NPTU1JVCcpOworICAgIFNFTEVDVCBkYmxpbmtfZGlzY29ubmVjdCgnaG9sZGVyJyk7CisK K2RibGlua19leGVjCistLS0tLS0tLS0tLQorQ09NTUlUICAgICAKKygxIHJvdykKKworZGJs aW5rX2Rpc2Nvbm5lY3QKKy0tLS0tLS0tLS0tLS0tLS0tCitPSyAgICAgICAgICAgICAgIAor KDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9ob2xkX3htaW4gczJfYmVn aW4gczNfZGVsZXRlIHMzX3ZhY3V1bV9tYWluX29ubHkgczJfY29tbWl0IHMzX3ZhY3V1bV90 b2FzdCBzM19jcmVhdGVfaW5kZXggczFfcmVsZWFzZQorc3RlcCBzMV9ob2xkX3htaW46IAor ICAgIFNFTEVDVCBkYmxpbmtfY29ubmVjdCgnaG9sZGVyJywKKyAgICAgICAgJ2RibmFtZT1y ZWdyZXNzX290aGVyX2RiIHBvcnQ9JyB8fCBjdXJyZW50X3NldHRpbmcoJ3BvcnQnKSk7Cisg ICAgU0VMRUNUIGRibGlua19leGVjKCdob2xkZXInLCAnQkVHSU4nKTsKKyAgICBTRUxFQ1Qg ZGJsaW5rX2V4ZWMoJ2hvbGRlcicsICdDUkVBVEUgVEVNUCBUQUJMRSB4aWRfaG9sZGVyKHgg aW50KScpOworCitkYmxpbmtfY29ubmVjdAorLS0tLS0tLS0tLS0tLS0KK09LICAgICAgICAg ICAgCisoMSByb3cpCisKK2RibGlua19leGVjCistLS0tLS0tLS0tLQorQkVHSU4gICAgICAK KygxIHJvdykKKworZGJsaW5rX2V4ZWMgCistLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRQor KDEgcm93KQorCitzdGVwIHMyX2JlZ2luOiAKKyAgICBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworICAgIFNFTEVDVCAxOworCis/Y29sdW1uPworLS0tLS0tLS0K KyAgICAgICAxCisoMSByb3cpCisKK3N0ZXAgczNfZGVsZXRlOiAKKyAgICBERUxFVEUgRlJP TSByZXdyaXRlX3Rlc3QgV0hFUkUgaWQgPSAxOworCitzdGVwIHMzX3ZhY3V1bV9tYWluX29u bHk6IAorICAgIFZBQ1VVTSAoUFJPQ0VTU19UT0FTVCBmYWxzZSkgcmV3cml0ZV90ZXN0Owor CitzdGVwIHMyX2NvbW1pdDogQ09NTUlUOworc3RlcCBzM192YWN1dW1fdG9hc3Q6IAorICAg IFZBQ1VVTSBwZ190b2FzdC5yZXdyaXRlX3Rlc3RfdG9hc3Q7CisKK3N0ZXAgczNfY3JlYXRl X2luZGV4OiAKKyAgICBDUkVBVEUgSU5ERVggcmV3cml0ZV90ZXN0X2RhdGFfaWR4IE9OIHJl d3JpdGVfdGVzdCAoZGF0YSk7CisKK3N0ZXAgczFfcmVsZWFzZTogCisgICAgU0VMRUNUIGRi bGlua19leGVjKCdob2xkZXInLCAnQ09NTUlUJyk7CisgICAgU0VMRUNUIGRibGlua19kaXNj b25uZWN0KCdob2xkZXInKTsKKworZGJsaW5rX2V4ZWMKKy0tLS0tLS0tLS0tCitDT01NSVQg ICAgIAorKDEgcm93KQorCitkYmxpbmtfZGlzY29ubmVjdAorLS0tLS0tLS0tLS0tLS0tLS0K K09LICAgICAgICAgICAgICAgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJs aW5rL21lc29uLmJ1aWxkIGIvY29udHJpYi9kYmxpbmsvbWVzb24uYnVpbGQKaW5kZXggZTI0 ODlmNDEyMjlmLi44NmZiZDM3MmI4ODAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZGJsaW5rL21l c29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvZGJsaW5rL21lc29uLmJ1aWxkCkBAIC0zNiw2ICsz NiwxMSBAQCB0ZXN0cyArPSB7CiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRs cGF0aCcsIG1lc29uLnByb2plY3RfYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3Mn XSwKICAgfSwKKyAgJ2lzb2xhdGlvbic6IHsKKyAgICAnc3BlY3MnOiBbCisgICAgICAncmV3 cml0ZV9zdGFsZV94bWluJywKKyAgICBdLAorICB9LAogICAndGFwJzogewogICAgICd0ZXN0 cyc6IFsKICAgICAgICd0LzAwMV9hdXRoX3NjcmFtLnBsJywKZGlmZiAtLWdpdCBhL2NvbnRy aWIvZGJsaW5rL3NwZWNzL3Jld3JpdGVfc3RhbGVfeG1pbi5zcGVjIGIvY29udHJpYi9kYmxp bmsvc3BlY3MvcmV3cml0ZV9zdGFsZV94bWluLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5mZTg4ZTc4OWY4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9j b250cmliL2RibGluay9zcGVjcy9yZXdyaXRlX3N0YWxlX3htaW4uc3BlYwpAQCAtMCwwICsx LDEzNyBAQAorIyBUZXN0IHRoYXQgaGVhcCByZXdyaXRlcyB3b3JrIHdoZW4gdGhlIHJld3Jp dGluZyBiYWNrZW5kJ3Mgb3duIHhtaW4gaXMKKyMgaGVsZCBiYWNrIGJ5IGEgdHJhbnNhY3Rp b24gaW4gYW5vdGhlciBkYXRhYmFzZS4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgREFUQUJB U0UgcmVncmVzc19vdGhlcl9kYjsKK30KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgRVhURU5T SU9OIElGIE5PVCBFWElTVFMgZGJsaW5rOworCisgICAgQ1JFQVRFIFRBQkxFIHJld3JpdGVf dGVzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBkYXRhIHRleHQpCisgICAgICAgIFdJVEggKGF1 dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CisgICAgQUxURVIgVEFCTEUgcmV3cml0ZV90ZXN0 IEFMVEVSIENPTFVNTiBkYXRhIFNFVCBTVE9SQUdFIEVYVEVSTkFMOworICAgIElOU0VSVCBJ TlRPIHJld3JpdGVfdGVzdCBWQUxVRVMgKDEsIHJlcGVhdCgneCcsIDI1MDApKTsKKyAgICBJ TlNFUlQgSU5UTyByZXdyaXRlX3Rlc3QgVkFMVUVTICgyLCByZXBlYXQoJ3knLCAyNTAwKSk7 CisKKyAgICAtLSBSZW5hbWUgdGhlIHRvYXN0IHRhYmxlIHRvIGEga25vd24gbmFtZSBzbyB3 ZSBjYW4gVkFDVVVNIGl0IGRpcmVjdGx5LgorICAgIFNFVCBhbGxvd19zeXN0ZW1fdGFibGVf bW9kcyBUTyB0cnVlOworICAgIERPICQkREVDTEFSRSByIHJlY29yZDsKKyAgICAgIEJFR0lO CisgICAgICAgIFNFTEVDVCBJTlRPIHIgcmVsdG9hc3RyZWxpZDo6cmVnY2xhc3M6OnRleHQg QVMgdGFibGVfbmFtZQorICAgICAgICAgIEZST00gcGdfY2xhc3MgV0hFUkUgb2lkID0gJ3Jl d3JpdGVfdGVzdCc6OnJlZ2NsYXNzOworICAgICAgICBFWEVDVVRFICdBTFRFUiBUQUJMRSAn IHx8IHIudGFibGVfbmFtZSB8fCAnIFJFTkFNRSBUTyByZXdyaXRlX3Rlc3RfdG9hc3Q7JzsK KyAgICAgIEVORCQkOworICAgIFJFU0VUIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOworfQor Cit0ZWFyZG93bgoreworICAgIERST1AgREFUQUJBU0UgcmVncmVzc19vdGhlcl9kYjsKK30K KworIyBTZXNzaW9uIHMxOiB1c2UgZGJsaW5rIHRvIGhvbGQgYSB0cmFuc2FjdGlvbiBpbiBh bm90aGVyIGRhdGFiYXNlLgorIyBUaGlzIG11c3Qgc3RhcnQgYmVmb3JlIHRoZSBERUxFVEUg c28gaXRzIFhJRCBpcyBvbGRlciwgZW5zdXJpbmcKKyMgR2V0U25hcHNob3REYXRhKCkgaG9s ZHMgYmFjayBhbnkgcmV3cml0ZXMuCitzZXNzaW9uIHMxCitzdGVwIHMxX2hvbGRfeG1pbgor eworICAgIFNFTEVDVCBkYmxpbmtfY29ubmVjdCgnaG9sZGVyJywKKyAgICAgICAgJ2RibmFt ZT1yZWdyZXNzX290aGVyX2RiIHBvcnQ9JyB8fCBjdXJyZW50X3NldHRpbmcoJ3BvcnQnKSk7 CisgICAgU0VMRUNUIGRibGlua19leGVjKCdob2xkZXInLCAnQkVHSU4nKTsKKyAgICBTRUxF Q1QgZGJsaW5rX2V4ZWMoJ2hvbGRlcicsICdDUkVBVEUgVEVNUCBUQUJMRSB4aWRfaG9sZGVy KHggaW50KScpOworfQorc3RlcCBzMV9yZWxlYXNlCit7CisgICAgU0VMRUNUIGRibGlua19l eGVjKCdob2xkZXInLCAnQ09NTUlUJyk7CisgICAgU0VMRUNUIGRibGlua19kaXNjb25uZWN0 KCdob2xkZXInKTsKK30KKworIyBTZXNzaW9uIHMyOiBob2xkcyB4bWluIGluIHRoZSBTQU1F IGRhdGFiYXNlIHRlbXBvcmFyaWx5LCBzbyB0aGUKKyMgbWFpbi10YWJsZSB2YWN1dW0gcHJl c2VydmVzIHRoZSBkZWFkIHR1cGxlIGFzIFJFQ0VOVExZX0RFQUQuCitzZXNzaW9uIHMyCitz dGVwIHMyX2JlZ2luCit7CisgICAgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKKyAgICBTRUxFQ1QgMTsKK30KK3N0ZXAgczJfY29tbWl0IHsgQ09NTUlUOyB9CisK KyMgU2Vzc2lvbiBzMzogcGVyZm9ybXMgRE1MLCBzcGxpdCB2YWN1dW0sIGFuZCB0aGUgcmV3 cml0ZS4KK3Nlc3Npb24gczMKK3N0ZXAgczNfZGVsZXRlCit7CisgICAgREVMRVRFIEZST00g cmV3cml0ZV90ZXN0IFdIRVJFIGlkID0gMTsKK30KK3N0ZXAgczNfdmFjdXVtX21haW5fb25s eQoreworICAgIFZBQ1VVTSAoUFJPQ0VTU19UT0FTVCBmYWxzZSkgcmV3cml0ZV90ZXN0Owor fQorc3RlcCBzM192YWN1dW1fdG9hc3QKK3sKKyAgICBWQUNVVU0gcGdfdG9hc3QucmV3cml0 ZV90ZXN0X3RvYXN0OworfQorc3RlcCBzM19jbHVzdGVyCit7CisgICAgQ0xVU1RFUiByZXdy aXRlX3Rlc3QgVVNJTkcgcmV3cml0ZV90ZXN0X3BrZXk7Cit9CitzdGVwIHMzX3ZhY3V1bV9m dWxsCit7CisgICAgVkFDVVVNIEZVTEwgcmV3cml0ZV90ZXN0OworfQorc3RlcCBzM19yZXBh Y2sKK3sKKyAgICBSRVBBQ0sgcmV3cml0ZV90ZXN0OworfQorc3RlcCBzM19jcmVhdGVfaW5k ZXgKK3sKKyAgICBDUkVBVEUgSU5ERVggcmV3cml0ZV90ZXN0X2RhdGFfaWR4IE9OIHJld3Jp dGVfdGVzdCAoZGF0YSk7Cit9CisKK3RlYXJkb3duIHsgRFJPUCBUQUJMRSBJRiBFWElTVFMg cmV3cml0ZV90ZXN0OyB9CisKKyMgQ0xVU1RFUgorcGVybXV0YXRpb24KKyAgICBzMV9ob2xk X3htaW4KKyAgICBzMl9iZWdpbgorICAgIHMzX2RlbGV0ZQorICAgIHMzX3ZhY3V1bV9tYWlu X29ubHkKKyAgICBzMl9jb21taXQKKyAgICBzM192YWN1dW1fdG9hc3QKKyAgICBzM19jbHVz dGVyCisgICAgczFfcmVsZWFzZQorCisjIFZBQ1VVTSBGVUxMCitwZXJtdXRhdGlvbgorICAg IHMxX2hvbGRfeG1pbgorICAgIHMyX2JlZ2luCisgICAgczNfZGVsZXRlCisgICAgczNfdmFj dXVtX21haW5fb25seQorICAgIHMyX2NvbW1pdAorICAgIHMzX3ZhY3V1bV90b2FzdAorICAg IHMzX3ZhY3V1bV9mdWxsCisgICAgczFfcmVsZWFzZQorCisjIFJFUEFDSworcGVybXV0YXRp b24KKyAgICBzMV9ob2xkX3htaW4KKyAgICBzMl9iZWdpbgorICAgIHMzX2RlbGV0ZQorICAg IHMzX3ZhY3V1bV9tYWluX29ubHkKKyAgICBzMl9jb21taXQKKyAgICBzM192YWN1dW1fdG9h c3QKKyAgICBzM19yZXBhY2sKKyAgICBzMV9yZWxlYXNlCisKKyMgQ1JFQVRFIElOREVYCitw ZXJtdXRhdGlvbgorICAgIHMxX2hvbGRfeG1pbgorICAgIHMyX2JlZ2luCisgICAgczNfZGVs ZXRlCisgICAgczNfdmFjdXVtX21haW5fb25seQorICAgIHMyX2NvbW1pdAorICAgIHMzX3Zh Y3V1bV90b2FzdAorICAgIHMzX2NyZWF0ZV9pbmRleAorICAgIHMxX3JlbGVhc2UKLS0gCjIu NTUuMAoK --------------Je1HeDyGjfH0zQVrjGBK5LZl Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Smuggle-the-missing_ok-arg-in-a-global-var-for-ba.patch" Content-Disposition: attachment; filename*0="v3-0002-Smuggle-the-missing_ok-arg-in-a-global-var-for-ba.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhZTg0MTlkMGExNjYzNzI3ODljZDk0YWNjMGI5YzhhOGQ5Yzg2NGNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgOCBKdWwgMjAyNiAxMjozNjo0OCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjMgMi8yXSBTbXVnZ2xlIHRoZSAnbWlzc2luZ19vaycgYXJnIGlu IGEgZ2xvYmFsIHZhciwgZm9yCiBiYWNrcGF0Y2hpbmcKCi0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcHRvYXN0LmMgfCAyMSArKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICB8ICA0ICsrKysKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwdG9hc3QuaCAgICAgIHwgMTUgKysrKysrKysrKystLS0KIHNyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmggICAgICAgIHwgMzEgKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcHRvYXN0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwdG9hc3QuYwppbmRleCAzODg5NmEwYzc0 OS4uN2FiNTQyMjUwNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXB0b2FzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXB0b2FzdC5jCkBA IC02MTMsNiArNjEzLDIxIEBAIHRvYXN0X2J1aWxkX2ZsYXR0ZW5lZF90dXBsZShUdXBsZURl c2MgdHVwbGVEZXNjLAogCXJldHVybiBuZXdfdHVwbGU7CiB9CiAKKy8qCisgKiBBZGFwdGVy IGZvciB0aGUgb2xkIEFQSSBpbiBiYWNrYnJhbmNoZXMsIHdoZXJlIHRoZSAnbWlzc2luZ19v aycgZmxhZyBpcworICogcGFzc2VkIGluIGEgZ2xvYmFsIHZhcmlhYmxlLgorICovCit2b2lk CitoZWFwX2ZldGNoX3RvYXN0X3NsaWNlKFJlbGF0aW9uIHRvYXN0cmVsLCBPaWQgdmFsdWVp ZCwgaW50MzIgYXR0cnNpemUsCisJCQkJCQkgICBpbnQzMiBzbGljZW9mZnNldCwgaW50MzIg c2xpY2VsZW5ndGgsCisJCQkJCQkgICB2YXJsZW5hICpyZXN1bHQpCit7CisJZmV0Y2hfdG9h c3Rfc2xpY2Vfd2FzX21pc3NpbmcgPQorCQloZWFwX2ZldGNoX3RvYXN0X3NsaWNlX2V4dCh0 b2FzdHJlbCwgdmFsdWVpZCwgYXR0cnNpemUsCisJCQkJCQkJCSAgIHNsaWNlb2Zmc2V0LCBz bGljZWxlbmd0aCwKKwkJCQkJCQkJICAgcmVzdWx0LCBmZXRjaF90b2FzdF9zbGljZV9taXNz aW5nX29rKTsKK30KKwogLyoKICAqIEZldGNoIGEgVE9BU1Qgc2xpY2UgZnJvbSBhIGhlYXAg dGFibGUuCiAgKgpAQCAtNjI3LDkgKzY0Miw5IEBAIHRvYXN0X2J1aWxkX2ZsYXR0ZW5lZF90 dXBsZShUdXBsZURlc2MgdHVwbGVEZXNjLAogICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Ms IGZhbHNlIGlmIG1pc3Npbmdfb2sgYW5kIGNodW5rcyBhcmUgbWlzc2luZy4KICAqLwogYm9v bAotaGVhcF9mZXRjaF90b2FzdF9zbGljZShSZWxhdGlvbiB0b2FzdHJlbCwgT2lkIHZhbHVl aWQsIGludDMyIGF0dHJzaXplLAotCQkJCQkgICBpbnQzMiBzbGljZW9mZnNldCwgaW50MzIg c2xpY2VsZW5ndGgsCi0JCQkJCSAgIHZhcmxlbmEgKnJlc3VsdCwgYm9vbCBtaXNzaW5nX29r KQoraGVhcF9mZXRjaF90b2FzdF9zbGljZV9leHQoUmVsYXRpb24gdG9hc3RyZWwsIE9pZCB2 YWx1ZWlkLCBpbnQzMiBhdHRyc2l6ZSwKKwkJCQkJCSAgIGludDMyIHNsaWNlb2Zmc2V0LCBp bnQzMiBzbGljZWxlbmd0aCwKKwkJCQkJCSAgIHZhcmxlbmEgKnJlc3VsdCwgYm9vbCBtaXNz aW5nX29rKQogewogCVJlbGF0aW9uICAgKnRvYXN0aWR4czsKIAlTY2FuS2V5RGF0YSB0b2Fz dGtleVszXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IDY4ZmYwOTY2 ZjFjLi5mMzE2NGMzZDYyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBA IC00OSw2ICs0OSwxMCBAQAogY2hhcgkgICAqZGVmYXVsdF90YWJsZV9hY2Nlc3NfbWV0aG9k ID0gREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9EOwogYm9vbAkJc3luY2hyb25pemVfc2Vx c2NhbnMgPSB0cnVlOwogCisvKiBoYWNrIHRvIHBhc3MgZXh0cmEgYXJndW1lbnQgYW5kIHJl dHVybiB2YWx1ZSB0by9mcm9tIHJlbGF0aW9uX2ZldGNoX3RvYXN0X3NsaWNlICovCitib29s IGZldGNoX3RvYXN0X3NsaWNlX21pc3Npbmdfb2sgPSBmYWxzZTsKK2Jvb2wgZmV0Y2hfdG9h c3Rfc2xpY2Vfd2FzX21pc3NpbmcgPSBmYWxzZTsKKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBTbG90IGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwdG9hc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwdG9hc3QuaAppbmRl eCAxYmU4NWRiNmRkZC4uNGM3NjM0NDdkMmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwdG9hc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcHRvYXN0LmgK QEAgLTE0OCw5ICsxNDgsMTggQEAgZXh0ZXJuIEhlYXBUdXBsZSB0b2FzdF9idWlsZF9mbGF0 dGVuZWRfdHVwbGUoVHVwbGVEZXNjIHR1cGxlRGVzYywKICAqCWluc3RlYWQgb2YgcmFpc2lu ZyBhbiBlcnJvci4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgogICogLS0tLS0tLS0tLQog ICovCi1leHRlcm4gYm9vbCBoZWFwX2ZldGNoX3RvYXN0X3NsaWNlKFJlbGF0aW9uIHRvYXN0 cmVsLCBPaWQgdmFsdWVpZCwKK2V4dGVybiBib29sIGhlYXBfZmV0Y2hfdG9hc3Rfc2xpY2Vf ZXh0KFJlbGF0aW9uIHRvYXN0cmVsLCBPaWQgdmFsdWVpZCwKKwkJCQkJCQkJCSAgIGludDMy IGF0dHJzaXplLCBpbnQzMiBzbGljZW9mZnNldCwKKwkJCQkJCQkJCSAgIGludDMyIHNsaWNl bGVuZ3RoLCB2YXJsZW5hICpyZXN1bHQsCisJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2sp OworCisvKgorICogTGVnYWN5IEFQSSB1c2VkIGluIHRoZSB0YWJsZWFtLiBJbnN0ZWFkIG9m IGEgJ21pc3Npbmdfb2snIGFyZywgbG9va3MKKyAqIGF0IHRoZSAnZmV0Y2hfdG9hc3Rfc2xp Y2VfbWlzc2luZ19vaycgdmFyaWFibGUsIGFuZCByZXR1cm5zIHRoZSByZXR1cm4KKyAqIHZh bHVlICdmZXRjaF90b2FzdF9zbGljZV93YXNfbWlzc2luZycuCisgKi8KK2V4dGVybiB2b2lk IGhlYXBfZmV0Y2hfdG9hc3Rfc2xpY2UoUmVsYXRpb24gdG9hc3RyZWwsIE9pZCB2YWx1ZWlk LAogCQkJCQkJCQkgICBpbnQzMiBhdHRyc2l6ZSwgaW50MzIgc2xpY2VvZmZzZXQsCi0JCQkJ CQkJCSAgIGludDMyIHNsaWNlbGVuZ3RoLCB2YXJsZW5hICpyZXN1bHQsCi0JCQkJCQkJCSAg IGJvb2wgbWlzc2luZ19vayk7CisJCQkJCQkJCSAgIGludDMyIHNsaWNlbGVuZ3RoLCB2YXJs ZW5hICpyZXN1bHQpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUFRPQVNUX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCmluZGV4IGE5MGIxNWRkODJiLi45NzliM2Y2M2ZiMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCkBAIC0zMDcsNiArMzA3LDkgQEAgdHlwZWRlZiB2b2lkICgqSW5kZXhC dWlsZENhbGxiYWNrKSAoUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCQlib29sIHR1cGxlSXNB bGl2ZSwKIAkJCQkJCQkJCXZvaWQgKnN0YXRlKTsKIAorZXh0ZXJuIGJvb2wgZmV0Y2hfdG9h c3Rfc2xpY2VfbWlzc2luZ19vazsKK2V4dGVybiBib29sIGZldGNoX3RvYXN0X3NsaWNlX3dh c19taXNzaW5nOworCiAvKgogICogQVBJIHN0cnVjdCBmb3IgYSB0YWJsZSBBTS4gIE5vdGUg dGhpcyBtdXN0IGJlIGFsbG9jYXRlZCBpbiBhCiAgKiBzZXJ2ZXItbGlmZXRpbWUgbWFubmVy LCB0eXBpY2FsbHkgYXMgYSBzdGF0aWMgY29uc3Qgc3RydWN0LCB3aGljaCB0aGVuIGdldHMK QEAgLTc4MywxNSArNzg2LDE1IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJ ICogdGFibGUgaW1wbGVtZW50ZWQgYnkgdGhpcyBBTS4gIFNlZSB0YWJsZV9yZWxhdGlvbl9m ZXRjaF90b2FzdF9zbGljZSgpCiAJICogZm9yIG1vcmUgZGV0YWlscy4KIAkgKgotCSAqIElm IG1pc3Npbmdfb2sgaXMgdHJ1ZSwgcmV0dXJucyBmYWxzZSB3aGVuIGNodW5rcyBhcmUgbWlz c2luZyBpbnN0ZWFkIG9mCi0JICogcmFpc2luZyBhbiBlcnJvci4gIFJldHVybnMgdHJ1ZSBv biBzdWNjZXNzLgorCSAqIElmIHRoZSAnZmV0Y2hfdG9hc3Rfc2xpY2VfbWlzc2luZ19vaycg Z2xvYmFsIHZhcmlhYmxlIGlzIHRydWUgYW5kIHNvbWUKKwkgKiBjaHVua3MgYXJlIG1pc3Np bmcsIHRoZSBjYWxsYmFjayBzaG91bGQgc2V0IHRoZQorCSAqICdmZXRjaF90b2FzdF9zbGlj ZV93YXNfbWlzc2luZycgZmxhZyBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IKIAkgKi8K LQlib29sCQkoKnJlbGF0aW9uX2ZldGNoX3RvYXN0X3NsaWNlKSAoUmVsYXRpb24gdG9hc3Ry ZWwsIE9pZCB2YWx1ZWlkLAorCXZvaWQJCSgqcmVsYXRpb25fZmV0Y2hfdG9hc3Rfc2xpY2Up IChSZWxhdGlvbiB0b2FzdHJlbCwgT2lkIHZhbHVlaWQsCiAJCQkJCQkJCQkJCSAgIGludDMy IGF0dHJzaXplLAogCQkJCQkJCQkJCQkgICBpbnQzMiBzbGljZW9mZnNldCwKIAkJCQkJCQkJ CQkJICAgaW50MzIgc2xpY2VsZW5ndGgsCi0JCQkJCQkJCQkJCSAgIHZhcmxlbmEgKnJlc3Vs dCwKLQkJCQkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rKTsKKwkJCQkJCQkJCQkJICAgdmFy bGVuYSAqcmVzdWx0KTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTk1LDEw ICsxOTk4LDIwIEBAIHRhYmxlX3JlbGF0aW9uX2ZldGNoX3RvYXN0X3NsaWNlKFJlbGF0aW9u IHRvYXN0cmVsLCBPaWQgdmFsdWVpZCwKIAkJCQkJCQkJIGludDMyIHNsaWNlbGVuZ3RoLCB2 YXJsZW5hICpyZXN1bHQsCiAJCQkJCQkJCSBib29sIG1pc3Npbmdfb2spCiB7Ci0JcmV0dXJu IHRvYXN0cmVsLT5yZF90YWJsZWFtLT5yZWxhdGlvbl9mZXRjaF90b2FzdF9zbGljZSh0b2Fz dHJlbCwgdmFsdWVpZCwKLQkJCQkJCQkJCQkJCQkJCWF0dHJzaXplLAotCQkJCQkJCQkJCQkJ CQkJc2xpY2VvZmZzZXQsIHNsaWNlbGVuZ3RoLAotCQkJCQkJCQkJCQkJCQkJcmVzdWx0LCBt aXNzaW5nX29rKTsKKwlmZXRjaF90b2FzdF9zbGljZV9taXNzaW5nX29rID0gbWlzc2luZ19v azsKKwlmZXRjaF90b2FzdF9zbGljZV93YXNfbWlzc2luZyA9IGZhbHNlOworCXRvYXN0cmVs LT5yZF90YWJsZWFtLT5yZWxhdGlvbl9mZXRjaF90b2FzdF9zbGljZSh0b2FzdHJlbCwgdmFs dWVpZCwKKwkJCQkJCQkJCQkJCQkgYXR0cnNpemUsCisJCQkJCQkJCQkJCQkJIHNsaWNlb2Zm c2V0LCBzbGljZWxlbmd0aCwKKwkJCQkJCQkJCQkJCQkgcmVzdWx0KTsKKwlpZiAobWlzc2lu Z19vaykKKwl7CisJCS8qIHJlc2V0IHRoZSBmbGFnIGp1c3QgaW4gY2FzZSB0aGVyZSBhcmUg b3RoZXIgZGlyZWN0IGNhbGxlcnMgKi8KKwkJZmV0Y2hfdG9hc3Rfc2xpY2VfbWlzc2luZ19v ayA9IGZhbHNlOworCQlyZXR1cm4gZmV0Y2hfdG9hc3Rfc2xpY2Vfd2FzX21pc3Npbmc7CisJ fQorCWVsc2UKKwkJcmV0dXJuIHRydWU7CiB9CiAKIAotLSAKMi40Ny4zCgo= --------------Je1HeDyGjfH0zQVrjGBK5LZl--