Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t82xR-001gL1-5R for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Nov 2024 19:41:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t82xO-004Yv4-DM for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Nov 2024 19:41:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t82xN-004Yus-6j for pgsql-hackers@lists.postgresql.org; Mon, 04 Nov 2024 19:41:46 +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.94.2) (envelope-from ) id 1t82xG-000B7n-Pl for pgsql-hackers@postgresql.org; Mon, 04 Nov 2024 19:41:44 +0000 Received: from [192.168.1.110] (dsl-hkibng22-50ddb7-241.dhcp.inet.fi [80.221.183.241]) (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 4Xj20G0HJSz49QF0; Mon, 4 Nov 2024 21:41:34 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1730749294; 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=mdAtvaXLNRfRgigscET2jRXK8b8DdQV9QExfkXY8fYg=; b=ZaojdBv/EwBQDLYoU+JVnGNEtAZsMkkF1Xi0BqYgRwtu/6yWuGiEOt1UXOcucc/aUGUNAB r0JqdhIecUSLrQoffpfR5Nl5u6bSZlg0RiCnIGa+XDc2Kc+ENNcZZ7DSCaiWzN/FsRdlGN 4fMCwl98S7rQGmD49b5tyUqzOAt5cEwo5xJMMfP4Z+Z52dc0gUz4WOLAZ5j997Qc1Z4fQT ZKy5uwQiiSwIYyhO2yIQbdn8GOQet1xhHy8X3q1bxhmCwaoCpP8U66deqysCUmJjBRkiaM qYaO2nPv/RsY6sbvDr2sUZ9YdgSPzrFJhuDSKuUhxM4YBy+oh0a3u2PU6zLDQw== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1730749294; a=rsa-sha256; cv=none; b=bP2NCq8zv3KCieRlPOajYGWndxbE6PDXFFSrqcCdz7MALk1LXABDUhrFoBZcih7X2OlHJC XwQQcAH/iwLHJzivh+03mV6a0ulY6qviEWOyeQpLVgRNXwJHdLLX+PtWGKvjl9q3ZUnPv1 2E6lHKfonHV/iOoSQ/OQPcEcHcwCdsQgWlmXmUqCcLLVeQtf12J9J5mvXihQdCeoMxPoVD hYobHjJ2B3MyXemxgzkSXKUVouEu9X/lS1AfRL0xwepI6l1HQ8w9hqyU/pe+LepPgnYTa2 FoI1+h5KcBAJx7PMsP8npQKVezieaTYf6ILVaRFDoyqPycYgwnvdegYLUpewyw== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1730749294; 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=mdAtvaXLNRfRgigscET2jRXK8b8DdQV9QExfkXY8fYg=; b=d/Fw2MhN4Ry8mJyl5W6Gtir+DRLm3w0O+zRavwMPKwK8HizTZ77EOJF3OUArM8409CbR+J BTrUscmN5TiWp0iHIy6L1O9LHnP/A3LDFlQ0Zwei7jqRxqFPSDkEVz5fDyaqssBciM2RR2 t3/S/LCa70iJWUJslYh6YJ2Z2GE/t7sg8TiyZ5n6+ffg9KNuQkJY/TBD8Dvlqjx6y3bWWE PosYaFEe8DQqRZVSmsqMoSxxMRsGhvfgLO+kM7e2AreNXnxrOkdVsBknOTbLB29BYGpEsc dIZVuAwAYY841awVXenPhJnKeCjz5l2wmGYx1HHLZ7IqyY0ubZif4EGuFQoQAQ== Content-Type: multipart/mixed; boundary="------------T3bwx44i0Rxfr222TL30IqbM" Message-ID: Date: Mon, 4 Nov 2024 21:41:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals To: Michael Paquier , Robert Haas Cc: Thomas Munro , Fujii Masao , pgsql-hackers , Andres Freund References: <3b996d73-2a10-4072-a58d-0386af0cbb78@iki.fi> <46f047a1-bfd5-406a-a0f3-97205d9529ad@iki.fi> <476672e7-62f1-4cab-a822-f3a8e949dd3f@iki.fi> <391abe21-413e-4d91-a650-b663af49500c@iki.fi> 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. --------------T3bwx44i0Rxfr222TL30IqbM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 31/10/2024 02:32, Michael Paquier wrote: > On Wed, Oct 30, 2024 at 01:23:54PM -0400, Robert Haas wrote: >> On Wed, Oct 30, 2024 at 12:03 PM Heikki Linnakangas wrote: >>> C) We could provide "forward-compatibility" macros in a separate header >>> file, to make the new "SetInterrupt" etc calls work in old PostgreSQL >>> versions. Many of the extensions already have a header file like this, >>> see e.g. citusdata/citus/src/include/pg_version_compat.h, >>> pipelinedb/pipelinedb/include/compat.h. It might actually be a good idea >>> to provide a semi-official header file like this on the Postgres wiki, >>> to help extension authors. It would encourage extensions to use the >>> latest idioms, while still being able to compile for older versions. >>> >>> I'm leaning towards option C). Let's rip off the band-aid, but provide >>> documentation for how to adapt your extension code. And provide a >>> forwards-compatibility header on the wiki, that extension authors can >>> use to make the new Interrupt calls work against old server versions. >> >> I don't know which of these options is best, but I don't find any of >> them categorically unacceptable. > > Looking at the compatibility macros of 0008 for the latches with > INTERRUPT_GENERAL_WAKEUP under latch.h, the changes are not that bad > to adapt to, IMO. It reminds of f25968c49697: hard breakage, no > complaints I've heard of because I guess that most folks have been > using an in-house compatibility headers. > > A big disadvantage of B is that someone may decide to add new code in > core that depends on the past routines, and we'd better avoid that for > this new layer of APIs for interrupt handling. A is a subset of C: do > a hard switch in the core code, with C mentioning a compatibility > layer in the wiki that does not exist in the core code. Any of A or C > is OK, I would not choose B for the core backend. Having spent some time playing with this, I quite like option C: break compatibility, but provide an out-of-tree header file with *forward*-compatibility macros. That encourages extension authors to adapt to new idioms, but avoids having to sprinkle extension code with #if version checks to support old versions. See attached pg_version_compatibility.h header. It allows compiling code that uses basic SendInterrupt, RaiseInterrupt, WaitInterrupt calls with older server versions. My plan is to put this on the Wiki, and update it with similar compatibility helpers for other changes we might make in v18 or future versions. We could add helpers for previous incompatibilities in v17 and v16 too, although at quick glance I'm not sure what those might be. I tested this approach by adapting pg_cron to build with these patches and the compatibility header, and compiling it with all supported server versoins. Works great, see adapt-pg_cron.patch. I pushed the preliminary cleanup patches from this patch set earlier, only the main patches remain. Attached is a new version of those, with mostly comment cleanups. -- Heikki Linnakangas Neon (https://neon.tech) --------------T3bwx44i0Rxfr222TL30IqbM Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v3-0001-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSA0NDIyNzBjOTUzMzFiOGQ0YjgwMGE5NTRkYTAxMDA0NjQ2OTQxYWI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgNCBOb3YgMjAyNCAyMTowMDowMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjMgMS8zXSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1cHRz CgpUaGUgTGF0Y2ggd2FzIGEgZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxp bmcgbWVjaGFuaXNtIHRoYXQKYWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhlIExh dGNoIHRvIGJlIHNldC4gTXkgb3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0aGF0 IHlvdSBjb3VsZCBoYXZlIGRpZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhpbmdz IHRoYXQgeW91IG5lZWQgdG8gd2FpdCBmb3IsIGJ1dCBidXQgaW4gcHJhY3RpY2UsIGFsbW9z dCBhbGwgY29kZQp1c2VkIG9uZSAicHJvY2VzcyBsYXRjaCIgdGhhdCB3YXMgc2hhcmVkIGZv ciBhbGwgd2FrZXVwcy4gVGhlIG9ubHkKZXhjZXB0aW9uIHdhcyB0aGUgInJlY292ZXJ5V2Fr ZXVwTGF0Y2giLiBJIHRoaW5rIHRoZSByZWFzb24gdGhhdCB3ZQplbmRlZCB1cCBqdXN0IHNo YXJpbmcgdGhlIHNhbWUgbGF0Y2ggZm9yIGFsbCB3YWtldXBzIGlzIHRoYXQgaXQgd2FzCmN1 bWJlcnNvbWUgaW4gcHJhY3RpY2UgdG8gZGVhbCB3aXRoIG11bHRpcGxlIGxhdGNoZXMuIEZv ciBzdGFydGVycywKdGhlcmUgd2FzIG5vIG1hY2hpbmVyeSBmb3Igd2FpdGluZyBmb3IgbXVs dGlwbGUgbGF0Y2hlcyBhdCB0aGUgc2FtZQp0aW1lLiBTZWNvbmRseSwgY2hhbmdpbmcgdGhl ICJvd25lcnNoaXAiIG9mIGEgbGF0Y2ggbmVlZGVkIGV4dHJhCmxvY2tpbmcgb3Igb3RoZXIg Y29vcmRpbmF0aW9uLiBUaGlyZGx5LCBlYWNoIGludGVyLXByb2Nlc3MgbGF0Y2gKbmVlZGVk IHRvIGJlIGluaXRpYWxpemVkIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCB0aW1lLgoKVGhpcyBw YXRjaCBlbWJyYWNlcyB0aGUgcmVhbGl0eSBvZiBob3cgTGF0Y2hlcyB3ZXJlIHVzZWQsIGFu ZCByZXBsYWNlcwp0aGUgTGF0Y2hlcyB3aXRoIHBlci1wcm9jZXNzIGludGVycnVwdCBtYXNr LiBZb3UgY2FuIG5vIGxvbmdlcgphbGxvY2F0ZSBMYXRjaGVzIGluIGFyYml0cmFyeSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHMsIGFuIGludGVycnVwdCBpcwphbHdheXMgZGlyZWN0ZWQgYXQg YSBwYXJ0aWN1bGFyIHByb2Nlc3MsIGFkZHJlc3NlZCBieSBpdHMgUHJvY051bWJlci4KRWFj aCBwcm9jZXNzIGhhcyBhIGJpdG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzIGluIFBHUFJP Qy4KClRoaXMgY29tbWl0IGludHJvZHVjZXMgdHdvIGludGVycnVwdCBiaXRzLiBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAKcmVwbGFjZXMgdGhlIGdlbmVyYWwgcHVycG9zZSBwZXItcHJv Y2VzcyBsYXRjaC4gQWxsIGNvZGUgdGhhdApwcmV2aW91c2x5IHNldCBhIHByb2Nlc3MncyBw cm9jZXNzIGxhdGNoIG5vdyBzZXRzIGl0cwpJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgaW50 ZXJydXB0IGJpdCBpbnN0ZWFkLgoKVGhlIG90aGVyIGludGVycnVwdCBiaXQsIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSwgcmVwbGFjZXMKcmVjb3ZlcnlXYWtldXBMYXRjaC4gV2l0 aCB0aGlzIG5ldyBpbnRlcmZhY2UsIHRoZSBjb2RlIGNhbiBlYXNpbHkgd2FpdApmb3IgdGhl IHJlZ3VsYXIgaW50ZXJydXB0cyAoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKSBhdCB0aGUg c2FtZSB0aW1lCmFzIElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRS4gUHJldmlvdXNseSwg dGhlIGNvZGUgdGhhdCB3YWl0ZWQgb24KcmVjb3ZlcnlXYWtldXBMYXRjaCBoYWQgdG8gcmVz b3J0IHRvIHRpbWVvdXRzIHRvIHJlYWN0IHRvIG90aGVyCnNpZ25hbHMsIGJlY2F1c2UgaXQg d2FzIG5vdCBwb3NzaWJsZSB0byB3YWl0IGZvciB0d28gbGF0Y2hlcyBhdCB0aGUKc2FtZSB0 aW1lLiBQcmV2aW91cyBhdHRlbXB0IGF0IHVuaWZ5aW5nIHRob3NlIHdha2V1cHMgd2FzIGlu IGNvbW1pdAphYzIyOTI5YTI2LCBidXQgdGhhdCB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0IDAw ZjY5MGEyMzkgYmVjYXVzZSBpdApjYXVzZWQgYSBsb3Qgb2Ygc3B1cmlvdXMgd2FrZXVwcyB3 aGVuIHN0YXJ0dXAgcHJvY2VzcyB3YXMgd2FpdGluZyBmb3IKcmVjb3ZlcnkgY29uZmxpY3Rz LiBUaGUgbmV3IG1hY2hpbmVyeSBhdm9pZHMgdGhhdCBwcm9ibGVtLCBieSBtYWtpbmcKaXQg ZWFzeSB0byB3YWl0IGZvciB0d28gaW50ZXJydXB0cyBhdCB0aGUgc2FtZSB0aW1lLgoKTW9y ZSBpbnRlcnJ1cHQgYml0cyBhcmUgcGxhbm5lZCBmb3IgZm9sbG93dXAgcGF0Y2hlcywgdG8g cmVwbGFjZSB0aGUKdmFyaW91cyBQcm9jU2lnbmFsIGJpdHMsIGFzIHdlbGwgYXMgQ29uZmln UmVsb2FkUGVuZGluZyBhbmQKU2h1dGRvd25SZXF1ZXN0UGVuZGluZy4KClRoaXMgYWxzbyBt b3ZlcyB0aGUgV2FpdEV2ZW50U2V0IGZ1bmN0aW9ucyB0byBhIGRpZmZlcmVudCBzb3VyY2Ug ZmlsZSwKd2FpdGV2ZW50c2V0LmMuIFRoaXMgc2VwYXJhdGVzIHRoZSBwbGF0Zm9ybS1kZXBl bmRlbnQgY29kZSB3YWl0aW5nIGFuZApzaWduYWxsaW5nIGNvZGUgZnJvbSB0aGUgcGxhdGZv cm0taW5kZXBlbmRlbnQgcGFydHMuCi0tLQogY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3 YXJtLmMgICAgICAgICAgICAgIHwgIDIwICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMgICAgICAgICAgICAgfCAgMjIgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgNCArLQogZG9jL3NyYy9zZ21sL2Jnd29ya2Vy LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBkb2Mvc3JjL3NnbWwvc291cmNl cy5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vUkVBRE1FICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jICAgICAgICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDExICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyAgICAgfCAgOTQgKystCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgICAgICAgICB8ICAzMSArLQog c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyAgICAgIHwgIDE4ICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAgICAgICAgfCAgMTMg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwg ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2F1dGguYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgOSArLQogc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jICAgICAg ICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jICAg ICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jICAgICAgICAg ICAgICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMgICAgICAgICAg ICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICAgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHBy b2Nlc3MuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jn d3JpdGVyLmMgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9pbnRlcnJ1cHQuYyAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3BnYXJjaC5jICAgICAgICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jICAgICAgICAgICB8ICAzMyArLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zdGFydHVwLmMgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL3N5c2xvZ2dlci5jICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyAgICAgICAgICAgIHwgIDIzICstCiAuLi4vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgMzIgKy0KIC4uLi9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8ICAzOSArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwgIDU0ICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAgMjMgKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAzNSAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDI1 ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgICAgICAgICAgICAgfCAg MjkgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICAgICB8 ICA0NyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jICAg IHwgICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAg ICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAg ICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAg ICAgICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSAgICAg ICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5j ICAgICAgICAgICB8IDExNCArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5i dWlsZCAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht X21xLmMgICAgICAgICAgICAgIHwgMTAyICstLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2lnbmFsZnVuY3MuYyAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaW52YWwuYyAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAyMiArLQogLi4uL3N0b3JhZ2UvaXBjL3ts YXRjaC5jID0+IHdhaXRldmVudHNldC5jfSAgIHwgNjE2ICsrKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIHwgIDM0ICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICAgICB8IDEy NyArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAg fCAgIDYgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAg ICB8ICAyNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyAgICAgICAgICAgICAg ICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAg ICAgICAgICB8ICAgOSAtCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAg ICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyAg ICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMg ICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o ICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1m ZS1oZWxwZXJzLmggICAgICAgfCAgNDUgKy0KIHNyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgg ICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvaW50 ZXJydXB0LmggICAgICAgICAgICAgICB8IDE1OSArKysrKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9sYXRjaC5oICAgICAgICAgICAgICAgICAgIHwgMTk2IC0tLS0tLQogc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3dhaXRldmVudHNldC5oICAgICAgICAgICAgfCAxMTkgKysrKwogc3JjL3Bv cnQvcGdzbGVlcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMgICAgICAgICAgfCAgIDIgKy0KIHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYyAgICAgICAgICB8ICAgOSArLQog c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMgICAgICAgICAgIHwgIDEzICst CiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jICAgICAgICAgfCAgIDMg Ky0KIHNyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8ICAy MCArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwg ICAyICstCiA4NSBmaWxlcyBjaGFuZ2VkLCAxNDEwIGluc2VydGlvbnMoKyksIDE0MDAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aW50ZXJydXB0LmMKIHJlbmFtZSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy97bGF0Y2guYyA9 PiB3YWl0ZXZlbnRzZXQuY30gKDc3JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9zdG9yYWdlL2ludGVycnVwdC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUv c3RvcmFnZS9sYXRjaC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvc3RvcmFn ZS93YWl0ZXZlbnRzZXQuaAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcHJld2FybS9hdXRv cHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKaW5kZXggZmFj NDA1MWUxYWEuLjY1YTQyM2M3ZGRkIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3ByZXdhcm0v YXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYwpA QCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgot I2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c21nci5oIgpAQCAtMjE2LDEwICsyMTYsMTAgQEAgYXV0b3ByZXdhcm1fbWFpbihEYXR1bSBt YWluX2FyZykKIAkJaWYgKGF1dG9wcmV3YXJtX2ludGVydmFsIDw9IDApCiAJCXsKIAkJCS8q IFdlJ3JlIG9ubHkgZHVtcGluZyBhdCBzaHV0ZG93biwgc28ganVzdCB3YWl0IGZvcmV2ZXIu ICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIC0xTCwKLQkJCQkJCQkgUEdfV0FJ VF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCQkJCQkgLTFMLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwog CQl9CiAJCWVsc2UKIAkJewpAQCAtMjQzLDE0ICsyNDMsMTQgQEAgYXV0b3ByZXdhcm1fbWFp bihEYXR1bSBtYWluX2FyZykKIAkJCX0KIAogCQkJLyogU2xlZXAgdW50aWwgdGhlIG5leHQg ZHVtcCB0aW1lLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CQkgZGVsYXlfaW5fbXMsCi0JCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKKwkJCSh2b2lk KSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkJCSBkZWxheV9pbl9tcywKKwkJCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKIAkJ fQogCiAJCS8qIFJlc2V0IHRoZSBsYXRjaCwgbG9vcC4gKi8KLQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5j IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCmluZGV4IDIzMjZmMzkxZDM0 Li40YjQ2YTdjYzhjYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVj dGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMjYs NyArMjYsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInBvc3RncmVzX2Zkdy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2gu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCkBAIC03MzEsOCArNzMxLDggQEAgZG9fc3FsX2NvbW1hbmRfZW5kKFBHY29u biAqY29ubiwgY29uc3QgY2hhciAqc3FsLCBib29sIGNvbnN1bWVfaW5wdXQpCiAJLyoKIAkg KiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJv bSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZhaWxhYmxl LCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfcmVzdWx0IHRvIGNhbGwKLQkgKiBQUWdldFJlc3Vs dCB3aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0LCB3 aGljaAotCSAqIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVhZCBvZiBQ UWNvbnN1bWVJbnB1dC4pCisJICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBv dmVyaGVhZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCisJICogd2hpY2ggd291bGQgYmUg bGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkg Ki8KIAlpZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCiAJCXBn ZmR3X3JlcG9ydF9lcnJvcihFUlJPUiwgTlVMTCwgY29ubiwgZmFsc2UsIHNxbCk7CkBAIC0x MzY3LDcgKzEzNjcsNyBAQCBwZ2Zkd19jYW5jZWxfcXVlcnlfZW5kKFBHY29ubiAqY29ubiwg VGltZXN0YW1wVHogZW5kdGltZSwgYm9vbCBjb25zdW1lX2lucHV0KQogCS8qCiAJICogSWYg cmVxdWVzdGVkLCBjb25zdW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhl IHNvY2tldC4gKE5vdGUKIAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhp cyBhbGxvd3MgcGdmZHdfZ2V0X2NsZWFudXBfcmVzdWx0IHRvCi0JICogY2FsbCBQUWdldFJl c3VsdCB3aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0 LAorCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBv ZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCiAJICogd2hpY2ggd291bGQgYmUgbGFyZ2UgY29t cGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlpZiAo Y29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCkBAIC0xNDYxLDcgKzE0 NjEsNyBAQCBwZ2Zkd19leGVjX2NsZWFudXBfcXVlcnlfZW5kKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqcXVlcnksCiAJLyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2 ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQg aWYgYWxsIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51 cF9yZXN1bHQgdG8KLQkgKiBjYWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUg b3ZlcmhlYWQgb2YgV2FpdExhdGNoT3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3 aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwK IAkgKiB3aGljaCB3b3VsZCBiZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2Yg UFFjb25zdW1lSW5wdXQuKQogCSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1 bWVJbnB1dChjb25uKSkKQEAgLTE1NDEsMTIgKzE1NDEsMTIgQEAgcGdmZHdfZ2V0X2NsZWFu dXBfcmVzdWx0KFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSwgUEdyZXN1bHQg KipyZXN1bHQsCiAJCQkJCXBnZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0 ZW5zaW9uTmV3KCJQb3N0Z3Jlc0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJCS8qIFNsZWVw IHVudGlsIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGRvICovCi0JCQkJd2MgPSBXYWl0TGF0Y2hP clNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfU09DS0VU X1JFQURBQkxFIHwKLQkJCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCQkJICAgUFFzb2NrZXQoY29ubiksCi0JCQkJCQkJCQkgICBjdXJfdGlt ZW91dCwgcGdmZHdfd2VfY2xlYW51cF9yZXN1bHQpOwotCQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQkJd2MgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVAsCisJCQkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfU09DS0VUX1JF QURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJCQkgICBjdXJfdGlt ZW91dCwgcGdmZHdfd2VfY2xlYW51cF9yZXN1bHQpOworCQkJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDUzNzMzZDY0MmQw Li4yZGRmZTEzMDJmMiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAg LTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvdGxpc3QuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3LmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0 LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9h dC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtNzM1NCw3ICs3MzU0LDcgQEAgcG9z dGdyZXNGb3JlaWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJ QXNzZXJ0KHBlbmRpbmdBcmVxID09IGFyZXEpOwogCiAJQWRkV2FpdEV2ZW50VG9TZXQoc2V0 LCBXTF9TT0NLRVRfUkVBREFCTEUsIFBRc29ja2V0KGZzc3RhdGUtPmNvbm4pLAotCQkJCQkg IE5VTEwsIGFyZXEpOworCQkJCQkgIDAsIGFyZXEpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dt bAppbmRleCAyYzM5MzM4NWE5MS4uMzE3MTA1NGU1NWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9iZ3dvcmtlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCkBA IC0yMjcsNyArMjI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogICAg cmVpbml0aWFsaXplcyB0aGUgY2x1c3RlciBkdWUgdG8gYSBiYWNrZW5kIGZhaWx1cmUuICBC YWNrZW5kcyB3aGljaCBuZWVkCiAgICB0byBzdXNwZW5kIGV4ZWN1dGlvbiBvbmx5IHRlbXBv cmFyaWx5IHNob3VsZCB1c2UgYW4gaW50ZXJydXB0aWJsZSBzbGVlcAogICAgcmF0aGVyIHRo YW4gZXhpdGluZzsgdGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgY2FsbGluZwotICAgPGZ1bmN0 aW9uPldhaXRMYXRjaCgpPC9mdW5jdGlvbj4uIE1ha2Ugc3VyZSB0aGUKKyAgIDxmdW5jdGlv bj5XYWl0SW50ZXJydXB0KCk8L2Z1bmN0aW9uPi4gTWFrZSBzdXJlIHRoZQogICAgPGxpdGVy YWw+V0xfUE9TVE1BU1RFUl9ERUFUSDwvbGl0ZXJhbD4gZmxhZyBpcyBzZXQgd2hlbiBjYWxs aW5nIHRoYXQgZnVuY3Rpb24sIGFuZAogICAgdmVyaWZ5IHRoZSByZXR1cm4gY29kZSBmb3Ig YSBwcm9tcHQgZXhpdCBpbiB0aGUgZW1lcmdlbmN5IGNhc2UgdGhhdAogICAgPGNvbW1hbmQ+ cG9zdGdyZXM8L2NvbW1hbmQ+IGl0c2VsZiBoYXMgdGVybWluYXRlZC4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21s CmluZGV4IGZhNjhkNGQwMjRhLi45YjFmZTE0N2Q2YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3NvdXJjZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCkBAIC05 ODksMTkgKzk4OSwxOSBAQCBNZW1vcnlDb250ZXh0U3dpdGNoVG8oTWVtb3J5Q29udGV4dCBj b250ZXh0KQogICAgICBjYWxsIGFzeW5jLXNpZ25hbCBzYWZlIGZ1bmN0aW9ucyAoYXMgZGVm aW5lZCBpbiBQT1NJWCkgYW5kIGFjY2VzcwogICAgICB2YXJpYWJsZXMgb2YgdHlwZSA8bGl0 ZXJhbD52b2xhdGlsZSBzaWdfYXRvbWljX3Q8L2xpdGVyYWw+LiBBIGZldwogICAgICBmdW5j dGlvbnMgaW4gPGNvbW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IGFyZSBhbHNvIGRlZW1lZCBz aWduYWwgc2FmZSwgaW1wb3J0YW50bHkKLSAgICAgPGZ1bmN0aW9uPlNldExhdGNoKCk8L2Z1 bmN0aW9uPi4KKyAgICAgPGZ1bmN0aW9uPlJhaXNlSW50ZXJydXB0KCk8L2Z1bmN0aW9uPi4K ICAgICA8L3BhcmE+CiAgICAgPHBhcmE+CiAgICAgIEluIG1vc3QgY2FzZXMgc2lnbmFsIGhh bmRsZXJzIHNob3VsZCBkbyBub3RoaW5nIG1vcmUgdGhhbiBub3RlCiAgICAgIHRoYXQgYSBz aWduYWwgaGFzIGFycml2ZWQsIGFuZCB3YWtlIHVwIGNvZGUgcnVubmluZyBvdXRzaWRlIG9m Ci0gICAgIHRoZSBoYW5kbGVyIHVzaW5nIGEgbGF0Y2guIEFuIGV4YW1wbGUgb2Ygc3VjaCBh IGhhbmRsZXIgaXMgdGhlCisgICAgIHRoZSBoYW5kbGVyIHVzaW5nIFJhaXNlSW50ZXJydXB0 KCkuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGhhbmRsZXIgaXMgdGhlCiAgICAgIGZvbGxvd2lu ZzoKIDxwcm9ncmFtbGlzdGluZz4KIHN0YXRpYyB2b2lkCiBoYW5kbGVfc2lnaHVwKFNJR05B TF9BUkdTKQogewogICAgIGdvdF9TSUdIVVAgPSB0cnVlOwotICAgIFNldExhdGNoKE15TGF0 Y2gpOworICAgIFJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9 CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwppbmRleCA3OTNiZDMzY2I0ZC4uOWY1NGQ3YTEyZTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNs dWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZnJlZXNwYWNlLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19ydXNhZ2UuaCIKQEAgLTI2 MDcsMTEgKzI2MDgsMTEgQEAgbGF6eV90cnVuY2F0ZV9oZWFwKExWUmVsU3RhdGUgKnZhY3Jl bCkKIAkJCQlyZXR1cm47CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUwsCi0JCQkJ CQkJIFdBSVRfRVZFTlRfVkFDVVVNX1RSVU5DQVRFKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJCQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRFUlZB TCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfVkFDVVVNX1RSVU5DQVRFKTsKKwkJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCX0KIAogCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vUkVBRE1FCmluZGV4IDZlNDcxMWRhY2U3Li5iMTJkOGJlNjQ3YyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRQpAQCAtNzk0LDcgKzc5NCw3IEBAIGNv bW1pdCB0byBtaW5pbWl6ZSB0aGUgd2luZG93IGluIHdoaWNoIHRoZSBmaWxlc3lzdGVtIGNo YW5nZSBoYXMgYmVlbiBtYWRlCiBidXQgdGhlIHRyYW5zYWN0aW9uIGlzbid0IGd1YXJhbnRl ZWQgY29tbWl0dGVkLgogCiBUaGUgd2Fsd3JpdGVyIHJlZ3VsYXJseSB3YWtlcyB1cCAodmlh IHdhbF93cml0ZXJfZGVsYXkpIG9yIGlzIHdva2VuIHVwCi0odmlhIGl0cyBsYXRjaCwgd2hp Y2ggaXMgc2V0IGJ5IGJhY2tlbmRzIGNvbW1pdHRpbmcgYXN5bmNocm9ub3VzbHkpIGFuZAor KHZpYSBhbiBpbnRlcnJ1cHQsIHdoaWNoIGlzIHNldCBieSBiYWNrZW5kcyBjb21taXR0aW5n IGFzeW5jaHJvbm91c2x5KSBhbmQKIHBlcmZvcm1zIGFuIFhMb2dCYWNrZ3JvdW5kRmx1c2go KS4gIFRoaXMgY2hlY2tzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdAogY29tcGxldGVseSBm aWxsZWQgV0FMIHBhZ2UuICBJZiB0aGF0IGhhcyBtb3ZlZCBmb3J3YXJkcywgdGhlbiB3ZSB3 cml0ZSBhbGwKIHRoZSBjaGFuZ2VkIGJ1ZmZlcnMgdXAgdG8gdGhhdCBwb2ludCwgc28gdGhh dCB1bmRlciBmdWxsIGxvYWQgd2Ugd3JpdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9w YXJhbGxlbC5jCmluZGV4IDRhMmUzNTJkNTc5Li45YTZmYzBmNjEzYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgpAQCAtNzM4LDE2ICs3MzksMTYgQEAgV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXsK IAkJCQkvKgogCQkJCSAqIFdvcmtlciBub3QgeWV0IHN0YXJ0ZWQsIHNvIHdlIG11c3Qgd2Fp dC4gIFRoZSBwb3N0bWFzdGVyCi0JCQkJICogd2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtl cidzIHN0YXRlIGNoYW5nZXMuICBPdXIgbGF0Y2gKLQkJCQkgKiBtaWdodCBhbHNvIGdldCBz ZXQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCBidXQgaWYgc28gd2UnbGwKLQkJCQkgKiBqdXN0 IGVuZCB1cCB3YWl0aW5nIGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCisJCQkJICogd2ls bCBub3RpZnkgdXMgaWYgdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuICBUaGUKKwkJCQkg KiBpbnRlcnJ1cHQgbWlnaHQgYWxzbyBnZXQgc2V0IGZvciBzb21lIG90aGVyIHJlYXNvbiwg YnV0IGlmCisJCQkJICogc28gd2UnbGwganVzdCBlbmQgdXAgd2FpdGluZyBmb3IgdGhlIHNh bWUgd29ya2VyIGFnYWluLgogCQkJCSAqLwotCQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJCQlyYyA9IFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSAgIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIC0xLCBXQUlU X0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCWlmIChyYyAmIFdMX0lOVEVSUlVQ VCkKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CX0KIAkJfQogCkBAIC04NTYsMTUgKzg1NywxNyBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCSAqIHRoZSB3b3JrZXIgd3Jp dGVzIG1lc3NhZ2VzIGFuZCB0ZXJtaW5hdGVzIGFmdGVyIHRoZQogCQkJCSAqIENIRUNLX0ZP Ul9JTlRFUlJVUFRTKCkgbmVhciB0aGUgdG9wIG9mIHRoaXMgZnVuY3Rpb24gYW5kCiAJCQkJ ICogYmVmb3JlIHRoZSBjYWxsIHRvIEdldEJhY2tncm91bmRXb3JrZXJQaWQoKS4gIEluIHRo YXQgY2FzZSwKLQkJCQkgKiBvciBsYXRjaCBzaG91bGQgaGF2ZSBiZWVuIHNldCBhcyB3ZWxs IGFuZCB0aGUgcmlnaHQgdGhpbmdzCi0JCQkJICogd2lsbCBoYXBwZW4gb24gdGhlIG5leHQg cGFzcyB0aHJvdWdoIHRoZSBsb29wLgorCQkJCSAqIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCBzaG91bGQgaGF2ZSBiZWVuIHNldCBhcyB3ZWxsIGFuZAorCQkJCSAqIHRoZSByaWdodCB0 aGluZ3Mgd2lsbCBoYXBwZW4gb24gdGhlIG5leHQgcGFzcyB0aHJvdWdoIHRoZQorCQkJCSAq IGxvb3AuCiAJCQkJICovCiAJCQl9CiAJCX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0 Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAotCQkJCQkJIFdB SVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAorCQkJCQkJ CSBXQUlUX0VWRU5UX1BBUkFMTEVMX0ZJTklTSCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJaWYgKHBjeHQtPnRvYyAhPSBOVUxMKQpA QCAtMTAxNyw3ICsxMDIwLDcgQEAgSGFuZGxlUGFyYWxsZWxNZXNzYWdlSW50ZXJydXB0KHZv aWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJUGFyYWxsZWxNZXNzYWdlUGVu ZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCBmMTRkMzkzM2FlYy4uZTc0MDI1Y2Q0NTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKQEAgLTg1LDkgKzg1LDkgQEAKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3Qu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVk aWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2NhcnJheS5oIgpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgWExvZ1NldEFzeW5jWGFjdExT TihYTG9nUmVjUHRyIGFzeW5jWGFjdExTTikKIAkJUHJvY051bWJlcgl3YWx3cml0ZXJQcm9j ID0gcHJvY2dsb2JhbC0+d2Fsd3JpdGVyUHJvYzsKIAogCQlpZiAod2Fsd3JpdGVyUHJvYyAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVy KHdhbHdyaXRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsIFByb2NHbG9iYWwtPndhbHdyaXRlclByb2MpOwogCX0KIH0K IApAQCAtOTM1NCwxMSArOTM1NCwxMSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNrdXBTdGF0 ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2FpdGluZyA9 IHRydWU7CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkJIDEwMDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZF KTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgMTAwMEwsCisJ CQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCWlmICgrK3dhaXRz ID49IHNlY29uZHNfYmVmb3JlX3dhcm5pbmcpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IGJjYTFkMzk1NjgzLi5kY2Y3MzJmMmE3NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTI5LDYgKzI5LDcg QEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC03MjAsMTcg KzcyMSwxNyBAQCBwZ19wcm9tb3RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlpbnQJCQly YzsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVApOwogCiAJCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJ CQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog Ci0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAotCQkJCQkgICAxMDAwTCAvIFdBSVRT X1BFUl9TRUNPTkQsCi0JCQkJCSAgIFdBSVRfRVZFTlRfUFJPTU9URSk7CisJCXJjID0gV2Fp dEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdM X0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAorCQkJCQkJ ICAgMTAwMEwgLyBXQUlUU19QRVJfU0VDT05ELAorCQkJCQkJICAgV0FJVF9FVkVOVF9QUk9N T1RFKTsKIAogCQkvKgogCQkgKiBFbWVyZ2VuY3kgYmFpbG91dCBpZiBwb3N0bWFzdGVyIGhh cyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggODY5Y2I1MjQwODIuLjExZGJhNmFjOWEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNTMs OSArNTMsMTAgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w bXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAi dXRpbHMvZGF0ZXRpbWUuaCIKQEAgLTMxNiwyMyArMzE3LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg WExvZ1JlY292ZXJ5Q3RsRGF0YQogCSAqLwogCWJvb2wJCVNoYXJlZFByb21vdGVJc1RyaWdn ZXJlZDsKIAotCS8qCi0JICogcmVjb3ZlcnlXYWtldXBMYXRjaCBpcyB1c2VkIHRvIHdha2Ug dXAgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byBjb250aW51ZQotCSAqIFdBTCByZXBsYXksIGlm IGl0IGlzIHdhaXRpbmcgZm9yIFdBTCB0byBhcnJpdmUgb3IgcHJvbW90aW9uIHRvIGJlCi0J ICogcmVxdWVzdGVkLgotCSAqCi0JICogTm90ZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mg YWxzbyB1c2VzIGFub3RoZXIgbGF0Y2gsIGl0cyBwcm9jTGF0Y2gsCi0JICogdG8gd2FpdCBm b3IgcmVjb3ZlcnkgY29uZmxpY3QuIElmIHdlIGdldCByaWQgb2YgcmVjb3ZlcnlXYWtldXBM YXRjaCBmb3IKLQkgKiBzaWduYWxpbmcgdGhlIHN0YXJ0dXAgcHJvY2VzcyBpbiBmYXZvciBv ZiB1c2luZyBpdHMgcHJvY0xhdGNoLCB3aGljaAotCSAqIGNvbXBvcnRzIGJldHRlciB3aXRo IHBvc3NpYmxlIGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJzIHVzaW5nIHRoYXQgbGF0Y2guCi0J ICogQnV0IHdlIHNob3VsZCBub3QgZG8gdGhhdCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nl c3MgZG9lc24ndCBhc3N1bWUKLQkgKiB0aGF0IGl0J3Mgd2FrZW4gdXAgYnkgd2FscmVjZWl2 ZXIgcHJvY2VzcyBvciBTSUdIVVAgc2lnbmFsIGhhbmRsZXIKLQkgKiB3aGlsZSBpdCdzIHdh aXRpbmcgZm9yIHJlY292ZXJ5IGNvbmZsaWN0LiBUaGUgc2VwYXJhdGUgbGF0Y2hlcywKLQkg KiByZWNvdmVyeVdha2V1cExhdGNoIGFuZCBwcm9jTGF0Y2gsIHNob3VsZCBiZSB1c2VkIGZv ciBpbnRlci1wcm9jZXNzCi0JICogY29tbXVuaWNhdGlvbiBmb3IgV0FMIHJlcGxheSBhbmQg cmVjb3ZlcnkgY29uZmxpY3QsIHJlc3BlY3RpdmVseS4KLQkgKi8KLQlMYXRjaAkJcmVjb3Zl cnlXYWtldXBMYXRjaDsKLQogCS8qCiAJICogTGFzdCByZWNvcmQgc3VjY2Vzc2Z1bGx5IHJl cGxheWVkLgogCSAqLwpAQCAtNDY3LDcgKzQ1MSw2IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5p dCh2b2lkKQogCW1lbXNldChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNpemVvZihYTG9nUmVjb3Zl cnlDdGxEYXRhKSk7CiAKIAlTcGluTG9ja0luaXQoJlhMb2dSZWNvdmVyeUN0bC0+aW5mb19s Y2spOwotCUluaXRTaGFyZWRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1 cExhdGNoKTsKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVj b3ZlcnlOb3RQYXVzZWRDVik7CiB9CiAKQEAgLTU0MSwxMyArNTI0LDYgQEAgSW5pdFdhbFJl Y292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3du X3B0ciwKIAlyZWFkUmVjb3ZlcnlTaWduYWxGaWxlKCk7CiAJdmFsaWRhdGVSZWNvdmVyeVBh cmFtZXRlcnMoKTsKIAotCS8qCi0JICogVGFrZSBvd25lcnNoaXAgb2YgdGhlIHdha2V1cCBs YXRjaCBpZiB3ZSdyZSBnb2luZyB0byBzbGVlcCBkdXJpbmcKLQkgKiByZWNvdmVyeSwgaWYg cmVxdWlyZWQuCi0JICovCi0JaWYgKEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJT3du TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7Ci0KIAkvKgog CSAqIFNldCB0aGUgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIG5vdywgYXMgaXQgd2lsbCBiZSBu ZWVkZWQgd2hlbiByZWFkaW5nCiAJICogdGhlIGNoZWNrcG9pbnQgcmVjb3JkIHJlcXVpcmVk IChiYWNrdXBfbGFiZWwgb3Igbm90KS4KQEAgLTE2MzUsMTMgKzE2MTEsNiBAQCBTaHV0ZG93 bldhbFJlY292ZXJ5KHZvaWQpCiAJCXNucHJpbnRmKHJlY292ZXJ5UGF0aCwgTUFYUEdQQVRI LCBYTE9HRElSICIvUkVDT1ZFUllISVNUT1JZIik7CiAJCXVubGluayhyZWNvdmVyeVBhdGgp OwkvKiBpZ25vcmUgYW55IGVycm9yICovCiAJfQotCi0JLyoKLQkgKiBXZSBkb24ndCBuZWVk IHRoZSBsYXRjaCBhbnltb3JlLiBJdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gZGlz b3duCi0JICogaXQsIGJ1dCBsZXQncyBkbyBpdCBmb3IgdGhlIHNha2Ugb2YgdGlkaW5lc3Mu Ci0JICovCi0JaWYgKEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJRGlzb3duTGF0Y2go JlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiB9CiAKIC8qCkBAIC0x ODAxLDcgKzE3NzAsNyBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCX0KIAogCQkJ LyoKLQkJCSAqIElmIHdlJ3ZlIGJlZW4gYXNrZWQgdG8gbGFnIHRoZSBwcmltYXJ5LCB3YWl0 IG9uIGxhdGNoIHVudGlsCisJCQkgKiBJZiB3ZSd2ZSBiZWVuIGFza2VkIHRvIGxhZyB0aGUg cHJpbWFyeSwgd2FpdCBvbiBpbnRlcnJ1cHQgdW50aWwKIAkJCSAqIGVub3VnaCB0aW1lIGhh cyBwYXNzZWQuCiAJCQkgKi8KIAkJCWlmIChyZWNvdmVyeUFwcGx5RGVsYXkoeGxvZ3JlYWRl cikpCkBAIC0xODMxLDggKzE4MDAsNyBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAog CQkJLyoKIAkJCSAqIElmIHdlIHJlcGxheWVkIGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdh aXRpbmcgZm9yIHRoZW4gd2FsawotCQkJICogb3ZlciB0aGUgc2hhcmVkIG1lbW9yeSBhcnJh eSBhbmQgc2V0IGxhdGNoZXMgdG8gbm90aWZ5IHRoZQotCQkJICogd2FpdGVycy4KKwkJCSAq IG92ZXIgdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgYW5kIHdha2UgdXAgdGhlIHdhaXRlcnMu CiAJCQkgKi8KIAkJCWlmICh3YWl0TFNOU3RhdGUgJiYKIAkJCQkoWExvZ1JlY292ZXJ5Q3Rs LT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0KQEAgLTMwMzQsOCArMzAwMiw4IEBAIHJlY292 ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlkZWxheVVudGlsID0g VGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKHh0aW1lLCByZWNvdmVyeV9taW5fYXBwbHlf ZGVsYXkpOwogCiAJLyoKLQkgKiBFeGl0IHdpdGhvdXQgYXJtaW5nIHRoZSBsYXRjaCBpZiBp dCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5IHRoaXMKLQkgKiByZWNvcmQKKwkgKiBF eGl0IHdpdGhvdXQgY2xlYXJpbmcgdGhlIGludGVycnVwdCBpZiBpdCdzIGFscmVhZHkgcGFz dCB0aW1lIHRvIGFwcGx5CisJICogdGhpcyByZWNvcmQKIAkgKi8KIAltc2VjcyA9IFRpbWVz dGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoR2V0Q3VycmVudFRpbWVzdGFtcCgpLCBkZWxh eVVudGlsKTsKIAlpZiAobXNlY3MgPD0gMCkKQEAgLTMwNDMsMTEgKzMwMTEsMTkgQEAgcmVj b3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJd2hpbGUgKHRy dWUpCiAJewotCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVw TGF0Y2gpOworCQkvKgorCQkgKiBJTlRFUlJVUFRfR0VORVJBTF9XQUtVUCBpcyB1c2VkIGZv ciBhbGwgdGhlIHVzdWFsIGludGVycnVwdHMsIGxpa2UKKwkJICogY29uZmlnIHJlbG9hZHMu ICBUaGUgd2FrZXVwcyB3aGVuIG1vcmUgV0FMIGFycml2ZSB1c2UgYSBkaWZmZXJlbnQKKwkJ ICogaW50ZXJydXB0IG51bWJlciAoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFKSBzbyB0 aGF0IG1vcmUgV0FMCisJCSAqIGFycml2aW5nIGRvbid0IHdha2UgdXAgdGhlIHN0YXJ0dXAg cHJvY2VzcyBleGNlc3NpdmVseSwgd2hlbiB3ZSdyZQorCQkgKiB3YWl0aW5nIGluIG90aGVy IHBsYWNlcywgbGlrZSBmb3IgcmVjb3ZlcnkgY29uZmxpY3RzLgorCQkgKi8KKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBUaGlzIG1pZ2h0 IGNoYW5nZSByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkuICovCiAJCUhhbmRsZVN0YXJ0dXBQ cm9jSW50ZXJydXB0cygpOwogCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVS WV9DT05USU5VRSk7CiAJCWlmIChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkpCiAJCQlicmVh azsKIApAQCAtMzA2OCwxMCArMzA0NCwxMSBAQCByZWNvdmVyeUFwcGx5RGVsYXkoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZWxvZyhERUJVRzIsICJyZWNvdmVyeSBhcHBseSBk ZWxheSAlbGQgbWlsbGlzZWNvbmRzIiwgbXNlY3MpOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2go JlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCwKLQkJCQkJCSBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBtc2Vj cywKLQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgfAorCQkJ CQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNz LAorCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0 dXJuIHRydWU7CiB9CkBAIC0zNzE0LDE1ICszNjkxLDE3IEBAIFdhaXRGb3JXQUxUb0JlY29t ZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJ LyogRG8gYmFja2dyb3VuZCB0YXNrcyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICov CiAJCQkJCQlLbm93bkFzc2lnbmVkVHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsK IAotCQkJCQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdh a2V1cExhdGNoLAotCQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJ CQkJCQkJCQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAot CQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFM KTsKLQkJCQkJCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNP VkVSWV9DT05USU5VRSB8CisJCQkJCQkJCQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwKKwkJCQkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfAorCQkJCQkJ CQkJCQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkJIHdhaXRfdGltZSwKKwkJ CQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfUkVUUklFVkVfUkVUUllfSU5URVJWQUwp OworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFKTsK IAkJCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAogCQkJCQkJLyogSGFuZGxl IGludGVycnVwdCBzaWduYWxzIG9mIHN0YXJ0dXAgcHJvY2VzcyAqLworCQkJCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCQkJCUhhbmRsZVN0YXJ0 dXBQcm9jSW50ZXJydXB0cygpOwogCQkJCQl9CiAJCQkJCWxhc3RfZmFpbF90aW1lID0gbm93 OwpAQCAtMzk4OSwxMSArMzk2OCwxMiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUo WExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJICogV2FpdCBmb3Ig bW9yZSBXQUwgdG8gYXJyaXZlLCB3aGVuIHdlIHdpbGwgYmUgd29rZW4KIAkJCQkJICogaW1t ZWRpYXRlbHkgYnkgdGhlIFdBTCByZWNlaXZlci4KIAkJCQkJICovCi0JCQkJCSh2b2lkKSBX YWl0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCwKLQkJCQkJ CQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJIC0x TCwKLQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0pOwotCQkJCQlS ZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCQkJ CQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5V RSB8CisJCQkJCQkJCQkJIDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJ CQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJCSAt MUwsCisJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSk7CisJCQkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSk7CiAJCQkJCWJy ZWFrOwogCQkJCX0KIApAQCAtNDAxMyw2ICszOTkzLDcgQEAgV2FpdEZvcldBTFRvQmVjb21l QXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29sIHJhbmRBY2Nlc3MsCiAJCSAqIFRo aXMgcG9zc2libHktbG9uZyBsb29wIG5lZWRzIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0 YXJ0dXAKIAkJICogcHJvY2Vzcy4KIAkJICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCk7CiAJCUhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwog CX0KIApAQCAtNDQ4Nyw3ICs0NDY4LDEwIEBAIENoZWNrUHJvbW90ZVNpZ25hbCh2b2lkKQog dm9pZAogV2FrZXVwUmVjb3Zlcnkodm9pZCkKIHsKLQlTZXRMYXRjaCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKKwlQcm9jTnVtYmVyCXByb2NubyA9ICgodm9s YXRpbGUgUFJPQ19IRFIgKikgUHJvY0dsb2JhbCktPnN0YXJ0dXBQcm9jOworCisJaWYgKHBy b2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSwgcHJvY25vKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggNTI5NWI4NWZlMDcuLjQxZjBjZGU2Mjcy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwpAQCAtODUzLDkg Kzg1Myw5IEBAIHdhbF9zZWdtZW50X2Nsb3NlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUpCiAg KiBvdXRwdXQgbWV0aG9kIG91dHNpZGUgd2Fsc2VuZGVyLCBlLmcuIGluIGEgYmd3b3JrZXIu CiAgKgogICogVE9ETzogVGhlIHdhbHNlbmRlciBoYXMgaXRzIG93biB2ZXJzaW9uIG9mIHRo aXMsIGJ1dCBpdCByZWxpZXMgb24gdGhlCi0gKiB3YWxzZW5kZXIncyBsYXRjaCBiZWluZyBz ZXQgd2hlbmV2ZXIgV0FMIGlzIGZsdXNoZWQuIE5vIHN1Y2ggaW5mcmFzdHJ1Y3R1cmUKLSAq IGV4aXN0cyBmb3Igbm9ybWFsIGJhY2tlbmRzLCBzbyB3ZSBoYXZlIHRvIGRvIGEgY2hlY2sv c2xlZXAvcmVwZWF0IHN0eWxlIG9mCi0gKiBsb29wIGZvciBub3cuCisgKiB3YWxzZW5kZXIn cyBpbnRlcnJ1cHQgYmVpbmcgc2V0IHdoZW5ldmVyIFdBTCBpcyBmbHVzaGVkLiBObyBzdWNo CisgKiBpbmZyYXN0cnVjdHVyZSBleGlzdHMgZm9yIG5vcm1hbCBiYWNrZW5kcywgc28gd2Ug aGF2ZSB0byBkbyBhCisgKiBjaGVjay9zbGVlcC9yZXBlYXQgc3R5bGUgb2YgbG9vcCBmb3Ig bm93LgogICovCiBpbnQKIHJlYWRfbG9jYWxfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAq c3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nd2FpdC5jCmluZGV4IDRjNDg5ZTRjZWEzLi41NGQyYTcwZjQ4MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9n d2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGls cy9mbWdycHJvdG9zLmgiCkBAIC0xNDYsOSArMTQ2LDkgQEAgZGVsZXRlTFNOV2FpdGVyKHZv aWQpCiB9CiAKIC8qCi0gKiBSZW1vdmUgd2FpdGVycyB3aG9zZSBMU04gaGFzIGJlZW4gcmVw bGF5ZWQgZnJvbSB0aGUgaGVhcCBhbmQgc2V0IHRoZWlyCi0gKiBsYXRjaGVzLiAgSWYgSW52 YWxpZFhMb2dSZWNQdHIgaXMgZ2l2ZW4sIHJlbW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBo ZWFwCi0gKiBhbmQgc2V0IGxhdGNoZXMgZm9yIGFsbCB3YWl0ZXJzLgorICogUmVtb3ZlIHdh aXRlcnMgd2hvc2UgTFNOIGhhcyBiZWVuIHJlcGxheWVkIGZyb20gdGhlIGhlYXAgYW5kIHdh a2UgdGhlbSB1cC4KKyAqIElmIEludmFsaWRYTG9nUmVjUHRyIGlzIGdpdmVuLCByZW1vdmUg YWxsIHdhaXRlcnMgZnJvbSB0aGUgaGVhcCBhbmQgd2FrZQorICogdGhlbSBhbGwgdXAuCiAg Ki8KIHZvaWQKIFdhaXRMU05XYWtldXAoWExvZ1JlY1B0ciBjdXJyZW50TFNOKQpAQCAtMTg1 LDE0ICsxODUsMTMgQEAgV2FpdExTTldha2V1cChYTG9nUmVjUHRyIGN1cnJlbnRMU04pCiAJ TFdMb2NrUmVsZWFzZShXYWl0TFNOTG9jayk7CiAKIAkvKgotCSAqIFNldCBsYXRjaGVzIGZv ciBwcm9jZXNzZXMsIHdob3NlIHdhaXRlZCBMU05zIGFyZSBhbHJlYWR5IHJlcGxheWVkLiBB cwotCSAqIHRoZSB0aW1lIGNvbnN1bWluZyBvcGVyYXRpb25zLCB3ZSBkbyBpdCB0aGlzIG91 dHNpZGUgb2YgV2FpdExTTkxvY2suCi0JICogVGhpcyBpcyAgYWN0dWFsbHkgZmluZSBiZWNh dXNlIHByb2NMYXRjaCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBqdXN0Ci0JICogY2FuIHBv dGVudGlhbGx5IHNldCB0aGUgd3JvbmcgcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRj aC4KKwkgKiBTZW5kIHRoZSBpbnRlcnJ1cHRzLiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJh Y2tlbmRzIGhhdmUgZXhpdGVkIHNpbmNlCisJICogd2UgcmVsZWFzZWQgdGhlIGxvY2ssIHNv IHdlIG1heSBpbnRlcnJ1cHQgd3JvbmcgYmFja2VuZCwgYnV0IHRoYXQncworCSAqIGhhcm1s ZXNzLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1XYWtlVXBQcm9jczsgaSsrKQogCXsK LQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdha2VVcFByb2NzW2ldKS0+cHJvY0xh dGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdha2VV cFByb2NzW2ldKTsKIAl9CiAJcGZyZWUod2FrZVVwUHJvY3MpOwogfQpAQCAtMjE0LDE1ICsy MTMsMTUgQEAgV2FpdExTTkNsZWFudXAodm9pZCkKIH0KIAogLyoKLSAqIFdhaXQgdXNpbmcg TXlMYXRjaCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVwbGF5ZWQsIHRoZSBwb3N0bWFzdGVy IGRpZXMgb3IKLSAqIHRpbWVvdXQgaGFwcGVucy4KKyAqIFdhaXQgdGlsbCB0aGUgZ2l2ZW4g TFNOIGlzIHJlcGxheWVkIGFuZCB3ZSBnZXQgaW50ZXJydXB0ZWQsIHRoZSBwb3N0bWFzdGVy CisgKiBkaWVzIG9yIHRpbWVvdXQgaGFwcGVucy4KICAqLwogV2FpdExTTlJlc3VsdAogV2Fp dEZvckxTTlJlcGxheShYTG9nUmVjUHRyIHRhcmdldExTTiwgaW50NjQgdGltZW91dCkKIHsK IAlYTG9nUmVjUHRyCWN1cnJlbnRMU047CiAJVGltZXN0YW1wVHogZW5kdGltZSA9IDA7Ci0J aW50CQkJd2FrZV9ldmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRI OworCWludAkJCXdha2VfZXZlbnRzID0gV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9E RUFUSDsKIAogCS8qIFNob3VsZG4ndCBiZSBjYWxsZWQgd2hlbiBzaG1lbSBpc24ndCBpbml0 aWFsaXplZCAqLwogCUFzc2VydCh3YWl0TFNOU3RhdGUpOwpAQCAtMzAzLDggKzMwMiw4IEBA IFdhaXRGb3JMU05SZXBsYXkoWExvZ1JlY1B0ciB0YXJnZXRMU04sIGludDY0IHRpbWVvdXQp CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLCB3YWtlX2V2ZW50cywgZGVsYXlfbXMsCi0JCQkJCSAgIFdBSVRfRVZFTlRfV0FJVF9G T1JfV0FMX1JFUExBWSk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgd2FrZV9ldmVudHMsIGRlbGF5X21zLAorCQkJCQkJICAgV0FJVF9F VkVOVF9XQUlUX0ZPUl9XQUxfUkVQTEFZKTsKIAogCQkvKgogCQkgKiBFbWVyZ2VuY3kgYmFp bG91dCBpZiBwb3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0aGUKQEAg LTMxNiw4ICszMTUsOCBAQCBXYWl0Rm9yTFNOUmVwbGF5KFhMb2dSZWNQdHIgdGFyZ2V0TFNO LCBpbnQ2NCB0aW1lb3V0KQogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9u IGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIpLAogCQkJCQkgZXJyY29udGV4 dCgid2hpbGUgd2FpdGluZyBmb3IgTFNOIHJlcGxheSIpKSk7CiAKLQkJaWYgKHJjICYgV0xf TEFUQ0hfU0VUKQotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJaWYgKHJjICYgV0xfSU5U RVJSVVBUKQorCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBf dGhyb3R0bGUuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMK aW5kZXggNDQ3Nzk0NWU2MTMuLmIxYzAyZjc0NzNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1 cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJi YWNrdXAvYmFzZWJhY2t1cF9zaW5rLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAK IHR5cGVkZWYgc3RydWN0IGJic2lua190aHJvdHRsZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHRo cm90dGxlKGJic2lua190aHJvdHRsZSAqc2luaywgc2l6ZV90IGluY3JlbWVudCkKIAkJKHNp bmstPnRocm90dGxpbmdfY291bnRlciAvIHNpbmstPnRocm90dGxpbmdfc2FtcGxlKTsKIAog CS8qCi0JICogU2luY2UgdGhlIGxhdGNoIGNvdWxkIGJlIHNldCByZXBlYXRlZGx5IGJlY2F1 c2Ugb2YgY29uY3VycmVudGx5IFdBTAorCSAqIFNpbmNlIHRoZSBpbnRlcnJ1cHQgY291bGQg YmUgc2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkgV0FMCiAJICogYWN0 aXZpdHksIHNsZWVwIGluIGEgbG9vcCB0byBlbnN1cmUgZW5vdWdoIHRpbWUgaGFzIHBhc3Nl ZC4KIAkgKi8KIAlmb3IgKDs7KQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgdGhyb3R0bGUoYmJz aW5rX3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQlpZiAoc2xlZXAgPD0g MCkKIAkJCWJyZWFrOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKLQkJLyogV2UncmUgZWF0aW5nIGEg cG90ZW50aWFsbHkgc2V0IGxhdGNoLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLworCQkv KiBXZSdyZSBlYXRpbmcgYSB3YWtldXAsIHNvIGNoZWNrIGZvciBpbnRlcnJ1cHRzICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyoKIAkJICogKFRBUl9TRU5EX1NJWkUg LyB0aHJvdHRsaW5nX3NhbXBsZSAqIGVsYXBzZWRfbWluX3VuaXQpIHNob3VsZCBiZQogCQkg KiB0aGUgbWF4aW11bSB0aW1lIHRvIHNsZWVwLiBUaHVzIHRoZSBjYXN0IHRvIGxvbmcgaXMg c2FmZS4KIAkJICovCi0JCXdhaXRfcmVzdWx0ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJ CQkJCVdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAot CQkJCQkJCQkobG9uZykgKHNsZWVwIC8gMTAwMCksCi0JCQkJCQkJCVdBSVRfRVZFTlRfQkFT RV9CQUNLVVBfVEhST1RUTEUpOworCQl3YWl0X3Jlc3VsdCA9IFdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCQlXTF9JTlRFUlJVUFQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCShsb25nKSAoc2xl ZXAgLyAxMDAwKSwKKwkJCQkJCQkJCVdBSVRfRVZFTlRfQkFTRV9CQUNLVVBfVEhST1RUTEUp OwogCi0JCWlmICh3YWl0X3Jlc3VsdCAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHdhaXRfcmVz dWx0ICYgV0xfSU5URVJSVVBUKQogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkv KiBEb25lIHdhaXRpbmc/ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h c3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCA4ZWQ1MDNlMWMx Yi4uZTBiMTRmNDk3NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtOTEsNyArOTEsNyBA QAogICoJICBzaG91bGQgZ28gb3V0IGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggY29tbWl0Lgog ICoKICAqIDUuIFVwb24gcmVjZWlwdCBvZiBhIFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCBz aWduYWwsIHRoZSBzaWduYWwgaGFuZGxlcgotICoJICBzZXRzIHRoZSBwcm9jZXNzJ3MgbGF0 Y2gsIHdoaWNoIHRyaWdnZXJzIHRoZSBldmVudCB0byBiZSBwcm9jZXNzZWQKKyAqCSAgcmFp c2VzIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgd2hpY2ggdHJpZ2dlcnMgdGhlIGV2ZW50 IHRvIGJlIHByb2Nlc3NlZAogICoJICBpbW1lZGlhdGVseSBpZiB0aGlzIGJhY2tlbmQgaXMg aWRsZSAoaS5lLiwgaXQgaXMgd2FpdGluZyBmb3IgYSBmcm9udGVuZAogICoJICBjb21tYW5k IGFuZCBpcyBub3Qgd2l0aGluIGEgdHJhbnNhY3Rpb24gYmxvY2suIEMuZi4KICAqCSAgUHJv Y2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSkuICBPdGhlcndpc2UgdGhlIGhhbmRsZXIgbWF5 IG9ubHkgc2V0IGEKQEAgLTE0MCw2ICsxNDAsNyBAQAogI2luY2x1ZGUgImxpYnBxL2xpYnBx LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jc2lnbmFsLmgiCkBAIC00MDYsOSArNDA3LDkgQEAgc3RhdGljIE5vdGlmaWNhdGlvbkxp c3QgKnBlbmRpbmdOb3RpZmllcyA9IE5VTEw7CiAvKgogICogSW5ib3VuZCBub3RpZmljYXRp b25zIGFyZSBpbml0aWFsbHkgcHJvY2Vzc2VkIGJ5IEhhbmRsZU5vdGlmeUludGVycnVwdCgp LAogICogY2FsbGVkIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIuIFRoYXQganVzdCBz ZXRzIHRoZQotICogbm90aWZ5SW50ZXJydXB0UGVuZGluZyBmbGFnIGFuZCBzZXRzIHRoZSBw cm9jZXNzCi0gKiBsYXRjaC4gUHJvY2Vzc05vdGlmeUludGVycnVwdCgpIHdpbGwgdGhlbiBi ZSBjYWxsZWQgd2hlbmV2ZXIgaXQncyBzYWZlIHRvCi0gKiBhY3R1YWxseSBkZWFsIHdpdGgg dGhlIGludGVycnVwdC4KKyAqIG5vdGlmeUludGVycnVwdFBlbmRpbmcgZmxhZyBhbmQgcmFp c2VzIHRoZSBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAKKyAqIGludGVycnVwdC4gIFByb2Nl c3NOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5ldmVyIGl0J3Mg c2FmZQorICogdG8gYWN0dWFsbHkgZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQuCiAgKi8KIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7CiAK QEAgLTE4MTIsNyArMTgxMyw3IEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKQogCW5v dGlmeUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCiAJLyogbWFrZSBzdXJlIHRoZSBldmVu dCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBA IC0xODIyLDcgKzE4MjMsNyBAQCBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQodm9pZCkKICAqCQl0 cmFuc21pdHRpbmcgUmVhZHlGb3JRdWVyeSBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQgY29t bWFuZCwgYW5kCiAgKgkJYWxzbyBpZiBhIG5vdGlmeSBzaWduYWwgb2NjdXJzIHdoaWxlIHJl YWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQuCiAgKgkJSGFuZGxlTm90aWZ5SW50ZXJydXB0KCkg d2lsbCBjYXVzZSB0aGUgcmVhZCB0byBiZSBpbnRlcnJ1cHRlZAotICoJCXZpYSB0aGUgcHJv Y2VzcydzIGxhdGNoLCBhbmQgdGhpcyByb3V0aW5lIHdpbGwgZ2V0IGNhbGxlZC4KKyAqCQl3 aXRoIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgYW5kIHRoaXMgcm91dGluZSB3aWxsIGdl dCBjYWxsZWQuCiAgKgkJSWYgd2UgYXJlIHRydWx5IGlkbGUgKGllLCAqbm90KiBpbnNpZGUg YSB0cmFuc2FjdGlvbiBibG9jayksCiAgKgkJcHJvY2VzcyB0aGUgaW5jb21pbmcgbm90aWZp ZXMuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA4NmYzNmIzNjk1NC4uNDgwNTM4 ODY4N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDExLDggKzI0MTEsOCBAQCB2 YWN1dW1fZGVsYXlfcG9pbnQodm9pZCkKIAkJLyoKIAkJICogV2UgZG9uJ3Qgd2FudCB0byBp Z25vcmUgcG9zdG1hc3RlciBkZWF0aCBkdXJpbmcgdmVyeSBsb25nIHZhY3V1bXMKIAkJICog d2l0aCB2YWN1dW1fY29zdF9kZWxheSBjb25maWd1cmVkLiAgV2UgY2FuJ3QgdXNlIHRoZSB1 c3VhbAotCQkgKiBXYWl0TGF0Y2goKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBt aWNyb3NlY29uZC1iYXNlZCBzbGVlcAotCQkgKiBkdXJhdGlvbnMgYWJvdmUuCisJCSAqIFdh aXRJbnRlcnJ1cHQoKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBtaWNyb3NlY29u ZC1iYXNlZAorCQkgKiBzbGVlcCBkdXJhdGlvbnMgYWJvdmUuCiAJCSAqLwogCQlpZiAoSXNV bmRlclBvc3RtYXN0ZXIgJiYgIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCiAJCQlleGl0KDEpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGNhMGY1NGQ2NzZmLi4zMTRlM2Q4 ZmJiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtNjEsOSArNjEsOCBA QAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKLSNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJz dG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKIAog LyogU2hhcmVkIHN0YXRlIGZvciBwYXJhbGxlbC1hd2FyZSBBcHBlbmQuICovCiBzdHJ1Y3Qg UGFyYWxsZWxBcHBlbmRTdGF0ZQpAQCAtMTAyOCw3ICsxMDI3LDcgQEAgRXhlY0FwcGVuZEFz eW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCUFzc2VydChub2RlLT5hc19ldmVu dHNldCA9PSBOVUxMKTsKIAlub2RlLT5hc19ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNl dChDdXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7CiAJQWRkV2FpdEV2ZW50VG9TZXQo bm9kZS0+YXNfZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NL RVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHaXZl IGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4gKi8KIAlp ID0gLTE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggN2Y3ZWRjN2Y5ZmMu LmZiYmMzOTZjYjQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC0zNiw2 ICszNiw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvdHF1ZXVlLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUg InN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgog CiAKQEAgLTM4Miw5ICszODMsMTAgQEAgZ2F0aGVyX3JlYWRuZXh0KEdhdGhlclN0YXRlICpn YXRoZXJzdGF0ZSkKIAkJCQlyZXR1cm4gTlVMTDsKIAogCQkJLyogTm90aGluZyB0byBkbyBl eGNlcHQgd2FpdCBmb3IgZGV2ZWxvcG1lbnRzLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChN eUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJ CSBXQUlUX0VWRU5UX0VYRUNVVEVfR0FUSEVSKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJCQkJCSBXQUlUX0VWRU5UX0VYRUNVVEVfR0FUSEVSKTsKKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQludmlzaXRlZCA9IDA7CiAJCX0KIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMgYi9zcmMvYmFja2VuZC9s aWJwcS9hdXRoLmMKaW5kZXggNDdlOGM5MTYwNjAuLmVmN2NiYTY1ZTQyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0 aC5jCkBAIC0xNjYzLDggKzE2NjMsOSBAQCBpbnRlcnByZXRfaWRlbnRfcmVzcG9uc2UoY29u c3QgY2hhciAqaWRlbnRfcmVzcG9uc2UsCiAgKglvd25zIHRoZSB0Y3AgY29ubmVjdGlvbiB0 byAibG9jYWxfYWRkciIKICAqCUlmIHRoZSB1c2VybmFtZSBpcyBzdWNjZXNzZnVsbHkgcmV0 cmlldmVkLCBjaGVjayB0aGUgdXNlcm1hcC4KICAqCi0gKglYWFg6IFVzaW5nIFdhaXRMYXRj aE9yU29ja2V0KCkgYW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBpZiB0aGUK LSAqCWxhdGNoIHdhcyBzZXQgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8g dGltZW91dHMvY2FuY2VsbGF0aW9ucy4KKyAqCVhYWDogVXNpbmcgV2FpdEludGVycnVwdE9y U29ja2V0KCkgYW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorICoJaWYgdGhl IGludGVycnVwdCB3YXMgcGVuZGluZyB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25zaXZlbmVz cyB0bworICoJdGltZW91dHMvY2FuY2VsbGF0aW9ucy4KICAqLwogc3RhdGljIGludAogaWRl bnRfaW5ldChoYmFQb3J0ICpwb3J0KQpAQCAtMzA5OCw4ICszMDk5LDggQEAgUGVyZm9ybVJh ZGl1c1RyYW5zYWN0aW9uKGNvbnN0IGNoYXIgKnNlcnZlciwgY29uc3QgY2hhciAqc2VjcmV0 LCBjb25zdCBjaGFyICpwb3IKIAkgKiBwYWNrZXRzIHRvIG91ciBwb3J0IHRodXMgY2F1c2lu ZyB1cyB0byByZXRyeSBpbiBhIGxvb3AgYW5kIG5ldmVyIHRpbWUKIAkgKiBvdXQuCiAJICoK LQkgKiBYWFg6IFVzaW5nIFdhaXRMYXRjaE9yU29ja2V0KCkgYW5kIGRvaW5nIGEgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSBpZgotCSAqIHRoZSBsYXRjaCB3YXMgc2V0IHdvdWxkIGltcHJv dmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvCisJICogWFhYOiBVc2luZyBXYWl0SW50ZXJydXB0 T3JTb2NrZXQoKSBhbmQgZG9pbmcgYSBDSEVDS19GT1JfSU5URVJSVVBUUygpCisJICogaWYg dGhlIGludGVycnVwdCB3YXMgcGVuZGluZyB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25zaXZl bmVzcyB0bwogCSAqIHRpbWVvdXRzL2NhbmNlbGxhdGlvbnMuCiAJICovCiAJZ2V0dGltZW9m ZGF5KCZlbmR0aW1lLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2Jl LXNlY3VyZS1nc3NhcGkuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGku YwppbmRleCA1YTAwOTc3NmQxMi4uMjM4MmVhMDhhOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUtZ3NzYXBpLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jzd2FwLmgi CisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbmpl Y3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC00MTQs NyArNDE1LDcgQEAgYmVfZ3NzYXBpX3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXpl X3QgbGVuKQogCiAvKgogICogUmVhZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBv ZmYgdGhlIHdpcmUsIHdhaXRpbmcgdXNpbmcKLSAqIFdhaXRMYXRjaE9yU29ja2V0IGlmIHdl IHdvdWxkIGJsb2NrLgorICogV2FpdEludGVycnVwdE9yU29ja2V0IGlmIHdlIHdvdWxkIGJs b2NrLgogICoKICAqIFJlc3VsdHMgYXJlIHJlYWQgaW50byBQcUdTU1JlY3ZCdWZmZXIuCiAg KgpAQCAtNDUwLDkgKzQ1MSw4IEBAIHJlYWRfb3Jfd2FpdChQb3J0ICpwb3J0LCBzc2l6ZV90 IGxlbikKIAkJICovCiAJCWlmIChyZXQgPD0gMCkKIAkJewotCQkJV2FpdExhdGNoT3JTb2Nr ZXQoTlVMTCwKLQkJCQkJCQkgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NF UlZFUik7CisJCQlXYWl0SW50ZXJydXB0T3JTb2NrZXQoMCwgV0xfU09DS0VUX1JFQURBQkxF IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlU X0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBnb3QgYmFj ayB6ZXJvIGJ5dGVzLCBhbmQgdGhlbiB3YWl0ZWQgb24gdGhlIHNvY2tldCB0byBiZQpAQCAt NDg5LDcgKzQ4OSw3IEBAIHJlYWRfb3Jfd2FpdChQb3J0ICpwb3J0LCBzc2l6ZV90IGxlbikK ICAqCiAgKiBOb3RlIHRoYXQgdW5saWtlIHRoZSBiZV9nc3NhcGlfcmVhZC9iZV9nc3NhcGlf d3JpdGUgZnVuY3Rpb25zLCB0aGlzCiAgKiBmdW5jdGlvbiBXSUxMIGJsb2NrIG9uIHRoZSBz b2NrZXQgdG8gYmUgcmVhZHkgZm9yIHJlYWQvd3JpdGUgKHVzaW5nCi0gKiBXYWl0TGF0Y2hP clNvY2tldCkgYXMgYXBwcm9wcmlhdGUgd2hpbGUgZXN0YWJsaXNoaW5nIHRoZSBHU1NBUEkK KyAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCkgYXMgYXBwcm9wcmlhdGUgd2hpbGUgZXN0YWJs aXNoaW5nIHRoZSBHU1NBUEkKICAqIHNlc3Npb24uCiAgKi8KIHNzaXplX3QKQEAgLTY2OCw5 ICs2NjgsOCBAQCBzZWN1cmVfb3Blbl9nc3NhcGkoUG9ydCAqcG9ydCkKIAkJCQkvKiBXYWl0 IGFuZCByZXRyeSBpZiB3ZSBjb3VsZG4ndCB3cml0ZSB5ZXQgKi8KIAkJCQlpZiAocmV0IDw9 IDApCiAJCQkJewotCQkJCQlXYWl0TGF0Y2hPclNvY2tldChOVUxMLAotCQkJCQkJCQkJICBX TF9TT0NLRVRfV1JJVEVBQkxFIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAg cG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOworCQkJCQlXYWl0 SW50ZXJydXB0T3JTb2NrZXQoMCwgV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19P UEVOX1NFUlZFUik7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyBiL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS1vcGVuc3NsLmMKaW5kZXggOTFhODZkNjJhMzUuLmNkYWI2YjBmNTk1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBi L3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMKQEAgLTMyLDcgKzMyLDgg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog CkBAIC01MjIsOCArNTIzLDggQEAgYWxvb3A6CiAJCQkJZWxzZQogCQkJCQl3YWl0Zm9yID0g V0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEg7CiAKLQkJCQkodm9p ZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwgd2FpdGZvciwgcG9ydC0+c29jaywgMCwKLQkJ CQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BFTl9TRVJWRVIpOworCQkJCSh2b2lkKSBXYWl0 SW50ZXJydXB0T3JTb2NrZXQoMCwgd2FpdGZvciwgcG9ydC0+c29jaywgMCwKKwkJCQkJCQkJ CQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKIAkJCQlnb3RvIGFsb29wOwogCQkJ Y2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKIAkJCQlpZiAociA8IDAgJiYgZXJybm8gIT0gMCkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tl bmQvbGlicHEvYmUtc2VjdXJlLmMKaW5kZXggMjEzOWY4MWYyNDEuLjZlY2NhNmEwZGFjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYworKysgYi9zcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUuYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgPGFy cGEvaW5ldC5oPgogCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKLSNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInRj b3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCkBAIC0yMTMsNyArMjEzLDcgQEAgcmV0cnk6 CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNl dCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdhaXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0 RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsK IAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAvKiBubyB0aW1lb3V0ICov ICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5UX1JFQUQpOwpAQCAtMjI4 LDEyICsyMjgsMTIgQEAgcmV0cnk6CiAJCSAqIG5ldyBjb25uZWN0aW9ucyBjYW4gYmUgYWNj ZXB0ZWQuICBFeGl0aW5nIGNsZWFycyB0aGUgZGVjayBmb3IgYQogCQkgKiBwb3N0bWFzdGVy IHJlc3RhcnQuCiAJCSAqCi0JCSAqIChOb3RlIHRoYXQgd2Ugb25seSBtYWtlIHRoaXMgY2hl Y2sgd2hlbiB3ZSB3b3VsZCBvdGhlcndpc2Ugc2xlZXAgb24KLQkJICogb3VyIGxhdGNoLiAg V2UgbWlnaHQgc3RpbGwgY29udGludWUgcnVubmluZyBmb3IgYSB3aGlsZSBpZiB0aGUKLQkJ ICogcG9zdG1hc3RlciBpcyBraWxsZWQgaW4gbWlkLXF1ZXJ5LCBvciBldmVuIHRocm91Z2gg bXVsdGlwbGUgcXVlcmllcwotCQkgKiBpZiB3ZSBuZXZlciBoYXZlIHRvIHdhaXQgZm9yIHJl YWQuICBXZSBkb24ndCB3YW50IHRvIGJ1cm4gdG9vIG1hbnkKLQkJICogY3ljbGVzIGNoZWNr aW5nIGZvciB0aGlzIHZlcnkgcmFyZSBjb25kaXRpb24sIGFuZCB0aGlzIHNob3VsZCBjYXVz ZQotCQkgKiB1cyB0byBleGl0IHF1aWNrbHkgaW4gbW9zdCBjYXNlcy4pCisJCSAqIChOb3Rl IHRoYXQgd2Ugb25seSBtYWtlIHRoaXMgY2hlY2sgd2hlbiB3ZSB3b3VsZCBvdGhlcndpc2Ug c2xlZXAKKwkJICogd2FpdGluZyBmb3IgaW50ZXJydXB0LiAgV2UgbWlnaHQgc3RpbGwgY29u dGludWUgcnVubmluZyBmb3IgYSB3aGlsZQorCQkgKiBpZiB0aGUgcG9zdG1hc3RlciBpcyBr aWxsZWQgaW4gbWlkLXF1ZXJ5LCBvciBldmVuIHRocm91Z2ggbXVsdGlwbGUKKwkJICogcXVl cmllcyBpZiB3ZSBuZXZlciBoYXZlIHRvIHdhaXQgZm9yIHJlYWQuICBXZSBkb24ndCB3YW50 IHRvIGJ1cm4KKwkJICogdG9vIG1hbnkgY3ljbGVzIGNoZWNraW5nIGZvciB0aGlzIHZlcnkg cmFyZSBjb25kaXRpb24sIGFuZCB0aGlzCisJCSAqIHNob3VsZCBjYXVzZSB1cyB0byBleGl0 IHF1aWNrbHkgaW4gbW9zdCBjYXNlcy4pCiAJCSAqLwogCQlpZiAoZXZlbnQuZXZlbnRzICYg V0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJCWVyZXBvcnQoRkFUQUwsCkBAIC0yNDEsOSArMjQx LDkgQEAgcmV0cnk6CiAJCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVl IHRvIHVuZXhwZWN0ZWQgcG9zdG1hc3RlciBleGl0IikpKTsKIAogCQkvKiBIYW5kbGUgaW50 ZXJydXB0LiAqLwotCQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAo ZXZlbnQuZXZlbnRzICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KHRydWUpOwogCiAJCQkvKgpAQCAtMjg0LDcg KzI4NCw4IEBAIHNlY3VyZV9yYXdfcmVhZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVf dCBsZW4pCiAKIAkvKgogCSAqIFRyeSB0byByZWFkIGZyb20gdGhlIHNvY2tldCB3aXRob3V0 IGJsb2NraW5nLiBJZiBpdCBzdWNjZWVkcyB3ZSdyZQotCSAqIGRvbmUsIG90aGVyd2lzZSB3 ZSdsbCB3YWl0IGZvciB0aGUgc29ja2V0IHVzaW5nIHRoZSBsYXRjaCBtZWNoYW5pc20uCisJ ICogZG9uZSwgb3RoZXJ3aXNlIHdlJ2xsIHdhaXQgZm9yIHRoZSBzb2NrZXQgdXNpbmcgdGhl IGludGVycnVwdAorCSAqIG1lY2hhbmlzbS4KIAkgKi8KICNpZmRlZiBXSU4zMgogCXBnd2lu MzJfbm9ibG9jayA9IHRydWU7CkBAIC0zMzgsNyArMzM5LDcgQEAgcmV0cnk6CiAKIAkJQXNz ZXJ0KHdhaXRmb3IpOwogCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdh aXRTZXRTb2NrZXRQb3MsIHdhaXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0RXZlbnQoRmVC ZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKIAogCQlXYWl0 RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAvKiBubyB0aW1lb3V0ICovICwgJmV2ZW50 LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5UX1dSSVRFKTsKQEAgLTM1MCw5ICszNTEs OSBAQCByZXRyeToKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUg dG8gdW5leHBlY3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwogCiAJCS8qIEhhbmRsZSBpbnRl cnJ1cHQuICovCi0JCWlmIChldmVudC5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChl dmVudC5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJ UHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KHRydWUpOwogCiAJCQkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNv bW0uYwppbmRleCA4OTZlMTQ3NmI1MC4uM2I3YmM5OWNhNzIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYnBxL3BxY29tbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5j CkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cG9ydC9wZ19ic3dhcC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgpAQCAtMTc1LDcgKzE3Niw3IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGll bnRfc29jaykKIHsKIAlQb3J0CSAgICpwb3J0OwogCWludAkJCXNvY2tldF9wb3MgUEdfVVNF RF9GT1JfQVNTRVJUU19PTkxZOwotCWludAkJCWxhdGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CisJaW50CQkJaW50ZXJydXB0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFk7CiAKIAkvKiBhbGxvY2F0ZSB0aGUgUG9ydCBzdHJ1Y3QgYW5kIGNvcHkgdGhlIENsaWVu dFNvY2tldCBjb250ZW50cyB0byBpdCAqLwogCXBvcnQgPSBwYWxsb2MwKHNpemVvZihQb3J0 KSk7CkBAIC0yODcsOCArMjg4LDggQEAgcHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9z b2NrKQogCiAJLyoKIAkgKiBJbiBiYWNrZW5kcyAoYXMgc29vbiBhcyBmb3JrZWQpIHdlIG9w ZXJhdGUgdGhlIHVuZGVybHlpbmcgc29ja2V0IGluCi0JICogbm9uYmxvY2tpbmcgbW9kZSBh bmQgdXNlIGxhdGNoZXMgdG8gaW1wbGVtZW50IGJsb2NraW5nIHNlbWFudGljcyBpZgotCSAq IG5lZWRlZC4gVGhhdCBhbGxvd3MgdXMgdG8gcHJvdmlkZSBzYWZlbHkgaW50ZXJydXB0aWJs ZSByZWFkcyBhbmQKKwkgKiBub25ibG9ja2luZyBtb2RlIGFuZCB1c2UgV2FpdEV2ZW50U2V0 IHRvIGltcGxlbWVudCBibG9ja2luZyBzZW1hbnRpY3MKKwkgKiBpZiBuZWVkZWQuIFRoYXQg YWxsb3dzIHVzIHRvIHByb3ZpZGUgc2FmZWx5IGludGVycnVwdGlibGUgcmVhZHMgYW5kCiAJ ICogd3JpdGVzLgogCSAqLwogI2lmbmRlZiBXSU4zMgpAQCAtMzA2LDE4ICszMDcsMTggQEAg cHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogCiAJRmVCZVdhaXRTZXQgPSBD cmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgRmVCZVdhaXRTZXRORXZlbnRzKTsKIAlzb2NrZXRf cG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX1NPQ0tFVF9XUklURUFC TEUsCi0JCQkJCQkJCSAgIHBvcnQtPnNvY2ssIE5VTEwsIE5VTEwpOwotCWxhdGNoX3BvcyA9 IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJ RF9TT0NLRVQsCi0JCQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CisJCQkJCQkJCSAgIHBvcnQt PnNvY2ssIDAsIE5VTEwpOworCWludGVycnVwdF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChG ZUJlV2FpdFNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJCQkJ ICAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgTlVMTCk7CiAJQWRkV2FpdEV2ZW50 VG9TZXQoRmVCZVdhaXRTZXQsIFdMX1BPU1RNQVNURVJfREVBVEgsIFBHSU5WQUxJRF9TT0NL RVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKgogCSAq IFRoZSBldmVudCBwb3NpdGlvbnMgbWF0Y2ggdGhlIG9yZGVyIHdlIGFkZGVkIHRoZW0sIGJ1 dCBsZXQncyBzYW5pdHkKIAkgKiBjaGVjayB0aGVtIHRvIGJlIHN1cmUuCiAJICovCiAJQXNz ZXJ0KHNvY2tldF9wb3MgPT0gRmVCZVdhaXRTZXRTb2NrZXRQb3MpOwotCUFzc2VydChsYXRj aF9wb3MgPT0gRmVCZVdhaXRTZXRMYXRjaFBvcyk7CisJQXNzZXJ0KGludGVycnVwdF9wb3Mg PT0gRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MpOwogCiAJcmV0dXJuIHBvcnQ7CiB9CkBAIC0y MDYwLDcgKzIwNjEsNyBAQCBwcV9jaGVja19jb25uZWN0aW9uKHZvaWQpCiAJICogSXQncyBP SyB0byBtb2RpZnkgdGhlIHNvY2tldCBldmVudCBmaWx0ZXIgd2l0aG91dCByZXN0b3Jpbmcs IGJlY2F1c2UKIAkgKiBhbGwgRmVCZVdhaXRTZXQgc29ja2V0IHdhaXQgc2l0ZXMgZG8gdGhl IHNhbWUuCiAJICovCi0JTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNl dFNvY2tldFBvcywgV0xfU09DS0VUX0NMT1NFRCwgTlVMTCk7CisJTW9kaWZ5V2FpdEV2ZW50 KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgV0xfU09DS0VUX0NMT1NFRCwg MCk7CiAKIHJldHJ5OgogCXJjID0gV2FpdEV2ZW50U2V0V2FpdChGZUJlV2FpdFNldCwgMCwg ZXZlbnRzLCBsZW5ndGhvZihldmVudHMpLCAwKTsKQEAgLTIwNjgsMTUgKzIwNjksMTUgQEAg cmV0cnk6CiAJewogCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX1NPQ0tFVF9DTE9TRUQp CiAJCQlyZXR1cm4gZmFsc2U7Ci0JCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfTEFUQ0hf U0VUKQorCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewogCQkJ LyoKLQkJCSAqIEEgbGF0Y2ggZXZlbnQgbWlnaHQgYmUgcHJldmVudGluZyBvdGhlciBldmVu dHMgZnJvbSBiZWluZworCQkJICogQW4gaW50ZXJydXB0IGV2ZW50IG1pZ2h0IGJlIHByZXZl bnRpbmcgb3RoZXIgZXZlbnRzIGZyb20gYmVpbmcKIAkJCSAqIHJlcG9ydGVkLiAgUmVzZXQg aXQgYW5kIHBvbGwgYWdhaW4uICBObyBuZWVkIHRvIHJlc3RvcmUgaXQKLQkJCSAqIGJlY2F1 c2Ugbm8gY29kZSBzaG91bGQgZXhwZWN0IGxhdGNoZXMgdG8gc3Vydml2ZSBhY3Jvc3MKLQkJ CSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJCQkgKiBiZWNhdXNlIG5vIGNvZGUgc2hv dWxkIGV4cGVjdCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgdG8KKwkJCSAqIHN1cnZpdmUg YWNyb3NzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCiAJCQkgKi8KLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAp OwogCQkJZ290byByZXRyeTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCBmZDczNWUyZmVh OS4uOWIyOTllMjE0MDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwor KysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKIApAQCAtMTgxLDkgKzE4MiwxMCBAQCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNndHlw ZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFf V09VTERfQkxPQ0spCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs IFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9F VkVOVF9NRVNTQUdFX1FVRVVFX1BVVF9NRVNTQUdFKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcXNpZ25h bC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFzaWduYWwuYwppbmRleCAyMmExNmM1MGIyMS4u MmY1ZWViZGZlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMK KysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFzaWduYWwuYwpAQCAtNDIsNyArNDIsNyBAQCBw cWluaXRtYXNrKHZvaWQpCiB7CiAJc2lnZW1wdHlzZXQoJlVuQmxvY2tTaWcpOwogCi0JLyog Tm90ZTogSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCgpIG1vZGlmaWVzIFVuQmxvY2tTaWcuICov CisJLyogTm90ZTogSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKSBtb2RpZmllcyBVbkJs b2NrU2lnLiAqLwogCiAJLyogRmlyc3Qgc2V0IGFsbCBzaWduYWxzLCB0aGVuIGNsZWFyIHNv bWUuICovCiAJc2lnZmlsbHNldCgmQmxvY2tTaWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwppbmRleCBkYzNjZjg3YWJhYi4uOWVmNGE0Y2NkMTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC04OSw4ICs4OSw4IEBACiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNTcxLDEw ICs1NzEsMTAgQEAgQXV0b1ZhY0xhdW5jaGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlib29sCQljYW5fbGF1bmNoOwogCiAJCS8qCi0J CSAqIFRoaXMgbG9vcCBpcyBhIGJpdCBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsIHVzZSBv ZiBXYWl0TGF0Y2gsCisJCSAqIFRoaXMgbG9vcCBpcyBhIGJpdCBkaWZmZXJlbnQgZnJvbSB0 aGUgbm9ybWFsIHVzZSBvZiBXYWl0SW50ZXJydXB0LAogCQkgKiBiZWNhdXNlIHdlJ2QgbGlr ZSB0byBzbGVlcCBiZWZvcmUgdGhlIGZpcnN0IGxhdW5jaCBvZiBhIGNoaWxkCi0JCSAqIHBy b2Nlc3MuICBTbyBpdCdzIFdhaXRMYXRjaCwgdGhlbiBSZXNldExhdGNoLCB0aGVuIGNoZWNr IGZvcgotCQkgKiB3YWtlbmluZyBjb25kaXRpb25zLgorCQkgKiBwcm9jZXNzLiAgU28gaXQn cyBXYWl0SW50ZXJydXB0LCB0aGVuIENsZWFySW50ZXJydXB0LCB0aGVuIGNoZWNrCisJCSAq IGZvciB3YWtlbmluZyBjb25kaXRpb25zLgogCQkgKi8KIAogCQlsYXVuY2hlcl9kZXRlcm1p bmVfc2xlZXAoIWRsaXN0X2lzX2VtcHR5KCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3Jr ZXJzKSwKQEAgLTU4MiwxNCArNTgyLDE0IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY2hhciAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkvKgogCQkgKiBX YWl0IHVudGlsIG5hcHRpbWUgZXhwaXJlcyBvciB3ZSBnZXQgc29tZSB0eXBlIG9mIHNpZ25h bCAoYWxsIHRoZQotCQkgKiBzaWduYWwgaGFuZGxlcnMgd2lsbCB3YWtlIHVzIGJ5IGNhbGxp bmcgU2V0TGF0Y2gpLgorCQkgKiBzaWduYWwgaGFuZGxlcnMgd2lsbCB3YWtlIHVzIGJ5IGNh bGxpbmcgUmFpc2VJbnRlcnJ1cHQpLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAotCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50dl91c2VjIC8g MTAwMEwpLAotCQkJCQkJIFdBSVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJ IFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJ CQkJCSAobmFwLnR2X3NlYyAqIDEwMDBMKSArIChuYXAudHZfdXNlYyAvIDEwMDBMKSwKKwkJ CQkJCQkgV0FJVF9FVkVOVF9BVVRPVkFDVVVNX01BSU4pOwogCi0JCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAK IAkJSGFuZGxlQXV0b1ZhY0xhdW5jaGVySW50ZXJydXB0cygpOwogCkBAIC0xMzQ2LDcgKzEz NDYsNyBAQCBzdGF0aWMgdm9pZAogYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxfQVJHUykK IHsKIAlnb3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCmluZGV4IGQxOTE3NGJkYTM5Li41Y2MwNTZjZDVhYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKQEAgLTIzLDYgKzIzLDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWdu YWwuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jl c293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDA3YmM1NTE3ZmMyLi45ZWQxOGY4NDA3YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgpAQCAtMTIyNiw5ICsxMjI2LDkgQEAgV2FpdEZvckJhY2tncm91bmRX b3JrZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBp ZHApCiAJCWlmIChzdGF0dXMgIT0gQkdXSF9OT1RfWUVUX1NUQVJURUQpCiAJCQlicmVhazsK IAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBX TF9QT1NUTUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VSX1NU QVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAw LAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAogCQlpZiAocmMg JiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBXYWl0 Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFu ZGxlLCBwaWRfdCAqcGlkcCkKIAkJCWJyZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9 CiAKIAlyZXR1cm4gc3RhdHVzOwpAQCAtMTI2OSw5ICsxMjY5LDkgQEAgV2FpdEZvckJhY2tn cm91bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJ CWlmIChzdGF0dXMgPT0gQkdXSF9TVE9QUEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RFUl9E RUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CisJCXJj ID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJ CSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkgICBX QUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dOKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFT VEVSX0RFQVRIKQogCQl7CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBXYWl0Rm9yQmFja2dyb3Vu ZFdvcmtlclNodXRkb3duKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJCWJy ZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gc3RhdHVzOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IDBmNzU1NDg3NTlhLi5jNTk0ODA1NjVh YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtNDIsNiArNDIsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpA QCAtMjI0LDcgKzIyNSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNoYXIgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWludAkJCXJjOwogCiAJCS8qIENs ZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJ CUhhbmRsZU1haW5Mb29wSW50ZXJydXB0cygpOwogCkBAIC0yOTksMjIgKzMwMCwyMiBAQCBC YWNrZ3JvdW5kV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQkgKiB3aWxsIGNhbGwgaXQgZXZlcnkgQmdXcml0ZXJEZWxheSBtc2Vj LiAgV2hpbGUgaXQncyBub3QgY3JpdGljYWwgZm9yCiAJCSAqIGNvcnJlY3RuZXNzIHRoYXQg dGhhdCBiZSBleGFjdCwgdGhlIGZlZWRiYWNrIGxvb3AgbWlnaHQgbWlzYmVoYXZlCiAJCSAq IGlmIHdlIHN0cmF5IHRvbyBmYXIgZnJvbSB0aGF0LiAgSGVuY2UsIGF2b2lkIGxvYWRpbmcg dGhpcyBwcm9jZXNzCi0JCSAqIGRvd24gd2l0aCBsYXRjaCBldmVudHMgdGhhdCBhcmUgbGlr ZWx5IHRvIGhhcHBlbiBmcmVxdWVudGx5IGR1cmluZwotCQkgKiBub3JtYWwgb3BlcmF0aW9u LgorCQkgKiBkb3duIHdpdGggaW50ZXJydXB0IGV2ZW50cyB0aGF0IGFyZSBsaWtlbHkgdG8g aGFwcGVuIGZyZXF1ZW50bHkKKwkJICogZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uCiAJCSAq LwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgQmdXcml0ZXJEZWxh eSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CisJCXJjID0gV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAg QmdXcml0ZXJEZWxheSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CiAK IAkJLyoKLQkJICogSWYgbm8gbGF0Y2ggZXZlbnQgYW5kIEJnQnVmZmVyU3luYyBzYXlzIG5v dGhpbmcncyBoYXBwZW5pbmcsIGV4dGVuZAotCQkgKiB0aGUgc2xlZXAgaW4gImhpYmVybmF0 aW9uIiBtb2RlLCB3aGVyZSB3ZSBzbGVlcCBmb3IgbXVjaCBsb25nZXIKLQkJICogdGhhbiBi Z3dyaXRlcl9kZWxheSBzYXlzLiAgRmV3ZXIgd2FrZXVwcyBzYXZlIGVsZWN0cmljaXR5LiAg V2hlbiBhCi0JCSAqIGJhY2tlbmQgc3RhcnRzIHVzaW5nIGJ1ZmZlcnMgYWdhaW4sIGl0IHdp bGwgd2FrZSB1cyB1cCBieSBzZXR0aW5nCi0JCSAqIG91ciBsYXRjaC4gIEJlY2F1c2UgdGhl IGV4dHJhIHNsZWVwIHdpbGwgcGVyc2lzdCBvbmx5IGFzIGxvbmcgYXMgbm8KLQkJICogYnVm ZmVyIGFsbG9jYXRpb25zIGhhcHBlbiwgdGhpcyBzaG91bGQgbm90IGRpc3RvcnQgdGhlIGJl aGF2aW9yIG9mCi0JCSAqIEJnQnVmZmVyU3luYydzIGNvbnRyb2wgbG9vcCB0b28gYmFkbHk7 IGVzc2VudGlhbGx5LCBpdCB3aWxsIHRoaW5rCi0JCSAqIHRoYXQgdGhlIHN5c3RlbS13aWRl IGlkbGUgaW50ZXJ2YWwgZGlkbid0IGV4aXN0LgorCQkgKiBJZiBubyBpbnRlcnJ1cHQgZXZl bnQgYW5kIEJnQnVmZmVyU3luYyBzYXlzIG5vdGhpbmcncyBoYXBwZW5pbmcsCisJCSAqIGV4 dGVuZCB0aGUgc2xlZXAgaW4gImhpYmVybmF0aW9uIiBtb2RlLCB3aGVyZSB3ZSBzbGVlcCBm b3IgbXVjaAorCQkgKiBsb25nZXIgdGhhbiBiZ3dyaXRlcl9kZWxheSBzYXlzLiAgRmV3ZXIg d2FrZXVwcyBzYXZlIGVsZWN0cmljaXR5LgorCQkgKiBXaGVuIGEgYmFja2VuZCBzdGFydHMg dXNpbmcgYnVmZmVycyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVzIHVwIGJ5CisJCSAqIHNlbmRp bmcgdXMgYW4gaW50ZXJydXB0LiAgQmVjYXVzZSB0aGUgZXh0cmEgc2xlZXAgd2lsbCBwZXJz aXN0IG9ubHkKKwkJICogYXMgbG9uZyBhcyBubyBidWZmZXIgYWxsb2NhdGlvbnMgaGFwcGVu LCB0aGlzIHNob3VsZCBub3QgZGlzdG9ydAorCQkgKiB0aGUgYmVoYXZpb3Igb2YgQmdCdWZm ZXJTeW5jJ3MgY29udHJvbCBsb29wIHRvbyBiYWRseTsgZXNzZW50aWFsbHksCisJCSAqIGl0 IHdpbGwgdGhpbmsgdGhhdCB0aGUgc3lzdGVtLXdpZGUgaWRsZSBpbnRlcnZhbCBkaWRuJ3Qg ZXhpc3QuCiAJCSAqCiAJCSAqIFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaGVyZSwgaW4g dGhhdCBhIGJhY2tlbmQgbWlnaHQgYWxsb2NhdGUgYQogCQkgKiBidWZmZXIgYmV0d2VlbiB0 aGUgdGltZSBCZ0J1ZmZlclN5bmMgc2F3IHRoZSBhbGxvYyBjb3VudCBhcyB6ZXJvCkBAIC0z MjksMTAgKzMzMCwxMCBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJLyogQXNrIGZvciBub3RpZmljYXRp b24gYXQgbmV4dCBidWZmZXIgYWxsb2NhdGlvbiAqLwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dy aXRlcihNeVByb2NOdW1iZXIpOwogCQkJLyogU2xlZXAgLi4uICovCi0JCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRF X0ZBQ1RPUiwKLQkJCQkJCQkgV0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUpOworCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkJIEJnV3JpdGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SLAorCQkJCQkJ CQkgV0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUpOwogCQkJLyogUmVzZXQgdGhlIG5v dGlmaWNhdGlvbiByZXF1ZXN0IGluIGNhc2Ugd2UgdGltZWQgb3V0ICovCiAJCQlTdHJhdGVn eU5vdGlmeUJnV3JpdGVyKC0xKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMKaW5kZXggOTgyNTcyYTc1ZGIuLjFhZTQ4NDFhZDJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMzQzLDcgKzM0NCw3 IEBAIENoZWNrcG9pbnRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkJYm9vbAkJY2hrcHRfb3JfcnN0cHRfdGltZWQgPSBmYWxzZTsKIAog CQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIAogCQkvKgogCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2Vp dmVkIHJlY2VudGx5LgpAQCAtNTU1LDEwICs1NTYsMTAgQEAgQ2hlY2twb2ludGVyTWFpbihj aGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJY3VyX3Rp bWVvdXQgPSBNaW4oY3VyX3RpbWVvdXQsIFhMb2dBcmNoaXZlVGltZW91dCAtIGVsYXBzZWRf c2Vjcyk7CiAJCX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkg Y3VyX3RpbWVvdXQgKiAxMDAwTCAvKiBjb252ZXJ0IHRvIG1zICovICwKLQkJCQkJCSBXQUlU X0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBjdXJfdGltZW91dCAq IDEwMDBMIC8qIGNvbnZlcnQgdG8gbXMgKi8gLAorCQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNL UE9JTlRFUl9NQUlOKTsKIAl9CiB9CiAKQEAgLTc1OCwxMCArNzU5LDExIEBAIENoZWNrcG9p bnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHByb2dyZXNzKQogCQkgKiBDaGVja3Bv aW50ZXIgYW5kIGJnd3JpdGVyIGFyZSBubyBsb25nZXIgcmVsYXRlZCBzbyB0YWtlIHRoZSBC aWcKIAkJICogU2xlZXAuCiAJCSAqLwotCQlXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hf U0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsCi0JCQkJICAxMDAsCi0J CQkJICBXQUlUX0VWRU5UX0NIRUNLUE9JTlRfV1JJVEVfREVMQVkpOwotCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQlXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQLAorCQkJCQkgIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9U SU1FT1VULAorCQkJCQkgIDEwMCwKKwkJCQkJICBXQUlUX0VWRU5UX0NIRUNLUE9JTlRfV1JJ VEVfREVMQVkpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAp OwogCX0KIAllbHNlIGlmICgtLWFic29yYl9jb3VudGVyIDw9IDApCiAJewpAQCAtODczLDcg Kzg3NSw3IEBAIFJlcUNoZWNrcG9pbnRIYW5kbGVyKFNJR05BTF9BUkdTKQogCSAqIFRoZSBz aWduYWxpbmcgcHJvY2VzcyBzaG91bGQgaGF2ZSBzZXQgY2twdF9mbGFncyBub256ZXJvLCBz byBhbGwgd2UKIAkgKiBuZWVkIGRvIGlzIGVuc3VyZSB0aGF0IG91ciBtYWluIGxvb3AgZ2V0 cyBraWNrZWQgb3V0IG9mIGFueSB3YWl0LgogCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIApAQCAt MTE0NSw3ICsxMTQ3LDcgQEAgRm9yd2FyZFN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0 YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCQlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclBy b2MgPSBwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jOwogCiAJCWlmIChjaGVja3BvaW50 ZXJQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9j QnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVy UHJvYyk7CiAJfQogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1 cHQuYwppbmRleCBlZWRjMDk4MGNmMS4uOGNiZGUwNjk4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9pbnRlcnJ1cHQuYwpAQCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBA IC02MSw3ICs2MSw3IEBAIHZvaWQKIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQoU0lH TkFMX0FSR1MpCiB7CiAJQ29uZmlnUmVsb2FkUGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2go TXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IH0KIAogLyoKQEAgLTEwNSw1ICsxMDUsNSBAQCB2b2lkCiBTaWduYWxIYW5kbGVyRm9yU2h1 dGRvd25SZXF1ZXN0KFNJR05BTF9BUkdTKQogewogCVNodXRkb3duUmVxdWVzdFBlbmRpbmcg PSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCAw MmY5MTQzMWY1Zi4uMDE0MDViZjJhMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpA QCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNoLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9y YWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0yNDcsOCArMjQ3LDggQEAgUGdBcmNoaXZlck1h aW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlvbl9z aG1lbV9leGl0KHBnYXJjaF9kaWUsIDApOwogCiAJLyoKLQkgKiBBZHZlcnRpc2Ugb3VyIHBy b2MgbnVtYmVyIHNvIHRoYXQgYmFja2VuZHMgY2FuIHVzZSBvdXIgbGF0Y2ggdG8gd2FrZSB1 cwotCSAqIHVwIHdoaWxlIHdlJ3JlIHNsZWVwaW5nLgorCSAqIEFkdmVydGlzZSBvdXIgcHJv YyBudW1iZXIgc28gdGhhdCBiYWNrZW5kcyBjYW4gd2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQor CSAqIHNsZWVwaW5nLgogCSAqLwogCVBnQXJjaC0+cGdwcm9jbm8gPSBNeVByb2NOdW1iZXI7 CiAKQEAgLTI4MiwxMyArMjgyLDEyIEBAIFBnQXJjaFdha2V1cCh2b2lkKQogCWludAkJCWFy Y2hfcGdwcm9jbm8gPSBQZ0FyY2gtPnBncHJvY25vOwogCiAJLyoKLQkgKiBXZSBkb24ndCBh Y3F1aXJlIFByb2NBcnJheUxvY2sgaGVyZS4gIEl0J3MgYWN0dWFsbHkgZmluZSBiZWNhdXNl Ci0JICogcHJvY0xhdGNoIGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuIHBvdGVu dGlhbGx5IHNldCB0aGUgd3JvbmcKLQkgKiBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxh dGNoLiAgRXZlbiBpbiB0aGF0IGNhc2UgdGhlIGFyY2hpdmVyIHdpbGwKLQkgKiBiZSByZWxh dW5jaGVkIHNob3J0bHkgYW5kIHdpbGwgc3RhcnQgYXJjaGl2aW5nLgorCSAqIFdlIGRvbid0 IGFjcXVpcmUgUHJvY0FycmF5TG9jayBoZXJlLCBzbyB3ZSBtYXkgc2VuZCB0aGUgaW50ZXJy dXB0IHRvCisJICogd3JvbmcgcHJvY2VzcywgYnV0IHRoYXQncyBoYXJtbGVzcy4gIEV2ZW4g aW4gdGhhdCBjYXNlIHRoZSBhcmNoaXZlcgorCSAqIHdpbGwgYmUgcmVsYXVuY2hlZCBzaG9y dGx5IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KIAkgKi8KIAlpZiAoYXJjaF9wZ3Byb2Nu byAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxs UHJvY3NbYXJjaF9wZ3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAsIGFyY2hfcGdwcm9jbm8pOwogfQogCiAKQEAgLTI5OCw3 ICsyOTcsNyBAQCBwZ2FyY2hfd2FrZW5fc3RvcChTSUdOQUxfQVJHUykKIHsKIAkvKiBzZXQg ZmxhZyB0byBkbyBhIGZpbmFsIGN5Y2xlIGFuZCBzaHV0IGRvd24gYWZ0ZXJ3YXJkcyAqLwog CXJlYWR5X3RvX3N0b3AgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0zMTgsNyAr MzE3LDcgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJICovCiAJZG8KIAl7Ci0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCk7CiAKIAkJLyogV2hlbiB3ZSBnZXQgU0lHVVNSMiwgd2UgZG8gb25lIG1vcmUgYXJj aGl2ZSBjeWNsZSwgdGhlbiBleGl0ICovCiAJCXRpbWVfdG9fc3RvcCA9IHJlYWR5X3RvX3N0 b3A7CkBAIC0zNTUsMTAgKzM1NCwxMCBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkJewog CQkJaW50CQkJcmM7CiAKLQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKLQkJCQkJ CSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRFUlZBTCAqIDEwMDBMLAotCQkJCQkJICAgV0FJVF9F VkVOVF9BUkNISVZFUl9NQUlOKTsKKwkJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1F T1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJCQkgICBQR0FSQ0hfQVVUT1dBS0Vf SU5URVJWQUwgKiAxMDAwTCwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX0FSQ0hJVkVSX01BSU4p OwogCQkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJCQl0aW1lX3RvX3N0b3Ag PSB0cnVlOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDhi ZWUxZmI2NjQ1Li5hMDRlMGUzM2ZhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMKQEAgLTEwOSw2ICsxMDksNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3Rz eW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5j bHVkZSAidGNvcC9iYWNrZW5kX3N0YXJ0dXAuaCIKQEAgLTUyNSw4ICs1MjYsNyBAQCBQb3N0 bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXBxc2lnbmFsKFNJR0NITEQs IGhhbmRsZV9wbV9jaGlsZF9leGl0X3NpZ25hbCk7CiAKIAkvKiBUaGlzIG1heSBjb25maWd1 cmUgU0lHVVJHLCBkZXBlbmRpbmcgb24gcGxhdGZvcm0uICovCi0JSW5pdGlhbGl6ZUxhdGNo U3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgpOworCUluaXRpYWxpemVXYWl0 RXZlbnRTdXBwb3J0KCk7CiAKIAkvKgogCSAqIE5vIG90aGVyIHBsYWNlIGluIFBvc3RncmVz IHNob3VsZCB0b3VjaCBTSUdUVElOL1NJR1RUT1UgaGFuZGxpbmcuICBXZQpAQCAtMTU4Miwx NCArMTU4MiwxNCBAQCBDb25maWd1cmVQb3N0bWFzdGVyV2FpdFNldChib29sIGFjY2VwdF9j b25uZWN0aW9ucykKIAogCXBtX3dhaXRfc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEws CiAJCQkJCQkJCQkgYWNjZXB0X2Nvbm5lY3Rpb25zID8gKDEgKyBOdW1MaXN0ZW5Tb2NrZXRz KSA6IDEpOwotCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9MQVRDSF9TRVQs IFBHSU5WQUxJRF9TT0NLRVQsIE15TGF0Y2gsCi0JCQkJCSAgTlVMTCk7CisJQWRkV2FpdEV2 ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwK KwkJCQkJICAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgTlVMTCk7CiAKIAlpZiAo YWNjZXB0X2Nvbm5lY3Rpb25zKQogCXsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1MaXN0 ZW5Tb2NrZXRzOyBpKyspCiAJCQlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xf U09DS0VUX0FDQ0VQVCwgTGlzdGVuU29ja2V0c1tpXSwKLQkJCQkJCQkgIE5VTEwsIE5VTEwp OworCQkJCQkJCSAgMCwgTlVMTCk7CiAJfQogfQogCkBAIC0xNjE4LDE5ICsxNjE4LDIwIEBA IFNlcnZlckxvb3Aodm9pZCkKIAkJCQkJCQkJICAgMCAvKiBwb3N0bWFzdGVyIHBvc3RzIG5v IHdhaXRfZXZlbnRzICovICk7CiAKIAkJLyoKLQkJICogTGF0Y2ggc2V0IGJ5IHNpZ25hbCBo YW5kbGVyLCBvciBuZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uIGFueSBvZgotCQkgKiBvdXIg c29ja2V0cz8gSWYgdGhlIGxhdHRlciwgZm9yayBhIGNoaWxkIHByb2Nlc3MgdG8gZGVhbCB3 aXRoIGl0LgorCQkgKiBJbnRlcnJ1cHQgcmFpc2VkIGJ5IHNpZ25hbCBoYW5kbGVyLCBvciBu ZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uCisJCSAqIGFueSBvZiBvdXIgc29ja2V0cz8gIElm IHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwKKwkJICogd2l0aCBp dC4KIAkJICovCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbmV2ZW50czsgaSsrKQogCQl7Ci0J CQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCisJ CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkJLyoK IAkJCSAqIFRoZSBmb2xsb3dpbmcgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdW5jb25kaXRpb25h bGx5LCBldmVuIGlmIHdlCi0JCQkgKiBkaWRuJ3Qgc2VlIFdMX0xBVENIX1NFVC4gIFRoaXMg Z2l2ZXMgaGlnaCBwcmlvcml0eSB0byBzaHV0ZG93bgotCQkJICogYW5kIHJlbG9hZCByZXF1 ZXN0cyB3aGVyZSB0aGUgbGF0Y2ggaGFwcGVucyB0byBhcHBlYXIgbGF0ZXIgaW4KLQkJCSAq IGV2ZW50c1tdIG9yIHdpbGwgYmUgcmVwb3J0ZWQgYnkgYSBsYXRlciBjYWxsIHRvCisJCQkg KiBkaWRuJ3Qgc2VlIFdMX0lOVEVSUlVQVC4gIFRoaXMgZ2l2ZXMgaGlnaCBwcmlvcml0eSB0 byBzaHV0ZG93bgorCQkJICogYW5kIHJlbG9hZCByZXF1ZXN0cyB3aGVyZSB0aGUgaW50ZXJy dXB0IGV2ZW50IGhhcHBlbnMgdG8gYXBwZWFyCisJCQkgKiBsYXRlciBpbiBldmVudHNbXSBv ciB3aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bwogCQkJICogV2FpdEV2ZW50 U2V0V2FpdCgpLgogCQkJICovCiAJCQlpZiAocGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0 KQpAQCAtMTkzOSw3ICsxOTQwLDcgQEAgc3RhdGljIHZvaWQKIGhhbmRsZV9wbV9wbXNpZ25h bF9zaWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVuZGluZ19wbV9wbXNpZ25hbCA9IHRydWU7 Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTE5NDksNyArMTk1MCw3IEBAIHN0YXRpYyB2b2lk CiBoYW5kbGVfcG1fcmVsb2FkX3JlcXVlc3Rfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBl bmRpbmdfcG1fcmVsb2FkX3JlcXVlc3QgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBA IC0yMDQ2LDcgKzIwNDcsNyBAQCBoYW5kbGVfcG1fc2h1dGRvd25fcmVxdWVzdF9zaWduYWwo U0lHTkFMX0FSR1MpCiAJCQlwZW5kaW5nX3BtX3NodXRkb3duX3JlcXVlc3QgPSB0cnVlOwog CQkJYnJlYWs7CiAJfQotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yMjA3LDcgKzIyMDgsNyBA QCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX2NoaWxkX2V4aXRfc2lnbmFsKFNJR05BTF9BUkdT KQogewogCXBlbmRpbmdfcG1fY2hpbGRfZXhpdCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRj aCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKaW5kZXggZWY2Zjk4ZWJjZDcuLjIwMjBm MTcwZDAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtNDAsNyAr NDEsNyBAQAogICogT24gc3lzdGVtcyB0aGF0IG5lZWQgdG8gbWFrZSBhIHN5c3RlbSBjYWxs IHRvIGZpbmQgb3V0IGlmIHRoZSBwb3N0bWFzdGVyIGhhcwogICogZ29uZSBhd2F5LCB3ZSds bCBkbyBzbyBvbmx5IGV2ZXJ5IE50aCBjYWxsIHRvIEhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJy dXB0cygpLgogICogVGhpcyBvbmx5IGFmZmVjdHMgaG93IGxvbmcgaXQgdGFrZXMgdXMgdG8g ZGV0ZWN0IHRoZSBjb25kaXRpb24gd2hpbGUgd2UncmUKLSAqIGJ1c3kgcmVwbGF5aW5nIFdB TC4gIExhdGNoIHdhaXRzIGFuZCBzaW1pbGFyIHdoaWNoIHNob3VsZCByZWFjdCBpbW1lZGlh dGVseQorICogYnVzeSByZXBsYXlpbmcgV0FMLiAgSW50ZXJydXB0IHdhaXRzIGFuZCBzaW1p bGFyIHNob3VsZCByZWFjdCBpbW1lZGlhdGVseQogICogdGhyb3VnaCB0aGUgdXN1YWwgdGVj aG5pcXVlcy4KICAqLwogI2RlZmluZSBQT1NUTUFTVEVSX1BPTExfUkFURV9MSU1JVCAxMDI0 CkBAIC0yMDUsNiArMjA2LDggQEAgU3RhcnR1cFByb2NFeGl0KGludCBjb2RlLCBEYXR1bSBh cmcpCiAJLyogU2h1dGRvd24gdGhlIHJlY292ZXJ5IGVudmlyb25tZW50ICovCiAJaWYgKHN0 YW5kYnlTdGF0ZSAhPSBTVEFOREJZX0RJU0FCTEVEKQogCQlTaHV0ZG93blJlY292ZXJ5VHJh bnNhY3Rpb25FbnZpcm9ubWVudCgpOworCisJUHJvY0dsb2JhbC0+c3RhcnR1cFByb2MgPSBJ TlZBTElEX1BST0NfTlVNQkVSOwogfQogCiAKQEAgLTIyMCw2ICsyMjMsMTIgQEAgU3RhcnR1 cFByb2Nlc3NNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJTXlCYWNrZW5kVHlwZSA9IEJfU1RBUlRVUDsKIAlBdXhpbGlhcnlQcm9jZXNzTWFp bkNvbW1vbigpOwogCisJLyoKKwkgKiBBZHZlcnRpc2Ugb3VyIHByb2MgbnVtYmVyIHNvIHRo YXQgYmFja2VuZHMgY2FuIHdha2UgdXMgdXAsIHdoZW4gdGhlCisJICogc2VydmVyIGlzIHBy b21vdGVkIG9yIHJlY292ZXJ5IGlzIHBhdXNlZC9yZXN1bWVkLgorCSAqLworCVByb2NHbG9i YWwtPnN0YXJ0dXBQcm9jID0gTXlQcm9jTnVtYmVyOworCiAJLyogQXJyYW5nZSB0byBjbGVh biB1cCBhdCBzdGFydHVwIHByb2Nlc3MgZXhpdCAqLwogCW9uX3NobWVtX2V4aXQoU3RhcnR1 cFByb2NFeGl0LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9z eXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKaW5kZXgg Nzk1MTU5OWZhODcuLjAxY2M2ODE5OGRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9n Z2VyLmMKQEAgLTQ0LDggKzQ0LDggQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dl ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w Z19zaG1lbS5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKQEAgLTMyOCw3ICszMjgsNyBAQCBTeXNMb2dnZXJNYWluKGNoYXIgKnN0YXJ0 dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJd2hlcmVUb1NlbmRPdXRwdXQg PSBEZXN0Tm9uZTsKIAogCS8qCi0JICogU2V0IHVwIGEgcmV1c2FibGUgV2FpdEV2ZW50U2V0 IG9iamVjdCB3ZSdsbCB1c2UgdG8gd2FpdCBmb3Igb3VyIGxhdGNoLAorCSAqIFNldCB1cCBh IHJldXNhYmxlIFdhaXRFdmVudFNldCBvYmplY3Qgd2UnbGwgdXNlIHRvIHdhaXQgZm9yIGlu dGVycnVwdHMsCiAJICogYW5kIChleGNlcHQgb24gV2luZG93cykgb3VyIHNvY2tldC4KIAkg KgogCSAqIFVubGlrZSBhbGwgb3RoZXIgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzZXMsIHdl J2xsIGlnbm9yZSBwb3N0bWFzdGVyCkBAIC0zMzgsOSArMzM4LDkgQEAgU3lzTG9nZ2VyTWFp bihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqIChp bmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIpLgogCSAqLwogCXdlcyA9IENyZWF0ZVdhaXRFdmVu dFNldChOVUxMLCAyKTsKLQlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX0xBVENIX1NFVCwg UEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRjaCwgTlVMTCk7CisJQWRkV2FpdEV2ZW50VG9TZXQo d2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsIDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLCBOVUxMKTsKICNpZm5kZWYgV0lOMzIKLQlBZGRXYWl0RXZlbnRUb1Nl dCh3ZXMsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgc3lzbG9nUGlwZVswXSwgTlVMTCwgTlVMTCk7 CisJQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1Bp cGVbMF0sIDAsIE5VTEwpOwogI2VuZGlmCiAKIAkvKiBtYWluIHdvcmtlciBsb29wICovCkBA IC0zNTYsNyArMzU2LDcgQEAgU3lzTG9nZ2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogI2VuZGlmCiAKIAkJLyogQ2xlYXIgYW55IGFscmVh ZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyoKIAkJICogUHJv Y2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KQEAgLTEx ODUsNyArMTE4NSw3IEBAIHBpcGVUaHJlYWQodm9pZCAqYXJnKQogCQkJaWYgKGZ0ZWxsKHN5 c2xvZ0ZpbGUpID49IExvZ19Sb3RhdGlvblNpemUgKiAxMDI0TCB8fAogCQkJCShjc3Zsb2dG aWxlICE9IE5VTEwgJiYgZnRlbGwoY3N2bG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAq IDEwMjRMKSB8fAogCQkJCShqc29ubG9nRmlsZSAhPSBOVUxMICYmIGZ0ZWxsKGpzb25sb2dG aWxlKSA+PSBMb2dfUm90YXRpb25TaXplICogMTAyNEwpKQotCQkJCVNldExhdGNoKE15TGF0 Y2gpOworCQkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJ CX0KIAkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24pOwogCX0KQEAg LTExOTYsOCArMTE5Niw4IEBAIHBpcGVUaHJlYWQodm9pZCAqYXJnKQogCS8qIGlmIHRoZXJl J3MgYW55IGRhdGEgbGVmdCB0aGVuIGZvcmNlIGl0IG91dCBub3cgKi8KIAlmbHVzaF9waXBl X2lucHV0KGxvZ2J1ZmZlciwgJmJ5dGVzX2luX2xvZ2J1ZmZlcik7CiAKLQkvKiBzZXQgdGhl IGxhdGNoIHRvIHdha2VuIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggd2lsbCBxdWl0ICovCi0J U2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmFpc2UgdGhlIGludGVycnVwdCB0byB3YWtlbiB0 aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAqLworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmc3lz bG9nZ2VyU2VjdGlvbik7CiAJX2VuZHRocmVhZCgpOwpAQCAtMTU5Miw1ICsxNTkyLDUgQEAg c3RhdGljIHZvaWQKIHNpZ1VzcjFIYW5kbGVyKFNJR05BTF9BUkdTKQogewogCXJvdGF0aW9u X3JlcXVlc3RlZCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci93YWxzdW1tYXJpemVyLmMKaW5kZXggNDgzNTBiZWM1MjQuLmY3OGYwMTFjMmIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtMzgsOCArMzgsOCBA QAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nz aWduYWwuaCIKQEAgLTMxNSwxMCArMzE1LDggQEAgV2FsU3VtbWFyaXplck1haW4oY2hhciAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJICogU28gYSByZWFs bHkgZmFzdCByZXRyeSB0aW1lIGRvZXNuJ3Qgc2VlbSB0byBiZSBlc3BlY2lhbGx5CiAJCSAq IGJlbmVmaWNpYWwsIGFuZCBpdCB3aWxsIGNsdXR0ZXIgdGhlIGxvZ3MuCiAJCSAqLwotCQko dm9pZCkgV2FpdExhdGNoKE5VTEwsCi0JCQkJCQkgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCi0JCQkJCQkgMTAwMDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFS SVpFUl9FUlJPUik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDAsIFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAxMDAwMCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VN TUFSSVpFUl9FUlJPUik7CiAJfQogCiAJLyogV2UgY2FuIG5vdyBoYW5kbGUgZXJlcG9ydChF UlJPUikgKi8KQEAgLTYzMCw4ICs2MjgsOCBAQCBHZXRPbGRlc3RVbnN1bW1hcml6ZWRMU04o VGltZUxpbmVJRCAqdGxpLCBib29sICpsc25faXNfZXhhY3QpCiAgKgogICogVGhpcyBtaWdo dCBub3Qgd29yaywgYmVjYXVzZSB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBXQUwg c3VtbWFyaXplcgogICogcHJvY2VzcyB3YXMgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQsIGFuZCBp dCBhbHNvIG1pZ2h0IGhhdmUgc3RhcnRlZCBidXQKLSAqIHN1YnNlcXVlbnRseSB0ZXJtaW5h dGVkLiBTbywgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHRoaXMgd2lsbCBnZXQgdGhl Ci0gKiBsYXRjaCBzZXQsIGJ1dCB0aGVyZSdzIG5vIGd1YXJhbnRlZS4KKyAqIHN1YnNlcXVl bnRseSB0ZXJtaW5hdGVkLiBTbywgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHRoaXMg d2lsbCBzZW5kCisgKiB0aGUgaW50ZXJydXB0LCBidXQgdGhlcmUncyBubyBndWFyYW50ZWUu CiAgKi8KIHZvaWQKIFdha2V1cFdhbFN1bW1hcml6ZXIodm9pZCkKQEAgLTY0Niw3ICs2NDQs NyBAQCBXYWtldXBXYWxTdW1tYXJpemVyKHZvaWQpCiAJTFdMb2NrUmVsZWFzZShXQUxTdW1t YXJpemVyTG9jayk7CiAKIAlpZiAocGdwcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikK LQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW3BncHJvY25vXS5wcm9jTGF0Y2gp OworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgcGdwcm9jbm8p OwogfQogCiAvKgpAQCAtMTYzNywxMSArMTYzNSwxMSBAQCBzdW1tYXJpemVyX3dhaXRfZm9y X3dhbCh2b2lkKQogCX0KIAogCS8qIE9LLCBub3cgc2xlZXAuICovCi0JKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCSBzbGVlcF9xdWFudGEgKiBNU19QRVJfU0xFRVBfUVVB TlRVTSwKLQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfV0FMKTsKLQlSZXNldExh dGNoKE15TGF0Y2gpOworCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLAorCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJIHNsZWVwX3F1YW50YSAqIE1TX1BFUl9TTEVFUF9R VUFOVFVNLAorCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfV0FMKTsKKwlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJLyogUmVzZXQgY291 bnQgb2YgcGFnZXMgcmVhZC4gKi8KIAlwYWdlc19yZWFkX3NpbmNlX2xhc3Rfc2xlZXAgPSAw OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggNWEzY2I4OTQ2NTIuLmZh YmNmM2JiN2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKQEAgLTU0LDYg KzU0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nz aWduYWwuaCIKQEAgLTIyMiwxMiArMjIzLDEyIEBAIFdhbFdyaXRlck1haW4oY2hhciAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkvKgogCQkgKiBBZHZl cnRpc2Ugd2hldGhlciB3ZSBtaWdodCBoaWJlcm5hdGUgaW4gdGhpcyBjeWNsZS4gIFdlIGRv IHRoaXMKLQkJICogYmVmb3JlIHJlc2V0dGluZyB0aGUgbGF0Y2ggdG8gZW5zdXJlIHRoYXQg YW55IGFzeW5jIGNvbW1pdHMgd2lsbAotCQkgKiBzZWUgdGhlIGZsYWcgc2V0IGlmIHRoZXkg bWlnaHQgcG9zc2libHkgbmVlZCB0byB3YWtlIHVzIHVwLCBhbmQKLQkJICogdGhhdCB3ZSB3 b24ndCBtaXNzIGFueSBzaWduYWwgdGhleSBzZW5kIHVzLiAgKElmIHdlIGRpc2NvdmVyIHdv cmsKLQkJICogdG8gZG8gaW4gdGhlIGxhc3QgY3ljbGUgYmVmb3JlIHdlIHdvdWxkIGhpYmVy bmF0ZSwgdGhlIGdsb2JhbCBmbGFnCi0JCSAqIHdpbGwgYmUgc2V0IHVubmVjZXNzYXJpbHks IGJ1dCBsaXR0bGUgaGFybSBpcyBkb25lLikgIEJ1dCBhdm9pZAotCQkgKiB0b3VjaGluZyB0 aGUgZ2xvYmFsIGZsYWcgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KKwkJICogYmVm b3JlIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgZmxhZyB0byBlbnN1cmUgdGhhdCBhbnkgYXN5 bmMgY29tbWl0cworCQkgKiB3aWxsIHNlZSB0aGUgZmxhZyBzZXQgaWYgdGhleSBtaWdodCBw b3NzaWJseSBuZWVkIHRvIHdha2UgdXMgdXAsCisJCSAqIGFuZCB0aGF0IHdlIHdvbid0IG1p c3MgYW55IHNpZ25hbCB0aGV5IHNlbmQgdXMuICAoSWYgd2UgZGlzY292ZXIKKwkJICogd29y ayB0byBkbyBpbiB0aGUgbGFzdCBjeWNsZSBiZWZvcmUgd2Ugd291bGQgaGliZXJuYXRlLCB0 aGUgZ2xvYmFsCisJCSAqIGZsYWcgd2lsbCBiZSBzZXQgdW5uZWNlc3NhcmlseSwgYnV0IGxp dHRsZSBoYXJtIGlzIGRvbmUuKSAgQnV0CisJCSAqIGF2b2lkIHRvdWNoaW5nIHRoZSBnbG9i YWwgZmxhZyBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gY2hhbmdlLgogCQkgKi8KIAkJaWYgKGhp YmVybmF0aW5nICE9IChsZWZ0X3RpbGxfaGliZXJuYXRlIDw9IDEpKQogCQl7CkBAIC0yMzYs NyArMjM3LDcgQEAgV2FsV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCQl9CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGlu ZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyogUHJvY2VzcyBhbnkgc2lnbmFs cyByZWNlaXZlZCByZWNlbnRseSAqLwogCQlIYW5kbGVNYWluTG9vcEludGVycnVwdHMoKTsK QEAgLTI2Myw5ICsyNjQsOSBAQCBXYWxXcml0ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWVsc2UKIAkJCWN1cl90aW1lb3V0ID0gV2Fs V3JpdGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2go TXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKLQkJCQkJCSBjdXJfdGltZW91dCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dB TF9XUklURVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQsCisJCQkJCQkJIFdB SVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNl aXZlci5jCmluZGV4IGM3NDM2OTk1M2Y4Li4yMjk0ZDVkNDM3MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJw cXdhbHJlY2VpdmVyLmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgpAQCAtMjM3 LDE2ICsyMzcsMTYgQEAgbGlicHFyY3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywg Ym9vbCByZXBsaWNhdGlvbiwgYm9vbCBsb2dpY2FsLAogCQllbHNlCiAJCQlpb19mbGFnID0g V0xfU09DS0VUX1dSSVRFQUJMRTsKIAotCQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0 Y2gsCi0JCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8IGlv X2ZsYWcsCi0JCQkJCQkJICAgUFFzb2NrZXQoY29ubi0+c3RyZWFtQ29ubiksCi0JCQkJCQkJ ICAgMCwKLQkJCQkJCQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfQ09OTkVDVCk7 CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQLAorCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfSU5URVJSVVBU IHwgaW9fZmxhZywKKwkJCQkJCQkJICAgUFFzb2NrZXQoY29ubi0+c3RyZWFtQ29ubiksCisJ CQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTElCUFFXQUxSRUNFSVZFUl9D T05ORUNUKTsKIAogCQkvKiBJbnRlcnJ1cHRlZD8gKi8KLQkJaWYgKHJjICYgV0xfTEFUQ0hf U0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwog CQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKIAkJfQogCkBAIC04NDgsMTcgKzg0OCwx NyBAQCBsaWJwcXJjdl9QUWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4pCiAJCSAqIHNp bmNlIHdlJ2xsIGdldCBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIGFuZCBjYW4gaGFuZGxlIGFu eQogCQkgKiBpbnRlcnJ1cHRzIGhlcmUuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaE9yU29j a2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tF VF9SRUFEQUJMRSB8Ci0JCQkJCQkJICAgV0xfTEFUQ0hfU0VULAotCQkJCQkJCSAgIFBRc29j a2V0KHN0cmVhbUNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9M SUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tl dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfRVhJVF9P Tl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8CisJCQkJCQkJCSAgIFdMX0lOVEVS UlVQVCwKKwkJCQkJCQkJICAgUFFzb2NrZXQoc3RyZWFtQ29ubiksCisJCQkJCQkJCSAgIDAs CisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTElCUFFXQUxSRUNFSVZFUl9SRUNFSVZFKTsKIAog CQkvKiBJbnRlcnJ1cHRlZD8gKi8KLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAo cmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJUHJvY2Vzc1dh bFJjdkludGVycnVwdHMoKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGU3ZjdkNGM1 ZTRiLi5hZDk5NzljOWI4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTE2NSw2ICsxNjUsNyBA QAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9vcmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNv cC90Y29wcHJvdC5oIgpAQCAtODA0LDEzICs4MDUsMTMgQEAgTG9naWNhbFBhcmFsbGVsQXBw bHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIAkJCQlpbnQJCQlyYzsKIAogCQkJCS8qIFdh aXQgZm9yIG1vcmUgd29yay4gKi8KLQkJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJ CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkJCSAgIDEwMDBMLAotCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJB TExFTF9BUFBMWV9NQUlOKTsKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICAxMDAwTCwKKwkJCQkJCQkJ ICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOwogCi0JCQkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCWlm IChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIAkJCX0KIAkJfQogCQllbHNlCkBAIC05OTAsNyArOTkxLDcgQEAg SGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKIHsKIAlJbnRlcnJ1 cHRQZW5kaW5nID0gdHJ1ZTsKIAlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0xMTgyLDE0ICsxMTgzLDE0IEBAIHBhX3NlbmRf ZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25z dCB2b2lkICpkYXRhKQogCQlBc3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7 CiAKIAkJLyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAotCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKLQkJCQkJ ICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRfREFUQSk7CisJCXJjID0gV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAg U0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lD QUxfQVBQTFlfU0VORF9EQVRBKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlm IChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTEyNTQsMTMgKzEyNTUsMTMgQEAgcGFfd2Fp dF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQli cmVhazsKIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KLQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJIDEwTCwKLQkJCQkJCSBXQUlUX0VWRU5UX0xPR0lD QUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1 cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAxMEwsCisJ CQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0Up OwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2Ug ZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ug d2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGU1ZmRjYThiYmY2 Li4xZmI4NzkwZjIxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bGF1bmNoZXIuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Ns b3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjE4LDE2ICsy MTksMTcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlciwKIAkJfQogCiAJCS8qCi0JCSAqIFdlIG5lZWQgdGltZW91dCBiZWNhdXNl IHdlIGdlbmVyYWxseSBkb24ndCBnZXQgbm90aWZpZWQgdmlhIGxhdGNoCi0JCSAqIGFib3V0 IHRoZSB3b3JrZXIgYXR0YWNoLiAgQnV0IHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdh aXQgbG9uZy4KKwkJICogV2UgbmVlZCB0aW1lb3V0IGJlY2F1c2Ugd2UgZ2VuZXJhbGx5IGRv bid0IGdldCBub3RpZmllZCB2aWEgYW4KKwkJICogaW50ZXJydXB0IGFib3V0IHRoZSB3b3Jr ZXIgYXR0YWNoLiAgQnV0IHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvCisJCSAqIHdhaXQg bG9uZy4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAx MEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CisJCXJjID0gV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBMLCBX QUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CkBAIC01NTMsMTMgKzU1NSwxMyBA QCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3 YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAx MEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CisJCXJjID0gV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBMLCBX QUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNTk0LDEzICs1OTYsMTMgQEAg bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIsIGludCBzaWdubykKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7 CiAKIAkJLyogV2FpdCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2Fp dCBsb25nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBM LCBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMEwsIFdB SVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNjc2LDcgKzY3OCw3IEBAIGxv Z2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv KQogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgbGF0Y2gpIGFueSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3BlY2lmaWVkIHN1Yi9yZWwuCisgKiBXYWtlIHVwICh1c2lu ZyBpbnRlcnJ1cHQpIGFueSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3BlY2lm aWVkIHN1Yi9yZWwuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQg c3ViaWQsIE9pZCByZWxpZCkKQEAgLTY5NCw3ICs2OTYsNyBAQCBsb2dpY2FscmVwX3dvcmtl cl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB9CiAKIC8qCi0gKiBXYWtlIHVwICh1 c2luZyBsYXRjaCkgdGhlIHNwZWNpZmllZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4K KyAqIFdha2UgdXAgKHVzaW5nIGludGVycnVwdCkgdGhlIHNwZWNpZmllZCBsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlci4KICAqCiAgKiBDYWxsZXIgbXVzdCBob2xkIGxvY2ssIGVsc2Ug d29ya2VyLT5wcm9jIGNvdWxkIGNoYW5nZSB1bmRlciB1cy4KICAqLwpAQCAtNzAzLDcgKzcw NSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAq d29ya2VyKQogewogCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9j aykpOwogCi0JU2V0TGF0Y2goJndvcmtlci0+cHJvYy0+cHJvY0xhdGNoKTsKKwlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh3 b3JrZXItPnByb2MpKTsKIH0KIAogLyoKQEAgLTEyMjEsMTQgKzEyMjMsMTQgQEAgQXBwbHlM YXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRleHREZWxldGUoc3Vi Y3R4KTsKIAogCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAotCQkJCQkgICB3YWl0X3RpbWUsCi0JCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICB3YWl0X3RpbWUsCisJCQkJ CQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CiAKLQkJaWYgKHJjICYg V0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggZDYyMTg2YTUxMDcu LjkxOGNjNjY3NzUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vc25hcGJ1aWxkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTI1MiwxMyArMTI1MywxMyBAQCB3 YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90X3VwZGF0ZWQpCiAJCXNsZWVw X21zID0gTUlOX1NMT1RTWU5DX1dPUktFUl9OQVBUSU1FX01TOwogCX0KIAotCXJjID0gV2Fp dExhdGNoKE15TGF0Y2gsCi0JCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCi0JCQkJICAgc2xlZXBfbXMsCi0JCQkJICAgV0FJVF9FVkVO VF9SRVBMSUNBVElPTl9TTE9UU1lOQ19NQUlOKTsKKwlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkgICBzbGVlcF9tcywKKwkJ CQkJICAgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lOQ19NQUlOKTsKIAotCWlmIChy YyAmIFdMX0xBVENIX1NFVCkKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwlpZiAocmMgJiBX TF9JTlRFUlJVUFQpCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCk7CiB9CiAKIC8qCkBAIC0xNTkwLDEzICsxNTkxLDEzIEBAIFNodXREb3duU2xvdFN5bmMo dm9pZCkKIAkJaW50CQkJcmM7CiAKIAkJLyogV2FpdCBhIGJpdCwgd2UgZG9uJ3QgZXhwZWN0 IHRvIGhhdmUgdG8gd2FpdCBsb25nICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfU0hVVERP V04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lO Q19TSFVURE9XTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBX TF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwppbmRleCAxMTg1MDNmY2I3Ni4uNjVjN2YzNDc1OTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTExLDYgKzEx MSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0 aWxzL2FjbC5oIgpAQCAtMjEwLDExICsyMTEsMTEgQEAgd2FpdF9mb3JfcmVsYXRpb25fc3Rh dGVfY2hhbmdlKE9pZCByZWxpZCwgY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJaWYgKCF3b3Jr ZXIpCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJ CQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7 CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0yNjAsMTUgKzI2 MSwxNSBAQCB3YWl0X2Zvcl93b3JrZXJfc3RhdGVfY2hhbmdlKGNoYXIgZXhwZWN0ZWRfc3Rh dGUpCiAJCQlicmVhazsKIAogCQkvKgotCQkgKiBXYWl0LiAgV2UgZXhwZWN0IHRvIGdldCBh IGxhdGNoIHNpZ25hbCBiYWNrIGZyb20gdGhlIGFwcGx5IHdvcmtlciwKKwkJICogV2FpdC4g IFdlIGV4cGVjdCB0byBnZXQgYW4gaW50ZXJydXB0IHdha2V1cCBmcm9tIHRoZSBhcHBseSB3 b3JrZXIsCiAJCSAqIGJ1dCB1c2UgYSB0aW1lb3V0IGluIGNhc2UgaXQgZGllcyB3aXRob3V0 IHNlbmRpbmcgb25lLgogCQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJ ICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0J CQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOwor CQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFO R0UpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJuIGZhbHNlOwpAQCAtNTU1LDcg KzU1Niw3IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIg Y3VycmVudF9sc24pCiAJCQkJCQkgKiB0aGUgZXhpc3RpbmcgbG9ja3MgYmVmb3JlIGVudGVy aW5nIGEgYnVzeSBsb29wLgogCQkJCQkJICogVGhpcyBpcyByZXF1aXJlZCB0byBhdm9pZCBh bnkgdW5kZXRlY3RlZCBkZWFkbG9ja3MKIAkJCQkJCSAqIGR1ZSB0byBhbnkgZXhpc3Rpbmcg bG9jayBhcyBkZWFkbG9jayBkZXRlY3RvciB3b24ndAotCQkJCQkJICogYmUgYWJsZSB0byBk ZXRlY3QgdGhlIHdhaXRzIG9uIHRoZSBsYXRjaC4KKwkJCQkJCSAqIGJlIGFibGUgdG8gZGV0 ZWN0IHRoZSB3YWl0cyBvbiB0aGUgaW50ZXJydXB0CiAJCQkJCQkgKi8KIAkJCQkJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQkJCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKQEAgLTc3MSwxNCArNzcyLDE0IEBAIGNvcHlfcmVhZF9kYXRhKHZvaWQgKm91dGJ1Ziwg aW50IG1pbnJlYWQsIGludCBtYXhyZWFkKQogCQl9CiAKIAkJLyoKLQkJICogV2FpdCBmb3Ig bW9yZSBkYXRhIG9yIGxhdGNoLgorCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgaW50ZXJy dXB0LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJ CQkJCSBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9MQVRDSF9TRVQgfAotCQkJCQkJCQkgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCSBmZCwgMTAwMEwsIFdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEpOworCQkodm9pZCkgV2FpdEludGVycnVwdE9y U29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkJIFdMX1NP Q0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCQkgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5U X0xPR0lDQUxfU1lOQ19EQVRBKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0KIAogCXJldHVybiBi eXRlc3JlYWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCA5MjVkZmY5Y2M0NC4uM2RlYjQzNmJlZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTc3LDYgKzE3Nyw3IEBACiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdy aXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0z NzI5LDI2ICszNzMwLDI2IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0 X3JlY2VpdmVkKQogCQkJYnJlYWs7CiAKIAkJLyoKLQkJICogV2FpdCBmb3IgbW9yZSBkYXRh IG9yIGxhdGNoLiAgSWYgd2UgaGF2ZSB1bmZsdXNoZWQgdHJhbnNhY3Rpb25zLAotCQkgKiB3 YWtlIHVwIGFmdGVyIFdhbFdyaXRlckRlbGF5IHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4gZmx1 c2hlZCB5ZXQgKGluCi0JCSAqIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIHNlbmQgYSBmZWVkYmFj ayBtZXNzYWdlKS4gIE90aGVyd2lzZSwgdGhlcmUncwotCQkgKiBubyBwYXJ0aWN1bGFyIHVy Z2VuY3kgYWJvdXQgd2FraW5nIHVwIHVubGVzcyB3ZSBnZXQgZGF0YSBvciBhCi0JCSAqIHNp Z25hbC4KKwkJICogV2FpdCBmb3IgbW9yZSBkYXRhIG9yIGludGVycnVwdC4gIElmIHdlIGhh dmUgdW5mbHVzaGVkCisJCSAqIHRyYW5zYWN0aW9ucywgd2FrZSB1cCBhZnRlciBXYWxXcml0 ZXJEZWxheSB0byBzZWUgaWYgdGhleSd2ZSBiZWVuCisJCSAqIGZsdXNoZWQgeWV0IChpbiB3 aGljaCBjYXNlIHdlIHNob3VsZCBzZW5kIGEgZmVlZGJhY2sgbWVzc2FnZSkuCisJCSAqIE90 aGVyd2lzZSwgdGhlcmUncyBubyBwYXJ0aWN1bGFyIHVyZ2VuY3kgYWJvdXQgd2FraW5nIHVw IHVubGVzcyB3ZQorCQkgKiBnZXQgZGF0YSBvciBhIHNpZ25hbC4KIAkJICovCiAJCWlmICgh ZGxpc3RfaXNfZW1wdHkoJmxzbl9tYXBwaW5nKSkKIAkJCXdhaXRfdGltZSA9IFdhbFdyaXRl ckRlbGF5OwogCQllbHNlCiAJCQl3YWl0X3RpbWUgPSBOQVBUSU1FX1BFUl9DWUNMRTsKIAot CQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfU09DS0VU X1JFQURBQkxFIHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLAotCQkJCQkJCSAg IFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0 T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSAgIFdM X1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCSAgIFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLAor CQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTik7CiAKLQkJaWYgKHJj ICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zeW5jcmVwLmMKaW5kZXggZmE1OTg4YzgyNGUuLmIxZWZkYTJlNWY0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCkBAIC04MSw2ICs4MSw3IEBACiAjaW5j bHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHNlbmRlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3Vj X2hvb2tzLmgiCkBAIC0yMjIsMjIgKzIyMywyMiBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9n UmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJLyoKIAkgKiBXYWl0IGZvciBzcGVjaWZpZWQg TFNOIHRvIGJlIGNvbmZpcm1lZC4KIAkgKgotCSAqIEVhY2ggcHJvYyBoYXMgaXRzIG93biB3 YWl0IGxhdGNoLCBzbyB3ZSBwZXJmb3JtIGEgbm9ybWFsIGxhdGNoCisJICogRWFjaCBwcm9j IGhhcyBpdHMgb3duIHdhaXQgaW50ZXJydXB0IHZlY3Rvciwgc28gd2UgcGVyZm9ybSBhIG5v cm1hbAogCSAqIGNoZWNrL3dhaXQgbG9vcCBoZXJlLgogCSAqLwogCWZvciAoOzspCiAJewog CQlpbnQJCQlyYzsKIAotCQkvKiBNdXN0IHJlc2V0IHRoZSBsYXRjaCBiZWZvcmUgdGVzdGlu ZyBzdGF0ZS4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogTXVzdCBjbGVhciB0 aGUgaW50ZXJydXB0IGZsYWcgYmVmb3JlIHRlc3Rpbmcgc3RhdGUuICovCisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyoKLQkJICogQWNxdWly aW5nIHRoZSBsb2NrIGlzIG5vdCBuZWVkZWQsIHRoZSBsYXRjaCBlbnN1cmVzIHByb3Blcgot CQkgKiBiYXJyaWVycy4gSWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBkb25lLCB3ZSBtdXN0IHJl YWxseSBiZSBkb25lLAotCQkgKiBiZWNhdXNlIG9uY2Ugd2Fsc2VuZGVyIGNoYW5nZXMgdGhl IHN0YXRlIHRvIFNZTkNfUkVQX1dBSVRfQ09NUExFVEUsCi0JCSAqIGl0IHdpbGwgbmV2ZXIg dXBkYXRlIGl0IGFnYWluLCBzbyB3ZSBjYW4ndCBiZSBzZWVpbmcgYSBzdGFsZSB2YWx1ZQot CQkgKiBpbiB0aGF0IGNhc2UuCisJCSAqIEFjcXVpcmluZyB0aGUgbG9jayBpcyBub3QgbmVl ZGVkLCB0aGUgaW50ZXJydXB0IGVuc3VyZXMgcHJvcGVyCisJCSAqIGJhcnJpZXJzIChGSVhN RTogaXMgdGhhdCBzbz8pLiBJZiBpdCBsb29rcyBsaWtlIHdlJ3JlIGRvbmUsIHdlIG11c3QK KwkJICogcmVhbGx5IGJlIGRvbmUsIGJlY2F1c2Ugb25jZSB3YWxzZW5kZXIgY2hhbmdlcyB0 aGUgc3RhdGUgdG8KKwkJICogU1lOQ19SRVBfV0FJVF9DT01QTEVURSwgaXQgd2lsbCBuZXZl ciB1cGRhdGUgaXQgYWdhaW4sIHNvIHdlIGNhbid0CisJCSAqIGJlIHNlZWluZyBhIHN0YWxl IHZhbHVlIGluIHRoYXQgY2FzZS4KIAkJICovCiAJCWlmIChNeVByb2MtPnN5bmNSZXBTdGF0 ZSA9PSBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFKQogCQkJYnJlYWs7CkBAIC0yODIsMTEgKzI4 MywxMyBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQp CiAJCX0KIAogCQkvKgotCQkgKiBXYWl0IG9uIGxhdGNoLiAgQW55IGNvbmRpdGlvbiB0aGF0 IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0IHRoZQotCQkgKiBsYXRjaCwgc28gbm8gbmVl ZCBmb3IgdGltZW91dC4KKwkJICogV2FpdCBvbiBpbnRlcnJ1cHQuICBBbnkgY29uZGl0aW9u IHRoYXQgc2hvdWxkIHdha2UgdXMgdXAgd2lsbCBzZXQKKwkJICogdGhlIGludGVycnVwdCwg c28gbm8gbmVlZCBmb3IgdGltZW91dC4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0 Y2gsIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIC0xLAotCQkJCQkgICBX QUlUX0VWRU5UX1NZTkNfUkVQKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1B U1RFUl9ERUFUSCwKKwkJCQkJCSAgIC0xLAorCQkJCQkJICAgV0FJVF9FVkVOVF9TWU5DX1JF UCk7CiAKIAkJLyoKIAkJICogSWYgdGhlIHBvc3RtYXN0ZXIgZGllcywgd2UnbGwgcHJvYmFi bHkgbmV2ZXIgZ2V0IGFuIGFja25vd2xlZGdtZW50LApAQCAtOTAyLDcgKzkwNSw3IEBAIFN5 bmNSZXBXYWtlUXVldWUoYm9vbCBhbGwsIGludCBtb2RlKQogCQkvKgogCQkgKiBXYWtlIG9u bHkgd2hlbiB3ZSBoYXZlIHNldCBzdGF0ZSBhbmQgcmVtb3ZlZCBmcm9tIHF1ZXVlLgogCQkg Ki8KLQkJU2V0TGF0Y2goJihwcm9jLT5wcm9jTGF0Y2gpKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwog CiAJCW51bXByb2NzKys7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmMKaW5kZXggNWY2NDFkMjc5MDUuLjM5ZmE5ZmEzZTJlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBAIC0x NDcsMTUgKzE0OCwxNyBAQCBzdGF0aWMgdm9pZCBXYWxSY3ZDb21wdXRlTmV4dFdha2V1cChX YWxSY3ZXYWtldXBSZWFzb24gcmVhc29uLCBUaW1lc3RhbXBUeiBub3cpOwogCiAvKgogICog UHJvY2VzcyBhbnkgaW50ZXJydXB0cyB0aGUgd2FscmVjZWl2ZXIgcHJvY2VzcyBtYXkgaGF2 ZSByZWNlaXZlZC4KLSAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhbnkgdGltZSB0aGUgcHJv Y2VzcydzIGxhdGNoIGhhcyBiZWNvbWUgc2V0LgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVk IGFueSB0aW1lIHRoZSBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgaW50ZXJydXB0CisgKiBo YXMgYmVjb21lIHNldC4KICAqCiAgKiBDdXJyZW50bHksIG9ubHkgU0lHVEVSTSBpcyBvZiBp bnRlcmVzdC4gIFdlIGNhbid0IGp1c3QgZXhpdCgxKSB3aXRoaW4gdGhlCiAgKiBTSUdURVJN IHNpZ25hbCBoYW5kbGVyLCBiZWNhdXNlIHRoZSBzaWduYWwgbWlnaHQgYXJyaXZlIGluIHRo ZSBtaWRkbGUgb2YKICAqIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9uLCBsaWtlIHdoaWxlIHdl J3JlIGhvbGRpbmcgYSBzcGlubG9jay4gIEluc3RlYWQsIHRoZQotICogc2lnbmFsIGhhbmRs ZXIgc2V0cyBhIGZsYWcgdmFyaWFibGUgYXMgd2VsbCBhcyBzZXR0aW5nIHRoZSBwcm9jZXNz J3MgbGF0Y2guCi0gKiBXZSBtdXN0IGNoZWNrIHRoZSBmbGFnIChieSBjYWxsaW5nIFByb2Nl c3NXYWxSY3ZJbnRlcnJ1cHRzKSBhbnl0aW1lIHRoZQotICogbGF0Y2ggaGFzIGJlY29tZSBz ZXQuICBPcGVyYXRpb25zIHRoYXQgY291bGQgYmxvY2sgZm9yIGEgbG9uZyB0aW1lLCBzdWNo IGFzCi0gKiByZWFkaW5nIGZyb20gYSByZW1vdGUgc2VydmVyLCBtdXN0IHBheSBhdHRlbnRp b24gdG8gdGhlIGxhdGNoIHRvbzsgc2VlCisgKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxh ZyB2YXJpYWJsZSBhcyB3ZWxsIGFzIHJhaXNpbmcKKyAqIElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUC4gIFdlIG11c3QgY2hlY2sgdGhlIGZsYWcgKGJ5IGNhbGxpbmcKKyAqIFByb2Nlc3NX YWxSY3ZJbnRlcnJ1cHRzKSBhbnl0aW1lIHRoZSBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAg aGFzIGJlY29tZQorICogc2V0LiAgT3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIGZvciBh IGxvbmcgdGltZSwgc3VjaCBhcyByZWFkaW5nIGZyb20gYQorICogcmVtb3RlIHNlcnZlciwg bXVzdCBwYXkgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcnJ1cHQgdG9vOyBzZWUKICAqIGxpYnBx cmN2X1BRZ2V0UmVzdWx0IGZvciBleGFtcGxlLgogICovCiB2b2lkCkBAIC01MzYsMjUgKzUz OSwyNSBAQCBXYWxSZWNlaXZlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAogCQkJCS8qCiAJCQkJICogSWRlYWxseSB3ZSB3b3VsZCByZXVz ZSBhIFdhaXRFdmVudFNldCBvYmplY3QgcmVwZWF0ZWRseQotCQkJCSAqIGhlcmUgdG8gYXZv aWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0TGF0Y2hPclNvY2tldCBvbiBlcG9sbAotCQkJCSAq IHN5c3RlbXMsIGJ1dCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgbGlicHEgKG9yIGFueSBvdGhl cgotCQkJCSAqIHdhbHJlY2VpdmVyIGltcGxlbWVudGF0aW9uKSBoYXMgdGhlIHNhbWUgc29j a2V0IChldmVuIGlmCi0JCQkJICogdGhlIGZkIGlzIHRoZSBzYW1lIG51bWJlciwgaXQgbWF5 IGhhdmUgYmVlbiBjbG9zZWQgYW5kCisJCQkJICogaGVyZSB0byBhdm9pZCB0aGUgb3Zlcmhl YWRzIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBvbgorCQkJCSAqIGVwb2xsIHN5c3RlbXMs IGJ1dCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgbGlicHEgKG9yIGFueQorCQkJCSAqIG90aGVy IHdhbHJlY2VpdmVyIGltcGxlbWVudGF0aW9uKSBoYXMgdGhlIHNhbWUgc29ja2V0IChldmVu CisJCQkJICogaWYgdGhlIGZkIGlzIHRoZSBzYW1lIG51bWJlciwgaXQgbWF5IGhhdmUgYmVl biBjbG9zZWQgYW5kCiAJCQkJICogcmVvcGVuZWQgc2luY2UgdGhlIGxhc3QgdGltZSkuICBJ biBmdXR1cmUsIGlmIHRoZXJlIGlzIGEKIAkJCQkgKiBmdW5jdGlvbiBmb3IgcmVtb3Zpbmcg c29ja2V0cyBmcm9tIFdhaXRFdmVudFNldCwgdGhlbiB3ZQogCQkJCSAqIGNvdWxkIGFkZCBh bmQgcmVtb3ZlIGp1c3QgdGhlIHNvY2tldCBlYWNoIHRpbWUsIHBvdGVudGlhbGx5CiAJCQkJ ICogYXZvaWRpbmcgc29tZSBzeXN0ZW0gY2FsbHMuCiAJCQkJICovCiAJCQkJQXNzZXJ0KHdh aXRfZmQgIT0gUEdJTlZBTElEX1NPQ0tFVCk7Ci0JCQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tl dChNeUxhdGNoLAotCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tF VF9SRUFEQUJMRSB8Ci0JCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfTEFUQ0hfU0VULAot CQkJCQkJCQkJICAgd2FpdF9mZCwKLQkJCQkJCQkJCSAgIG5hcCwKLQkJCQkJCQkJCSAgIFdB SVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOwotCQkJCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCwKKwkJCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfU09D S0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfSU5URVJSVVBU LAorCQkJCQkJCQkJCSAgIHdhaXRfZmQsCisJCQkJCQkJCQkJICAgbmFwLAorCQkJCQkJCQkJ CSAgIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOworCQkJCWlmIChyYyAmIFdMX0lO VEVSUlVQVCkKIAkJCQl7Ci0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQkJCVByb2Nlc3NXYWxS Y3ZJbnRlcnJ1cHRzKCk7CiAKIAkJCQkJaWYgKHdhbHJjdi0+Zm9yY2VfcmVwbHkpCkBAIC02 OTIsNyArNjk1LDcgQEAgV2FsUmN2V2FpdEZvclN0YXJ0UG9zaXRpb24oWExvZ1JlY1B0ciAq c3RhcnRwb2ludCwgVGltZUxpbmVJRCAqc3RhcnRwb2ludFRMSSkKIAlXYWtldXBSZWNvdmVy eSgpOwogCWZvciAoOzspCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCVByb2Nlc3NXYWxSY3ZJ bnRlcnJ1cHRzKCk7CiAKQEAgLTcyNCw4ICs3MjcsMTAgQEAgV2FsUmN2V2FpdEZvclN0YXJ0 UG9zaXRpb24oWExvZ1JlY1B0ciAqc3RhcnRwb2ludCwgVGltZUxpbmVJRCAqc3RhcnRwb2lu dFRMSSkKIAkJfQogCQlTcGluTG9ja1JlbGVhc2UoJndhbHJjdi0+bXV0ZXgpOwogCi0JCSh2 b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAs CisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJ IDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQpOwogCX0K IAogCWlmICh1cGRhdGVfcHJvY2Vzc190aXRsZSkKQEAgLTEzNjYsNyArMTM3MSw3IEBAIFdh bFJjdkZvcmNlUmVwbHkodm9pZCkKIAlwcm9jbm8gPSBXYWxSY3YtPnByb2NubzsKIAlTcGlu TG9ja1JlbGVhc2UoJldhbFJjdi0+bXV0ZXgpOwogCWlmIChwcm9jbm8gIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHByb2NubyktPnBy b2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBw cm9jbm8pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2FscmVjZWl2ZXJmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXJmdW5jcy5jCmluZGV4IDg1NTdkMTBjZjlkLi42MjEyZTgyNTc3MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpAQCAtMjYsNiArMjYsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKQEAg LTMxNyw3ICszMTgsNyBAQCBSZXF1ZXN0WExvZ1N0cmVhbWluZyhUaW1lTGluZUlEIHRsaSwg WExvZ1JlY1B0ciByZWNwdHIsIGNvbnN0IGNoYXIgKmNvbm5pbmZvLAogCWlmIChsYXVuY2gp CiAJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX1dBTFJFQ0VJVkVSKTsK IAllbHNlIGlmICh3YWxyY3ZfcHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRM YXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2FscmN2X3Byb2MpLT5wcm9jTGF0Y2gpOworCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgd2FscmN2X3Byb2MpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCAzNzFlZWYz ZGRkYy4uMjVjNWJkOGUzMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j CkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyX3By aXZhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTAxMyw4ICsxMDE0LDggQEAgU3Rh cnRSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAgKiBYTG9nUmVhZGVy Um91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIGZvciBsb2dpY2FsIGRlY29kaW5nIGNvbnRl eHRzLCBhcyBhCiAgKiB3YWxzZW5kZXIgcHJvY2Vzcy4KICAqCi0gKiBJbnNpZGUgdGhlIHdh bHNlbmRlciB3ZSBjYW4gZG8gYmV0dGVyIHRoYW4gcmVhZF9sb2NhbF94bG9nX3BhZ2UsCi0g KiB3aGljaCBoYXMgdG8gZG8gYSBwbGFpbiBzbGVlcC9idXN5IGxvb3AsIGJlY2F1c2UgdGhl IHdhbHNlbmRlcidzIGxhdGNoIGdldHMKKyAqIEluc2lkZSB0aGUgd2Fsc2VuZGVyIHdlIGNh biBkbyBiZXR0ZXIgdGhhbiByZWFkX2xvY2FsX3hsb2dfcGFnZSwgd2hpY2gKKyAqIGhhcyB0 byBkbyBhIHBsYWluIHNsZWVwL2J1c3kgbG9vcCwgYmVjYXVzZSB0aGUgd2Fsc2VuZGVyJ3Mg aW50ZXJydXB0IGdldHMKICAqIHNldCBldmVyeSB0aW1lIFdBTCBpcyBmbHVzaGVkLgogICov CiBzdGF0aWMgaW50CkBAIC0xNjExLDcgKzE2MTIsNyBAQCBQcm9jZXNzUGVuZGluZ1dyaXRl cyh2b2lkKQogCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XUklURV9EQVRBKTsKIAog CQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0xNjI4LDggKzE2MjksOCBA QCBQcm9jZXNzUGVuZGluZ1dyaXRlcyh2b2lkKQogCQkJV2FsU25kU2h1dGRvd24oKTsKIAl9 CiAKLQkvKiByZWFjdGl2YXRlIGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGlu dWUgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiByZWFjdGl2YXRlIGludGVycnVwdCBz byBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTE4MTcsNyArMTgxOCw3IEBA IFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCWxvbmcJCXNsZWVwdGltZTsK IAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0xOTM3LDggKzE5Mzgs OCBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlXYWxTbmRXYWl0KHdh a2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCk7CiAJfQogCi0JLyogcmVhY3RpdmF0 ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCi0JU2V0TGF0Y2go TXlMYXRjaCk7CisJLyogcmVhY3RpdmF0ZSBpbnRlcnJ1cHQgZmxhZyBzbyBXYWxTbmRMb29w IGtub3dzIHRvIGNvbnRpbnVlICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIAlyZXR1cm4gUmVjZW50Rmx1c2hQdHI7CiB9CiAKQEAgLTI3NTUsNyAr Mjc1Niw3IEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEp CiAJZm9yICg7OykKIAl7CiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVw cyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVApOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAg LTM1NTQsNyArMzU1NSw3IEBAIHN0YXRpYyB2b2lkCiBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVy KFNJR05BTF9BUkdTKQogewogCWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxh dGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQog CiAvKiBTZXQgdXAgc2lnbmFsIGhhbmRsZXJzICovCkBAIC0zNjYwLDcgKzM2NjEsNyBAQCBX YWxTbmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3 YWl0X2V2ZW50KQogewogCVdhaXRFdmVudAlldmVudDsKIAotCU1vZGlmeVdhaXRFdmVudChG ZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIE5VTEwp OworCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3Ms IHNvY2tldF9ldmVudHMsIDApOwogCiAJLyoKIAkgKiBXZSB1c2UgYSBjb25kaXRpb24gdmFy aWFibGUgdG8gZWZmaWNpZW50bHkgd2FrZSB1cCB3YWxzZW5kZXJzIGluCkBAIC0zNjcyLDgg KzM2NzMsOCBAQCBXYWxTbmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVv dXQsIHVpbnQzMiB3YWl0X2V2ZW50KQogCSAqIENvbmRpdGlvblZhcmlhYmxlU2xlZXAoKSku IEl0IHN0aWxsIHVzZXMgV2FpdEV2ZW50U2V0V2FpdCgpIGZvcgogCSAqIHdhaXRpbmcsIGJl Y2F1c2Ugd2UgYWxzbyBuZWVkIHRvIHdhaXQgZm9yIHNvY2tldCBldmVudHMuIFRoZSBwcm9j ZXNzZXMKIAkgKiAoc3RhcnR1cCBwcm9jZXNzLCB3YWxyZWNlaXZlciBldGMuKSB3YW50aW5n IHRvIHdha2UgdXAgd2Fsc2VuZGVycyB1c2UKLQkgKiBDb25kaXRpb25WYXJpYWJsZUJyb2Fk Y2FzdCgpLCB3aGljaCBpbiB0dXJuIGNhbGxzIFNldExhdGNoKCksIGhlbHBpbmcKLQkgKiB3 YWxzZW5kZXJzIGNvbWUgb3V0IG9mIFdhaXRFdmVudFNldFdhaXQoKS4KKwkgKiBDb25kaXRp b25WYXJpYWJsZUJyb2FkY2FzdCgpLCB3aGljaCBpbiB0dXJuIGNhbGxzIFNlbmRJbnRlcnJ1 cHQoKSwKKwkgKiBoZWxwaW5nIHdhbHNlbmRlcnMgY29tZSBvdXQgb2YgV2FpdEV2ZW50U2V0 V2FpdCgpLgogCSAqCiAJICogVGhpcyBhcHByb2FjaCBpcyBzaW1wbGUgYW5kIGVmZmljaWVu dCBiZWNhdXNlLCBvbmUgZG9lc24ndCBoYXZlIHRvIGxvb3AKIAkgKiB0aHJvdWdoIGFsbCB0 aGUgd2Fsc2VuZGVycyBzbG90cywgd2l0aCBhIHNwaW5sb2NrIGFjcXVpc2l0aW9uIGFuZApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCAwZjAyYmY2MmZhMy4uOTk5 MmI4MzdjNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC01MSw2 ICs1MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAt Mjg4Miw3ICsyODgzLDcgQEAgVW5waW5CdWZmZXJOb093bmVyKEJ1ZmZlckRlc2MgKmJ1ZikK IAogCQkJCWJ1Zl9zdGF0ZSAmPSB+Qk1fUElOX0NPVU5UX1dBSVRFUjsKIAkJCQlVbmxvY2tC dWZIZHIoYnVmLCBidWZfc3RhdGUpOwotCQkJCVByb2NTZW5kU2lnbmFsKHdhaXRfYmFja2Vu ZF9wZ3Byb2Nubyk7CisJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsIHdhaXRfYmFja2VuZF9wZ3Byb2Nubyk7CiAJCQl9CiAJCQllbHNlCiAJCQkJVW5sb2Nr QnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsKQEAgLTUzNDQsNyArNTM0NSwxMiBAQCBMb2NrQnVm ZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldh aXRCdWZJZCgtMSk7CiAJCX0KIAkJZWxzZQotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9F VkVOVF9CVUZGRVJfUElOKTsKKwkJeworCQkJV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCQl9CiAKIAkJLyoKIAkJICogUmVtb3ZlIGZsYWcgbWFya2luZyB1cyBhcyB3YWl0ZXIu IE5vcm1hbGx5IHRoaXMgd2lsbCBub3QgYmUgc2V0CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvZnJlZWxpc3QuYwppbmRleCBkZmZkZDU3ZTliNS4uNTc3MzNiMDNkMjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMTksNiArMTksNyBAQAogI2lu Y2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFs cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2RlZmluZSBJTlRf QUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUgaW50ICopJih2YXIpKSkpCkBA IC0yMTksMjcgKzIyMCwyNSBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCS8qCiAJ ICogSWYgYXNrZWQsIHdlIG5lZWQgdG8gd2FrZW4gdGhlIGJnd3JpdGVyLiBTaW5jZSB3ZSBk b24ndCB3YW50IHRvIHJlbHkgb24KIAkgKiBhIHNwaW5sb2NrIGZvciB0aGlzIHdlIGZvcmNl IGEgcmVhZCBmcm9tIHNoYXJlZCBtZW1vcnkgb25jZSwgYW5kIHRoZW4KLQkgKiBzZXQgdGhl IGxhdGNoIGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGF0 IGxlbmd0aAotCSAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3Byb2NubyBtaWdodCBiZSByZXNl dCB3aGlsZS9hZnRlciB3ZSBjaGVjayBiZWNhdXNlCi0JICogdGhlIGNvbXBpbGVyIG1pZ2h0 IGp1c3QgcmVyZWFkIGZyb20gbWVtb3J5LgorCSAqIHNlbmQgdGhlIGludGVycnVwdCBiYXNl ZCBvbiB0aGF0IHZhbHVlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhhdAorCSAqIGxlbmd0 aCBiZWNhdXNlIG90aGVyd2lzZSBiZ3dwcm9jbm8gbWlnaHQgYmUgcmVzZXQgd2hpbGUvYWZ0 ZXIgd2UgY2hlY2sKKwkgKiBiZWNhdXNlIHRoZSBjb21waWxlciBtaWdodCBqdXN0IHJlcmVh ZCBmcm9tIG1lbW9yeS4KIAkgKgotCSAqIFRoaXMgY2FuIHBvc3NpYmx5IHNldCB0aGUgbGF0 Y2ggb2YgdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlIGJnd3JpdGVyCi0JICogZGllcyBpbiB0 aGUgd3JvbmcgbW9tZW50LiBCdXQgc2luY2UgUEdQUk9DLT5wcm9jTGF0Y2ggaXMgbmV2ZXIK LQkgKiBkZWFsbG9jYXRlZCB0aGUgd29yc3QgY29uc2VxdWVuY2Ugb2YgdGhhdCBpcyB0aGF0 IHdlIHNldCB0aGUgbGF0Y2ggb2YKLQkgKiBzb21lIGFyYml0cmFyeSBwcm9jZXNzLgorCSAq IFRoaXMgY2FuIHBvc3NpYmx5IHNlbmQgdGhlIGludGVycnVwdCB0byB0aGUgd3JvbmcgcHJv Y2VzcyBpZiB0aGUKKwkgKiBiZ3dyaXRlciBkaWVzIGluIHRoZSB3cm9uZyBtb21lbnQsIGJ1 dCB0aGF0J3MgaGFybWxlc3MuCiAJICovCiAJYmd3cHJvY25vID0gSU5UX0FDQ0VTU19PTkNF KFN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vKTsKIAlpZiAoYmd3cHJvY25vICE9IC0xKQog CXsKLQkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZvcmUgc2V0dGluZyB0aGUgbGF0 Y2ggKi8KKwkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZvcmUgc2VuZGluZyB0aGUg aW50ZXJydXB0ICovCiAJCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7CiAKIAkJ LyoKLQkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2ggaXMgc2xp Z2h0bHkgaWNreS4gSXQncwotCQkgKiBhY3R1YWxseSBmaW5lIGJlY2F1c2UgcHJvY0xhdGNo IGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuCi0JCSAqIHBvdGVudGlhbGx5IHNl dCB0aGUgd3JvbmcgcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRjaC4KKwkJICogTm90 IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2ggaXMgc2xpZ2h0bHkgaWNreSwg YmVjYXVzZSB3ZQorCQkgKiBjYW4gcG90ZW50aWFsbHkgc2VuZCB0aGUgaW50ZXJydXB0IHRv IHRoZSB3cm9uZyBwcm9jZXNzIChvciBubworCQkgKiBwcm9jZXNzKSwgYnV0IGl0J3MgaGFy bWxlc3MuCiAJCSAqLwotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbYmd3cHJv Y25vXS5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwgYmd3cHJvY25vKTsKIAl9CiAKIAkvKgpAQCAtNDIwLDEwICs0MTksMTAgQEAgU3Ry YXRlZ3lTeW5jU3RhcnQodWludDMyICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1 Zl9hbGxvYykKIH0KIAogLyoKLSAqIFN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIgLS0gc2V0IG9y IGNsZWFyIGFsbG9jYXRpb24gbm90aWZpY2F0aW9uIGxhdGNoCisgKiBTdHJhdGVneU5vdGlm eUJnV3JpdGVyIC0tIHNldCBvciBjbGVhciBhbGxvY2F0aW9uIG5vdGlmaWNhdGlvbiBwcm9j ZXNzCiAgKgogICogSWYgYmd3cHJvY25vIGlzbid0IC0xLCB0aGUgbmV4dCBpbnZvY2F0aW9u IG9mIFN0cmF0ZWd5R2V0QnVmZmVyIHdpbGwKLSAqIHNldCB0aGF0IGxhdGNoLiAgUGFzcyAt MSB0byBjbGVhciB0aGUgcGVuZGluZyBub3RpZmljYXRpb24gYmVmb3JlIGl0CisgKiBpbnRl cnJ1cHQgdGhhdCBwcm9jZXNzLiAgUGFzcyAtMSB0byBjbGVhciB0aGUgcGVuZGluZyBub3Rp ZmljYXRpb24gYmVmb3JlIGl0CiAgKiBoYXBwZW5zLiAgVGhpcyBmZWF0dXJlIGlzIHVzZWQg YnkgdGhlIGJnd3JpdGVyIHByb2Nlc3MgdG8gd2FrZSBpdHNlbGYgdXAKICAqIGZyb20gaGli ZXJuYXRpb24sIGFuZCBpcyBub3QgbWVhbnQgZm9yIGFueWJvZHkgZWxzZSB0byB1c2UuCiAg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKaW5kZXggZDhhMTY1M2ViNmEuLjVjN2M3 MmY5MDJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQpAQCAtMTMsOSArMTMsOSBA QCBPQkpTID0gXAogCWRzbS5vIFwKIAlkc21faW1wbC5vIFwKIAlkc21fcmVnaXN0cnkubyBc CisJaW50ZXJydXB0Lm8gXAogCWlwYy5vIFwKIAlpcGNpLm8gXAotCWxhdGNoLm8gXAogCXBt c2lnbmFsLm8gXAogCXByb2NhcnJheS5vIFwKIAlwcm9jc2lnbmFsLm8gXApAQCAtMjUsNiAr MjUsNyBAQCBPQkpTID0gXAogCXNpZ25hbGZ1bmNzLm8gXAogCXNpbnZhbC5vIFwKIAlzaW52 YWxhZHQubyBcCi0Jc3RhbmRieS5vCisJc3RhbmRieS5vIFwKKwl3YWl0ZXZlbnRzZXQubwog CiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iOTRlZDM0M2RjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCkBAIC0wLDAgKzEsMTE0IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBpbnRlcnJ1cHQuYworICoJICBJbnRlcnJ1cHQgaGFuZGxp bmcgcm91dGluZXMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2ludGVycnVwdC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgor I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKK3N0YXRpYyBwZ19hdG9taWNfdWludDMy IExvY2FsUGVuZGluZ0ludGVycnVwdHM7CitzdGF0aWMgcGdfYXRvbWljX3VpbnQzMiBMb2Nh bE1heWJlU2xlZXBpbmdPbkludGVycnVwdHM7CisKK3BnX2F0b21pY191aW50MzIgKk15UGVu ZGluZ0ludGVycnVwdHMgPSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKK3BnX2F0b21pY191 aW50MzIgKk15TWF5YmVTbGVlcGluZ09uSW50ZXJydXB0cyA9ICZMb2NhbE1heWJlU2xlZXBp bmdPbkludGVycnVwdHM7CisKKy8qCisgKiBTd2l0Y2ggdG8gbG9jYWwgaW50ZXJydXB0cy4g IE90aGVyIGJhY2tlbmRzIGNhbid0IHNlbmQgaW50ZXJydXB0cyB0byB0aGlzCisgKiBvbmUu ICBPbmx5IFJhaXNlSW50ZXJydXB0KCkgY2FuIHNldCB0aGVtLCBmcm9tIGluc2lkZSB0aGlz IHByb2Nlc3MuCisgKi8KK3ZvaWQKK1N3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKHZvaWQpCit7 CisJaWYgKE15UGVuZGluZ0ludGVycnVwdHMgPT0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHMp CisJCXJldHVybjsKKworCU15UGVuZGluZ0ludGVycnVwdHMgPSAmTG9jYWxQZW5kaW5nSW50 ZXJydXB0czsKKwlNeU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMgPSAmTG9jYWxNYXliZVNs ZWVwaW5nT25JbnRlcnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJN IGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVp bmcgdGhlIG5ldyBNeVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBn X21lbW9yeV9iYXJyaWVyKCk7CisKKwkvKgorCSAqIE1peCBpbiB0aGUgaW50ZXJydXB0cyB0 aGF0IHdlIGhhdmUgcmVjZWl2ZWQgYWxyZWFkeSBpbiBvdXIgc2hhcmVkCisJICogaW50ZXJy dXB0IHZlY3Rvciwgd2hpbGUgYXRvbWljYWxseSBjbGVhcmluZyBpdC4gIE90aGVyIGJhY2tl bmRzIG1heQorCSAqIGNvbnRpbnVlIHRvIHNldCBiaXRzIGluIGl0IGFmdGVyIHRoaXMgcG9p bnQsIGJ1dCB3ZSd2ZSBhdG9taWNhbGx5CisJICogdHJhbnNmZXJyZWQgdGhlIGV4aXN0aW5n IGJpdHMgdG8gb3VyIGxvY2FsIHZlY3RvciBzbyB3ZSB3b24ndCBnZXQKKwkgKiBkdXBsaWNh dGVkIGludGVycnVwdHMgbGF0ZXIgaWYgd2Ugc3dpdGNoIGJhY2t4LgorCSAqLworCXBnX2F0 b21pY19mZXRjaF9vcl91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywKKwkJCQkJCSAgIHBnX2F0 b21pY19leGNoYW5nZV91MzIoJk15UHJvYy0+cGVuZGluZ0ludGVycnVwdHMsIDApKTsKK30K KworLyoKKyAqIFN3aXRjaCB0byBzaGFyZWQgbWVtb3J5IGludGVycnVwdHMuICBPdGhlciBi YWNrZW5kcyBjYW4gc2VuZCBpbnRlcnJ1cHRzIHRvCisgKiB0aGlzIG9uZSBpZiB0aGV5IGtu b3cgaXRzIFByb2NOdW1iZXIsIGFuZCB3ZSdsbCBub3cgc2VlIGFueSB0aGF0IHdlIG1pc3Nl ZC4KKyAqLwordm9pZAorU3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKHZvaWQpCit7CisJaWYg KE15UGVuZGluZ0ludGVycnVwdHMgPT0gJk15UHJvYy0+cGVuZGluZ0ludGVycnVwdHMpCisJ CXJldHVybjsKKworCU15UGVuZGluZ0ludGVycnVwdHMgPSAmTXlQcm9jLT5wZW5kaW5nSW50 ZXJydXB0czsKKwlNeU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMgPSAmTXlQcm9jLT5tYXli ZVNsZWVwaW5nT25JbnRlcnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdB TFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBz ZWVpbmcgdGhlIG5ldyBNeVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLwor CXBnX21lbW9yeV9iYXJyaWVyKCk7CisKKwkvKiBNaXggaW4gYW55IHVuaGFuZGxlZCBiaXRz IGZyb20gTG9jYWxQZW5kaW5nSW50ZXJydXB0cy4gKi8KKwlwZ19hdG9taWNfZmV0Y2hfb3Jf dTMyKE15UGVuZGluZ0ludGVycnVwdHMsCisJCQkJCQkgICBwZ19hdG9taWNfZXhjaGFuZ2Vf dTMyKCZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzLCAwKSk7Cit9CisKKy8qCisgKiBTZXQgYW4g aW50ZXJydXB0IGZsYWcgaW4gdGhpcyBiYWNrZW5kLgorICovCit2b2lkCitSYWlzZUludGVy cnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sKKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTMy KE15UGVuZGluZ0ludGVycnVwdHMsIDEgPDwgcmVhc29uKTsKKwlXYWtldXBNeVByb2MoKTsK K30KKworLyoKKyAqIFNldCBhbiBpbnRlcnJ1cHQgZmxhZyBpbiBhbm90aGVyIGJhY2tlbmQu CisgKi8KK3ZvaWQKK1NlbmRJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24sIFByb2NO dW1iZXIgcGdwcm9jbm8pCit7CisJUEdQUk9DCSAgICpwcm9jOworCisJQXNzZXJ0KHBncHJv Y25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpOworCUFzc2VydChwZ3Byb2NubyA+PSAwKTsK KwlBc3NlcnQocGdwcm9jbm8gPCBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQpOworCisJcHJv YyA9ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1twZ3Byb2Nub107CisJcGdfYXRvbWljX2ZldGNo X29yX3UzMigmcHJvYy0+cGVuZGluZ0ludGVycnVwdHMsIDEgPDwgcmVhc29uKTsKKwlXYWtl dXBPdGhlclByb2MocHJvYyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxk CmluZGV4IDVhOTM2MTcxZjczLi40ZWJhNDFiNzhhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvbWVzb24uYnVpbGQKQEAgLTUsOSArNSw5IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxl cygKICAgJ2RzbS5jJywKICAgJ2RzbV9pbXBsLmMnLAogICAnZHNtX3JlZ2lzdHJ5LmMnLAor ICAnaW50ZXJydXB0LmMnLAogICAnaXBjLmMnLAogICAnaXBjaS5jJywKLSAgJ2xhdGNoLmMn LAogICAncG1zaWduYWwuYycsCiAgICdwcm9jYXJyYXkuYycsCiAgICdwcm9jc2lnbmFsLmMn LApAQCAtMTgsNSArMTgsNiBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdzaW52 YWwuYycsCiAgICdzaW52YWxhZHQuYycsCiAgICdzdGFuZGJ5LmMnLAorICAnd2FpdGV2ZW50 c2V0LmMnLAogCiApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXgg ODcwMjdmMjdlYjcuLmY5N2Y0Y2ExY2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAgLTQ4MSw3 ICs0ODEsNyBAQCBIYW5kbGVQcm9jU2lnbmFsQmFycmllckludGVycnVwdCh2b2lkKQogewog CUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCVByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9 IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIgKi8KKwkvKiBpbnRlcnJ1cHQgd2lsbCBiZSByYWlzZWQgYnkgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIgKi8KIH0KIAogLyoKQEAgLTcxMiw3ICs3MTIsNyBAQCBwcm9jc2ln bmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKSkKIAkJSGFuZGxlUmVjb3Zl cnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJ Tik7CiAKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htX21xLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpp bmRleCA5MjM1ZmNkMDhlYy4uNzYwNWFjZmQwYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobV9tcS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bV9tcS5jCkBAIC00LDcgKzQsNyBAQAogICoJICBzaW5nbGUtcmVhZGVyLCBzaW5nbGUtd3Jp dGVyIHNoYXJlZCBtZW1vcnkgbWVzc2FnZSBxdWV1ZQogICoKICAqIEJvdGggdGhlIHNlbmRl ciBhbmQgdGhlIHJlY2VpdmVyIG11c3QgaGF2ZSBhIFBHUFJPQzsgdGhlaXIgcmVzcGVjdGl2 ZQotICogcHJvY2VzcyBsYXRjaGVzIGFyZSB1c2VkIGZvciBzeW5jaHJvbml6YXRpb24uICBP bmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCisgKiBwcm9jZXNzIGludGVycnVwdHMgYXJlIHVz ZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlIHNlbmRlciBtYXkgc2VuZCwKICAq IGFuZCBvbmx5IHRoZSByZWNlaXZlciBtYXkgcmVjZWl2ZS4gIFRoaXMgaXMgaW50ZW5kZWQg dG8gYWxsb3cgYSB1c2VyCiAgKiBiYWNrZW5kIHRvIGNvbW11bmljYXRlIHdpdGggd29ya2Vy IGJhY2tlbmRzIHRoYXQgaXQgaGFzIHJlZ2lzdGVyZWQuCiAgKgpAQCAtMjIsNiArMjIsNyBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC00NCwxMCAr NDUsMTEgQEAKICAqCiAgKiBtcV9kZXRhY2hlZCBuZWVkcyBubyBsb2NraW5nLiAgSXQgY2Fu IGJlIHNldCBieSBlaXRoZXIgdGhlIHNlbmRlciBvciB0aGUKICAqIHJlY2VpdmVyLCBidXQg b25seSBldmVyIGZyb20gZmFsc2UgdG8gdHJ1ZSwgc28gcmVkdW5kYW50IHdyaXRlcyBkb24n dAotICogbWF0dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1xX2RldGFj aGVkIGFuZCB0aGVuIHNldCB0aGUKLSAqIGNvdW50ZXJwYXJ0eSdzIGxhdGNoLCB0aGUgY291 bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlIGNoYW5nZQotICogYWZ0ZXIg d2FraW5nIHVwLiAgU2luY2UgU2V0TGF0Y2ggYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFycmll ciBhbmQgUmVzZXRMYXRjaAotICogZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91bGQgYmUgT0su CisgKiBtYXR0ZXIuICBJdCBpcyBpbXBvcnRhbnQgdGhhdCBpZiB3ZSBzZXQgbXFfZGV0YWNo ZWQgYW5kIHRoZW4gc2VuZCB0aGUKKyAqIGludGVycnVwdCB0byB0aGUgY291bnRlcnBhcnR5 LCB0aGUgY291bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlCisgKiBjaGFu Z2UgYWZ0ZXIgd2FraW5nIHVwLiAgU2luY2UgU2VuZEludGVycnVwdCBiZWdpbnMgd2l0aCBh IG1lbW9yeSBiYXJyaWVyCisgKiBhbmQgQ2xlYXJJbnRlcnJ1cHQgZW5kcyB3aXRoIG9uZSwg dGhpcyBzaG91bGQgYmUgT0suCisgKiBYWFg6IE5vIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVy cyBpbiBTZW5kSW50dGVydXB0L0NsZWFySW50ZXJydXB0LCBkbyB3ZSBuZWVkIHRvIGFkZCBz b21lPwogICoKICAqIG1xX3Jpbmdfc2l6ZSBhbmQgbXFfcmluZ19vZmZzZXQgbmV2ZXIgY2hh bmdlIGFmdGVyIGluaXRpYWxpemF0aW9uLCBhbmQKICAqIGNhbiB0aGVyZWZvcmUgYmUgcmVh ZCB3aXRob3V0IHRoZSBsb2NrLgpAQCAtMTEyLDcgKzExNCw3IEBAIHN0cnVjdCBzaG1fbXEK ICAqIHlldCB1cGRhdGVkIGluIHRoZSBzaGFyZWQgbWVtb3J5LiAgV2Ugd2lsbCBub3QgdXBk YXRlIGl0IHVudGlsIHRoZSB3cml0dGVuCiAgKiBkYXRhIGlzIDEvNHRoIG9mIHRoZSByaW5n IHNpemUgb3IgdGhlIHR1cGxlIHF1ZXVlIGlzIGZ1bGwuICBUaGlzIHdpbGwKICAqIHByZXZl bnQgZnJlcXVlbnQgQ1BVIGNhY2hlIG1pc3NlcywgYW5kIGl0IHdpbGwgYWxzbyBhdm9pZCBm cmVxdWVudAotICogU2V0TGF0Y2goKSBjYWxscywgd2hpY2ggYXJlIHF1aXRlIGV4cGVuc2l2 ZS4KKyAqIFNlbmRJbnRlcnJ1cHQoKSBjYWxscywgd2hpY2ggYXJlIHF1aXRlIGV4cGVuc2l2 ZS4KICAqCiAgKiBtcWhfcGFydGlhbF9ieXRlcywgbXFoX2V4cGVjdGVkX2J5dGVzLCBhbmQg bXFoX2xlbmd0aF93b3JkX2NvbXBsZXRlCiAgKiBhcmUgdXNlZCB0byB0cmFjayB0aGUgc3Rh dGUgb2Ygbm9uLWJsb2NraW5nIG9wZXJhdGlvbnMuICBXaGVuIHRoZSBjYWxsZXIKQEAgLTIx NCw3ICsyMTYsNyBAQCBzaG1fbXFfc2V0X3JlY2VpdmVyKHNobV9tcSAqbXEsIFBHUFJPQyAq cHJvYykKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAoc2VuZGVy ICE9IE5VTEwpCi0JCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRjaCk7CisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHNl bmRlcikpOwogfQogCiAvKgpAQCAtMjMyLDcgKzIzNCw3IEBAIHNobV9tcV9zZXRfc2VuZGVy KHNobV9tcSAqbXEsIFBHUFJPQyAqcHJvYykKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9t dXRleCk7CiAKIAlpZiAocmVjZWl2ZXIgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnJlY2VpdmVy LT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWNlaXZlcikpOwogfQogCiAvKgpAQCAtMzQxLDE0 ICszNDMsMTQgQEAgc2htX21xX3NlbmQoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRl cywgY29uc3Qgdm9pZCAqZGF0YSwgYm9vbCBub3dhaXQsCiAgKiBXcml0ZSBhIG1lc3NhZ2Ug aW50byBhIHNoYXJlZCBtZXNzYWdlIHF1ZXVlLCBnYXRoZXJlZCBmcm9tIG11bHRpcGxlCiAg KiBhZGRyZXNzZXMuCiAgKgotICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBv biBvdXIgcHJvY2VzcyBsYXRjaCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgotICogZmlsbHMgdXAs IGFuZCB0aGVuIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIgaGFzIGRyYWlu ZWQgc29tZSBkYXRhLgotICogVGhlIHByb2Nlc3MgbGF0Y2ggaXMgcmVzZXQgYWZ0ZXIgZWFj aCB3YWl0LgorICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIgcHJv Y2VzcyBpbnRlcnJ1cHQgd2hlbiB0aGUgcmluZworICogYnVmZmVyIGZpbGxzIHVwLCBhbmQg dGhlbiBjb250aW51ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFpbmVkCisg KiBzb21lIGRhdGEuICBUaGUgcHJvY2VzcyBpbnRlcnJ1cHQgaXMgY2xlYXJlZCBhZnRlciBl YWNoIHdhaXQuCiAgKgotICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1 bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MgbGF0Y2g7CisgKiBXaGVuIG5vd2FpdCA9 IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcyBp bnRlcnJ1cHQ7CiAgKiBpbnN0ZWFkLCBpZiB0aGUgYnVmZmVyIGJlY29tZXMgZnVsbCwgd2Ug cmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluCiAgKiB0aGlzIGNhc2UsIHRoZSBjYWxs ZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbiwgd2l0aCB0aGUgc2FtZQotICog YXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nlc3MgbGF0Y2ggaXMgc2V0LiAgKE9uY2Ug YmVndW4sIHRoZSBzZW5kaW5nCisgKiBhcmd1bWVudHMsIGVhY2ggdGltZSB0aGUgcHJvY2Vz cyBpbnRlcnJ1cHQgaXMgc2V0LiAgKE9uY2UgYmVndW4sIHRoZSBzZW5kaW5nCiAgKiBvZiBh IG1lc3NhZ2UgY2Fubm90IGJlIGFib3J0ZWQgZXhjZXB0IGJ5IGRldGFjaGluZyBmcm9tIHRo ZSBxdWV1ZTsgY2hhbmdpbmcKICAqIHRoZSBsZW5ndGggb3IgcGF5bG9hZCB3aWxsIGNvcnJ1 cHQgdGhlIHF1ZXVlLikKICAqCkBAIC01MzksNyArNTQxLDcgQEAgc2htX21xX3NlbmR2KHNo bV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJvb2wg bm93YWl0LAogCXsKIAkJc2htX21xX2luY19ieXRlc193cml0dGVuKG1xLCBtcWgtPm1xaF9z ZW5kX3BlbmRpbmcpOwogCQlpZiAocmVjZWl2ZXIgIT0gTlVMTCkKLQkJCVNldExhdGNoKCZy ZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJlY2VpdmVyKSk7CiAJCW1xaC0+bXFo X3NlbmRfcGVuZGluZyA9IDA7CiAJfQogCkBAIC01NTcsMTYgKzU1OSwxNiBAQCBzaG1fbXFf c2VuZHYoc2htX21xX2hhbmRsZSAqbXFoLCBzaG1fbXFfaW92ZWMgKmlvdiwgaW50IGlvdmNu dCwgYm9vbCBub3dhaXQsCiAgKiB3aGlsZSBzdGlsbCBhbGxvd2luZyBsb25nZXIgbWVzc2Fn ZXMuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHJldHVybiB2YWx1ZQogICogcmVtYWlucyB2YWxp ZCB1bnRpbCB0aGUgbmV4dCByZWNlaXZlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgb24gdGhl IHF1ZXVlLgogICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3Vy IHByb2Nlc3MgbGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIKLSAqIGlzIGVtcHR5IGFuZCB3 ZSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3NhZ2UuICBUaGUgc2VuZGVyIHdp bGwKLSAqIHNldCBvdXIgcHJvY2VzcyBsYXRjaCBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4g d3JpdHRlbiwgYW5kIHdlJ2xsIHJlc3VtZQotICogcHJvY2Vzc2luZy4gIEVhY2ggY2FsbCB3 aWxsIHRoZXJlZm9yZSByZXR1cm4gYSBjb21wbGV0ZSBtZXNzYWdlCisgKiBXaGVuIG5vd2Fp dCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRo ZSByaW5nCisgKiBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIGhhdmUgbm90IHlldCByZWNlaXZl ZCBhIGZ1bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIKKyAqIHdpbGwgc2V0IG91ciBwcm9jZXNz IGludGVycnVwdCBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdlJ2xs CisgKiByZXN1bWUgcHJvY2Vzc2luZy4gIEVhY2ggY2FsbCB3aWxsIHRoZXJlZm9yZSByZXR1 cm4gYSBjb21wbGV0ZSBtZXNzYWdlCiAgKiAodW5sZXNzIHRoZSBzZW5kZXIgZGV0YWNoZXMg dGhlIHF1ZXVlKS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5p cHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcyBsYXRjaDsKLSAqIGluc3RlYWQsIHdo ZW5ldmVyIHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIG5lZWQgdG8gcmVhZCBmcm9tIGl0 LCB3ZQotICogcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluIHRoaXMgY2FzZSwgdGhl IGNhbGxlciBzaG91bGQgY2FsbCB0aGlzCi0gKiBmdW5jdGlvbiBhZ2FpbiBhZnRlciB0aGUg cHJvY2VzcyBsYXRjaCBoYXMgYmVlbiBzZXQuCisgKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdl IGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcworICogaW50ZXJy dXB0OyBpbnN0ZWFkLCB3aGVuZXZlciB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCB3ZSBuZWVk IHRvIHJlYWQgZnJvbQorICogaXQsIHdlIHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJ biB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24g YWdhaW4gYWZ0ZXIgdGhlIHByb2Nlc3MgaW50ZXJydXB0IGhhcyBiZWVuIHNldC4KICAqLwog c2htX21xX3Jlc3VsdAogc2htX21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXpl ICpuYnl0ZXNwLCB2b2lkICoqZGF0YXAsIGJvb2wgbm93YWl0KQpAQCAtNjE5LDggKzYyMSw4 IEBAIHNobV9tcV9yZWNlaXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwg dm9pZCAqKmRhdGFwLCBib29sIG5vd2FpdCkKIAkgKiBJZiB3ZSd2ZSBjb25zdW1lZCBhbiBh bW91bnQgb2YgZGF0YSBncmVhdGVyIHRoYW4gMS80dGggb2YgdGhlIHJpbmcKIAkgKiBzaXpl LCBtYXJrIGl0IGNvbnN1bWVkIGluIHNoYXJlZCBtZW1vcnkuICBXZSB0cnkgdG8gYXZvaWQg ZG9pbmcgdGhpcwogCSAqIHVubmVjZXNzYXJpbHkgd2hlbiBvbmx5IGEgc21hbGwgYW1vdW50 IG9mIGRhdGEgaGFzIGJlZW4gY29uc3VtZWQsCi0JICogYmVjYXVzZSBTZXRMYXRjaCgpIGlz IGZhaXJseSBleHBlbnNpdmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQgdG9vCi0JICog b2Z0ZW4uCisJICogYmVjYXVzZSBTZW5kSW50ZXJydXB0KCkgaXMgZmFpcmx5IGV4cGVuc2l2 ZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkbyBpdAorCSAqIHRvbyBvZnRlbi4KIAkgKi8KIAlp ZiAobXFoLT5tcWhfY29uc3VtZV9wZW5kaW5nID4gbXEtPm1xX3Jpbmdfc2l6ZSAvIDQpCiAJ ewpAQCAtODk1LDcgKzg5Nyw3IEBAIHNobV9tcV9kZXRhY2hfaW50ZXJuYWwoc2htX21xICpt cSkKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAodmljdGltICE9 IE5VTEwpCi0JCVNldExhdGNoKCZ2aWN0aW0tPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHZpY3Rp bSkpOwogfQogCiAvKgpAQCAtOTkzLDcgKzk5NSw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNo bV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQkg KiBUaGVyZWZvcmUsIHdlIGNhbiByZWFkIGl0IHdpdGhvdXQgYWNxdWlyaW5nIHRoZSBzcGlu bG9jay4KIAkJCSAqLwogCQkJQXNzZXJ0KG1xaC0+bXFoX2NvdW50ZXJwYXJ0eV9hdHRhY2hl ZCk7Ci0JCQlTZXRMYXRjaCgmbXEtPm1xX3JlY2VpdmVyLT5wcm9jTGF0Y2gpOworCQkJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1By b2MobXEtPm1xX3JlY2VpdmVyKSk7CiAKIAkJCS8qCiAJCQkgKiBXZSBoYXZlIGp1c3QgdXBk YXRlZCB0aGUgbXFoX3NlbmRfcGVuZGluZyBieXRlcyBpbiB0aGUgc2hhcmVkCkBAIC0xMDAx LDcgKzEwMDMsNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNp emUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICovCiAJCQltcWgtPm1xaF9zZW5k X3BlbmRpbmcgPSAwOwogCi0JCQkvKiBTa2lwIG1hbmlwdWxhdGlvbiBvZiBvdXIgbGF0Y2gg aWYgbm93YWl0ID0gdHJ1ZS4gKi8KKwkJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0 cnVlLiAqLwogCQkJaWYgKG5vd2FpdCkKIAkJCXsKIAkJCQkqYnl0ZXNfd3JpdHRlbiA9IHNl bnQ7CkBAIC0xMDA5LDE3ICsxMDExLDE3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9o YW5kbGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQl9CiAKIAkJ CS8qCi0JCQkgKiBXYWl0IGZvciBvdXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxy ZWFkeSBiZSBzZXQgZm9yIHNvbWUKKwkJCSAqIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQuICBJ dCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQogCQkJICogdW5yZWxhdGVkIHJlYXNv biwgYnV0IHRoYXQnbGwganVzdCByZXN1bHQgaW4gb25lIGV4dHJhIHRyaXAKLQkJCSAqIHRo cm91Z2ggdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRvIGF2b2lkIHJlc2V0dGluZyB0aGUg bGF0Y2gKLQkJCSAqIGF0IHRvcCBvZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFk eS1zZXQgbGF0Y2ggaXMgbXVjaAotCQkJICogY2hlYXBlciB0aGFuIHNldHRpbmcgb25lIHRo YXQgaGFzIGJlZW4gcmVzZXQuCisJCQkgKiB0aHJvdWdoIHRoZSBsb29wLiAgSXQncyB3b3J0 aCBpdCB0byBhdm9pZCBjbGVhcmluZyB0aGUKKwkJCSAqIGludGVycnVwdCBhdCB0b3Agb2Yg bG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0CisJCQkgKiBpbnRlcnJ1cHQg aXMgbXVjaCBjaGVhcGVyIHRoYW4gc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4K IAkJCSAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVF VUVfU0VORCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9TRU5EKTsKIAotCQkJLyogUmVzZXQg dGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkJLyogQW4g aW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8K IAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC0xMDU0LDcgKzEwNTYsNyBAQCBzaG1f bXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2 b2lkICpkYXRhLAogCiAJCQkvKgogCQkJICogRm9yIGVmZmljaWVuY3ksIHdlIGRvbid0IHVw ZGF0ZSB0aGUgYnl0ZXMgd3JpdHRlbiBpbiB0aGUgc2hhcmVkCi0JCQkgKiBtZW1vcnkgYW5k IGFsc28gZG9uJ3Qgc2V0IHRoZSByZWFkZXIncyBsYXRjaCBoZXJlLiAgUmVmZXIgdG8KKwkJ CSAqIG1lbW9yeSBhbmQgYWxzbyBkb24ndCBzZW5kIHRoZSByZWFkZXIgaW50ZXJydXB0IGhl cmUuICBSZWZlciB0bwogCQkJICogdGhlIGNvbW1lbnRzIGF0b3AgdGhlIHNobV9tcV9oYW5k bGUgc3RydWN0dXJlIGZvciBtb3JlCiAJCQkgKiBpbmZvcm1hdGlvbi4KIAkJCSAqLwpAQCAt MTE1MCwyMiArMTE1MiwyMiBAQCBzaG1fbXFfcmVjZWl2ZV9ieXRlcyhzaG1fbXFfaGFuZGxl ICptcWgsIFNpemUgYnl0ZXNfbmVlZGVkLCBib29sIG5vd2FpdCwKIAkJCW1xaC0+bXFoX2Nv bnN1bWVfcGVuZGluZyA9IDA7CiAJCX0KIAotCQkvKiBTa2lwIG1hbmlwdWxhdGlvbiBvZiBv dXIgbGF0Y2ggaWYgbm93YWl0ID0gdHJ1ZS4gKi8KKwkJLyogU2tpcCB3YWl0aW5nIGlmIG5v d2FpdCA9IHRydWUuICovCiAJCWlmIChub3dhaXQpCiAJCQlyZXR1cm4gU0hNX01RX1dPVUxE X0JMT0NLOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG91ciBsYXRjaCB0byBiZSBzZXQuICBJ dCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQorCQkgKiBXYWl0IGZvciB0aGUgaW50 ZXJydXB0IHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21lCiAJ CSAqIHVucmVsYXRlZCByZWFzb24sIGJ1dCB0aGF0J2xsIGp1c3QgcmVzdWx0IGluIG9uZSBl eHRyYSB0cmlwIHRocm91Z2gKLQkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRvIGF2 b2lkIHJlc2V0dGluZyB0aGUgbGF0Y2ggYXQgdG9wIG9mCi0JCSAqIGxvb3AsIGJlY2F1c2Ug c2V0dGluZyBhbiBhbHJlYWR5LXNldCBsYXRjaCBpcyBtdWNoIGNoZWFwZXIgdGhhbgotCQkg KiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJlc2V0LgorCQkgKiB0aGUgbG9vcC4gIEl0 J3Mgd29ydGggaXQgdG8gYXZvaWQgY2xlYXJpbmcgdGhlIGludGVycnVwdCBhdCB0b3Agb2YK KwkJICogbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGludGVycnVwdCBp cyBtdWNoIGNoZWFwZXIgdGhhbgorCQkgKiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIGNs ZWFyZWQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdF X1FVRVVFX1JFQ0VJVkUpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1JFQ0VJVkUpOwogCi0JCS8q IFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICov CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyog QW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4g Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTEyNTAsMTEgKzEyNTIsMTEgQEAg c2htX21xX3dhaXRfaW50ZXJuYWwoc2htX21xICptcSwgUEdQUk9DICoqcHRyLCBCYWNrZ3Jv dW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCX0KIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25h bGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVF X0lOVEVSTkFMKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5BTCk7CiAKLQkJLyogUmVz ZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBBbiBp bnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpAQCAtMTI5Myw3ICsxMjk1LDcgQEAgc2htX21x X2luY19ieXRlc19yZWFkKHNobV9tcSAqbXEsIFNpemUgbikKIAkgKi8KIAlzZW5kZXIgPSBt cS0+bXFfc2VuZGVyOwogCUFzc2VydChzZW5kZXIgIT0gTlVMTCk7Ci0JU2V0TGF0Y2goJnNl bmRlci0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhzZW5kZXIpKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCmluZGV4IGFhNzI5YTM2ZTM5Li5hMzU0YTdk MDY1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCkBAIC0yMCw2 ICsyMCw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAt MjA0LDEyICsyMDUsMTIgQEAgcGdfd2FpdF91bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBp bnQ2NCB0aW1lb3V0KQogCQkvKiBQcm9jZXNzIGludGVycnVwdHMsIGlmIGFueSwgYmVmb3Jl IHdhaXRpbmcgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgd2FpdHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVO VF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSB3YWl0dGltZSwKKwkJCQkJ CQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsKIAotCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwog CiAJCXJlbWFpbmluZ3RpbWUgLT0gd2FpdHRpbWU7CiAJfSB3aGlsZSAocmVtYWluaW5ndGlt ZSA+IDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYwppbmRleCBkOWIxNmY4NGQxOS4u YjE1N2IxYTk5NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZh bC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jCkBAIC0xNiw3ICsx Niw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKIApAQCAtMzEsOSArMzEsOSBAQCB1aW50NjQJCVNoYXJlZEludmFs aWRNZXNzYWdlQ291bnRlcjsKICAqIHRocm91Z2ggYSBjYWNoZSByZXNldCBleGVyY2lzZS4g IFRoaXMgaXMgZG9uZSBieSBzZW5kaW5nCiAgKiBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBU IHRvIGFueSBiYWNrZW5kIHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KICAqCi0gKiBUaGUg c2lnbmFsIGhhbmRsZXIgd2lsbCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQg d2lsbCBzZXQgdGhlCi0gKiBwcm9jZXNzZXMgbGF0Y2guIFdoZW5ldmVyIHN0YXJ0aW5nIHRv IHJlYWQgZnJvbSB0aGUgY2xpZW50LCBvciB3aGVuCi0gKiBpbnRlcnJ1cHRlZCB3aGlsZSBk b2luZyBzbywgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsIGNhbGwKKyAqIFRo ZSBzaWduYWwgaGFuZGxlciB3aWxsIHNldCBhbiBpbnRlcnJ1cHQgcGVuZGluZyBmbGFnIGFu ZCByYWlzZSB0aGUKKyAqIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUC4gV2hlbmV2ZXIgc3Rh cnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGllbnQsIG9yCisgKiB3aGVuIGludGVycnVwdGVk IHdoaWxlIGRvaW5nIHNvLCBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2Fs bAogICogUHJvY2Vzc0NhdGNodXBFdmVudCgpLgogICovCiB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKQEAgLTE0OCw3ICsxNDgsNyBA QCBSZWNlaXZlU2hhcmVkSW52YWxpZE1lc3NhZ2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAo U2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqbQogICoKICAqIFdlIHVzZWQgdG8gZGlyZWN0 bHkgY2FsbCBQcm9jZXNzQ2F0Y2h1cEV2ZW50IGRpcmVjdGx5IHdoZW4gaWRsZS4gVGhlc2Ug ZGF5cwogICogd2UganVzdCBzZXQgYSBmbGFnIHRvIGRvIGl0IGxhdGVyIGFuZCBub3RpZnkg dGhlIHByb2Nlc3Mgb2YgdGhhdCBmYWN0IGJ5Ci0gKiBzZXR0aW5nIHRoZSBwcm9jZXNzJ3Mg bGF0Y2guCisgKiByYWlzaW5nIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUC4KICAqLwogdm9p ZAogSGFuZGxlQ2F0Y2h1cEludGVycnVwdCh2b2lkKQpAQCAtMTYxLDcgKzE2MSw3IEBAIEhh bmRsZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKIAljYXRjaHVwSW50ZXJydXB0UGVuZGluZyA9 IHRydWU7CiAKIAkvKiBtYWtlIHN1cmUgdGhlIGV2ZW50IGlzIHByb2Nlc3NlZCBpbiBkdWUg Y291cnNlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYwppbmRleCAyNTI2N2YwZjg1ZC4uZThlNGQ3MzE0MjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKQEAgLTU5NCw3ICs1OTUsNyBAQCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCkKICAqIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aExvY2sgaXMgY2FsbGVkIGZyb20gUHJvY1NsZWVwKCkKICAqIHRvIHJlc29s dmUgY29uZmxpY3RzIHdpdGggb3RoZXIgYmFja2VuZHMgaG9sZGluZyByZWxhdGlvbiBsb2Nr cy4KICAqCi0gKiBUaGUgV2FpdExhdGNoIHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJvY1Ns ZWVwKCkKKyAqIFRoZSBXYWl0SW50ZXJydXB0IHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJv Y1NsZWVwKCkKICAqICh3aGVuIG5vdCBJbkhvdFN0YW5kYnkpIGlzIHBlcmZvcm1lZCBoZXJl LCBmb3IgY29kZSBjbGFyaXR5LgogICoKICAqIFdlIGVpdGhlciByZXNvbHZlIGNvbmZsaWN0 cyBpbW1lZGlhdGVseSBvciBzZXQgYSB0aW1lb3V0IHRvIHdha2UgdXMgYXQKQEAgLTY5Niw3 ICs2OTcsMTAgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxv Y2t0YWcsIGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAl9CiAKIAkvKiBXYWl0IHRvIGJlIHNp Z25hbGVkIGJ5IHRoZSByZWxlYXNlIG9mIHRoZSBSZWxhdGlvbiBMb2NrICovCi0JUHJvY1dh aXRGb3JTaWduYWwoUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCVdh aXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQ VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJICBQR19XQUlUX0xPQ0sgfCBsb2Nr dGFnLmxvY2t0YWdfdHlwZSk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJLyoKIAkgKiBFeGl0IGlm IGx0aW1lIGlzIHJlYWNoZWQuIFRoZW4gYWxsIHRoZSBiYWNrZW5kcyBob2xkaW5nIGNvbmZs aWN0aW5nCkBAIC03NDUsNyArNzQ5LDEwIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aExvY2soTE9DS1RBRyBsb2NrdGFnLCBib29sIGxvZ2dpbmdfY29uZmxpY3QpCiAJCSAqIHVu dGlsIHRoZSByZWxhdGlvbiBsb2NrcyBhcmUgcmVsZWFzZWQgb3IgbHRpbWUgaXMgcmVhY2hl ZC4KIAkJICovCiAJCWdvdF9zdGFuZGJ5X2RlYWRsb2NrX3RpbWVvdXQgPSBmYWxzZTsKLQkJ UHJvY1dhaXRGb3JTaWduYWwoUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUp OworCQlXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9J TlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkgIFBHX1dBSVRfTE9D SyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CiAKIGNs ZWFudXA6CkBAIC04MzcsOSArODQ0LDE0IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3VtZSB0aGF0IG9ubHkgVW5waW5CdWZmZXIo KSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0YWJsaXNoZWQKIAkgKiBhYm92ZSBjYW4g d2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVyeSgpIGNhbGxlZCBieSB3YWxyZWNlaXZl ciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxlciwgZXRjIGNhbm5vdCBkbyB0aGF0IGJl Y2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0JICogbGF0Y2ggZnJvbSB0aGF0IFByb2NX YWl0Rm9yU2lnbmFsKCkgd2FpdHMgb24uCisJICogaW50ZXJydXB0IGZsYWcuIEZJWE1FOiBz ZWVtcyBsaWtlIGEgc2hha3kgYXNzdW1wdGlvbi4gV2FrZXVwUmVjb3ZlcnkoKQorCSAqIGlu ZGVlZCB1c2VzIGEgZGlmZmVyZW50IGludGVycnVwdCBmbGFnIChkaWZmZXJlbnQgbGF0Y2gg ZWFybGllciksIGJ1dAorCSAqIHRoZSBzaWduYWwgaGFuZGxlcj8/CiAJICovCi0JUHJvY1dh aXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwlXYWl0SW50ZXJydXB0KDEg PDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAorCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOworCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAlpZiAoZ290X3N0YW5kYnlfZGVsYXlfdGltZW91dCkKIAkJU2VuZFJlY292 ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVG RkVSUElOKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwpzaW1pbGFyaXR5IGlu ZGV4IDc3JQpyZW5hbWUgZnJvbSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCnJl bmFtZSB0byBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwppbmRleCA2 MDhlYjY2YWJlZC4uMWJiYmEwNGUzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2xhdGNoLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50 c2V0LmMKQEAgLTEsMTcgKzEsMzIgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKLSAq IGxhdGNoLmMKLSAqCSAgUm91dGluZXMgZm9yIGludGVyLXByb2Nlc3MgbGF0Y2hlcworICog d2FpdGV2ZW50c2V0LmMKKyAqCSAgcHBvbGwoKS9wc2VsZWN0KCkgbGlrZSBhYnN0cmFjdGlv bgogICoKLSAqIFRoZSBwb2xsKCkgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc28tY2FsbGVk IHNlbGYtcGlwZSB0cmljayB0byBvdmVyY29tZSB0aGUKLSAqIHJhY2UgY29uZGl0aW9uIGlu dm9sdmVkIHdpdGggcG9sbCgpIGFuZCBzZXR0aW5nIGEgZ2xvYmFsIGZsYWcgaW4gdGhlIHNp Z25hbAotICogaGFuZGxlci4gV2hlbiBhIGxhdGNoIGlzIHNldCBhbmQgdGhlIGN1cnJlbnQg cHJvY2VzcyBpcyB3YWl0aW5nIGZvciBpdCwgdGhlCi0gKiBzaWduYWwgaGFuZGxlciB3YWtl cyB1cCB0aGUgcG9sbCgpIGluIFdhaXRMYXRjaCBieSB3cml0aW5nIGEgYnl0ZSB0byBhIHBp cGUuCi0gKiBBIHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgpIG9u IGFsbCBwbGF0Zm9ybXMsIGFuZCBldmVuIG9uCi0gKiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9l cywgYSBzaWduYWwgdGhhdCBhcnJpdmVzIGp1c3QgYmVmb3JlIHRoZSBwb2xsKCkgY2FsbAot ICogZG9lcyBub3QgcHJldmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4gaW5j b21pbmcgYnl0ZSBvbiBhIHBpcGUKLSAqIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cyB0 aGUgc2xlZXAsIGFuZCBjYXVzZXMgcG9sbCgpIHRvIHJldHVybgotICogaW1tZWRpYXRlbHkg ZXZlbiBpZiB0aGUgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKSBiZWdpbnMuCisgKiBX YWl0RXZlbnRzIGFyZSBhbiBhYnN0cmFjdGlvbiBmb3Igd2FpdGluZyBmb3Igb25lIG9yIG1v cmUgZXZlbnRzIGF0IGEgdGltZS4KKyAqIFRoZSB3YWl0aW5nIGNhbiBiZSBkb25lIGluIGEg cmFjZSBmcmVlIGZhc2hpb24sIHNpbWlsYXIgcHBvbGwoKSBvcgorICogcHNlbGVjdCgpIChh cyBvcHBvc2VkIHRvIHBsYWluIHBvbGwoKS9zZWxlY3QoKSkuCisgKgorICogWW91IGNhbiB3 YWl0IGZvcjoKKyAqIC0gYW4gaW50ZXJydXB0IGZyb20gYW5vdGhlciBwcm9jZXNzIG9yIGZy b20gc2lnbmFsIGhhbmRsZXIgaW4gdGhlIHNhbWUKKyAqICAgcHJvY2VzcyAoV0xfSU5URVJS VVBUKQorICogLSBkYXRhIHRvIGJlY29tZSByZWFkYWJsZSBvciB3cml0ZWFibGUgb24gYSBz b2NrZXQgKFdMX1NPQ0tFVF8qKQorICogLSBwb3N0bWFzdGVyIGRlYXRoIChXTF9QT1NUTUFT VEVSX0RFQVRIIG9yIFdMX0VYSVRfT05fUE1fREVBVEgpCisgKiAtIHRpbWVvdXQgKFdMX1RJ TUVPVVQpCisgKgorICogSW1wbGVtZW50YXRpb24KKyAqIC0tLS0tLS0tLS0tLS0tCisgKgor ICogVGhlIHBvbGwoKSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQgc2VsZi1w aXBlIHRyaWNrIHRvIG92ZXJjb21lCisgKiB0aGUgcmFjZSBjb25kaXRpb24gaW52b2x2ZWQg d2l0aCBwb2xsKCkgYW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUKKyAqIHNpZ25h bCBoYW5kbGVyLiBXaGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBhbmQgdGhlIGN1cnJl bnQgcHJvY2VzcyBpcworICogd2FpdGluZyBmb3IgaXQsIHRoZSBzaWduYWwgaGFuZGxlciB3 YWtlcyB1cCB0aGUgcG9sbCgpIGluIFdhaXRJbnRlcnJ1cHQgYnkKKyAqIHdyaXRpbmcgYSBi eXRlIHRvIGEgcGlwZS4gIEEgc2lnbmFsIGJ5IGl0c2VsZiBkb2Vzbid0IGludGVycnVwdCBw b2xsKCkgb24KKyAqIGFsbCBwbGF0Zm9ybXMsIGFuZCBldmVuIG9uIHBsYXRmb3JtcyB3aGVy ZSBpdCBkb2VzLCBhIHNpZ25hbCB0aGF0IGFycml2ZXMKKyAqIGp1c3QgYmVmb3JlIHRoZSBw b2xsKCkgY2FsbCBkb2VzIG5vdCBwcmV2ZW50IHBvbGwoKSBmcm9tIGVudGVyaW5nIHNsZWVw LiBBbgorICogaW5jb21pbmcgYnl0ZSBvbiBhIHBpcGUgaG93ZXZlciByZWxpYWJseSBpbnRl cnJ1cHRzIHRoZSBzbGVlcCwgYW5kIGNhdXNlcworICogcG9sbCgpIHRvIHJldHVybiBpbW1l ZGlhdGVseSBldmVuIGlmIHRoZSBzaWduYWwgYXJyaXZlcyBiZWZvcmUgcG9sbCgpCisgKiBi ZWdpbnMuCiAgKgogICogVGhlIGVwb2xsKCkgaW1wbGVtZW50YXRpb24gb3ZlcmNvbWVzIHRo ZSByYWNlIHdpdGggYSBkaWZmZXJlbnQgdGVjaG5pcXVlOiBpdAogICoga2VlcHMgU0lHVVJH IGJsb2NrZWQgYW5kIGNvbnN1bWVzIGZyb20gYSBzaWduYWxmZCgpIGRlc2NyaXB0b3IgaW5z dGVhZC4gIFdlCkBAIC0yNyw3ICs0Miw3IEBACiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKICAq IElERU5USUZJQ0FUSU9OCi0gKgkgIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMK KyAqCSAgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKICAqCiAgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwpAQCAtNTcsOSArNzIsMTEgQEAKICNpbmNsdWRlICJw b3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFz dGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdl L2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog CkBAIC05OCw3ICsxMTUsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotLyogdHlwZWRlZiBpbiBs YXRjaC5oICovCisvKiB0eXBlZGVmIGluIHdhaXRldmVudHNldC5oICovCiBzdHJ1Y3QgV2Fp dEV2ZW50U2V0CiB7CiAJUmVzb3VyY2VPd25lciBvd25lcjsKQEAgLTExMywxMyArMTMwLDEz IEBAIHN0cnVjdCBXYWl0RXZlbnRTZXQKIAlXYWl0RXZlbnQgICpldmVudHM7CiAKIAkvKgot CSAqIElmIFdMX0xBVENIX1NFVCBpcyBzcGVjaWZpZWQgaW4gYW55IHdhaXQgZXZlbnQsIGxh dGNoIGlzIGEgcG9pbnRlciB0bwotCSAqIHNhaWQgbGF0Y2gsIGFuZCBsYXRjaF9wb3MgdGhl IG9mZnNldCBpbiB0aGUgLT5ldmVudHMgYXJyYXkuIFRoaXMgaXMKLQkgKiB1c2VmdWwgYmVj YXVzZSB3ZSBjaGVjayB0aGUgc3RhdGUgb2YgdGhlIGxhdGNoIGJlZm9yZSBwZXJmb3JtaW5n IGRvaW5nCi0JICogc3lzY2FsbHMgcmVsYXRlZCB0byB3YWl0aW5nLgorCSAqIElmIFdMX0lO VEVSUlVQVCBpcyBzcGVjaWZpZWQgaW4gYW55IHdhaXQgZXZlbnQsIGludGVycnVwdE1hc2sg aXMgdGhlCisJICogaW50ZXJydXB0cyB0byB3YWl0IGZvciwgYW5kIGludGVycnVwdF9wb3Mg dGhlIG9mZnNldCBpbiB0aGUgLT5ldmVudHMKKwkgKiBhcnJheS4gVGhpcyBpcyB1c2VmdWwg YmVjYXVzZSB3ZSBjaGVjayB0aGUgc3RhdGUgb2YgcGVuZGluZyBpbnRlcnJ1cHRzCisJICog YmVmb3JlIHBlcmZvcm1pbmcgZG9pbmcgc3lzY2FsbHMgcmVsYXRlZCB0byB3YWl0aW5nLgog CSAqLwotCUxhdGNoCSAgICpsYXRjaDsKLQlpbnQJCQlsYXRjaF9wb3M7CisJdWludDMyCQlp bnRlcnJ1cHRfbWFzazsKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zOwogCiAJLyoKIAkgKiBXTF9F WElUX09OX1BNX0RFQVRIIGlzIGNvbnZlcnRlZCB0byBXTF9QT1NUTUFTVEVSX0RFQVRILCBi dXQgdGhpcyBmbGFnCkBAIC0xNTEsMTQgKzE2OCwxNCBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0 CiAjZW5kaWYKIH07CiAKLS8qIEEgY29tbW9uIFdhaXRFdmVudFNldCB1c2VkIHRvIGltcGxl bWVudCBXYWl0TGF0Y2goKSAqLwotc3RhdGljIFdhaXRFdmVudFNldCAqTGF0Y2hXYWl0U2V0 OworLyogQSBjb21tb24gV2FpdEV2ZW50U2V0IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRJbnRl cnJ1cHQoKSAqLworc3RhdGljIFdhaXRFdmVudFNldCAqSW50ZXJydXB0V2FpdFNldDsKIAot LyogVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXRjaCBpbiBMYXRjaFdhaXRTZXQuICovCi0jZGVm aW5lIExhdGNoV2FpdFNldExhdGNoUG9zIDAKKy8qIFRoZSBwb3NpdGlvbiBvZiB0aGUgaW50 ZXJydXB0IGluIEludGVycnVwdFdhaXRTZXQuICovCisjZGVmaW5lIEludGVycnVwdFdhaXRT ZXRJbnRlcnJ1cHRQb3MgMAogCiAjaWZuZGVmIFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5 IGluIFdhaXRMYXRjaD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4g Ki8KKy8qIEFyZSB3ZSBjdXJyZW50bHkgaW4gV2FpdEludGVycnVwdD8gVGhlIHNpZ25hbCBo YW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRv bWljX3Qgd2FpdGluZyA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTE3NCw5ICsxOTEsMTYgQEAg c3RhdGljIGludAlzZWxmcGlwZV93cml0ZWZkID0gLTE7CiAKIC8qIFByb2Nlc3Mgb3duaW5n IHRoZSBzZWxmLXBpcGUgLS0tIG5lZWRlZCBmb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KIHN0 YXRpYyBpbnQJc2VsZnBpcGVfb3duZXJfcGlkID0gMDsKKyNlbmRpZgorCisjaWZkZWYgV0FJ VF9VU0VfV0lOMzIKK3N0YXRpYyBIQU5ETEUgTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudDsK KyNlbmRpZgogCiAvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KLXN0YXRpYyB2 b2lkIGxhdGNoX3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKTsKKworI2lmZGVmIFdBSVRf VVNFX1NFTEZfUElQRQorc3RhdGljIHZvaWQgaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKFNJ R05BTF9BUkdTKTsKIHN0YXRpYyB2b2lkIHNlbmRTZWxmUGlwZUJ5dGUodm9pZCk7CiAjZW5k aWYKIApAQCAtMjIzLDEzICsyNDcsMTMgQEAgUmVzb3VyY2VPd25lckZvcmdldFdhaXRFdmVu dFNldChSZXNvdXJjZU93bmVyIG93bmVyLCBXYWl0RXZlbnRTZXQgKnNldCkKIAogCiAvKgot ICogSW5pdGlhbGl6ZSB0aGUgcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbmZyYXN0cnVjdHVyZS4K KyAqIEluaXRpYWxpemUgdGhlIHByb2Nlc3MtbG9jYWwgd2FpdCBldmVudCBpbmZyYXN0cnVj dHVyZS4KICAqCiAgKiBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgZHVyaW5nIHN0YXJ0dXAg b2YgYW55IHByb2Nlc3MgdGhhdCBjYW4gd2FpdCBvbgotICogbGF0Y2hlcywgYmVmb3JlIGl0 IGlzc3VlcyBhbnkgSW5pdExhdGNoKCkgb3IgT3duTGF0Y2goKSBjYWxscy4KKyAqIGludGVy cnVwdHMuCiAgKi8KIHZvaWQKLUluaXRpYWxpemVMYXRjaFN1cHBvcnQodm9pZCkKK0luaXRp YWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpCiB7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9T RUxGX1BJUEUpCiAJaW50CQkJcGlwZWZkWzJdOwpAQCAtMjc2LDEyICszMDAsMTIgQEAgSW5p dGlhbGl6ZUxhdGNoU3VwcG9ydCh2b2lkKQogCiAJLyoKIAkgKiBTZXQgdXAgdGhlIHNlbGYt cGlwZSB0aGF0IGFsbG93cyBhIHNpZ25hbCBoYW5kbGVyIHRvIHdha2UgdXAgdGhlCi0JICog cG9sbCgpL2Vwb2xsX3dhaXQoKSBpbiBXYWl0TGF0Y2guIE1ha2UgdGhlIHdyaXRlLWVuZCBu b24tYmxvY2tpbmcsIHNvCi0JICogdGhhdCBTZXRMYXRjaCB3b24ndCBibG9jayBpZiB0aGUg ZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBzZXQgbWFueSB0aW1lcwotCSAqIGZpbGxpbmcgdGhl IGtlcm5lbCBidWZmZXIuIE1ha2UgdGhlIHJlYWQtZW5kIG5vbi1ibG9ja2luZyB0b28sIHNv IHRoYXQKLQkgKiB3ZSBjYW4gZWFzaWx5IGNsZWFyIHRoZSBwaXBlIGJ5IHJlYWRpbmcgdW50 aWwgRUFHQUlOIG9yIEVXT1VMREJMT0NLLgotCSAqIEFsc28sIG1ha2UgYm90aCBGRHMgY2xv c2Utb24tZXhlYywgc2luY2Ugd2Ugc3VyZWx5IGRvIG5vdCB3YW50IGFueQotCSAqIGNoaWxk IHByb2Nlc3NlcyBtZXNzaW5nIHdpdGggdGhlbS4KKwkgKiBwb2xsKCkvZXBvbGxfd2FpdCgp IGluIFdhaXRJbnRlcnJ1cHQuIE1ha2UgdGhlIHdyaXRlLWVuZCBub24tYmxvY2tpbmcsCisJ ICogc28gdGhhdCBTZW5kSW50ZXJydXB0IHdvbid0IGJsb2NrIGlmIHRoZSBldmVudCBoYXMg YWxyZWFkeSBiZWVuIHNldAorCSAqIG1hbnkgdGltZXMgZmlsbGluZyB0aGUga2VybmVsIGJ1 ZmZlci4gTWFrZSB0aGUgcmVhZC1lbmQgbm9uLWJsb2NraW5nCisJICogdG9vLCBzbyB0aGF0 IHdlIGNhbiBlYXNpbHkgY2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRpbCBFQUdBSU4g b3IKKwkgKiBFV09VTERCTE9DSy4gQWxzbywgbWFrZSBib3RoIEZEcyBjbG9zZS1vbi1leGVj LCBzaW5jZSB3ZSBzdXJlbHkgZG8gbm90CisJICogd2FudCBhbnkgY2hpbGQgcHJvY2Vzc2Vz IG1lc3Npbmcgd2l0aCB0aGVtLgogCSAqLwogCWlmIChwaXBlKHBpcGVmZCkgPCAwKQogCQll bG9nKEZBVEFMLCAicGlwZSgpIGZhaWxlZDogJW0iKTsKQEAgLTMwMiw3ICszMjYsNyBAQCBJ bml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpCiAJUmVzZXJ2ZUV4dGVybmFsRkQoKTsKIAlS ZXNlcnZlRXh0ZXJuYWxGRCgpOwogCi0JcHFzaWduYWwoU0lHVVJHLCBsYXRjaF9zaWd1cmdf aGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVJHLCBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIp OwogI2VuZGlmCiAKICNpZmRlZiBXQUlUX1VTRV9TSUdOQUxGRApAQCAtMzQwLDM3ICszNjQs NDMgQEAgSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCh2b2lkKQogCS8qIElnbm9yZSBTSUdVUkcs IGJlY2F1c2Ugd2UnbGwgcmVjZWl2ZSBpdCB2aWEga3F1ZXVlLiAqLwogCXBxc2lnbmFsKFNJ R1VSRywgU0lHX0lHTik7CiAjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCisJTG9j YWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNF LCBOVUxMKTsKKwlpZiAoTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQll bG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExh c3RFcnJvcigpKTsKKyNlbmRpZgogfQogCiB2b2lkCi1Jbml0aWFsaXplTGF0Y2hXYWl0U2V0 KHZvaWQpCitJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKQogewotCWludAkJCWxh dGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJaW50CQkJaW50ZXJydXB0X3Bv cyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKLQlBc3NlcnQoTGF0Y2hXYWl0U2V0ID09 IE5VTEwpOworCUFzc2VydChJbnRlcnJ1cHRXYWl0U2V0ID09IE5VTEwpOwogCi0JLyogU2V0 IHVwIHRoZSBXYWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0TGF0Y2goKS4gKi8KLQlMYXRjaFdh aXRTZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JbGF0Y2hfcG9zID0gQWRk V2FpdEV2ZW50VG9TZXQoTGF0Y2hXYWl0U2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9T T0NLRVQsCi0JCQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7CisJLyogU2V0IHVwIHRoZSBXYWl0 RXZlbnRTZXQgdXNlZCBieSBXYWl0SW50ZXJydXB0KCkuICovCisJSW50ZXJydXB0V2FpdFNl dCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKKwlpbnRlcnJ1cHRfcG9zID0gQWRk V2FpdEV2ZW50VG9TZXQoSW50ZXJydXB0V2FpdFNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFM SURfU09DS0VULAorCQkJCQkJCQkJICAwLCBOVUxMKTsKIAlpZiAoSXNVbmRlclBvc3RtYXN0 ZXIpCi0JCUFkZFdhaXRFdmVudFRvU2V0KExhdGNoV2FpdFNldCwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCSAgUEdJTlZBTElEX1NPQ0tFVCwgTlVMTCwgTlVMTCk7CisJCUFkZFdh aXRFdmVudFRvU2V0KEludGVycnVwdFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkgIFBHSU5WQUxJRF9TT0NLRVQsIDAsIE5VTEwpOwogCi0JQXNzZXJ0KGxhdGNoX3Bv cyA9PSBMYXRjaFdhaXRTZXRMYXRjaFBvcyk7CisJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0g SW50ZXJydXB0V2FpdFNldEludGVycnVwdFBvcyk7CiB9CiAKIHZvaWQKLVNodXRkb3duTGF0 Y2hTdXBwb3J0KHZvaWQpCitTaHV0ZG93bldhaXRFdmVudFN1cHBvcnQodm9pZCkKIHsKICNp ZiBkZWZpbmVkKFdBSVRfVVNFX1BPTEwpCiAJcHFzaWduYWwoU0lHVVJHLCBTSUdfSUdOKTsK ICNlbmRpZgogCi0JaWYgKExhdGNoV2FpdFNldCkKKwlpZiAoSW50ZXJydXB0V2FpdFNldCkK IAl7Ci0JCUZyZWVXYWl0RXZlbnRTZXQoTGF0Y2hXYWl0U2V0KTsKLQkJTGF0Y2hXYWl0U2V0 ID0gTlVMTDsKKwkJRnJlZVdhaXRFdmVudFNldChJbnRlcnJ1cHRXYWl0U2V0KTsKKwkJSW50 ZXJydXB0V2FpdFNldCA9IE5VTEw7CiAJfQogCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxG X1BJUEUpCkBAIC0zODgsMTM0ICs0MTgsMjQgQEAgU2h1dGRvd25MYXRjaFN1cHBvcnQodm9p ZCkKIH0KIAogLyoKLSAqIEluaXRpYWxpemUgYSBwcm9jZXNzLWxvY2FsIGxhdGNoLgotICov Ci12b2lkCi1Jbml0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWxhdGNoLT5pc19zZXQgPSBm YWxzZTsKLQlsYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJf cGlkID0gTXlQcm9jUGlkOwotCWxhdGNoLT5pc19zaGFyZWQgPSBmYWxzZTsKLQotI2lmIGRl ZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQotCS8qIEFzc2VydCBJbml0aWFsaXplTGF0Y2hT dXBwb3J0IGhhcyBiZWVuIGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MgKi8KLQlBc3NlcnQoc2Vs ZnBpcGVfcmVhZGZkID49IDAgJiYgc2VsZnBpcGVfb3duZXJfcGlkID09IE15UHJvY1BpZCk7 Ci0jZWxpZiBkZWZpbmVkKFdBSVRfVVNFX1NJR05BTEZEKQotCS8qIEFzc2VydCBJbml0aWFs aXplTGF0Y2hTdXBwb3J0IGhhcyBiZWVuIGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MgKi8KLQlB c3NlcnQoc2lnbmFsX2ZkID49IDApOwotI2VsaWYgZGVmaW5lZChXQUlUX1VTRV9XSU4zMikK LQlsYXRjaC0+ZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7 Ci0JaWYgKGxhdGNoLT5ldmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZl bnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKLSNlbmRpZgkJ CQkJCQkvKiBXSU4zMiAqLwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHNoYXJlZCBsYXRj aCB0aGF0IGNhbiBiZSBzZXQgZnJvbSBvdGhlciBwcm9jZXNzZXMuIFRoZSBsYXRjaAotICog aXMgaW5pdGlhbGx5IG93bmVkIGJ5IG5vLW9uZTsgdXNlIE93bkxhdGNoIHRvIGFzc29jaWF0 ZSBpdCB3aXRoIHRoZQotICogY3VycmVudCBwcm9jZXNzLgotICoKLSAqIEluaXRTaGFyZWRM YXRjaCBuZWVkcyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUgZm9ya2luZyBj aGlsZAotICogcHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcgdGhl IHNoYXJlZCBtZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoIHdpdGggU2ht ZW1Jbml0U3RydWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRvZXNuJ3QgYWN0 dWFsbHkgcmVxdWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMuKSBCZWNhdXNl IG9mCi0gKiB0aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJlbmN5IGlzc3Vl cyB0byB3b3JyeSBhYm91dCBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCBvdGhlciBoYW5kbGVz IGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwotICogaW5oZXJp dGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFuaW5nIHVw IGNoaWxkCi0gKiBwcm9jZXNzIHJlZmVyZW5jZXMgdG8gcG9zdG1hc3Rlci1wcml2YXRlIGxh dGNoZXMgb3IgV2FpdEV2ZW50U2V0cy4KLSAqLwotdm9pZAotSW5pdFNoYXJlZExhdGNoKExh dGNoICpsYXRjaCkKLXsKLSNpZmRlZiBXSU4zMgotCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7 Ci0KLQkvKgotCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhh dCB0aGUgZXZlbnRzIGFyZSBpbmhlcml0ZWQuCi0JICovCi0JWmVyb01lbW9yeSgmc2EsIHNp emVvZihzYSkpOwotCXNhLm5MZW5ndGggPSBzaXplb2Yoc2EpOwotCXNhLmJJbmhlcml0SGFu ZGxlID0gVFJVRTsKLQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50KCZzYSwgVFJVRSwg RkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJP UiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3Io KSk7Ci0jZW5kaWYKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVf c2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLQlsYXRjaC0+aXNf c2hhcmVkID0gdHJ1ZTsKLX0KLQotLyoKLSAqIEFzc29jaWF0ZSBhIHNoYXJlZCBsYXRjaCB3 aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MsIGFsbG93aW5nIGl0IHRvCi0gKiB3YWl0IG9uIHRo ZSBsYXRjaC4KLSAqCi0gKiBBbHRob3VnaCB0aGVyZSBpcyBhIHNhbml0eSBjaGVjayBmb3Ig bGF0Y2gtYWxyZWFkeS1vd25lZCwgd2UgZG9uJ3QgZG8KLSAqIGFueSBzb3J0IG9mIGxvY2tp bmcgaGVyZSwgbWVhbmluZyB0aGF0IHdlIGNvdWxkIGZhaWwgdG8gZGV0ZWN0IHRoZSBlcnJv cgotICogaWYgdHdvIHByb2Nlc3NlcyB0cnkgdG8gb3duIHRoZSBzYW1lIGxhdGNoIGF0IGFi b3V0IHRoZSBzYW1lIHRpbWUuICBJZgotICogdGhlcmUgaXMgYW55IHJpc2sgb2YgdGhhdCwg Y2FsbGVyIG11c3QgcHJvdmlkZSBhbiBpbnRlcmxvY2sgdG8gcHJldmVudCBpdC4KLSAqLwot dm9pZAotT3duTGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWludAkJCW93bmVyX3BpZDsKLQot CS8qIFNhbml0eSBjaGVja3MgKi8KLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0KLSNp ZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKLQkvKiBBc3NlcnQgSW5pdGlhbGl6ZUxh dGNoU3VwcG9ydCBoYXMgYmVlbiBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICovCi0JQXNzZXJ0 KHNlbGZwaXBlX3JlYWRmZCA+PSAwICYmIHNlbGZwaXBlX293bmVyX3BpZCA9PSBNeVByb2NQ aWQpOwotI2VsaWYgZGVmaW5lZChXQUlUX1VTRV9TSUdOQUxGRCkKLQkvKiBBc3NlcnQgSW5p dGlhbGl6ZUxhdGNoU3VwcG9ydCBoYXMgYmVlbiBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICov Ci0JQXNzZXJ0KHNpZ25hbF9mZCA+PSAwKTsKLSNlbmRpZgotCi0Jb3duZXJfcGlkID0gbGF0 Y2gtPm93bmVyX3BpZDsKLQlpZiAob3duZXJfcGlkICE9IDApCi0JCWVsb2coUEFOSUMsICJs YXRjaCBhbHJlYWR5IG93bmVkIGJ5IFBJRCAlZCIsIG93bmVyX3BpZCk7Ci0KLQlsYXRjaC0+ b3duZXJfcGlkID0gTXlQcm9jUGlkOwotfQotCi0vKgotICogRGlzb3duIGEgc2hhcmVkIGxh dGNoIGN1cnJlbnRseSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLgotICovCi12b2lk Ci1EaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JQXNzZXJ0KGxhdGNoLT5pc19zaGFy ZWQpOwotCUFzc2VydChsYXRjaC0+b3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0KLQlsYXRj aC0+b3duZXJfcGlkID0gMDsKLX0KLQotLyoKLSAqIFdhaXQgZm9yIGEgZ2l2ZW4gbGF0Y2gg dG8gYmUgc2V0LCBvciBmb3IgcG9zdG1hc3RlciBkZWF0aCwgb3IgdW50aWwgdGltZW91dAot ICogaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJpdG1hc2sgdGhhdCBzcGVjaWZp ZXMgd2hpY2ggb2YgdGhvc2UgZXZlbnRzCi0gKiB0byB3YWl0IGZvci4gSWYgdGhlIGxhdGNo IGlzIGFscmVhZHkgc2V0IChhbmQgV0xfTEFUQ0hfU0VUIGlzIGdpdmVuKSwgdGhlCi0gKiBm dW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LgorICogV2FpdCBmb3IgYW55IG9mIHRoZSBp bnRlcnJ1cHRzIGluIGludGVycnVwdE1hc2sgdG8gYmUgc2V0LCBvciBmb3IKKyAqIHBvc3Rt YXN0ZXIgZGVhdGgsIG9yIHVudGlsIHRpbWVvdXQgaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRz JyBpcyBhIGJpdG1hc2sKKyAqIHRoYXQgc3BlY2lmaWVzIHdoaWNoIG9mIHRob3NlIGV2ZW50 cyB0byB3YWl0IGZvci4gSWYgdGhlIGludGVycnVwdCBpcworICogYWxyZWFkeSBwZW5kaW5n IChhbmQgV0xfSU5URVJSVVBUIGlzIGdpdmVuKSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAq IGltbWVkaWF0ZWx5LgogICoKICAqIFRoZSAidGltZW91dCIgaXMgZ2l2ZW4gaW4gbWlsbGlz ZWNvbmRzLiBJdCBtdXN0IGJlID49IDAgaWYgV0xfVElNRU9VVCBmbGFnCiAgKiBpcyBnaXZl bi4gIEFsdGhvdWdoIGl0IGlzIGRlY2xhcmVkIGFzICJsb25nIiwgd2UgZG9uJ3QgYWN0dWFs bHkgc3VwcG9ydAogICogdGltZW91dHMgbG9uZ2VyIHRoYW4gSU5UX01BWCBtaWxsaXNlY29u ZHMuICBOb3RlIHRoYXQgc29tZSBleHRyYSBvdmVyaGVhZAogICogaXMgaW5jdXJyZWQgd2hl biBXTF9USU1FT1VUIGlzIGdpdmVuLCBzbyBhdm9pZCB1c2luZyBhIHRpbWVvdXQgaWYgcG9z c2libGUuCiAgKgotICogVGhlIGxhdGNoIG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQg cHJvY2VzcywgaWUuIGl0IG11c3QgYmUgYQotICogcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0 aWFsaXplZCB3aXRoIEluaXRMYXRjaCwgb3IgYSBzaGFyZWQgbGF0Y2gKLSAqIGFzc29jaWF0 ZWQgd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgog ICogUmV0dXJucyBiaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIGNvbmRpdGlvbihzKSBjYXVz ZWQgdGhlIHdha2UtdXAuIE5vdGUKICAqIHRoYXQgaWYgbXVsdGlwbGUgd2FrZS11cCBjb25k aXRpb25zIGFyZSB0cnVlLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICogd2UgcmV0 dXJuIGFsbCBvZiB0aGVtIGluIG9uZSBjYWxsLCBidXQgd2Ugd2lsbCByZXR1cm4gYXQgbGVh c3Qgb25lLgogICovCiBpbnQKLVdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZl bnRzLCBsb25nIHRpbWVvdXQsCi0JCSAgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK1dhaXRJ bnRlcnJ1cHQodWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRp bWVvdXQsCisJCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7CiAJV2FpdEV2ZW50CWV2 ZW50OwogCkBAIC01MjUsMTcgKzQ0NSwxNyBAQCBXYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBp bnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAogCQkgICAod2FrZUV2ZW50cyAmIFdMX1BP U1RNQVNURVJfREVBVEgpKTsKIAogCS8qCi0JICogU29tZSBjYWxsZXJzIG1heSBoYXZlIGEg bGF0Y2ggb3RoZXIgdGhhbiBNeUxhdGNoLCBvciBubyBsYXRjaCBhdCBhbGwsCi0JICogb3Ig d2FudCB0byBoYW5kbGUgcG9zdG1hc3RlciBkZWF0aCBkaWZmZXJlbnRseS4gIEl0J3MgY2hl YXAgdG8gYXNzaWduCi0JICogdGhvc2UsIHNvIGp1c3QgZG8gaXQgZXZlcnkgdGltZS4KKwkg KiBTb21lIGNhbGxlcnMgbWF5IGhhdmUgYW4gaW50ZXJydXB0IG1hc2sgZGlmZmVyZW50IGZy b20gbGFzdCB0aW1lLCBvciBubworCSAqIGludGVycnVwdCBtYXNrIGF0IGFsbCwgb3Igd2Fu dCB0byBoYW5kbGUgcG9zdG1hc3RlciBkZWF0aCBkaWZmZXJlbnRseS4KKwkgKiBJdCdzIGNo ZWFwIHRvIGFzc2lnbiB0aG9zZSwgc28ganVzdCBkbyBpdCBldmVyeSB0aW1lLgogCSAqLwot CWlmICghKHdha2VFdmVudHMgJiBXTF9MQVRDSF9TRVQpKQotCQlsYXRjaCA9IE5VTEw7Ci0J TW9kaWZ5V2FpdEV2ZW50KExhdGNoV2FpdFNldCwgTGF0Y2hXYWl0U2V0TGF0Y2hQb3MsIFdM X0xBVENIX1NFVCwgbGF0Y2gpOwotCUxhdGNoV2FpdFNldC0+ZXhpdF9vbl9wb3N0bWFzdGVy X2RlYXRoID0KKwlpZiAoISh3YWtlRXZlbnRzICYgV0xfSU5URVJSVVBUKSkKKwkJaW50ZXJy dXB0TWFzayA9IDA7CisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVwdFdhaXRTZXQsIEludGVy cnVwdFdhaXRTZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVSUlVQVCwgaW50ZXJydXB0TWFzayk7 CisJSW50ZXJydXB0V2FpdFNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0KIAkJKCh3 YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgIT0gMCk7CiAKLQlpZiAoV2FpdEV2 ZW50U2V0V2FpdChMYXRjaFdhaXRTZXQsCisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJy dXB0V2FpdFNldCwKIAkJCQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91 dCA6IC0xLAogCQkJCQkJICZldmVudCwgMSwKIAkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09 IDApCkBAIC01NDUsNyArNDY1LDcgQEAgV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdh a2VFdmVudHMsIGxvbmcgdGltZW91dCwKIH0KIAogLyoKLSAqIExpa2UgV2FpdExhdGNoLCBi dXQgd2l0aCBhbiBleHRyYSBzb2NrZXQgYXJndW1lbnQgZm9yIFdMX1NPQ0tFVF8qCisgKiBM aWtlIFdhaXRJbnRlcnJ1cHQsIGJ1dCB3aXRoIGFuIGV4dHJhIHNvY2tldCBhcmd1bWVudCBm b3IgV0xfU09DS0VUXyoKICAqIGNvbmRpdGlvbnMuCiAgKgogICogV2hlbiB3YWl0aW5nIG9u IGEgc29ja2V0LCBFT0YgYW5kIGVycm9yIGNvbmRpdGlvbnMgYWx3YXlzIGNhdXNlIHRoZSBz b2NrZXQKQEAgLTU1OCwxMiArNDc4LDEyIEBAIFdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGlu dCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCiAgKiB3aGVyZSBzb21lIGJlaGF2aW9yIG90 aGVyIHRoYW4gaW1tZWRpYXRlIGV4aXQgaXMgbmVlZGVkLgogICoKICAqIE5COiBUaGVzZSBk YXlzIHRoaXMgaXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBXYWl0RXZlbnRTZXQgQVBJ LiBXaGVuCi0gKiB1c2luZyBhIGxhdGNoIHZlcnkgZnJlcXVlbnRseSwgY29uc2lkZXIgY3Jl YXRpbmcgYSBsb25nZXIgbGl2aW5nCisgKiB1c2luZyBhbiBpbnRlcnJ1cHQgdmVyeSBmcmVx dWVudGx5LCBjb25zaWRlciBjcmVhdGluZyBhIGxvbmdlciBsaXZpbmcKICAqIFdhaXRFdmVu dFNldCBpbnN0ZWFkOyB0aGF0J3MgbW9yZSBlZmZpY2llbnQuCiAgKi8KIGludAotV2FpdExh dGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29j aywKLQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK1dhaXRJ bnRlcnJ1cHRPclNvY2tldCh1aW50MzIgaW50ZXJydXB0TWFzaywgaW50IHdha2VFdmVudHMs IHBnc29ja2V0IHNvY2ssCisJCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVu dF9pbmZvKQogewogCWludAkJCXJldCA9IDA7CiAJaW50CQkJcmM7CkBAIC01NzUsOSArNDk1 LDkgQEAgV2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywg cGdzb2NrZXQgc29jaywKIAllbHNlCiAJCXRpbWVvdXQgPSAtMTsKIAotCWlmICh3YWtlRXZl bnRzICYgV0xfTEFUQ0hfU0VUKQotCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0xBVENI X1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJCSAgbGF0Y2gsIE5VTEwpOworCWlmICh3 YWtlRXZlbnRzICYgV0xfSU5URVJSVVBUKQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdM X0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJCSAgaW50ZXJydXB0TWFzaywg TlVMTCk7CiAKIAkvKiBQb3N0bWFzdGVyLW1hbmFnZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBw b3N0bWFzdGVyIGRlYXRoIHNvbWVob3cuICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rl ciB8fApAQCAtNTg2LDE4ICs1MDYsMTggQEAgV2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxh dGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKIAogCWlmICgod2FrZUV2ZW50 cyAmIFdMX1BPU1RNQVNURVJfREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQogCQlBZGRX YWl0RXZlbnRUb1NldChzZXQsIFdMX1BPU1RNQVNURVJfREVBVEgsIFBHSU5WQUxJRF9TT0NL RVQsCi0JCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkJICAwLCBOVUxMKTsKIAogCWlmICgo d2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVy KQogCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5W QUxJRF9TT0NLRVQsCi0JCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkJICAwLCBOVUxMKTsK IAogCWlmICh3YWtlRXZlbnRzICYgV0xfU09DS0VUX01BU0spCiAJewogCQlpbnQJCQlldjsK IAogCQlldiA9IHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSzsKLQkJQWRkV2FpdEV2ZW50 VG9TZXQoc2V0LCBldiwgc29jaywgTlVMTCwgTlVMTCk7CisJCUFkZFdhaXRFdmVudFRvU2V0 KHNldCwgZXYsIHNvY2ssIDAsIE5VTEwpOwogCX0KIAogCXJjID0gV2FpdEV2ZW50U2V0V2Fp dChzZXQsIHRpbWVvdXQsICZldmVudCwgMSwgd2FpdF9ldmVudF9pbmZvKTsKQEAgLTYwNiw3 ICs1MjYsNyBAQCBXYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZl bnRzLCBwZ3NvY2tldCBzb2NrLAogCQlyZXQgfD0gV0xfVElNRU9VVDsKIAllbHNlCiAJewot CQlyZXQgfD0gZXZlbnQuZXZlbnRzICYgKFdMX0xBVENIX1NFVCB8CisJCXJldCB8PSBldmVu dC5ldmVudHMgJiAoV0xfSU5URVJSVVBUIHwKIAkJCQkJCQkgICBXTF9QT1NUTUFTVEVSX0RF QVRIIHwKIAkJCQkJCQkgICBXTF9TT0NLRVRfTUFTSyk7CiAJfQpAQCAtNjE3LDEyNSArNTM3 LDQ3IEBAIFdhaXRMYXRjaE9yU29ja2V0KExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMs IHBnc29ja2V0IHNvY2ssCiB9CiAKIC8qCi0gKiBTZXRzIGEgbGF0Y2ggYW5kIHdha2VzIHVw IGFueW9uZSB3YWl0aW5nIG9uIGl0LgotICoKLSAqIFRoaXMgaXMgY2hlYXAgaWYgdGhlIGxh dGNoIGlzIGFscmVhZHkgc2V0LCBvdGhlcndpc2Ugbm90IHNvIG11Y2guCisgKiBXYWtlIHVw IG15IHByb2Nlc3MgaWYgaXQncyBjdXJyZW50bHkgd2FpdGluZy4KICAqCi0gKiBOQjogd2hl biBjYWxsaW5nIHRoaXMgaW4gYSBzaWduYWwgaGFuZGxlciwgYmUgc3VyZSB0byBzYXZlIGFu ZCByZXN0b3JlCi0gKiBlcnJubyBhcm91bmQgaXQuICAoVGhhdCdzIHN0YW5kYXJkIHByYWN0 aWNlIGluIG1vc3Qgc2lnbmFsIGhhbmRsZXJzLCBvZgotICogY291cnNlLCBidXQgd2UgdXNl ZCB0byBvbWl0IGl0IGluIGhhbmRsZXJzIHRoYXQgb25seSBzZXQgYSBmbGFnLikKKyAqIE5C OiBiZSBzdXJlIHRvIHNhdmUgYW5kIHJlc3RvcmUgZXJybm8gYXJvdW5kIGl0LiAgKFRoYXQn cyBzdGFuZGFyZCBwcmFjdGljZQorICogaW4gbW9zdCBzaWduYWwgaGFuZGxlcnMsIG9mIGNv dXJzZSwgYnV0IHdlIHVzZWQgdG8gb21pdCBpdCBpbiBoYW5kbGVycyB0aGF0CisgKiBvbmx5 IHNldCBhIGZsYWcuKSBYWFgKICAqCiAgKiBOQjogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg ZnJvbSBjcml0aWNhbCBzZWN0aW9ucyBhbmQgc2lnbmFsIGhhbmRsZXJzIHNvCiAgKiB0aHJv d2luZyBhbiBlcnJvciBpcyBub3QgYSBnb29kIGlkZWEuCiAgKi8KIHZvaWQKLVNldExhdGNo KExhdGNoICpsYXRjaCkKK1dha2V1cE15UHJvYyh2b2lkKQogewogI2lmbmRlZiBXSU4zMgot CXBpZF90CQlvd25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwotI2VuZGlmCi0K LQkvKgotCSAqIFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2VkIGhlcmUgdG8g ZW5zdXJlIHRoYXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkgY2hhbmdlZCBi eSB0aGlzIHByb2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAqIG1lbW9yeSwg YmVmb3JlIHdlIGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5X2JhcnJpZXIo KTsKLQotCS8qIFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAobGF0Y2gtPmlz X3NldCkKLQkJcmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0KLQlwZ19tZW1v cnlfYmFycmllcigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQlyZXR1cm47 Ci0KLSNpZm5kZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcg Zm9yIHRoZSBsYXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3 ZSdyZSBpbiBhIHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlwZSBvciBTSUdV UkcgdG8gb3Vyc2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRXYWl0QmxvY2so KSB3aXRob3V0IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFub3RoZXIgcHJv Y2Vzcywgc2VuZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3BpZCBvbmx5IG9u Y2UsIGluIGNhc2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5nCi0JICogb3du ZWQgb3IgZGlzb3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3QgaXMgYXRvbWlj LCB3aGljaCBpc24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4gcHJhY3RpY2Us IHRoZSBlZmZlY3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEgMzIgYml0IGlu dGVnZXIsIGFuZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3QgY2FzZSwgd2UK LQkgKiBtaWdodCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNzLiBFdmVuIHRo ZW4sIHlvdSdyZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0aCB0aGF0IGJv Z3VzIHBpZCBleGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3JlczsgYW5kIFBHIGRh dGFiYXNlIHByb2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1IxCi0JICogaW50 ZXJydXB0cyB3aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBBbm90aGVyIHNv cnQgb2YgcmFjZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMgZm9yIGEgbmV3 Ci0JICogcHJvY2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFmdGVyIHdlIGxv b2ssIHNvIHdlIGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkgc28gbG9uZyBh cyBhbGwgY2FsbGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cKLQkgKiB0aGUg c3RhbmRhcmQgY29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUgYm90dG9tIG9m IHRoZWlyIGxvb3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXknbGwgY29ycmVj dGx5IHByb2Nlc3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhhcHBlbiBiZWZv cmUgdGhleSBlbnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBsYXRjaC0+b3du ZXJfcGlkOwotCWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVsc2UgaWYgKG93 bmVyX3BpZCA9PSBNeVByb2NQaWQpCi0JewogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9Q SVBFKQotCQlpZiAod2FpdGluZykKLQkJCXNlbmRTZWxmUGlwZUJ5dGUoKTsKKwlpZiAod2Fp dGluZykKKwkJc2VuZFNlbGZQaXBlQnl0ZSgpOwogI2Vsc2UKLQkJaWYgKHdhaXRpbmcpCi0J CQlraWxsKE15UHJvY1BpZCwgU0lHVVJHKTsKKwlpZiAod2FpdGluZykKKwkJa2lsbChNeVBy b2NQaWQsIFNJR1VSRyk7CiAjZW5kaWYKLQl9Ci0JZWxzZQotCQlraWxsKG93bmVyX3BpZCwg U0lHVVJHKTsKLQogI2Vsc2UKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcg Zm9yIHRoZSBsYXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3 ZSdyZSBpbiBhIHNpZ25hbCBoYW5kbGVyLgotCSAqCi0JICogVXNlIGEgbG9jYWwgdmFyaWFi bGUgaGVyZSBqdXN0IGluIGNhc2Ugc29tZWJvZHkgY2hhbmdlcyB0aGUgZXZlbnQgZmllbGQK LQkgKiBjb25jdXJyZW50bHkgKHdoaWNoIHJlYWxseSBzaG91bGQgbm90IGhhcHBlbikuCi0J ICovCi0JaGFuZGxlID0gbGF0Y2gtPmV2ZW50OwotCWlmIChoYW5kbGUpCi0JewotCQlTZXRF dmVudChoYW5kbGUpOwotCi0JCS8qCi0JCSAqIE5vdGUgdGhhdCB3ZSBzaWxlbnRseSBpZ25v cmUgYW55IGVycm9ycy4gV2UgbWlnaHQgYmUgaW4gYSBzaWduYWwKLQkJICogaGFuZGxlciBv ciBvdGhlciBjcml0aWNhbCBwYXRoIHdoZXJlIGl0J3Mgbm90IHNhZmUgdG8gY2FsbCBlbG9n KCkuCi0JCSAqLwotCX0KKwlTZXRFdmVudChNeVByb2MgPyBNeVByb2MtPmludGVycnVwdFdh a2V1cEV2ZW50IDogTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCk7CiAjZW5kaWYKIH0KIAog LyoKLSAqIENsZWFyIHRoZSBsYXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3 aWxsIHNsZWVwLCB1bmxlc3MKLSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRo ZSBXYWl0TGF0Y2ggY2FsbC4KKyAqIFdha2UgdXAgYW5vdGhlciBwcm9jZXNzIGlmIGl0J3Mg Y3VycmVudGx5IHdhaXRpbmcuCiAgKi8KIHZvaWQKLVJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNo KQorV2FrZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKLQkvKiBPbmx5IHRoZSBvd25l ciBzaG91bGQgcmVzZXQgdGhlIGxhdGNoICovCi0JQXNzZXJ0KGxhdGNoLT5vd25lcl9waWQg PT0gTXlQcm9jUGlkKTsKLQlBc3NlcnQobGF0Y2gtPm1heWJlX3NsZWVwaW5nID09IGZhbHNl KTsKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKKyNpZm5kZWYgV0lOMzIKKwlraWxsKHBy b2MtPnBpZCwgU0lHVVJHKTsKKyNlbHNlCisJU2V0RXZlbnQocHJvYy0+aW50ZXJydXB0V2Fr ZXVwRXZlbnQpOwogCiAJLyoKLQkgKiBFbnN1cmUgdGhhdCB0aGUgd3JpdGUgdG8gaXNfc2V0 IGdldHMgZmx1c2hlZCB0byBtYWluIG1lbW9yeSBiZWZvcmUgd2UKLQkgKiBleGFtaW5lIGFu eSBmbGFnIHZhcmlhYmxlcy4gIE90aGVyd2lzZSBhIGNvbmN1cnJlbnQgU2V0TGF0Y2ggbWln aHQKLQkgKiBmYWxzZWx5IGNvbmNsdWRlIHRoYXQgaXQgbmVlZG4ndCBzaWduYWwgdXMsIGV2 ZW4gdGhvdWdoIHdlIGhhdmUgbWlzc2VkCi0JICogc2VlaW5nIHNvbWUgZmxhZyB1cGRhdGVz IHRoYXQgU2V0TGF0Y2ggd2FzIHN1cHBvc2VkIHRvIGluZm9ybSB1cyBvZi4KKwkgKiBOb3Rl IHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEg c2lnbmFsCisJICogaGFuZGxlciBvciBvdGhlciBjcml0aWNhbCBwYXRoIHdoZXJlIGl0J3Mg bm90IHNhZmUgdG8gY2FsbCBlbG9nKCkuCiAJICovCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsK KyNlbmRpZgogfQogCiAvKgpAQCAtNzk5LDcgKzY0MSw4IEBAIENyZWF0ZVdhaXRFdmVudFNl dChSZXNvdXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cykKIAlkYXRhICs9IE1BWEFM SUdOKHNpemVvZihIQU5ETEUpICogbmV2ZW50cyk7CiAjZW5kaWYKIAotCXNldC0+bGF0Y2gg PSBOVUxMOworCXNldC0+aW50ZXJydXB0X21hc2sgPSAwOworCXNldC0+aW50ZXJydXB0X3Bv cyA9IC0xOwogCXNldC0+bmV2ZW50c19zcGFjZSA9IG5ldmVudHM7CiAJc2V0LT5leGl0X29u X3Bvc3RtYXN0ZXJfZGVhdGggPSBmYWxzZTsKIApAQCAtODkwLDkgKzczMyw5IEBAIEZyZWVX YWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiAJCSBjdXJfZXZlbnQgPCAoc2V0LT5l dmVudHMgKyBzZXQtPm5ldmVudHMpOwogCQkgY3VyX2V2ZW50KyspCiAJewotCQlpZiAoY3Vy X2V2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50 cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJLyogdXNlcyB0aGUgbGF0Y2gncyBIQU5ETEUg Ki8KKwkJCS8qIHVzZXMgdGhlIHByb2Nlc3MncyB3YWtldXAgSEFORExFICovCiAJCX0KIAkJ ZWxzZSBpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7 CkBAIC05MjksNyArNzcyLDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZl bnRTZXQgKnNldCkKIAogLyogLS0tCiAgKiBBZGQgYW4gZXZlbnQgdG8gdGhlIHNldC4gUG9z c2libGUgZXZlbnRzIGFyZToKLSAqIC0gV0xfTEFUQ0hfU0VUOiBXYWl0IGZvciB0aGUgbGF0 Y2ggdG8gYmUgc2V0CisgKiAtIFdMX0lOVEVSUlVQVDogV2FpdCBmb3IgdGhlIGludGVycnVw dCB0byBiZSBzZXQKICAqIC0gV0xfUE9TVE1BU1RFUl9ERUFUSDogV2FpdCBmb3IgcG9zdG1h c3RlciB0byBkaWUKICAqIC0gV0xfU09DS0VUX1JFQURBQkxFOiBXYWl0IGZvciBzb2NrZXQg dG8gYmVjb21lIHJlYWRhYmxlLAogICoJIGNhbiBiZSBjb21iaW5lZCBpbiBvbmUgZXZlbnQg d2l0aCBvdGhlciBXTF9TT0NLRVRfKiBldmVudHMKQEAgLTk0NywxMCArNzkwLDYgQEAgRnJl ZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAqIFJldHVybnMg dGhlIG9mZnNldCBpbiBXYWl0RXZlbnRTZXQtPmV2ZW50cyAoc3RhcnRpbmcgZnJvbSAwKSwg d2hpY2ggY2FuIGJlCiAgKiB1c2VkIHRvIG1vZGlmeSBwcmV2aW91c2x5IGFkZGVkIHdhaXQg ZXZlbnRzIHVzaW5nIE1vZGlmeVdhaXRFdmVudCgpLgogICoKLSAqIEluIHRoZSBXTF9MQVRD SF9TRVQgY2FzZSB0aGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9j ZXNzLAotICogaS5lLiBpdCBtdXN0IGJlIGEgcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0aWFs aXplZCB3aXRoIEluaXRMYXRjaCwgb3IgYQotICogc2hhcmVkIGxhdGNoIGFzc29jaWF0ZWQg d2l0aCB0aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgogICog SW4gdGhlIFdMX1NPQ0tFVF9SRUFEQUJMRS9XUklURUFCTEUvQ09OTkVDVEVEL0FDQ0VQVCBj YXNlcywgRU9GIGFuZCBlcnJvcgogICogY29uZGl0aW9ucyBjYXVzZSB0aGUgc29ja2V0IHRv IGJlIHJlcG9ydGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxlL2Nvbm5lY3RlZCwKICAqIHNvIHRo YXQgdGhlIGNhbGxlciBjYW4gZGVhbCB3aXRoIHRoZSBjb25kaXRpb24uCkBAIC05NjAsNyAr Nzk5LDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkK ICAqIGV2ZW50cy4KICAqLwogaW50Ci1BZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQg KnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKK0FkZFdh aXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tl dCBmZCwgdWludDMyIGludGVycnVwdE1hc2ssCiAJCQkJICB2b2lkICp1c2VyX2RhdGEpCiB7 CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CkBAIC05NzQsMTkgKzgxMywxNiBAQCBBZGRXYWl0RXZl bnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQs IExhdGNoICpsYXRjaCwKIAkJc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPSB0cnVl OwogCX0KIAotCWlmIChsYXRjaCkKLQl7Ci0JCWlmIChsYXRjaC0+b3duZXJfcGlkICE9IE15 UHJvY1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNoIG93bmVk IGJ5IGFub3RoZXIgcHJvY2VzcyIpOwotCQlpZiAoc2V0LT5sYXRjaCkKLQkJCWVsb2coRVJS T1IsICJjYW5ub3Qgd2FpdCBvbiBtb3JlIHRoYW4gb25lIGxhdGNoIik7Ci0JCWlmICgoZXZl bnRzICYgV0xfTEFUQ0hfU0VUKSAhPSBXTF9MQVRDSF9TRVQpCi0JCQllbG9nKEVSUk9SLCAi bGF0Y2ggZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsKLQl9Ci0JZWxzZQorCS8q CisJICogSXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gd2FpdCBmb3IgV0xfSU5URVJS VVBUIHdpdGggZW1wdHkKKwkgKiBpbnRlcnJ1cHRNYXNrLCBidXQgd2UgYWxsb3cgaXQgc28g dGhhdCB5b3UgY2FuIHVzZSBNb2RpZnlFdmVudCB0byBzZXQKKwkgKiB0aGUgaW50ZXJydXB0 TWFzayBsYXRlci4gTm9uLXplcm8gaW50ZXJydXB0TWFzayBkb2Vzbid0IG1ha2Ugc2Vuc2UK KwkgKiB3aXRob3V0IFdMX0lOVEVSUlVQVCwgaG93ZXZlci4KKwkgKi8KKwlpZiAoaW50ZXJy dXB0TWFzayAhPSAwKQogCXsKLQkJaWYgKGV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCWVs b2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBsYXRjaCB3aXRob3V0IGEgc3BlY2lmaWVkIGxh dGNoIik7CisJCWlmICgoZXZlbnRzICYgV0xfSU5URVJSVVBUKSAhPSBXTF9JTlRFUlJVUFQp CisJCQllbG9nKEVSUk9SLCAiaW50ZXJydXB0ZWQgZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWlu ZyBzZXQiKTsKIAl9CiAKIAkvKiB3YWl0aW5nIGZvciBzb2NrZXQgcmVhZGluZXNzIHdpdGhv dXQgYSBzb2NrZXQgaW5kaWNhdGVzIGEgYnVnICovCkBAIC0xMDAyLDEwICs4MzgsMTAgQEAg QWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBn c29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiAJZXZlbnQtPnJlc2V0ID0gZmFsc2U7CiAjZW5k aWYKIAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudHMgPT0gV0xf SU5URVJSVVBUKQogCXsKLQkJc2V0LT5sYXRjaCA9IGxhdGNoOwotCQlzZXQtPmxhdGNoX3Bv cyA9IGV2ZW50LT5wb3M7CisJCXNldC0+aW50ZXJydXB0X21hc2sgPSBpbnRlcnJ1cHRNYXNr OworCQlzZXQtPmludGVycnVwdF9wb3MgPSBldmVudC0+cG9zOwogI2lmIGRlZmluZWQoV0FJ VF9VU0VfU0VMRl9QSVBFKQogCQlldmVudC0+ZmQgPSBzZWxmcGlwZV9yZWFkZmQ7CiAjZWxp ZiBkZWZpbmVkKFdBSVRfVVNFX1NJR05BTEZEKQpAQCAtMTAzOSwxNCArODc1LDE0IEBAIEFk ZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3Nv Y2tldCBmZCwgTGF0Y2ggKmxhdGNoLAogfQogCiAvKgotICogQ2hhbmdlIHRoZSBldmVudCBt YXNrIGFuZCwgaW4gdGhlIFdMX0xBVENIX1NFVCBjYXNlLCB0aGUgbGF0Y2ggYXNzb2NpYXRl ZAotICogd2l0aCB0aGUgV2FpdEV2ZW50LiAgVGhlIGxhdGNoIG1heSBiZSBjaGFuZ2VkIHRv IE5VTEwgdG8gZGlzYWJsZSB0aGUgbGF0Y2gKLSAqIHRlbXBvcmFyaWx5LCBhbmQgdGhlbiBz ZXQgYmFjayB0byBhIGxhdGNoIGxhdGVyLgorICogQ2hhbmdlIHRoZSBldmVudCBtYXNrIGFu ZCwgaW4gdGhlIFdMX0lOVEVSUlVQVCBjYXNlLCB0aGUgaW50ZXJydXB0IG1hc2sKKyAqIGFz c29jaWF0ZWQgd2l0aCB0aGUgV2FpdEV2ZW50LiAgVGhlIGludGVycnVwdCBtYXNrIG1heSBi ZSBjaGFuZ2VkIHRvIDAgdG8KKyAqIGRpc2FibGUgdGhlIHdha2V1cHMgb24gaW50ZXJydXB0 cyB0ZW1wb3JhcmlseSwgYW5kIHRoZW4gc2V0IGJhY2sgbGF0ZXIuCiAgKgogICogJ3Bvcycg aXMgdGhlIGlkIHJldHVybmVkIGJ5IEFkZFdhaXRFdmVudFRvU2V0LgogICovCiB2b2lkCi1N b2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVu dHMsIExhdGNoICpsYXRjaCkKK01vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwg aW50IHBvcywgdWludDMyIGV2ZW50cywgdWludDMyIGludGVycnVwdE1hc2spCiB7CiAJV2Fp dEV2ZW50ICAqZXZlbnQ7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9LUVVFVUUpCkBAIC0xMDYx LDE5ICs4OTcsMTkgQEAgTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQg cG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCiAjZW5kaWYKIAogCS8qCi0JICog SWYgbmVpdGhlciB0aGUgZXZlbnQgbWFzayBub3IgdGhlIGFzc29jaWF0ZWQgbGF0Y2ggY2hh bmdlcywgcmV0dXJuCi0JICogZWFybHkuIFRoYXQncyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0 aW9uIGZvciBzb21lIHNvY2tldHMsIHdoZXJlCisJICogSWYgbmVpdGhlciB0aGUgZXZlbnQg bWFzayBub3IgdGhlIGFzc29jaWF0ZWQgaW50ZXJydXB0IG1hc2sgY2hhbmdlcywKKwkgKiBy ZXR1cm4gZWFybHkuIFRoYXQncyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciBzb21l IHNvY2tldHMsIHdoZXJlCiAJICogTW9kaWZ5V2FpdEV2ZW50IGlzIGZyZXF1ZW50bHkgdXNl ZCB0byBzd2l0Y2ggZnJvbSB3YWl0aW5nIGZvciByZWFkcyB0bwogCSAqIHdhaXRpbmcgb24g d3JpdGVzLgogCSAqLwogCWlmIChldmVudHMgPT0gZXZlbnQtPmV2ZW50cyAmJgotCQkoIShl dmVudC0+ZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSB8fCBzZXQtPmxhdGNoID09IGxhdGNoKSkK KwkJKCEoZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkgfHwgc2V0LT5pbnRlcnJ1cHRf bWFzayA9PSBpbnRlcnJ1cHRNYXNrKSkKIAkJcmV0dXJuOwogCi0JaWYgKGV2ZW50LT5ldmVu dHMgJiBXTF9MQVRDSF9TRVQgJiYKKwlpZiAoZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQ VCAmJgogCQlldmVudHMgIT0gZXZlbnQtPmV2ZW50cykKIAl7Ci0JCWVsb2coRVJST1IsICJj YW5ub3QgbW9kaWZ5IGxhdGNoIGV2ZW50Iik7CisJCWVsb2coRVJST1IsICJjYW5ub3QgbW9k aWZ5IGludGVycnVwdHMgZXZlbnQiKTsKIAl9CiAKIAlpZiAoZXZlbnQtPmV2ZW50cyAmIFdM X1BPU1RNQVNURVJfREVBVEgpCkBAIC0xMDg0LDI1ICs5MjAsMTkgQEAgTW9kaWZ5V2FpdEV2 ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAq bGF0Y2gpCiAJLyogRklYTUU6IHZhbGlkYXRlIGV2ZW50IG1hc2sgKi8KIAlldmVudC0+ZXZl bnRzID0gZXZlbnRzOwogCi0JaWYgKGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2 ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlpZiAobGF0Y2ggJiYgbGF0Y2gtPm93bmVy X3BpZCAhPSBNeVByb2NQaWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBs YXRjaCBvd25lZCBieSBhbm90aGVyIHByb2Nlc3MiKTsKLQkJc2V0LT5sYXRjaCA9IGxhdGNo OworCQlzZXQtPmludGVycnVwdF9tYXNrID0gaW50ZXJydXB0TWFzazsKIAogCQkvKgotCQkg KiBPbiBVbml4LCB3ZSBkb24ndCBuZWVkIHRvIG1vZGlmeSB0aGUga2VybmVsIG9iamVjdCBi ZWNhdXNlIHRoZQotCQkgKiB1bmRlcmx5aW5nIHBpcGUgKGlmIHRoZXJlIGlzIG9uZSkgaXMg dGhlIHNhbWUgZm9yIGFsbCBsYXRjaGVzIHNvIHdlCi0JCSAqIGNhbiByZXR1cm4gaW1tZWRp YXRlbHkuICBPbiBXaW5kb3dzLCB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgYXJyYXkgb2YKLQkJ ICogaGFuZGxlcywgYnV0IHdlIGxlYXZlIHRoZSBvbGQgb25lIGluIHBsYWNlIGFuZCB0b2xl cmF0ZSBzcHVyaW91cwotCQkgKiB3YWtldXBzIGlmIHRoZSBsYXRjaCBpcyBkaXNhYmxlZC4K KwkJICogV2UgZG9uJ3QgYm90aGVyIHRvIGFkanVzdCB0aGUgZXZlbnQgd2hlbiB0aGUgaW50 ZXJydXB0IG1hc2sKKwkJICogY2hhbmdlcy4gIEl0IG1lYW5zIHRoYXQgd2hlbiBpbnRlcnJ1 cHQgbWFzayBpcyBzZXQgdG8gMCwgd2Ugd2lsbAorCQkgKiBsaXN0ZW4gb24gdGhlIGtlcm5l bCBvYmplY3QgdW5uZWNlc3NhcmlseSwgYW5kIG1pZ2h0IGdldCBzb21lCisJCSAqIHNwdXJp b3VzIHdha2V1cHMuIFRoZSBpbnRlcnJ1cHQgc2VuZGluZyBjb2RlIHNob3VsZCBub3Qgd2Fr ZXMgdXMgdXAKKwkJICogaWYgdGhlIG1heWJlU2xlZXBpbmdPbkludGVycnVwdHMgaXMgemVy bywgdGhvdWdoLCBzbyBpdCBzaG91bGQgYmUKKwkJICogcmFyZS4KIAkJICovCi0jaWYgZGVm aW5lZChXQUlUX1VTRV9XSU4zMikKLQkJaWYgKCFsYXRjaCkKLQkJCXJldHVybjsKLSNlbHNl CiAJCXJldHVybjsKLSNlbmRpZgogCX0KIAogI2lmIGRlZmluZWQoV0FJVF9VU0VfRVBPTEwp CkBAIC0xMTMyLDkgKzk2Miw4IEBAIFdhaXRFdmVudEFkanVzdEVwb2xsKFdhaXRFdmVudFNl dCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgYWN0aW9uKQogCWVwb2xsX2V2LmV2ZW50 cyA9IEVQT0xMRVJSIHwgRVBPTExIVVA7CiAKIAkvKiBwcmVwYXJlIHBvbGxmZCBlbnRyeSBv bmNlICovCi0JaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVu dC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQtPmxhdGNoICE9 IE5VTEwpOwogCQllcG9sbF9ldi5ldmVudHMgfD0gRVBPTExJTjsKIAl9CiAJZWxzZSBpZiAo ZXZlbnQtPmV2ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtMTE4MSw5ICsxMDEw LDggQEAgV2FpdEV2ZW50QWRqdXN0UG9sbChXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50 ICpldmVudCkKIAlwb2xsZmQtPmZkID0gZXZlbnQtPmZkOwogCiAJLyogcHJlcGFyZSBwb2xs ZmQgZW50cnkgb25jZSAqLwotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkK KwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0 LT5sYXRjaCAhPSBOVUxMKTsKIAkJcG9sbGZkLT5ldmVudHMgPSBQT0xMSU47CiAJfQogCWVs c2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTEyNDUs OSArMTA3Myw5IEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoc3RydWN0 IGtldmVudCAqa19ldiwgV2FpdEV2ZW50ICpldmVudCkKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkCi1XYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRMYXRjaChzdHJ1Y3Qga2V2ZW50ICprX2V2 LCBXYWl0RXZlbnQgKmV2ZW50KQorV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0 V2FrZXVwKHN0cnVjdCBrZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB7Ci0JLyog Rm9yIG5vdyBsYXRjaCBjYW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92ZWQuICovCisJLyog Rm9yIG5vdyBpbnRlcnJ1cHQgd2FrZXVwIGNhbiBvbmx5IGJlIGFkZGVkLCBub3QgcmVtb3Zl ZC4gKi8KIAlrX2V2LT5pZGVudCA9IFNJR1VSRzsKIAlrX2V2LT5maWx0ZXIgPSBFVkZJTFRf U0lHTkFMOwogCWtfZXYtPmZsYWdzID0gRVZfQUREOwpAQCAtMTI3Myw4ICsxMTAxLDcgQEAg V2FpdEV2ZW50QWRqdXN0S3F1ZXVlKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2 ZW50LCBpbnQgb2xkX2V2ZW50cykKIAlpZiAob2xkX2V2ZW50cyA9PSBldmVudC0+ZXZlbnRz KQogCQlyZXR1cm47CiAKLQlBc3NlcnQoZXZlbnQtPmV2ZW50cyAhPSBXTF9MQVRDSF9TRVQg fHwgc2V0LT5sYXRjaCAhPSBOVUxMKTsKLQlBc3NlcnQoZXZlbnQtPmV2ZW50cyA9PSBXTF9M QVRDSF9TRVQgfHwKKwlBc3NlcnQoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgfHwK IAkJICAgZXZlbnQtPmV2ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIIHx8CiAJCSAgIChl dmVudC0+ZXZlbnRzICYgKFdMX1NPQ0tFVF9SRUFEQUJMRSB8CiAJCQkJCQkJIFdMX1NPQ0tF VF9XUklURUFCTEUgfApAQCAtMTI4OSwxMCArMTExNiwxMCBAQCBXYWl0RXZlbnRBZGp1c3RL cXVldWUoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQsIGludCBvbGRfZXZl bnRzKQogCQkgKi8KIAkJV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkUG9zdG1hc3Rlcigma19l dltjb3VudCsrXSwgZXZlbnQpOwogCX0KLQllbHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdM X0xBVENIX1NFVCkKKwllbHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkK IAl7Ci0JCS8qIFdlIGRldGVjdCBsYXRjaCB3YWtldXAgdXNpbmcgYSBzaWduYWwgZXZlbnQu ICovCi0JCVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZExhdGNoKCZrX2V2W2NvdW50KytdLCBl dmVudCk7CisJCS8qIFdlIGRldGVjdCBpbnRlcnJ1cHQgd2FrZXVwIHVzaW5nIGEgc2lnbmFs IGV2ZW50LiAqLworCQlXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRJbnRlcnJ1cHRXYWtldXAo JmtfZXZbY291bnQrK10sIGV2ZW50KTsKIAl9CiAJZWxzZQogCXsKQEAgLTEzNzAsMTAgKzEx OTcsMTMgQEAgV2FpdEV2ZW50QWRqdXN0V2luMzIoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRF dmVudCAqZXZlbnQpCiB7CiAJSEFORExFCSAgICpoYW5kbGUgPSAmc2V0LT5oYW5kbGVzW2V2 ZW50LT5wb3MgKyAxXTsKIAotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkK KwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0 LT5sYXRjaCAhPSBOVUxMKTsKLQkJKmhhbmRsZSA9IHNldC0+bGF0Y2gtPmV2ZW50OworCQkv KgorCQkgKiBXZSByZWdpc3RlciB0aGUgZXZlbnQgZXZlbiBpZiBpbnRlcnJ1cHRfbWFzayBp cyB6ZXJvLiBXZSBtaWdodCBnZXQKKwkJICogc29tZSBzcHVyaW91cyB3YWtldXBzLCBidXQg dGhhdCdzIE9LCisJCSAqLworCQkqaGFuZGxlID0gTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1 cHRXYWtldXBFdmVudCA6IExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CiAJfQogCWVsc2Ug aWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAl7CkBAIC0xNDUw LDcgKzEyODAsNyBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25n IHRpbWVvdXQsCiAjaWZuZGVmIFdJTjMyCiAJd2FpdGluZyA9IHRydWU7CiAjZWxzZQotCS8q IEVuc3VyZSB0aGF0IHNpZ25hbHMgYXJlIHNlcnZpY2VkIGV2ZW4gaWYgbGF0Y2ggaXMgYWxy ZWFkeSBzZXQgKi8KKwkvKiBFbnN1cmUgdGhhdCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVu IGlmIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcgKi8KIAlwZ3dpbjMyX2Rpc3BhdGNo X3F1ZXVlZF9zaWduYWxzKCk7CiAjZW5kaWYKIAl3aGlsZSAocmV0dXJuZWRfZXZlbnRzID09 IDApCkBAIC0xNDU4LDUyICsxMjg4LDUyIEBAIFdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50 U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAkJaW50CQkJcmM7CiAKIAkJLyoKLQkJICogQ2hl Y2sgaWYgdGhlIGxhdGNoIGlzIHNldCBhbHJlYWR5LiBJZiBzbywgbGVhdmUgdGhlIGxvb3AK KwkJICogQ2hlY2sgaWYgdGhlIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcuIElmIHNv LCBsZWF2ZSB0aGUgbG9vcAogCQkgKiBpbW1lZGlhdGVseSwgYXZvaWQgYmxvY2tpbmcgYWdh aW4uIFdlIGRvbid0IGF0dGVtcHQgdG8gcmVwb3J0IGFueQogCQkgKiBvdGhlciBldmVudHMg dGhhdCBtaWdodCBhbHNvIGJlIHNhdGlzZmllZC4KIAkJICoKLQkJICogSWYgc29tZW9uZSBz ZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRoaXMgYW5kIHRoZQorCQkgKiBJZiBzb21lb25lIHNl dHMgdGhlIGludGVycnVwdCBmbGFnIGJldHdlZW4gdGhpcyBhbmQgdGhlCiAJCSAqIFdhaXRF dmVudFNldFdhaXRCbG9jaygpIGJlbG93LCB0aGUgc2V0dGVyIHdpbGwgd3JpdGUgYSBieXRl IHRvIHRoZQogCQkgKiBwaXBlIChvciBzaWduYWwgdXMgYW5kIHRoZSBzaWduYWwgaGFuZGxl ciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhlCiAJCSAqIHJlYWRpbmVzcyByb3V0aW5lIHdpbGwg cmV0dXJuIGltbWVkaWF0ZWx5LgogCQkgKgogCQkgKiBPbiB1bml4LCBJZiB0aGVyZSdzIGEg cGVuZGluZyBieXRlIGluIHRoZSBzZWxmIHBpcGUsIHdlJ2xsIG5vdGljZQogCQkgKiB3aGVu ZXZlciBibG9ja2luZy4gT25seSBjbGVhcmluZyB0aGUgcGlwZSBpbiB0aGF0IGNhc2UgYXZv aWRzCi0JCSAqIGhhdmluZyB0byBkcmFpbiBpdCBldmVyeSB0aW1lIFdhaXRMYXRjaE9yU29j a2V0KCkgaXMgdXNlZC4gU2hvdWxkCi0JCSAqIHRoZSBwaXBlLWJ1ZmZlciBmaWxsIHVwIHdl J3JlIHN0aWxsIG9rLCBiZWNhdXNlIHRoZSBwaXBlIGlzIGluCi0JCSAqIG5vbmJsb2NraW5n IG1vZGUuIEl0J3MgdW5saWtlbHkgZm9yIHRoYXQgdG8gaGFwcGVuLCBiZWNhdXNlIHRoZQor CQkgKiBoYXZpbmcgdG8gZHJhaW4gaXQgZXZlcnkgdGltZSBXYWl0SW50ZXJydXB0T3JTb2Nr ZXQoKSBpcyB1c2VkLgorCQkgKiBTaG91bGQgdGhlIHBpcGUtYnVmZmVyIGZpbGwgdXAgd2Un cmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMKKwkJICogaW4gbm9uYmxvY2tpbmcg bW9kZS4gSXQncyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhlCiAJ CSAqIHNlbGYgcGlwZSBpc24ndCBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3YWl0 aW5nID0gdHJ1ZSksIG9yCi0JCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIgaW4g bGF0Y2hfc2lndXJnX2hhbmRsZXIoKS4KKwkJICogZnJvbSBpbnNpZGUgYSBzaWduYWwgaGFu ZGxlciBpbiBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIoKS4KIAkJICoKIAkJICogT24gd2lu ZG93cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhlcmUncyBhIHBlbmRpbmcgZXZlbnQgZm9y IHRoZQotCQkgKiBsYXRjaCB3aGVuIGJsb2NraW5nLCBidXQgdGhlcmUncyBubyBkYW5nZXIg b2YgYW55dGhpbmcgZmlsbGluZyB1cCwKLQkJICogYXMgIlNldHRpbmcgYW4gZXZlbnQgdGhh dCBpcyBhbHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0LiIuCisJCSAqIGludGVycnVwdCB3aGVu IGJsb2NraW5nLCBidXQgdGhlcmUncyBubyBkYW5nZXIgb2YgYW55dGhpbmcgZmlsbGluZwor CQkgKiB1cCwgYXMgIlNldHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBhbHJlYWR5IHNldCBoYXMg bm8gZWZmZWN0LiIuCiAJCSAqCi0JCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJu ZWwgY2FsbHMgaW52b2x2ZWQgaW4gbGF0Y2ggbWFuYWdlbWVudAotCQkgKiB3aWxsIHByb3Zp ZGUgYWRlcXVhdGUgc3luY2hyb25pemF0aW9uIG9uIG1hY2hpbmVzIHdpdGggd2VhayBtZW1v cnkKLQkJICogb3JkZXJpbmcsIHNvIHRoYXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3Nl dCBpZiBhIG5vdGlmaWNhdGlvbgotCQkgKiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KKwkJ ICogTm90ZTogd2UgYXNzdW1lIHRoYXQgdGhlIGtlcm5lbCBjYWxscyBpbnZvbHZlZCBpbiBp bnRlcnJ1cHQKKwkJICogbWFuYWdlbWVudCB3aWxsIHByb3ZpZGUgYWRlcXVhdGUgc3luY2hy b25pemF0aW9uIG9uIG1hY2hpbmVzIHdpdGgKKwkJICogd2VhayBtZW1vcnkgb3JkZXJpbmcs IHNvIHRoYXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3NldCBpZiBhCisJCSAqIG5vdGlm aWNhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KIAkJICovCi0JCWlmIChzZXQtPmxh dGNoICYmICFzZXQtPmxhdGNoLT5pc19zZXQpCisJCWlmIChzZXQtPmludGVycnVwdF9tYXNr ICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNl dC0+aW50ZXJydXB0X21hc2spID09IDApCiAJCXsKLQkJCS8qIGFib3V0IHRvIHNsZWVwIG9u IGEgbGF0Y2ggKi8KLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gdHJ1ZTsKKwkJ CS8qIGFib3V0IHRvIHNsZWVwIHdhaXRpbmcgZm9yIGludGVycnVwdHMgKi8KKwkJCXBnX2F0 b21pY193cml0ZV91MzIoTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzLCBzZXQtPmludGVy cnVwdF9tYXNrKTsKIAkJCXBnX21lbW9yeV9iYXJyaWVyKCk7CiAJCQkvKiBhbmQgcmVjaGVj ayAqLwogCQl9CiAKLQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQor CQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIo TXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQl7 CiAJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCW9jY3Vy cmVkX2V2ZW50cy0+cG9zID0gc2V0LT5sYXRjaF9wb3M7CisJCQlvY2N1cnJlZF9ldmVudHMt PnBvcyA9IHNldC0+aW50ZXJydXB0X3BvczsKIAkJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9k YXRhID0KLQkJCQlzZXQtPmV2ZW50c1tzZXQtPmxhdGNoX3Bvc10udXNlcl9kYXRhOwotCQkJ b2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJc2V0LT5ldmVu dHNbc2V0LT5pbnRlcnJ1cHRfcG9zXS51c2VyX2RhdGE7CisJCQlvY2N1cnJlZF9ldmVudHMt PmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJcmV0 dXJuZWRfZXZlbnRzKys7CiAKIAkJCS8qIGNvdWxkIGhhdmUgYmVlbiBzZXQgYWJvdmUgKi8K LQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7CisJCQlwZ19hdG9taWNf d3JpdGVfdTMyKE15TWF5YmVTbGVlcGluZ09uSW50ZXJydXB0cywgMCk7CiAKIAkJCWJyZWFr OwogCQl9CkBAIC0xNTE2LDEwICsxMzQ2LDEwIEBAIFdhaXRFdmVudFNldFdhaXQoV2FpdEV2 ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAkJcmMgPSBXYWl0RXZlbnRTZXRXYWl0Qmxv Y2soc2V0LCBjdXJfdGltZW91dCwKIAkJCQkJCQkJICAgb2NjdXJyZWRfZXZlbnRzLCBuZXZl bnRzKTsKIAotCQlpZiAoc2V0LT5sYXRjaCkKKwkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sg IT0gMCkKIAkJewotCQkJQXNzZXJ0KHNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nKTsKLQkJ CXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7CisJCQlBc3NlcnQocGdfYXRv bWljX3JlYWRfdTMyKE15TWF5YmVTbGVlcGluZ09uSW50ZXJydXB0cykgPT0gc2V0LT5pbnRl cnJ1cHRfbWFzayk7CisJCQlwZ19hdG9taWNfd3JpdGVfdTMyKE15TWF5YmVTbGVlcGluZ09u SW50ZXJydXB0cywgMCk7CiAJCX0KIAogCQlpZiAocmMgPT0gLTEpCkBAIC0xNjA3LDE2ICsx NDM3LDE2IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50 IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVu dC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYg KGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50 LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQljdXJfZXBvbGxfZXZlbnQtPmV2ZW50 cyAmIChFUE9MTElOIHwgRVBPTExFUlIgfCBFUE9MTEhVUCkpCiAJCXsKIAkJCS8qIERyYWlu IHRoZSBzaWduYWxmZC4gKi8KIAkJCWRyYWluKCk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYm IHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAg JiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50 ZXJydXB0X21hc2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBH SU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRD SF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJ CQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBA IC0xNzY5LDEzICsxNTk5LDEzIEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRT ZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0 YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9 IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlp ZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQljdXJfa3F1ZXVl X2V2ZW50LT5maWx0ZXIgPT0gRVZGSUxUX1NJR05BTCkKIAkJewotCQkJaWYgKHNldC0+bGF0 Y2ggJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sg IT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0 LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZk ID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdM X0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQ VDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJ CX0KQEAgLTE4OTEsMTYgKzE3MjEsMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRF dmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNl cl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZl bnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYm CisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCShjdXJf cG9sbGZkLT5yZXZlbnRzICYgKFBPTExJTiB8IFBPTExIVVAgfCBQT0xMRVJSIHwgUE9MTE5W QUwpKSkKIAkJewogCQkJLyogVGhlcmUncyBkYXRhIGluIHRoZSBzZWxmLXBpcGUsIGNsZWFy IGl0LiAqLwogCQkJZHJhaW4oKTsKIAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRj aC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAocGdfYXRv bWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1cHRfbWFz aykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NP Q0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NFVDsKKwkJ CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlvY2N1cnJl ZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTE5OTksNiAr MTgyOSwxNSBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGlu dCBjdXJfdGltZW91dCwKIAkJCWN1cl9ldmVudC0+cmVzZXQgPSBmYWxzZTsKIAkJfQogCisJ CS8qCisJCSAqIFdlIG5lZWQgdG8gdXNlIGRpZmZlcmVudCBldmVudCBvYmplY3QgZGVwZW5k aW5nIG9uIHdoZXRoZXIgImxvY2FsIgorCQkgKiBvciAic2hhcmVkIG1lbW9yeSIgaW50ZXJy dXB0cyBhcmUgaW4gdXNlLiBUaGVyZSdzIG5vIGVhc3kgd2F5IHRvCisJCSAqIGFkanVzdCBh bGwgZXhpc3RpbmcgV2FpdEV2ZW50U2V0IHdoZW4geW91IHN3aXRjaCBmcm9tIGxvY2FsIHRv CisJCSAqIHNoYXJlZCBvciBiYWNrLCBzbyB3ZSByZWZyZXNoIGl0IG9uIGV2ZXJ5IGNhbGwu CisJCSAqLworCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCQlX YWl0RXZlbnRBZGp1c3RXaW4zMihzZXQsIGN1cl9ldmVudCk7CisKIAkJLyoKIAkJICogV2Ug YXNzb2NpYXRlIHRoZSBzb2NrZXQgd2l0aCBhIG5ldyBldmVudCBoYW5kbGUgZm9yIGVhY2gK IAkJICogV2FpdEV2ZW50U2V0LiAgRkRfQ0xPU0UgaXMgb25seSBnZW5lcmF0ZWQgb25jZSBp ZiB0aGUgb3RoZXIgZW5kCkBAIC0yMTA0LDE5ICsxOTQzLDE1IEBAIFdhaXRFdmVudFNldFdh aXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJl ZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJl ZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdM X0xBVENIX1NFVCkKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkK IAkJewotCQkJLyoKLQkJCSAqIFdlIGNhbm5vdCB1c2Ugc2V0LT5sYXRjaC0+ZXZlbnQgdG8g cmVzZXQgdGhlIGZpcmVkIGV2ZW50IGlmIHdlCi0JCQkgKiBhcmVuJ3Qgd2FpdGluZyBvbiB0 aGlzIGxhdGNoIG5vdy4KLQkJCSAqLwogCQkJaWYgKCFSZXNldEV2ZW50KHNldC0+aGFuZGxl c1tjdXJfZXZlbnQtPnBvcyArIDFdKSkKIAkJCQllbG9nKEVSUk9SLCAiUmVzZXRFdmVudCBm YWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOwogCi0JCQlpZiAoc2V0 LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRf bWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykg JiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50 cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRz ID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5U RVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysr OwogCQkJfQpAQCAtMjE2MSw3ICsxOTk2LDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdh aXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAKIAkJCQkvKi0tLS0tLQogCQkJ CSAqIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgZG9lc24ndCBndWFyYW50ZWUgdGhhdCBhIHJl YWQgZXZlbnQKLQkJCQkgKiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBsYXRjaCBpcyBzZXQg YXQgdGhlIHNhbWUgdGltZS4gIEV2ZW4KKwkJCQkgKiB3aWxsIGJlIHJldHVybmVkIGlmIHRo ZSBpbnRlcnJ1cHQgaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUuICBFdmVuCiAJCQkJICogaWYg aXQgZGlkLCB0aGUgY2FsbGVyIG1pZ2h0IGRyb3AgdGhhdCBldmVudCBleHBlY3RpbmcgaXQg dG8KIAkJCQkgKiByZW9jY3VyIG9uIG5leHQgY2FsbC4gIFNvLCB3ZSBtdXN0IGZvcmNlIHRo ZSBldmVudCB0byBiZQogCQkJCSAqIHJlc2V0IGlmIHRoaXMgV2FpdEV2ZW50U2V0IGlzIHVz ZWQgYWdhaW4gaW4gb3JkZXIgdG8gYXZvaWQKQEAgLTIyNjcsMTggKzIxMDIsMTcgQEAgR2V0 TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpCiAjaWYgZGVmaW5l ZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAKIC8qCi0gKiBTZXRMYXRjaCB1c2VzIFNJR1VSRyB0 byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcgb24gdGhlIGxhdGNoLgotICoKLSAqIFdh a2UgdXAgV2FpdExhdGNoLCBpZiB3ZSdyZSB3YWl0aW5nLgorICogV2FrZXVwT3RoZXJQcm9j IGFuZCBXYWt1cE15UHJvYyB1c2UgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2Fp dGluZworICogZm9yIGFuIGludGVycnVwdAogICovCiBzdGF0aWMgdm9pZAotbGF0Y2hfc2ln dXJnX2hhbmRsZXIoU0lHTkFMX0FSR1MpCitpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiB7CiAJaWYgKHdhaXRpbmcpCiAJCXNlbmRTZWxmUGlwZUJ5dGUoKTsKIH0K IAotLyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0byB3YWtlIHVwIFdhaXRM YXRjaCAqLworLyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0byB3YWtlIHVw IFdhaXRJbnRlcnJ1cHQgKi8KIHN0YXRpYyB2b2lkCiBzZW5kU2VsZlBpcGVCeXRlKHZvaWQp CiB7CkBAIC0yMjk1LDcgKzIxMjksNyBAQCByZXRyeToKIAogCQkvKgogCQkgKiBJZiB0aGUg cGlwZSBpcyBmdWxsLCB3ZSBkb24ndCBuZWVkIHRvIHJldHJ5LCB0aGUgZGF0YSB0aGF0J3Mg dGhlcmUKLQkJICogYWxyZWFkeSBpcyBlbm91Z2ggdG8gd2FrZSB1cCBXYWl0TGF0Y2guCisJ CSAqIGFscmVhZHkgaXMgZW5vdWdoIHRvIHdha2UgdXAgV2FpdEludGVycnVwdC4KIAkJICov CiAJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spCiAJCQly ZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9u X3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3Zhcmlh YmxlLmMKaW5kZXggMTEyYTUxOGJhZTAuLjlhZjI5NzA2NjA2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCkBAIC0yMSw2ICsyMSw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5z dHJfdGltZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z cGluLmgiCkBAIC0xNDcsMjMgKzE0OCwyMyBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xl ZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoc3RhcnRfdGltZSk7CiAJCUFzc2VydCh0aW1lb3V0ID49IDAgJiYgdGlt ZW91dCA8PSBJTlRfTUFYKTsKIAkJY3VyX3RpbWVvdXQgPSB0aW1lb3V0OwotCQl3YWl0X2V2 ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI OworCQl3YWl0X2V2ZW50cyA9IFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRIOwogCX0KIAllbHNlCi0JCXdhaXRfZXZlbnRzID0gV0xfTEFUQ0hfU0VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJd2FpdF9ldmVudHMgPSBXTF9JTlRFUlJVUFQg fCBXTF9FWElUX09OX1BNX0RFQVRIOwogCiAJd2hpbGUgKHRydWUpCiAJewogCQlib29sCQlk b25lID0gZmFsc2U7CiAKIAkJLyoKLQkJICogV2FpdCBmb3IgbGF0Y2ggdG8gYmUgc2V0LiAg KElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVyCi0JCSAqIHJlYXNvbiwgdGhlIGNv ZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4pCisJCSAqIFdhaXQgZm9yIGludGVycnVwdC4g IChJZiB3ZSdyZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhlciByZWFzb24sIHRoZQorCQkgKiBj b2RlIGJlbG93IHdpbGwgY29wZSBhbnl3YXkuKQogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLCB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7 CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ LCB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CiAKLQkJLyog UmVzZXQgbGF0Y2ggYmVmb3JlIGV4YW1pbmluZyB0aGUgc3RhdGUgb2YgdGhlIHdhaXQgbGlz dC4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogQ2xlYXIgdGhlIGZsYWcgYmVm b3JlIGV4YW1pbmluZyB0aGUgc3RhdGUgb2YgdGhlIHdhaXQgbGlzdC4gKi8KKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKgogCQkgKiBJZiB0 aGlzIHByb2Nlc3MgaGFzIGJlZW4gdGFrZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4g d2Uga25vdwpAQCAtMTc2LDkgKzE3NywxMCBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xl ZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCSAqIHRoZSB3YWl0 IGxpc3Qgb25seSB3aGVuIHRoZSBjYWxsZXIgY2FsbHMKIAkJICogQ29uZGl0aW9uVmFyaWFi bGVDYW5jZWxTbGVlcC4KIAkJICoKLQkJICogSWYgd2UncmUgc3RpbGwgaW4gdGhlIHdhaXQg bGlzdCwgdGhlbiB0aGUgbGF0Y2ggbXVzdCBoYXZlIGJlZW4gc2V0Ci0JCSAqIGJ5IHNvbWV0 aGluZyBvdGhlciB0aGFuIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UgZG9u J3QKLQkJICogZ3VhcmFudGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZv aWQgdGhpcyBvYnZpb3VzIGNhc2UuCisJCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0 IGxpc3QsIHRoZW4gdGhlIGludGVycnVwdCBtdXN0IGhhdmUgYmVlbgorCQkgKiBzZW50IGJ5 IHNvbWV0aGluZyBvdGhlciB0aGFuIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2gg d2UKKwkJICogZG9uJ3QgZ3VhcmFudGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2Un bGwgYXZvaWQgdGhpcyBvYnZpb3VzCisJCSAqIGNhc2UuCiAJCSAqLwogCQlTcGluTG9ja0Fj cXVpcmUoJmN2LT5tdXRleCk7CiAJCWlmICghcHJvY2xpc3RfY29udGFpbnMoJmN2LT53YWtl dXAsIE15UHJvY051bWJlciwgY3ZXYWl0TGluaykpCkBAIC0yNjYsOSArMjY4LDkgQEAgQ29u ZGl0aW9uVmFyaWFibGVTaWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCQlwcm9jID0g cHJvY2xpc3RfcG9wX2hlYWRfbm9kZSgmY3YtPndha2V1cCwgY3ZXYWl0TGluayk7CiAJU3Bp bkxvY2tSZWxlYXNlKCZjdi0+bXV0ZXgpOwogCi0JLyogSWYgd2UgZm91bmQgc29tZW9uZSBz bGVlcGluZywgc2V0IHRoZWlyIGxhdGNoIHRvIHdha2UgdGhlbSB1cC4gKi8KKwkvKiBJZiB3 ZSBmb3VuZCBzb21lb25lIHNsZWVwaW5nLCB3YWtlIHRoZW0gdXAuICovCiAJaWYgKHByb2Mg IT0gTlVMTCkKLQkJU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2Mp KTsKIH0KIAogLyoKQEAgLTI5Nyw4ICsyOTksOCBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2Fk Y2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJICogQ1YgYW5kIGluIGRvaW5nIHNvIHJl bW92ZSBvdXIgc2VudGluZWwgZW50cnkuICBCdXQgdGhhdCdzIGZpbmU6IHNpbmNlCiAJICog Q1Ygd2FpdGVycyBhcmUgYWx3YXlzIGFkZGVkIGFuZCByZW1vdmVkIGluIG9yZGVyLCB0aGF0 IG11c3QgbWVhbiB0aGF0CiAJICogZXZlcnkgcHJldmlvdXMgd2FpdGVyIGhhcyBiZWVuIHdh a2VuZWQsIHNvIHdlJ3JlIGRvbmUuICBXZSdsbCBnZXQgYW4KLQkgKiBleHRyYSAic2V0IiBv biBvdXIgbGF0Y2ggZnJvbSB0aGUgc29tZW9uZSBlbHNlJ3Mgc2lnbmFsLCB3aGljaCBpcwot CSAqIHNsaWdodGx5IGluZWZmaWNpZW50IGJ1dCBoYXJtbGVzcy4KKwkgKiBleHRyYSBpbnRl cnJ1cHQgZnJvbSB0aGUgc29tZW9uZSBlbHNlJ3Mgc2lnbmFsLCB3aGljaCBpcyBzbGlnaHRs eQorCSAqIGluZWZmaWNpZW50IGJ1dCBoYXJtbGVzcy4KIAkgKgogCSAqIFdlIGNhbid0IGlu c2VydCBvdXIgY3ZXYWl0TGluayBhcyBhIHNlbnRpbmVsIGlmIGl0J3MgYWxyZWFkeSBpbiB1 c2UgaW4KIAkgKiBzb21lIG90aGVyIHByb2NsaXN0LiAgV2hpbGUgdGhhdCdzIG5vdCBleHBl Y3RlZCB0byBiZSB0cnVlIGZvciB0eXBpY2FsCkBAIC0zMzEsNyArMzMzLDcgQEAgQ29uZGl0 aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCiAJLyogQXdh a2VuIGZpcnN0IHdhaXRlciwgaWYgdGhlcmUgd2FzIG9uZS4gKi8KIAlpZiAocHJvYyAhPSBO VUxMKQotCQlTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwog CiAJd2hpbGUgKGhhdmVfc2VudGluZWwpCiAJewpAQCAtMzU1LDYgKzM1Nyw2IEBAIENvbmRp dGlvblZhcmlhYmxlQnJvYWRjYXN0KENvbmRpdGlvblZhcmlhYmxlICpjdikKIAkJU3Bpbkxv Y2tSZWxlYXNlKCZjdi0+bXV0ZXgpOwogCiAJCWlmIChwcm9jICE9IE5VTEwgJiYgcHJvYyAh PSBNeVByb2MpCi0JCQlTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHBy b2MpKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJl ZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXgg MjAzMDMyMmY5NTcuLmVmZjMxNGRkMDVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By ZWRpY2F0ZS5jCkBAIC0yMDcsNiArMjA3LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2xmaW5kLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0 ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTU3Niw3ICsxNTc3LDEwIEBAIEdldFNhZmVTbmFw c2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpCiAJCQkJIFN4YWN0SXNST1Vuc2FmZShNeVNl cmlhbGl6YWJsZVhhY3QpKSkKIAkJewogCQkJTFdMb2NrUmVsZWFzZShTZXJpYWxpemFibGVY YWN0SGFzaExvY2spOwotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9TQUZFX1NO QVBTSE9UKTsKKwkJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkgIFdB SVRfRVZFTlRfU0FGRV9TTkFQU0hPVCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCUxXTG9j a0FjcXVpcmUoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrLCBMV19FWENMVVNJVkUpOwogCQl9 CiAJCU15U2VyaWFsaXphYmxlWGFjdC0+ZmxhZ3MgJj0gflNYQUNUX0ZMQUdfREVGRVJSQUJM RV9XQUlUSU5HOwpAQCAtMzYwOSw3ICszNjEzLDcgQEAgUmVsZWFzZVByZWRpY2F0ZUxvY2tz KGJvb2wgaXNDb21taXQsIGJvb2wgaXNSZWFkT25seVNhZmUpCiAJCQkgKi8KIAkJCWlmIChT eGFjdElzRGVmZXJyYWJsZVdhaXRpbmcocm9YYWN0KSAmJgogCQkJCShTeGFjdElzUk9VbnNh ZmUocm9YYWN0KSB8fCBTeGFjdElzUk9TYWZlKHJvWGFjdCkpKQotCQkJCVByb2NTZW5kU2ln bmFsKHJvWGFjdC0+cGdwcm9jbm8pOworCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLCByb1hhY3QtPnBncHJvY25vKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcm9jLmMKaW5kZXggNTU3NjVjYjI1MDcuLjQwZDJhYmQ5NzI4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBAIC0y NTgsMTQgKzI1OSwyOCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCQlBc3NlcnQoZnBQdHIg PD0gZnBFbmRQdHIpOwogCiAJCS8qCi0JCSAqIFNldCB1cCBwZXItUEdQUk9DIHNlbWFwaG9y ZSwgbGF0Y2gsIGFuZCBmcEluZm9Mb2NrLiAgUHJlcGFyZWQgeGFjdAotCQkgKiBkdW1teSBQ R1BST0NzIGRvbid0IG5lZWQgdGhlc2UgdGhvdWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lh dGVkCi0JCSAqIHdpdGggYSByZWFsIHByb2Nlc3MKKwkJICogU2V0IHVwIHBlci1QR1BST0Mg c2VtYXBob3JlLCBpbnRlcnJ1cHQgd2FrZXVwIGV2ZW50IChvbiBXaW5kb3dzKSwKKwkJICog YW5kIGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0IGR1bW15IFBHUFJPQ3MgZG9uJ3QgbmVl ZCB0aGVzZQorCQkgKiB0aG91Z2ggLSB0aGV5J3JlIG5ldmVyIGFzc29jaWF0ZWQgd2l0aCBh IHJlYWwgcHJvY2VzcwogCQkgKi8KIAkJaWYgKGkgPCBNYXhCYWNrZW5kcyArIE5VTV9BVVhJ TElBUllfUFJPQ1MpCiAJCXsKKyNpZmRlZiBXSU4zMgorCQkJU0VDVVJJVFlfQVRUUklCVVRF UyBzYTsKKworCQkJLyoKKwkJCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNw ZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQorCQkJICogaW5oZXJpdGVkLgorCQkJICovCisJ CQlaZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7CisJCQlzYS5uTGVuZ3RoID0gc2l6ZW9m KHNhKTsKKwkJCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsKKworCQkJcHJvYy0+aW50ZXJy dXB0V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVudCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsK KwkJCWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQkJCWVsb2co RVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVy cm9yKCkpOworI2VuZGlmCiAJCQlwcm9jLT5zZW0gPSBQR1NlbWFwaG9yZUNyZWF0ZSgpOwot CQkJSW5pdFNoYXJlZExhdGNoKCYocHJvYy0+cHJvY0xhdGNoKSk7CiAJCQlMV0xvY2tJbml0 aWFsaXplKCYocHJvYy0+ZnBJbmZvTG9jayksIExXVFJBTkNIRV9MT0NLX0ZBU1RQQVRIKTsK IAkJfQogCkBAIC00ODAsMTMgKzQ5NSw4IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9j LT5jbG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlBc3NlcnQocGdf YXRvbWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91cE5leHQpID09IElOVkFMSURfUFJP Q19OVU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9D J3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRo YXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZh cgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUu Ci0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJl ZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBw cm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0 aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9y eSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZl bnRfaW5mbyk7CkBAIC02NDcsMTMgKzY1Nyw4IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZv aWQpCiAJfQogI2VuZGlmCiAKLQkvKgotCSAqIEFjcXVpcmUgb3duZXJzaGlwIG9mIHRoZSBQ R1BST0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRMYXRjaAotCSAqIG9uIGl0 LiAgVGhhdCBhbGxvd3MgdXMgdG8gcmVwb2ludCB0aGUgcHJvY2VzcyBsYXRjaCwgd2hpY2gg c28gZmFyCi0JICogcG9pbnRzIHRvIHByb2Nlc3MgbG9jYWwgb25lLCB0byB0aGUgc2hhcmVk IG9uZS4KLQkgKi8KLQlPd25MYXRjaCgmTXlQcm9jLT5wcm9jTGF0Y2gpOwotCVN3aXRjaFRv U2hhcmVkTGF0Y2goKTsKKwkvKiBTdGFydCBhY2NlcHRpbmcgaW50ZXJydXB0cyBmcm9tIG90 aGVyIHByb2Nlc3NlcyAqLworCVN3aXRjaFRvU2hhcmVkSW50ZXJydXB0cygpOwogCiAJLyog bm93IHRoYXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3YWl0IGV2ZW50cyB0byBzaGFyZWQg bWVtb3J5ICovCiAJcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UoJk15UHJvYy0+d2Fp dF9ldmVudF9pbmZvKTsKQEAgLTkzNSwyMSArOTQwLDIwIEBAIFByb2NLaWxsKGludCBjb2Rl LCBEYXR1bSBhcmcpCiAJfQogCiAJLyoKLQkgKiBSZXNldCBNeUxhdGNoIHRvIHRoZSBwcm9j ZXNzIGxvY2FsIG9uZS4gIFRoaXMgaXMgc28gdGhhdCBzaWduYWwKLQkgKiBoYW5kbGVycyBl dCBhbCBjYW4gY29udGludWUgdXNpbmcgdGhlIGxhdGNoIGFmdGVyIHRoZSBzaGFyZWQgbGF0 Y2gKLQkgKiBpc24ndCBvdXJzIGFueW1vcmUuCisJICogUmVzZXQgaW50ZXJydXB0IHZlY3Rv ciB0byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUuICBUaGlzIGlzIHNvIHRoYXQKKwkgKiBzaWdu YWwgaGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRpbnVlIHVzaW5nIGludGVycnVwdHMgYWZ0ZXIg dGhlIFBHUFJPQworCSAqIGVudHJ5IGlzbid0IG91cnMgYW55bW9yZS4KIAkgKgogCSAqIFNp bWlsYXJseSwgc3RvcCByZXBvcnRpbmcgd2FpdCBldmVudHMgdG8gTXlQcm9jLT53YWl0X2V2 ZW50X2luZm8uCiAJICoKLQkgKiBBZnRlciB0aGF0IGNsZWFyIE15UHJvYyBhbmQgZGlzb3du IHRoZSBzaGFyZWQgbGF0Y2guCisJICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2MuCiAJICov Ci0JU3dpdGNoQmFja1RvTG9jYWxMYXRjaCgpOworCVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRz KCk7CiAJcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJcHJvYyA9IE15 UHJvYzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19O VU1CRVI7Ci0JRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAkvKiBNYXJrIHRo ZSBwcm9jIG5vIGxvbmdlciBpbiB1c2UgKi8KIAlwcm9jLT5waWQgPSAwOwpAQCAtMTAxMiwx MyArMTAxNiwxMiBAQCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQog CUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIAogCS8qIGxvb2sgYXQgdGhlIGVx dWl2YWxlbnQgUHJvY0tpbGwoKSBjb2RlIGZvciBjb21tZW50cyAqLwotCVN3aXRjaEJhY2tU b0xvY2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpOwogCXBnc3RhdF9y ZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAogCXByb2MgPSBNeVByb2M7CiAJTXlQcm9j ID0gTlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCURpc293 bkxhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tBY3F1aXJlKFByb2NTdHJ1 Y3RMb2NrKTsKIApAQCAtMTM0NSwxOCArMTM0OCwxOCBAQCBQcm9jU2xlZXAoTE9DQUxMT0NL ICpsb2NhbGxvY2spCiAJfQogCiAJLyoKLQkgKiBJZiBzb21lYm9keSB3YWtlcyB1cyBiZXR3 ZWVuIExXTG9ja1JlbGVhc2UgYW5kIFdhaXRMYXRjaCwgdGhlIGxhdGNoCi0JICogd2lsbCBu b3Qgd2FpdC4gQnV0IGEgc2V0IGxhdGNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhh dCB0aGUgbG9jawotCSAqIGlzIGZyZWUgbm93LCBhcyB0aGVyZSBhcmUgbWFueSBvdGhlciBz b3VyY2VzIGZvciBsYXRjaCBzZXRzIHRoYW4KLQkgKiBzb21lYm9keSByZWxlYXNpbmcgdGhl IGxvY2suCisJICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNl IGFuZCBXYWl0SW50ZXJydXB0LAorCSAqIFdhaXRJbnRlcnJ1cHQgd2lsbCBub3Qgd2FpdC4g QnV0IGFuIGludGVycnVwdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuCisJICogdGhhdCB0 aGUgbG9jayBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1hbnkgb3RoZXIgc291cmNlcyBm b3IgdGhlCisJICogaW50ZXJydXB0IHRoYW4gc29tZWJvZHkgcmVsZWFzaW5nIHRoZSBsb2Nr LgogCSAqCi0JICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRoZSBsYXRjaCBo YXMgYmVlbiBzZXQsIHNvIGNhbmNlbC9kaWUKLQkgKiBpbnRlcnJ1cHRzIGFyZSBwcm9jZXNz ZWQgcXVpY2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdCBtaW5kIGxvc2luZwotCSAqIGNv bnRyb2wgdG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAgV2UgZG9uJ3QsIGJlY2F1 c2Ugd2UgaGF2ZSBubwotCSAqIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ugd29yayB0byBkbyBhZnRl ciBiZWluZyBncmFudGVkIHRoZSBsb2NrICh0aGUKLQkgKiBncmFudG9yIGRpZCBpdCBhbGwp LiAgV2UgZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcgdGhlIGRlYWRsb2NrCi0J ICogdGltZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0YWJsZSwgYnV0IGlmIHdl IGxvc2UgY29udHJvbCB0byBhbgotCSAqIGVycm9yLCBMb2NrRXJyb3JDbGVhbnVwIHdpbGwg Zml4IHRoYXQgdXAuCisJICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRoZSBp bnRlcnJ1cHQgaGFzIGJlZW4gc2V0LCBzbworCSAqIGNhbmNlbC9kaWUgaW50ZXJydXB0cyBh cmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMgd2UgbXVzdCBub3QKKwkgKiBtaW5k IGxvc2luZyBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBpbnRlcnJ1cHQgaGVyZS4gIFdlIGRv bid0LCBiZWNhdXNlCisJICogd2UgaGF2ZSBubyBzaGFyZWQtc3RhdGUtY2hhbmdlIHdvcmsg dG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9jaworCSAqICh0aGUgZ3JhbnRvciBk aWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkgYWJvdXQgY2FuY2VsaW5nIHRoZQor CSAqIGRlYWRsb2NrIHRpbWVvdXQgYW5kIHVwZGF0aW5nIHRoZSBsb2NhbGxvY2sgdGFibGUs IGJ1dCBpZiB3ZSBsb3NlCisJICogY29udHJvbCB0byBhbiBlcnJvciwgTG9ja0Vycm9yQ2xl YW51cCB3aWxsIGZpeCB0aGF0IHVwLgogCSAqLwogCWRvCiAJewpAQCAtMTQwMiw5ICsxNDA1 LDkgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQl9CiAJCWVsc2UKIAkJ ewotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElU X09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRh Zy5sb2NrLmxvY2t0YWdfdHlwZSk7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZv aWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lO VEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJCSBQR19XQUlUX0xP Q0sgfCBsb2NhbGxvY2stPnRhZy5sb2NrLmxvY2t0YWdfdHlwZSk7CisJCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJLyogY2hlY2sgZm9yIGRlYWRs b2NrcyBmaXJzdCwgYXMgdGhhdCdzIHByb2JhYmx5IGxvZy13b3J0aHkgKi8KIAkJCWlmIChn b3RfZGVhZGxvY2tfdGltZW91dCkKIAkJCXsKQEAgLTE2OTYsNyArMTY5OSw3IEBAIFByb2NT bGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAogCiAvKgotICogUHJvY1dha2V1cCAtLSB3 YWtlIHVwIGEgcHJvY2VzcyBieSBzZXR0aW5nIGl0cyBsYXRjaC4KKyAqIFByb2NXYWtldXAg LS0gd2FrZSB1cCBhIHByb2Nlc3MgYnkgc2VuZGluZyBpdCBhbiBpbnRlcnJ1cHQuCiAgKgog ICoJIEFsc28gcmVtb3ZlIHRoZSBwcm9jZXNzIGZyb20gdGhlIHdhaXQgcXVldWUgYW5kIHNl dCBpdHMgbGlua3MgaW52YWxpZC4KICAqCkBAIC0xNzI1LDcgKzE3MjgsNyBAQCBQcm9jV2Fr ZXVwKFBHUFJPQyAqcHJvYywgUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1cykKIAlwZ19hdG9t aWNfd3JpdGVfdTY0KCZNeVByb2MtPndhaXRTdGFydCwgMCk7CiAKIAkvKiBBbmQgYXdha2Vu IGl0ICovCi0JU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwog fQogCiAvKgpAQCAtMTg3Nyw0NSArMTg4MCwxOSBAQCBDaGVja0RlYWRMb2NrQWxlcnQodm9p ZCkKIAlnb3RfZGVhZGxvY2tfdGltZW91dCA9IHRydWU7CiAKIAkvKgotCSAqIEhhdmUgdG8g c2V0IHRoZSBsYXRjaCBhZ2FpbiwgZXZlbiBpZiBoYW5kbGVfc2lnX2FsYXJtIGFscmVhZHkg ZGlkLiBCYWNrCi0JICogdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNl dC4uLiBJdCdzIHVubGlrZWx5IHRoYXQgdGhpcwotCSAqIGV2ZXIgd291bGQgYmUgYSBwcm9i bGVtLCBidXQgc2V0dGluZyBhIHNldCBsYXRjaCBhZ2FpbiBpcyBjaGVhcC4KKwkgKiBIYXZl IHRvIHJhaXNlIHRoZSBpbnRlcnJ1cHQgYWdhaW4sIGV2ZW4gaWYgaGFuZGxlX3NpZ19hbGFy bSBhbHJlYWR5CisJICogZGlkLiBCYWNrIHRoZW4gZ290X2RlYWRsb2NrX3RpbWVvdXQgd2Fz bid0IHlldCBzZXQuLi4gSXQncyB1bmxpa2VseQorCSAqIHRoYXQgdGhpcyBldmVyIHdvdWxk IGJlIGEgcHJvYmxlbSwgYnV0IHJhaXNpbmcgYW4gaW50ZXJydXB0IGFnYWluIGlzCisJICog Y2hlYXAuCiAJICoKIAkgKiBOb3RlIHRoYXQsIHdoZW4gdGhpcyBmdW5jdGlvbiBydW5zIGlu c2lkZSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcigpLAotCSAqIHRoZSBoYW5kbGVyIGZ1 bmN0aW9uIHNldHMgdGhlIGxhdGNoIGFnYWluIGFmdGVyIHRoZSBsYXRjaCBpcyBzZXQgaGVy ZS4KKwkgKiB0aGUgaGFuZGxlciBmdW5jdGlvbiByYWlzZXMgdGhlIGludGVycnVwdCBhZ2Fp biBhZnRlciB0aGUgaW50ZXJydXB0IGlzCisJICogcmFpc2VkIGhlcmUuCiAJICovCi0JU2V0 TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQKTsKIAllcnJubyA9IHNhdmVfZXJybm87CiB9CiAKLS8qCi0gKiBQcm9jV2FpdEZvclNp Z25hbCAtIHdhaXQgZm9yIGEgc2lnbmFsIGZyb20gYW5vdGhlciBiYWNrZW5kLgotICoKLSAq IEFzIHRoaXMgdXNlcyB0aGUgZ2VuZXJpYyBwcm9jZXNzIGxhdGNoIHRoZSBjYWxsZXIgaGFz IHRvIGJlIHJvYnVzdCBhZ2FpbnN0Ci0gKiB1bnJlbGF0ZWQgd2FrZXVwczogQWx3YXlzIGNo ZWNrIHRoYXQgdGhlIGRlc2lyZWQgc3RhdGUgaGFzIG9jY3VycmVkLCBhbmQKLSAqIHdhaXQg YWdhaW4gaWYgbm90LgotICovCi12b2lkCi1Qcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2Fp dF9ldmVudF9pbmZvKQotewotCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hf U0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJIHdhaXRfZXZlbnRfaW5mbyk7 Ci0JUmVzZXRMYXRjaChNeUxhdGNoKTsKLQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotfQot Ci0vKgotICogUHJvY1NlbmRTaWduYWwgLSBzZXQgdGhlIGxhdGNoIG9mIGEgYmFja2VuZCBp ZGVudGlmaWVkIGJ5IFByb2NOdW1iZXIKLSAqLwotdm9pZAotUHJvY1NlbmRTaWduYWwoUHJv Y051bWJlciBwcm9jTnVtYmVyKQotewotCWlmIChwcm9jTnVtYmVyIDwgMCB8fCBwcm9jTnVt YmVyID49IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCkKLQkJZWxvZyhFUlJPUiwgInByb2NO dW1iZXIgb3V0IG9mIHJhbmdlIik7Ci0KLQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJv Y3NbcHJvY051bWJlcl0ucHJvY0xhdGNoKTsKLX0KLQogLyoKICAqIEJlY29tZUxvY2tHcm91 cExlYWRlciAtIGRlc2lnbmF0ZSBwcm9jZXNzIGFzIGxvY2sgZ3JvdXAgbGVhZGVyCiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKaW5kZXggYWI3MTM3ZDBmZmYuLmJlYzQyZjQwNjAx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs dWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9i Z3dyaXRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdl L2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL21kLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCkBAIC02MTEsOCArNjExLDggQEAgUmVnaXN0ZXJTeW5jUmVxdWVz dChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSwKIAkJaWYgKHJl dCB8fCAoIXJldCAmJiAhcmV0cnlPbkVycm9yKSkKIAkJCWJyZWFrOwogCi0JCVdhaXRMYXRj aChOVUxMLCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwgMTAsCi0JCQkJICBX QUlUX0VWRU5UX1JFR0lTVEVSX1NZTkNfUkVRVUVTVCk7CisJCVdhaXRJbnRlcnJ1cHQoMCwg V0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsIDEwLAorCQkJCQkgIFdBSVRfRVZF TlRfUkVHSVNURVJfU1lOQ19SRVFVRVNUKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCmluZGV4IGFhYzBiOTZiYmM2Li42NGZiMjFlMDAxMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNl bmRlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC01MzEsMTUgKzUzMiwxNSBAQCBQcm9j ZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpCiAJCS8qCiAJCSAqIFdlJ3Jl IGR5aW5nLiAgSWYgdGhlcmUgaXMgbm8gZGF0YSBhdmFpbGFibGUgdG8gcmVhZCwgdGhlbiBp dCdzIHNhZmUKIAkJICogKGFuZCBzYW5lKSB0byBoYW5kbGUgdGhhdCBub3cuICBJZiB3ZSBo YXZlbid0IHRyaWVkIHRvIHJlYWQgeWV0LAotCQkgKiBtYWtlIHN1cmUgdGhlIHByb2Nlc3Mg bGF0Y2ggaXMgc2V0LCBzbyB0aGF0IGlmIHRoZXJlIGlzIG5vIGRhdGEKKwkJICogbWFrZSBz dXJlIHRoZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlcmUgaXMgbm8g ZGF0YQogCQkgKiB0aGVuIHdlJ2xsIGNvbWUgYmFjayBoZXJlIGFuZCBkaWUuICBJZiB3ZSdy ZSBkb25lIHJlYWRpbmcsIGFsc28KLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNo IGlzIHNldCwgYXMgd2UgbWlnaHQndmUgdW5kZXNpcmFibHkKKwkJICogbWFrZSBzdXJlIHRo ZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5CiAJ CSAqIGNsZWFyZWQgaXQgd2hpbGUgcmVhZGluZy4KIAkJICovCiAJCWlmIChibG9ja2VkKQog CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJZWxzZQotCQkJU2V0TGF0Y2goTXlMYXRj aCk7CisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0K IAogCWVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTU2NSw5ICs1NjYsOSBAQCBQcm9jZXNzQ2xp ZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkgKiBXZSdyZSBkeWluZy4gIElm IGl0J3Mgbm90IHBvc3NpYmxlIHRvIHdyaXRlLCB0aGVuIHdlIHNob3VsZCBoYW5kbGUKIAkJ ICogdGhhdCBpbW1lZGlhdGVseSwgZWxzZSBhIHN0dWNrIGNsaWVudCBjb3VsZCBpbmRlZmlu aXRlbHkgZGVsYXkgb3VyCiAJCSAqIHJlc3BvbnNlIHRvIHRoZSBzaWduYWwuICBJZiB3ZSBo YXZlbid0IHRyaWVkIHRvIHdyaXRlIHlldCwgbWFrZQotCQkgKiBzdXJlIHRoZSBwcm9jZXNz IGxhdGNoIGlzIHNldCwgc28gdGhhdCBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKKwkJICog c3VyZSB0aGUgaW50ZXJydXB0IGZsYWcgaXMgc2V0LCBzbyB0aGF0IGlmIHRoZSB3cml0ZSB3 b3VsZCBibG9jawogCQkgKiB0aGVuIHdlJ2xsIGNvbWUgYmFjayBoZXJlIGFuZCBkaWUuICBJ ZiB3ZSdyZSBkb25lIHdyaXRpbmcsIGFsc28KLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNz IGxhdGNoIGlzIHNldCwgYXMgd2UgbWlnaHQndmUgdW5kZXNpcmFibHkKKwkJICogbWFrZSBz dXJlIHRoZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJh Ymx5CiAJCSAqIGNsZWFyZWQgaXQgd2hpbGUgd3JpdGluZy4KIAkJICovCiAJCWlmIChibG9j a2VkKQpAQCAtNTkxLDcgKzU5Miw3IEBAIFByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdChi b29sIGJsb2NrZWQpCiAJCQl9CiAJCX0KIAkJZWxzZQotCQkJU2V0TGF0Y2goTXlMYXRjaCk7 CisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0KIAog CWVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTMwMTMsMTIgKzMwMTQsMTIgQEAgZGllKFNJR05B TF9BUkdTKQogCS8qIGZvciB0aGUgY3VtdWxhdGl2ZSBzdGF0cyBzeXN0ZW0gKi8KIAlwZ1N0 YXRTZXNzaW9uRW5kQ2F1c2UgPSBESVNDT05ORUNUX0tJTExFRDsKIAotCS8qIElmIHdlJ3Jl IHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MgbGF0 Y2ggKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3 YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBpbnRlcnJ1cHQgKi8KKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJLyoKIAkgKiBJZiB3ZSdyZSBp biBzaW5nbGUgdXNlciBtb2RlLCB3ZSB3YW50IHRvIHF1aXQgaW1tZWRpYXRlbHkgLSB3ZSBj YW4ndAotCSAqIHJlbHkgb24gbGF0Y2hlcyBhcyB0aGV5IHdvdWxkbid0IHdvcmsgd2hlbiBz dGRpbi9zdGRvdXQgaXMgYSBmaWxlLgorCSAqIHJlbHkgb24gaW50ZXJydXB0cyBhcyB0aGV5 IHdvdWxkbid0IHdvcmsgd2hlbiBzdGRpbi9zdGRvdXQgaXMgYSBmaWxlLgogCSAqIFJhdGhl ciB1Z2x5LCBidXQgaXQncyB1bmxpa2VseSB0byBiZSB3b3J0aHdoaWxlIHRvIGludmVzdCBt dWNoIG1vcmUKIAkgKiBlZmZvcnQganVzdCBmb3IgdGhlIGJlbmVmaXQgb2Ygc2luZ2xlIHVz ZXIgbW9kZS4KIAkgKi8KQEAgLTMwNDIsOCArMzA0Myw4IEBAIFN0YXRlbWVudENhbmNlbEhh bmRsZXIoU0lHTkFMX0FSR1MpCiAJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CiAJfQog Ci0JLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0 aGUgcHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIElmIHdlJ3Jl IHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIGludGVycnVwdCAq LworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8q IHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGluZyBwb2ludCBleGNlcHRpb24gKi8KQEAgLTMw NjksNyArMzA3MCw3IEBAIEhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1Np Z25hbFJlYXNvbiByZWFzb24pCiAJUmVjb3ZlcnlDb25mbGljdFBlbmRpbmdSZWFzb25zW3Jl YXNvbl0gPSB0cnVlOwogCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsKIAlJbnRl cnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2ln bmFsX3NpZ3VzcjFfaGFuZGxlciAqLworCS8qIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCB3 aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggMWFhOGJiYjMwNjMuLjgzMTNhNDlmYzZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidGNvcC90Y29w cHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncm9pZHMuaCIKQEAgLTM3MywxNiArMzczLDE2IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9O X0FSR1MpCiAJZmxvYXQ4CQllbmR0aW1lOwogCiAJLyoKLQkgKiBXZSBzbGVlcCB1c2luZyBX YWl0TGF0Y2gsIHRvIGVuc3VyZSB0aGF0IHdlJ2xsIHdha2UgdXAgcHJvbXB0bHkgaWYgYW4K LQkgKiBpbXBvcnRhbnQgc2lnbmFsIChzdWNoIGFzIFNJR0FMUk0gb3IgU0lHSU5UKSBhcnJp dmVzLiAgQmVjYXVzZQotCSAqIFdhaXRMYXRjaCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlz IElOVF9NQVggbWlsbGlzZWNvbmRzLCBhbmQgdGhlIHVzZXIKLQkgKiBtaWdodCBhc2sgZm9y IG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVlcCBmb3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZCB0 aGVuCi0JICogbG9vcC4KKwkgKiBXZSBzbGVlcCB1c2luZyBXYWl0SW50ZXJydXB0LCB0byBl bnN1cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmCisJICogYW4gaW1wb3J0YW50 IHNpZ25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UK KwkgKiBXYWl0SW50ZXJydXB0J3MgdXBwZXIgbGltaXQgb2YgZGVsYXkgaXMgSU5UX01BWCBt aWxsaXNlY29uZHMsIGFuZCB0aGUKKwkgKiB1c2VyIG1pZ2h0IGFzayBmb3IgbW9yZSB0aGFu IHRoYXQsIHdlIHNsZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5kCisJICogdGhlbiBs b29wLgogCSAqCiAJICogQnkgY29tcHV0aW5nIHRoZSBpbnRlbmRlZCBzdG9wIHRpbWUgaW5p dGlhbGx5LCB3ZSBhdm9pZCBhY2N1bXVsYXRpb24gb2YKIAkgKiBleHRyYSBkZWxheSBhY3Jv c3MgbXVsdGlwbGUgc2xlZXBzLiAgVGhpcyBhbHNvIGVuc3VyZXMgd2Ugd29uJ3QgZGVsYXkK LQkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdExhdGNoIGlzIHRl cm1pbmF0ZWQgZWFybHkgYnkgYQotCSAqIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1 Y2ggYXMgU0lHSFVQLgorCSAqIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkIHRpbWUgd2hlbiBX YWl0SW50ZXJydXB0IGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkKKwkgKiBhIG5vbi1xdWVyeS1j YW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwogI2RlZmluZSBHZXROb3dG bG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCiAK QEAgLTQwMywxMSArNDAzLDExIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVs c2UKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CSBkZWxheV9tcywKLQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBkZWxheV9tcywKKwkJCQkJCQkgV0FJVF9FVkVO VF9QR19TTEVFUCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCk7CiAJfQogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3Rh bXAuYwppbmRleCBlMDBjZDNjOTY5MC4uZjNlM2NhZmMwOTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvdGltZXN0YW1wLmMKQEAgLTE3MzgsMTAgKzE3MzgsMTAgQEAgVGltZXN0YW1wRGlmZmVy ZW5jZShUaW1lc3RhbXBUeiBzdGFydF90aW1lLCBUaW1lc3RhbXBUeiBzdG9wX3RpbWUsCiAg KiBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzIC0tIGNvbnZlcnQgdGhlIGRpZmZl cmVuY2UgYmV0d2VlbiB0d28KICAqIAkJdGltZXN0YW1wcyBpbnRvIGludGVnZXIgbWlsbGlz ZWNvbmRzCiAgKgotICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBjYWxjdWxhdGUgYSB3 YWl0IHRpbWVvdXQgZm9yIFdhaXRMYXRjaCgpCisgKiBUaGlzIGlzIHR5cGljYWxseSB1c2Vk IHRvIGNhbGN1bGF0ZSBhIHdhaXQgdGltZW91dCBmb3IgV2FpdEludGVycnVwdCgpCiAgKiBv ciBhIHJlbGF0ZWQgZnVuY3Rpb24uICBUaGUgY2hvaWNlIG9mICJsb25nIiBhcyB0aGUgcmVz dWx0IHR5cGUKICAqIGlzIHRvIGhhcm1vbml6ZSB3aXRoIHRoYXQ7IGZ1cnRoZXJtb3JlLCB3 ZSBjbGFtcCB0aGUgcmVzdWx0IHRvIGF0IG1vc3QKLSAqIElOVF9NQVggbWlsbGlzZWNvbmRz LCBiZWNhdXNlIHRoYXQncyBhbGwgdGhhdCBXYWl0TGF0Y2goKSBhbGxvd3MuCisgKiBJTlRf TUFYIG1pbGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0J3MgYWxsIHRoYXQgV2FpdEludGVycnVw dCgpIGFsbG93cy4KICAqCiAgKiBXZSBleHBlY3Qgc3RhcnRfdGltZSA8PSBzdG9wX3RpbWUu ICBJZiBub3QsIHdlIHJldHVybiB6ZXJvLAogICogc2luY2UgdGhlbiB3ZSdyZSBhbHJlYWR5 IHBhc3QgdGhlIHByZXZpb3VzbHkgZGV0ZXJtaW5lZCBzdG9wX3RpbWUuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvZ2xvYmFscy5jCmluZGV4IDAzYTU0NDUxYWMyLi5jYjUzNDNkMjhjYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTUyLDE1ICs1Miw2IEBAIGJvb2wJCU15Q2Fu Y2VsS2V5VmFsaWQgPSBmYWxzZTsKIGludDMyCQlNeUNhbmNlbEtleSA9IDA7CiBpbnQJCQlN eVBNQ2hpbGRTbG90OwogCi0vKgotICogTXlMYXRjaCBwb2ludHMgdG8gdGhlIGxhdGNoIHRo YXQgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZ25hbCBoYW5kbGluZyBieSB0aGUKLSAqIGN1cnJl bnQgcHJvY2Vzcy4gSXQgd2lsbCBlaXRoZXIgcG9pbnQgdG8gYSBwcm9jZXNzIGxvY2FsIGxh dGNoIGlmIHRoZQotICogY3VycmVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgYSBQR1BST0Mg ZW50cnkgaW4gdGhhdCBtb21lbnQsIG9yIHRvCi0gKiBQR1BST0MtPnByb2NMYXRjaCBpZiBp dCBoYXMuIFRodXMgaXQgY2FuIGFsd2F5cyBiZSB1c2VkIGluIHNpZ25hbCBoYW5kbGVycywK LSAqIHdpdGhvdXQgY2hlY2tpbmcgZm9yIGl0cyBleGlzdGVuY2UuCi0gKi8KLXN0cnVjdCBM YXRjaCAqTXlMYXRjaDsKLQogLyoKICAqIERhdGFEaXIgaXMgdGhlIGFic29sdXRlIHBhdGgg dG8gdGhlIHRvcCBsZXZlbCBvZiB0aGUgUEdEQVRBIGRpcmVjdG9yeSB0cmVlLgogICogRXhj ZXB0IGR1cmluZyBlYXJseSBzdGFydHVwLCB0aGlzIGlzIGFsc28gdGhlIHNlcnZlcidzIHdv cmtpbmcgZGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9t aXNjaW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IGVm NjBmNDFiOGNlLi40YWFjNWU2NmRjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YwpAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTY1LDggKzY1LDYgQEAgQmFja2VuZFR5cGUgTXlC YWNrZW5kVHlwZTsKIC8qIExpc3Qgb2YgbG9jayBmaWxlcyB0byBiZSByZW1vdmVkIGF0IHBy b2MgZXhpdCAqLwogc3RhdGljIExpc3QgKmxvY2tfZmlsZXMgPSBOSUw7CiAKLXN0YXRpYyBM YXRjaCBMb2NhbExhdGNoRGF0YTsKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCWlnbm9yaW5nIHN5 c3RlbSBpbmRleGVzIHN1cHBvcnQgc3R1ZmYKICAqCkBAIC0xMzIsMTAgKzEzMCw5IEBAIElu aXRQb3N0bWFzdGVyQ2hpbGQodm9pZCkKIAlwcWluaXRtYXNrKCk7CiAjZW5kaWYKIAotCS8q IEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBsYXRjaCBzdXBwb3J0ICovCi0JSW5pdGlhbGl6 ZUxhdGNoU3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgpOwotCUluaXRpYWxp emVMYXRjaFdhaXRTZXQoKTsKKwkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgaW50ZXJy dXB0IHN1cHBvcnQgKi8KKwlJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOworCUluaXRp YWxpemVJbnRlcnJ1cHRXYWl0U2V0KCk7CiAKIAkvKgogCSAqIElmIHBvc3NpYmxlLCBtYWtl IHRoaXMgcHJvY2VzcyBhIGdyb3VwIGxlYWRlciwgc28gdGhhdCB0aGUgcG9zdG1hc3RlcgpA QCAtMTkzLDEwICsxOTAsOSBAQCBJbml0U3RhbmRhbG9uZVByb2Nlc3MoY29uc3QgY2hhciAq YXJndjApCiAKIAlJbml0UHJvY2Vzc0dsb2JhbHMoKTsKIAotCS8qIEluaXRpYWxpemUgcHJv Y2Vzcy1sb2NhbCBsYXRjaCBzdXBwb3J0ICovCi0JSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCgp OwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgpOwotCUluaXRpYWxpemVMYXRjaFdhaXRTZXQo KTsKKwkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQgKi8K KwlJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOworCUluaXRpYWxpemVJbnRlcnJ1cHRX YWl0U2V0KCk7CiAKIAkvKgogCSAqIEZvciBjb25zaXN0ZW5jeSB3aXRoIEluaXRQb3N0bWFz dGVyQ2hpbGQsIGluaXRpYWxpemUgc2lnbmFsIG1hc2sgaGVyZS4KQEAgLTIxNyw0OCArMjEz LDYgQEAgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNoYXIgKmFyZ3YwKQogCQlnZXRf cGtnbGliX3BhdGgobXlfZXhlY19wYXRoLCBwa2dsaWJfcGF0aCk7CiB9CiAKLXZvaWQKLVN3 aXRjaFRvU2hhcmVkTGF0Y2godm9pZCkKLXsKLQlBc3NlcnQoTXlMYXRjaCA9PSAmTG9jYWxM YXRjaERhdGEpOwotCUFzc2VydChNeVByb2MgIT0gTlVMTCk7Ci0KLQlNeUxhdGNoID0gJk15 UHJvYy0+cHJvY0xhdGNoOwotCi0JaWYgKEZlQmVXYWl0U2V0KQotCQlNb2RpZnlXYWl0RXZl bnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0TGF0Y2hQb3MsIFdMX0xBVENIX1NFVCwKLQkJ CQkJCU15TGF0Y2gpOwotCi0JLyoKLQkgKiBTZXQgdGhlIHNoYXJlZCBsYXRjaCBhcyB0aGUg bG9jYWwgb25lIG1pZ2h0IGhhdmUgYmVlbiBzZXQuIFRoaXMKLQkgKiBzaG91bGRuJ3Qgbm9y bWFsbHkgYmUgbmVjZXNzYXJ5IGFzIGNvZGUgaXMgc3VwcG9zZWQgdG8gY2hlY2sgdGhlCi0J ICogY29uZGl0aW9uIGJlZm9yZSB3YWl0aW5nIGZvciB0aGUgbGF0Y2gsIGJ1dCBhIGJpdCBj YXJlIGNhbid0IGh1cnQuCi0JICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7Ci19Ci0KLXZvaWQK LUluaXRQcm9jZXNzTG9jYWxMYXRjaCh2b2lkKQotewotCU15TGF0Y2ggPSAmTG9jYWxMYXRj aERhdGE7Ci0JSW5pdExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lkCi1Td2l0Y2hCYWNrVG9M b2NhbExhdGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggIT0gJkxvY2FsTGF0Y2hEYXRh KTsKLQlBc3NlcnQoTXlQcm9jICE9IE5VTEwgJiYgTXlMYXRjaCA9PSAmTXlQcm9jLT5wcm9j TGF0Y2gpOwotCi0JTXlMYXRjaCA9ICZMb2NhbExhdGNoRGF0YTsKLQotCWlmIChGZUJlV2Fp dFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldExhdGNo UG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJCQlNeUxhdGNoKTsKLQotCVNldExhdGNoKE15TGF0 Y2gpOwotfQotCiBjb25zdCBjaGFyICoKIEdldEJhY2tlbmRUeXBlRGVzYyhCYWNrZW5kVHlw ZSBiYWNrZW5kVHlwZSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv cG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBh MDI0YjExNTFkMC4uZDRkN2UwNGRiNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCkBAIC0xMzcxLDcgKzEzNzIsNyBAQCBUcmFuc2FjdGlvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEz NzksNyArMTM4MCw3IEBAIElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0 cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIHN0YXRp YyB2b2lkCkBAIC0xMzg3LDcgKzEzODgsNyBAQCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEz OTUsNyArMTM5Niw3IEBAIElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7 CiAJSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDAzLDcg KzE0MDQsNyBAQCBDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJQ2hlY2tD bGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvdGltZW91dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKaW5k ZXggZWM3ZTU3MDkyMGEuLjU2YzlmODc2NDhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVv dXQuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAj aW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKQEAgLTM3MSwxMCArMzcxLDEwIEBAIGhh bmRsZV9zaWdfYWxhcm0oU0lHTkFMX0FSR1MpCiAJSE9MRF9JTlRFUlJVUFRTKCk7CiAKIAkv KgotCSAqIFNJR0FMUk0gaXMgYWx3YXlzIGNhdXNlIGZvciB3YWtpbmcgYW55dGhpbmcgd2Fp dGluZyBvbiB0aGUgcHJvY2VzcwotCSAqIGxhdGNoLgorCSAqIFNJR0FMUk0gaXMgYWx3YXlz IGNhdXNlIGZvciB3YWtpbmcgYW55dGhpbmcgd2FpdGluZyBvbgorCSAqIElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUC4KIAkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJLyoKIAkgKiBBbHdheXMgcmVz ZXQgc2lnbmFsX3BlbmRpbmcsIGV2ZW4gaWYgIWFsYXJtX2VuYWJsZWQsIHNpbmNlIGluZGVl ZCBubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCBiZGU1NDMyNmM2Ni4uMTJkOWFkNjNk ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBIYW5k bGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CiAJTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNo IHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyogSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQIHdpbGwgYmUgcmFpc2VkIGJ5IHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyICovCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IDY5 ZmZlNTQ5OGY5Li43ZGFlYzdlZjgzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKQEAgLTE0 LDYgKzE0LDggQEAKICNpZm5kZWYgUEFSQUxMRUxfSAogI2RlZmluZSBQQVJBTExFTF9ICiAK KyNpbmNsdWRlIDxzaWduYWwuaD4KKwogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgog I2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIu aCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMu aCBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaAppbmRleCA0NmE5 MGRmYjAyMi4uY2EwYWY0NjRhNDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLWJlLWZlLWhlbHBlcnMuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1m ZS1oZWxwZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2 ZW50LmgiCiAKQEAgLTE3Nyw4ICsxNzcsOCBAQCBsaWJwcXNydl9jb25uZWN0X2ludGVybmFs KFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAkJcmV0dXJuOwogCiAJ LyoKLQkgKiBXYWl0TGF0Y2hPclNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBoYW5k bGUgdGhhdCBjYXNlIGhlcmUgaW5zdGVhZAotCSAqIG9mIHJlcXVpcmluZyBhbGwgY2FsbGVy cyB0byBkbyBzby4KKwkgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSBjYW4gY29uY2VpdmFi bHkgZmFpbCwgaGFuZGxlIHRoYXQgY2FzZSBoZXJlCisJICogaW5zdGVhZCBvZiByZXF1aXJp bmcgYWxsIGNhbGxlcnMgdG8gZG8gc28uCiAJICovCiAJUEdfVFJZKCk7CiAJewpAQCAtMjA5 LDE2ICsyMDksMTYgQEAgbGlicHFzcnZfY29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4s IHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCQllbHNlCiAJCQkJaW9fZmxhZyA9IFdMX1NP Q0tFVF9XUklURUFCTEU7CiAKLQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwK LQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8IGlvX2Zs YWcsCi0JCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICAwLAotCQkJCQkJ CQkgICB3YWl0X2V2ZW50X2luZm8pOworCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCQkgICBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKKwkJCQkJCQkJCSAgIFBRc29j a2V0KGNvbm4pLAorCQkJCQkJCQkJICAgMCwKKwkJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5m byk7CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwotCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQorCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJewotCQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJfQogCkBAIC0zNDEsMTcgKzM0MSwx NyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZl bnRfaW5mbykKIAl7CiAJCWludAkJCXJjOwogCi0JCXJjID0gV2FpdExhdGNoT3JTb2NrZXQo TXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VU IHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCi0JCQkJCQkJICAgUFFzb2NrZXQo Y29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOworCQly YyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8CisJ CQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKKwkJCQkJCQkJICAgUFFzb2NrZXQoY29u biksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJ LyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJj ICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIGxpYnBxc3J2X2NhbmNl bChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUpCiAJCQlQb3N0Z3Jlc1BvbGxp bmdTdGF0dXNUeXBlIHBvbGxyZXM7CiAJCQlUaW1lc3RhbXBUeiBub3c7CiAJCQlsb25nCQlj dXJfdGltZW91dDsKLQkJCWludAkJCXdhaXRFdmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJCWludAkJCXdhaXRFdmVudHMgPSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAogCQkJ cG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxfY29ubik7CiAJCQlpZiAocG9sbHJlcyA9 PSBQR1JFU19QT0xMSU5HX09LKQpAQCAtNDM2LDEwICs0MzYsMTEgQEAgbGlicHFzcnZfY2Fu Y2VsKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCX0KIAogCQkJLyog U2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCVdhaXRMYXRjaE9y U29ja2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25u KSwKLQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CisJCQlXYWl0SW50 ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdhaXRFdmVu dHMsCisJCQkJCQkJCSAgUFFjYW5jZWxTb2NrZXQoY2FuY2VsX2Nvbm4pLAorCQkJCQkJCQkg IGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CiAKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9saWJwcS9saWJwcS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAppbmRleCBkODI1 YjRjN2I2Yy4uMWM3OTdhM2RlNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaApAQCAtMTgsNyArMTgsNyBA QAogCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS1iZS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdl L3dhaXRldmVudHNldC5oIgogCiAKIC8qCkBAIC02MSw3ICs2MSw3IEBAIGV4dGVybiBjb25z dCBQR0RMTElNUE9SVCBQUWNvbW1NZXRob2RzICpQcUNvbW1NZXRob2RzOwogZXh0ZXJuIFBH RExMSU1QT1JUIFdhaXRFdmVudFNldCAqRmVCZVdhaXRTZXQ7CiAKICNkZWZpbmUgRmVCZVdh aXRTZXRTb2NrZXRQb3MgMAotI2RlZmluZSBGZUJlV2FpdFNldExhdGNoUG9zIDEKKyNkZWZp bmUgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MgMQogI2RlZmluZSBGZUJlV2FpdFNldE5FdmVu dHMgMwogCiBleHRlcm4gaW50CUxpc3RlblNlcnZlclBvcnQoaW50IGZhbWlseSwgY29uc3Qg Y2hhciAqaG9zdE5hbWUsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGUyNmQxMDhhNDcwLi4xMTcwMTQ4Njhi ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKQEAgLTE5MCw3ICsxOTAsNiBAQCBleHRlcm4gUEdETExJTVBPUlQg aW50IE15UHJvY1BpZDsKIGV4dGVybiBQR0RMTElNUE9SVCBwZ190aW1lX3QgTXlTdGFydFRp bWU7CiBleHRlcm4gUEdETExJTVBPUlQgVGltZXN0YW1wVHogTXlTdGFydFRpbWVzdGFtcDsK IGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgUG9ydCAqTXlQcm9jUG9ydDsKLWV4dGVybiBQ R0RMTElNUE9SVCBzdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7CiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBNeUNhbmNlbEtleVZhbGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludDMyIE15Q2Fu Y2VsS2V5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVBNQ2hpbGRTbG90OwpAQCAtMzE3 LDkgKzMxNiw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpEYXRhYmFzZVBhdGg7CiAv KiBub3cgaW4gdXRpbHMvaW5pdC9taXNjaW5pdC5jICovCiBleHRlcm4gdm9pZCBJbml0UG9z dG1hc3RlckNoaWxkKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdFN0YW5kYWxvbmVQcm9jZXNz KGNvbnN0IGNoYXIgKmFyZ3YwKTsKLWV4dGVybiB2b2lkIEluaXRQcm9jZXNzTG9jYWxMYXRj aCh2b2lkKTsKLWV4dGVybiB2b2lkIFN3aXRjaFRvU2hhcmVkTGF0Y2godm9pZCk7Ci1leHRl cm4gdm9pZCBTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKHZvaWQpOwogCiAvKgogICogTXlCYWNr ZW5kVHlwZSBpbmRpY2F0ZXMgd2hhdCBraW5kIG9mIGEgYmFja2VuZCB0aGlzIGlzLgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvaW50ZXJydXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjViY2M5ZjI0MDdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9pbnRlcnJ1cHQuaApAQCAtMCwwICsxLDE1OSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogaW50ZXJydXB0LmgKKyAqCSAgSW50ZXJydXB0IGhhbmRsaW5nIHJvdXRp bmVzLgorICoKKyAqICJJbnRlcnJ1cHRzIiBhcmUgYSBzZXQgb2YgZmxhZ3MgdGhhdCByZXBy ZXNlbnQgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBiZQorICogaGFuZGxlZCBhdCBhIGxhdGVy IHRpbWUuICBUaGV5IGFyZSByb3VnaGx5IGFuYWxvZ291cyB0byBVbml4IHNpZ25hbHMsCisg KiBleGNlcHQgdGhhdCB0aGV5IGFyZSBoYW5kbGVkIGNvb3BlcmF0aXZlbHkgYnkgY2hlY2tp bmcgZm9yIHRoZW0gYXQgbWFueQorICogcG9pbnRzIGluIHRoZSBjb2RlLgorICoKKyAqIElu dGVycnVwdCBmbGFncyBjYW4gYmUgInJhaXNlZCIgc3luY2hyb25vdXNseSBieSBjb2RlIHRo YXQgd2FudHMgdG8gZGVmZXIKKyAqIGFuIGFjdGlvbiwgb3IgYXN5bmNocm9ub3VzbHkgYnkg dGltZXIgc2lnbmFsIGhhbmRsZXJzLCBvdGhlciBzaWduYWwKKyAqIGhhbmRsZXJzIG9yICJz ZW50IiBieSBvdGhlciBiYWNrZW5kcyBzZXR0aW5nIHRoZW0gZGlyZWN0bHkuCisgKgorICog TW9zdCBjb2RlIGN1cnJlbnRseSBkZWFscyB3aXRoIHRoZSBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAgaW50ZXJydXB0LiBJdAorICogaXMgcmFpc2VkIGJ5IGFueSBvZiB0aGUgZXZlbnRz IGNoZWNrZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMpLCBsaWtlIHF1ZXJ5CisgKiBjYW5j ZWxsYXRpb24gb3IgaWRsZSBzZXNzaW9uIHRpbWVvdXQuIFdlbGwgYmVoYXZlZCBiYWNrZW5k IGNvZGUgcGVyZm9ybXMKKyAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5 IGluIGxvbmcgY29tcHV0YXRpb25zLCBhbmQgc2hvdWxkIG5ldmVyCisgKiBzbGVlcCB1c2lu ZyBtZWNoYW5pc21zIG90aGVyIHRoYW4gdGhlIFdhaXRFdmVudFNldCBtZWNoYW5pc20gb3Ig dGhlIG1vcmUKKyAqIGNvbnZlbmllbnQgV2FpdEludGVycnVwdC9XYWl0U29ja2VyT3JJbnRl cnJ1cHQgZnVuY3Rpb25zIChleGNlcHQgZm9yCisgKiBib3VuZGVkIHNob3J0IHBlcmlvZHMs IGVnIExXTG9jayB3YWl0cyksIHNvIHRoZXkgc2hvdWxkIHJlYWN0IGluIGdvb2QgdGltZS4K KyAqCisgKiBUaGUgInN0YW5kYXJkIiBzZXQgb2YgaW50ZXJydXB0cyBpcyBoYW5kbGVkIGJ5 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGFuZAorICogY29uc2lzdHMgb2YgdGFza3MgdGhh dCBhcmUgc2FmZSB0byBwZXJmb3JtIGF0IG1vc3QgdGltZXMuICBUaGV5IGNhbiBiZQorICog c3VwcHJlc3NlZCBieSBIT0xEX0lOVEVSUlVQVFMoKS9SRVNVTUVfSU5URVJSVVBUUygpLgor ICoKKyAqCisgKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIHVz aW5nIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCBpczoKKyAqCisgKiBmb3IgKDs7KQorICog eworICoJICAgQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKKyAq CSAgIGlmICh3b3JrIHRvIGRvKQorICoJCSAgIERvIFN0dWZmKCk7CisgKgkgICBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCAuLi4pOworICogfQorICoK KyAqIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hl Y2tpbmcgaWYgdGhlcmUncyB3b3JrIHRvCisgKiBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25l IHNldHMgdGhlIGludGVycnVwdCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCisgKiBDbGVh ckludGVycnVwdCgpIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBpbmNv cnJlY3RseSBibG9jay4KKyAqCisgKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJuIGxv b2tzIGxpa2U6CisgKgorICogZm9yICg7OykKKyAqIHsKKyAqCSAgIGlmICh3b3JrIHRvIGRv KQorICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBpZiBz b21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKKyAqCSAgIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAsIC4uLik7CisgKgkgICBDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOworICogfQorICoKKyAqIFRoaXMgaXMgdXNlZnVsIHRv IHJlZHVjZSBpbnRlcnJ1cHQgdHJhZmZpYyBpZiBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGxv b3AncworICogdGVybWluYXRpb24gY29uZGl0aW9uIHdpbGwgb2Z0ZW4gYmUgc2F0aXNmaWVk IGluIHRoZSBmaXJzdCBpdGVyYXRpb247CisgKiB0aGUgY29zdCBpcyBhbiBleHRyYSBsb29w IGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tpbmcgd2hlbiBpdCBpcyBub3QuCisgKiBXaGF0IG11 c3QgYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3MgZm9yIGFzeW5jaHJvbm91cyBl dmVudHMgYWZ0ZXIKKyAqIFdhaXRJbnRlcnJ1cHQgYW5kIGJlZm9yZSBDbGVhckludGVycnVw dCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uCisgKgorICogVG8gd2FrZSB1 cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21l dGhpbmcgZWxzZQorICogdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdv cmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAorICogU2VuZEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFUCkgKmFmdGVyKiB0aGF0LiBTZW5kSW50ZXJydXB0IGlzCisgKiBkZXNp Z25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgc2V0 LiBJbiBtb3JlIGNvbXBsZXgKKyAqIHNjZW5hcmlvcyB3aXRoIG5lc3RlZCBsb29wcyB0aGF0 IGNhbiBjb25zdW1lIGRpZmZlcmVudCBldmVudHMsIHlvdSBjYW4KKyAqIGRlZmluZSB5b3Vy IG93biBJTlRFUlJVUFRfKiBmbGFnIGluc3RlYWQgb2YgcmVseWluZyBvbgorICogSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW5jbHVkZS9zdG9y YWdlL2ludGVycnVwdC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lm bmRlZiBTVE9SQUdFX0lOVEVSUlVQVF9ICisjZGVmaW5lIFNUT1JBR0VfSU5URVJSVVBUX0gK KworI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251 bWJlci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCisKKyNpbmNsdWRl IDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKk15 UGVuZGluZ0ludGVycnVwdHM7CitleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQz MiAqTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzOworCit0eXBlZGVmIGVudW0KK3sKKwkv KgorCSAqIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCBpcyBtdWx0aXBsZXhlZCBmb3IgbWFu eSByZWFzb25zLCBsaWtlIHF1ZXJ5CisJICogY2FuY2VsbGF0aW9uIHRlcm1pbmF0aW9uIHJl cXVlc3RzLCByZWNvdmVyeSBjb25mbGljdHMsIGFuZCBjb25maWcKKwkgKiByZWxvYWQgcmVx dWVzdHMuICBVcG9uIHJlY2VpdmluZyBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHlvdSBz aG91bGQKKwkgKiBjYWxsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJvY2VzcyB0aG9z ZSByZXF1ZXN0cy4gIEl0IGlzIGFsc28gdXNlZAorCSAqIGZvciB2YXJpb3VzIG90aGVyIGNv bnRleHQtZGVwZW5kZW50IHB1cnBvc2VzLCBidXQgbm90ZSB0aGF0IGlmIGl0J3MKKwkgKiB1 c2VkIHRvIHdha2UgdXAgZm9yIG90aGVyIHJlYXNvbnMsIHlvdSBtdXN0IHN0aWxsIGNhbGwK KwkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpIG9uY2UgcGVyIGl0ZXJhdGlvbi4KKwkgKi8K KwlJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisKKwkvKgorCSAqIElOVEVSUlVQVF9SRUNP VkVSWV9XQUtFVVAgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVs bAorCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCByZXBsYXkuIEl0J3Mgc2Vu dCBieSBXQUwgcmVjZWl2ZXIgd2hlbgorCSAqIG1vcmUgV0FMIGFycml2ZXMsIG9yIHdoZW4g cHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KKwkgKi8KKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09O VElOVUUsCit9IEludGVycnVwdFR5cGU7CisKKy8qCisgKiBUZXN0IGFuIGludGVycnVwdCBm bGFnLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVycnVwdElzUGVuZGluZyhJbnRl cnJ1cHRUeXBlIHJlYXNvbikKK3sKKwlyZXR1cm4gKHBnX2F0b21pY19yZWFkX3UzMihNeVBl bmRpbmdJbnRlcnJ1cHRzKSAmICgxIDw8IHJlYXNvbikpICE9IDA7Cit9CisKKy8qCisgKiBU ZXN0IGFuIGludGVycnVwdCBmbGFnLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVy cnVwdHNQZW5kaW5nKHVpbnQzMiBtYXNrKQoreworCXJldHVybiAocGdfYXRvbWljX3JlYWRf dTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgKG1hc2spKSAhPSAwOworfQorCisvKgorICog Q2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorQ2xl YXJJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJcGdfYXRvbWljX2ZldGNo X2FuZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywgfigxIDw8IHJlYXNvbikpOworfQorCisv KgorICogVGVzdCBhbmQgY2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorQ29uc3VtZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sK KwlpZiAobGlrZWx5KCFJbnRlcnJ1cHRJc1BlbmRpbmcocmVhc29uKSkpCisJCXJldHVybiBm YWxzZTsKKworCUNsZWFySW50ZXJydXB0KHJlYXNvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworZXh0ZXJuIHZvaWQgUmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pOwor ZXh0ZXJuIHZvaWQgU2VuZEludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbiwgUHJvY051 bWJlciBwZ3Byb2Nubyk7CitleHRlcm4gaW50CVdhaXRJbnRlcnJ1cHQodWludDMyIGludGVy cnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCisJCQkJCQkgIHVpbnQz MiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0T3JTb2NrZXQo dWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAor CQkJCQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRl cm4gdm9pZCBTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIFN3 aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIEluaXRpYWxpemVJ bnRlcnJ1cHRXYWl0U2V0KHZvaWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvbGF0Y2guaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxOTRkNTM2ZjAuLjAwMDAwMDAwMDAwCi0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAorKysgL2Rldi9udWxsCkBAIC0xLDE5 NiArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBsYXRjaC5oCi0gKgkg IFJvdXRpbmVzIGZvciBpbnRlcnByb2Nlc3MgbGF0Y2hlcwotICoKLSAqIEEgbGF0Y2ggaXMg YSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJhdGlvbnMgdGhhdCBsZXQgcHJvY2Vzc2Vz IHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEgbGF0Y2ggY2FuIGJlIHNldCBmcm9tIGFu b3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAqIGhhbmRsZXIgd2l0aGluIHRoZSBzYW1l IHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGludGVyZmFjZSBpcyBhIHJlbGlhYmxlIHJl cGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRlcm4gb2YKLSAqIHVzaW5nIHBnX3VzbGVl cCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcywgd2hlcmUg dGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJpYWJsZS4gQmVjYXVzZSBv biBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21pbmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJy dXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQKLSAqIGRvZXMgdGhl cmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgc2lnbmFsIGFycml2ZXMganVzdCBiZWZv cmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhlIGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVy aW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xsIHRoZSBmbGFnIHZhcmlhYmxlLiBUaGUg cHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZlbnRlZCB0byBzb2x2ZQotICogdGhpcyBw cm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxlIGVub3VnaC4gTGF0Y2hlcyBhcmUgZGVz aWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zLCBhbGxvd2luZyB5b3Ug dG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAotICogZW5zdXJpbmcgcXVpY2sgcmVzcG9u c2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KLSAqCi0gKiBUaGVyZSBhcmUg dHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFuZCBzaGFyZWQuIEEgbG9jYWwgbGF0Y2gg aXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRjaCwgYW5kIGNhbiBvbmx5IGJlIHNldCBm cm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxvY2FsIGxhdGNoIGNhbiBiZSB1c2VkIHRv IHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwgYnkgY2FsbGluZwotICogU2V0TGF0Y2gg aW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJlZCBsYXRjaCByZXNpZGVzIGluIHNoYXJl ZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0aWFsaXplZCBhdCBwb3N0bWFzdGVyIHN0 YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZvcmUKLSAqIGEgc2hhcmVkIGxhdGNoIGNh biBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgcHJvY2Vzcwot ICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJvY2VzcyBvd25pbmcgdGhlIGxhdGNoIGNh biB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9jZXNzIGNhbiBzZXQgaXQuCi0gKgotICog VGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlvbnMgb24gYSBsYXRjaDoKLSAqCi0gKiBT ZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICogUmVzZXRMYXRjaAktIENsZWFycyB0aGUg bGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBhZ2FpbgotICogV2FpdExhdGNoCS0gV2Fp dHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0Ci0gKgotICogV2FpdExhdGNoIGluY2x1 ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQK LSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBh IHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2VzIHRvIHdha2Ug dXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4KLSAqIFNlZSBsYXRjaC5jIGZv ciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4K LSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIGlzOgot ICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBSZXNldExhdGNoKCk7Ci0gKgkgICBpZiAo d29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOwotICoJICAgV2FpdExhdGNoKCk7Ci0g KiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8gcmVzZXQgdGhlIGxhdGNoICpiZWZvcmUq IGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwotICogZG8uIE90aGVyd2lzZSwgaWYgc29t ZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCi0gKiBSZXNl dExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBpbmNvcnJlY3Rs eSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJuIGxvb2tzIGxp a2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAqCSAgIGlmICh3b3JrIHRvIGRvKQotICoJ CSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBpZiBzb21lIGNv bmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRMYXRjaCgpOwotICoJICAgUmVzZXRMYXRj aCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNlZnVsIHRvIHJlZHVjZSBsYXRjaCB0cmFm ZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCi0gKiB0ZXJtaW5hdGlvbiBj b25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlv bjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0aW9uIGJlZm9yZSBibG9j a2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQgbXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNp bmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3VzIGV2ZW50cyBhZnRlcgotICogV2FpdExh dGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25k aXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBz ZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcKLSAqIGVsc2UgdGhhdCB0aGUgd2FpdCBs b29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAotICog U2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRjaCBpcyBkZXNpZ25lZCB0byByZXR1cm4g cXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFscmVhZHkgc2V0LgotICoKLSAqIE9uIHNv bWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVycnVwdCB0aGUgbGF0Y2ggd2Fp dCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMuICBUaGVyZWZvcmUsIGl0IGlzIGNyaXRp Y2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQKLSAqIGlzIG1lYW50IHRvIHRlcm1p bmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNldExhdGNoLgotICoKLSAqIE5vdGUgdGhh dCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBHUFJPQy5wcm9jTGF0Y2gpIGlzIGdlbmVy YWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9jIHNoYXJlZCBsYXRjaCBmb3Igc2lnbmFs aW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlzIGlzCi0gKiBiZWNhdXNlIGdlbmVyaWMg c2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRMYXRjaCBvbiB0aGUgcHJvY2VzcyBsYXRj aAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNoIG90aGVyIHRoYW4gdGhlIHByb2Nlc3Mg bGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0gKiB1c2Ugb2YgYW55IGdlbmVyaWMgaGFu ZGxlci4KLSAqCi0gKgotICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3YWl0IGZvciBsYXRj aGVzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQotICogcG9zdG1hc3RlciBk eWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBzZXZlcmFsIHNvY2tldHMgY3VycmVudGx5 IC0gYXQgdGhlCi0gKiBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBhIGxv bmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAqIGVmZmljaWVudCB0aGFuIHVzaW5nIFdh aXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4KLSAqCi0gKgotICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0 Y2guaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0jaWZuZGVmIExBVENIX0gK LSNkZWZpbmUgTEFUQ0hfSAotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLSNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgotCi0vKgotICogTGF0Y2ggc3RydWN0dXJlIHNob3VsZCBiZSB0 cmVhdGVkIGFzIG9wYXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCi0gKiB0aGUgcHVi bGljIGZ1bmN0aW9ucy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVtYmVkZGluZyBM YXRjaGVzIGFzCi0gKiBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3RzLgotICovCi10eXBlZGVmIHN0 cnVjdCBMYXRjaAotewotCXNpZ19hdG9taWNfdCBpc19zZXQ7Ci0Jc2lnX2F0b21pY190IG1h eWJlX3NsZWVwaW5nOwotCWJvb2wJCWlzX3NoYXJlZDsKLQlpbnQJCQlvd25lcl9waWQ7Ci0j aWZkZWYgV0lOMzIKLQlIQU5ETEUJCWV2ZW50OwotI2VuZGlmCi19IExhdGNoOwotCi0vKgot ICogQml0bWFza3MgZm9yIGV2ZW50cyB0aGF0IG1heSB3YWtlLXVwIFdhaXRMYXRjaCgpLCBX YWl0TGF0Y2hPclNvY2tldCgpLCBvcgotICogV2FpdEV2ZW50U2V0V2FpdCgpLgotICovCi0j ZGVmaW5lIFdMX0xBVENIX1NFVAkJICgxIDw8IDApCi0jZGVmaW5lIFdMX1NPQ0tFVF9SRUFE QUJMRQkgKDEgPDwgMSkKLSNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikK LSNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNl dFdhaXQoKSAqLwotI2RlZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0KQotI2Rl ZmluZSBXTF9FWElUX09OX1BNX0RFQVRICSAoMSA8PCA1KQotI2lmZGVmIFdJTjMyCi0jZGVm aW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgICgxIDw8IDYpCi0jZWxzZQotLyogYXZvaWQgaGF2 aW5nIHRvIGRlYWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5nIGl0ICov Ci0jZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFCTEUKLSNl bmRpZgotI2RlZmluZSBXTF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKLSNpZmRlZiBXSU4z MgotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCSAoMSA8PCA4KQotI2Vsc2UKLS8qIGF2b2lk IGhhdmluZyB0byBkZWFsIHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVpcmluZyBp dCAqLwotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJMRQotI2Vu ZGlmCi0jZGVmaW5lIFdMX1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxFIHwgXAot CQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQ09O TkVDVEVEIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAotCQkJCQkJCSBXTF9T T0NLRVRfQ0xPU0VEKQotCi10eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKLXsKLQlpbnQJCQlw b3M7CQkJLyogcG9zaXRpb24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJlICovCi0JdWlu dDMyCQlldmVudHM7CQkJLyogdHJpZ2dlcmVkIGV2ZW50cyAqLwotCXBnc29ja2V0CWZkOwkJ CQkvKiBzb2NrZXQgZmQgYXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCi0Jdm9pZAkgICAqdXNl cl9kYXRhOwkJLyogcG9pbnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRUb1NldCAqLwot I2lmZGVmIFdJTjMyCi0JYm9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2YgdGhlIGV2ZW50 IHJlcXVpcmVkPyAqLwotI2VuZGlmCi19IFdhaXRFdmVudDsKLQotLyogZm9yd2FyZCBkZWNs YXJhdGlvbiB0byBhdm9pZCBleHBvc2luZyBsYXRjaC5jIGltcGxlbWVudGF0aW9uIGRldGFp bHMgKi8KLXR5cGVkZWYgc3RydWN0IFdhaXRFdmVudFNldCBXYWl0RXZlbnRTZXQ7Ci0KLS8q Ci0gKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbGF0Y2guYwotICovCi1leHRlcm4g dm9pZCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5pdExh dGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBJbml0U2hhcmVkTGF0Y2goTGF0Y2gg KmxhdGNoKTsKLWV4dGVybiB2b2lkIE93bkxhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4g dm9pZCBEaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgU2V0TGF0Y2go TGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKTsK LWV4dGVybiB2b2lkIFNodXRkb3duTGF0Y2hTdXBwb3J0KHZvaWQpOwotCi1leHRlcm4gV2Fp dEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwg aW50IG5ldmVudHMpOwotZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRT ZXQgKnNldCk7Ci1leHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRF dmVudFNldCAqc2V0KTsKLWV4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50 U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLAotCQkJCQkJCSAgTGF0Y2gg KmxhdGNoLCB2b2lkICp1c2VyX2RhdGEpOwotZXh0ZXJuIHZvaWQgTW9kaWZ5V2FpdEV2ZW50 KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0 Y2gpOwotCi1leHRlcm4gaW50CVdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQs IGxvbmcgdGltZW91dCwKLQkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9ldmVudHMsIGlu dCBuZXZlbnRzLAotCQkJCQkJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBp bnQJV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91 dCwKLQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBpbnQJV2FpdExh dGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywKLQkJCQkJCQkgIHBn c29ja2V0IHNvY2ssIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1l eHRlcm4gdm9pZCBJbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpOwotZXh0ZXJuIGludAlH ZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0RXZlbnRTZXQgKnNldCk7Ci1leHRlcm4g Ym9vbCBXYWl0RXZlbnRTZXRDYW5SZXBvcnRDbG9zZWQodm9pZCk7Ci0KLSNlbmRpZgkJCQkJ CQkvKiBMQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Mu aCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDVhM2RkNWQyZDQwLi42MDYw YjU3YTBhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRl ICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1 ZGUgImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NlbWEuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NsaXN0X3R5cGVzLmgiCkBAIC0xNzIsOSArMTcxLDYgQEAgc3Ry dWN0IFBHUFJPQwogCVBHU2VtYXBob3JlIHNlbTsJCQkvKiBPTkUgc2VtYXBob3JlIHRvIHNs ZWVwIG9uICovCiAJUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1czsKIAotCUxhdGNoCQlwcm9j TGF0Y2g7CQkvKiBnZW5lcmljIGxhdGNoIGZvciBwcm9jZXNzICovCi0KLQogCVRyYW5zYWN0 aW9uSWQgeGlkOwkJCS8qIGlkIG9mIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBjdXJyZW50bHkg YmVpbmcKIAkJCQkJCQkJICogZXhlY3V0ZWQgYnkgdGhpcyBwcm9jLCBpZiBydW5uaW5nIGFu ZCBYSUQKIAkJCQkJCQkJICogaXMgYXNzaWduZWQ7IGVsc2UgSW52YWxpZFRyYW5zYWN0aW9u SWQuCkBAIC0zMTAsNiArMzA2LDE0IEBAIHN0cnVjdCBQR1BST0MKIAlQR1BST0MJICAgKmxv Y2tHcm91cExlYWRlcjsJLyogbG9jayBncm91cCBsZWFkZXIsIGlmIEknbSBhIG1lbWJlciAq LwogCWRsaXN0X2hlYWQJbG9ja0dyb3VwTWVtYmVyczsJLyogbGlzdCBvZiBtZW1iZXJzLCBp ZiBJJ20gYSBsZWFkZXIgKi8KIAlkbGlzdF9ub2RlCWxvY2tHcm91cExpbms7CS8qIG15IG1l bWJlciBsaW5rLCBpZiBJJ20gYSBtZW1iZXIgKi8KKworCXBnX2F0b21pY191aW50MzIgcGVu ZGluZ0ludGVycnVwdHM7CisJcGdfYXRvbWljX3VpbnQzMiBtYXliZVNsZWVwaW5nT25JbnRl cnJ1cHRzOworCisjaWZkZWYgV0lOMzIKKwkvKiBFdmVudCBoYW5kbGUgdG8gd2FrZSB1cCB0 aGUgcHJvY2VzcyB3aGVuIHNlbmRpbmcgYW4gaW50ZXJydXB0ICovCisJSEFORExFCQlpbnRl cnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgogfTsKIAogLyogTk9URTogInR5cGVkZWYgc3Ry dWN0IFBHUFJPQyBQR1BST0MiIGFwcGVhcnMgaW4gc3RvcmFnZS9sb2NrLmguICovCkBAIC00 MjUsNiArNDI5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAkgKi8KIAlQcm9jTnVt YmVyCXdhbHdyaXRlclByb2M7CiAJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jOworCVBy b2NOdW1iZXIJd2FscmVjZWl2ZXJQcm9jOworCVByb2NOdW1iZXIJc3RhcnR1cFByb2M7CiAK IAkvKiBDdXJyZW50IHNoYXJlZCBlc3RpbWF0ZSBvZiBhcHByb3ByaWF0ZSBzcGluc19wZXJf ZGVsYXkgdmFsdWUgKi8KIAlpbnQJCQlzcGluc19wZXJfZGVsYXk7CkBAIC00OTIsOSArNDk4 LDYgQEAgZXh0ZXJuIHZvaWQgUHJvY0xvY2tXYWtldXAoTG9ja01ldGhvZCBsb2NrTWV0aG9k VGFibGUsIExPQ0sgKmxvY2spOwogZXh0ZXJuIHZvaWQgQ2hlY2tEZWFkTG9ja0FsZXJ0KHZv aWQpOwogZXh0ZXJuIHZvaWQgTG9ja0Vycm9yQ2xlYW51cCh2b2lkKTsKIAotZXh0ZXJuIHZv aWQgUHJvY1dhaXRGb3JTaWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4g dm9pZCBQcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwotCiBleHRlcm4g UEdQUk9DICpBdXhpbGlhcnlQaWRHZXRQcm9jKGludCBwaWQpOwogCiBleHRlcm4gdm9pZCBC ZWNvbWVMb2NrR3JvdXBMZWFkZXIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3dhaXRldmVudHNldC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRz ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjhmNTU1YTNi NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNl dC5oCkBAIC0wLDAgKzEsMTE5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3 YWl0ZXZlbnRzZXQuaAorICoJICBwcG9sbCgpIC8gcHNlbGVjdCgpIGxpa2UgaW50ZXJmYWNl IGZvciB3YWl0aW5nIGZvciBldmVudHMKKyAqCisgKiBUaGlzIGlzIGEgcmVsaWFibGUgcmVw bGFjZW1lbnQgZm9yIHRoZSBjb21tb24gcGF0dGVybiBvZiB1c2luZyBwZ191c2xlZXAoKQor ICogb3Igc2VsZWN0KCkgdG8gd2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLCB3aGVyZSB0 aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzCisgKiBhbiBpbnRlcnJ1cHQgKHNlZSBzdG9yYWdl L2ludGVycnVwdC5oKS4gQmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgorICogaW5jb21p bmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9y bXMgd2hlcmUgaXQKKyAqIGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUg c2lnbmFsIGFycml2ZXMganVzdCBiZWZvcmUgZW50ZXJpbmcKKyAqIHRoZSBzbGVlcCwgdGhl IGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kIHBvbGwgdGhl IGZsYWcKKyAqIHZhcmlhYmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZl bnRlZCB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dAorICogaXQgaXMgbm90IHBvcnRhYmxl IGVub3VnaC4gV2FpdEV2ZW50U2V0cyBhbmQgSW50ZXJydXB0cyBhcmUgZGVzaWduZWQgdG8K KyAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zLCBhbGxvd2luZyB5b3UgdG8gc2xlZXAg d2l0aG91dCBwb2xsaW5nIGFuZAorICogZW5zdXJpbmcgcXVpY2sgcmVzcG9uc2UgdG8gc2ln bmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KKyAqCisgKiBXYWl0SW50ZXJydXB0IGluY2x1 ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQK KyAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBh IHByb3Zpc2lvbiBmb3IgcG9zdG1hc3RlcgorICogY2hpbGQgcHJvY2Vzc2VzIHRvIHdha2Ug dXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4gIFNlZQorICogaW50ZXJydXB0 LmMgZm9yIGRldGFpbGVkIHNwZWNpZmljYXRpb25zIGZvciB0aGUgZXhwb3J0ZWQgZnVuY3Rp b25zLgorICoKKyAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVy cnVwdCB0aGUgd2FpdCBwcmltaXRpdmUgYnkKKyAqIHRoZW1zZWx2ZXMuICBUaGVyZWZvcmUs IGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQgaXMKKyAqIG1l YW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRJbnRlcnJ1cHQgd2FpdCBjYWxscyBSYWlzZUludGVy cnVwdC4KKyAqCisgKiBXYWl0RXZlbnRTZXRzIGFsbG93IHRvIHdhaXQgZm9yIGludGVycnVw dHMgYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50cyAtCisgKiBwb3N0bWFzdGVyIGR5 aW5nIGFuZCBzb2NrZXQgcmVhZGluZXNzIG9mIHNldmVyYWwgc29ja2V0cyBjdXJyZW50bHkg LSBhdCB0aGUKKyAqIHNhbWUgdGltZS4gIE9uIG1hbnkgcGxhdGZvcm1zIHVzaW5nIGEgbG9u ZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZQorICogZWZmaWNpZW50IHRoYW4gdXNpbmcgV2Fp dEludGVycnVwdCBvciBXYWl0SW50ZXJydXB0T3JTb2NrZXQuCisgKgorICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9m IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9zdG9y YWdlL3dhaXRldmVudHNldC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgV0FJVEVWRU5UU0VUX0gKKyNkZWZpbmUgV0FJVEVWRU5UU0VUX0gKKworI2luY2x1 ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCisjaW5j bHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKworLyoKKyAqIEJpdG1hc2tzIGZvciBldmVudHMg dGhhdCBtYXkgd2FrZS11cCBXYWl0SW50ZXJydXB0KCksCisgKiBXYWl0SW50ZXJydXB0T3JT b2NrZXQoKSwgb3IgV2FpdEV2ZW50U2V0V2FpdCgpLgorICovCisjZGVmaW5lIFdMX0lOVEVS UlVQVAkJICgxIDw8IDApCisjZGVmaW5lIFdMX1NPQ0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkK KyNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikKKyNkZWZpbmUgV0xfVElN RU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNldFdhaXQoKSAqLworI2Rl ZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0KQorI2RlZmluZSBXTF9FWElUX09O X1BNX0RFQVRICSAoMSA8PCA1KQorI2lmZGVmIFdJTjMyCisjZGVmaW5lIFdMX1NPQ0tFVF9D T05ORUNURUQgICgxIDw8IDYpCisjZWxzZQorLyogYXZvaWQgaGF2aW5nIHRvIGRlYWwgd2l0 aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5nIGl0ICovCisjZGVmaW5lIFdMX1NP Q0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFCTEUKKyNlbmRpZgorI2RlZmluZSBX TF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKKyNpZmRlZiBXSU4zMgorI2RlZmluZSBXTF9T T0NLRVRfQUNDRVBUCSAoMSA8PCA4KQorI2Vsc2UKKy8qIGF2b2lkIGhhdmluZyB0byBkZWFs IHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVpcmluZyBpdCAqLworI2RlZmluZSBX TF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJMRQorI2VuZGlmCisjZGVmaW5lIFdM X1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxFIHwgXAorCQkJCQkJCSBXTF9TT0NL RVRfV1JJVEVBQkxFIHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfQ09OTkVDVEVEIHwgXAorCQkJ CQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfQ0xPU0VEKQor Cit0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKK3sKKwlpbnQJCQlwb3M7CQkJLyogcG9zaXRp b24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJlICovCisJdWludDMyCQlldmVudHM7CQkJ LyogdHJpZ2dlcmVkIGV2ZW50cyAqLworCXBnc29ja2V0CWZkOwkJCQkvKiBzb2NrZXQgZmQg YXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCisJdm9pZAkgICAqdXNlcl9kYXRhOwkJLyogcG9p bnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRUb1NldCAqLworI2lmZGVmIFdJTjMyCisJ Ym9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2YgdGhlIGV2ZW50IHJlcXVpcmVkPyAqLwor I2VuZGlmCit9IFdhaXRFdmVudDsKKworLyogZm9yd2FyZCBkZWNsYXJhdGlvbiB0byBhdm9p ZCBleHBvc2luZyBpbnRlcnJ1cHQuYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCit0eXBl ZGVmIHN0cnVjdCBXYWl0RXZlbnRTZXQgV2FpdEV2ZW50U2V0OworCitzdHJ1Y3QgUEdQUk9D OworCisvKgorICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHdhaXRldmVudHNldC5j CisgKi8KK2V4dGVybiB2b2lkIEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpOwor ZXh0ZXJuIHZvaWQgU2h1dGRvd25XYWl0RXZlbnRTdXBwb3J0KHZvaWQpOworI2lmZGVmIFdJ TjMyCitleHRlcm4gSEFORExFIENyZWF0ZVNoYXJlZFdha2V1cEhhbmRsZSh2b2lkKTsKKyNl bmRpZgorCitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3Vy Y2VPd25lciByZXNvd25lciwgaW50IG5ldmVudHMpOworZXh0ZXJuIHZvaWQgRnJlZVdhaXRF dmVudFNldChXYWl0RXZlbnRTZXQgKnNldCk7CitleHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50 U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0KTsKK2V4dGVybiBpbnQJQWRkV2FpdEV2 ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZk LAorCQkJCQkJCSAgdWludDMyIGludGVycnVwdE1hc2ssIHZvaWQgKnVzZXJfZGF0YSk7Citl eHRlcm4gdm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3Ms IHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKTsKKworZXh0ZXJuIGludAlX YWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCisJCQkJ CQkJIFdhaXRFdmVudCAqb2NjdXJyZWRfZXZlbnRzLCBpbnQgbmV2ZW50cywKKwkJCQkJCQkg dWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4gdm9pZCBJbml0aWFsaXplSW50ZXJy dXB0V2FpdFNldCh2b2lkKTsKK2V4dGVybiBpbnQJR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVu dHMoV2FpdEV2ZW50U2V0ICpzZXQpOworZXh0ZXJuIGJvb2wgV2FpdEV2ZW50U2V0Q2FuUmVw b3J0Q2xvc2VkKHZvaWQpOworCisvKiBsb3cgbGV2ZWwgZnVuY3Rpb25zIHVzZWQgdG8gaW1w bGVtZW50IFNlbmRJbnRlcnJ1cHQgKi8KK2V4dGVybiB2b2lkIFdha2V1cE15UHJvYyh2b2lk KTsKK2V4dGVybiB2b2lkIFdha2V1cE90aGVyUHJvYyhzdHJ1Y3QgUEdQUk9DICpwcm9jKTsK KworI2VuZGlmCQkJCQkJCS8qIFdBSVRFVkVOVFNFVF9IICovCmRpZmYgLS1naXQgYS9zcmMv cG9ydC9wZ3NsZWVwLmMgYi9zcmMvcG9ydC9wZ3NsZWVwLmMKaW5kZXggMTI4NDQ1OGJmY2Uu LjlkOGVmMjYxMjk3IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ3NsZWVwLmMKKysrIGIvc3Jj L3BvcnQvcGdzbGVlcC5jCkBAIC0zMiwxMCArMzIsMTAgQEAKICAqCiAgKiBDQVVUSU9OOiBJ dCdzIG5vdCBhIGdvb2QgaWRlYSB0byB1c2UgbG9uZyBzbGVlcHMgaW4gdGhlIGJhY2tlbmQu ICBUaGV5IHdpbGwKICAqIHNpbGVudGx5IHJldHVybiBlYXJseSBpZiBhIHNpZ25hbCBpcyBj YXVnaHQsIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZQotICogbGF0Y2hlcyBiZWluZyBzZXQg b24gbW9zdCBPU2VzLCBhbmQgZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhhdCBzZXQgTXlMYXRj aAotICogbWlnaHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVwIGJlZ2lucywgYWxs b3dpbmcgdGhlIGZ1bGwgZGVsYXkuCi0gKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdh aXRMYXRjaCgpIHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0IGJhY2tlbmRzCi0gKiByZXNwb25k IHRvIGxhdGNoZXMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCisgKiBpbnRlcnJ1cHRzIGJlaW5n IHNldCBvbiBtb3N0IE9TZXMsIGFuZCBldmVuIHNpZ25hbCBoYW5kbGVycyB0aGF0IHJhaXNl IGFuCisgKiBpbnRlcnJ1cHQgbWlnaHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVw IGJlZ2lucywgYWxsb3dpbmcgdGhlIGZ1bGwKKyAqIGRlbGF5LiAgQmV0dGVyIHByYWN0aWNl IGlzIHRvIHVzZSBXYWl0SW50ZXJydXB0KCkgd2l0aCBhIHRpbWVvdXQsIHNvIHRoYXQKKyAq IGJhY2tlbmRzIHJlc3BvbmQgdG8gaW50ZXJydXB0cyBhbmQgc2lnbmFscyBwcm9tcHRseS4K ICAqLwogdm9pZAogcGdfdXNsZWVwKGxvbmcgbWljcm9zZWMpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMgYi9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9udGVzdGVyLmMKaW5kZXggMGIzNDJiNWMyYmIuLmFlZDUwZjlmNjg1IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCkBAIC03NjIsNyArNzYyLDcgQEAg dHJ5X2NvbXBsZXRlX3N0ZXBzKFRlc3RTcGVjICp0ZXN0c3BlYywgUGVybXV0YXRpb25TdGVw ICoqd2FpdGluZywKIAl7CiAJCWludAkJCXcgPSAwOwogCi0JCS8qIFJlc2V0IGxhdGNoOyB3 ZSBvbmx5IGNhcmUgYWJvdXQgbm90aWNlcyByZWNlaXZlZCB3aXRoaW4gbG9vcC4gKi8KKwkJ LyogUmVzZXQgZmxhZzsgd2Ugb25seSBjYXJlIGFib3V0IG5vdGljZXMgcmVjZWl2ZWQgd2l0 aGluIGxvb3AuICovCiAJCWFueV9uZXdfbm90aWNlID0gZmFsc2U7CiAKIAkJLyogTGlrZXdp c2UsIHRoZXNlIHZhcmlhYmxlcyByZXNldCBmb3IgZWFjaCByZXRyeS4gKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwppbmRleCBmYjIzNTYwNDM5NC4uZmE0YzQyNzk0 M2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKQEAgLTE4LDYgKzE4 LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJ0ZXN0 X3NobV9tcS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0yODUsMTEgKzI4 NiwxMSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFkeSh3b3JrZXJfc3RhdGUg KndzdGF0ZSwKIAkJCXdlX2Jnd29ya2VyX3N0YXJ0dXAgPSBXYWl0RXZlbnRFeHRlbnNpb25O ZXcoIlRlc3RTaG1NcUJnV29ya2VyU3RhcnR1cCIpOwogCiAJCS8qIFdhaXQgdG8gYmUgc2ln bmFsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSB3ZV9iZ3dvcmtlcl9zdGFydHVwKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAs IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIHdlX2Jn d29ya2VyX3N0YXJ0dXApOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBz cGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJy dXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2Nj dXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwppbmRleCAzZDIzNTU2OGI4 MS4uYzQ1OGI4OTA0N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1f bXEvdGVzdC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCkBA IC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKICNpbmNsdWRlICJ0ZXN0X3NobV9tcS5oIgpA QCAtMjM0LDEzICsyMzUsMTMgQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBtYWRlIG5vIHByb2dyZXNzLCB3YWl0IGZv ciBvbmUgb2YgdGhlIG90aGVyIHByb2Nlc3NlcyB0bwotCQkJICogd2hpY2ggd2UgYXJlIGNv bm5lY3RlZCB0byBzZXQgb3VyIGxhdGNoLCBpbmRpY2F0aW5nIHRoYXQgdGhleQotCQkJICog aGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBub3cg YmUgd29yawotCQkJICogZm9yIHVzIHRvIGRvLgorCQkJICogd2hpY2ggd2UgYXJlIGNvbm5l Y3RlZCB0byBzZW5kIHVzIGFuIGludGVycnVwdCwgaW5kaWNhdGluZyB0aGF0CisJCQkgKiB0 aGV5IGhhdmUgcmVhZCBvciB3cml0dGVuIGRhdGEgYW5kIHRoZXJlZm9yZSB0aGVyZSBtYXkg bm93IGJlCisJCQkgKiB3b3JrIGZvciB1cyB0byBkby4KIAkJCSAqLwotCQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAotCQkJCQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIHdl X21lc3NhZ2VfcXVldWUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwppbmRleCA2YzRmYmM3ODI3NC4uNmZlOWY5 ZTRlYjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2Vy LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwpAQCAtMjAs NiArMjAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NobV9tcS5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIHRlc3Rfc2htX21xX21haW4o RGF0dW0gbWFpbl9hcmcpCiAJCWVsb2coREVCVUcxLCAicmVnaXN0cmFudCBiYWNrZW5kIGhh cyBleGl0ZWQgcHJlbWF0dXJlbHkiKTsKIAkJcHJvY19leGl0KDEpOwogCX0KLQlTZXRMYXRj aCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWdpc3RyYW50KSk7CiAKIAkv KiBEbyB0aGUgd29yay4gKi8KIAljb3B5X21lc3NhZ2VzKGlucWgsIG91dHFoKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCmluZGV4IGQ0NDAzYjI0ZDk4 Li41NWZlYmZiMWI5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3dvcmtlcl9zcGkuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2Vy X3NwaS5jCkBAIC01LDcgKzUsNyBAQAogICoJCXBhdHRlcm5zOiBlc3RhYmxpc2hpbmcgYSBk YXRhYmFzZSBjb25uZWN0aW9uOyBzdGFydGluZyBhbmQgY29tbWl0dGluZwogICoJCXRyYW5z YWN0aW9uczsgdXNpbmcgR1VDIHZhcmlhYmxlcywgYW5kIGhlZWRpbmcgU0lHSFVQIHRvIHJl cmVhZAogICoJCXRoZSBjb25maWd1cmF0aW9uIGZpbGU7IHJlcG9ydGluZyB0byBwZ19zdGF0 X2FjdGl2aXR5OyB1c2luZyB0aGUKLSAqCQlwcm9jZXNzIGxhdGNoIHRvIHNsZWVwIGFuZCBl eGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KKyAqCQlXYWl0SW50ZXJydXB0IHRv IHNsZWVwIGFuZCBleGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KICAqCiAgKiBU aGlzIGNvZGUgY29ubmVjdHMgdG8gYSBkYXRhYmFzZSwgY3JlYXRlcyBhIHNjaGVtYSBhbmQg dGFibGUsIGFuZCBzdW1tYXJpemVzCiAgKiB0aGUgbnVtYmVycyBjb250YWluZWQgdGhlcmVp bi4gIFRvIHNlZSBpdCB3b3JraW5nLCBpbnNlcnQgYW4gaW5pdGlhbCB2YWx1ZQpAQCAtMjYs NyArMjYsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYmd3b3JrZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5o IgogCiAvKiB0aGVzZSBoZWFkZXJzIGFyZSB1c2VkIGJ5IHRoaXMgcGFydGljdWxhciB3b3Jr ZXIncyBjb2RlICovCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKQEAgLTIyMywxNSArMjIz LDE1IEBAIHdvcmtlcl9zcGlfbWFpbihEYXR1bSBtYWluX2FyZykKIAogCQkvKgogCQkgKiBC YWNrZ3JvdW5kIHdvcmtlcnMgbXVzdG4ndCBjYWxsIHVzbGVlcCgpIG9yIGFueSBkaXJlY3Qg ZXF1aXZhbGVudDoKLQkJICogaW5zdGVhZCwgdGhleSBtYXkgd2FpdCBvbiB0aGVpciBwcm9j ZXNzIGxhdGNoLCB3aGljaCBzbGVlcHMgYXMKLQkJICogbmVjZXNzYXJ5LCBidXQgaXMgYXdh a2VuZWQgaWYgcG9zdG1hc3RlciBkaWVzLiAgVGhhdCB3YXkgdGhlCi0JCSAqIGJhY2tncm91 bmQgcHJvY2VzcyBnb2VzIGF3YXkgaW1tZWRpYXRlbHkgaW4gYW4gZW1lcmdlbmN5LgorCQkg KiBpbnN0ZWFkLCB0aGV5IG1heSB1c2UgV2FpdEludGVycnVwdCwgd2hpY2ggc2xlZXBzIGFz IG5lY2Vzc2FyeSwgYnV0CisJCSAqIGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4g IFRoYXQgd2F5IHRoZSBiYWNrZ3JvdW5kIHByb2Nlc3MKKwkJICogZ29lcyBhd2F5IGltbWVk aWF0ZWx5IGluIGFuIGVtZXJnZW5jeS4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlM YXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwKLQkJCQkJCSB3 b3JrZXJfc3BpX3dhaXRfZXZlbnRfbWFpbik7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAor CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkgd29ya2VyX3NwaV9uYXB0aW1lICogMTAwMEwsCisJCQkJCQkJIHdvcmtl cl9zcGlfd2FpdF9ldmVudF9tYWluKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDE3MWE3ZGQ1ZDJiLi5kMmJkNDJlNDRjYSAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNTQsNiArMTI1NCw3IEBAIEludGVn ZXIKIEludGVnZXJTZXQKIEludGVybmFsRGVmYXVsdEFDTAogSW50ZXJuYWxHcmFudAorSW50 ZXJydXB0VHlwZQogSW50ZXJ2YWwKIEludGVydmFsQWdnU3RhdGUKIEludG9DbGF1c2UKQEAg LTE0OTIsNyArMTQ5Myw2IEBAIExaNFN0YXRlCiBMYWJlbFByb3ZpZGVyCiBMYWdUcmFja2Vy CiBMYXJnZU9iamVjdERlc2MKLUxhdGNoCiBMYXVuY2hlckxhc3RTdGFydFRpbWVzRW50cnkK IExlcnBGdW5jCiBMZXhEZXNjcgotLSAKMi4zOS41Cgo= --------------T3bwx44i0Rxfr222TL30IqbM Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v3-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNDBiOWI1N2E1NDg0MWRmZWRjNGE0ZjhjMmE2OTI1MzNkZWUzYzFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgNCBOb3YgMjAyNCAyMDo1ODozNiArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjMgMi8zXSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBsYXVuY2hlcgoKYnkgdXNpbmcgYSBkaWZmZXJlbnQgaW50ZXJydXB0 IHJlYXNvbiBmb3Igc3Vic2NyaXB0aW9uIGNoYW5nZXMKCmh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvZmxhdC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTcz MjdjYjUlNDBpa2kuZmkjYmVmOTg0ZjhjNDNkNmI4YTk0MjhkMmM1NTQ3ZmU3MmIKLS0tCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAyMyArKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oICAgICAg ICAgICAgfCAgNSArKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYwppbmRleCAxZmI4NzkwZjIxMy4uMDg1MjVjOGE4NGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU3LDcgKzU3LDcgQEAg TG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIHR5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBDdHhTdHJ1Y3QKIHsKIAkvKiBTdXBlcnZpc29yIHByb2Nlc3Mu ICovCi0JcGlkX3QJCWxhdW5jaGVyX3BpZDsKKwlQcm9jTnVtYmVyCWxhdW5jaGVyX3Byb2Nu bzsKIAogCS8qIEhhc2ggdGFibGUgaG9sZGluZyBsYXN0IHN0YXJ0IHRpbWVzIG9mIHN1YnNj cmlwdGlvbnMnIGFwcGx5IHdvcmtlcnMuICovCiAJZHNhX2hhbmRsZQlsYXN0X3N0YXJ0X2Rz YTsKQEAgLTgxNCw3ICs4MTQsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlcikKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX2xhdW5jaGVy X29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUxvZ2ljYWxSZXBDdHgtPmxhdW5j aGVyX3BpZCA9IDA7CisJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKIH0KIAogLyoKQEAgLTk3NCw2ICs5NzQsNyBAQCBBcHBseUxhdW5j aGVyU2htZW1Jbml0KHZvaWQpCiAKIAkJbWVtc2V0KExvZ2ljYWxSZXBDdHgsIDAsIEFwcGx5 TGF1bmNoZXJTaG1lbVNpemUoKSk7CiAKKwkJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJv Y25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJTG9naWNhbFJlcEN0eC0+bGFzdF9zdGFy dF9kc2EgPSBEU0FfSEFORExFX0lOVkFMSUQ7CiAJCUxvZ2ljYWxSZXBDdHgtPmxhc3Rfc3Rh cnRfZHNoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwogCkBAIC0xMTE5LDggKzExMjAsMTIg QEAgQXBwbHlMYXVuY2hlcldha2V1cEF0Q29tbWl0KHZvaWQpCiBzdGF0aWMgdm9pZAogQXBw bHlMYXVuY2hlcldha2V1cCh2b2lkKQogewotCWlmIChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hl cl9waWQgIT0gMCkKLQkJa2lsbChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQsIFNJR1VT UjEpOworCXZvbGF0aWxlIExvZ2ljYWxSZXBDdHhTdHJ1Y3QgKnJlcGN0eCA9IExvZ2ljYWxS ZXBDdHg7CisJUHJvY051bWJlcglsYXVuY2hlcl9wcm9jbm87CisKKwlsYXVuY2hlcl9wcm9j bm8gPSByZXBjdHgtPmxhdW5jaGVyX3Byb2NubzsKKwlpZiAobGF1bmNoZXJfcHJvY25vICE9 IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1NVQlND UklQVElPTl9DSEFOR0UsIGxhdW5jaGVyX3Byb2Nubyk7CiB9CiAKIC8qCkBAIC0xMTM0LDgg KzExMzksOCBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCWJlZm9y ZV9zaG1lbV9leGl0KGxvZ2ljYWxyZXBfbGF1bmNoZXJfb25leGl0LCAoRGF0dW0pIDApOwog Ci0JQXNzZXJ0KExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9PSAwKTsKLQlMb2dpY2Fs UmVwQ3R4LT5sYXVuY2hlcl9waWQgPSBNeVByb2NQaWQ7CisJQXNzZXJ0KExvZ2ljYWxSZXBD dHgtPmxhdW5jaGVyX3Byb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlMb2dpY2Fs UmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPSBNeVByb2NOdW1iZXI7CiAKIAkvKiBFc3RhYmxp c2ggc2lnbmFsIGhhbmRsZXJzLiAqLwogCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxl ckZvckNvbmZpZ1JlbG9hZCk7CkBAIC0xMTY3LDYgKzExNzIsNyBAQCBBcHBseUxhdW5jaGVy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHN1YmN0eCk7CiAKIAkJLyogU3RhcnQgYW55IG1pc3Npbmcgd29ya2VycyBmb3IgZW5hYmxl ZCBzdWJzY3JpcHRpb25zLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfU1VCU0NS SVBUSU9OX0NIQU5HRSk7CiAJCXN1Ymxpc3QgPSBnZXRfc3Vic2NyaXB0aW9uX2xpc3QoKTsK IAkJZm9yZWFjaChsYywgc3VibGlzdCkKIAkJewpAQCAtMTIyMyw3ICsxMjI5LDggQEAgQXBw bHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRleHREZWxldGUo c3ViY3R4KTsKIAogCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCXJjID0gV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJcmMgPSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQIHwKKwkJCQkJCSAgIDEgPDwg SU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIHdhaXRfdGlt ZSwKIAkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKQEAgLTEy NTAsNyArMTI1Nyw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogYm9v bAogSXNMb2dpY2FsTGF1bmNoZXIodm9pZCkKIHsKLQlyZXR1cm4gTG9naWNhbFJlcEN0eC0+ bGF1bmNoZXJfcGlkID09IE15UHJvY1BpZDsKKwlyZXR1cm4gTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcHJvY25vID09IE15UHJvY051bWJlcjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2lu dGVycnVwdC5oCmluZGV4IDViY2M5ZjI0MDdlLi4zNTljMzVlZTgxMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2ludGVycnVwdC5oCkBAIC05OCwxMSArOTgsMTQgQEAgdHlwZWRlZiBlbnVtCiAJSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQLAogCiAJLyoKLQkgKiBJTlRFUlJVUFRfUkVDT1ZFUllf V0FLRVVQIGlzIHVzZWQgdG8gd2FrZSB1cCBzdGFydHVwIHByb2Nlc3MsIHRvIHRlbGwKKwkg KiBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0 dXAgcHJvY2VzcywgdG8gdGVsbAogCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdB TCByZXBsYXkuIEl0J3Mgc2VudCBieSBXQUwgcmVjZWl2ZXIgd2hlbgogCSAqIG1vcmUgV0FM IGFycml2ZXMsIG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KIAkgKi8KIAlJTlRF UlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsCisKKwkvKiBzZW50IHRvIGxvZ2ljYWwgcmVwbGlj YXRpb24gbGF1bmNoZXIsIHdoZW4gYSBzdWJzY3JpcHRpb24gY2hhbmdlcyAqLworCUlOVEVS UlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAogfSBJbnRlcnJ1cHRUeXBlOwogCiAvKgotLSAK Mi4zOS41Cgo= --------------T3bwx44i0Rxfr222TL30IqbM Content-Type: text/x-patch; charset=UTF-8; name="adapt-pg_cron.patch" Content-Disposition: attachment; filename="adapt-pg_cron.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggYzEzOWNhYy4uMjI4ZWJm ZCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDcg QEAgT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKHdpbGRjYXJkIHNyYy8qLmMpKQogaWZl cSAoJChDQyksZ2NjKQogICAgIFBHX0NQUEZMQUdTID0gLXN0ZD1jOTkgLVdhbGwgLVdleHRy YSAtV2Vycm9yIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLXVuaW5pdGlhbGl6ZWQgLVdu by1pbXBsaWNpdC1mYWxsdGhyb3VnaCAtSWluY2x1ZGUgLUkkKGxpYnBxX3NyY2RpcikKIGVs c2UKLSAgICBQR19DUFBGTEFHUyA9IC1zdGQ9Yzk5IC1XYWxsIC1XZXh0cmEgLVdlcnJvciAt V25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1pbXBsaWNpdC1mYWxsdGhyb3VnaCAtSWluY2x1 ZGUgLUkkKGxpYnBxX3NyY2RpcikKKyAgICBQR19DUFBGTEFHUyA9IC1zdGQ9Yzk5IC1XYWxs IC1XZXh0cmEgLVdlcnJvciAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1pbXBsaWNpdC1m YWxsdGhyb3VnaCAtV25vLW1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zIC1JaW5jbHVk ZSAtSSQobGlicHFfc3JjZGlyKQogZW5kaWYKIGlmZXEgKCQoc2hlbGwgdW5hbWUgLXMpLFN1 bk9TKQogICAgIFBHX0NQUEZMQUdTICs9IC1Xbm8tc2lnbi1jb21wYXJlIC1EX19FWFRFTlNJ T05TX18KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGdfY3Jvbi5oIGIvaW5jbHVkZS9wZ19jcm9u LmgKaW5kZXggZmQ1MTI3Zi4uMDlmN2Q3MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9wZ19jcm9u LmgKKysrIGIvaW5jbHVkZS9wZ19jcm9uLmgKQEAgLTExLDYgKzExLDcgQEAKICNpZm5kZWYg UEdfQ1JPTl9ICiAjZGVmaW5lIFBHX0NST05fSAogCisjaW5jbHVkZSAicGdfdmVyc2lvbl9j b21wYXRpYmlsaXR5LmgiCiAKIC8qIGdsb2JhbCBzZXR0aW5ncyAqLwogZXh0ZXJuIGNoYXIg KkNyb25UYWJsZURhdGFiYXNlTmFtZTsKZGlmZiAtLWdpdCBhL3NyYy9wZ19jcm9uLmMgYi9z cmMvcGdfY3Jvbi5jCmluZGV4IDE2YjhlYjguLjNhNDBhZjQgMTAwNjQ0Ci0tLSBhL3NyYy9w Z19jcm9uLmMKKysrIGIvc3JjL3BnX2Nyb24uYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNp bmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCkBAIC0xMzUsNyArMTM0LDcgQEAgc3RhdGlj IGJvb2wgU2hvdWxkUnVuVGFzayhlbnRyeSAqc2NoZWR1bGUsIFRpbWVzdGFtcFR6IGN1cnJl bnRNaW51dGUsCiAJCQkJCQkgIGJvb2wgZG9XaWxkLCBib29sIGRvTm9uV2lsZCk7CiAKIHN0 YXRpYyB2b2lkIFdhaXRGb3JDcm9uVGFza3MoTGlzdCAqdGFza0xpc3QpOwotc3RhdGljIHZv aWQgV2FpdEZvckxhdGNoKGludCB0aW1lb3V0TXMpOworc3RhdGljIHZvaWQgV2FpdEZvcklu dGVycnVwdChpbnQgdGltZW91dE1zKTsKIHN0YXRpYyB2b2lkIFBvbGxGb3JUYXNrcyhMaXN0 ICp0YXNrTGlzdCk7CiBzdGF0aWMgYm9vbCBDYW5TdGFydFRhc2soQ3JvblRhc2sgKnRhc2sp Owogc3RhdGljIHZvaWQgTWFuYWdlQ3JvblRhc2tzKExpc3QgKnRhc2tMaXN0LCBUaW1lc3Rh bXBUeiBjdXJyZW50VGltZSk7CkBAIC0zNDksNyArMzQ4LDcgQEAgX1BHX2luaXQodm9pZCkK IAogLyoKICAqIFNpZ25hbCBoYW5kbGVyIGZvciBTSUdURVJNCi0gKgkJU2V0IGEgZmxhZyB0 byBsZXQgdGhlIG1haW4gbG9vcCB0byB0ZXJtaW5hdGUsIGFuZCBzZXQgb3VyIGxhdGNoIHRv IHdha2UKKyAqCQlTZXQgYSBmbGFnIHRvIGxldCB0aGUgbWFpbiBsb29wIHRvIHRlcm1pbmF0 ZSwgYW5kIHJhaXNlIGludGVycnVwdCB0byB3YWtlCiAgKgkJaXQgdXAuCiAgKi8KIHN0YXRp YyB2b2lkCkBAIC0zNTksNyArMzU4LDcgQEAgcGdfY3Jvbl9zaWd0ZXJtKFNJR05BTF9BUkdT KQogCiAJaWYgKE15UHJvYyAhPSBOVUxMKQogCXsKLQkJU2V0TGF0Y2goJk15UHJvYy0+cHJv Y0xhdGNoKTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAl9CiB9CiAKQEAgLTM3Niw3ICszNzUsNyBAQCBwZ19jcm9uX3NpZ2h1cChTSUdOQUxfQVJH UykKIAogCWlmIChNeVByb2MgIT0gTlVMTCkKIAl7Ci0JCVNldExhdGNoKCZNeVByb2MtPnBy b2NMYXRjaCk7CisJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7 CiAJfQogfQogCkBAIC0xMDE5LDI5ICsxMDE4LDI1IEBAIFdhaXRGb3JDcm9uVGFza3MoTGlz dCAqdGFza0xpc3QpCiAJfQogCWVsc2UKIAl7Ci0JCVdhaXRGb3JMYXRjaChNYXhXYWl0KTsK KwkJV2FpdEZvckludGVycnVwdChNYXhXYWl0KTsKIAl9CiB9CiAKIAogLyoKLSAqIFdhaXRG b3JMYXRjaCB3YWl0cyBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdW5s ZXNzIGEgc2lnbmFsCisgKiBXYWl0Rm9ySW50ZXJydXB0IHdhaXRzIGZvciB0aGUgZ2l2ZW4g bnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB1bmxlc3MgYSBzaWduYWwKICAqIGlzIHJlY2VpdmVk IG9yIHBvc3RtYXN0ZXIgc2h1dHMgZG93bi4KICAqLwogc3RhdGljIHZvaWQKLVdhaXRGb3JM YXRjaChpbnQgdGltZW91dE1zKQorV2FpdEZvckludGVycnVwdChpbnQgdGltZW91dE1zKQog ewogCWludCByYyA9IDA7Ci0JaW50IHdhaXRGbGFncyA9IFdMX0xBVENIX1NFVCB8IFdMX1BP U1RNQVNURVJfREVBVEggfCBXTF9USU1FT1VUOworCWludCB3YWl0RmxhZ3MgPSBXTF9JTlRF UlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRIIHwgV0xfVElNRU9VVDsKIAogCS8qIG5vdGhp bmcgdG8gZG8sIHdhaXQgZm9yIG5ldyBqb2JzICovCi0jaWYgKFBHX1ZFUlNJT05fTlVNID49 IDEwMDAwMCkKLQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCB3YWl0RmxhZ3MsIHRpbWVvdXRN cywgUEdfV0FJVF9FWFRFTlNJT04pOwotI2Vsc2UKLQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LCB3YWl0RmxhZ3MsIHRpbWVvdXRNcyk7Ci0jZW5kaWYKKwlyYyA9IFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdhaXRGbGFncywgdGltZW91dE1zLCBQ R19XQUlUX0VYVEVOU0lPTik7CiAKLQlSZXNldExhdGNoKE15TGF0Y2gpOworCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCkBAIC0xMjEyLDcgKzEyMDcsNyBAQCBQb2xsRm9yVGFza3MoTGlzdCAqdGFz a0xpc3QpCiAJaWYgKGFjdGl2ZVRhc2tDb3VudCA9PSAwKQogCXsKIAkJLyogdHVybnMgb3V0 IHRoZXJlJ3Mgbm90aGluZyB0byBkbywganVzdCB3YWl0IGZvciBzb21ldGhpbmcgdG8gaGFw cGVuICovCi0JCVdhaXRGb3JMYXRjaChwb2xsVGltZW91dCk7CisJCVdhaXRGb3JJbnRlcnJ1 cHQocG9sbFRpbWVvdXQpOwogCiAJCXBmcmVlKHBvbGxlZFRhc2tzKTsKIAkJcGZyZWUocG9s bEZEcyk7Cg== --------------T3bwx44i0Rxfr222TL30IqbM Content-Type: text/x-chdr; charset=UTF-8; name="pg_version_compatibility.h" Content-Disposition: attachment; filename="pg_version_compatibility.h" Content-Transfer-Encoding: base64 LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqIHBnX3ZlcnNpb25fY29tcGF0aWJpbGl0eS5o CiAqICAgIEZvcndhcmQtY29tcGF0aWJpbGl0eSBoZWxwZXJzIHRvIGFsbG93IGxpbWl0ZWQg dXNlIG9mIG5ldwogKiAgICBzZXJ2ZXIgZnVuY3Rpb25zIHdoZW4gY29tcGlsaW5nIGFnYWlu c3Qgb2xkIFBvc3RncmVTUUwgdmVyc2lvbnMKICoKICogVGhlIGlkZWEgaXMgdGhhdCB5b3Ug d3JpdGUgeW91ciBleHRlbnNpb24gYWdhaW5zdCB0aGUgbGF0ZXN0IFBvc3RncmVTUUwKICog c2VydmVyIHZlcnNpb24sIGFuZCB0aGlzIGZpbGUgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSBt YWNyb3Mgc28gdGhhdCB0aGUKICogc291cmNlIGNvZGUgc3RpbGwgY29tcGlsZXMgYWdhaW5z dCBvbGRlciBQb3N0Z3JlU1FMIHZlcnNpb25zIHdpdGggbWluaW1hbAogKiBjaGFuZ2VzLgog KgogKiBVc2FnZQogKiAtLS0tLQogKgogKiBDb3B5IHRoaXMgZmlsZSB0byB5b3VyIHByb2pl Y3QuCiAqCiAqIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGZpbGUgY2FuIGJlIGZvdW5k IGF0OiBYWFgKICoKICogLSBQb3N0Z3JlU1FMIGRvZXNuJ3QgbWFrZSBhbnkgZ3VhcmFudGVl cyBvbiBiYWNrd2FyZHMtIG9yIGZvcndhcmRzLQogKiAgIGNvbXBhdGliaWxpdHkgb2YgaW50 ZXJmYWNlcyB0aGF0IGV4dGVuc2lvbnMgbWlnaHQgdXNlLiBJdCdzIG9uIGEgYmVzdAogKiAg IGVmZm9ydCBiYXNpcy4KICoKICogLSBUaGlzIGZpbGUgaXMgbm90IGNvbXByZWhlbnNpdmUu IEl0IG9ubHkgY292ZXJzIHNvbWUgY29tbW9uCiAqICAgaW5jb21wYXRpYmlsaXRpZXMgdGhh dCBhcmUgZWFzeSBhbmQgc2FmZSB0byBpbXBsZW1lbnQgaW4gYSBjb21wYXRpYmxlCiAqICAg bWFubmVyLgogKgogKiAtIFNlZSBYWFggZm9yIG1vcmUgdmVyc2lvbi1zcGVjaWZpYyBndWlk ZXMgb24gdXBkYXRpbmcKICoKICogLSBUaGlzIGZpbGUgbWF5IGJlIHVwZGF0ZWQgdGltZSB0 byB0aW1lLCBldmVuIGJldHdlZW4gUG9zdGdyZVNRTAogKiAgIHJlbGVhc2VzLiBJdCdzIG5v dCBuZWNlc3NhcnkgdG8gcmVndWxhcmx5IHdhdGNoIGZvciB1cGRhdGVzLCBidXQgaWYKICog ICB5b3UncmUgZG9pbmcgbmV3IGRldmVsb3BtZW50IGFuZCBydW4gaW50byB2ZXJzaW9uIGlu Y29tcGF0aWJpbGl0aWVzIHdpdGgKICogICBvbGQgc2VydmVyIHZlcnNpb25zLCB5b3UgbWln aHQgd2FudCB0byBjaGVjayBmb3IgdXBkYXRlcy4KICoKICoKICogTGljZW5zZQogKiAtLS0t LS0tCiAqCiAqIFRoaXMgZmlsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBs aWNlbnNlOiBYWFgKICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojaWZuZGVmIFBHX1ZF UlNJT05fQ09NUEFUSUJJTElUWV9ICiNkZWZpbmUgUEdfVkVSU0lPTl9DT01QQVRJQklMSVRZ X0gKCi8qIFRoZSBsYXRlc3QgdmVyc2lvbiBpcyBQb3N0Z3JlU1FMIDE4ICovCgovKgogKiBW ZXJzaW9uIDE2IC0+IDE3OiAiUHJvYyBudW1iZXIiIGFzIGEgY29uY2VwdCBleGlzdGVkIGlu IHByZXZpb3VzIHZlcnNpb25zCiAqIHRvbywgYnV0IHRoZXJlIHdhcyBubyB0eXBlZGVmIGZv ciBpdC4KICovCiNpZiBQR19WRVJTSU9OX05VTSA8IDE3MDAwMAp0eXBlZGVmIGludCBQcm9j TnVtYmVyOwojZW5kaWYKCi8qCiAqIFZlcnNpb24gMTcgLT4gMTg6IExhdGNoZXMgd2VyZSBy ZXBsYWNlZCB3aXRoIEludGVycnVwdHMKICovCiNpZiBQR19WRVJTSU9OX05VTSA+PSAxODAw MDAKI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiNlbHNlCiNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKCnR5cGVkZWYgZW51bQp7 CgkvKgoJICogUmFpc2luZyBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgaXMgZXF1aXZhbGVu dCB0byBzZXR0aW5nIHRoZQoJICogcGVyLXByb2Nlc3MgbGF0Y2ggaW4gb2xkZXIgdmVyc2lv bnMuICBUaGVyZSB3YXMgZGlyZWN0IG5vIGNvdW50ZXJwYXJ0CgkgKiBmb3Igb3RoZXIgaW50 ZXJydXB0cywgc28gZGVmaW5lIG9ubHkgdGhpcyBvbmUuCgkgKi8KCUlOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCwKfSBJbnRlcnJ1cHRUeXBlOwoKLyoKICogVGhlIFdhaXRMYXRjaCBXTF8q IGZsYWdzIHdlcmUgcmVwdXJwb3NlZCBmb3IgV2FpdEludGVycnVwdHMsIGV4Y2VwdCB0aGF0 CiAqIFdMX0xBVENIX1NFVCB3YXMgcmVuYW1lZCB0byBXTF9JTlRFUlJVUFQuCiAqLwojZGVm aW5lIFdMX0lOVEVSUlVQVCBXTF9MQVRDSF9TRVQKCnN0YXRpYyBpbmxpbmUgdm9pZApSYWlz ZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKewoJQXNzZXJ0KHJlYXNvbiA9PSBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwoJU2V0TGF0Y2goTXlMYXRjaCk7Cn0KCnN0YXRp YyBpbmxpbmUgdm9pZApTZW5kSW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVhc29uLCBQcm9j TnVtYmVyIHBncHJvY25vKQp7CglQR1BST0MJICAgKnByb2M7CgoJQXNzZXJ0KHJlYXNvbiA9 PSBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwoKCXByb2MgPSBHZXRQR1Byb2NCeU51bWJl cihwZ3Byb2Nubyk7CglTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKfQoKc3RhdGljIGlu bGluZSBpbnQKV2FpdEludGVycnVwdCh1aW50MzIgaW50ZXJydXB0TWFzaywgaW50IHdha2VF dmVudHMsIGxvbmcgdGltZW91dCwKCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQp7CglB c3NlcnQoaW50ZXJydXB0TWFzayA9PSAoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAp IHx8IGludGVycnVwdE1hc2sgPT0gMCk7CgoJaWYgKChpbnRlcnJ1cHRNYXNrICYgKDEgPDwg SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKSkgPT0gMCkKCQl3YWtlRXZlbnRzICY9IH5XTF9J TlRFUlJVUFQ7CgoJcmV0dXJuIFdhaXRMYXRjaChNeUxhdGNoLCB3YWtlRXZlbnRzLCB0aW1l b3V0LCB3YWl0X2V2ZW50X2luZm8pOwp9CgpzdGF0aWMgaW5saW5lIGludApXYWl0SW50ZXJy dXB0T3JTb2NrZXQodWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3Nv Y2tldCBzb2NrLAoJCSAgICAgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5m bykKewoJQXNzZXJ0KGludGVycnVwdE1hc2sgPT0gKDEgPDwgSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKSB8fCBpbnRlcnJ1cHRNYXNrID09IDApOwoKCWlmICgoaW50ZXJydXB0TWFzayAm ICgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCkpID09IDApCgkJd2FrZUV2ZW50cyAm PSB+V0xfSU5URVJSVVBUOwoKCXJldHVybiBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLCB3 YWtlRXZlbnRzLCB0aW1lb3V0LCBzb2NrLCB3YWl0X2V2ZW50X2luZm8pOwp9CgpzdGF0aWMg aW5saW5lIHZvaWQKQ2xlYXJJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCnsKCUFz c2VydChyZWFzb24gPT0gSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKCVNldExhdGNoKE15 TGF0Y2gpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wKQ29uc3VtZUludGVycnVwdChJbnRlcnJ1 cHRUeXBlIHJlYXNvbikKewoJaWYgKGxpa2VseSghTXlMYXRjaC0+aXNfc2V0KSkKCQlyZXR1 cm4gZmFsc2U7CgoJQ2xlYXJJbnRlcnJ1cHQocmVhc29uKTsKCglyZXR1cm4gdHJ1ZTsKfQoK I2VuZGlmCgojZW5kaWYgLyogUEdfVkVSU0lPTl9DT01QQVRJQklMSVRZX0ggKi8K --------------T3bwx44i0Rxfr222TL30IqbM--