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 1wgltQ-006OAW-1p for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 16:10:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgltP-001f1j-0s for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 16:09:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with utf8esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <44973863@qq.com>) id 1wgltO-001f1b-0u for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 16:09:58 +0000 Received: from out203-205-221-221.mail.qq.com ([203.205.221.221]) by magus.postgresql.org with utf8esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from <44973863@qq.com>) id 1wgltG-000000025Su-2HZ0 for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 16:09:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1783354178; bh=2TqhXjhT/BCn01F3C9khcWYFDbO1sjw86rzjz5Wp8n4=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=XQ970D8EcT7UaYIq3BYoVseMBhPfKdyowEIGOFcBG3aoVAV4alLu6BL96IWSc1P7R K+Lat9zszx7G5EUFWOR7ED1l50x2CjLqWsyC4N9G8uF7auLpIqoBr11w3+J03BCq3v ZpPIEbn9ML150lxzVWmqJ41eSmb4mN6rJ1EyhrTM= X-QQ-XMRINFO: MSVp+SPm3vtSOb6J9p5Yz6X7tHa+QH3V8Q== X-QQ-XMAILINFO: NDiTMgVNbn1g9c/JZHjKQEAonDf93tMiBUCvF1upAFmeQRmwVOq79NAiX7D9Sx DvRA2imEXHtwjiWE/0TrQZttRbReFzh3Mk+jvP1qPWzJj8nJcXZBHX2OySG68ggHCiU4QtyCsV++z 8FYM7krr0WWKv1sJl+m97cZeOzUSTllj7vcMPYyML42mNJfEe4/oPEOAUPQNbinvnOVS7xoTq6cW7 DFWgclQELea1YlrpVDZr3eULv7fb1Yg1LBIMzlGGk2dgTNCUIJjKic3JvbkBqAvYQdbrpDFDvSpoQ lvOtdUlbqDUb9Twz1c83jVAMe36YX16gt8Vsg9uH9jKYo7hL4E1q6tMvU/jF7ipItdihq1XeRscth iXi5qnIUKrSJ6RPyUON+Uq0Mn0yLO6rpEur+jeli9XILPnZ/4zaQ2qHSouNFIIrlZMpxuCBSyrpw3 xLxyFWjdIvwWTb/fS/fPZC9xJ6kawunQpQEOjpylb/sXJJle0O9EnWoHq4DrJ/xwcEPkyVdh5roQP 9L3gLL7/IzDBCP8CIUkt9yjFdarPNfcDgi+1yC3ehUSgWqcUXUyWtNk6gc/66JT+wa+VN1yAOLXze 6kb9AxgoHvih+d5pU38NLqCotv7kwrUO8lvYEN3zf+bCo4hdTO3A0XvujhwMOAAFUvkUGtk67uxLD JW1GEiVeteK59HTSROJwjocw4Pu/kHGFFBnZDefwFPt1eYelag8KWNu3LLZkfd5UA0qGmnmU7tXBt Rylp1KBoWjxzORBzxWeIX/jnDMs+BKTd2K01vO5maTseyDtfSNLkMdnE5TwsFidsfvZDTl2R9wq1x CBwSBv4gBn06rXNAre2Tyb4gsSn3w8M2mo/wW5EEPxZnzc40EN7pwEkJo6qqNrQ75uJTP66NhIW/C qGdQlIvdIp32aYJmM8vuD6jjlC4monw4iWohePvVj0KB/UJlzy3i94Eu0cd66Pe5wtY7uIbfPvhBt 1+xladr5TbdFzjaCx9ZjmTPzYvmCv166EkMHIskkkRauDp2ScHli9P4x/bBg3qDA+bpLrUHtgxB3q pBuzjxdAmGtZnWEZrLbKG0P45l5eKtsKiSB8yxFpYY0cnI0fbP6CHPaCBDyxjGyEJ+NfXjV3VlvEm Z/bgtXuPmbi55DMvchQyE1XTg7ogrkdT6OAr9lBrt3MfTQ== From: "=?utf-8?B?Wml6aHVhbkxpdSBYLU1BTg==?=" <44973863@qq.com> To: "=?utf-8?B?amlhbiBoZQ==?=" , "=?utf-8?B?UGV0ZXIgRWlzZW50cmF1dA==?=" , "=?utf-8?B?cGdzcWwtaGFja2Vycw==?=" Cc: "=?utf-8?B?Q29yZXkgSHVpbmtlcg==?=" , "=?utf-8?B?VG9tIExhbmU=?=" , "=?utf-8?B?Y2hlbmdwZW5nX3lhbg==?=" , "=?utf-8?B?Z3VvZmVuZ2xpbnV4?=" , "=?utf-8?B?5oiR6Ieq5bex55qE6YKu566x?=" <44973863@qq.com> Subject: Re: support create index on virtual generated column. Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_6A4BD340_E26CD6E0_550003BE" Content-Transfer-Encoding: 8Bit Date: Tue, 7 Jul 2026 00:09:36 +0800 X-Priority: 3 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <1178617.1753217685@sss.pgh.pa.us> In-Reply-To: X-QQ-mid: xmsezb43-0t1783354176ti4qjm6r2 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. ------=_NextPart_6A4BD340_E26CD6E0_550003BE Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Pk9yaWdpbmFsCj5Gcm9tOiBaaXpodWFuTGl1IFgtTUFOIDw0NDk3Mzg2M0BxcS5jb20+Cj5E YXRlOiAyMDI2LTA3LTA1IDExOjA0Cj5UbzogamlhbiBoZSA8amlhbi51bml2ZXJzYWxpdHlA Z21haWwuY29tPiwgUGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+LCBw Z3NxbC1oYWNrZXJzIDxwZ3NxbC1oYWNrZXJzQGxpc3RzLnBvc3RncmVzcWwub3JnPgo+Q2M6 IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPiwgVG9tIExhbmUgPHRn bEBzc3MucGdoLnBhLnVzPiwgY2hlbmdwZW5nX3lhbiA8Y2hlbmdwZW5nX3lhbkBvdXRsb29r LmNvbT4sIGd1b2ZlbmdsaW51eCA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4sIOaIkeiHquW3 seeahOmCrueusSA8NDQ5NzM4NjNAcXEuY29tPgo+U3ViamVjdDogUmU6IHN1cHBvcnQgY3Jl YXRlIGluZGV4IG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbi4KPgo+QmFzaWMgaW5kZXgg c2NhbnMgbm93IHdvcmssIGJ1dCB0aGVyZSBhcmUgc3RpbGwgbWlub3IgcGxhbm5lciBpbmNv bnNpc3RlbmNpZXMgdGhhdCBJIGFtIGRlYnVnZ2luZyBhbmQgcmVzb2x2aW5nLiAgCj54bWFu NT0jIFxkKyB0MQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50MSIKPiBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAg ICAgIHwgU3RvcmFnZSB8IENvbXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCj4tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQo+IGEgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKPiBzMSAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChh ICogMSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwg Cj4gczIgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVk IGFsd2F5cyBhcyAoYSAqIDIpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgICB8IAo+IHMzICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAzKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgfCAKPiBzNCAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogNCkgc3RvcmVkIHwg cGxhaW4gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCj4gdjEgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAq IDExKSAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IAo+ IHYyICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBh bHdheXMgYXMgKGEgKiAyMikgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgfCAKPiB2MyAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMzMpICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgCj4gdjQgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDQ0KSAgICAgICB8IHBs YWluICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IAo+SW5kZXhlczoKPiAgICAi aWR4X3QxX3MiIGJ0cmVlIChhLCBzMSwgYWJzKHMyKSkgSU5DTFVERSAoczMpIFdIRVJFIHM0 IDwgMTAwCj4gICAgImlkeF90MV92IiBidHJlZSAoYSwgdjEsIGFicyh2MikpIElOQ0xVREUg KHYzKSBXSEVSRSB2NCA8IDEwMAo+QWNjZXNzIG1ldGhvZDogaGVhcAo+Cj4KPgo+Rm9yZXhh bXBsZToKPnhtYW41PSMgZXhwbGFpbiBzZWxlY3QgIGEgZnJvbSB0MSB3aGVyZSBzNCA8IDEw MDsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gSW5kZXggT25s eSBTY2FuIHVzaW5nIGlkeF90MV9zIG9uIHQxICAoY29zdD0wLjEzLi44LjE0IHJvd3M9MSB3 aWR0aD00KQo+KDEgcm93KQo+Cj4KPgo+eG1hbjU9IyBleHBsYWluIHNlbGVjdCAgYSBmcm9t IHQxIHdoZXJlIHY0IDwgMTAwOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IEJpdG1hcCBIZWFwIFNjYW4gb24gdDEgIChjb3N0PTQuMTguLjEwLjQ4IHJv d3M9MTUzIHdpZHRoPTQpICAgICAgICAgLS0tLS0tLXN0aWxsIG5lZWQgaGVhcCBTY2FuIGFu ZCBSZWNoZWNrIENvbmQKPiAgIFJlY2hlY2sgQ29uZDogKChhICogNDQpIDwgMTAwKQo+ICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGlkeF90MV92ICAoY29zdD0wLjAwLi40LjE0IHJv d3M9MTUzIHdpZHRoPTApCj4oMyByb3dzKQoKCkhpLCAKCkkgYnVpbHQgZnVydGhlciBvcHRp bWl6YXRpb25zIGJhc2VkIG9uIHRoZSBWMiBwYXRjaCBhbmQgc3VwcGxlbWVudGVkIGxvZ2lj CmluIHRoZSBwbGFubmVyIHRvIGFsaWduIHRoZSBleGVjdXRpb24gcGxhbnMgb2YgaWR4X3Qx X3YgYW5kIGlkeF90MV9zLgoKSW4gY29zdF9pbmRleCgpLCBJIGFtIGNvbmZpZGVudCBhYm91 dCBzZXR0aW5nIHBhdGgtPnBhdGgucm93cyA9IGluZGV4LT50dXBsZXMgCndoZW4gaW5kZXgt PnByZWRPSyA9PSB0cnVlLiBIb3dldmVyLCBJ4oCZbSBub3QgZW50aXJlbHkgc3VyZSB3aGV0 aGVyIHdlIHNob3VsZAphbHNvIGFzc2lnbiBpbmRleC0+dHVwbGVzIHRvIGJhc2VyZWwtPnJv d3MuCgpCZXNpZGVzLCBJIGxlZnQgdGhlIGJyYW5jaCBndWFyZGVkIGJ5IGlmIChwYXRoLT5w YXRoLnBhcmFtX2luZm8pIHVudG91Y2hlZC4gClRoaXMgYXBwcm9hY2ggbGlrZWx5IGhhcyBm bGF3cywgYW5kIEnigJltIHVuc3VyZSBob3cgdG8gaGFuZGxlIGl0IHByb3Blcmx5LgoKSSB3 ZWxjb21lIGFsbCBmZWVkYmFjaywgZGlzY3Vzc2lvbnMgYW5kIGNvcnJlY3Rpb25zLgoKQXR0 YWNoZWQgYXJlIHRoZSBleGVjdXRpb24gcGxhbnMgZm9yIGlkeF90MV92IGFuZCBpZHhfdDFf c++8mgoKYGBgU1FMCnhtYW41PSMgZXhwbGFpbiBhbmFseXplIHNlbGVjdCBhIGZyb20gdDEg d2hlcmUgczQgPCAxMDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBCaXRtYXAgSGVhcCBTY2FuIG9u IHQxICAoY29zdD00LjE0Li43LjkyIHJvd3M9MiB3aWR0aD00KSAoYWN0dWFsIHRpbWU9MC4w NzQuLjAuMDc2IHJvd3M9Mi4wMCBsb29wcz0xKQogICBSZWNoZWNrIENvbmQ6IChzNCA8IDEw MCkKICAgSGVhcCBCbG9ja3M6IGV4YWN0PTEKICAgQnVmZmVyczogc2hhcmVkIGhpdD0yCiAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfdDFfcyAgKGNvc3Q9MC4wMC4uNC4xNCBy b3dzPTIgd2lkdGg9MCkgKGFjdHVhbCB0aW1lPTAuMDE5Li4wLjAxOSByb3dzPTIuMDAgbG9v cHM9MSkKICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKICAgICAgICAgQnVmZmVyczogc2hh cmVkIGhpdD0xCiBQbGFubmluZyBUaW1lOiAwLjQyMCBtcwogRXhlY3V0aW9uIFRpbWU6IDAu MTE4IG1zCig5IHJvd3MpCgp4bWFuNT0jIGV4cGxhaW4gYW5hbHl6ZSBzZWxlY3QgYSBmcm9t IHQxIHdoZXJlIHY0IDwgMTAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQml0bWFwIEhlYXAgU2Nh biBvbiB0MSAgKGNvc3Q9NC4xNC4uNy45MyByb3dzPTIgd2lkdGg9NCkgKGFjdHVhbCB0aW1l PTAuMDYxLi4wLjA2MyByb3dzPTIuMDAgbG9vcHM9MSkKICAgUmVjaGVjayBDb25kOiAoKGEg KiA0NCkgPCAxMDApCiAgIEhlYXAgQmxvY2tzOiBleGFjdD0xCiAgIEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9MgogICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gaWR4X3QxX3YgIChjb3N0PTAu MDAuLjQuMTQgcm93cz0yIHdpZHRoPTApIChhY3R1YWwgdGltZT0wLjAxOS4uMC4wMjAgcm93 cz0yLjAwIGxvb3BzPTEpCiAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxCiAgICAgICAgIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9MQogUGxhbm5pbmcgVGltZTogMC4zNjQgbXMKIEV4ZWN1dGlv biBUaW1lOiAwLjEyNiBtcwooOSByb3dzKQoKYGBgU1FMCgoKcmVnYXJkcywKLS0KWml6aHVh bkxpdcKgKFgtTUFOKcKgCjQ0OTczODYzQHFxLmNvbQ== ------=_NextPart_6A4BD340_E26CD6E0_550003BE Content-Type: application/octet-stream; charset="utf-8"; name="v3-0001-v2-enhance-index-support-for-virtual-generated-co.patch" Content-Disposition: attachment; filename="v3-0001-v2-enhance-index-support-for-virtual-generated-co.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZGNjMDUxZTQzMjQ5OWE2MDgyMjAwZDhiOTI4NzBlOGU0MWEyOTdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBaaXpodWFuIExpdSA8NDQ5NzM4NjNAcXEuY29tPgpE YXRlOiBNb24sIDYgSnVsIDIwMjYgMjM6MjM6MjYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz XSB2MiBlbmhhbmNlLWluZGV4LXN1cHBvcnQtZm9yLXZpcnR1YWwtZ2VuZXJhdGVkLWNvbHVt bnMKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8ICAy MCArKy0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgICAgICAgIHwgICA2 ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgIDYxICsr KysrKysrKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAxMCArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICB8ICA0MiArKystLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICB8ICAxMyArKy0K IHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgMTAgKy0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgfCAgIDkgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgICAgfCAgMTggKystLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICB8ICAgNiArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICB8ICAyMiArKystCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgIHwgIDIxICsrKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgfCAxMjYgKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDQg Kwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgfCAgIDQgKwogMTkgZmlsZXMg Y2hhbmdlZCwgMzExIGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhjYzI3Li4yMmUw NzYyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBA IC0xMTU5LDcgKzExNTksNyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJ Ym9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAlkb3VibGUJCXJlbHR1cGxlczsKLQlF eHByU3RhdGUgICpwcmVkaWNhdGU7CisJRXhwclN0YXRlICAqcHJlZGljYXRlRXhwYW5kOwog CVR1cGxlVGFibGVTbG90ICpzbG90OwogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJDb250 ZXh0ICplY29udGV4dDsKQEAgLTEyMDAsNyArMTIwMCw3IEBAIGhlYXBhbV9pbmRleF9idWls ZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OwogCiAJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJl ZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4 SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCXByZWRpY2F0ZUV4cGFuZCA9IEV4ZWNQ cmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZCwgZXN0YXRlKTsKIAog CS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEg bm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKQEAgLTE2MDcsOSArMTYwNyw5IEBAIGhlYXBh bV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICog SW4gYSBwYXJ0aWFsIGluZGV4LCBkaXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkg dGhlCiAJCSAqIHByZWRpY2F0ZS4KIAkJICovCi0JCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkK KwkJaWYgKHByZWRpY2F0ZUV4cGFuZCAhPSBOVUxMKQogCQl7Ci0JCQlpZiAoIUV4ZWNRdWFs KHByZWRpY2F0ZSwgZWNvbnRleHQpKQorCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGVFeHBh bmQsIGVjb250ZXh0KSkKIAkJCQljb250aW51ZTsKIAkJfQogCkBAIC0xNzA5LDcgKzE3MDks OSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBub3ctZ29u ZSBlc3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CisJ aW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4cGFuZFN0YXRlID0gTklMOwogCWluZGV4SW5m by0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCWluZGV4SW5mby0+aWlfUHJlZGljYXRl RXhwYW5kU3RhdGUgPSBOVUxMOwogCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KQEAgLTE3MjYs NyArMTcyOCw3IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAlIZWFwVHVwbGUJaGVhcFR1cGxlOwogCURhdHVtCQl2YWx1ZXNbSU5ERVhf TUFYX0tFWVNdOwogCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107Ci0JRXhwclN0YXRl ICAqcHJlZGljYXRlOworCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZUV4cGFuZDsKIAlUdXBsZVRh YmxlU2xvdCAqc2xvdDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlFeHByQ29udGV4dCAqZWNv bnRleHQ7CkBAIC0xNzU4LDcgKzE3NjAsNyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0g c2xvdDsKIAogCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYg YW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSwgZXN0YXRlKTsKKwlwcmVkaWNhdGVFeHBhbmQgPSBFeGVjUHJlcGFyZVF1YWwo aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmQsIGVzdGF0ZSk7CiAKIAkvKgogCSAqIFBy ZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1c3QgdGhv c2UgdHVwbGVzCkBAIC0xODk1LDkgKzE4OTcsOSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkgKiBJbiBhIHBhcnRpYWwgaW5kZXgs IGRpc2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0aXNmeSB0aGUKIAkJCSAqIHByZWRpY2F0 ZS4KIAkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQorCQkJaWYgKHByZWRpY2F0 ZUV4cGFuZCAhPSBOVUxMKQogCQkJewotCQkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlLCBl Y29udGV4dCkpCisJCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGVFeHBhbmQsIGVjb250ZXh0 KSkKIAkJCQkJY29udGludWU7CiAJCQl9CiAKQEAgLTE5NTIsNyArMTk1NCw5IEBAIGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCS8qIFRo ZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5vdy1nb25lIGVzdGF0ZSAqLwog CWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwlpbmRleEluZm8tPmlp X0V4cHJlc3Npb25zRXhwYW5kU3RhdGUgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNh dGVTdGF0ZSA9IE5VTEw7CisJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZSA9 IE5VTEw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9v dHN0cmFwLmMgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKaW5kZXggYjBk Y2Q5ODcuLjgwYmY0ZmM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9v dHN0cmFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCkBAIC0x MTU2LDExICsxMTU2LDE3IEBAIGluZGV4X3JlZ2lzdGVyKE9pZCBoZWFwLAogCS8qIGV4cHJl c3Npb25zIHdpbGwgbGlrZWx5IGJlIG51bGwsIGJ1dCBtYXkgYXMgd2VsbCBjb3B5IGl0ICov CiAJbmV3aW5kLT5pbF9pbmZvLT5paV9FeHByZXNzaW9ucyA9CiAJCWNvcHlPYmplY3QoaW5k ZXhJbmZvLT5paV9FeHByZXNzaW9ucyk7CisJbmV3aW5kLT5pbF9pbmZvLT5paV9FeHByZXNz aW9uc0V4cGFuZCA9CisJCWNvcHlPYmplY3QoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc0V4 cGFuZCk7CiAJbmV3aW5kLT5pbF9pbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwor CW5ld2luZC0+aWxfaW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmRTdGF0ZSA9IE5JTDsKIAkv KiBwcmVkaWNhdGUgd2lsbCBsaWtlbHkgYmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNvcHkg aXQgKi8KIAluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZSA9CiAJCWNvcHlPYmplY3Qo aW5kZXhJbmZvLT5paV9QcmVkaWNhdGUpOworCW5ld2luZC0+aWxfaW5mby0+aWlfUHJlZGlj YXRlRXhwYW5kID0KKwkJY29weU9iamVjdChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUV4cGFu ZCk7CiAJbmV3aW5kLT5pbF9pbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisJbmV3 aW5kLT5pbF9pbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZSA9IE5VTEw7CiAJLyogbm8g ZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGF0IGJvb3RzdHJhcCB0aW1lLCBzbyBubyBuZWVkIHRv IGNvcHkgKi8KIAlBc3NlcnQoaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMgPT0gTlVMTCk7 CiAJQXNzZXJ0KGluZGV4SW5mby0+aWlfRXhjbHVzaW9uUHJvY3MgPT0gTlVMTCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKaW5kZXggOTQwN2MzNTcuLmVlMjYwZmRlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCkBAIC0xNDAzLDYgKzE0MDMsMTAgQEAgaW5kZXhfY3JlYXRlX2NvcHkoUmVsYXRpb24g aGVhcFJlbGF0aW9uLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJY29uY3VycmVudGx5LAkvKiBj b25jdXJyZW50ICovCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCiAJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzKTsKKwluZXdJbmZv LT5paV9FeHByZXNzaW9uc0V4cGFuZCA9CisJCUV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1 bW5zKG5ld0luZm8tPmlpX0V4cHJlc3Npb25zRXhwYW5kLCBoZWFwUmVsYXRpb24sIEludmFs aWRPaWQpOworCW5ld0luZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZCA9CisJCUV4cGFuZFZpcnR1 YWxHZW5lcmF0ZWRDb2x1bW5zKG5ld0luZm8tPmlpX1ByZWRpY2F0ZUV4cGFuZCwgaGVhcFJl bGF0aW9uLCBJbnZhbGlkT2lkKTsKIAogCS8qIGZldGNoIGV4Y2x1c2lvbiBjb25zdHJhaW50 IGluZm8gaWYgYW55ICovCiAJaWYgKGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc2V4 Y2x1c2lvbikKQEAgLTI0NzEsNiArMjQ3NSw4IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9u IGluZGV4KQogCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1 bW1hcml6aW5nLAogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5k ZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKTsKKwlpaS0+aWlfRXhwcmVzc2lvbnNFeHBhbmQgPSAo TGlzdCAqKVJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9uc0V4cGFuZChpbmRleCk7CisJaWkt PmlpX1ByZWRpY2F0ZUV4cGFuZCA9IChMaXN0ICopUmVsYXRpb25HZXRJbmRleFByZWRpY2F0 ZUV4cGFuZChpbmRleCk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJ Zm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkrKykKQEAgLTI3NjAsMTAgKzI3NjYsMTIgQEAg Rm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgc2V0IHVwIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBzdGF0ZSAqLwogCQlpbmRl eEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPQogCQkJRXhlY1ByZXBhcmVFeHByTGlzdChp bmRleEluZm8tPmlpX0V4cHJlc3Npb25zLCBlc3RhdGUpOworCQlpbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zRXhwYW5kU3RhdGUgPQorCQkJRXhlY1ByZXBhcmVFeHByTGlzdChpbmRleElu Zm8tPmlpX0V4cHJlc3Npb25zRXhwYW5kLCBlc3RhdGUpOwogCQkvKiBDaGVjayBjYWxsZXIg aGFzIHNldCB1cCBjb250ZXh0IGNvcnJlY3RseSAqLwogCQlBc3NlcnQoR2V0UGVyVHVwbGVF eHByQ29udGV4dChlc3RhdGUpLT5lY3h0X3NjYW50dXBsZSA9PSBzbG90KTsKIAl9Ci0JaW5k ZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSk7 CisJaW5kZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNF eHBhbmRTdGF0ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEF0dHJzOyBpKyspCiAJewpAQCAtMjc3NSwxMSArMjc4Myw0MCBAQCBGb3JtSW5kZXhEYXR1 bShJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWlEYXR1bSA9IHNsb3RfZ2V0c3lzYXR0cihz bG90LCBrZXljb2wsICZpc051bGwpOwogCQllbHNlIGlmIChrZXljb2wgIT0gMCkKIAkJewot CQkJLyoKLQkJCSAqIFBsYWluIGluZGV4IGNvbHVtbjsgZ2V0IHRoZSB2YWx1ZSB3ZSBuZWVk IGRpcmVjdGx5IGZyb20gdGhlCi0JCQkgKiBoZWFwIHR1cGxlLgotCQkJICovCi0JCQlpRGF0 dW0gPSBzbG90X2dldGF0dHIoc2xvdCwga2V5Y29sLCAmaXNOdWxsKTsKKwkJCVR1cGxlRGVz YwkJCXR1cGRlc2MgPSBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yOworCQkJRm9ybV9wZ19h dHRyaWJ1dGUgCWF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywga2V5Y29sIC0gMSk7CisK KwkJCWlmIChhdHQtPmF0dGdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRV QUwpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBQbGFpbiBpbmRleCBjb2x1bW47IGdldCB0aGUg dmFsdWUgd2UgbmVlZCBkaXJlY3RseSBmcm9tIHRoZQorCQkJCSAqIGhlYXAgdHVwbGUuCisJ CQkJKi8KKwkJCQlpRGF0dW0gPSBzbG90X2dldGF0dHIoc2xvdCwga2V5Y29sLCAmaXNOdWxs KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlUdXBsZUNvbnN0ciAJKmNvbnN0ciA9IHR1 cGRlc2MtPmNvbnN0cjsKKworCQkJCWZvciAoaW50IGogPSAwOyBqIDwgY29uc3RyLT5udW1f ZGVmdmFsOyBqKyspCisJCQkJeworCQkJCQlBdHRyRGVmYXVsdCAJKmRlZnZhbDsKKwkJCQkJ RXhwcgkgICAJCSpleHByID0gTlVMTDsKKwkJCQkJRXhwclN0YXRlICAJCSpleHByc3RhdGU7 CisKKwkJCQkJZGVmdmFsID0gJmNvbnN0ci0+ZGVmdmFsW2pdOworCQkJCQlpZiAoZGVmdmFs LT5hZG51bSA9PSBrZXljb2wpCisJCQkJCXsKKwkJCQkJCWV4cHIgPSBzdHJpbmdUb05vZGUo ZGVmdmFsLT5hZGJpbik7CisJCQkJCQlleHByc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoZXhw ciwgZXN0YXRlKTsKKwkJCQkJCWlEYXR1bSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQo ZXhwcnN0YXRlLAorCQkJCQkJCQkJCQkJCQkgICBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVz dGF0ZSksCisJCQkJCQkJCQkJCQkJCSAgICZpc051bGwpOworCQkJCQkJYnJlYWs7CisJCQkJ CX0KKwkJCQkJQXNzZXJ0KGogKyAxIDwgY29uc3RyLT5udW1fZGVmdmFsKTsKKwkJCQl9CisJ CQl9CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0yNzkxLDcgKzI4MjgsNyBAQCBGb3JtSW5kZXhE YXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWlEYXR1bSA9IEV4ZWNFdmFsRXhwclN3 aXRjaENvbnRleHQoKEV4cHJTdGF0ZSAqKSBsZmlyc3QoaW5kZXhwcl9pdGVtKSwKIAkJCQkJ CQkJCQkJICAgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLAogCQkJCQkJCQkJCQkg ICAmaXNOdWxsKTsKLQkJCWluZGV4cHJfaXRlbSA9IGxuZXh0KGluZGV4SW5mby0+aWlfRXhw cmVzc2lvbnNTdGF0ZSwgaW5kZXhwcl9pdGVtKTsKKwkJCWluZGV4cHJfaXRlbSA9IGxuZXh0 KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmRTdGF0ZSwgaW5kZXhwcl9pdGVtKTsK IAkJfQogCQl2YWx1ZXNbaV0gPSBpRGF0dW07CiAJCWlzbnVsbFtpXSA9IGlzTnVsbDsKQEAg LTMyMjAsNyArMzI1Nyw3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01B WF9LRVlTXTsKIAlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwotCUV4cHJTdGF0ZSAg KnByZWRpY2F0ZTsKKwlFeHByU3RhdGUgICpwcmVkaWNhdGVFeHBhbmQ7CiAJVHVwbGVUYWJs ZVNsb3QgKnNsb3Q7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJRXhwckNvbnRleHQgKmVjb250 ZXh0OwpAQCAtMzI0Niw3ICszMjgzLDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAog CS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwot CXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwg ZXN0YXRlKTsKKwlwcmVkaWNhdGVFeHBhbmQgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVFeHBhbmQsIGVzdGF0ZSk7CiAKIAkvKgogCSAqIFNjYW4gYWxsIGxp dmUgdHVwbGVzIGluIHRoZSBiYXNlIHJlbGF0aW9uLgpAQCAtMzI2Niw5ICszMzAzLDkgQEAg SW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCS8qCiAJCSAq IEluIGEgcGFydGlhbCBpbmRleCwgaWdub3JlIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkg dGhlIHByZWRpY2F0ZS4KIAkJICovCi0JCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkKKwkJaWYg KHByZWRpY2F0ZUV4cGFuZCAhPSBOVUxMKQogCQl7Ci0JCQlpZiAoIUV4ZWNRdWFsKHByZWRp Y2F0ZSwgZWNvbnRleHQpKQorCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGVFeHBhbmQsIGVj b250ZXh0KSkKIAkJCQljb250aW51ZTsKIAkJfQogCkBAIC0zMzAxLDcgKzMzMzgsOSBAQCBJ bmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCS8qIFRoZXNl IG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5vdy1nb25lIGVzdGF0ZSAqLwogCWlu ZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwlpbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zRXhwYW5kU3RhdGUgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVT dGF0ZSA9IE5VTEw7CisJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZSA9IE5V TEw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5n LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKaW5kZXggZmQ3ZDJlYzAuLmQy N2FhYTA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCkBAIC0xMzMsNyArMTMzLDkgQEAg Q2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBIZWFwVHVw bGUgaGVhcFR1cGxlLAogCQkgKiBzdXBwb3J0ZWQsIG5vciBleGNsdXNpb24gY29uc3RyYWlu dHMsIG5vciBkZWZlcnJlZCB1bmlxdWVuZXNzCiAJCSAqLwogCQlBc3NlcnQoaW5kZXhJbmZv LT5paV9FeHByZXNzaW9ucyA9PSBOSUwpOworCQlBc3NlcnQoaW5kZXhJbmZvLT5paV9FeHBy ZXNzaW9uc0V4cGFuZCA9PSBOSUwpOwogCQlBc3NlcnQoaW5kZXhJbmZvLT5paV9QcmVkaWNh dGUgPT0gTklMKTsKKwkJQXNzZXJ0KGluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kID09 IE5JTCk7CiAJCUFzc2VydChpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9PSBOVUxMKTsK IAkJQXNzZXJ0KGluZGV4LT5yZF9pbmRleC0+aW5kaW1tZWRpYXRlKTsKIAkJQXNzZXJ0KGlu ZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRycyAhPSAwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3Rp bmcuYwppbmRleCA0YWE1MmE0Yi4uZGFlYmZkYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMKQEAgLTI5OCw5ICsyOTgsMTMgQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJlbGF0aW9uIHJl bCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRleEluZm8tPmlpX0lu ZGV4QXR0ck51bWJlcnNbMF0gPSAxOwogCWluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVy c1sxXSA9IDI7CiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9IE5JTDsKKwlpbmRleElu Zm8tPmlpX0V4cHJlc3Npb25zRXhwYW5kID0gTklMOwogCWluZGV4SW5mby0+aWlfRXhwcmVz c2lvbnNTdGF0ZSA9IE5JTDsKKwlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zRXhwYW5kU3Rh dGUgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPSBOSUw7CisJaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVFeHBhbmQgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVT dGF0ZSA9IE5VTEw7CisJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZSA9IE5V TEw7CiAJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMgPSBOVUxMOwogCWluZGV4SW5mby0+ aWlfRXhjbHVzaW9uUHJvY3MgPSBOVUxMOwogCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3Ry YXRzID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBmNjZlODBiNy4uZmM2 N2MyNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTg5OSw3ICs4OTksNyBAQCBj b21wdXRlX2luZGV4X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywK IAkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJCUVTdGF0ZQkgICAqZXN0YXRlOwogCQlFeHBy Q29udGV4dCAqZWNvbnRleHQ7Ci0JCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZTsKKwkJRXhwclN0 YXRlICAqcHJlZGljYXRlRXhwYW5kOwogCQlEYXR1bQkgICAqZXhwcnZhbHM7CiAJCWJvb2wJ ICAgKmV4cHJudWxsczsKIAkJaW50CQkJbnVtaW5kZXhyb3dzLApAQCAtOTA4LDcgKzkwOCw3 IEBAIGNvbXB1dGVfaW5kZXhfc3RhdHMoUmVsYXRpb24gb25lcmVsLCBkb3VibGUgdG90YWxy b3dzLAogCQlkb3VibGUJCXRvdGFsaW5kZXhyb3dzOwogCiAJCS8qIElnbm9yZSBpbmRleCBp ZiBubyBjb2x1bW5zIHRvIGFuYWx5emUgYW5kIG5vdCBwYXJ0aWFsICovCi0JCWlmIChhdHRy X2NudCA9PSAwICYmIGluZGV4SW5mby0+aWlfUHJlZGljYXRlID09IE5JTCkKKwkJaWYgKGF0 dHJfY250ID09IDAgJiYgaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmQgPT0gTklMKQog CQkJY29udGludWU7CiAKIAkJLyoKQEAgLTkyNiw3ICs5MjYsNyBAQCBjb21wdXRlX2luZGV4 X3N0YXRzKFJlbGF0aW9uIG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywKIAkJZWNvbnRleHQt PmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAogCQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRl IGZvciBwcmVkaWNhdGUuICovCi0JCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRl eEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkJcHJlZGljYXRlRXhwYW5kID0gRXhl Y1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kLCBlc3RhdGUpOwog CiAJCS8qIENvbXB1dGUgYW5kIHNhdmUgaW5kZXggZXhwcmVzc2lvbiB2YWx1ZXMgKi8KIAkJ ZXhwcnZhbHMgPSAoRGF0dW0gKikgcGFsbG9jKG51bXJvd3MgKiBhdHRyX2NudCAqIHNpemVv ZihEYXR1bSkpOwpAQCAtOTQ5LDkgKzk0OSw5IEBAIGNvbXB1dGVfaW5kZXhfc3RhdHMoUmVs YXRpb24gb25lcmVsLCBkb3VibGUgdG90YWxyb3dzLAogCQkJRXhlY1N0b3JlSGVhcFR1cGxl KGhlYXBUdXBsZSwgc2xvdCwgZmFsc2UpOwogCiAJCQkvKiBJZiBpbmRleCBpcyBwYXJ0aWFs LCBjaGVjayBwcmVkaWNhdGUgKi8KLQkJCWlmIChwcmVkaWNhdGUgIT0gTlVMTCkKKwkJCWlm IChwcmVkaWNhdGVFeHBhbmQgIT0gTlVMTCkKIAkJCXsKLQkJCQlpZiAoIUV4ZWNRdWFsKHBy ZWRpY2F0ZSwgZWNvbnRleHQpKQorCQkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlRXhwYW5k LCBlY29udGV4dCkpCiAJCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJbnVtaW5kZXhyb3dzKys7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDlhYjc0YzhkLi44YTYzZWZjOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTkzMiw2ICs5MzIsOCBAQCBEZWZp bmVJbmRleChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJ CQkJCSAgYW1pc3N1bW1hcml6aW5nLAogCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3Zlcmxh cHMpOworCWluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kID0KKwkJRXhwYW5kVmlydHVh bEdlbmVyYXRlZENvbHVtbnMoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmQsIHJlbCwg SW52YWxpZE9pZCk7CiAKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZB dHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJP ZkF0dHJpYnV0ZXMpOwpAQCAtOTQ4LDYgKzk1MCw4IEBAIERlZmluZUluZGV4KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJICByb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2Nv bnRleHQsCiAJCQkJCSAgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCisJaW5kZXhJbmZvLT5p aV9FeHByZXNzaW9uc0V4cGFuZCA9CisJCUV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1bW5z KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNFeHBhbmQsIHJlbCwgSW52YWxpZE9pZCk7CiAJ LyoKIAkgKiBFeHRyYSBjaGVja3Mgd2hlbiBjcmVhdGluZyBhIFBSSU1BUlkgS0VZIGluZGV4 LgogCSAqLwpAQCAtMTExMCw3ICsxMTE0LDcgQEAgRGVmaW5lSW5kZXgoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCSAqIFdlIGRpc2FsbG93IGluZGV4ZXMgb24gc3lzdGVtIGNvbHVtbnMuICBU aGV5IHdvdWxkIG5vdCBuZWNlc3NhcmlseSBnZXQKIAkgKiB1cGRhdGVkIGNvcnJlY3RseSwg YW5kIHRoZXkgZG9uJ3Qgc2VlbSB1c2VmdWwgYW55d2F5LgogCSAqCi0JICogQWxzbyBkaXNh bGxvdyB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGluIGluZGV4ZXMgKHVzZSBleHByZXNz aW9uCisJICogQWlzYWxsb3cgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpbiBpbmRleGVz IChpbmNsdWRlIHVzaW5nIGV4cHJlc3Npb24KIAkgKiBpbmRleCBpbnN0ZWFkKS4KIAkgKi8K IAlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsr KQpAQCAtMTEyMyw3ICsxMTI3LDcgQEAgRGVmaW5lSW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCQkgZXJybXNnKCJpbmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBu b3Qgc3VwcG9ydGVkIikpKTsKIAogCi0JCWlmIChhdHRubyA+IDAgJiYKKwkJLyppZiAoYXR0 bm8gPiAwICYmIGkgPCBudW1iZXJPZktleUF0dHJpYnV0ZXMgJiYKIAkJCVR1cGxlRGVzY0F0 dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBhdHRubyAtIDEpLT5hdHRnZW5lcmF0ZWQgPT0g QVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC0xMTMxLDE3ICsx MTM1LDE1IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJZXJybXNn KCJwcmltYXJ5IGtleXMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHN1 cHBvcnRlZCIpIDoKIAkJCQkJc3RtdC0+aXNjb25zdHJhaW50ID8KIAkJCQkJZXJybXNnKCJ1 bmlxdWUgY29uc3RyYWludHMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90 IHN1cHBvcnRlZCIpIDoKLQkJCQkJZXJybXNnKCJpbmRleGVzIG9uIHZpcnR1YWwgZ2VuZXJh dGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSk7CisJCQkJCWVycm1zZygiaW5kZXhl cyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9ydGVkIikpOyov CiAJfQogCiAJLyoKLQkgKiBBbHNvIGNoZWNrIGZvciBzeXN0ZW0gYW5kIGdlbmVyYXRlZCBj b2x1bW5zIHVzZWQgaW4gZXhwcmVzc2lvbnMgb3IKLQkgKiBwcmVkaWNhdGVzLgorCSAqIEFs c28gY2hlY2sgZm9yIHN5c3RlbSBjb2x1bW5zIHVzZWQgaW4gZXhwcmVzc2lvbnMgb3IgcHJl ZGljYXRlcy4KIAkgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyB8fCBpbmRl eEluZm8tPmlpX1ByZWRpY2F0ZSkKIAl7CiAJCUJpdG1hcHNldCAgKmluZGV4YXR0cnMgPSBO VUxMOwotCQlpbnQJCQlqOwogCiAJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGluZGV4SW5m by0+aWlfRXhwcmVzc2lvbnMsIDEsICZpbmRleGF0dHJzKTsKIAkJcHVsbF92YXJhdHRub3Mo KE5vZGUgKikgaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIDEsICZpbmRleGF0dHJzKTsKQEAg LTExNTQsMjUgKzExNTYsNiBAQCBEZWZpbmVJbmRleChQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkg ZXJybXNnKCJpbmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBub3Qgc3VwcG9y dGVkIikpKTsKIAkJfQotCi0JCS8qCi0JCSAqIFhYWCBWaXJ0dWFsIGdlbmVyYXRlZCBjb2x1 bW5zIGluIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMKLQkJICogY291bGQgYmUg c3VwcG9ydGVkLCBidXQgaXQgbmVlZHMgc3VwcG9ydCBpbgotCQkgKiBSZWxhdGlvbkdldElu ZGV4RXhwcmVzc2lvbnMoKSBhbmQgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZSgpLgotCQkg Ki8KLQkJaiA9IC0xOwotCQl3aGlsZSAoKGogPSBibXNfbmV4dF9tZW1iZXIoaW5kZXhhdHRy cywgaikpID49IDApCi0JCXsKLQkJCUF0dHJOdW1iZXIJYXR0bm8gPSBqICsgRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKLQotCQkJaWYgKGF0dG5vID4gMCAmJgotCQkJ CVR1cGxlRGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBhdHRubyAtIDEpLT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQotCQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks Ci0JCQkJCQkgc3RtdC0+aXNjb25zdHJhaW50ID8KLQkJCQkJCSBlcnJtc2coInVuaXF1ZSBj b25zdHJhaW50cyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9y dGVkIikgOgotCQkJCQkJIGVycm1zZygiaW5kZXhlcyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBj b2x1bW5zIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKLQkJfQogCX0KIAogCS8qIElzIGluZGV4 IHNhZmUgZm9yIG90aGVycyB0byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSAqLwpAQCAtMTg3Niw2ICsxODU5LDExIEBAIENoZWNrUHJlZGljYXRlKEV4cHIgKnBy ZWRpY2F0ZSkKICAqIElmIHRoZSBjYWxsZXIgc3dpdGNoZWQgdG8gdGhlIHRhYmxlIG93bmVy LCBkZGxfdXNlcmlkIGlzIHRoZSByb2xlIGZvciBBQ0wKICAqIGNoZWNrcyByZWFjaGVkIHdp dGhvdXQgdHJhdmVyc2luZyBvcGFxdWUgZXhwcmVzc2lvbnMuICBPdGhlcndpc2UsIGl0J3MK ICAqIEludmFsaWRPaWQsIGFuZCBvdGhlciBkZGxfKiBhcmd1bWVudHMgYXJlIHVuZGVmaW5l ZC4KKyAqCisgKiBVcG9uIHJldHVybmluZyBmcm9tIHRoaXMgZnVuY3Rpb24sIGNhbGxlcnMg bXVzdCBhcHBseQorICogRXhwYW5kVmlydHVhbEdlbmVyYXRlZENvbHVtbnMoKSB0byBpaV9F eHByZXNzaW9uc0V4cGFuZAorICogd2hlbiBuZWNlc3NhcnkgZm9yIGFjdHVhbCBleHBhbnNp b24gaWYgaWlfRXhwcmVzc2lvbnNFeHBhbmQKKyAqIGlzIG5vdCBOSUwgb3IgZHVtbXkuCiAg Ki8KIHN0YXRpYyB2b2lkCiBDb21wdXRlSW5kZXhBdHRycyhQYXJzZVN0YXRlICpwc3RhdGUs CkBAIC0yMjc0LDYgKzIyNjIsMTAgQEAgQ29tcHV0ZUluZGV4QXR0cnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCiAJCWF0dG4rKzsKIAl9CisKKwlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25z RXhwYW5kID0KKwkJRXhwYW5kVmlydHVhbEdlbmVyYXRlZENvbHVtbnMoY29weU9iamVjdChp bmRleEluZm8tPmlpX0V4cHJlc3Npb25zKSwKKwkJCQkJCQkJCQkJICBOVUxMLCByZWxJZCk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGViMzgz ODEyLi5iNDdkYWFmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAg LTM4MCwyMCArMzgwLDI0IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQlpZiAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklM KQogCQl7CiAJCQlFeHByU3RhdGUgICpwcmVkaWNhdGU7CisJCQlFeHByU3RhdGUgICpwcmVk aWNhdGVFeHBhbmQ7CiAKIAkJCS8qCiAJCQkgKiBJZiBwcmVkaWNhdGUgc3RhdGUgbm90IHNl dCB1cCB5ZXQsIGNyZWF0ZSBpdCAoaW4gdGhlIGVzdGF0ZSdzCiAJCQkgKiBwZXItcXVlcnkg Y29udGV4dCkKIAkJCSAqLwogCQkJcHJlZGljYXRlID0gaW5kZXhJbmZvLT5paV9QcmVkaWNh dGVTdGF0ZTsKKwkJCXByZWRpY2F0ZUV4cGFuZCA9IGluZGV4SW5mby0+aWlfUHJlZGljYXRl RXhwYW5kU3RhdGU7CiAJCQlpZiAocHJlZGljYXRlID09IE5VTEwpCiAJCQl7CiAJCQkJcHJl ZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3Rh dGUpOworCQkJCXByZWRpY2F0ZUV4cGFuZCA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZUV4cGFuZCwgZXN0YXRlKTsKIAkJCQlpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZVN0YXRlID0gcHJlZGljYXRlOworCQkJCWluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhw YW5kU3RhdGUgPSBwcmVkaWNhdGVFeHBhbmQ7CiAJCQl9CiAKIAkJCS8qIFNraXAgdGhpcyBp bmRleC11cGRhdGUgaWYgdGhlIHByZWRpY2F0ZSBpc24ndCBzYXRpc2ZpZWQgKi8KLQkJCWlm ICghRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCisJCQlpZiAoIUV4ZWNRdWFsKHBy ZWRpY2F0ZUV4cGFuZCwgZWNvbnRleHQpKQogCQkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTYx NiwyMCArNjIwLDI0IEBAIEV4ZWNDaGVja0luZGV4Q29uc3RyYWludHMoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCWlmIChpbmRleElu Zm8tPmlpX1ByZWRpY2F0ZSAhPSBOSUwpCiAJCXsKIAkJCUV4cHJTdGF0ZSAgKnByZWRpY2F0 ZTsKKwkJCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZUV4cGFuZDsKIAogCQkJLyoKIAkJCSAqIElm IHByZWRpY2F0ZSBzdGF0ZSBub3Qgc2V0IHVwIHlldCwgY3JlYXRlIGl0IChpbiB0aGUgZXN0 YXRlJ3MKIAkJCSAqIHBlci1xdWVyeSBjb250ZXh0KQogCQkJICovCiAJCQlwcmVkaWNhdGUg PSBpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlOworCQkJcHJlZGljYXRlRXhwYW5kID0g aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZTsKIAkJCWlmIChwcmVkaWNhdGUg PT0gTlVMTCkKIAkJCXsKIAkJCQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJ bmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJCQkJcHJlZGljYXRlRXhwYW5kID0gRXhl Y1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlRXhwYW5kLCBlc3RhdGUpOwog CQkJCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBwcmVkaWNhdGU7CisJCQkJaW5k ZXhJbmZvLT5paV9QcmVkaWNhdGVFeHBhbmRTdGF0ZSA9IHByZWRpY2F0ZUV4cGFuZDsKIAkJ CX0KIAogCQkJLyogU2tpcCB0aGlzIGluZGV4LXVwZGF0ZSBpZiB0aGUgcHJlZGljYXRlIGlz bid0IHNhdGlzZmllZCAqLwotCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0 KSkKKwkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlRXhwYW5kLCBlY29udGV4dCkpCiAJCQkJ Y29udGludWU7CiAJCX0KIApAQCAtMTEwMiw2ICsxMTEwLDcgQEAgaW5kZXhfdW5jaGFuZ2Vk X2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0 ZSwKIAkgKiBwYXNzIGhpbnQuCiAJICovCiAJaWR4RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4 RXhwcmVzc2lvbnMoaW5kZXhSZWxhdGlvbik7CisJaWR4RXhwcnMgPSBsaXN0X2NvbmNhdChp ZHhFeHBycywgUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zRXhwYW5kKGluZGV4UmVsYXRp b24pKTsKIAloYXNleHByZXNzaW9uID0gaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtl cigoTm9kZSAqKSBpZHhFeHBycywKIAkJCQkJCQkJCQkJCQlhbGxVcGRhdGVkQ29scyk7CiAJ bGlzdF9mcmVlKGlkeEV4cHJzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggNDBiMDk5 NTguLjk0Njg5MWI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODI4LDcgKzgyOCwx MSBAQCBtYWtlX2FuZHNfaW1wbGljaXQoRXhwciAqY2xhdXNlKQogCiAvKgogICogbWFrZUlu ZGV4SW5mbwotICoJICBjcmVhdGUgYW4gSW5kZXhJbmZvIG5vZGUKKyAqCSAgY3JlYXRlIGFu IEluZGV4SW5mbyBub2RlLiAgVXBvbiByZXR1cm5pbmcgZnJvbSB0aGlzIGZ1bmN0aW9uLAor ICogY2FsbGVycyBtdXN0IGFwcGx5IEV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1bW5zKCkg CisgKiBvciBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnNFeHBhbmQgb3IgUmVsYXRpb25H ZXRJbmRleFByZWRpY2F0ZUV4cGFuZCgpIHRvCisgKiBpaV9FeHByZXNzaW9uc0V4cGFuZCBh bmQgaWlfUHJlZGljYXRlRXhwYW5kIGFzIG5lZWRlZCBmb3IgYWN0dWFsCisgKiBleHBhbnNp b24gd2hlbiB0aGV5IGFyZSBub3QgTklMIG9yIGR1bW15LgogICovCiBJbmRleEluZm8gKgog bWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lk LCBMaXN0ICpleHByZXNzaW9ucywKQEAgLTg1NiwxMSArODYwLDE1IEBAIG1ha2VJbmRleElu Zm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhw cmVzc2lvbnMsCiAKIAkvKiBleHByZXNzaW9ucyAqLwogCW4tPmlpX0V4cHJlc3Npb25zID0g ZXhwcmVzc2lvbnM7CisJbi0+aWlfRXhwcmVzc2lvbnNFeHBhbmQgPSBjb3B5T2JqZWN0KGV4 cHJlc3Npb25zKTsKIAluLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCW4tPmlpX0V4 cHJlc3Npb25zRXhwYW5kU3RhdGUgPSBOSUw7CiAKIAkvKiBwcmVkaWNhdGVzICAqLwogCW4t PmlpX1ByZWRpY2F0ZSA9IHByZWRpY2F0ZXM7CisJbi0+aWlfUHJlZGljYXRlRXhwYW5kID0g Y29weU9iamVjdChwcmVkaWNhdGVzKTsKIAluLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7 CisJbi0+aWlfUHJlZGljYXRlRXhwYW5kU3RhdGUgPSBOVUxMOwogCiAJLyogZXhjbHVzaW9u IGNvbnN0cmFpbnRzICovCiAJbi0+aWlfRXhjbHVzaW9uT3BzID0gTlVMTDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDFjNTc1ZTU2Li4zNGZjMTQ3YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC01OTQsNyArNTk0 LDE0IEBAIGNvc3RfaW5kZXgoSW5kZXhQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwg ZG91YmxlIGxvb3BfY291bnQsCiAJfQogCWVsc2UKIAl7Ci0JCXBhdGgtPnBhdGgucm93cyA9 IGJhc2VyZWwtPnJvd3M7CisJCS8qCisJCSAqIElmIGluZGV4LT5wcmVkT0sgaG9sZHMgdHJ1 ZSwgbmVpdGhlciB0aGUgYmFzZXJlbCdzIGVzdGltYXRlZCBvdXRwdXQgdHVwbGVzCisJCSAq IG5vciB0aGlzIGluZGV4IHBhdGgncyBlc3RpbWF0ZWQgb3V0cHV0IHR1cGxlcyBjYW4gZXhj ZWVkIHRoZSBpbmRleCdzIHRvdGFsIHR1cGxlcy4KKwkJKi8KKwkJaWYgKCFpbmRleC0+cHJl ZE9LKQorCQkJcGF0aC0+cGF0aC5yb3dzID0gYmFzZXJlbC0+cm93czsKKwkJZWxzZQorCQkJ cGF0aC0+cGF0aC5yb3dzID0gYmFzZXJlbC0+cm93cyA9IGluZGV4LT50dXBsZXM7CiAJCS8q IHFwcXVhbHMgY29tZSBmcm9tIGp1c3QgdGhlIHJlbCdzIHJlc3RyaWN0aW9uIGNsYXVzZXMg Ki8KIAkJcXBxdWFscyA9IGV4dHJhY3Rfbm9uaW5kZXhfY29uZGl0aW9ucyhwYXRoLT5pbmRl eGluZm8tPmluZHJlc3RyaWN0aW5mbywKIAkJCQkJCQkJCQkJICBwYXRoLT5pbmRleGNsYXVz ZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKaW5kZXggM2Y1ZDRm YTMuLmI3MTZlZTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMK QEAgLTExMTksNyArMTExOSw3IEBAIGJ1aWxkX3BhdGhzX2Zvcl9PUihQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkgKiBqdXN0IHNjYW5uaW5nIHRoZSBwcmVkT0sg aW5kZXggYWxvbmUsIG5vIE9SLikKIAkJICovCiAJCXVzZWZ1bF9wcmVkaWNhdGUgPSBmYWxz ZTsKLQkJaWYgKGluZGV4LT5pbmRwcmVkICE9IE5JTCkKKwkJaWYgKGluZGV4LT5pbmRwcmVk RXhwYW5kICE9IE5JTCkKIAkJewogCQkJaWYgKGluZGV4LT5wcmVkT0spCiAJCQl7CkBAIC0x MTMxLDEwICsxMTMxLDEwIEBAIGJ1aWxkX3BhdGhzX2Zvcl9PUihQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCWlmIChhbGxfY2xhdXNlcyA9PSBOSUwpCiAJCQkJ CWFsbF9jbGF1c2VzID0gbGlzdF9jb25jYXRfY29weShjbGF1c2VzLCBvdGhlcl9jbGF1c2Vz KTsKIAotCQkJCWlmICghcHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIGFs bF9jbGF1c2VzLCBmYWxzZSkpCisJCQkJaWYgKCFwcmVkaWNhdGVfaW1wbGllZF9ieShpbmRl eC0+aW5kcHJlZEV4cGFuZCwgYWxsX2NsYXVzZXMsIGZhbHNlKSkKIAkJCQkJY29udGludWU7 CS8qIGNhbid0IHVzZSBpdCBhdCBhbGwgKi8KIAotCQkJCWlmICghcHJlZGljYXRlX2ltcGxp ZWRfYnkoaW5kZXgtPmluZHByZWQsIG90aGVyX2NsYXVzZXMsIGZhbHNlKSkKKwkJCQlpZiAo IXByZWRpY2F0ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkRXhwYW5kLCBvdGhlcl9jbGF1 c2VzLCBmYWxzZSkpCiAJCQkJCXVzZWZ1bF9wcmVkaWNhdGUgPSB0cnVlOwogCQkJfQogCQl9 CkBAIC0yMTgzLDcgKzIxODMsNyBAQCBmaW5kX2luZGV4cGF0aF9xdWFscyhQYXRoICpiaXRt YXBxdWFsLCBMaXN0ICoqcXVhbHMsIExpc3QgKipwcmVkcykKIAogCQkJKnF1YWxzID0gbGFw cGVuZCgqcXVhbHMsIGljbGF1c2UtPnJpbmZvLT5jbGF1c2UpOwogCQl9Ci0JCSpwcmVkcyA9 IGxpc3RfY29uY2F0KCpwcmVkcywgaXBhdGgtPmluZGV4aW5mby0+aW5kcHJlZCk7CisJCSpw cmVkcyA9IGxpc3RfY29uY2F0KCpwcmVkcywgaXBhdGgtPmluZGV4aW5mby0+aW5kcHJlZEV4 cGFuZCk7CiAJfQogCWVsc2UKIAkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5 cGU6ICVkIiwgbm9kZVRhZyhiaXRtYXBxdWFsKSk7CkBAIC00MDM4LDExICs0MDM4LDExIEBA IGNoZWNrX2luZGV4X3ByZWRpY2F0ZXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCkKIAkJSW5kZXhPcHRJbmZvICppbmRleCA9IChJbmRleE9wdEluZm8gKikgbGZpcnN0 KGxjKTsKIAkJTGlzdENlbGwgICAqbGNyOwogCi0JCWlmIChpbmRleC0+aW5kcHJlZCA9PSBO SUwpCisJCWlmIChpbmRleC0+aW5kcHJlZEV4cGFuZCA9PSBOSUwpCiAJCQljb250aW51ZTsJ CQkvKiBpZ25vcmUgbm9uLXBhcnRpYWwgaW5kZXhlcyBoZXJlICovCiAKIAkJaWYgKCFpbmRl eC0+cHJlZE9LKQkJLyogZG9uJ3QgcmVwZWF0IHdvcmsgaWYgYWxyZWFkeSBwcm92ZW4gT0sg Ki8KLQkJCWluZGV4LT5wcmVkT0sgPSBwcmVkaWNhdGVfaW1wbGllZF9ieShpbmRleC0+aW5k cHJlZCwgY2xhdXNlbGlzdCwKKwkJCWluZGV4LT5wcmVkT0sgPSBwcmVkaWNhdGVfaW1wbGll ZF9ieShpbmRleC0+aW5kcHJlZEV4cGFuZCwgY2xhdXNlbGlzdCwKIAkJCQkJCQkJCQkJCSBm YWxzZSk7CiAKIAkJLyogSWYgcmVsIGlzIGFuIHVwZGF0ZSB0YXJnZXQsIGxlYXZlIGluZHJl c3RyaWN0aW5mbyBhcyBzZXQgYWJvdmUgKi8KQEAgLTQwNjgsNyArNDA2OCw3IEBAIGNoZWNr X2luZGV4X3ByZWRpY2F0ZXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkK IAkJCS8qIHByZWRpY2F0ZV9pbXBsaWVkX2J5KCkgYXNzdW1lcyBmaXJzdCBhcmcgaXMgaW1t dXRhYmxlICovCiAJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBy aW5mby0+Y2xhdXNlKSB8fAogCQkJCSFwcmVkaWNhdGVfaW1wbGllZF9ieShsaXN0X21ha2Ux KHJpbmZvLT5jbGF1c2UpLAotCQkJCQkJCQkJICBpbmRleC0+aW5kcHJlZCwgZmFsc2UpKQor CQkJCQkJCQkJICBpbmRleC0+aW5kcHJlZEV4cGFuZCwgZmFsc2UpKQogCQkJCWluZGV4LT5p bmRyZXN0cmljdGluZm8gPSBsYXBwZW5kKGluZGV4LT5pbmRyZXN0cmljdGluZm8sIHJpbmZv KTsKIAkJfQogCX0KQEAgLTQ0MDIsMTQgKzQ0MDIsMTQgQEAgbWF0Y2hfaW5kZXhfdG9fb3Bl cmFuZChOb2RlICpvcGVyYW5kLAogCQlpbnQJCQlpOwogCQlOb2RlCSAgICppbmRleGtleTsK IAotCQlpbmRleHByX2l0ZW0gPSBsaXN0X2hlYWQoaW5kZXgtPmluZGV4cHJzKTsKKwkJaW5k ZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4LT5pbmRleHByc0V4cGFuZCk7CiAJCWZvciAo aSA9IDA7IGkgPCBpbmRleGNvbDsgaSsrKQogCQl7CiAJCQlpZiAoaW5kZXgtPmluZGV4a2V5 c1tpXSA9PSAwKQogCQkJewogCQkJCWlmIChpbmRleHByX2l0ZW0gPT0gTlVMTCkKIAkJCQkJ ZWxvZyhFUlJPUiwgIndyb25nIG51bWJlciBvZiBpbmRleCBleHByZXNzaW9ucyIpOwotCQkJ CWluZGV4cHJfaXRlbSA9IGxuZXh0KGluZGV4LT5pbmRleHBycywgaW5kZXhwcl9pdGVtKTsK KwkJCQlpbmRleHByX2l0ZW0gPSBsbmV4dChpbmRleC0+aW5kZXhwcnNFeHBhbmQsIGluZGV4 cHJfaXRlbSk7CiAJCQl9CiAJCX0KIAkJaWYgKGluZGV4cHJfaXRlbSA9PSBOVUxMKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGRlNmExODNkLi4y YmRhZDdiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRl cGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpA QCAtMzM0MCw3ICszMzQwLDcgQEAgY3JlYXRlX2JpdG1hcF9zdWJwbGFuKFBsYW5uZXJJbmZv ICpyb290LCBQYXRoICpiaXRtYXBxdWFsLAogCQkJCXN1YmluZGV4RUNzID0gbGFwcGVuZChz dWJpbmRleEVDcywgcmluZm8tPnBhcmVudF9lYyk7CiAJCX0KIAkJLyogV2UgY2FuIGFkZCBh bnkgaW5kZXggcHJlZGljYXRlIGNvbmRpdGlvbnMsIHRvbyAqLwotCQlmb3JlYWNoKGwsIGlw YXRoLT5pbmRleGluZm8tPmluZHByZWQpCisJCWZvcmVhY2gobCwgaXBhdGgtPmluZGV4aW5m by0+aW5kcHJlZEV4cGFuZCkKIAkJewogCQkJRXhwcgkgICAqcHJlZCA9IChFeHByICopIGxm aXJzdChsKTsKIApAQCAtNTE0Miw3ICs1MTQyLDcgQEAgZml4X2luZGV4cXVhbF9vcGVyYW5k KE5vZGUgKm5vZGUsIEluZGV4T3B0SW5mbyAqaW5kZXgsIGludCBpbmRleGNvbCkKIAl9CiAK IAkvKiBJdCdzIGFuIGluZGV4IGV4cHJlc3Npb24sIHNvIGZpbmQgYW5kIGNyb3NzLWNoZWNr IHRoZSBleHByZXNzaW9uICovCi0JaW5kZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4LT5p bmRleHBycyk7CisJaW5kZXhwcl9pdGVtID0gbGlzdF9oZWFkKGluZGV4LT5pbmRleHByc0V4 cGFuZCk7CiAJZm9yIChwb3MgPSAwOyBwb3MgPCBpbmRleC0+bmNvbHVtbnM7IHBvcysrKQog CXsKIAkJaWYgKGluZGV4LT5pbmRleGtleXNbcG9zXSA9PSAwKQpAQCAtNTE2Nyw3ICs1MTY3 LDcgQEAgZml4X2luZGV4cXVhbF9vcGVyYW5kKE5vZGUgKm5vZGUsIEluZGV4T3B0SW5mbyAq aW5kZXgsIGludCBpbmRleGNvbCkKIAkJCQllbHNlCiAJCQkJCWVsb2coRVJST1IsICJpbmRl eCBrZXkgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgaW5kZXggY29sdW1uIik7CiAJCQl9Ci0J CQlpbmRleHByX2l0ZW0gPSBsbmV4dChpbmRleC0+aW5kZXhwcnMsIGluZGV4cHJfaXRlbSk7 CisJCQlpbmRleHByX2l0ZW0gPSBsbmV4dChpbmRleC0+aW5kZXhwcnNFeHBhbmQsIGluZGV4 cHJfaXRlbSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YwppbmRleCA3YzRiZTE3NC4uNzI4NDZkOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wbGFuY2F0LmMKQEAgLTQzMywyNCArNDMzLDM4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBs YW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQs CiAJCQkgKiBwcm9wZXJseSByZWR1Y2VkLgogCQkJICovCiAJCQlpbmZvLT5pbmRleHBycyA9 IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsKKwkJCWluZm8t PmluZGV4cHJzRXhwYW5kID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zRXhwYW5kKGlu ZGV4UmVsYXRpb24pOwogCQkJaW5mby0+aW5kcHJlZCA9IFJlbGF0aW9uR2V0SW5kZXhQcmVk aWNhdGUoaW5kZXhSZWxhdGlvbik7CisJCQlpbmZvLT5pbmRwcmVkRXhwYW5kID0gUmVsYXRp b25HZXRJbmRleFByZWRpY2F0ZUV4cGFuZChpbmRleFJlbGF0aW9uKTsKIAkJCWlmIChpbmZv LT5pbmRleHBycykKIAkJCXsKIAkJCQlpZiAodmFybm8gIT0gMSkKKwkJCQl7CiAJCQkJCUNo YW5nZVZhck5vZGVzKChOb2RlICopIGluZm8tPmluZGV4cHJzLCAxLCB2YXJubywgMCk7CisJ CQkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGluZm8tPmluZGV4cHJzRXhwYW5kLCAxLCB2 YXJubywgMCk7CisJCQkJfQogCiAJCQkJaW5mby0+aW5kZXhwcnMgPSAoTGlzdCAqKQogCQkJ CQlldmFsX2NvbnN0X2V4cHJlc3Npb25zKHJvb3QsIChOb2RlICopIGluZm8tPmluZGV4cHJz KTsKKwkJCQlpbmZvLT5pbmRleHByc0V4cGFuZCA9IChMaXN0ICopCisJCQkJCWV2YWxfY29u c3RfZXhwcmVzc2lvbnMocm9vdCwgKE5vZGUgKikgaW5mby0+aW5kZXhwcnNFeHBhbmQpOwog CQkJfQogCQkJaWYgKGluZm8tPmluZHByZWQpCiAJCQl7CiAJCQkJaWYgKHZhcm5vICE9IDEp CisJCQkJewogCQkJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBpbmZvLT5pbmRwcmVkLCAx LCB2YXJubywgMCk7CisJCQkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGluZm8tPmluZHBy ZWRFeHBhbmQsIDEsIHZhcm5vLCAwKTsKKwkJCQl9CiAKIAkJCQlpbmZvLT5pbmRwcmVkID0g KExpc3QgKikKIAkJCQkJZXZhbF9jb25zdF9leHByZXNzaW9ucyhyb290LAogCQkJCQkJCQkJ CSAgIChOb2RlICopIG1ha2VfYW5kc19leHBsaWNpdChpbmZvLT5pbmRwcmVkKSk7CisJCQkJ aW5mby0+aW5kcHJlZEV4cGFuZCA9IChMaXN0ICopCisJCQkJCWV2YWxfY29uc3RfZXhwcmVz c2lvbnMocm9vdCwKKwkJCQkJCQkJCQkgICAoTm9kZSAqKSBtYWtlX2FuZHNfZXhwbGljaXQo aW5mby0+aW5kcHJlZEV4cGFuZCkpOwogCQkJCWluZm8tPmluZHByZWQgPSBtYWtlX2FuZHNf aW1wbGljaXQoKEV4cHIgKikgaW5mby0+aW5kcHJlZCk7CisJCQkJaW5mby0+aW5kcHJlZEV4 cGFuZCA9IG1ha2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmZvLT5pbmRwcmVkRXhwYW5k KTsKIAkJCX0KIAogCQkJLyogQnVpbGQgdGFyZ2V0bGlzdCB1c2luZyB0aGUgY29tcGxldGVk IGluZGV4cHJzIGRhdGEgKi8KQEAgLTk0MSw4ICs5NTUsOCBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCQkJCQkJCQkJICAgYXR0bm8gLSBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKIAkJCQl9CiAKLQkJCQlpbmZlckVsZW1z ID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlkeFJlbCk7Ci0JCQkJaW5mZXJJbmRl eEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCWluZmVy RWxlbXMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnNFeHBhbmQoaWR4UmVsKTsKKwkJ CQlpbmZlckluZGV4RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlRXhwYW5kKGlk eFJlbCk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTEwNzIsNyArMTA4Niw3IEBAIGlu ZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCWNvbnRpbnVlOwog CiAJCS8qIEV4cHJlc3Npb24gYXR0cmlidXRlcyAoaWYgYW55KSBtdXN0IG1hdGNoICovCi0J CWlkeEV4cHJzID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGlkeFJlbCk7CisJCWlk eEV4cHJzID0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zRXhwYW5kKGlkeFJlbCk7CiAJ CWlmIChpZHhFeHBycykKIAkJewogCQkJaWYgKHZhcm5vICE9IDEpCkBAIC0xMTM5LDcgKzEx NTMsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCWlm IChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMpICE9IE5JTCkKIAkJCWNv bnRpbnVlOwogCi0JCXByZWRFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoaWR4 UmVsKTsKKwkJcHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZUV4cGFuZChp ZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzKQogCQl7CiAJCQlpZiAodmFybm8gIT0gMSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggZDZlZmQwNzAuLjk0ZTIxNzE5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtNzQzMSw2ICs3NDMxLDcgQEAgZ2VuZXJp Y2Nvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9vdCwKIAlkb3VibGUJCXF1YWxfYXJnX2Nv c3Q7CiAJTGlzdAkgICAqc2VsZWN0aXZpdHlRdWFsczsKIAlMaXN0Q2VsbCAgICpsOworCWJv b2wJCW5lZWRDYWxjSW5kZXhTZWxlY3Rpdml0eSA9IHRydWU7CiAKIAkvKgogCSAqIElmIHRo ZSBpbmRleCBpcyBwYXJ0aWFsLCBBTkQgdGhlIGluZGV4IHByZWRpY2F0ZSB3aXRoIHRoZSBl eHBsaWNpdGx5CkBAIC03NDk1LDkgKzc0OTYsMTkgQEAgZ2VuZXJpY2Nvc3Rlc3RpbWF0ZShQ bGFubmVySW5mbyAqcm9vdCwKIAkgKiBpbmRleFNlbGVjdGl2aXR5IGVzdGltYXRlIGlzIHRp bnkuCiAJICovCiAJaWYgKG51bUluZGV4VHVwbGVzID4gaW5kZXgtPnR1cGxlcykKKwl7CiAJ CW51bUluZGV4VHVwbGVzID0gaW5kZXgtPnR1cGxlczsKKwkJbmVlZENhbGNJbmRleFNlbGVj dGl2aXR5ID0gdHJ1ZTsKKwl9CisKKwkvKiBSZWNhbGN1bGF0ZSBpbmRleFNlbGVjdGl2aXR5 IGJhc2VkIG9uIHRoZSBlc3RpbWF0ZWQgbnVtSW5kZXhUdXBsZXMgKi8KIAlpZiAobnVtSW5k ZXhUdXBsZXMgPCAxLjApCisJewogCQludW1JbmRleFR1cGxlcyA9IDEuMDsKKwkJaW5kZXhT ZWxlY3Rpdml0eSA9IDAuMDsKKwl9CisJZWxzZSBpZiAobmVlZENhbGNJbmRleFNlbGVjdGl2 aXR5ICYmIGluZGV4LT5yZWwtPnR1cGxlcyA+IDApCisJCWluZGV4U2VsZWN0aXZpdHkgPSBu dW1JbmRleFR1cGxlcyAvIGluZGV4LT5yZWwtPnR1cGxlczsKIAogCS8qCiAJICogRXN0aW1h dGUgdGhlIG51bWJlciBvZiBpbmRleCBwYWdlcyB0aGF0IHdpbGwgYmUgcmV0cmlldmVkLgpA QCAtNzYzOSwxMCArNzY1MCwxMCBAQCBhZGRfcHJlZGljYXRlX3RvX2luZGV4X3F1YWxzKElu ZGV4T3B0SW5mbyAqaW5kZXgsIExpc3QgKmluZGV4UXVhbHMpCiAJTGlzdAkgICAqcHJlZEV4 dHJhUXVhbHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAKLQlpZiAoaW5kZXgtPmluZHBy ZWQgPT0gTklMKQorCWlmIChpbmRleC0+aW5kcHJlZEV4cGFuZCA9PSBOSUwpCiAJCXJldHVy biBpbmRleFF1YWxzOwogCi0JZm9yZWFjaChsYywgaW5kZXgtPmluZHByZWQpCisJZm9yZWFj aChsYywgaW5kZXgtPmluZHByZWRFeHBhbmQpCiAJewogCQlOb2RlCSAgICpwcmVkUXVhbCA9 IChOb2RlICopIGxmaXJzdChsYyk7CiAJCUxpc3QJICAgKm9uZVF1YWwgPSBsaXN0X21ha2Ux KHByZWRRdWFsKTsKQEAgLTgwNTQsNiArODA2NSwxMiBAQCBidGNvc3Rlc3RpbWF0ZShQbGFu bmVySW5mbyAqcm9vdCwgSW5kZXhQYXRoICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkJ CQkJCQkJCQkJCSAgSk9JTl9JTk5FUiwKIAkJCQkJCQkJCQkJCSAgTlVMTCk7CiAJCW51bUlu ZGV4VHVwbGVzID0gYnRyZWVTZWxlY3Rpdml0eSAqIGluZGV4LT5yZWwtPnR1cGxlczsKKwkJ LyoKKwkJICogVGhlIG51bWJlciBvZiBsZWFmIHR1cGxlcyB2aXNpdGVkIGZvciBjb3N0CisJ CSAqIGNhbm5vdCBleGNlZWQgdGhlIHRvdGFsIHR1cGxlcyBvZiB0aGUgaW5kZXguCisJCSov CisJCWlmIChudW1JbmRleFR1cGxlcyA+IGluZGV4LT50dXBsZXMpCisJCQludW1JbmRleFR1 cGxlcyA9IGluZGV4LT50dXBsZXM7CiAKIAkJLyoKIAkJICogYnRyZWUgYXV0b21hdGljYWxs eSBjb21iaW5lcyBpbmRpdmlkdWFsIGFycmF5IGVsZW1lbnQgcHJpbWl0aXZlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAwNTcyYWI0Mi4uZTYwNGJiOTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1 ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFu ZGxlci5oIgogCiAjZGVmaW5lIFJFTENBQ0hFX0lOSVRfRklMRU1BR0lDCQkweDU3MzI2Ngkv KiB2ZXJzaW9uIElEIHZhbHVlICovCiAKQEAgLTE1ODMsNyArMTU4NCw5IEBAIFJlbGF0aW9u SW5pdEluZGV4QWNjZXNzSW5mbyhSZWxhdGlvbiByZWxhdGlvbikKIAkgKiBleHByZXNzaW9u cywgcHJlZGljYXRlLCBleGNsdXNpb24gY2FjaGVzIHdpbGwgYmUgZmlsbGVkIGxhdGVyCiAJ ICovCiAJcmVsYXRpb24tPnJkX2luZGV4cHJzID0gTklMOworCXJlbGF0aW9uLT5yZF9pbmRl eHByc0V4cGFuZCA9IE5JTDsKIAlyZWxhdGlvbi0+cmRfaW5kcHJlZCA9IE5JTDsKKwlyZWxh dGlvbi0+cmRfaW5kcHJlZEV4cGFuZCA9IE5JTDsKIAlyZWxhdGlvbi0+cmRfZXhjbG9wcyA9 IE5VTEw7CiAJcmVsYXRpb24tPnJkX2V4Y2xwcm9jcyA9IE5VTEw7CiAJcmVsYXRpb24tPnJk X2V4Y2xzdHJhdHMgPSBOVUxMOwpAQCAtNTE0Niw2ICs1MTQ5LDQ1IEBAIFJlbGF0aW9uR2V0 SW5kZXhFeHByZXNzaW9ucyhSZWxhdGlvbiByZWxhdGlvbikKIAlyZXR1cm4gcmVzdWx0Owog fQogCitMaXN0ICoKK1JlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9uc0V4cGFuZChSZWxhdGlv biByZWxhdGlvbikKK3sKKwlMaXN0CSAgICpyZXN1bHQ7CisJTWVtb3J5Q29udGV4dCBvbGRj eHQ7CisJYm9vbAkJaXNudWxsOworCURhdHVtCQloZWFwUmVsaWREYXR1bTsKKwlPaWQgICAg ICAgICBoZWFwUmVsaWQ7CisKKwkvKiBRdWljayBleGl0IGlmIHdlIGFscmVhZHkgY29tcHV0 ZWQgdGhlIHJlc3VsdC4gKi8KKwlpZiAocmVsYXRpb24tPnJkX2luZGV4cHJzRXhwYW5kKQor CQlyZXR1cm4gY29weU9iamVjdChyZWxhdGlvbi0+cmRfaW5kZXhwcnNFeHBhbmQpOworCisJ LyogUXVpY2sgZXhpdCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLiAqLworCWlmIChyZWxh dGlvbi0+cmRfaW5kZXh0dXBsZSA9PSBOVUxMIHx8CisJCWhlYXBfYXR0aXNudWxsKHJlbGF0 aW9uLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkKKwkJ cmV0dXJuIE5JTDsKKworCXJlc3VsdCA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhy ZWxhdGlvbik7CisJaWYgKHJlc3VsdCA9PSBOSUwpCisJCXJldHVybiBOSUw7CisKKwloZWFw UmVsaWREYXR1bSA9IGhlYXBfZ2V0YXR0cihyZWxhdGlvbi0+cmRfaW5kZXh0dXBsZSwKKwkJ CQkJCQkgQW51bV9wZ19pbmRleF9pbmRyZWxpZCwKKwkJCQkJCQkgR2V0UGdJbmRleERlc2Ny aXB0b3IoKSwKKwkJCQkJCQkgJmlzbnVsbCk7CisJQXNzZXJ0KCFpc251bGwpOworCWhlYXBS ZWxpZCA9IERhdHVtR2V0T2JqZWN0SWQoaGVhcFJlbGlkRGF0dW0pOworCisJcmVzdWx0ID0g RXhwYW5kVmlydHVhbEdlbmVyYXRlZENvbHVtbnMocmVzdWx0LCBOVUxMLCBoZWFwUmVsaWQp OworCisJLyogTm93IHNhdmUgYSBjb3B5IG9mIHRoZSBjb21wbGV0ZWQgdHJlZSBpbiB0aGUg cmVsY2FjaGUgZW50cnkuICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJl bGF0aW9uLT5yZF9pbmRleGN4dCk7CisJcmVsYXRpb24tPnJkX2luZGV4cHJzRXhwYW5kID0g Y29weU9iamVjdChyZXN1bHQpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwor CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFJlbGF0aW9uR2V0RHVtbXlJbmRleEV4 cHJlc3Npb25zIC0tIGdldCBkdW1teSBleHByZXNzaW9ucyBmb3IgYW4gaW5kZXgKICAqCkBA IC01MjY2LDYgKzUzMDgsNDUgQEAgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlv biByZWxhdGlvbikKIAlyZXR1cm4gcmVzdWx0OwogfQogCitMaXN0ICoKK1JlbGF0aW9uR2V0 SW5kZXhQcmVkaWNhdGVFeHBhbmQoUmVsYXRpb24gcmVsYXRpb24pCit7CisJTGlzdAkgICAq cmVzdWx0OworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCWJvb2wJCWlzbnVsbDsKKwlEYXR1 bQkJaGVhcFJlbGlkRGF0dW07CisJT2lkICAgICAgICAgaGVhcFJlbGlkOworCisJLyogUXVp Y2sgZXhpdCBpZiB3ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSByZXN1bHQuICovCisJaWYgKHJl bGF0aW9uLT5yZF9pbmRwcmVkRXhwYW5kKQorCQlyZXR1cm4gY29weU9iamVjdChyZWxhdGlv bi0+cmRfaW5kcHJlZEV4cGFuZCk7CisKKwkvKiBRdWljayBleGl0IGlmIHRoZXJlIGlzIG5v dGhpbmcgdG8gZG8uICovCisJaWYgKHJlbGF0aW9uLT5yZF9pbmRleHR1cGxlID09IE5VTEwg fHwKKwkJaGVhcF9hdHRpc251bGwocmVsYXRpb24tPnJkX2luZGV4dHVwbGUsIEFudW1fcGdf aW5kZXhfaW5kcHJlZCwgTlVMTCkpCisJCXJldHVybiBOSUw7CisKKwlyZXN1bHQgPSBSZWxh dGlvbkdldEluZGV4UHJlZGljYXRlKHJlbGF0aW9uKTsKKwlpZiAocmVzdWx0ID09IE5JTCkK KwkJcmV0dXJuIE5JTDsKKworCWhlYXBSZWxpZERhdHVtID0gaGVhcF9nZXRhdHRyKHJlbGF0 aW9uLT5yZF9pbmRleHR1cGxlLAorCQkJCQkJCSBBbnVtX3BnX2luZGV4X2luZHJlbGlkLAor CQkJCQkJCSBHZXRQZ0luZGV4RGVzY3JpcHRvcigpLAorCQkJCQkJCSAmaXNudWxsKTsKKwlB c3NlcnQoIWlzbnVsbCk7CisJaGVhcFJlbGlkID0gRGF0dW1HZXRPYmplY3RJZChoZWFwUmVs aWREYXR1bSk7CisKKwlyZXN1bHQgPSBFeHBhbmRWaXJ0dWFsR2VuZXJhdGVkQ29sdW1ucyhy ZXN1bHQsIE5VTEwsIGhlYXBSZWxpZCk7CisKKwkvKiBOb3cgc2F2ZSBhIGNvcHkgb2YgdGhl IGNvbXBsZXRlZCB0cmVlIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gKi8KKwlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8ocmVsYXRpb24tPnJkX2luZGV4Y3h0KTsKKwlyZWxhdGlv bi0+cmRfaW5kcHJlZEV4cGFuZCA9IGNvcHlPYmplY3QocmVzdWx0KTsKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0 cmlidXRlIG51bWJlcnMKICAqCkBAIC02NDkwLDcgKzY1NzEsOSBAQCBsb2FkX3JlbGNhY2hl X2luaXRfZmlsZShib29sIHNoYXJlZCkKIAkJcmVsLT5yZF9wYXJ0Y2hlY2t2YWxpZCA9IGZh bHNlOwogCQlyZWwtPnJkX3BhcnRjaGVja2N4dCA9IE5VTEw7CiAJCXJlbC0+cmRfaW5kZXhw cnMgPSBOSUw7CisJCXJlbC0+cmRfaW5kZXhwcnNFeHBhbmQgPSBOSUw7CiAJCXJlbC0+cmRf aW5kcHJlZCA9IE5JTDsKKwkJcmVsLT5yZF9pbmRwcmVkRXhwYW5kID0gTklMOwogCQlyZWwt PnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5VTEw7CiAJCXJl bC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CkBAIC03MDE5LDMgKzcxMDIsNDYgQEAgUmVzT3du ZXJSZWxlYXNlUmVsYXRpb24oRGF0dW0gcmVzKQogCiAJUmVsYXRpb25DbG9zZUNsZWFudXAo KFJlbGF0aW9uKSBEYXR1bUdldFBvaW50ZXIocmVzKSk7CiB9CisKK0xpc3QgKgorRXhwYW5k VmlydHVhbEdlbmVyYXRlZENvbHVtbnMoTGlzdCAqbGlzdCwgUmVsYXRpb24gaGVhcFJlbGF0 aW9uLCBPaWQgaGVhcFJlbElkKQoreworCWJvb2wgCQkJCSBvcGVuZWRfcmVsYXRpb24gPSBm YWxzZTsKKwlUdXBsZURlc2MJCQkgdHVwZGVzYzsKKworCWlmIChsaXN0ID09IE5JTCB8fCAo aGVhcFJlbGF0aW9uID09IE5VTEwgJiYgaGVhcFJlbElkID09IEludmFsaWRPaWQpKQorCQly ZXR1cm4gbGlzdDsKKworCWlmIChoZWFwUmVsYXRpb24gPT0gTlVMTCkKKwl7CisJCWhlYXBS ZWxhdGlvbiA9IHRhYmxlX29wZW4oaGVhcFJlbElkLCBOb0xvY2spOworCQlvcGVuZWRfcmVs YXRpb24gPSB0cnVlOworCX0KKworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGhlYXBS ZWxhdGlvbik7CisJaWYgKCh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3RyLT5o YXNfZ2VuZXJhdGVkX3ZpcnR1YWwpKQorCXsKKwkJaW50CQkJCSBqOworCQlCaXRtYXBzZXQJ CSppbmRleGF0dHJzID0gTlVMTDsKKworCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKWxpc3Qs IDEsICZpbmRleGF0dHJzKTsKKworCQlqID0gLTE7CisJCXdoaWxlICgoaiA9IGJtc19uZXh0 X21lbWJlcihpbmRleGF0dHJzLCBqKSkgPj0gMCkKKwkJeworCQkJQXR0ck51bWJlcglhdHRu byA9IGogKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQlpZiAo YXR0bm8gPiAwICYmCisJCQkJVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRubyAtIDEpLT5h dHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJeworCQkJ CWxpc3QgPSAoTGlzdCAqKWV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKChOb2Rl ICopbGlzdCwgaGVhcFJlbGF0aW9uLCAxKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0K KworCWlmIChvcGVuZWRfcmVsYXRpb24pCisJCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwg Tm9Mb2NrKTsKKworCXJldHVybiBsaXN0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCA1M2MxMzgzMS4uMjBhMmU2MTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xOTAs MTMgKzE5MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAogCS8qIGV4cHIgdHJl ZXMgZm9yIGV4cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlmIG5vbmUgKi8KIAlMaXN0CSAg ICppaV9FeHByZXNzaW9uczsgLyogbGlzdCBvZiBFeHByICovCisJTGlzdAkgICAqaWlfRXhw cmVzc2lvbnNFeHBhbmQ7IAkvKiBsaXN0IG9mIEV4cHIgKi8KIAkvKiBleGVjIHN0YXRlIGZv ciBleHByZXNzaW9ucywgb3IgTklMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICppaV9FeHByZXNz aW9uc1N0YXRlOwkvKiBsaXN0IG9mIEV4cHJTdGF0ZSAqLworCUxpc3QJICAgKmlpX0V4cHJl c3Npb25zRXhwYW5kU3RhdGU7CS8qIGxpc3Qgb2YgRXhwclN0YXRlICovCiAKIAkvKiBwYXJ0 aWFsLWluZGV4IHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICppaV9Q cmVkaWNhdGU7CS8qIGxpc3Qgb2YgRXhwciAqLworCUxpc3QJICAgKmlpX1ByZWRpY2F0ZUV4 cGFuZDsJCS8qIGxpc3Qgb2YgRXhwciAqLwogCS8qIGV4ZWMgc3RhdGUgZm9yIGV4cHJlc3Np b25zLCBvciBOSUwgaWYgbm9uZSAqLwogCUV4cHJTdGF0ZSAgKmlpX1ByZWRpY2F0ZVN0YXRl OworCUV4cHJTdGF0ZSAgKmlpX1ByZWRpY2F0ZUV4cGFuZFN0YXRlOwogCiAJLyogUGVyLWNv bHVtbiBleGNsdXNpb24gb3BlcmF0b3JzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlPaWQJCSAg ICppaV9FeGNsdXNpb25PcHM7CS8qIGFycmF5IHdpdGggb25lIGVudHJ5IHBlciBjb2x1bW4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMjdhMmM2ODEuLjljNjVlMTIzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTQwMyw4ICsxNDAzLDEwIEBAIHR5cGVkZWYgc3Ry dWN0IEluZGV4T3B0SW5mbwogCSAqIHByaW50IGluZGV4dGxpc3QKIAkgKi8KIAlMaXN0CSAg ICppbmRleHBycyBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOworCUxpc3QJICAg KmluZGV4cHJzRXhwYW5kIHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CiAJLyog cHJlZGljYXRlIGlmIGEgcGFydGlhbCBpbmRleCwgZWxzZSBOSUwgKi8KIAlMaXN0CSAgICpp bmRwcmVkOworCUxpc3QJICAgKmluZHByZWRFeHBhbmQ7CiAKIAkvKiB0YXJnZXRsaXN0IHJl cHJlc2VudGluZyBpbmRleCBjb2x1bW5zICovCiAJTGlzdAkgICAqaW5kZXh0bGlzdDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKaW5kZXggZmEwN2ViZjguLjdiZDAxYjM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMjEwLDcg KzIxMCw5IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCXN0cnVjdCBGbWdySW5m byAqcmRfc3VwcG9ydGluZm87CS8qIGxvb2t1cCBpbmZvIGZvciBzdXBwb3J0IHByb2NlZHVy ZXMgKi8KIAlpbnQxNgkgICAqcmRfaW5kb3B0aW9uOwkvKiBwZXItY29sdW1uIEFNLXNwZWNp ZmljIGZsYWdzICovCiAJTGlzdAkgICAqcmRfaW5kZXhwcnM7CS8qIGluZGV4IGV4cHJlc3Np b24gdHJlZXMsIGlmIGFueSAqLworCUxpc3QJICAgKnJkX2luZGV4cHJzRXhwYW5kOwkvKiBl eHBhbmRlZCBpbmRleCBleHByZXNzaW9uIHRyZWVzLCBpZiBhbnkgKi8KIAlMaXN0CSAgICpy ZF9pbmRwcmVkOwkJLyogaW5kZXggcHJlZGljYXRlIHRyZWUsIGlmIGFueSAqLworCUxpc3QJ ICAgKnJkX2luZHByZWRFeHBhbmQ7CQkvKiBleHBhbmRlZCBpbmRleCBwcmVkaWNhdGUgdHJl ZSwgaWYgYW55ICovCiAJT2lkCQkgICAqcmRfZXhjbG9wczsJCS8qIE9JRHMgb2YgZXhjbHVz aW9uIG9wZXJhdG9ycywgaWYgYW55ICovCiAJT2lkCQkgICAqcmRfZXhjbHByb2NzOwkvKiBP SURzIG9mIGV4Y2x1c2lvbiBvcHMnIHByb2NzLCBpZiBhbnkgKi8KIAl1aW50MTYJICAgKnJk X2V4Y2xzdHJhdHM7CS8qIGV4Y2x1c2lvbiBvcHMnIHN0cmF0ZWd5IG51bWJlcnMsIGlmIGFu eSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODljMjdhYTEuLjcwNTMxYmI4IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3JlbGNhY2hlLmgKQEAgLTU4LDggKzU4LDEwIEBAIGV4dGVybiBMaXN0ICpSZWxh dGlvbkdldFN0YXRFeHRMaXN0KFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmVs YXRpb25HZXRQcmltYXJ5S2V5SW5kZXgoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgZGVmZXJy YWJsZV9vayk7CiBleHRlcm4gT2lkCVJlbGF0aW9uR2V0UmVwbGljYUluZGV4KFJlbGF0aW9u IHJlbGF0aW9uKTsKIGV4dGVybiBMaXN0ICpSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMo UmVsYXRpb24gcmVsYXRpb24pOworZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9uc0V4cGFuZChSZWxhdGlvbiByZWxhdGlvbik7CiBleHRlcm4gTGlzdCAqUmVsYXRp b25HZXREdW1teUluZGV4RXhwcmVzc2lvbnMoUmVsYXRpb24gcmVsYXRpb24pOwogZXh0ZXJu IExpc3QgKlJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24gcmVsYXRpb24pOwor ZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGVFeHBhbmQoUmVsYXRpb24g cmVsYXRpb24pOwogZXh0ZXJuIGJ5dGVhICoqUmVsYXRpb25HZXRJbmRleEF0dE9wdGlvbnMo UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgY29weSk7CiAKIC8qCkBAIC0xNjEsNCArMTYzLDYg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgY3JpdGljYWxSZWxjYWNoZXNCdWlsdDsKIC8q IHNob3VsZCBiZSB1c2VkIG9ubHkgYnkgcmVsY2FjaGUuYyBhbmQgcG9zdGluaXQuYyAqLwog ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgY3JpdGljYWxTaGFyZWRSZWxjYWNoZXNCdWlsdDsK IAorZXh0ZXJuIExpc3QgKkV4cGFuZFZpcnR1YWxHZW5lcmF0ZWRDb2x1bW5zKExpc3QgKmxp c3QsIFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIGhlYXBSZWxJZCk7CisKICNlbmRpZgkJ CQkJCQkvKiBSRUxDQUNIRV9IICovCi0tIAoyLjQzLjAKCg== ------=_NextPart_6A4BD340_E26CD6E0_550003BE--