Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9kOf-001hrR-1d for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 13:53:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9kOd-008jlk-2P for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 13:53:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9kOc-008jla-2i for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 13:53:43 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9kOV-00000000rOK-1sT0 for pgsql-hackers@postgresql.org; Mon, 06 Apr 2026 13:53:42 +0000 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-43d17bb1c65so2295525f8f.0 for ; Mon, 06 Apr 2026 06:53:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775483613; cv=none; d=google.com; s=arc-20240605; b=cuyZI9toxiY101DAdeBL2d6S6QC7kVXewcqAhePmavBocV85mRh31cmDpa5rG2o42o koV03W2MxUHy/gtGCpmqKbQ+2U2zFOPZA96LoGZmq/RbQn1mQqCLaQULYHNt03jLzirL XCWrcuYL1ZDCKflzX4yHEWPjOu/9nTxXOffEehMGkEwHE6V1WEeDNsOtkB6wbbt/iP3O i2SGFBfxNFbrWHTfEoaiJpDwd6xXDnabf/QlWRtjBZWG03QkLkZ+mKRoEAb8EZlibuJ8 gzq5cJs7aIWervLtDNfLtWo6LndeoQUClQzAFhzsMpsDMMeBggsmKHsZ+ZO7kmDoH/O8 IAnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=G5plSPE/Uxib6kvPHpt3CiHBEMx/604pEJ7hM8V0jsA=; fh=gLnjXy98rLNycbuqsruhRJ8dC66Zgz4/2R8bbhuuOyI=; b=hT4Midj//m/feaunU1pCJIgDU3DkW07sxySBqwgta0fv6GRhK6B25OxhUGs5LH9Y8p dkQ43FyNQRo0uhv2wVuy/YpJ2FSrk20QKfGn/pd5+EuAuzPi/ADvXf3i9R2hhtqnND66 Qn8GCBLGzeKb4wFaHc8mIsbYoBajFh2By5ieoY5/KT5EJq5q0lA2RnlptVuRhHg4ptCC qE5WDJVYRlDYUaYnbWtbCobeRWePEy+iMLnuyAJsM5vFbROoXedsE7naZ8kfWEQMWHKO U8LUF2z2GTqJ3VdC2pYnzLZh01E/iGtjKjF/VkA+FsW35i1nF1GkHxOcjhdGRxW5IzwC QdoA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775483613; x=1776088413; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=G5plSPE/Uxib6kvPHpt3CiHBEMx/604pEJ7hM8V0jsA=; b=HxyI1zZlG2b+qkLqJTQN2Th7GAt/IXlF6w/pnjP2qoXpwzo7lAix43FAU2aKGrluU/ 3VxpR8FzktwNr6P0FcjB4E94Q5SSUnCZRRksVXQTo+239GhI6itHADHSXD0PzybhG90r 0+TeNKPu8H0srmMV2i/YSnxfKWpzySidoAdXre57n1To1GMTYl6/0WNIQqyJunHSNyqG qKWXWCEg7oVKB57sYuWp/ZHoSuGQEOCL87THnmM6RcuECMJB7YhdHk1vv+GMcpNoGL20 EWHpAj0RXMJvHUIq0q1y1lg4yRx/3qX07b5HqkR25f2yJ+ST0uZHOez3JeqqzOQihQPU b0wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775483613; x=1776088413; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=G5plSPE/Uxib6kvPHpt3CiHBEMx/604pEJ7hM8V0jsA=; b=h48mUOivpMLwCy9xY6rKHkBjRefnIqHEa04+CZno4lv4UtYkOY/MuP3OeI2S4vY1V1 YnSkhlnmPu0uSJ5mG4qjQDGofdhtcx/x+zwjtSL6iqtVv5/hvYaLCBg8mgiq8ynaVzdI xbNLcrAJIeP3UK6Oe848Cx4QlN2ArKUQHl1Yk4F8s1/HsKqdwB1hIqxUxz5wmB0u+kyv QeXv+Ay6l8QLkUZBUdgyHNomrJSOlPPL7dnPVvwRIS9u52noHA6MNv3k0/4HHNuIQFfg rsJ6xV1t6Rf7bAiDbOAoKEIxcXA8HV0BxGuwMbD1dcFNNHRr9ozv57UyRbXe2DyZnEnh aoYQ== X-Forwarded-Encrypted: i=1; AJvYcCXIjtZQYUWmOGWZNSKRBGzKvYVK4JQeQQpxQEGr2m6SjqEOL9wdSZPFZl1zrM9XtIuWu/tDr8EQ8daPBIcC@postgresql.org X-Gm-Message-State: AOJu0YycRYd8WO9aCkudZcHYIpUM9vGr9Q3cn3p40sP6KWkwQMaq2aug r2YWcqYmbZqLbCMDQ+c0TBYwHEW0N4RjAHOpeA2zcC1iSLGvPBIGZpIriFtTS74Ku1MMGU2IQil rI86Sc250rT2zGjn3C/qgbQspuowOOpo= X-Gm-Gg: AeBDiev3Nf4TNyzCTkgLxxEt3WJxaOgt1sysnm6NCBC2s9VJkPVKbrWcgzdabNBWTWk Bf4WKJIxKqBAxTO5TmLT0xtPkSgNlJUmx7IA/CDH3KdDte184AM3GiX0l0Men6clBQsPcchqLeU k/2ytHfFXVuPji0QB/FVYgJV0ArGtueb4nYvbP1vQjB2HNfih8nd1sYT20rvuRViQOec4mewn/p vnQqmUhU3SZK7HkYKjryoPJAXp5/eW04ImFzAEqZ5vp3iD5EmoOzqCln4jJIu0wyMaiReNvpRg0 dLl9z18tjAYi6qgq/BRrFZZlTZR2G4ajZ+1w6E0DD4TgqDi88FQ= X-Received: by 2002:a5d:5d0f:0:b0:43c:ff58:35c2 with SMTP id ffacd0b85a97d-43d2929dc19mr19311134f8f.20.1775483612206; Mon, 06 Apr 2026 06:53:32 -0700 (PDT) MIME-Version: 1.0 References: <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> <6d4383eb-4aaa-47ae-bda8-ee40dc60ad84@iki.fi> In-Reply-To: <6d4383eb-4aaa-47ae-bda8-ee40dc60ad84@iki.fi> From: Ashutosh Bapat Date: Mon, 6 Apr 2026 19:23:19 +0530 X-Gm-Features: AQROBzApYpdoOMZOayUPGkFfkC74w11seNxNI8NbmZhE3OCQ7dno0syuKVUTDjg Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: Matthias van de Meent , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="00000000000002c74e064ecafef5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000002c74e064ecafef5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 6, 2026 at 4:58=E2=80=AFAM Heikki Linnakangas = wrote: > > On 05/04/2026 23:06, Heikki Linnakangas wrote: > > Here's patch version 12 [*]. I believe I've addressed all the feedback, > > and I feel this is in pretty good shape now. There hasn't been any big > > design changes lately. > > > > One notable change is that I replaced the separate {request|init|attach= } > > _fn_arg fields in ShmemCallbacks with a single 'opaque_arg' field, and > > added a brief comment to it. You both commented on whether we need that > > at all, and maybe you're right that we don't, but at least it's now jus= t > > one field rather than three. As before, callers can simply ignore it if > > they don't need it. > > After another round of comment cleanups and such, committed. Thanks! Thanks. Attached are rebased patches. 0001 is the same patch as submitted before to support resizable shared memory structures. 0002 changes resizable_shmem_usage() in the resizable_shmem test module to use /proc/self/smaps as suggested by Andres offline. Using smaps the function estimates the actual memory mapped against the main shared memory segment. Expecting this to fix failure reported on https://cirrus-ci.com/task/5501660157444096. 0003 adds some more diagnostic about shared memory segments in the server log to debug the failure in case it appears even with 0002 0004 addresses Matthias's comments in the discussion below On Mon, Apr 6, 2026 at 12:35=E2=80=AFAM Matthias van de Meent wrote: > > On Sun, 5 Apr 2026 at 13:20, Ashutosh Bapat > wrote: > > > > On Sun, Apr 5, 2026 at 2:36=E2=80=AFPM Matthias van de Meent > > wrote: > > > > > > On Sun, 5 Apr 2026, 07:59 Ashutosh Bapat, wrote: > > > > > > > > On Sun, Apr 5, 2026 at 11:18=E2=80=AFAM Ashutosh Bapat > > > > wrote: > > > > > > > > > > > I'm not opposed to HAVE_RESIZABLE_SHMEM, but is it universal enough o= n > > > its platforms to make it part of the exposed ABI for Shmem? I think > > > that we should expose the same functions and structs, and just have > > > the shmem internals throw an error if the configuration used by the > > > user implies the user wants to update shmem sizing when the system > > > doesn't support it. That would avoid extensions having to recompile > > > between have/have not systems that have an otherwise compatible ABI; > > > especially when those extensions don't actually need the resizeable > > > part of the shmem system. > > > > > > > I don't think I understand this fully. An extension may want to > > support a structure in both modes - fixed as well as resizable > > depending upon whether the latter is supported. If the structure has > > maximum_size always the extension code needs to set it to 0 when the > > resizable shared structure is not supported and set to actual > > maximum_size when the resizable structure is supported. Without a > > macro or some flag they can not do that. The flag/macro then becomes > > part ABI for shmem. Am I correct? > > That's not quite what I meant. > > With your patch, the size and field offsets in `struct > ShmemStructOpts` changes depending only on HAVE_RESIZABLE_SHMEM, as > does function's availability. This means that an extension that's > built without HAVE_RESIZABLE_SHMEM (an otherwise identical system) > can't correctly be loaded into a server that does have > HAVE_RESIZABLE_SHMEM defined - or at least it'll misbehave when it > tries to use the new shmem system without trying out resizeable areas. > > If instead the fields used for definining resizable shmem areas (and > the relevant functions) are always defined, but with runtime checks to > make sure that in !HAVE_RESIZEABLE_SHMEM nobody tries to use the > resizing functionality, then that'd reduce the unchecked hidden > incompatibility; assuming that no extension manually does memory > management syscall operations on those shmem areas. > > > Since extension binaries need to be > > built on different platforms anyway, that would automatically take > > care of building with or without HAVE_RESIZABLE_SHMEM. I feel it makes > > testing simpler since run time behaviour is fixed. Maybe I am missing > > something. Maybe a code diff or some example platform might make it > > more clear for me. > > I'm not entirely sure it would be automatic. Is it guaranteed that > HAVE_RESIZABLE_SHMEM won't change over the lifetime of any > distribution's platform? Because it's definitely not apparent to me > that rebuilding the new server version against an upgraded platform > (now possibly with HAVE_RESIZABLE_SHMEM) should also mean rebuilding > the extensions that have been built against a previous minor version > (without HAVE_RESIZABLE_SHMEM). > Please review changes in 0004 to see if they address your concerns. The structures and functions are same irrespective of HAVE_RESIZABLE_SHMEM. If HAVE_RESIZABLE_SHMEM is not defined, but maximum_size > 0, then the request to add this structure will fail. Thus on a server running with binary built with HAVE_RESIZABLE_SHMEM undefined, maximum_size =3D 0 always. Many of the code blocks don't need #ifdef HAVE_RESIZABLE_SHMEM blocks then. I think code this way is much more readable. However binary will contain more instructions than necessary - maybe the compiler can optimize those out. > > > > For now, it > > > > seems only for the sanity checks, but it could be seen as a useful > > > > safety feature. A difference in maximum_size and minimum_size would > > > > indicate that the structure is resizable. > > > > > > I think that's the right approach. > > > > > > I also think that introducing minimum_size is useful. Let's hear from > > Heikki before implementing it, in case he has a different opinion. I > > am not sure about min_allocated_space though - what use do you see for > > it. reserved_space is useful in pg_shmem_allocations() C function > > itself and gives impact to the fully grown structure. What would > > min_allocated_space give us? If at all it would be min_allocated_size > > not space since reserved space will never change. But even that I am > > not sure about. > > I'd say it's mostly interesting for people looking at or debugging > shmem allocations. Which isn't a huge group of developers or DBAs, but > if we're exposing data like this, and are going to allow resizing, > then someone could see some benefits from this. > > E.g., it may be useful to have the information to see how low the > currently running server can scale down its memory usage, so that the > admin can see whether a reboot is required if they want to allow it to > scale it down further (assuming there's a lower limit for allocations > - some shmem structs may have a lower scaling limit defined at > startup, while others may be able to scale linearly from 0 to 100) I guess, most of the time the lower limit will be a hard lower limit which could not be changed, so I guess the usecases are pretty narrow. 0005 adds minimum_size member alongside maximum_size as per the discussion starting [1]. I like the end result since maximum_size is managed consistently across fixed-size and resizable structures and also the condition to check whether a structure is resizable or fixed is more natural/logical. 0006 adds support to add mprotect appropriately on the used and unused part of a resizable structure, again per discussion starting [1]. This is still a bit rough, but review comments are welcome. I have kept these two patches separate from the main patch so that I can remove them if others feel they are not worth including in the feature. [1] https://www.postgresql.org/message-id/CAExHW5stth2mdXh3ukn9rWJ+Pruoat+5= tY3CYyM6KGqH2G30fQ@mail.gmail.com -- Best Wishes, Ashutosh Bapat --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0001-resizable-shared-memory-structures.patch" Content-Disposition: attachment; filename="v20260406-0001-resizable-shared-memory-structures.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937fa0 RnJvbSAwNmI4NjY5Y2ZmY2YwOTI5NDcwNmM1MzZhZGUzOTdhNzI2ZWQwNjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNjo1MToyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA2IDEvNl0gcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcwoK UmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBjYW4gYmUgYWxsb2NhdGVkIGJ5IHNw ZWNpZnlpbmcgYSBuZXcKbWVtYmVyIFNobWVtU3RydWN0T3B0czo6bWF4aW11bV9zaXplLiBBdCB0 aGUgc3RhcnR1cCBvciB3aGVuIHRoZQpzdHJ1Y3R1cmUgaXMgY3JlYXRlZCwgd2UgcmVzZXJ2ZSBh ZGRyZXNzIHNwYWNlIHdvcnRoIG1heGltdW1fc2l6ZSBpbiB0aGUKc2hhcmVkIG1lbW9yeSBzZWdt ZW50LiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBzdWJzeXN0ZW0gd2hpY2ggY3JlYXRlcwp0aGUg c3RydWN0dXJlIHdvdWxkIGluaXRpYWxpemUgb25seSB0aGUgaW5pdGlhbCBzaXplIHdvcnRoIG9m IG1lbW9yeQp3aGVuIGNyZWF0aW5nIGl0LiBJbiBhbiBtbWFwJ2VkIG1lbW9yeSwgdGhpcyBzaG91 bGQgYWxsb2NhdGUgbWVtb3J5CndvcnRoIHRoZSBpbml0aWFsIHNpemUuIEl0IHNob3VsZCBub3Qg YWxsb2NhdGUgbWF4aW11bV9zaXplIHdvcnRoIG9mCm1lbW9yeSBpbml0aWFsbHkuIEFzIHRoZSBz dHJ1Y3R1cmUgaXMgcmVzaXplZCB1c2luZyBTaG1lbVJlc2l6ZVN0cnVjdCgpCm1lbW9yeSBpcyBm cmVlZCBvciBhbGxvY2F0ZWQgaW4gY2h1bmtzIG9mIG1lbW9yeSBwYWdlcyB3aGVuIHNocmlua2lu ZwphbmQgZXhwYW5kaW5nIHRoZSBzdHJ1Y3R1cmUgcmVzcGVjdGl2ZWx5LgoKUmVzaXphYmxlIHNo YXJlZCBtZW1vcnkgZmVhdHVyZSBkZXBlbmRzIHVwb24gZXhpc3RlbmNlIG9mIGZ1bmN0aW9uCm1h ZHZpc2UoKSBhbmQgY29uc3RhbnRzIE1BRFZfUkVNT1ZFIGFuZCBNQURWX1dSSVRFX1BPUFVMQVRF LgoKT24gdGhlIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSB0aGVzZSwgd2UgZGlzYWJsZSB0 aGlzIGZlYXR1cmUgYXQKY29tcGlsZSB0aW1lLiBUaGUgY29tbWl0IGludHJvZHVjZXMgYSBjb21w aWxlIHRpbWUgZmxhZwpIQVZFX1JFU0laQUJMRV9TSE1FTSB3aGljaCBpcyBkZWZpbmVkIGlmIE1B RFZfUkVNT1ZFIGFuZApNQURWX1dSSVRFX1BPUFVMQVRFIGV4aXN0LiBXZSBkb24ndCBjaGVjayBl eGlzdGVuY2Ugb2YgbWFkdmlzZQpzZXBhcmF0ZWx5LCBzaW5jZSBleGlzdGVuY2Ugb2YgdGhlIGNv bnN0YW50cyBpbXBsaWVzIGV4aXN0ZW5jZSBvZiB0aGUKZnVuY3Rpb24uCgpIQVZFX1JFU0laQUJM RV9TSE1FTSBpcyBub3QgZGVmaW5lZCBpbiBFWEVDX0JBQ0tFTkQgYnVpbGRzIHNpbmNlIHRoYXQn cwpsYXJnZWx5IHVzZWQgZm9yIFdpbmRvd3Mgd2hlcmUgdGhlIEFQSXMgdG8gZnJlZSBhbmQgYWxs b2NhdGUgbWVtb3J5IGZyb20KYW5kIHRvIGEgZ2l2ZW4gYWRkcmVzcyBzcGFjZSBhcmUgbm90IGtu b3duIHRvIHRoZSBhdXRob3IgcmlnaHQgbm93LgpHaXZlbiB0aGF0IFBvc3RncmVTUUwgaXMgdXNl ZCB3aWRlbHkgb24gTGludXgsIHByb3ZpZGluZyB0aGlzIGZlYXR1cmUgb24KTGludXggY292ZXJz IGJlbmVmaXRzIG1vc3Qgb2YgaXRzIHVzZXJzLiBPbmNlIHdlIGZpZ3VyZSBvdXQgdGhlIHJlcXVp cmVkCldpbmRvd3MgQVBJcywgd2Ugd2lsbCBzdXBwb3J0IHRoaXMgZmVhdHVyZSBvbiBXaW5kb3dz IGFzIHdlbGwuCgpUaGUgZmVhdHVyZSBpcyBhbHNvIG5vdCBhdmFpbGFibGUgd2hlbiBTeXMtViBz aGFyZWQgbWVtb3J5IGlzIHVzZWQgZXZlbgpvbiBMaW51eCBzaW5jZSB3ZSBkbyBub3Qga25vdyB3 aGV0aGVyIHJlcXVpcmVkIFN5cy1WIEFQSXMgZXhpc3Q7IG1vc3RseQp0aGV5IGRvbid0LiBTaW5j ZSB0aGF0IGNvbWJpbmF0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQK dGVzdGluZywgbm90IHN1cHBvcnRpbmcgdGhlIGZlYXR1cmUgdGhlcmUgaXNuJ3QgZ29pbmcgdG8g aW1wYWN0ClBvc3RncmVTUUwgdXNlcnMuCgpVc2luZyBIQVZFX1JFU0laQUJMRV9TSE1FTSB3ZSBk aXNhYmxlIGNvbXBpbGluZyB0aGUgY29kZSByZWxhdGVkIHRvCnJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHN0cnVjdHVyZXMgb24gdGhlIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydAp0aGUg ZmVhdHVyZS4gQnV0IHdlIGFsc28gaGF2ZSBydW4gdGltZSBjaGVja3MgdG8gZGlzYWJsZSB0aGlz IGZlYXR1cmUKd2hlbiBTeXMtViBzaGFyZWQgbWVtb3J5IGlzIHVzZWQuIEluIG9yZGVyIHRvIGtu b3cgd2hldGhlciBhIGdpdmVuCmluc3RhbmNlIG9mIHJ1bm5pbmcgc2VydmVyIHN1cHBvcnRzIHJl c2l6YWJsZSBzdHJ1Y3R1cmVzLCB3ZSBoYXZlCmludHJvZHVjZWQgR1VDIGhhdmVfcmVzaXphYmxl X3NobWVtLgoKQXV0aG9yOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3Rn cmVzQGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAg ICAgICAgIHwgIDE1ICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAg ICAgICB8ICAzMCArLQogZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgIHwgIDU0ICsrKwogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jICAgICAgICAgICAgICAg ICB8ICA2OSArKysrCiBzcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVtLmMgICAgICAgICAgICAg ICAgfCAgMjMgKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICAgICAg ICB8IDI2OSArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0ICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgICAg ICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oICAgICAgICAg ICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaCAgICAgICAgICAg ICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgICAgICAgICAg ICAgfCAgMTYgKwogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZSAgICAgfCAg MjUgKysKIHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkICB8ICAz NiArKwogLi4uL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwgIHwgIDM3 ICsrCiAuLi4vbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMgfCAzMjYg KysrKysrKysrKysrKysrKysrCiAuLi4vcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5j b250cm9sICAgfCAgIDQgKwogLi4uL3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFibGVfc2ht ZW0ucGwgIHwgMjM5ICsrKysrKysrKysrKysKIC4uLi90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2ht ZW1fYWxsb2MucGwgICAgICB8ICAyMyArKwogLi4uL21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3No bWVtLS0xLjAuc3FsICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0 X3NobWVtLmMgICAgICB8ICAyMCArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICAgIHwgICA2ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICAgfCAgIDEgKwogMjggZmlsZXMgY2hhbmdlZCwgMTIyMyBpbnNlcnRpb25zKCsp LCAzNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jl c2l6YWJsZV9zaG1lbS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxl X3NobWVtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9z aG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbAoKZGlmZiAt LWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBmZjVkZDY0NDY4ZS4uN2Fj ZDg0NGNjYjIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAg LTE4OTUsNiArMTg5NSwxMCBAQCBBQ19DSEVDS19ERUNMUyhbbWVtc2V0X3NdLCBbXSwgW10sIFsj ZGVmaW5lIF9fU1REQ19XQU5UX0xJQl9FWFQxX18gMQogIyBUaGlzIGlzIHByb2JhYmx5IG9ubHkg cHJlc2VudCBvbiBtYWNPUywgYnV0IG1heSBhcyB3ZWxsIGNoZWNrIGFsd2F5cwogQUNfQ0hFQ0tf REVDTFMoRl9GVUxMRlNZTkMsIFtdLCBbXSwgWyNpbmNsdWRlIDxmY250bC5oPl0pCiAKKyMgTGlu dXgtc3BlY2lmaWMgbWFkdmlzZSBjb25zdGFudHMgbmVlZGVkIGZvciByZXNpemFibGUgc2hhcmVk IG1lbW9yeS4gU2VlIHNpbWlsYXIgY2hlY2tzIGluIG1lc29uLmJ1aWxkIGZvciBleHBsYW5hdGlv biBvZiB3aHkgdGhlc2UgY2hlY2tzIGFyZSBoZXJlLgorQUNfQ0hFQ0tfREVDTFMoW01BRFZfUE9Q VUxBVEVfV1JJVEVdLCBbXSwgW10sIFsjaW5jbHVkZSA8c3lzL21tYW4uaD5dKQorQUNfQ0hFQ0tf REVDTFMoW01BRFZfUkVNT1ZFXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9tbWFuLmg+XSkKKwog QUNfUkVQTEFDRV9GVU5DUyhtNF9ub3JtYWxpemUoWwogCWV4cGxpY2l0X2J6ZXJvCiAJZ2V0b3B0 CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKaW5kZXggYjQ0MjMxYTM2MmQuLjdhMDFmMmNmOTY3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0x MjExNCw2ICsxMjExNCwyMSBAQCBkeW5hbWljX2xpYnJhcnlfcGF0aCA9ICcvdXNyL2xvY2FsL2xp Yi9wb3N0Z3Jlc3FsOiRsaWJkaXInCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtaGF2ZS1yZXNpemFibGUtc2htZW0i IHhyZWZsYWJlbD0iaGF2ZV9yZXNpemFibGVfc2htZW0iPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ aGF2ZV9yZXNpemFibGVfc2htZW08L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aGF2ZV9yZXNpemFibGVf c2htZW08L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAg PC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBh cmE+CisgICAgICAgIFJlcG9ydHMgd2hldGhlciA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IGhhcyBiZWVuIGJ1aWx0CisgICAgICAgIHdpdGggPGxpdGVyYWw+SEFWRV9SRVNJ WkFCTEVfU0hNRU08L2xpdGVyYWw+IGVuYWJsZWQgYW5kIHN1cHBvcnRzCisgICAgICAgIDxsaW5r IGxpbmtlbmQ9InhmdW5jLXNoYXJlZC1hZGRpbi1yZXNpemFibGUiPlJlc2l6YWJsZSBzaGFyZWQg bWVtb3J5IHN0cnVjdHVyZXM8L2xpbms+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1o dWdlLXBhZ2VzLXN0YXR1cyIgeHJlZmxhYmVsPSJodWdlX3BhZ2VzX3N0YXR1cyI+CiAgICAgICA8 dGVybT48dmFybmFtZT5odWdlX3BhZ2VzX3N0YXR1czwvdmFybmFtZT4gKDx0eXBlPmVudW08L3R5 cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCAyZWJlYzY5 MjhkNS4uOTcxN2Y4NDM0YmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNDMsOCArNDI0 MywzNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94 YWN0cyBwcHgKICAgICAgICBTaXplIG9mIHRoZSBhbGxvY2F0aW9uIGluIGJ5dGVzIGluY2x1ZGlu ZyBwYWRkaW5nLiBGb3IgYW5vbnltb3VzCiAgICAgICAgYWxsb2NhdGlvbnMsIG5vIGluZm9ybWF0 aW9uIGFib3V0IHBhZGRpbmcgaXMgYXZhaWxhYmxlLCBzbyB0aGUKICAgICAgICA8bGl0ZXJhbD5z aXplPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+YWxsb2NhdGVkX3NpemU8L2xpdGVyYWw+IGNvbHVt bnMKLSAgICAgICB3aWxsIGFsd2F5cyBiZSBlcXVhbC4gUGFkZGluZyBpcyBub3QgbWVhbmluZ2Z1 bCBmb3IgZnJlZSBtZW1vcnksIHNvCi0gICAgICAgdGhlIGNvbHVtbnMgd2lsbCBiZSBlcXVhbCBp biB0aGF0IGNhc2UgYWxzby4KKyAgICAgICB3aWxsIGFsd2F5cyBiZSBlcXVhbC4gUGFkZGluZyBp cyBub3QgbWVhbmluZ2Z1bCBmb3IgZnJlZSBtZW1vcnksIHNvIHRoZQorICAgICAgIGNvbHVtbnMg d2lsbCBiZSBlcXVhbCBpbiB0aGF0IGNhc2UgYWxzby4gRm9yIHJlc2l6YWJsZSBhbGxvY2F0aW9u cyB3aGljaAorICAgICAgIG1heSBzcGFuIG11bHRpcGxlIG1lbW9yeSBwYWdlcywgdGhlIHBhZGRp bmcgaW5jbHVkZXMgdGhlIHBhZGRpbmcgZHVlIHRvCisgICAgICAgcGFnZSBhbGlnbm1lbnQuCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm1heGltdW1fc2l6ZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBNYXhp bXVtIHNpemUgaW4gYnl0ZXMgdGhhdCB0aGUgcmVzaXphYmxlIGFsbG9jYXRpb24gY2FuIGdyb3cg dG8uIFplcm8gZm9yCisgICAgICAgZml4ZWQtc2l6ZSBhbGxvY2F0aW9ucywgZm9yIGFub255bW91 cyBhbGxvY2F0aW9ucywgYW5kIGZvciBmcmVlIG1lbW9yeS4KKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+cmVzZXJ2ZWRfc3BhY2U8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgQWRkcmVzcyBzcGFjZSByZXNlcnZl ZCBmb3IgdGhlIGFsbG9jYXRpb24gaW4gYnl0ZXMuIEZvciByZXNpemFibGUKKyAgICAgICBzdHJ1 Y3R1cmVzLCB0aGlzIGlzIHRoZSB0b3RhbCBhZGRyZXNzIHNwYWNlIHJlc2VydmVkIHRvIGFjY29t bW9kYXRlCisgICAgICAgZ3Jvd3RoIHVwIHRvIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtX3NpemU8L3N0 cnVjdGZpZWxkPiwgYW5kIGlzIGdyZWF0ZXIKKyAgICAgICB0aGFuIG9yIGVxdWFsIHRvIDxzdHJ1 Y3RmaWVsZD5hbGxvY2F0ZWRfc2l6ZTwvc3RydWN0ZmllbGQ+LiBGb3IKKyAgICAgICBmaXhlZC1z aXplIGFsbG9jYXRpb25zLCBhbm9ueW1vdXMgYWxsb2NhdGlvbnMsIGFuZCBmcmVlIG1lbW9yeSB0 aGlzCisgICAgICAgaXMgc2FtZSBhcyA8c3RydWN0ZmllbGQ+YWxsb2NhdGVkX3NpemU8L3N0cnVj dGZpZWxkPi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1 bmMuc2dtbAppbmRleCA3ODljYWM5ZmNhYi4uM2QyNTEzOWMzMzQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC94ZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNzQ0 LDYgKzM3NDQsNjAgQEAgbXlfc2htZW1faW5pdCh2b2lkICphcmcpCiAgICAgIDwvcGFyYT4KICAg ICA8L3NlY3QzPgogCisgICAgPHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tcmVzaXphYmxl Ij4KKyAgICAgPHRpdGxlPlJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZXM8L3RpdGxl PgorCisgICAgIDxwYXJhPgorICAgICBBIHJlc2l6YWJsZSBtZW1vcnkgc3RydWN0dXJlIGNhbiBi ZSByZXF1ZXN0ZWQgdXNpbmcKKyAgICAgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVjdDwvZnVu Y3Rpb24+IGJ5IHBhc3NpbmcKKyAgICAgPHBhcmFtZXRlcj4ubWF4aW11bV9zaXplPC9wYXJhbWV0 ZXI+IGFsb25nIHdpdGgKKyAgICAgPHBhcmFtZXRlcj4uc2l6ZTwvcGFyYW1ldGVyPi4gPHBhcmFt ZXRlcj4ubWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+IGlzCisgICAgIG1heGltdW0gc2l6ZSB1cHRv IHdoaWNoIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgd2hlcmUgYXMKKyAgICAgPHBhcmFtZXRlcj4u c2l6ZTwvcGFyYW1ldGVyPiBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUuICBX aGlsZQorICAgICBjb250aWd1b3VzIGFkZHJlc3Mgc3BhY2Ugd29ydGggPHBhcmFtZXRlcj5tYXhp bXVtX3NpemU8L3BhcmFtZXRlcj4gaXMKKyAgICAgYWxsb2NhdGVkIHRvIHRoZSBzdHJ1Y3R1cmUs IG9ubHkgbWVtb3J5IHdvcnRoIDxwYXJhbWV0ZXI+c2l6ZTwvcGFyYW1ldGVyPgorICAgICBieXRl cyBpcyBhbGxvY2F0ZWQgaW5pdGlhbGx5LiBUaGUgPGZ1bmN0aW9uPmluaXRfZm48L2Z1bmN0aW9u PiBzaG91bGQgb25seQorICAgICBpbml0aWFsaXplIHRoZSA8cGFyYW1ldGVyPnNpemU8L3BhcmFt ZXRlcj4gYW1vdW50IG9mIG1lbW9yeS4gVGhlIGFjdHVhbAorICAgICBtZW1vcnkgYWxsb2NhdGVk IHRvIHRoaXMgc3RydWN0dXJlIGF0IGFueSBwb2ludCBpbiB0aW1lIGlzIGdpdmVuIGJ5IDxsaW5r CisgICAgIGxpbmtlbmQ9InZpZXctcGctc2htZW0tYWxsb2NhdGlvbnMiPjxzdHJ1Y3RuYW1lPnBn X3NobWVtX2FsbG9jYXRpb25zPC9zdHJ1Y3RuYW1lPi48c3RydWN0ZmllbGQ+YWxsb2NhdGVkX3Np emU8L3N0cnVjdGZpZWxkPjwvbGluaz4KKyAgICAgYW5kIHRoZSBhZGRyZXNzIHNwYWNlIHJlc2Vy dmVkIGZvciB0aGlzIHN0cnVjdHVyZSBpcyBnaXZlbiBieSA8bGluaworICAgICBsaW5rZW5kPSJ2 aWV3LXBnLXNobWVtLWFsbG9jYXRpb25zIj48c3RydWN0bmFtZT5wZ19zaG1lbV9hbGxvY2F0aW9u czwvc3RydWN0bmFtZT4uPHN0cnVjdGZpZWxkPnJlc2VydmVkX3NwYWNlPC9zdHJ1Y3RmaWVsZD48 L2xpbms+LgorICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBUaGUgc3RydWN0dXJlIGNh biBiZSByZXNpemVkIHVzaW5nIDxmdW5jdGlvbj5TaG1lbVJlc2l6ZVN0cnVjdDwvZnVuY3Rpb24+ IGJ5CisgICAgcGFzc2luZyBpdCB0aGUgc3RydWN0dXJlJ3MgPHN0cnVjdG5hbWU+U2htZW1TdHJ1 Y3REZXNjPC9zdHJ1Y3RuYW1lPiBhbmQgdGhlCisgICAgbmV3IHNpemUgd2hpY2ggY2FuIGJlIGFu eXdoZXJlIGJldHdlZW4gMCB0bworICAgIDxwYXJhbWV0ZXI+bWF4aW11bV9zaXplPC9wYXJhbWV0 ZXI+LiBJZiB0aGUgbmV3IHNpemUgaXMgc21hbGxlciB0aGFuIHRoZQorICAgIGN1cnJlbnQgc2l6 ZSBvZiB0aGUgc3RydWN0dXJlLCB0aGUgbWVtb3J5IGJldHdlZW4gdGhlIG5ldyBzaXplIGFuZCBj dXJyZW50CisgICAgc2l6ZSBpcyBmcmVlZCB3aGlsZSBrZWVwaW5nIHRoZSBjb250ZW50cyBvZiB0 aGUgbWVtb3J5IHVwdG8gbmV3IHNpemUgaW50YWN0LgorICAgIElmIHRoZSBuZXcgc2l6ZSBpcyBn cmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgc2l6ZSwgbWVtb3J5IGlzIGFsbG9jYXRlZCB1cHRvCisg ICAgbmV3IHNpemUgd2hpbGUga2VlcGluZyB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgc3Ry dWN0dXJlIGludGFjdC4gVGhlCisgICAgc3RhcnRpbmcgYWRkcmVzcyBvZiB0aGUgc3RydWN0dXJl IGRvZXMgbm90IGNoYW5nZSBiZWNhdXNlIG9mIHJlc2l6aW5nCisgICAgb3BlcmF0aW9uLiBUaGUg Y2FsbGVyIG1heSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGUgYWRkaXRpb25hbAorICAgIHN5bmNo cm9uaXphdGlvbiBiZXR3ZWVuIHRoZSByZXNpemluZyBwcm9jZXNzIGFuZCB0aGUgcHJvY2Vzc2Vz IHVzaW5nIHRoZQorICAgIHNoYXJlZCBzdHJ1Y3R1cmUuIEFsc28gYWNjZXNzaW5nIHRoZSBtZW1v cnkgYmV5b25kIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlCisgICAgc3RydWN0dXJlIHdpbGwgbm90 IGNhdXNlIGFueSBzZWdtZW50YXRpb24gZmF1bHQgb3IgYSBidXMgZXJyb3IuIE1lbW9yeSB3aWxs CisgICAgYmUgYWxsb2NhdGVkIGR1cmluZyBzdWNoIGEgd3JpdGUgYWNjZXNzLiAwcyB3aWxsIGJl IHJldHVybmVkIG9uIHN1Y2ggYSByZWFkCisgICAgYWNjZXNzIGlmIG1lbW9yeSBpcyBub3QgYWxs b2NhdGVkIHlldC4gVGhlIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIG1heQorICAgIHVzZSBt cHJvdGVjdCgpIHdpdGggUFJPVF9OT05FIGluIGV2ZXJ5IGJhY2tlbmQgdGhhdCBtYXkgYWNjZXNz IHRoaXMgbWVtb3J5CisgICAgdG8gZW5zdXJlIHRoYXQgc3VjaCBhbiBhY2Nlc3MgcmVzdWx0cyBp biBhIGZhdWx0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoaXMgZnVuY3Rpb25h bGl0eSBpcyBhdmFpbGFibGUgb25seSBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIHByb3ZpZGUgdGhl IEFQSXMKKyAgICBuZWNlc3NhcnkgdG8gcmVzZXJ2ZSBjb250aWd1b3VzIGFkZHJlc3Mgc3BhY2Ug YW5kIHRvIGFsbG9jYXRlIG9yIGZyZWUgbWVtb3J5CisgICAgaW4gdGhhdCBhZGRyZXNzIHNwYWNl IG9uIGRlbWFuZC4gTWFjcm8gPHN5bWJvbD5IQVZFX1JFU0laQUJMRV9TSE1FTTwvc3ltYm9sPgor ICAgIGlzIGRlZmluZWQgb24gc3VjaCBwbGF0Zm9ybXMuIEl0IGNhbiBiZSB1c2VkIHRvIGd1YXJk IGNvZGUgcmVsYXRlZCB0bworICAgIHJlc2l6aW5nIGEgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUu IFRoZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBvbiB3aXRoCisgICAgbW1hcCdlZCBtZW1v cnksIHNvIHN1YnN5c3RlbXMgd2hpY2ggdXNlIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzIG1heSBoYXZl IHRvCisgICAgYWRkdGlvbmFsbHkgZGlzYWJsZSByZXNpemFibGUgbWVtb3J5IHVzYWdlIHdoZW4g PHN5bWJvbD5zaGFyZWRfbWVtb3J5X3R5cGU8L3N5bWJvbD4gaXMgbm90CisgICAgPHN5bWJvbD5T SE1FTV9UWVBFX01NQVA8L3N5bWJvbD4uIEEgR1VDIDx4cmVmIGxpbmtlbmQ9Imd1Yy1oYXZlLXJl c2l6YWJsZS1zaG1lbSIvPiBpcyBzZXQgdG8KKyAgICA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gd2hl biB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIGluIGEgcnVubmluZworICAgIHNlcnZl ciwgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBvdGhlcndpc2UuCisgICAgPC9wYXJhPgorICAgIDwv c2VjdDM+CisKICAgICA8c2VjdDMgaWQ9InhmdW5jLXNoYXJlZC1hZGRpbi1keW5hbWljIj4KICAg ICAgPHRpdGxlPkFsbG9jYXRpbmcgRHluYW1pYyBTaGFyZWQgTWVtb3J5IEFmdGVyIFN0YXJ0dXA8 L3RpdGxlPgogCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDQz ZDVmZmMzMGIxLi43OTA4NDU3NjJlMSAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVz b24uYnVpbGQKQEAgLTI5MDQsNiArMjkwNCwyMiBAQCBkZWNsX2NoZWNrcyA9IFsKICAgWyd0aW1p bmdzYWZlX2JjbXAnLCAgJ3N0cmluZy5oJ10sCiBdCiAKKyMgTGludXgtc3BlY2lmaWMgbWFkdmlz ZSBjb25zdGFudHMgbmVlZGVkIGZvciByZXNpemFibGUgc2hhcmVkIG1lbW9yeS4KKyMgVXN1YWxs eSB3ZSB1c2UgQUNfQ0hFQ0tfREVDTFMgdG8gY2hlY2sgZm9yIGZ1bmN0aW9uIGRlY2xhcmF0aW9u cywgYnV0IGluIHRoaXMKKyMgY2FzZSB3ZSBhcmUgdXNpbmcgaXQgdG8gZGV0ZWN0IGV4aXN0ZW5j ZSBvZiBjb25zdGFudHMuIFRoZXNlIGNvbnN0YW50cyBhcmUKKyMgdXNlZCB0byBkZWZpbmUgSEFW RV9SRVNJWkFCTEVfU0hNRU0gd2hpY2ggaXMgdXNlZCBpbiBzdG9yYWdlL3BnX3NobWVtLmggYXMK KyMgd2VsbCBhcyBzdG9yYWdlL3NobWVtLmguIFRoZSBmaXJzdCBhYnN0cmFjdHMgdGhlIEFQSXMg dG8gYWxsb2NhdGUgc2hhcmVkCisjIG1lbW9yeSBzZWdtZW50cyBmcm9tIHRoZSBvcGVyYXRpbmcg c3lzdGVtIHdoZXJlYXMgdGhlIHNlY29uZCBhYnN0cmFjdHMgQVBJcyB0bworIyBhbGxvY2F0ZSBz aGFyZWQgbWVtb3J5IHRvIHZhcmlvdXMgc3Vic3lzdGVtcy4gU2luY2UgdGhleSBhcmUgcmVsYXRl ZCBidXQKKyMgb3J0aG9nb25hbCB0byBlYWNoIG90aGVyLCBpbmNsdWRpbmcgYW55IG9uZSBvZiB0 aGVtIGluIHRoZSBvdGhlciBmaWxlIGRvZXNuJ3QKKyMgbWFrZSBzZW5zZS4gcGdfY29uZmlnX21h bnVhbC5oIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIEhBVkVfUkVTSVpBQkxFX1NITUVNCisjIGNh biBiZSBkZWZpbmVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byBib3RoIHdpdGhvdXQgaW5jbHVkaW5n IHN5cy9tbWFuLmguIEJ1dAorIyBmb3IgdGhhdCB3ZSBuZWVkIGNvbnN0YW50cyB0aGF0IGluZGlj YXRlIHRoZSBleGlzdGVuY2Ugb2YgZm9sbG93aW5nIGRlZmluZXMuCitkZWNsX2NoZWNrcyArPSBb CisgIFsnTUFEVl9QT1BVTEFURV9XUklURScsICdzeXMvbW1hbi5oJ10sCisgIFsnTUFEVl9SRU1P VkUnLCAnc3lzL21tYW4uaCddLAorXQorCiAjIE5lZWQgdG8gY2hlY2sgZm9yIGZ1bmN0aW9uIGRl Y2xhcmF0aW9ucyBmb3IgdGhlc2UgZnVuY3Rpb25zLCBiZWNhdXNlCiAjIGNoZWNraW5nIGZvciBs aWJyYXJ5IHN5bWJvbHMgd291bGRuJ3QgaGFuZGxlIGRlcGxveW1lbnQgdGFyZ2V0CiAjIHJlc3Ry aWN0aW9ucyBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVt LmMgYi9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYwppbmRleCAyZTM4ODZjZjlmZS4uOGQ4 NTlkZmJiZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCisrKyBi L3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCkBAIC01ODksNiArNTg5LDI3IEBAIGNoZWNr X2h1Z2VfcGFnZV9zaXplKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3Vy Y2UpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHBhZ2Ugc2l6ZSBiZWluZyB1 c2VkIGJ5IHRoZSBzaGFyZWQgbWVtb3J5LgorICoKKyAqIFRoZSBmdW5jdGlvbiBzaG91bGQgYmUg Y2FsbGVkIG9ubHkgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gc2V0dXAuCisgKi8K K1NpemUKK0dldE9TUGFnZVNpemUodm9pZCkKK3sKKwlTaXplCQlvc19wYWdlX3NpemU7CisKKwlB c3NlcnQoaHVnZV9wYWdlc19zdGF0dXMgIT0gSFVHRV9QQUdFU19VTktOT1dOKTsKKworCW9zX3Bh Z2Vfc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKworCS8qIElmIGh1Z2UgcGFnZXMgYXJl IGFjdHVhbGx5IGluIHVzZSwgdXNlIGh1Z2UgcGFnZSBzaXplICovCisJaWYgKGh1Z2VfcGFnZXNf c3RhdHVzID09IEhVR0VfUEFHRVNfT04pCisJCUdldEh1Z2VQYWdlU2l6ZSgmb3NfcGFnZV9zaXpl LCBOVUxMKTsKKworCXJldHVybiBvc19wYWdlX3NpemU7Cit9CisKIC8qCiAgKiBDcmVhdGVzIGFu IGFub255bW91cyBtbWFwKCllZCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCiAgKgpAQCAtOTkxLDMg KzEwMTIsNTEgQEAgUEdTaGFyZWRNZW1vcnlEZXRhY2godm9pZCkKIAkJQW5vbnltb3VzU2htZW0g PSBOVUxMOwogCX0KIH0KKworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisvKgorICogTWFr ZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSBvZiBnaXZlbiBzaXplIGZyb20gdGhlIGdpdmVuIGFkZHJl c3MgaXMgcmVsZWFzZWQuCisgKgorICogVGhlIGFkZHJlc3MgYW5kIHNpemUgYXJlIGV4cGVjdGVk IHRvIGJlIHBhZ2UgYWxpZ25lZC4KKyAqCisgKiBPbmx5IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybXMg dGhhdCBzdXBwb3J0IGFub255bW91cyBzaGFyZWQgbWVtb3J5LgorICovCit2b2lkCitQR1NoYXJl ZE1lbW9yeUVuc3VyZUZyZWVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255 bW91c1NobWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJvbmx5IGFub255bW91cyBzaGFyZWQgbWVt b3J5IGNhbiBiZSBmcmVlZCIpKSk7CisKKwlBc3NlcnQoYWRkciA9PSAodm9pZCAqKSBUWVBFQUxJ R04oR2V0T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CisJQXNzZXJ0KHNpemUgPT0gVFlQRUFMSUdOKEdl dE9TUGFnZVNpemUoKSwgc2l6ZSkpOworCisJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9S RU1PVkUpID09IC0xKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBm cmVlIHNoYXJlZCBtZW1vcnk6ICVtIikpKTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGF0IHRo ZSBtZW1vcnkgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHRoZSBnaXZlbiBhZGRyZXNzIGlzIGFsbG9jYXRl ZC4KKyAqCisgKiBUaGUgYWRkcmVzcyBhbmQgc2l6ZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcGFnZSBh bGlnbmVkLgorICoKKyAqIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQg YW5vbnltb3VzIHNoYXJlZCBtZW1vcnkuCisgKi8KK3ZvaWQKK1BHU2hhcmVkTWVtb3J5RW5zdXJl QWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255bW91c1NobWVt KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkgZXJybXNnKCJvbmx5IGFub255bW91cyBzaGFyZWQgbWVtb3J5IGNhbiBi ZSBhbGxvY2F0ZWQgYXQgcnVudGltZSIpKSk7CisKKwlBc3NlcnQoYWRkciA9PSAodm9pZCAqKSBU WVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CisJQXNzZXJ0KHNpemUgPT0gVFlQRUFM SUdOKEdldE9TUGFnZVNpemUoKSwgc2l6ZSkpOworCisJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwg TUFEVl9QT1BVTEFURV9XUklURSkgPT0gLTEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1z ZygiY291bGQgbm90IGFsbG9jYXRlIHNoYXJlZCBtZW1vcnk6ICVtIikpKTsKK30KKyNlbmRpZgkJ CQkJCQkvKiBIQVZFX1JFU0laQUJMRV9TSE1FTSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9ydC93aW4zMl9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zaG1lbS5jCmluZGV4 IDc5NGU0ZmNiMmFkLi5kYzJlZTAxODg0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC93 aW4zMl9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwpAQCAtNjQ4 LDMgKzY0OCwyNiBAQCBjaGVja19odWdlX3BhZ2Vfc2l6ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4 dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCX0KIAlyZXR1cm4gdHJ1ZTsKIH0KKworLyoKKyAqIEdl dCB0aGUgcGFnZSBzaXplIHVzZWQgYnkgdGhlIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIGZ1 bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeSBoYXMg YmVlbiBzZXR1cC4KKyAqLworU2l6ZQorR2V0T1NQYWdlU2l6ZSh2b2lkKQoreworCVNZU1RFTV9J TkZPIHN5c2luZm87CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCisJQXNzZXJ0KGh1Z2VfcGFnZXNf c3RhdHVzICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7CisKKwlHZXRTeXN0ZW1JbmZvKCZzeXNpbmZv KTsKKwlvc19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNpemU7CisKKwkvKiBJZiBodWdlIHBh Z2VzIGFyZSBhY3R1YWxseSBpbiB1c2UsIHVzZSBodWdlIHBhZ2Ugc2l6ZSAqLworCWlmIChodWdl X3BhZ2VzX3N0YXR1cyA9PSBIVUdFX1BBR0VTX09OKQorCQlHZXRIdWdlUGFnZVNpemUoJm9zX3Bh Z2Vfc2l6ZSwgTlVMTCk7CisKKwlyZXR1cm4gb3NfcGFnZV9zaXplOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKaW5kZXggMWViZmZlNWEzMmEuLjAzZGU1ZDg4ZDUxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTE5LDExICsxOSwxMSBAQAogICogbWV0aG9kcykuICBUaGUgcm91dGluZXMg aW4gdGhpcyBmaWxlIGFyZSB1c2VkIGZvciBhbGxvY2F0aW5nIGFuZAogICogYmluZGluZyB0byBz aGFyZWQgbWVtb3J5IGRhdGEgc3RydWN0dXJlcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBwcm92aWRl cyBmYWNpbGl0aWVzIHRvIGFsbG9jYXRlIGZpeGVkLXNpemUgc3RydWN0dXJlcyBpbiBzaGFyZWQK LSAqIG1lbW9yeSwgZm9yIHRoaW5ncyBsaWtlIHZhcmlhYmxlcyBzaGFyZWQgYmV0d2VlbiBhbGwg YmFja2VuZCBwcm9jZXNzZXMuCi0gKiBFYWNoIHN1Y2ggc3RydWN0dXJlIGhhcyBhIHN0cmluZyBu YW1lIHRvIGlkZW50aWZ5IGl0LCBzcGVjaWZpZWQgd2hlbiBpdCBpcwotICogcmVxdWVzdGVkLiAg c2htZW1faGFzaC5jIHByb3ZpZGVzIGEgc2hhcmVkIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24g b24gdG9wCi0gKiBvZiB0aGF0LgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZmFjaWxpdGllcyB0 byBhbGxvY2F0ZSBmaXhlZC1zaXplIGFzIHdlbGwgYXMgcmVzaXphYmxlCisgKiBzdHJ1Y3R1cmVz IGluIHNoYXJlZCBtZW1vcnksIGZvciB0aGluZ3MgbGlrZSB2YXJpYWJsZXMgc2hhcmVkIGJldHdl ZW4gYWxsCisgKiBiYWNrZW5kIHByb2Nlc3Nlcy4gRWFjaCBzdWNoIHN0cnVjdHVyZSBoYXMgYSBz dHJpbmcgbmFtZSB0byBpZGVudGlmeSBpdCwKKyAqIHNwZWNpZmllZCB3aGVuIGl0IGlzIHJlcXVl c3RlZC4gIHNobWVtX2hhc2guYyBwcm92aWRlcyBhIHNoYXJlZCBoYXNoIHRhYmxlCisgKiBpbXBs ZW1lbnRhdGlvbiBvbiB0b3Agb2YgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzLgogICoKICAqIFNoYXJl ZCBtZW1vcnkgYXJlYXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGFsbG9jYXRlZCBhZnRlciBwb3N0 bWFzdGVyCiAgKiBzdGFydHVwLCBhbHRob3VnaCB3ZSBkbyBhbGxvdyBzbWFsbCBhbGxvY2F0aW9u cyBsYXRlciBmb3IgdGhlIGJlbmVmaXQgb2YKQEAgLTEwMiw2ICsxMDIsMjEgQEAKICAqICgqb3B0 aW9ucy0+cHRyKSwgYW5kIGNhbGxzIHRoZSBhdHRhY2hfZm4gY2FsbGJhY2ssIGlmIGFueSwgZm9y IGFkZGl0aW9uYWwKICAqIHBlci1iYWNrZW5kIHNldHVwLgogICoKKyAqIFJlc2l6YWJsZSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBJbiBvcmRlciB0byBhbGxvY2F0ZSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBz dHJ1Y3R1cmVzLCBzZXQKKyAqIFNobWVtUmVxdWVzdFN0cnVjdE9wdHM6Om1heGltdW1fc2l6ZSB0 byB0aGUgbWF4aW11bSBzaXplIHRoYXQgdGhlIHN0cnVjdHVyZQorICogY2FuIGdyb3cgdG8uICBU aGUgYWRkcmVzcyBzcGFjZSBmb3IgdGhlIG1heGltdW0gc2l6ZSB3aWxsIGJlIHJlc2VydmVkIGF0 CisgKiBzdGFydHVwLCBidXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBvciBmcmVlZCBhcyB0aGUgc3Ry dWN0dXJlIGdyb3dzIG9yIHNocmlua3MKKyAqIHJlc3BlY3RpdmVseS4gU2htZW1SZXF1ZXN0U3Ry dWN0T3B0czo6c2l6ZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBpbml0aWFsIHNpemUKKyAqIG9mIHRo ZSBzdHJ1Y3R1cmUsIHdoaWNoIGlzIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCBhdCB0 aGUgc3RhcnR1cC4KKyAqIEFmdGVyIHN0YXJ0dXAsIHRoZSBzdHJ1Y3R1cmUgY2FuIGJlIHJlc2l6 ZWQgYnkgY2FsbGluZyBTaG1lbVJlc2l6ZVN0cnVjdCgpIGJ5CisgKiBwYXNzaW5nIGl0IHRoZSBT aG1lbVN0cnVjdERlc2MgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBuZXcgc2l6ZS4KKyAqCisg KiBXaGlsZSByZXNpemFibGUgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBhZnRlciB0aGUgc3Rh cnR1cCwgdGhlIG1lbW9yeQorICogYXZhaWxhYmxlIGZvciB0aGVtIGlzIHF1aXRlIGxpbWl0ZWQu CisgKgogICogTGVnYWN5IFNobWVtSW5pdFN0cnVjdCgpL1NobWVtSW5pdEhhc2goKSBmdW5jdGlv bnMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgpAQCAtMTY3LDYgKzE4MiwxOCBAQCB0eXBlZGVmIHN0cnVjdAogCVNobWVtUmVxdWVzdEtp bmQga2luZDsKIH0gU2htZW1SZXF1ZXN0OwogCisvKgorICogQSBjb252ZW5pZW50IG1hY3JvIHRv IGdldCB0aGUgc3BhY2UgcmVxdWlyZWQgZm9yIGEgc2htZW0gcmVxdWVzdCBjb25zaXN0ZW50bHku CisgKiBBIHJlc2l6YWJsZSBzdHJ1Y3R1cmUsIHJlcXVlc3RlZCBieSBub24temVybyBtYXhpbXVt X3NpemUsIHJlcXVpcmVzIHNwYWNlIGZvcgorICogaXRzIG1heGltdW0gc2l6ZS4KKyAqLworI2lm ZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisjZGVmaW5lIFNITUVNX1JFUVVFU1RfU1BBQ0VfU0la RShyZXF1ZXN0KSBcCisJKChyZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCA/IChy ZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXplIDogKHJlcXVlc3QpLT5vcHRpb25zLT5zaXpl KQorI2Vsc2UKKyNkZWZpbmUgU0hNRU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3QpICgocmVx dWVzdCktPm9wdGlvbnMtPnNpemUpCisjZW5kaWYKKwogc3RhdGljIExpc3QgKnBlbmRpbmdfc2ht ZW1fcmVxdWVzdHM7CiAKIC8qCkBAIC0yNjksNiArMjk2LDEwIEBAIHR5cGVkZWYgc3RydWN0CiAJ dm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCiAJU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwogCVNpemUJ CWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLworI2lmZGVm IEhBVkVfUkVTSVpBQkxFX1NITUVNCisJU2l6ZQkJbWF4aW11bV9zaXplOwkvKiB0aGUgbWF4aW11 bSBzaXplIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgdG8gKi8KKwlTaXplCQlyZXNlcnZlZF9zcGFj ZTsgLyogdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgKi8KKyNlbmRpZgogfSBTaG1l bUluZGV4RW50OwogCiAvKiBUbyBnZXQgcmVsaWFibGUgcmVzdWx0cyBmb3IgTlVNQSBpbnF1aXJ5 IHdlIG5lZWQgdG8gInRvdWNoIHBhZ2VzIiBvbmNlICovCkBAIC0yNzcsNiArMzA4LDkgQEAgc3Rh dGljIGJvb2wgZmlyc3ROdW1hVG91Y2ggPSB0cnVlOwogc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2Fs bGJhY2tzQWZ0ZXJTdGFydHVwKGNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOwogc3Rh dGljIHZvaWQgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOwogc3Rh dGljIGJvb2wgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9v bCBtaXNzaW5nX29rKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorc3RhdGljIFNpemUg RXN0aW1hdGVBbGxvY2F0ZWRTaXplKFNobWVtSW5kZXhFbnQgKmVudHJ5KTsKKyNlbmRpZgogCiBE YXR1bQkJcGdfbnVtYV9hdmFpbGFibGUoUEdfRlVOQ1RJT05fQVJHUyk7CiAKQEAgLTM0Nyw2ICsz ODEsMTEgQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwoU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zLCBT aG1lbVJlcXVlc3RLaW5kIGtpbmQpCiAJCWlmIChvcHRpb25zLT5zaXplIDw9IDAgJiYgb3B0aW9u cy0+c2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQogCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgc2l6ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJ CQkgb3B0aW9ucy0+c2l6ZSwgb3B0aW9ucy0+bmFtZSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVf U0hNRU0KKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDAgJiYgb3B0aW9ucy0+bWF4aW11 bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNc IiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7CisjZW5kaWYK IAl9CiAJZWxzZQogCXsKQEAgLTM1NSwxMiArMzk0LDI4IEBAIFNobWVtUmVxdWVzdEludGVybmFs KFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlpZiAo b3B0aW9ucy0+c2l6ZSA8PSAwKQogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2l6ZSAlemQgZm9y IHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCQkgb3B0aW9ucy0+c2l6ZSwg b3B0aW9ucy0+bmFtZSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkJaWYgKG9wdGlv bnMtPm1heGltdW1fc2l6ZSA9PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQkJZWxvZyhF UlJPUiwgIlNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUgY2Fubm90IGJlIHVzZWQgZHVyaW5nIHN0 YXJ0dXAiKTsKKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDApCisJCQllbG9nKEVSUk9S LCAiaW52YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9y IFwiJXNcIiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7Cisj ZW5kaWYKIAl9CiAKIAlpZiAob3B0aW9ucy0+YWxpZ25tZW50ICE9IDAgJiYgcGdfbmV4dHBvd2Vy Ml9zaXplX3Qob3B0aW9ucy0+YWxpZ25tZW50KSAhPSBvcHRpb25zLT5hbGlnbm1lbnQpCiAJCWVs b2coRVJST1IsICJpbnZhbGlkIGFsaWdubWVudCAlenUgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVz dCBmb3IgXCIlc1wiIiwKIAkJCSBvcHRpb25zLT5hbGlnbm1lbnQsIG9wdGlvbnMtPm5hbWUpOwog CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXpl ID4gMCAmJiBvcHRpb25zLT5zaXplID4gb3B0aW9ucy0+bWF4aW11bV9zaXplKQorCQllbG9nKEVS Uk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIFwiJXNcIiBzaG91bGQgaGF2 ZSBtYXhpbXVtIHNpemUgKCV6ZCkgZ3JlYXRlciB0aGFuIHNpemUgKCV6ZCkiLAorCQkJIG9wdGlv bnMtPm5hbWUsIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+c2l6ZSk7CisKKwlpZiAo b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCAmJiBzaGFyZWRfbWVtb3J5X3R5cGUgIT0gU0hNRU1f VFlQRV9NTUFQKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgcmVxdWly ZXMgc2hhcmVkX21lbW9yeV90eXBlID0gbW1hcCIpOworI2VuZGlmCisKIAkvKiBDaGVjayB0aGF0 IHdlJ3JlIGluIHRoZSByaWdodCBzdGF0ZSAqLwogCWlmIChzaG1lbV9yZXF1ZXN0X3N0YXRlICE9 IFNSU19SRVFVRVNUSU5HKQogCQllbG9nKEVSUk9SLCAiU2htZW1SZXF1ZXN0U3RydWN0IGNhbiBv bmx5IGJlIGNhbGxlZCBmcm9tIGEgc2htZW1fcmVxdWVzdCBjYWxsYmFjayIpOwpAQCAtMzgyLDgg KzQzNywxMyBAQCBTaG1lbVJlcXVlc3RJbnRlcm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMs IFNobWVtUmVxdWVzdEtpbmQga2luZCkKIH0KIAogLyoKLSAqCVNobWVtR2V0UmVxdWVzdGVkU2l6 ZSgpIC0tLSBlc3RpbWF0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgcmVnaXN0ZXJlZCBzaGFyZWQK LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHN0cnVjdHVyZXMuCisgKiBT aG1lbUdldFJlcXVlc3RlZFNpemUoKSAtLS0gZXN0aW1hdGUgdGhlIHRvdGFsIHNpemUgb2YgYWxs IHJlZ2lzdGVyZWQgc2hhcmVkCisgKiBtZW1vcnkgc3RydWN0dXJlcy4KKyAqCisgKiBXaGVuIG1h eGltdW1fc2l6ZSBpcyBzcGVjaWZpZWQgd2hlbiByZXF1ZXN0aW5nIHJlc2l6YWJsZSBzaGFyZWQg bWVtb3J5CisgKiBzdHJ1Y3R1cmVzLiBXZSB1c2UgdGhhdCwgaW5zdGVhZCBvZiB0aGUgKGluaXRp YWwpIHNpemUsIGZvciB0aGUgZXN0aW1hdGlvbiwKKyAqIHRvIGVuc3VyZSB0aGF0IGVub3VnaCBz cGFjZSBpcyByZXNlcnZlZCBmb3IgZ3Jvd2luZyB0aGUgcmVzaXphYmxlIHN0cnVjdHVyZXMKKyAq IHRvIGl0cyBtYXhpbXVtIHNpemUuCiAgKgogICogVGhpcyBpcyBjYWxsZWQgYXQgcG9zdG1hc3Rl ciBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBoYXMKICAqIGJlZW4g Y3JlYXRlZC4KQEAgLTQwOCw3ICs0NjgsNyBAQCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCkK IAkJCWFsaWdubWVudCA9IFBHX0NBQ0hFX0xJTkVfU0laRTsKIAkJc2l6ZSA9IFRZUEVBTElHTihh bGlnbm1lbnQsIHNpemUpOwogCi0JCXNpemUgPSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRp b25zLT5zaXplKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNITUVNX1JFUVVFU1RfU1BBQ0Vf U0laRShyZXF1ZXN0KSk7CiAJfQogCiAJcmV0dXJuIHNpemU7CkBAIC01MTUsNiArNTc1LDcgQEAg SW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJU2htZW1JbmRleEVu dCAqaW5kZXhfZW50cnk7CiAJYm9vbAkJZm91bmQ7CiAJc2l6ZV90CQlhbGxvY2F0ZWRfc2l6ZTsK KwlzaXplX3QJCXJlcXVlc3RlZF9zaXplOwogCXZvaWQJICAgKnN0cnVjdFB0cjsKIAogCS8qIGxv b2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4ICovCkBAIC01MzIsMTAgKzU5MywxOCBAQCBJbml0 U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIFdl IGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUgc2hhcmVkIG1lbW9yeSBpbmRleC4gIEFsbG9jYXRl IHJlcXVlc3RlZAotCSAqIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IGZvciBpdCwgYW5kIGluaXRp YWxpemUgdGhlIGluZGV4IGVudHJ5LgorCSAqIFdlIGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUg c2hhcmVkIG1lbW9yeSBpbmRleC4gQWxsb2NhdGUgcmVxdWVzdGVkCisJICogYW1vdW50IG9mIGFk ZHJlc3Mgc3BhY2UgaW4gdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgaXQsIGFuZCBkbwor CSAqIGJhc2ljIGluaXRpYWxpemlvbi4gVGhlIG1lbW9yeSBnZXRzIGFsbG9jYXRlZCBkdXJpbmcg aW5pdGlhbGl6YXRpb24gYXMKKwkgKiB0aGUgY29ycmVzcG9uZGluZyBtZW1vcnkgcGFnZXMgYXJl IHdyaXR0ZW4gdG8uICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UKKwkgKiBmb3IgYSByZXNpemFibGUg c3RydWN0dXJlIHRvIGdyb3cgdG8gaXRzIG1heGltdW0gc2l6ZS4gSXQgaXMgZXhwZWN0ZWQKKwkg KiB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBjYWxsYmFjayB3aWxsIHVzZSBvbmx5IGFzIG11Y2gg bWVtb3J5IGFzIHRoZQorCSAqIGluaXRpYWwgc2l6ZSBvZiB0aGUgcmVzaXphYmxlIHN0cnVjdHVy ZS4gKFdlbGwsIGlmIGl0IGRvZXNuJ3QsIG1vcmUKKwkgKiBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0 ZWQgaW5pdGlhbGx5IHRoYW4gZXhwZWN0ZWQsIG5vIGZ1cnRoZXIgaGFybSBpcworCSAqIGRvbmUu KQogCSAqLwotCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6 ZSwKKwlyZXF1ZXN0ZWRfc2l6ZSA9IFNITUVNX1JFUVVFU1RfU1BBQ0VfU0laRShyZXF1ZXN0KTsK KwlzdHJ1Y3RQdHIgPSBTaG1lbUFsbG9jUmF3KHJlcXVlc3RlZF9zaXplLAogCQkJCQkJCSAgcmVx dWVzdC0+b3B0aW9ucy0+YWxpZ25tZW50LAogCQkJCQkJCSAgJmFsbG9jYXRlZF9zaXplKTsKIAlp ZiAoc3RydWN0UHRyID09IE5VTEwpCkBAIC01NDQsMTMgKzYxMywyMiBAQCBJbml0U2htZW1JbmRl eEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCkKIAkJaGFzaF9zZWFyY2goU2htZW1JbmRleCwg bmFtZSwgSEFTSF9SRU1PVkUsIE5VTEwpOwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJIGVycm1zZygibm90IGVub3VnaCBzaGFyZWQg bWVtb3J5IGZvciBkYXRhIHN0cnVjdHVyZSIKKwkJCQkgZXJybXNnKCJub3QgZW5vdWdoIHNoYXJl ZCBtZW1vcnkgc3BhY2UgZm9yIGRhdGEgc3RydWN0dXJlIgogCQkJCQkJIiBcIiVzXCIgKCV6dSBi eXRlcyByZXF1ZXN0ZWQpIiwKLQkJCQkJCW5hbWUsIHJlcXVlc3QtPm9wdGlvbnMtPnNpemUpKSk7 CisJCQkJCQluYW1lLCByZXF1ZXN0ZWRfc2l6ZSkpKTsKIAl9CiAJaW5kZXhfZW50cnktPnNpemUg PSByZXF1ZXN0LT5vcHRpb25zLT5zaXplOwogCWluZGV4X2VudHJ5LT5hbGxvY2F0ZWRfc2l6ZSA9 IGFsbG9jYXRlZF9zaXplOwogCWluZGV4X2VudHJ5LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKyNp ZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWluZGV4X2VudHJ5LT5yZXNlcnZlZF9zcGFjZSA9 IGFsbG9jYXRlZF9zaXplOworCWluZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgPSByZXF1ZXN0LT5v cHRpb25zLT5tYXhpbXVtX3NpemU7CisJaWYgKHJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6 ZSA+IDApCisJeworCQkvKiBBZGp1c3QgYWxsb2NhdGVkIHNpemUgb2YgYSByZXNpemFibGUgc3Ry dWN0dXJlLiAqLworCQlpbmRleF9lbnRyeS0+YWxsb2NhdGVkX3NpemUgPSBFc3RpbWF0ZUFsbG9j YXRlZFNpemUoaW5kZXhfZW50cnkpOworCX0KKyNlbmRpZgogCiAJLyogSW5pdGlhbGl6ZSBkZXBl bmRpbmcgb24gdGhlIGtpbmQgb2Ygc2htZW0gYXJlYSBpdCBpcyAqLwogCXN3aXRjaCAocmVxdWVz dC0+a2luZCkKQEAgLTU5NSw3ICs2NzMsNyBAQCBBdHRhY2hTaG1lbUluZGV4RW50cnkoU2htZW1S ZXF1ZXN0ICpyZXF1ZXN0LCBib29sIG1pc3Npbmdfb2spCiAJCXJldHVybiBmYWxzZTsKIAl9CiAK LQkvKiBDaGVjayB0aGF0IHRoZSBzaXplIGluIHRoZSBpbmRleCBtYXRjaGVzIHRoZSByZXF1ZXN0 ICovCisJLyogQ2hlY2sgdGhhdCB0aGUgc2l6ZXMgaW4gdGhlIGluZGV4IG1hdGNoIHRoZSByZXF1 ZXN0LiAqLwogCWlmIChpbmRleF9lbnRyeS0+c2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25zLT5zaXpl ICYmCiAJCXJlcXVlc3QtPm9wdGlvbnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0la RSkKIAl7CkBAIC02MDUsNiArNjgzLDE4IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJl cXVlc3QgKnJlcXVlc3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCW5hbWUsIGluZGV4X2VudHJ5 LT5zaXplLCByZXF1ZXN0LT5vcHRpb25zLT5zaXplKSkpOwogCX0KIAorI2lmZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCisJaWYgKGluZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgIT0gcmVxdWVzdC0+ b3B0aW9ucy0+bWF4aW11bV9zaXplICYmCisJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6 ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0aCIg XAorCQkJCQkJIiBkaWZmZXJlbnQgbWF4aW11bV9zaXplOiBleGlzdGluZyAlenUsIHJlcXVlc3Rl ZCAlenUiLAorCQkJCQkJbmFtZSwgaW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSwKKwkJCQkJCXJl cXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSkpKTsKKwl9CisjZW5kaWYKKwogCS8qCiAJICog UmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBwb2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBh Y3Rpb25zIHRvCiAJICogYXR0YWNoIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBhcmVh IGl0IGlzLgpAQCAtNjI2LDYgKzcxNiwxMTUgQEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVt UmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQogCXJldHVybiB0cnVlOwogfQogCisj aWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKy8qCisgKiBFc3RpbWF0ZSB0aGUgYWN0dWFsIG1l bW9yeSBhbGxvY2F0ZWQgZm9yIGEgcmVzaXphYmxlIHN0cnVjdHVyZS4KKyAqCisgKiAuLi4gYmFz ZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBpbiBwYWdl cy4KKyAqCisgKiBUaGUgbWVtb3J5IHBhZ2VzIGNvdmVyZWQgYnkgdGhlIGN1cnJlbnQgc2l6ZSBv ZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUgYXJlCisgKiBmdWxseSBhbGxvY2F0ZWQgd2hlbiB0aGUg Y3VycmVudGx5IGFsbG9jYXRlZCBwYXJ0IG9mIHRoZSBzdHJ1Y3R1cmUgaXMgd3JpdHRlbgorICog dG8uIFRoZSBtZW1vcnkgcGFnZSB3aGVyZSB0aGUgbWF4aW1hbCBzdHJ1Y3R1cmUgZW5kcyBhbHNv IGhvc3RzIHRoZSBuZXh0CisgKiBzdHJ1Y3R1cmUsIHVubGVzcyB0aGUgbWF4aW1hbCBzdHJ1Y3R1 cmUgZW5kcyBvbiBhIHBhZ2UgYm91bmRhcnkuIEhlbmNlIHRoYXQKKyAqIHBhZ2UgaXMgYWxsb2Nh dGVkIHdoZW4gdGhlIG5leHQgc3RydWN0dXJlIGlzIHdyaXR0ZW4gdG8uIFRoZSBtZW1vcnkgcGFn ZXMKKyAqIGJldHdlZW4gdGhlIHBhZ2Ugd2hlcmUgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGVuZHMg YW5kIHRoZSBwYWdlIHdoZXJlIHRoZSBuZXh0CisgKiBzdHJ1Y3R1cmUgc3RhcnRzIHJlbWFpbiB1 bmFsbG9jYXRlZC4gVGh1cyB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgYQorICogcmVzaXphYmxl IHN0cnVjdHVyZSBjYW4gYmUgZXN0aW1hdGVkIGFzIHRoZSB0b3RhbCBhZGRyZXNzIHNwYWNlIHJl c2VydmVkIGZvcgorICogdGhlIHN0cnVjdHVyZSBtaW51cyB0aGUgdW5hbGxvY2F0ZWQgbWVtb3J5 IHBhZ2VzIGJldHdlZW4gdGhlIGN1cnJlbnQgZW5kIGFuZAorICogdGhlIG5leHQgc3RydWN0dXJl LgorICovCitzdGF0aWMgU2l6ZQorRXN0aW1hdGVBbGxvY2F0ZWRTaXplKFNobWVtSW5kZXhFbnQg KmVudHJ5KQoreworCVNpemUJCXBhZ2Vfc2l6ZSA9IEdldE9TUGFnZVNpemUoKTsKKwljaGFyCSAg ICphbGlnbl9lbmQgPSAoY2hhciAqKSBUWVBFQUxJR04ocGFnZV9zaXplLCAoY2hhciAqKSBlbnRy eS0+bG9jYXRpb24gKyBlbnRyeS0+c2l6ZSk7CisJY2hhcgkgICAqZmxvb3JfbWF4X2VuZCA9IChj aGFyICopIFRZUEVBTElHTl9ET1dOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgZW50cnktPmxvY2F0aW9u ICsgZW50cnktPm1heGltdW1fc2l6ZSk7CisKKwlBc3NlcnQoZW50cnktPm1heGltdW1fc2l6ZSA+ PSBlbnRyeS0+c2l6ZSk7CisJQXNzZXJ0KGVudHJ5LT5yZXNlcnZlZF9zcGFjZSA+PSBlbnRyeS0+ bWF4aW11bV9zaXplKTsKKworCWlmIChhbGlnbl9lbmQgPCBmbG9vcl9tYXhfZW5kKQorCQlyZXR1 cm4gZW50cnktPnJlc2VydmVkX3NwYWNlIC0gKGZsb29yX21heF9lbmQgLSBhbGlnbl9lbmQpOwor CisJcmV0dXJuIGVudHJ5LT5yZXNlcnZlZF9zcGFjZTsKK30KKworLyoKKyAqIFNobWVtUmVzaXpl U3RydWN0KCkgLS0tIHJlc2l6ZSBhIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZS4K KyAqCisgKiBJZiB0aGUgc3RydWN0dXJlIGlzIGJlaW5nIHNocnVuaywgdGhlIG1lbW9yeSBwYWdl cyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkCisgKiBhcmUgZnJlZWQuIElmIHRoZSBzdHJ1Y3R1 cmUgaXMgYmVpbmcgZXhwYW5kZWQsIHRoZSBtZW1vcnkgcGFnZXMgdGhhdCBhcmUKKyAqIG5lZWRl ZCBmb3IgdGhlIG5ldyBzaXplIGFyZSBhbGxvY2F0ZWQuIFNlZSBFc3RpbWF0ZUFsbG9jYXRlZFNp emUoKSBmb3IKKyAqIGV4cGxhbmF0aW9uIG9mIHdoaWNoIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgZm9y IGEgcmVzaXphYmxlIHN0cnVjdHVyZS4KKyAqLwordm9pZAorU2htZW1SZXNpemVTdHJ1Y3QoY29u c3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6ZSkKK3sKKwlTaG1lbUluZGV4RW50ICpyZXN1bHQ7 CisJYm9vbAkJZm91bmQ7CisJU2l6ZQkJcGFnZV9zaXplID0gR2V0T1NQYWdlU2l6ZSgpOworCWNo YXIJICAgKm5ld19lbmQ7CisKKwlBc3NlcnQobmV3X3NpemUgPiAwKTsKKworCS8qCisJICogUmVz aXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBt bWFwJ2VkCisJICogbWVtb3J5LgorCSAqLworCUFzc2VydChzaGFyZWRfbWVtb3J5X3R5cGUgPT0g U0hNRU1fVFlQRV9NTUFQKTsKKworCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4ICov CisJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4TG9jaywgTFdfRVhDTFVTSVZFKTsKKwlyZXN1bHQg PSAoU2htZW1JbmRleEVudCAqKSBoYXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0ZJ TkQsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNn KCJzaG1lbSBzdHJ1Y3QgXCIlc1wiIGlzIG5vdCBpbml0aWFsaXplZCIsIG5hbWUpKSk7CisKKwlB c3NlcnQocmVzdWx0KTsKKworCWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8PSAwKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBu b3QgcmVzaXphYmxlIiwgbmFtZSkpKTsKKworCWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8IG5l d19zaXplKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1JFU09VUkNFUyksCisJCQkJIGVycm1zZygibm90IGVub3VnaCBhZGRyZXNzIHNwYWNlIGlz IHJlc2VydmVkIGZvciByZXNpemluZyBzdHJ1Y3R1cmUgXCIlc1wiIiBcCisJCQkJCQkiKHJlcXVp cmVkICV6dSBieXRlcywgcmVzZXJ2ZWQgJXp1IGJ5dGVzKSIsCisJCQkJCQluYW1lLCBuZXdfc2l6 ZSwgcmVzdWx0LT5tYXhpbXVtX3NpemUpKSk7CisKKwkvKgorCSAqIFdoZW4gc2hyaW5raW5nIHRo ZSBtZW1vcnkgZnJvbSB0aGUgcGFnZSBhbGlnbmVkIG5ldyBlbmQgdG8gdGhlIHN0YXJ0IG9mCisJ ICogdGhlIHBhZ2UgY29udGFpbmluZyBlbmQgb2YgdGhlIHJlc2VydmVkIHNwYWNlIGlzIG5vdCBy ZXF1aXJlZC4gV2hlcmVhcworCSAqIHdoZW4gZXhwYW5kaW5nIHRoZSBtZW1vcnkgZnJvbSB0aGUg c3RhcnQgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUKKwkgKiBzdGFydCBvZiB0aGUgc3RydWN0 dXJlIHRvIHRoZSBwYWdlIGFsaWduZWQgbmV3IGVuZCBpcyByZXF1aXJlZC4KKwkgKi8KKwluZXdf ZW5kID0gKGNoYXIgKikgVFlQRUFMSUdOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0LT5sb2Nh dGlvbiArIG5ld19zaXplKTsKKwlpZiAobmV3X3NpemUgPCByZXN1bHQtPnNpemUpCisJeworCQlj aGFyCSAgICptYXhfZW5kID0gKGNoYXIgKikgVFlQRUFMSUdOX0RPV04ocGFnZV9zaXplLCAoY2hh ciAqKSByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5tYXhpbXVtX3NpemUpOworCisJCWlmICht YXhfZW5kID4gbmV3X2VuZCkKKwkJCVBHU2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQobmV3X2VuZCwg bWF4X2VuZCAtIG5ld19lbmQpOworCX0KKwllbHNlIGlmIChuZXdfc2l6ZSA+IHJlc3VsdC0+c2l6 ZSkKKwl7CisJCWNoYXIJICAgKnN0cnVjdF9zdGFydCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dO KHBhZ2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbik7CisKKwkJaWYgKG5ld19lbmQg PiBzdHJ1Y3Rfc3RhcnQpCisJCQlQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRlZChzdHJ1Y3Rf c3RhcnQsIG5ld19lbmQgLSBzdHJ1Y3Rfc3RhcnQpOworCX0KKworCS8qIFVwZGF0ZSBzaG1lbSBp bmRleCBlbnRyeS4gKi8KKwlyZXN1bHQtPnNpemUgPSBuZXdfc2l6ZTsKKwlyZXN1bHQtPmFsbG9j YXRlZF9zaXplID0gRXN0aW1hdGVBbGxvY2F0ZWRTaXplKHJlc3VsdCk7CisKKwlMV0xvY2tSZWxl YXNlKFNobWVtSW5kZXhMb2NrKTsKK30KKyNlbmRpZgkJCQkJCQkvKiBIQVZFX1JFU0laQUJMRV9T SE1FTSAqLworCiAvKgogICoJSW5pdFNobWVtQWxsb2NhdG9yKCkgLS0tIHNldCB1cCBiYXNpYyBw b2ludGVycyB0byBzaGFyZWQgbWVtb3J5LgogICoKQEAgLTczMiw2ICs5MzEsMTAgQEAgSW5pdFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcikKIAkJQXNzZXJ0KCFmb3VuZCk7CiAJ CXJlc3VsdC0+c2l6ZSA9IFNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplOwogCQlyZXN1bHQtPmFs bG9jYXRlZF9zaXplID0gU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemU7CisjaWZkZWYgSEFWRV9S RVNJWkFCTEVfU0hNRU0KKwkJcmVzdWx0LT5tYXhpbXVtX3NpemUgPSAwOworCQlyZXN1bHQtPnJl c2VydmVkX3NwYWNlID0gcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZTsKKyNlbmRpZgogCQlyZXN1bHQt PmxvY2F0aW9uID0gU2htZW1BbGxvY2F0b3ItPmluZGV4OwogCX0KIH0KQEAgLTEwNzUsNyArMTI3 OCw3IEBAIG11bF9zaXplKFNpemUgczEsIFNpemUgczIpCiBEYXR1bQogcGdfZ2V0X3NobWVtX2Fs bG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpF U19DT0xTIDQKKyNkZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNgogCVJldHVyblNldElu Zm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlIQVNI X1NFUV9TVEFUVVMgaHN0YXQ7CiAJU2htZW1JbmRleEVudCAqZW50OwpAQCAtMTA5Nyw3ICsxMzAw LDIzIEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQl2YWx1 ZXNbMV0gPSBJbnQ2NEdldERhdHVtKChjaGFyICopIGVudC0+bG9jYXRpb24gLSAoY2hhciAqKSBT aG1lbVNlZ0hkcik7CiAJCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0oZW50LT5zaXplKTsKIAkJ dmFsdWVzWzNdID0gSW50NjRHZXREYXR1bShlbnQtPmFsbG9jYXRlZF9zaXplKTsKKyNpZmRlZiBI QVZFX1JFU0laQUJMRV9TSE1FTQorCQl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKGVudC0+bWF4 aW11bV9zaXplKTsKKwkJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bShlbnQtPnJlc2VydmVkX3Nw YWNlKTsKKworCQkvKgorCQkgKiBLZWVwIHRyYWNrIG9mIHRoZSB0b3RhbCByZXNlcnZlZCBzcGFj ZSBmb3IgbmFtZWQgc2htZW0gYXJlYXMsIHRvIGJlCisJCSAqIGFibGUgdG8gY2FsY3VsYXRlIHRo ZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBhbGxvY2F0ZWQgZm9yCisJCSAqIGFub255bW91cyBh cmVhcyBhbmQgdGhlIGFtb3VudCBvZiBmcmVlIHNoYXJlZCBtZW1vcnkgYXQgdGhlIGVuZCBvZgor CQkgKiB0aGUgc2VnbWVudC4KKwkJICovCisJCW5hbWVkX2FsbG9jYXRlZCArPSBlbnQtPnJlc2Vy dmVkX3NwYWNlOworI2Vsc2UKKwkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSgwKTsKKwkJdmFs dWVzWzVdID0gSW50NjRHZXREYXR1bShlbnQtPmFsbG9jYXRlZF9zaXplKTsKKwogCQluYW1lZF9h bGxvY2F0ZWQgKz0gZW50LT5hbGxvY2F0ZWRfc2l6ZTsKKyNlbmRpZgogCiAJCXR1cGxlc3RvcmVf cHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCiAJCQkJCQkJIHZh bHVlcywgbnVsbHMpOwpAQCAtMTEwOCw2ICsxMzI3LDggQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbnVsbHNbMV0gPSB0cnVlOwogCXZhbHVlc1syXSA9IElu dDY0R2V0RGF0dW0oU2htZW1BbGxvY2F0b3ItPmZyZWVfb2Zmc2V0IC0gbmFtZWRfYWxsb2NhdGVk KTsKIAl2YWx1ZXNbM10gPSB2YWx1ZXNbMl07CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSgw KTsKKwl2YWx1ZXNbNV0gPSB2YWx1ZXNbMl07CiAJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZv LT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBvdXRw dXQgYXMtb2YteWV0IHVudXNlZCBzaGFyZWQgbWVtb3J5ICovCkBAIC0xMTE2LDYgKzEzMzcsOCBA QCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAludWxsc1sxXSA9 IGZhbHNlOwogCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0oU2htZW1TZWdIZHItPnRvdGFsc2l6 ZSAtIFNobWVtQWxsb2NhdG9yLT5mcmVlX29mZnNldCk7CiAJdmFsdWVzWzNdID0gdmFsdWVzWzJd OworCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0oMCk7CisJdmFsdWVzWzVdID0gdmFsdWVzWzJd OwogCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERl c2MsIHZhbHVlcywgbnVsbHMpOwogCiAJTFdMb2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7CkBA IC0xMzAzLDIzICsxNTI2LDkgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVO Q1RJT05fQVJHUykKIFNpemUKIHBnX2dldF9zaG1lbV9wYWdlc2l6ZSh2b2lkKQogewotCVNpemUJ CW9zX3BhZ2Vfc2l6ZTsKLSNpZmRlZiBXSU4zMgotCVNZU1RFTV9JTkZPIHN5c2luZm87Ci0KLQlH ZXRTeXN0ZW1JbmZvKCZzeXNpbmZvKTsKLQlvc19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNp emU7Ci0jZWxzZQotCW9zX3BhZ2Vfc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSNlbmRp ZgotCiAJQXNzZXJ0KElzVW5kZXJQb3N0bWFzdGVyKTsKLQlBc3NlcnQoaHVnZV9wYWdlc19zdGF0 dXMgIT0gSFVHRV9QQUdFU19VTktOT1dOKTsKLQotCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9PSBI VUdFX1BBR0VTX09OKQotCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7CiAK LQlyZXR1cm4gb3NfcGFnZV9zaXplOworCXJldHVybiBHZXRPU1BhZ2VTaXplKCk7CiB9CiAKIERh dHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDdhOGE1 ZDA3NjRjLi4xOGNiMjUxNmQ5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQKQEAgLTEyMTEsNiArMTIxMSwxMyBAQAogICBtYXggPT4gJzEwMDAuMCcsCiB9LAog Cit7IG5hbWUgPT4gJ2hhdmVfcmVzaXphYmxlX3NobWVtJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRl eHQgPT4gJ1BHQ19JTlRFUk5BTCcsIGdyb3VwID0+ICdQUkVTRVRfT1BUSU9OUycsCisgIHNob3J0 X2Rlc2MgPT4gJ1Nob3dzIHdoZXRoZXIgdGhlIHJ1bm5pbmcgc2VydmVyIHN1cHBvcnRzIHJlc2l6 YWJsZSBzaGFyZWQgbWVtb3J5LicsCisgIGZsYWdzID0+ICdHVUNfTk9UX0lOX1NBTVBMRSB8IEdV Q19ESVNBTExPV19JTl9GSUxFJywKKyAgdmFyaWFibGUgPT4gJ2hhdmVfcmVzaXphYmxlX3NobWVt X2VuYWJsZWQnLAorICBib290X3ZhbCA9PiAnSEFWRV9SRVNJWkFCTEVfU0hNRU1fRU5BQkxFRCcs Cit9LAorCiB7IG5hbWUgPT4gJ2hiYV9maWxlJywgdHlwZSA9PiAnc3RyaW5nJywgY29udGV4dCA9 PiAnUEdDX1BPU1RNQVNURVInLCBncm91cCA9PiAnRklMRV9MT0NBVElPTlMnLAogICBzaG9ydF9k ZXNjID0+ICdTZXRzIHRoZSBzZXJ2ZXJcJ3MgImhiYSIgY29uZmlndXJhdGlvbiBmaWxlLicsCiAg IGZsYWdzID0+ICdHVUNfU1VQRVJVU0VSX09OTFknLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwppbmRleCBkOWNhMTNiYWZmOS4uNmJiMDhkZDEwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCkBAIC02NTMsNiArNjUzLDEzIEBAIHN0YXRpYyBib29sIGFzc2VydF9lbmFi bGVkID0gREVGQVVMVF9BU1NFUlRfRU5BQkxFRDsKICNlbmRpZgogc3RhdGljIGJvb2wgZXhlY19i YWNrZW5kX2VuYWJsZWQgPSBFWEVDX0JBQ0tFTkRfRU5BQkxFRDsKIAorI2lmZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCisjZGVmaW5lIEhBVkVfUkVTSVpBQkxFX1NITUVNX0VOQUJMRUQgdHJ1ZQor I2Vsc2UKKyNkZWZpbmUgSEFWRV9SRVNJWkFCTEVfU0hNRU1fRU5BQkxFRCBmYWxzZQorI2VuZGlm CitzdGF0aWMgYm9vbCBoYXZlX3Jlc2l6YWJsZV9zaG1lbV9lbmFibGVkID0gSEFWRV9SRVNJWkFC TEVfU0hNRU1fRU5BQkxFRDsKKwogc3RhdGljIGNoYXIgKnJlY292ZXJ5X3RhcmdldF90aW1lbGlu ZV9zdHJpbmc7CiBzdGF0aWMgY2hhciAqcmVjb3ZlcnlfdGFyZ2V0X3N0cmluZzsKIHN0YXRpYyBj aGFyICpyZWNvdmVyeV90YXJnZXRfeGlkX3N0cmluZzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDNlYTE3ZmM1NjI5Li4zMjk0NWQ3M2YzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC04NzAyLDggKzg3MDIsOCBAQAogeyBvaWQgPT4gJzUwNTInLCBkZXNjciA9PiAnYWxsb2NhdGlv bnMgZnJvbSB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQnLAogICBwcm9uYW1lID0+ICdw Z19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLCBwcm9yb3dzID0+ICc1MCcsIHByb3JldHNldCA9PiAn dCcsCiAgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJn dHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50OH0n LCBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLG9m ZixzaXplLGFsbG9jYXRlZF9zaXplfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4 LGludDgsaW50OCxpbnQ4LGludDh9JywgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sb30nLAor ICBwcm9hcmduYW1lcyA9PiAne25hbWUsb2ZmLHNpemUsYWxsb2NhdGVkX3NpemUsbWF4aW11bV9z aXplLHJlc2VydmVkX3NwYWNlfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3NobWVtX2FsbG9jYXRp b25zJywKICAgcHJvYWNsID0+ICd7UE9TVEdSRVM9WCxwZ19yZWFkX2FsbF9zdGF0cz1YfScgfSwK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9w Z19jb25maWcuaC5pbgppbmRleCA5ZjZkNTEyMzQ3ZS4uOGYyYTU5ZWMzYTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5o LmluCkBAIC04NSw2ICs4NSwxNCBAQAogICAgZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9ERUNMX0Zf RlVMTEZTWU5DCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBv ZiBgTUFEVl9QT1BVTEFURV9XUklURScsIGFuZCB0byAwCisgICBpZiB5b3UgZG9uJ3QuICovCisj dW5kZWYgSEFWRV9ERUNMX01BRFZfUE9QVUxBVEVfV1JJVEUKKworLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBNQURWX1JFTU9WRScsIGFuZCB0byAwIGlmIHlv dQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX01BRFZfUkVNT1ZFCisKIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgbWVtc2V0X3MnLCBhbmQgdG8g MCBpZiB5b3UKICAgIGRvbid0LiAqLwogI3VuZGVmIEhBVkVfREVDTF9NRU1TRVRfUwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oIGIvc3JjL2luY2x1ZGUvcGdfY29u ZmlnX21hbnVhbC5oCmluZGV4IDUyMWI0OWI4ODg4Li5iMDlkNmM5MTMyNCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZp Z19tYW51YWwuaApAQCAtMTMxLDYgKzEzMSwxNSBAQAogI2RlZmluZSBFWEVDX0JBQ0tFTkQKICNl bmRpZgogCisvKgorICogSEFWRV9SRVNJWkFCTEVfU0hNRU0gaW5kaWNhdGVzIHdoZXRoZXIgcmVz aXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBhcmUKKyAqIHN1cHBvcnRlZC4gVGhlIGlt cGxlbWVudGF0aW9uIHJlcXVpcmVzIExpbnV4LXNwZWNpZmljIG1hZHZpc2UgY29uc3RhbnRzCisg KiAoTUFEVl9SRU1PVkUgYW5kIE1BRFZfUE9QVUxBVEVfV1JJVEUpLgorICovCisjaWYgSEFWRV9E RUNMX01BRFZfUkVNT1ZFICYmIEhBVkVfREVDTF9NQURWX1BPUFVMQVRFX1dSSVRFICYmICFkZWZp bmVkKEVYRUNfQkFDS0VORCkKKyNkZWZpbmUgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKyNlbmRpZgor CiAvKgogICogVVNFX1BPU0lYX0ZBRFZJU0UgY29udHJvbHMgd2hldGhlciBQb3N0Z3JlcyB3aWxs IGF0dGVtcHQgdG8gdXNlIHRoZQogICogcG9zaXhfZmFkdmlzZSgpIGtlcm5lbCBjYWxsLiAgVXN1 YWxseSB0aGUgYXV0b21hdGljIGNvbmZpZ3VyZSB0ZXN0cyBhcmUKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0u aAppbmRleCAxMGM3YjA2NTg2MS4uM2Q1YWNlYmE1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcGdfc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmgK QEAgLTg5LDYgKzg5LDExIEBAIGV4dGVybiBQR1NobWVtSGVhZGVyICpQR1NoYXJlZE1lbW9yeUNy ZWF0ZShTaXplIHNpemUsCiAJCQkJCQkJCQkJICAgUEdTaG1lbUhlYWRlciAqKnNoaW0pOwogZXh0 ZXJuIGJvb2wgUEdTaGFyZWRNZW1vcnlJc0luVXNlKHVuc2lnbmVkIGxvbmcgaWQxLCB1bnNpZ25l ZCBsb25nIGlkMik7CiBleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeURldGFjaCh2b2lkKTsKKyNp ZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlFbnN1 cmVGcmVlZCh2b2lkICphZGRyLCBTaXplIHNpemUpOworZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1v cnlFbnN1cmVBbGxvY2F0ZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKTsKKyNlbmRpZgogZXh0ZXJu IHZvaWQgR2V0SHVnZVBhZ2VTaXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdz KTsKK2V4dGVybiBTaXplIEdldE9TUGFnZVNpemUodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQ R19TSE1FTV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKaW5kZXggYWY3ZmU4OTNiYzQuLmYzNTYwMjdlNTAw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9zaG1lbS5oCkBAIC01Nyw2ICs1NywxOSBAQCB0eXBlZGVmIHN0cnVjdCBTaG1l bVN0cnVjdE9wdHMKIAkgKi8KIAlzaXplX3QJCWFsaWdubWVudDsKIAorI2lmZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCisKKwkvKgorCSAqIE1heGltdW0gc2l6ZSB0aGlzIHN0cnVjdHVyZSBjYW4g Z3JvdyB1cHRvIGluIGZ1dHVyZS4gVGhlIG1lbW9yeSBpcyBub3QKKwkgKiBhbGxvY2F0ZWQgcmln aHQgYXdheSBidXQgdGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzcyBzcGFjZSBpcyByZXNlcnZlZCBz bworCSAqIHRoYXQgbWVtb3J5IGNhbiBiZSBtYXBwZWQgdG8gaXQgd2hlbiB0aGUgc3RydWN0dXJl IGdyb3dzLiBUeXBpY2FsbHkKKwkgKiBzaG91bGQgYmUgdXNlZCBmb3IgbGFyZ2UgcmVzaXphYmxl IHN0cnVjdHVyZXMgd2hpY2ggbmVlZCBzZXZlcmFsIHBhZ2VzCisJICogd29ydGggb2YgY29udGln dW91cyBtZW1vcnkuIFNob3VsZCBiZSBzZXQgdG8gMCBmb3IgZml4ZWQtc2l6ZQorCSAqIHN0cnVj dHVyZXMuCisJICovCisJc3NpemVfdAkJbWF4aW11bV9zaXplOworI2VuZGlmCisKIAkvKgogCSAq IFdoZW4gdGhlIHNobWVtIGFyZWEgaXMgaW5pdGlhbGl6ZWQgb3IgYXR0YWNoZWQgdG8sIHBvaW50 ZXIgdG8gaXQgaXMKIAkgKiBzdG9yZWQgaW4gKnB0ci4gIEl0IHVzdWFsbHkgcG9pbnRzIHRvIGEg Z2xvYmFsIHZhcmlhYmxlLCB1c2VkIHRvIGFjY2VzcwpAQCAtMTY4LDYgKzE4MSw5IEBAIHR5cGVk ZWYgc3RydWN0IFNobWVtQ2FsbGJhY2tzCiAKIGV4dGVybiB2b2lkIFJlZ2lzdGVyU2htZW1DYWxs YmFja3MoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcyk7CiBleHRlcm4gYm9vbCBTaG1l bUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIpOworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NI TUVNCitleHRlcm4gdm9pZCBTaG1lbVJlc2l6ZVN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXpl IG5ld19zaXplKTsKKyNlbmRpZgogCiAvKgogICogVGhlc2UgbWFjcm9zIHByb3ZpZGUgc3ludGFj dGljIHN1Z2FyIGZvciBjYWxsaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUK aW5kZXggZjFiMDRjOTk5NjkuLjJhMWU3NDZiZjBjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTE0LDYgKzE0 LDcgQEAgU1VCRElSUyA9IFwKIAkJICBsaWJwcV9waXBlbGluZSBcCiAJCSAgb2F1dGhfdmFsaWRh dG9yIFwKIAkJICBwbHNhbXBsZSBcCisJCSAgcmVzaXphYmxlX3NobWVtIFwKIAkJICBzcGdpc3Rf bmFtZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKIAkJICB0ZXN0X2JpbmFyeWhlYXAgXApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVz b24uYnVpbGQKaW5kZXggZmM5OTU1MmQ5YWIuLmNkOTRlMWZlYTE1IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVp bGQKQEAgLTEzLDYgKzEzLDcgQEAgc3ViZGlyKCdsaWJwcV9waXBlbGluZScpCiBzdWJkaXIoJ25i dHJlZScpCiBzdWJkaXIoJ29hdXRoX3ZhbGlkYXRvcicpCiBzdWJkaXIoJ3Bsc2FtcGxlJykKK3N1 YmRpcigncmVzaXphYmxlX3NobWVtJykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRp cignc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi44NmJmMTdiZWY0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjUgQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJy ZXNpemFibGVfc2htZW0gLSB0ZXN0IG1vZHVsZSBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnki CisKK01PRFVMRVMgPSByZXNpemFibGVfc2htZW0KKworRVhURU5TSU9OID0gcmVzaXphYmxlX3No bWVtCitEQVRBID0gcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsCisKK1RBUF9URVNUUyA9IDEKKwor IyBUaGlzIHRlc3QgcmVxdWlyZXMgbGlicmFyeSB0byBiZSBsb2FkZWQgYXQgdGhlIHNlcnZlciBz dGFydCwgc28gZGlzYWJsZQorIyBpbnN0YWxsY2hlY2sKK05PX0lOU1RBTExDSEVDSyA9IDEKKwor aWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQo UEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90 ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRv cF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi40OTNiYmJjOTVjMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzYgQEAKKyMg c3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQKKworcmVzaXphYmxl X3NobWVtX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Jlc2l6YWJsZV9zaG1lbS5jJywKKykKKworaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHJlc2l6YWJsZV9zaG1lbV9zb3VyY2VzICs9IHJj X2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUn LCAncmVzaXphYmxlX3NobWVtJywKKyAgICAnLS1GSUxFREVTQycsICdyZXNpemFibGVfc2htZW0g LSB0ZXN0IG1vZHVsZSBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnknLF0pCitlbmRpZgorCity ZXNpemFibGVfc2htZW0gPSBzaGFyZWRfbW9kdWxlKCdyZXNpemFibGVfc2htZW0nLAorICByZXNp emFibGVfc2htZW1fc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVz dF9pbnN0YWxsX2xpYnMgKz0gcmVzaXphYmxlX3NobWVtCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9 IGZpbGVzKAorICAncmVzaXphYmxlX3NobWVtLmNvbnRyb2wnLAorICAncmVzaXphYmxlX3NobWVt LS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICdyZXNpemFibGVfc2htZW0n LAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3Vy cmVudF9idWlsZF9kaXIoKSwKKyAgJ3RhcCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8w MDFfcmVzaXphYmxlX3NobWVtLnBsJywKKyAgICBdLAorICAgICMgVGhpcyB0ZXN0IHJlcXVpcmVz IGxpYnJhcnkgdG8gYmUgbG9hZGVkIGF0IHRoZSBzZXJ2ZXIgc3RhcnQsIHNvIGRpc2FibGUKKyAg ICAjIGluc3RhbGxjaGVjaworICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwKKyAgfSwKK30KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1l bS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9z aG1lbS0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzFi Y2I2MTE3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9z aG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwKQEAgLTAsMCArMSwzNyBAQAorLyogc3JjL3Rl c3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICovCisK Ky0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZp YSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gcmVzaXphYmxl X3NobWVtIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gRnVuY3Rpb24gdG8gcmVzaXpl IHRoZSB0ZXN0IHN0cnVjdHVyZSBpbiB0aGUgc2hhcmVkIG1lbW9yeQorQ1JFQVRFIEZVTkNUSU9O IHJlc2l6YWJsZV9zaG1lbV9yZXNpemUobmV3X2VudHJpZXMgaW50ZWdlcikKK1JFVFVSTlMgdm9p ZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlv biB0byB3cml0ZSBkYXRhIHRvIGFsbCBlbnRyaWVzIGluIHRoZSB0ZXN0IHN0cnVjdHVyZSBpbiBz aGFyZWQgbWVtb3J5CistLSBXcml0aW5nIGFsbCB0aGUgZW50cmllcyBtYWtlcyBzdXJlIHRoYXQg dGhlIG1lbW9yeSBpcyBhY3R1YWxseSBhbGxvY2F0ZWQgYW5kCistLSBtYXBwZWQgdG8gdGhlIHBy b2Nlc3MsIHNvIHRoYXQgd2UgY2FuIGxhdGVyIG1lYXN1cmUgdGhlIG1lbW9yeSB1c2FnZS4KK0NS RUFURSBGVU5DVElPTiByZXNpemFibGVfc2htZW1fd3JpdGUoZW50cnlfdmFsdWUgaW50ZWdlcikK K1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOwor CistLSBGdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpZWQgbnVtYmVyIG9mIGluaXRpYWwg ZW50cmllcyBoYXZlIGV4cGVjdGVkIHZhbHVlLgorLS0gUmVhZGluZyBhbGwgdGhlIGVudHJpZXMg bWFrZXMgc3VyZSB0aGF0IHRoZSBtZW1vcnkgaXMgYWN0dWFsbHkgbWFwcGVkIHRvIHRoZQorLS0g cHJvY2Vzcywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgbWVhc3VyZSB0aGUgbWVtb3J5IHVzYWdlLgor Q1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV9yZWFkKGVudHJ5X2NvdW50IGludGVnZXIs IGVudHJ5X3ZhbHVlIGludGVnZXIpCitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5B TUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0gRnVuY3Rpb24gdG8gcmVwb3J0IG1lbW9yeSB1 c2FnZSBzdGF0aXN0aWNzIG9mIHRoZSBjYWxsaW5nIGJhY2tlbmQKK0NSRUFURSBGVU5DVElPTiBy ZXNpemFibGVfc2htZW1fdXNhZ2UoT1VUIHJzc19hbm9uIGJpZ2ludCwgT1VUIHJzc19maWxlIGJp Z2ludCwgT1VUIHJzc19zaG1lbSBiaWdpbnQsIE9VVCB2bV9zaXplIGJpZ2ludCkKK0FTICdNT0RV TEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IHRo ZSBzaGFyZWQgbWVtb3J5IHBhZ2Ugc2l6ZQorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1l bV9wYWdlc2l6ZSgpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5H VUFHRSBDIFNUUklDVDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL3Jlc2l6YWJsZV9zaG1lbS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0v cmVzaXphYmxlX3NobWVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjVhZTJkMmUyZDFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKQEAgLTAsMCArMSwzMjYgQEAKKy8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiByZXNpemFibGVfc2htZW0uYworICoJCVRlc3QgbW9kdWxlIGZvciBQ b3N0Z3JlU1FMJ3MgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgZnVuY3Rpb25hbGl0eQorICoKKyAq IFRoaXMgbW9kdWxlIGRlbW9uc3RyYXRlcyBhbmQgdGVzdHMgdGhlIHJlc2l6YWJsZSBzaGFyZWQg bWVtb3J5IEFQSQorICogcHJvdmlkZWQgYnkgc2htZW0uYy9zaG1lbS5oLgorICoKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJjb21t YW5kcy9leHRlbnNpb24uaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5o IgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2lu Y2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor CisjaW5jbHVkZSA8c3RkaW8uaD4KKworUEdfTU9EVUxFX01BR0lDOworCisvKiBEZWZhdWx0IHZh bHVlcyBmb3IgdGhlIEdVQ3MgY29udHJvbGxpbmcgc3RydWN0dXJlIHNpemUgKi8KKyNkZWZpbmUg VEVTVF9JTklUSUFMX0VOVFJJRVNfREVGQVVMVAkJKDI1ICogMTAyNCAqIDEwMjQpCS8qIH4xMDBN QiAqLworI2RlZmluZSBURVNUX01BWF9FTlRSSUVTX0RFRkFVTFQJCQkoMTAwICogMTAyNCAqIDEw MjQpIC8qIH40MDBNQiAqLworCisjZGVmaW5lIFRFU1RfRU5UUllfU0laRQkJCXNpemVvZihpbnQz MikJLyogU2l6ZSBvZiBlYWNoIGVudHJ5ICovCisKKy8qCisgKiBSZXNpemFibGUgdGVzdCBkYXRh IHN0cnVjdHVyZSBzdG9yZWQgaW4gc2hhcmVkIG1lbW9yeS4KKyAqCisgKiBUaGUgdGVzdCBwZXJm b3JtcyByZXNpemluZywgcmVhZHMgb3Igd3JpdGVzLCBvbmx5IG9uZSBhdCBhIHRpbWUgYW5kIG5l dmVyCisgKiBjb25jdXJyZW50bHkuIEhlbmNlLCB0aGVyZSBpcyBubyBuZWVkIGZvciBsb2NrcyBp biB0aGUgdGVzdCBzdHJ1Y3R1cmUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFRlc3RSZXNpemFibGVT aG1lbVN0cnVjdAoreworCS8qIE1ldGFkYXRhICovCisJaW50MzIJCW51bV9lbnRyaWVzOwkvKiBO dW1iZXIgb2YgZW50cmllcyB0aGF0IGNhbiBmaXQgKi8KKworCS8qIERhdGEgYXJlYSAtIHZhcmlh YmxlIHNpemUgKi8KKwlpbnQzMgkJZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBUZXN0 UmVzaXphYmxlU2htZW1TdHJ1Y3Q7CisKK3N0YXRpYyBUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3Qg KnJlc2l6YWJsZV9zaG1lbSA9IE5VTEw7CisKKy8qIEdVQyB2YXJpYWJsZXMgY29udHJvbGxpbmcg dGhlIHNpemUgb2YgdGhlIHRlc3Qgc3RydWN0dXJlICovCitzdGF0aWMgaW50CXRlc3RfaW5pdGlh bF9lbnRyaWVzOworc3RhdGljIGludAl0ZXN0X21heF9lbnRyaWVzOworCisvKiBXaGV0aGVyIHRv IHVzZSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIHdoZW4gYXR0YWNoaW5nIHRvIHRoZSBzaGFy ZWQgbWVtb3J5ICovCitzdGF0aWMgYm9vbCB1c2VfdW5rbm93bl9zaXplID0gZmFsc2U7CisKK3N0 YXRpYyB2b2lkIHJlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCByZXNpemFibGVfc2htZW1fc2htZW1faW5pdCh2b2lkICphcmcpOworCitzdGF0aWMgU2htZW1D YWxsYmFja3Mgc2htZW1fY2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gcmVzaXphYmxlX3No bWVtX3JlcXVlc3QsCisJLmluaXRfZm4gPSByZXNpemFibGVfc2htZW1fc2htZW1faW5pdCwKK307 CisKKy8qIFNRTC1jYWxsYWJsZSBmdW5jdGlvbnMgKi8KK1BHX0ZVTkNUSU9OX0lORk9fVjEocmVz aXphYmxlX3NobWVtX3Jlc2l6ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1l bV93cml0ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV9yZWFkKTsKK1BH X0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVtX3VzYWdlKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEocmVzaXphYmxlX3NobWVtX3BhZ2VzaXplKTsKKworLyoKKyAqIE1vZHVsZSBsb2FkIGNh bGxiYWNrCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJaW50CQkJZ3VjX2NvbnRleHQ7 CisKKwkvKgorCSAqIFVzZSBQR0NfUE9TVE1BU1RFUiB3aGVuIGxvYWRlZCBhdCBzdGFydHVwIHNv IHRoZSB2YWx1ZXMgYXJlIGZpeGVkIG9uY2UKKwkgKiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50 IGlzIGNyZWF0ZWQuICBXaGVuIGxvYWRlZCBhZnRlciBzdGFydHVwCisJICogUEdDX1BPU1RNQVNU RVIgaXMgbm90IGFsbG93ZWQsIHNvIHdlIHVzZSBQR0NfU0lHSFVQIGluc3RlYWQuICBBbHRob3Vn aAorCSAqIHdlIGRvIG5vdCBpbnRlbmQgdG8gY2hhbmdlIHRoZXNlIHZhbHVlcyBhdCBjb25maWcg cmVsb2FkLCBQR0NfU0lHSFVQIGlzCisJICogdGhlIGxlYXN0IHBlcm1pc3NpdmUgY29udGV4dCB0 aGF0IGFsbG93cyBkZWZpbmluZyB0aGUgR1VDIGFmdGVyIHN0YXJ0dXAKKwkgKiBhbmQgc3RpbGwg cHJldmVudHMgaXQgZnJvbSBiZWluZyBjaGFuZ2VkIHZpYSBTRVQuCisJICovCisJaWYgKHByb2Nl c3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorCQlndWNfY29udGV4dCA9 IFBHQ19QT1NUTUFTVEVSOworCWVsc2UKKwl7CisJCWd1Y19jb250ZXh0ID0gUEdDX1NJR0hVUDsK KwkJc2htZW1fY2FsbGJhY2tzLmZsYWdzID0gU0hNRU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NU QVJUVVA7CisJfQorCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoInJlc2l6YWJsZV9zaG1lbS5p bml0aWFsX2VudHJpZXMiLAorCQkJCQkJCSJJbml0aWFsIG51bWJlciBvZiBlbnRyaWVzIGluIHRo ZSB0ZXN0IHN0cnVjdHVyZS4iLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJJnRlc3RfaW5pdGlhbF9l bnRyaWVzLAorCQkJCQkJCVRFU1RfSU5JVElBTF9FTlRSSUVTX0RFRkFVTFQsCisJCQkJCQkJMSwK KwkJCQkJCQlJTlRfTUFYLAorCQkJCQkJCWd1Y19jb250ZXh0LAorCQkJCQkJCTAsCisJCQkJCQkJ TlVMTCwgTlVMTCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgicmVzaXphYmxl X3NobWVtLm1heF9lbnRyaWVzIiwKKwkJCQkJCQkiTWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBp biB0aGUgdGVzdCBzdHJ1Y3R1cmUuIiwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCSZ0ZXN0X21heF9l bnRyaWVzLAorCQkJCQkJCVRFU1RfTUFYX0VOVFJJRVNfREVGQVVMVCwKKwkJCQkJCQkxLAorCQkJ CQkJCUlOVF9NQVgsCisJCQkJCQkJZ3VjX2NvbnRleHQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxM LCBOVUxMLCBOVUxMKTsKKworCS8qCisJICogV2hlbiBsb2FkZWQgYWZ0ZXIgc3RhcnR1cCBieSBh IGJhY2tlbmQgdGhhdCBpcyBub3QgY3JlYXRpbmcgdGhlCisJICogZXh0ZW5zaW9uLCB0aGUgc2hh cmVkIG1lbW9yeSBtaWdodCBoYXZlIGJlZW4gcmVzaXplZCB0byBhIHNpemUgb3RoZXIKKwkgKiB0 aGFuIHRoZSBpbml0aWFsIHNpemUuIFVzZSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIHRvIGF0 dGFjaCB3aXRob3V0CisJICoga25vd2luZyB0aGUgZXhhY3Qgc2l6ZS4KKwkgKi8KKwlpZiAoIXBy b2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzICYmICFjcmVhdGluZ19l eHRlbnNpb24pCisJCXVzZV91bmtub3duX3NpemUgPSB0cnVlOworCisJUmVnaXN0ZXJTaG1lbUNh bGxiYWNrcygmc2htZW1fY2FsbGJhY2tzKTsKK30KKworLyoKKyAqIFJlcXVlc3Qgc2hhcmVkIG1l bW9yeSByZXNvdXJjZXMKKyAqLworc3RhdGljIHZvaWQKK3Jlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0 KHZvaWQgKmFyZykKK3sKKwlTaXplCQlpbml0aWFsX3NpemUgPSBhZGRfc2l6ZShvZmZzZXRvZihU ZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QsIGRhdGEpLAorCQkJCQkJCQkJCW11bF9zaXplKHRlc3Rf aW5pdGlhbF9lbnRyaWVzLCBURVNUX0VOVFJZX1NJWkUpKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJM RV9TSE1FTQorCVNpemUJCW1heF9zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJs ZVNobWVtU3RydWN0LCBkYXRhKSwKKwkJCQkJCQkJCW11bF9zaXplKHRlc3RfbWF4X2VudHJpZXMs IFRFU1RfRU5UUllfU0laRSkpOworCisJLyogQSBwcmVwcm9jZXNzb3IgbWFjcm8gdG8gY29uZGl0 aW9uYWxseSBpbmNsdWRlIHRoZSBtYXhpbXVtX3NpemUgZmllbGQuICovCisjZGVmaW5lIE1BWElN VU1fU0laRV9BUkcJCS5tYXhpbXVtX3NpemUgPSBtYXhfc2l6ZSwKKyNlbHNlCisjZGVmaW5lIE1B WElNVU1fU0laRV9BUkcKKyNlbmRpZgorCisJLyogUmVnaXN0ZXIgb3VyIHJlc2l6YWJsZSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZSAqLworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJyZXNp emFibGVfc2htZW0iLAorCQkJCQkgICAuc2l6ZSA9IHVzZV91bmtub3duX3NpemUgPyBTSE1FTV9B VFRBQ0hfVU5LTk9XTl9TSVpFIDogaW5pdGlhbF9zaXplLAorCQkJCQkgICBNQVhJTVVNX1NJWkVf QVJHCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnJlc2l6YWJsZV9zaG1lbSwKKwkJKTsKK30K KworLyoKKyAqIEluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUKKyAqLworc3RhdGlj IHZvaWQKK3Jlc2l6YWJsZV9zaG1lbV9zaG1lbV9pbml0KHZvaWQgKmFyZykKK3sKKwkvKgorCSAq IFNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBhbGxvY2F0 ZWQuIEluaXRpYWxpemUKKwkgKiBpdC4KKwkgKi8KKwlBc3NlcnQocmVzaXphYmxlX3NobWVtICE9 IE5VTEwpOworCisJcmVzaXphYmxlX3NobWVtLT5udW1fZW50cmllcyA9IHRlc3RfaW5pdGlhbF9l bnRyaWVzOworCW1lbXNldChyZXNpemFibGVfc2htZW0tPmRhdGEsIDAsIG11bF9zaXplKHRlc3Rf aW5pdGlhbF9lbnRyaWVzLCBURVNUX0VOVFJZX1NJWkUpKTsKK30KKworLyoKKyAqIFJlc2l6ZSB0 aGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgdG8gYWNjb21tb2RhdGUgdGhlIHNwZWNpZmllZCBu dW1iZXIgb2YKKyAqIGVudHJpZXMuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1fcmVzaXpl KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwlpbnQz MgkJbmV3X2VudHJpZXMgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJU2l6ZQkJbmV3X3NpemU7CisK KwlpZiAoIXJlc2l6YWJsZV9zaG1lbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJy ZXNpemFibGVfc2htZW0gaXMgbm90IGluaXRpYWxpemVkIikpKTsKKworCW5ld19zaXplID0gYWRk X3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSwKKwkJCQkJCW11 bF9zaXplKG5ld19lbnRyaWVzLCBURVNUX0VOVFJZX1NJWkUpKTsKKwlTaG1lbVJlc2l6ZVN0cnVj dCgicmVzaXphYmxlX3NobWVtIiwgbmV3X3NpemUpOworCXJlc2l6YWJsZV9zaG1lbS0+bnVtX2Vu dHJpZXMgPSBuZXdfZW50cmllczsKKworCVBHX1JFVFVSTl9WT0lEKCk7CisjZWxzZQorCWVyZXBv cnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkgZXJybXNnKCJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRo aXMgcGxhdGZvcm0iKSkpOworI2VuZGlmCit9CisKKy8qCisgKiBXcml0ZSB0aGUgZ2l2ZW4gaW50 ZWdlciB2YWx1ZSB0byBhbGwgZW50cmllcyBpbiB0aGUgZGF0YSBhcnJheS4KKyAqLworRGF0dW0K K3Jlc2l6YWJsZV9zaG1lbV93cml0ZShQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQllbnRy eV92YWx1ZSA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlpbnQzMgkJaTsKKworCWlmICghcmVzaXph YmxlX3NobWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1l bSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOworCisJLyogV3JpdGUgdGhlIHZhbHVlIHRvIGFsbCBj dXJyZW50IGVudHJpZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcmVzaXphYmxlX3NobWVtLT5udW1f ZW50cmllczsgaSsrKQorCQlyZXNpemFibGVfc2htZW0tPmRhdGFbaV0gPSBlbnRyeV92YWx1ZTsK KworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIHRoZSBmaXJz dCAnZW50cnlfY291bnQnIGVudHJpZXMgYWxsIGhhdmUgdGhlIGV4cGVjdGVkICdlbnRyeV92YWx1 ZScuCisgKiBSZXR1cm5zIHRydWUgaWYgYWxsIG1hdGNoLCBmYWxzZSBvdGhlcndpc2UuCisgKi8K K0RhdHVtCityZXNpemFibGVfc2htZW1fcmVhZChQR19GVU5DVElPTl9BUkdTKQoreworCWludDMy CQllbnRyeV9jb3VudCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlpbnQzMgkJZW50cnlfdmFsdWUg PSBQR19HRVRBUkdfSU5UMzIoMSk7CisJaW50MzIJCWk7CisKKwlpZiAocmVzaXphYmxlX3NobWVt ID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicmVzaXphYmxlX3NobWVt IGlzIG5vdCBpbml0aWFsaXplZCIpKSk7CisKKwlpZiAoZW50cnlfY291bnQgPCAwIHx8IGVudHJ5 X2NvdW50ID4gcmVzaXphYmxlX3NobWVtLT5udW1fZW50cmllcykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJy bXNnKCJlbnRyeV9jb3VudCAlZCBpcyBvdXQgb2YgcmFuZ2UgKDAuLiVkKSIsIGVudHJ5X2NvdW50 LCByZXNpemFibGVfc2htZW0tPm51bV9lbnRyaWVzKSkpOworCisJZm9yIChpID0gMDsgaSA8IGVu dHJ5X2NvdW50OyBpKyspCisJeworCQlpZiAocmVzaXphYmxlX3NobWVtLT5kYXRhW2ldICE9IGVu dHJ5X3ZhbHVlKQorCQkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCVBHX1JFVFVSTl9C T09MKHRydWUpOworfQorCisvKgorICogUmVwb3J0IG11bHRpcGxlIG1lbW9yeSB1c2FnZSBzdGF0 aXN0aWNzIG9mIHRoZSBjYWxsaW5nIGJhY2tlbmQgcHJvY2VzcworICogYXMgcmVwb3J0ZWQgYnkg dGhlIGtlcm5lbC4KKyAqIFJldHVybnMgUnNzQW5vbiwgUnNzRmlsZSwgUnNzU2htZW0sIFZtU2l6 ZSBmcm9tIC9wcm9jL3NlbGYvc3RhdHVzIGFzIGEgcmVjb3JkLgorICoKKyAqIFRoZSBmdW5jdGlv biBhc3N1bWVzIHRoYXQgdGhlc2UgdmFsdWVzIHdpbGwgYmUgYXZhaWxhYmxlIGluCisgKiAvcHJv Yy9zZWxmL3N0YXR1cywgYW55IHN5c3RlbSB3aGljaCBhbHNvIHN1cHBvcnQgbWFkdmlzZSB3aXRo IE1BRFZfUkVNT1ZFIGFuZAorICogTUFEVl9QT1BVTEFURV9XUklURS4KKyAqLworRGF0dW0KK3Jl c2l6YWJsZV9zaG1lbV91c2FnZShQR19GVU5DVElPTl9BUkdTKQoreworCUZJTEUJICAgKmY7CisJ Y2hhcgkJbGluZVsyNTZdOworCWludDY0CQlyc3NfYW5vbl9rYiA9IC0xOworCWludDY0CQlyc3Nf ZmlsZV9rYiA9IC0xOworCWludDY0CQlyc3Nfc2htZW1fa2IgPSAtMTsKKwlpbnQ2NAkJdm1fc2l6 ZV9rYiA9IC0xOworCWludAkJCWZvdW5kID0gMDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlEYXR1 bQkJdmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdOworCUhlYXBUdXBsZQl0dXBsZTsKKworCS8q IE9wZW4gL3Byb2Mvc2VsZi9zdGF0dXMgdG8gcmVhZCBtZW1vcnkgaW5mb3JtYXRpb24gKi8KKwlm ID0gZm9wZW4oIi9wcm9jL3NlbGYvc3RhdHVzIiwgInIiKTsKKwlpZiAoZiA9PSBOVUxMKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCSBlcnJt c2coImNvdWxkIG5vdCBvcGVuIC9wcm9jL3NlbGYvc3RhdHVzOiAlbSIpKSk7CisKKwkvKiBMb29r IGZvciB0aGUgbWVtb3J5IHVzYWdlIGxpbmVzICovCisJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVv ZihsaW5lKSwgZikgIT0gTlVMTCAmJiBmb3VuZCA8IDQpCisJeworCQlpZiAocnNzX2Fub25fa2Ig PT0gLTEgJiYgc3NjYW5mKGxpbmUsICJSc3NBbm9uOiAlbGQga0IiLCAmcnNzX2Fub25fa2IpID09 IDEpCisJCQlmb3VuZCsrOworCQllbHNlIGlmIChyc3NfZmlsZV9rYiA9PSAtMSAmJiBzc2NhbmYo bGluZSwgIlJzc0ZpbGU6ICVsZCBrQiIsICZyc3NfZmlsZV9rYikgPT0gMSkKKwkJCWZvdW5kKys7 CisJCWVsc2UgaWYgKHJzc19zaG1lbV9rYiA9PSAtMSAmJiBzc2NhbmYobGluZSwgIlJzc1NobWVt OiAlbGQga0IiLCAmcnNzX3NobWVtX2tiKSA9PSAxKQorCQkJZm91bmQrKzsKKwkJZWxzZSBpZiAo dm1fc2l6ZV9rYiA9PSAtMSAmJiBzc2NhbmYobGluZSwgIlZtU2l6ZTogJWxkIGtCIiwgJnZtX3Np emVfa2IpID09IDEpCisJCQlmb3VuZCsrOworCX0KKworCWZjbG9zZShmKTsKKworCS8qIEJ1aWxk IHR1cGxlIGRlc2NyaXB0b3IgZm9yIG91ciByZXN1bHQgdHlwZSAqLworCWlmIChnZXRfY2FsbF9y ZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCSBlcnJtc2coImZ1bmN0aW9uIHJldHVybmluZyByZWNvcmQgY2FsbGVkIGlu IGNvbnRleHQgIgorCQkJCQkJInRoYXQgY2Fubm90IGFjY2VwdCBhIHJlY29yZCIpKSk7CisKKwkv KiBCdWlsZCB0aGUgcmVzdWx0IHR1cGxlICovCisJdmFsdWVzWzBdID0gSW50NjRHZXREYXR1bShy c3NfYW5vbl9rYiA+PSAwID8gcnNzX2Fub25fa2IgKiAxMDI0IDogMCk7CisJdmFsdWVzWzFdID0g SW50NjRHZXREYXR1bShyc3NfZmlsZV9rYiA+PSAwID8gcnNzX2ZpbGVfa2IgKiAxMDI0IDogMCk7 CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bShyc3Nfc2htZW1fa2IgPj0gMCA/IHJzc19zaG1l bV9rYiAqIDEwMjQgOiAwKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKHZtX3NpemVfa2Ig Pj0gMCA/IHZtX3NpemVfa2IgKiAxMDI0IDogMCk7CisKKwludWxsc1swXSA9IG51bGxzWzFdID0g bnVsbHNbMl0gPSBudWxsc1szXSA9IGZhbHNlOworCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUo dHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERh dHVtKHR1cGxlKSk7Cit9CisKKy8qCisgKiByZXNpemFibGVfc2htZW1fcGFnZXNpemUoKSAtIEdl dCB0aGUgc2hhcmVkIG1lbW9yeSBwYWdlIHNpemUKKyAqLworRGF0dW0KK3Jlc2l6YWJsZV9zaG1l bV9wYWdlc2l6ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9JTlQzMihwZ19nZXRf c2htZW1fcGFnZXNpemUoKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvcmVz aXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi44MDMxMzAzZmUwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sCkBAIC0w LDAgKzEsNCBAQAorIyByZXNpemFibGVfc2htZW0gZXh0ZW5zaW9uIHRlc3QgbW9kdWxlCitjb21t ZW50ID0gJ3Rlc3QgbW9kdWxlIGZvciB0ZXN0aW5nIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0 cnVjdHVyZSBmdW5jdGlvbmFsaXR5JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9w YXRobmFtZSA9ICckbGliZGlyL3Jlc2l6YWJsZV9zaG1lbScKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbCBiL3NyYy90 ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmQ0NWIxZWNjZGMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFi bGVfc2htZW0ucGwKQEAgLTAsMCArMSwyMzkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LTIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgVGVz dCByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBmdW5jdGlvbmFsaXR5LCBib3RoIHdoZW4gbG9hZGVk IGF0IHN0YXJ0dXAgdmlhCisjIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBhbmQgd2hlbiBsb2Fk ZWQgYWZ0ZXIgc3RhcnR1cCAobGF0ZSBhbGxvY2F0aW9uKS4KKworIyBWZXJpZnkgdGhhdCBSc3NT aG1lbSBkb2VzIG5vdCBleGNlZWQgdGhlIHRvdGFsIGFsbG9jYXRlZCBzaGFyZWQgbWVtb3J5Lgor IyBBbGxvY2F0ZWQgc2hhcmVkIG1lbW9yeSBzaG91bGQgYmUgbW9zdGx5IHRoZSBtZW1vcnkgYWxs b2NhdGVkIHRvIHRoZQorIyByZXNpemFibGVfc2htZW0gc3RydWN0dXJlLiBBbnkgbGFyZ2UgaW5j cmVhc2UgaW4gZXhwZWN0ZWQgUnNzU2htZW0gc2hvdWxkCisjIHJlZmxlY3QgdGhlIHVuZXhwZWN0 ZWQgaW5jcmVhc2UgaW4gbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgcmVzaXphYmxlX3NobWVtCisj IHN0cnVjdHVyZS4KK3N1YiBjaGVja19zaG1lbV91c2FnZQoreworCW15ICgkc2Vzc2lvbiwgJGxh YmVsLCAkbm9kZSkgPSBAXzsKKworCW15ICRyc3Nfc2htZW0gPSAkc2Vzc2lvbi0+cXVlcnlfc2Fm ZSgnU0VMRUNUIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpOycsCisJCQkJ CQkJCQkJIHZlcmJvc2UgPT4gMCk7CisJbXkgJHRvdGFsX2FsbG9jID0gJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkJCQkJCQkJICAgIlNFTEVDVCBzdW0oYWxsb2NhdGVkX3NpemUpIEZS T00gcGdfc2htZW1fYWxsb2NhdGlvbnM7Iik7CisKKwlub3RlICIkbGFiZWw6IFJzc1NobWVtPSRy c3Nfc2htZW0sIHN1bShhbGxvY2F0ZWRfc2l6ZSk9JHRvdGFsX2FsbG9jIjsKKwlvaygkcnNzX3No bWVtIDw9ICR0b3RhbF9hbGxvYywgIiRsYWJlbDogUnNzU2htZW0gZG9lcyBub3QgZXhjZWVkIHRv dGFsIGFsbG9jYXRlZCBzaXplIik7Cit9CisKKyMgVGVzdCBhIHJlc2l6ZSBvcGVyYXRpb246IHJl c2l6ZSwgdmVyaWZ5IG9sZCBkYXRhLCB3cml0ZSBuZXcgZGF0YSwgdmVyaWZ5CisjIG5ldyBkYXRh LCBhbmQgY2hlY2sgc2htZW0gdXNhZ2UuICBSZXR1cm5zIHVwZGF0ZWQgKCRudW1fZW50cmllcywg JHZhbHVlKS4KK3N1YiB0ZXN0X3Jlc2l6ZQoreworCW15ICgkbm9kZSwgJHByZWZpeCwgJG9sZF9u dW1fZW50cmllcywgJG9sZF92YWx1ZSwgJG5ld19udW1fZW50cmllcywgJG5ld192YWx1ZSwgJGxh YmVsKSA9IEBfOworCisJJGxhYmVsID0gIiRwcmVmaXg6ICRsYWJlbCI7CisKKwlteSAkc2Vzc2lv bjEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCW15ICRzZXNzaW9uMiA9 ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKwkkc2Vzc2lvbjEtPnF1ZXJ5 X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKCRuZXdfbnVtX2VudHJpZXMpOyIs CisJCQkJCQkgIHZlcmJvc2UgPT4gMCk7CisKKwkjIE9sZCBkYXRhIHNob3VsZCBzdGlsbCBiZSBp bnRhY3QgaW4gdGhlIChwb3NzaWJseSBzbWFsbGVyKSBhcmVhCisJbXkgJHJlYWRhYmxlX2VudHJp ZXMgPSAoJG5ld19udW1fZW50cmllcyA8ICRvbGRfbnVtX2VudHJpZXMpID8gJG5ld19udW1fZW50 cmllcyA6ICRvbGRfbnVtX2VudHJpZXM7CisJaXMoJHNlc3Npb24xLT5xdWVyeV9zYWZlKCJTRUxF Q1QgcmVzaXphYmxlX3NobWVtX3JlYWQoJHJlYWRhYmxlX2VudHJpZXMsICRvbGRfdmFsdWUpOyIs CisJCQkJCQkJIHZlcmJvc2UgPT4gMCksCisJICAgJ3QnLCAib2xkIGRhdGEgcmVhZGFibGUgYWZ0 ZXIgJGxhYmVsIik7CisKKwkkc2Vzc2lvbjItPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVf c2htZW1fd3JpdGUoJG5ld192YWx1ZSk7IiwKKwkJCQkJCSAgdmVyYm9zZSA9PiAwKTsKKwlpcygk c2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgkbmV3X251 bV9lbnRyaWVzLCAkbmV3X3ZhbHVlKTsiLAorCQkJCQkJCSB2ZXJib3NlID0+IDApLAorCSAgICd0 JywgIm5ldyBkYXRhIHJlYWRhYmxlIGFmdGVyICRsYWJlbCIpOworCisJY2hlY2tfc2htZW1fdXNh Z2UoJHNlc3Npb24xLCAiJGxhYmVsIChzZXNzaW9uIDEpIiwgJG5vZGUpOworCWNoZWNrX3NobWVt X3VzYWdlKCRzZXNzaW9uMiwgIiRsYWJlbCAoc2Vzc2lvbiAyKSIsICRub2RlKTsKKworCSRzZXNz aW9uMS0+cXVpdDsKKwkkc2Vzc2lvbjItPnF1aXQ7CisKKwlyZXR1cm4gKCRuZXdfbnVtX2VudHJp ZXMsICRuZXdfdmFsdWUpOworfQorCisjIFJ1biB0aGUgZnVsbCBzdWl0ZSBvZiByZXNpemFibGUg c2hhcmVkIG1lbW9yeSB0ZXN0cyBvbiB0aGUgZ2l2ZW4gbm9kZS4KK3N1YiBydW5fcmVzaXphYmxl X3Rlc3RzCit7CisJbXkgKCRub2RlLCAkaW5pdGlhbF9lbnRyaWVzLCAkbWF4X2VudHJpZXMsICRw cmVmaXgpID0gQF87CisKKwlteSAkaGF2ZV9yZXNpemFibGVfc2htZW0gPSAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdTSE9XIGhhdmVfcmVzaXphYmxlX3NobWVtOycpIGVxICdvbic7CisK KwlteSAkbnVtX2VudHJpZXMgPSAkaW5pdGlhbF9lbnRyaWVzOworCisJIyBCYXNpYyByZWFkL3dy aXRlIHNob3VsZCB3b3JrIG9uIGFsbCBwbGF0Zm9ybXMKKwlteSAkdmFsdWUgPSAxMDA7CisJJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSgk dmFsdWUpOyIpOworCWlzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCByZXNp emFibGVfc2htZW1fcmVhZCgkbnVtX2VudHJpZXMsICR2YWx1ZSk7IiksCisJICAgJ3QnLCAiJHBy ZWZpeDogZGF0YSByZWFkIGFmdGVyIHdyaXRlIHN1Y2Nlc3NmdWwiKTsKKworCWlmICgkaGF2ZV9y ZXNpemFibGVfc2htZW0pCisJeworCQkjIEluaXRpYWwgc3RydWN0dXJlIHN0YXRlCisJCW15ICRz ZXNzaW9uMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJCW15ICRzZXNz aW9uMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKwkJJHZhbHVlID0g MTAwOworCQkjIFdyaXRlIGFuZCByZWFkIHRoZSBpbml0aWFsIHNldCBvZiBlbnRyaWVzLgorCQkk c2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoJHZhbHVl KTsiLCB2ZXJib3NlID0+IDApOworCQlpcygkc2Vzc2lvbjItPnF1ZXJ5X3NhZmUoIlNFTEVDVCBy ZXNpemFibGVfc2htZW1fcmVhZCgkbnVtX2VudHJpZXMsICR2YWx1ZSk7IiwKKwkJCQkJCQkJIHZl cmJvc2UgPT4gMCksCisJCSAgICd0JywgIiRwcmVmaXg6IGRhdGEgcmVhZCBhZnRlciB3cml0ZSBz dWNjZXNzZnVsIik7CisJCWNoZWNrX3NobWVtX3VzYWdlKCRzZXNzaW9uMSwgIiRwcmVmaXg6IGlu aXRpYWwgd3JpdGUgKHNlc3Npb24gMSkiLCAkbm9kZSk7CisJCWNoZWNrX3NobWVtX3VzYWdlKCRz ZXNzaW9uMiwgIiRwcmVmaXg6IGluaXRpYWwgd3JpdGUgKHNlc3Npb24gMikiLCAkbm9kZSk7CisJ CSRzZXNzaW9uMS0+cXVpdDsKKwkJJHNlc3Npb24yLT5xdWl0OworCisJCSMgVmVyaWZ5IG5vIG90 aGVyIHN0cnVjdHVyZSBpcyByZXNpemFibGUKKwkJaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfc2htZW1fYWxsb2NhdGlvbnMgV0hFUkUgbmFt ZSA8PiAncmVzaXphYmxlX3NobWVtJyBBTkQgbWF4aW11bV9zaXplIDw+IDA7IiksCisJCQkJCQkJ JzAnLCAiJHByZWZpeDogbm8gb3RoZXIgcmVzaXphYmxlIHN0cnVjdHVyZXMiKTsKKworCQkjIFJl c2l6ZSB0byBtYXhpbXVtCisJCSgkbnVtX2VudHJpZXMsICR2YWx1ZSkgPSB0ZXN0X3Jlc2l6ZSgk bm9kZSwgJHByZWZpeCwgJG51bV9lbnRyaWVzLCAkdmFsdWUsCisJCQkJCQkJCQkJCSAkbWF4X2Vu dHJpZXMsIDUwMCwgJ3Jlc2l6ZSB0byBtYXhpbXVtJyk7CisKKwkJIyBTaHJpbmsgdG8gNzUlIG9m IG1heAorCQlteSAkc2hyaW5rX2VudHJpZXMgPSBpbnQoJG1heF9lbnRyaWVzICogMyAvIDQpOwor CQkoJG51bV9lbnRyaWVzLCAkdmFsdWUpID0gdGVzdF9yZXNpemUoJG5vZGUsICRwcmVmaXgsICRu dW1fZW50cmllcywgJHZhbHVlLAorCQkJCQkJCQkJCQkgJHNocmlua19lbnRyaWVzLCA5OTksICdz aHJpbmtpbmcnKTsKKworCQkjIFJlc2l6ZSB0byB0aGUgc2FtZSBzaXplIChuby1vcCkKKwkJKCRu dW1fZW50cmllcywgJHZhbHVlKSA9IHRlc3RfcmVzaXplKCRub2RlLCAkcHJlZml4LCAkbnVtX2Vu dHJpZXMsICR2YWx1ZSwKKwkJCQkJCQkJCQkJICRudW1fZW50cmllcywgMTk5OSwgJ25vLW9wIHJl c2l6ZScpOworCisJCSMgVGVzdCByZXNpemUgZmFpbHVyZSAoYXR0ZW1wdCB0byByZXNpemUgYmV5 b25kIG1heCAtIHNob3VsZCBmYWlsKQorCQlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPQor CQkJJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXpl KCIgLiAoJG1heF9lbnRyaWVzICogMikgLiAiKTsiKTsKKwkJb2soJHJldCAhPSAwIHx8ICRzdGRl cnIgPX4gL0VSUk9SLywgIiRwcmVmaXg6IFJlc2l6ZSBiZXlvbmQgbWF4aW11bSBmYWlscyIpOwor CX0KKwllbHNlCisJeworCQkjIE9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtcywgcmVzaXppbmcgc2hv dWxkIGZhaWwgd2l0aCBhIGNsZWFyIGVycm9yCisJCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJy KSA9CisJCQkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9y ZXNpemUoJG51bV9lbnRyaWVzKTsiKTsKKwkJb2soJHJldCAhPSAwLCAiJHByZWZpeDogcmVzaXpl IGZhaWxzIG9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtIik7CisJCWxpa2UoJHN0ZGVyciwgcXIvbm90 IHN1cHBvcnRlZC8sICIkcHJlZml4OiByZXNpemUgZXJyb3IgbWVudGlvbnMgbm90IHN1cHBvcnRl ZCIpOworCX0KK30KKworIyMjIFNldCB1cCBhIHRlc3Qgbm9kZS4KKyMKKyNDb25maWd1cmUgbWlu aW1hbCBzaGFyZWQgbWVtb3J5IHNvIHRoYXQgdGhlIHJlc2l6YWJsZV9zaG1lbSBzdHJ1Y3R1cmUg ZG9taW5hdGVzCisjYW5kIGFueSB1bmV4cGVjdGVkIGluY3JlYXNlIGlzIGVhc3kgdG8gZGV0ZWN0 LgorIworIyBBbHNvIGRpc2FibGUgaHVnZSBwYWdlcyBzbyB0aGF0IFJzc1NobWVtIGFuZCBhbGxv Y2F0ZWRfc2l6ZSBhcmUgY29tcGFyYWJsZS4KKyMgVGhlIGxhdHRlciBpcyBhbHJlYWR5IGFsaWdu ZWQgdG8gdGhlIGRlZmF1bHQgcGFnZSBzaXplLgorIyMjCitteSAkbm9kZSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncmVzaXphYmxlX3NobWVtJyk7Ciskbm9kZS0+aW5pdDsKKwor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnaHVnZV9wYWdlcyA9IG9mZicp OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX2J1ZmZlcnMg PSAxMjhrQicpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X2Nv bm5lY3Rpb25zID0gNScpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAn bWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICdtYXhfd2FsX3NlbmRlcnMgPSAwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICdtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMCcpOworJG5vZGUt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlv biA9IDEwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfcHJl ZF9sb2Nrc19wZXJfdHJhbnNhY3Rpb24gPSAxMCcpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnd2FsX2J1ZmZlcnMgPSAzMmtCJyk7CisKKyMjIworIyBUZXN0IDE6IFN0 YXJ0dXAgYWxsb2NhdGlvbiB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzCisjIyMKK215ICRz dGFydHVwX2luaXRpYWwgPSAyNSAqIDEwMjQgKiAxMDI0OworbXkgJHN0YXJ0dXBfbWF4ID0gMTAw ICogMTAyNCAqIDEwMjQ7CisKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg J3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9IHJlc2l6YWJsZV9zaG1lbScpOworJG5vZGUtPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAicmVzaXphYmxlX3NobWVtLmluaXRpYWxfZW50 cmllcyA9ICRzdGFydHVwX2luaXRpYWwiKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgInJlc2l6YWJsZV9zaG1lbS5tYXhfZW50cmllcyA9ICRzdGFydHVwX21heCIpOwor JG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVO U0lPTiByZXNpemFibGVfc2htZW07Jyk7CitydW5fcmVzaXphYmxlX3Rlc3RzKCRub2RlLCAkc3Rh cnR1cF9pbml0aWFsLCAkc3RhcnR1cF9tYXgsICdzdGFydHVwJyk7CisKK215ICRoYXZlX3Jlc2l6 YWJsZV9zaG1lbSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NIT1cgaGF2ZV9yZXNp emFibGVfc2htZW07JykgZXEgJ29uJzsKKworIyMjCisjIFRlc3QgMjogTGF0ZSBhbGxvY2F0aW9u IChsb2FkZWQgYWZ0ZXIgc3RhcnR1cCwgbm90IGluIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyku CisjIFVzZSBtdWNoIHNtYWxsZXIgc2l6ZXMgc2luY2Ugb25seSB+MTAwS0Igb2Ygc2hhcmVkIG1l bW9yeSBpcyBhdmFpbGFibGUgZm9yCisjIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGFmdGVyIHN0YXJ0 dXAuCisjIyMKK215ICRsYXRlX2luaXRpYWwgPSA1ICogMTAyNDsKK215ICRsYXRlX21heCA9IDEy ICogMTAyNDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBTWVNU RU0gUkVTRVQgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzOworCUFMVEVSIFNZU1RFTSBTRVQgcmVz aXphYmxlX3NobWVtLmluaXRpYWxfZW50cmllcyA9ICRsYXRlX2luaXRpYWw7CisJQUxURVIgU1lT VEVNIFNFVCByZXNpemFibGVfc2htZW0ubWF4X2VudHJpZXMgPSAkbGF0ZV9tYXg7Cit9KTsKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1l bTsnKTsKKyRub2RlLT5yZXN0YXJ0OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdD UkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsKK3J1bl9yZXNpemFibGVfdGVzdHMo JG5vZGUsICRsYXRlX2luaXRpYWwsICRsYXRlX21heCwgJ2xhdGUnKTsKKworIyMjCisjIFRlc3Qg c3lzdiBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IHN1cHBvcnQgcmVzaXphYmxlIHNobWVtLiAgT25s eSByZWxldmFudCBvbgorIyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHJlc2l6YWJsZSBzaG1lbSAo SEFWRV9SRVNJWkFCTEVfU0hNRU0pLCBzaW5jZSB0aGUKKyMgbW9kdWxlIG9ubHkgc2V0cyBtYXhp bXVtX3NpemUgaW4gdGhhdCBjYXNlLgorIyMjCitpZiAoJGhhdmVfcmVzaXphYmxlX3NobWVtKQor eworCSMjIworCSMgVGVzdCAzOiBWZXJpZnkgdGhhdCBDUkVBVEUgRVhURU5TSU9OIGZhaWxzIHdp dGggc3lzdiBzaGFyZWQgbWVtb3J5CisJIyB3aGVuIGxvYWRlZCBhZnRlciBzdGFydHVwIChub3Qg aW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKS4KKwkjIyMKKwkkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIEVYVEVOU0lPTiByZXNpemFibGVfc2htZW07Jyk7CisKKwkjIFJlbW92 ZSBzZXR0aW5ncyB0aGF0IHdvdWxkIGNhdXNlIHRoZSBsaWJyYXJ5IHRvIGF1dG8tbG9hZCBhdCBz dGFydHVwOgorCSMgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGFuZCBtb2R1bGUtcHJlZml4ZWQg R1VDcy4gIEFMVEVSIFNZU1RFTSBSRVNFVAorCSMgb25seSBhZmZlY3RzIHBvc3RncmVzcWwuYXV0 by5jb25mLCBzbyB3ZSBtdXN0IHVzZSBhZGp1c3RfY29uZiB0byByZW1vdmUKKwkjIGZyb20gcG9z dGdyZXNxbC5jb25mLgorCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3No YXJlZF9wcmVsb2FkX2xpYnJhcmllcycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICdyZXNpemFibGVfc2htZW0uaW5pdGlhbF9lbnRyaWVzJywgdW5kZWYp OworCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3Jlc2l6YWJsZV9zaG1l bS5tYXhfZW50cmllcycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwu YXV0by5jb25mJywgJ3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcycsIHVuZGVmKTsKKwkkbm9kZS0+ YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5jb25mJywgJ3Jlc2l6YWJsZV9zaG1lbS5pbml0 aWFsX2VudHJpZXMnLCB1bmRlZik7CisJJG5vZGUtPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmF1 dG8uY29uZicsICdyZXNpemFibGVfc2htZW0ubWF4X2VudHJpZXMnLCB1bmRlZik7CisJJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwkJQUxURVIgU1lTVEVNIFNFVCBzaGFyZWRfbWVt b3J5X3R5cGUgPSAnc3lzdic7CisJfSk7CisKKwkkbm9kZS0+cmVzdGFydDsKKworCW15ICgkcmV0 LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisJCSRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg RVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsKKwlvaygkcmV0ICE9IDAsICdDUkVBVEUgRVhU RU5TSU9OIGZhaWxzIHdpdGggcmVzaXphYmxlIHNobWVtIG9uIHN5c3YnKTsKKwlsaWtlKCRzdGRl cnIsIHFyL3Jlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHJlcXVpcmVzIHNoYXJlZF9tZW1vcnlfdHlw ZSA9IG1tYXAvLAorCQknQ1JFQVRFIEVYVEVOU0lPTiBlcnJvciBtZW50aW9ucyBzaGFyZWRfbWVt b3J5X3R5cGUgPSBtbWFwIHJlcXVpcmVtZW50Jyk7CisKKwkjIyMKKwkjIFRlc3QgNDogVmVyaWZ5 IHRoYXQgcmVzaXphYmxlIHN0cnVjdHVyZXMgYXJlIGFsc28gcmVqZWN0ZWQgd2l0aCBzeXN2CisJ IyBzaGFyZWQgbWVtb3J5IHdoZW4gbG9hZGVkIGF0IHN0YXJ0dXAgdmlhIHNoYXJlZF9wcmVsb2Fk X2xpYnJhcmllcy4KKwkjIyMKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCQlB TFRFUiBTWVNURU0gU0VUIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICdyZXNpemFibGVfc2ht ZW0nOworCQlBTFRFUiBTWVNURU0gU0VUIHJlc2l6YWJsZV9zaG1lbS5pbml0aWFsX2VudHJpZXMg PSAkc3RhcnR1cF9pbml0aWFsOworCQlBTFRFUiBTWVNURU0gU0VUIHJlc2l6YWJsZV9zaG1lbS5t YXhfZW50cmllcyA9ICRzdGFydHVwX21heDsKKwl9KTsKKwkkbm9kZS0+c3RvcDsKKworCW9rKCEk bm9kZS0+c3RhcnQoZmFpbF9vayA9PiAxKSwKKwkJJ3NlcnZlciBmYWlscyB0byBzdGFydCB3aXRo IHJlc2l6YWJsZSBzaG1lbSBvbiBzeXN2Jyk7CisKKwlteSAkbG9nID0gc2x1cnBfZmlsZSgkbm9k ZS0+bG9nZmlsZSk7CisJbGlrZSgkbG9nLCBxci9yZXNpemFibGUgc2hhcmVkIG1lbW9yeSByZXF1 aXJlcyBzaGFyZWRfbWVtb3J5X3R5cGUgPSBtbWFwLywKKwkJJ2xvZyBtZW50aW9ucyBzaGFyZWRf bWVtb3J5X3R5cGUgPSBtbWFwIHJlcXVpcmVtZW50Jyk7Cit9CisKK2RvbmVfdGVzdGluZygpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1f YWxsb2MucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9h bGxvYy5wbAppbmRleCBjMTU0ZjU3NjgyYS4uYzg5YjE0MDg3MWYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCkBAIC00 NSw1ICs0NSwyOCBAQCBlbHNlCiAgICBvaygkYXR0YWNoX2NvdW50MSA9PSAwICYmICRhdHRhY2hf Y291bnQyID09IDAsICJhdHRhY2ggY2FsbGJhY2sgaXMgbm90IGNhbGxlZCB3aGVuIGxvYWRlZCB2 aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIik7CiB9CiAKKyMjIworIyBUZXN0IHRoYXQgYSBm aXhlZC1zaXplIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIGNhbm5vdCBiZSByZXNpemVkLgorIyBP bmx5IHJlbGV2YW50IG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgcmVzaXphYmxlIHNobWVtLgor IyMjCitteSAkaGF2ZV9yZXNpemFibGVfc2htZW0gPQorICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdTSE9XIGhhdmVfcmVzaXphYmxlX3NobWVtOycpIGVxICdvbic7CisKK2lmICgkaGF2 ZV9yZXNpemFibGVfc2htZW0pCit7CisgICAjIFRyeSBleHBhbmRpbmcgdGhlIGZpeGVkLXNpemUg c3RydWN0dXJlCisgICBteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPQorICAgICAkbm9kZS0+ cHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIHRlc3Rfc2htZW1fcmVzaXplX2ZpeGVkKDEwMDApOyIp OworICAgaXNudCgkcmV0LCAwLCAiZXhwYW5kaW5nIGEgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUgZmFp bHMiKTsKKyAgIGxpa2UoJHN0ZGVyciwgcXIvaXMgbm90IHJlc2l6YWJsZS8sICJleHBhbmQgZXJy b3IgbWVzc2FnZSBtZW50aW9ucyBub3QgcmVzaXphYmxlIik7CisKKyAgICMgVHJ5IHNocmlua2lu ZyB0aGUgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUKKyAgICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9 CisgICAgICRub2RlLT5wc3FsKCJwb3N0Z3JlcyIsICJTRUxFQ1QgdGVzdF9zaG1lbV9yZXNpemVf Zml4ZWQoMSk7Iik7CisgICBpc250KCRyZXQsIDAsICJzaHJpbmtpbmcgYSBmaXhlZC1zaXplIHN0 cnVjdHVyZSBmYWlscyIpOworICAgbGlrZSgkc3RkZXJyLCBxci9pcyBub3QgcmVzaXphYmxlLywg InNocmluayBlcnJvciBtZXNzYWdlIG1lbnRpb25zIG5vdCByZXNpemFibGUiKTsKK30KKwogJG5v ZGUtPnN0b3A7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbAppbmRleCAyZDAxZmQ5MjU2Yy4uZTE2OWQwZDc3MzMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLS0xLjAu c3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3Fs CkBAIC03LDMgKzcsNyBAQAogQ1JFQVRFIEZVTkNUSU9OIGdldF90ZXN0X3NobWVtX2F0dGFjaF9j b3VudCgpCiBSRVRVUk5TIHBnX2NhdGFsb2cuaW50NCBTVFJJQ1QKIEFTICdNT0RVTEVfUEFUSE5B TUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X3NobWVtX3Jlc2l6ZV9maXhl ZChwZ19jYXRhbG9nLmludDQpCitSRVRVUk5TIHBnX2NhdGFsb2cudm9pZCBTVFJJQ1QKK0FTICdN T0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rl c3Rfc2htZW0uYwppbmRleCA5YmQ0MDEyYjQzNS4uZmMyZmQ2Nzg4N2YgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAtOTksMyArOTksMjMgQEAgZ2V0X3Rlc3Rf c2htZW1fYXR0YWNoX2NvdW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsb2coRVJST1IsICJzaG1l bSBhcmVhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQiKTsKIAlQR19SRVRVUk5fSU5UMzIoVGVzdFNobWVt LT5hdHRhY2hfY291bnQpOwogfQorCisvKgorICogQXR0ZW1wdCB0byByZXNpemUgdGhlIGZpeGVk LXNpemUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUuICBUaGlzIHNob3VsZAorICogZmFpbCBiZWNh dXNlIHRoZSBzdHJ1Y3R1cmUgd2FzIG5vdCBhbGxvY2F0ZWQgd2l0aCBhIG1heGltdW1fc2l6ZS4K KyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X3NobWVtX3Jlc2l6ZV9maXhlZCk7CitEYXR1 bQordGVzdF9zaG1lbV9yZXNpemVfZml4ZWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBI QVZFX1JFU0laQUJMRV9TSE1FTQorCWludDMyCQluZXdfc2l6ZSA9IFBHX0dFVEFSR19JTlQzMigw KTsKKworCVNobWVtUmVzaXplU3RydWN0KCJ0ZXN0X3NobWVtIGFyZWEiLCBuZXdfc2l6ZSk7CisJ UEdfUkVUVVJOX1ZPSUQoKTsKKyNlbHNlCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6YWJsZSBzaGFy ZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7CisjZW5kaWYK K30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggODFhNzNjNDI2ZDIuLjJiYmJm NDhjOTZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTc3MCw4ICsxNzcw LDEwIEBAIHBnX3NoYWRvd3wgU0VMRUNUIHBnX2F1dGhpZC5yb2xuYW1lIEFTIHVzZW5hbWUsCiBw Z19zaG1lbV9hbGxvY2F0aW9uc3wgU0VMRUNUIG5hbWUsCiAgICAgb2ZmLAogICAgIHNpemUsCi0g ICAgYWxsb2NhdGVkX3NpemUKLSAgIEZST00gcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKCkgcGdf Z2V0X3NobWVtX2FsbG9jYXRpb25zKG5hbWUsIG9mZiwgc2l6ZSwgYWxsb2NhdGVkX3NpemUpOwor ICAgIGFsbG9jYXRlZF9zaXplLAorICAgIG1heGltdW1fc2l6ZSwKKyAgICByZXNlcnZlZF9zcGFj ZQorICAgRlJPTSBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoKSBwZ19nZXRfc2htZW1fYWxsb2Nh dGlvbnMobmFtZSwgb2ZmLCBzaXplLCBhbGxvY2F0ZWRfc2l6ZSwgbWF4aW11bV9zaXplLCByZXNl cnZlZF9zcGFjZSk7CiBwZ19zaG1lbV9hbGxvY2F0aW9uc19udW1hfCBTRUxFQ1QgbmFtZSwKICAg ICBudW1hX25vZGUsCiAgICAgc2l6ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBlOTQz MGUwN2IzNi4uYzA3OWJhYjRjZjAgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0zMTQ3 LDYgKzMxNDcsNyBAQCBUZXN0RFNNUmVnaXN0cnlIYXNoRW50cnkKIFRlc3REU01SZWdpc3RyeVN0 cnVjdAogVGVzdERlY29kaW5nRGF0YQogVGVzdERlY29kaW5nVHhuRGF0YQorVGVzdFJlc2l6YWJs ZVNobWVtU3RydWN0CiBUZXN0U2htZW1EYXRhCiBUZXN0U3BlYwogVGVzdFZhbHVlVHlwZQoKYmFz ZS1jb21taXQ6IGVkNzFkNzM1NmUzYjM5NGY1NzlkYjg3NzgyYTQxZTNkNWRmYjk5YWQKLS0gCjIu MzQuMQoK --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0005-Add-minimum_size-specification-for-resizab.patch" Content-Disposition: attachment; filename="v20260406-0005-Add-minimum_size-specification-for-resizab.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937fl4 RnJvbSA2OTIzMzM0YmVjMzI3YmI5Y2MwODlkNzk2MmJlYmM3M2RmMGFmZWY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDE2OjQ2OjMzICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDYgNS82XSBBZGQgbWluaW11bV9zaXplIHNwZWNpZmljYXRpb24gZm9yIHJl c2l6YWJsZQogc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzCgpPcHRpb25hbCBtaW5pbXVtIHNpemUg c3BlY2lmaWNhdGlvbiBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcwphbGxv d3MgdXMgdG8gZW5mb3JjZSB0aGF0IGEgcmVzaXphYmxlIHN0cnVjdHVyZSBjYW5ub3QgYmUgc2hy dW5rIGJlbG93IGEgY2VydGFpbgpzaXplLiAgRm9yIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzLCB0aGUg bWluaW11bSBzaXplIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwKdG8gdGhlIGluaXRpYWwg c2l6ZSBzcGVjaWZpZWQgaW4gU2htZW1SZXF1ZXN0U3RydWN0T3B0czo6c2l6ZS4gSWYgbm90IHNw ZWNpZmllZCwKdGhlIG1pbmltdW0gc2l6ZSBkZWZhdWx0cyB0byAwIGZvciByZXNpemFibGUgc3Ry dWN0dXJlcy4gRm9yIGZpeGVkLXNpemUKc3RydWN0dXJlcywgdGhlIG1pbmltdW0gc2l6ZSBhbmQg bWF4aW11bSBzaXplIGFyZSBzZXQgdG8gdGhlIGluaXRpYWwgc2l6ZQpzcGVjaWZpZWQgaW4gU2ht ZW1SZXF1ZXN0U3RydWN0T3B0czo6c2l6ZS4KClRoaXMgbWFrZXMgbWF4aW11bSBzaXplIGFuZCBt aW5pbXVtIHNpemUgcmVwb3J0ZWQgaW4gcGdfc2htZW1fYWxsb2NhdGlvbnMgdmlldwpjb25zaXN0 ZW50IGZvciBib3RoIGZpeGVkLXNpemUgYW5kIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzLgoKQXV0aG9y OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KLS0tCiBkb2Mv c3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgMTYgKystCiBkb2Mv c3JjL3NnbWwveGZ1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8IDExMCArKysrKysrKysr KysrKy0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8 ICAgNCArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAgIHwg ICA2ICsKIC4uLi9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYyB8ICAg MyArCiAuLi4vcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbCAgfCAgIDIg Ky0KIC4uLi90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwgICAgICB8ICAgOCAr Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAzICst CiA5IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggOTcxN2Y4NDM0YmIuLjliYmJmZGIzN2M1IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sCkBAIC00MjUwLDEzICs0MjUwLDI1IEBAIFNFTEVDVCAqIEZST00gcGdf bG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5taW5pbXVtX3NpemU8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTWluaW11bSBzaXplIGluIGJ5 dGVzIHRoYXQgdGhlIHJlc2l6YWJsZSBhbGxvY2F0aW9uIGNhbiBzaHJpbmsgdG8uIEVxdWFscwor ICAgICAgIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD5Gb3IgZml4ZWQtc2l6ZSBhbGxv Y2F0aW9ucywgYW5vbnltb3VzCisgICAgICAgYWxsb2NhdGlvbnMsIGFuZCBmcmVlIG1lbW9yeS4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+bWF4aW11bV9zaXplPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50ODwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIE1h eGltdW0gc2l6ZSBpbiBieXRlcyB0aGF0IHRoZSByZXNpemFibGUgYWxsb2NhdGlvbiBjYW4gZ3Jv dyB0by4gWmVybyBmb3IKLSAgICAgICBmaXhlZC1zaXplIGFsbG9jYXRpb25zLCBmb3IgYW5vbnlt b3VzIGFsbG9jYXRpb25zLCBhbmQgZm9yIGZyZWUgbWVtb3J5LgorICAgICAgIE1heGltdW0gc2l6 ZSBpbiBieXRlcyB0aGF0IHRoZSByZXNpemFibGUgYWxsb2NhdGlvbiBjYW4gZ3JvdyB0by4gRXF1 YWxzCisgICAgICAgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBGb3IgZml4ZWQtc2l6 ZSBhbGxvY2F0aW9ucywgYW5vbnltb3VzCisgICAgICAgYWxsb2NhdGlvbnMsIGFuZCBmcmVlIG1l bW9yeS4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAppbmRleCAz ZDI1MTM5YzMzNC4uYTZjN2I4YjFiMjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94ZnVuYy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNzUzLDcgKzM3NTMsOSBAQCBt eV9zaG1lbV9pbml0KHZvaWQgKmFyZykKICAgICAgPHBhcmFtZXRlcj4ubWF4aW11bV9zaXplPC9w YXJhbWV0ZXI+IGFsb25nIHdpdGgKICAgICAgPHBhcmFtZXRlcj4uc2l6ZTwvcGFyYW1ldGVyPi4g PHBhcmFtZXRlcj4ubWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+IGlzCiAgICAgIG1heGltdW0gc2l6 ZSB1cHRvIHdoaWNoIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgd2hlcmUgYXMKLSAgICAgPHBhcmFt ZXRlcj4uc2l6ZTwvcGFyYW1ldGVyPiBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1 cmUuICBXaGlsZQorICAgICA8cGFyYW1ldGVyPi5zaXplPC9wYXJhbWV0ZXI+IGlzIHRoZSBpbml0 aWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZS4KKyAgICAgT3B0aW9uYWxseSwgPHBhcmFtZXRlcj4u bWluaW11bV9zaXplPC9wYXJhbWV0ZXI+IGNhbiBiZSBzZXQgdG8gdGhlIG1pbmltdW0KKyAgICAg c2l6ZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgY2FuIHNocmluayB0by4gIFdoaWxlCiAgICAgIGNvbnRp Z3VvdXMgYWRkcmVzcyBzcGFjZSB3b3J0aCA8cGFyYW1ldGVyPm1heGltdW1fc2l6ZTwvcGFyYW1l dGVyPiBpcwogICAgICBhbGxvY2F0ZWQgdG8gdGhlIHN0cnVjdHVyZSwgb25seSBtZW1vcnkgd29y dGggPHBhcmFtZXRlcj5zaXplPC9wYXJhbWV0ZXI+CiAgICAgIGJ5dGVzIGlzIGFsbG9jYXRlZCBp bml0aWFsbHkuIFRoZSA8ZnVuY3Rpb24+aW5pdF9mbjwvZnVuY3Rpb24+IHNob3VsZCBvbmx5CkBA IC0zNzY3LDggKzM3NjksOCBAQCBteV9zaG1lbV9pbml0KHZvaWQgKmFyZykKICAgICA8cGFyYT4K ICAgICBUaGUgc3RydWN0dXJlIGNhbiBiZSByZXNpemVkIHVzaW5nIDxmdW5jdGlvbj5TaG1lbVJl c2l6ZVN0cnVjdDwvZnVuY3Rpb24+IGJ5CiAgICAgcGFzc2luZyBpdCB0aGUgc3RydWN0dXJlJ3Mg PHN0cnVjdG5hbWU+U2htZW1TdHJ1Y3REZXNjPC9zdHJ1Y3RuYW1lPiBhbmQgdGhlCi0gICAgbmV3 IHNpemUgd2hpY2ggY2FuIGJlIGFueXdoZXJlIGJldHdlZW4gMCB0bwotICAgIDxwYXJhbWV0ZXI+ bWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+LiBJZiB0aGUgbmV3IHNpemUgaXMgc21hbGxlciB0aGFu IHRoZQorICAgIG5ldyBzaXplIHdoaWNoIGNhbiBiZSBhbnl3aGVyZSBiZXR3ZWVuIDxwYXJhbWV0 ZXI+bWluaW11bV9zaXplPC9wYXJhbWV0ZXI+CisgICAgYW5kIDxwYXJhbWV0ZXI+bWF4aW11bV9z aXplPC9wYXJhbWV0ZXI+LiBJZiB0aGUgbmV3IHNpemUgaXMgc21hbGxlciB0aGFuIHRoZQogICAg IGN1cnJlbnQgc2l6ZSBvZiB0aGUgc3RydWN0dXJlLCB0aGUgbWVtb3J5IGJldHdlZW4gdGhlIG5l dyBzaXplIGFuZCBjdXJyZW50CiAgICAgc2l6ZSBpcyBmcmVlZCB3aGlsZSBrZWVwaW5nIHRoZSBj b250ZW50cyBvZiB0aGUgbWVtb3J5IHVwdG8gbmV3IHNpemUgaW50YWN0LgogICAgIElmIHRoZSBu ZXcgc2l6ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgc2l6ZSwgbWVtb3J5IGlzIGFsbG9j YXRlZCB1cHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCA0YTNlOGE4NzY5ZS4uMTE1YzU0 M2QzNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMTExLDggKzExMSwxMSBAQAogICog c3RhcnR1cCwgYnV0IG1lbW9yeSBpcyBhbGxvY2F0ZWQgb3IgZnJlZWQgYXMgdGhlIHN0cnVjdHVy ZSBncm93cyBvciBzaHJpbmtzCiAgKiByZXNwZWN0aXZlbHkuIFNobWVtUmVxdWVzdFN0cnVjdE9w dHM6OnNpemUgc2hvdWxkIGJlIHNldCB0byB0aGUgaW5pdGlhbCBzaXplCiAgKiBvZiB0aGUgc3Ry dWN0dXJlLCB3aGljaCBpcyB0aGUgYW1vdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgYXQgdGhlIHN0 YXJ0dXAuCi0gKiBBZnRlciBzdGFydHVwLCB0aGUgc3RydWN0dXJlIGNhbiBiZSByZXNpemVkIGJ5 IGNhbGxpbmcgU2htZW1SZXNpemVTdHJ1Y3QoKSBieQotICogcGFzc2luZyBpdCB0aGUgU2htZW1T dHJ1Y3REZXNjIGZvciB0aGUgc3RydWN0dXJlIGFuZCB0aGUgbmV3IHNpemUuCisgKiBPcHRpb25h bGx5LCBTaG1lbVJlcXVlc3RTdHJ1Y3RPcHRzOjptaW5pbXVtX3NpemUgY2FuIGJlIHNldCB0byB0 aGUgbWluaW11bQorICogc2l6ZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgY2FuIHNocmluayB0by4gQWZ0 ZXIgc3RhcnR1cCwgdGhlIHN0cnVjdHVyZSBjYW4gYmUKKyAqIHJlc2l6ZWQgYnkgY2FsbGluZyBT aG1lbVJlc2l6ZVN0cnVjdCgpIGJ5IHBhc3NpbmcgaXQgdGhlIFNobWVtU3RydWN0RGVzYyBmb3IK KyAqIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBuZXcgc2l6ZS4gU2htZW1SZXNpemVTdHJ1Y3QoKSBl bmZvcmNlcyB0aGF0IHRoZSBuZXcKKyAqIHNpemUgaXMgd2l0aGluIFttaW5pbXVtX3NpemUsIG1h eGltdW1fc2l6ZV0uCiAgKgogICogV2hpbGUgcmVzaXphYmxlIHN0cnVjdHVyZXMgY2FuIGJlIGNy ZWF0ZWQgYWZ0ZXIgdGhlIHN0YXJ0dXAsIHRoZSBtZW1vcnkKICAqIGF2YWlsYWJsZSBmb3IgdGhl bSBpcyBxdWl0ZSBsaW1pdGVkLgpAQCAtMjk0LDYgKzI5Nyw4IEBAIHR5cGVkZWYgc3RydWN0CiAJ dm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCiAJU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwogCVNpemUJ CWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLworCVNpemUJ CW1pbmltdW1fc2l6ZTsJLyogdGhlIG1pbmltdW0gc2l6ZSB0aGUgc3RydWN0dXJlIGNhbiBzaHJp bmsKKwkJCQkJCQkJICogdG8gKi8KIAlTaXplCQltYXhpbXVtX3NpemU7CS8qIHRoZSBtYXhpbXVt IHNpemUgdGhlIHN0cnVjdHVyZSBjYW4gZ3JvdyB0byAqLwogCVNpemUJCXJlc2VydmVkX3NwYWNl OyAvKiB0aGUgdG90YWwgYWRkcmVzcyBzcGFjZSByZXNlcnZlZCAqLwogfSBTaG1lbUluZGV4RW50 OwpAQCAtMzgzLDYgKzM4OCw5IEBAIFNobWVtUmVxdWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0 cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlpZiAob3B0aW9ucy0+c2l6ZSA8 PSAwICYmIG9wdGlvbnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAkJCWVs b2coRVJST1IsICJpbnZhbGlkIHNpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9y IFwiJXNcIiIsCiAJCQkJIG9wdGlvbnMtPnNpemUsIG9wdGlvbnMtPm5hbWUpOworCQlpZiAob3B0 aW9ucy0+bWluaW11bV9zaXplIDwgMCAmJiBvcHRpb25zLT5taW5pbXVtX3NpemUgIT0gU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1pbmltdW1fc2l6 ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKKwkJCQkgb3B0aW9u cy0+bWluaW11bV9zaXplLCBvcHRpb25zLT5uYW1lKTsKIAkJaWYgKG9wdGlvbnMtPm1heGltdW1f c2l6ZSA8IDAgJiYgb3B0aW9ucy0+bWF4aW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dO X1NJWkUpCiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFy ZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCiAJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6 ZSwgb3B0aW9ucy0+bmFtZSk7CkBAIC0zOTQsNiArNDAyLDExIEBAIFNobWVtUmVxdWVzdEludGVy bmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlp ZiAob3B0aW9ucy0+c2l6ZSA8PSAwKQogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2l6ZSAlemQg Zm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCQkgb3B0aW9ucy0+c2l6 ZSwgb3B0aW9ucy0+bmFtZSk7CisJCWlmIChvcHRpb25zLT5taW5pbXVtX3NpemUgPT0gU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSkKKwkJCWVsb2coRVJST1IsICJTSE1FTV9BVFRBQ0hfVU5LTk9X Tl9TSVpFIGNhbm5vdCBiZSB1c2VkIGR1cmluZyBzdGFydHVwIik7CisJCWlmIChvcHRpb25zLT5t aW5pbXVtX3NpemUgPCAwKQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWluaW11bV9zaXplICV6 ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAorCQkJCSBvcHRpb25zLT5t aW5pbXVtX3NpemUsIG9wdGlvbnMtPm5hbWUpOwogCQlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXpl ID09IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCiAJCQllbG9nKEVSUk9SLCAiU0hNRU1fQVRU QUNIX1VOS05PV05fU0laRSBjYW5ub3QgYmUgdXNlZCBkdXJpbmcgc3RhcnR1cCIpOwogCQlpZiAo b3B0aW9ucy0+bWF4aW11bV9zaXplIDwgMCkKQEAgLTQwNSwxMCArNDE4LDIwIEBAIFNobWVtUmVx dWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBr aW5kKQogCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhbGlnbm1lbnQgJXp1IGZvciBzaGFyZWQgbWVt b3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCiAJCQkgb3B0aW9ucy0+YWxpZ25tZW50LCBvcHRpb25z LT5uYW1lKTsKIAorCWlmIChvcHRpb25zLT5taW5pbXVtX3NpemUgPiAwICYmIG9wdGlvbnMtPnNp emUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSAmJgorCQlvcHRpb25zLT5taW5pbXVtX3Np emUgPiBvcHRpb25zLT5zaXplKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1v cnkgc3RydWN0dXJlIFwiJXNcIiBzaG91bGQgaGF2ZSBtaW5pbXVtIHNpemUgKCV6ZCkgbGVzcyB0 aGFuIG9yIGVxdWFsIHRvIHNpemUgKCV6ZCkiLAorCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlvbnMt Pm1pbmltdW1fc2l6ZSwgb3B0aW9ucy0+c2l6ZSk7CisKIAlpZiAob3B0aW9ucy0+bWF4aW11bV9z aXplID4gMCAmJiBvcHRpb25zLT5zaXplID4gb3B0aW9ucy0+bWF4aW11bV9zaXplKQogCQllbG9n KEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIFwiJXNcIiBzaG91bGQg aGF2ZSBtYXhpbXVtIHNpemUgKCV6ZCkgZ3JlYXRlciB0aGFuIHNpemUgKCV6ZCkiLAogCQkJIG9w dGlvbnMtPm5hbWUsIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+c2l6ZSk7CiAKKwlp ZiAob3B0aW9ucy0+bWluaW11bV9zaXplID4gMCAmJiBvcHRpb25zLT5tYXhpbXVtX3NpemUgPiAw ICYmCisJCW9wdGlvbnMtPm1pbmltdW1fc2l6ZSA+IG9wdGlvbnMtPm1heGltdW1fc2l6ZSkKKwkJ ZWxvZyhFUlJPUiwgInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBcIiVzXCIgc2hv dWxkIGhhdmUgbWluaW11bSBzaXplICglemQpIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXhpbXVt IHNpemUgKCV6ZCkiLAorCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlvbnMtPm1pbmltdW1fc2l6ZSwg b3B0aW9ucy0+bWF4aW11bV9zaXplKTsKKwogCS8qIENoZWNrIHRoYXQgd2UncmUgaW4gdGhlIHJp Z2h0IHN0YXRlICovCiAJaWYgKHNobWVtX3JlcXVlc3Rfc3RhdGUgIT0gU1JTX1JFUVVFU1RJTkcp CiAJCWVsb2coRVJST1IsICJTaG1lbVJlcXVlc3RTdHJ1Y3QgY2FuIG9ubHkgYmUgY2FsbGVkIGZy b20gYSBzaG1lbV9yZXF1ZXN0IGNhbGxiYWNrIik7CkBAIC02MTQsMTIgKzYzNywxOSBAQCBJbml0 U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCkKIAlpbmRleF9lbnRyeS0+YWxs b2NhdGVkX3NpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKIAlpbmRleF9lbnRyeS0+bG9jYXRpb24gPSBz dHJ1Y3RQdHI7CiAJaW5kZXhfZW50cnktPnJlc2VydmVkX3NwYWNlID0gYWxsb2NhdGVkX3NpemU7 Ci0JaW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1f c2l6ZTsKIAlpZiAocmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCkKIAl7CisJCWlu ZGV4X2VudHJ5LT5taW5pbXVtX3NpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5taW5pbXVtX3NpemU7 CisJCWluZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVt X3NpemU7CisKIAkJLyogQWRqdXN0IGFsbG9jYXRlZCBzaXplIG9mIGEgcmVzaXphYmxlIHN0cnVj dHVyZS4gKi8KIAkJaW5kZXhfZW50cnktPmFsbG9jYXRlZF9zaXplID0gRXN0aW1hdGVBbGxvY2F0 ZWRTaXplKGluZGV4X2VudHJ5KTsKIAl9CisJZWxzZQorCXsKKwkJaW5kZXhfZW50cnktPm1pbmlt dW1fc2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemU7CisJCWluZGV4X2VudHJ5LT5tYXhpbXVt X3NpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5zaXplOworCX0KIAogCS8qIEluaXRpYWxpemUgZGVw ZW5kaW5nIG9uIHRoZSBraW5kIG9mIHNobWVtIGFyZWEgaXQgaXMgKi8KIAlzd2l0Y2ggKHJlcXVl c3QtPmtpbmQpCkBAIC02NzQsMTQgKzcwNCwzOCBAQCBBdHRhY2hTaG1lbUluZGV4RW50cnkoU2ht ZW1SZXF1ZXN0ICpyZXF1ZXN0LCBib29sIG1pc3Npbmdfb2spCiAJCQkJCQluYW1lLCBpbmRleF9l bnRyeS0+c2l6ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSkpKTsKIAl9CiAKLQlpZiAoaW5kZXhf ZW50cnktPm1heGltdW1fc2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3NpemUgJiYK LQkJcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dO X1NJWkUpCisJLyoKKwkgKiBGb3IgcmVzaXphYmxlIHN0cnVjdHVyZXMsIGFsc28gY2hlY2sgdGhh dCBtaW5pbXVtX3NpemUgYW5kIG1heGltdW1fc2l6ZQorCSAqIG1hdGNoLiBGb3IgZml4ZWQtc2l6 ZSBzdHJ1Y3R1cmVzLCB0aGVzZSBhcmUgZGVyaXZlZCAoc2V0IHRvIHNpemUpIGluCisJICogdGhl IGluZGV4IGVudHJ5IGFuZCBub3QgbWVhbmluZ2Z1bCBpbiB0aGUgcmVxdWVzdC4KKwkgKi8KKwlp ZiAocmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplICE9IDApCiAJewotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiB3YXMgY3JlYXRl ZCB3aXRoIiBcCi0JCQkJCQkiIGRpZmZlcmVudCBtYXhpbXVtX3NpemU6IGV4aXN0aW5nICV6dSwg cmVxdWVzdGVkICV6dSIsCi0JCQkJCQluYW1lLCBpbmRleF9lbnRyeS0+bWF4aW11bV9zaXplLAot CQkJCQkJcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplKSkpOworCQlpZiAoaW5kZXhfZW50 cnktPm1pbmltdW1fc2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25zLT5taW5pbXVtX3NpemUgJiYKKwkJ CXJlcXVlc3QtPm9wdGlvbnMtPm1pbmltdW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9T SVpFKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5 IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0aCIKKwkJCQkJCQkiIGRpZmZlcmVudCBtaW5p bXVtX3NpemU6IGV4aXN0aW5nICV6dSwgcmVxdWVzdGVkICV6dSIsCisJCQkJCQkJbmFtZSwgaW5k ZXhfZW50cnktPm1pbmltdW1fc2l6ZSwKKwkJCQkJCQlyZXF1ZXN0LT5vcHRpb25zLT5taW5pbXVt X3NpemUpKSk7CisJCX0KKworCQlpZiAoaW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSAhPSByZXF1 ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3NpemUgJiYKKwkJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGlt dW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQl7CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0 ZWQgd2l0aCIKKwkJCQkJCQkiIGRpZmZlcmVudCBtYXhpbXVtX3NpemU6IGV4aXN0aW5nICV6dSwg cmVxdWVzdGVkICV6dSIsCisJCQkJCQkJbmFtZSwgaW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSwK KwkJCQkJCQlyZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3NpemUpKSk7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJaWYgKGluZGV4X2VudHJ5LT5taW5pbXVtX3NpemUgIT0gaW5kZXhfZW50cnktPm1h eGltdW1fc2l6ZSkKKwkJCWVsb2coRVJST1IsICJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIg d2FzIGNyZWF0ZWQgYXMgcmVzaXphYmxlLCBidXQgcmVxdWVzdGVkIGFzIGZpeGVkLXNpemUiLAor CQkJCSBuYW1lKTsKIAl9CiAKIAkvKgpAQCAtNzQwLDEwICs3OTQsMTEgQEAgRXN0aW1hdGVBbGxv Y2F0ZWRTaXplKFNobWVtSW5kZXhFbnQgKmVudHJ5KQogLyoKICAqIFNobWVtUmVzaXplU3RydWN0 KCkgLS0tIHJlc2l6ZSBhIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZS4KICAqCi0g KiBJZiB0aGUgc3RydWN0dXJlIGlzIGJlaW5nIHNocnVuaywgdGhlIG1lbW9yeSBwYWdlcyB0aGF0 IGFyZSBubyBsb25nZXIgbmVlZGVkCi0gKiBhcmUgZnJlZWQuIElmIHRoZSBzdHJ1Y3R1cmUgaXMg YmVpbmcgZXhwYW5kZWQsIHRoZSBtZW1vcnkgcGFnZXMgdGhhdCBhcmUKLSAqIG5lZWRlZCBmb3Ig dGhlIG5ldyBzaXplIGFyZSBhbGxvY2F0ZWQuIFNlZSBFc3RpbWF0ZUFsbG9jYXRlZFNpemUoKSBm b3IKLSAqIGV4cGxhbmF0aW9uIG9mIHdoaWNoIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgZm9yIGEgcmVz aXphYmxlIHN0cnVjdHVyZS4KKyAqIFRoZSBuZXcgc2l6ZSBtdXN0IGJlIHdpdGhpbiBbbWluaW11 bV9zaXplLCBtYXhpbXVtX3NpemVdLiAgSWYgdGhlIHN0cnVjdHVyZQorICogaXMgYmVpbmcgc2hy dW5rLCB0aGUgbWVtb3J5IHBhZ2VzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQgYXJlIGZyZWVk LiBJZgorICogdGhlIHN0cnVjdHVyZSBpcyBiZWluZyBleHBhbmRlZCwgdGhlIG1lbW9yeSBwYWdl cyB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoZQorICogbmV3IHNpemUgYXJlIGFsbG9jYXRlZC4gU2Vl IEVzdGltYXRlQWxsb2NhdGVkU2l6ZSgpIGZvciBleHBsYW5hdGlvbiBvZiB3aGljaAorICogcGFn ZXMgYXJlIGFsbG9jYXRlZCBmb3IgYSByZXNpemFibGUgc3RydWN0dXJlLgogICovCiB2b2lkCiBT aG1lbVJlc2l6ZVN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19zaXplKQpAQCAtNzc2 LDE1ICs4MzEsMjIgQEAgU2htZW1SZXNpemVTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBu ZXdfc2l6ZSkKIAogCUFzc2VydChyZXN1bHQpOwogCi0JaWYgKHJlc3VsdC0+bWF4aW11bV9zaXpl IDw9IDApCisJaWYgKHJlc3VsdC0+bWluaW11bV9zaXplID09IHJlc3VsdC0+bWF4aW11bV9zaXpl KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwi JXNcIiBpcyBub3QgcmVzaXphYmxlIiwgbmFtZSkpKTsKIAorCWlmIChuZXdfc2l6ZSA8IHJlc3Vs dC0+bWluaW11bV9zaXplKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCisJCQkJIGVycm1zZygiY2Fubm90IHNocmluayBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZSBcIiVzXCIgYmVsb3cgbWluaW11bSBzaXplIgorCQkJCQkJIiAo cmVxdWVzdGVkICV6dSBieXRlcywgbWluaW11bSAlenUgYnl0ZXMpIiwKKwkJCQkJCW5hbWUsIG5l d19zaXplLCByZXN1bHQtPm1pbmltdW1fc2l6ZSkpKTsKKwogCWlmIChyZXN1bHQtPm1heGltdW1f c2l6ZSA8IG5ld19zaXplKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCi0JCQkJIGVycm1zZygibm90IGVub3VnaCBhZGRyZXNz IHNwYWNlIGlzIHJlc2VydmVkIGZvciByZXNpemluZyBzdHJ1Y3R1cmUgXCIlc1wiIiBcCisJCQkJ IGVycm1zZygibm90IGVub3VnaCBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIGZvciByZXNpemlu ZyBzdHJ1Y3R1cmUgXCIlc1wiIgogCQkJCQkJIihyZXF1aXJlZCAlenUgYnl0ZXMsIHJlc2VydmVk ICV6dSBieXRlcykiLAogCQkJCQkJbmFtZSwgbmV3X3NpemUsIHJlc3VsdC0+bWF4aW11bV9zaXpl KSkpOwogCkBAIC05MjUsNyArOTg3LDggQEAgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFk ZXIgKnNlZ2hkcikKIAkJcmVzdWx0LT5zaXplID0gU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemU7 CiAJCXJlc3VsdC0+YWxsb2NhdGVkX3NpemUgPSBTaG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZTsK ICNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQotCQlyZXN1bHQtPm1heGltdW1fc2l6ZSA9IDA7 CisJCXJlc3VsdC0+bWluaW11bV9zaXplID0gcmVzdWx0LT5zaXplOworCQlyZXN1bHQtPm1heGlt dW1fc2l6ZSA9IHJlc3VsdC0+c2l6ZTsKIAkJcmVzdWx0LT5yZXNlcnZlZF9zcGFjZSA9IHJlc3Vs dC0+YWxsb2NhdGVkX3NpemU7CiAjZW5kaWYKIAkJcmVzdWx0LT5sb2NhdGlvbiA9IFNobWVtQWxs b2NhdG9yLT5pbmRleDsKQEAgLTEyNzEsNyArMTMzNCw3IEBAIG11bF9zaXplKFNpemUgczEsIFNp emUgczIpCiBEYXR1bQogcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDYKKyNkZWZpbmUgUEdfR0VUX1NI TUVNX1NJWkVTX0NPTFMgNwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZv ICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7CiAJU2htZW1J bmRleEVudCAqZW50OwpAQCAtMTI5Myw4ICsxMzU2LDkgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oKGNoYXIg KikgZW50LT5sb2NhdGlvbiAtIChjaGFyICopIFNobWVtU2VnSGRyKTsKIAkJdmFsdWVzWzJdID0g SW50NjRHZXREYXR1bShlbnQtPnNpemUpOwogCQl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKGVu dC0+YWxsb2NhdGVkX3NpemUpOwotCQl2YWx1ZXNbNF0gPSBJbnQ2NEdldERhdHVtKGVudC0+bWF4 aW11bV9zaXplKTsKLQkJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bShlbnQtPnJlc2VydmVkX3Nw YWNlKTsKKwkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bShlbnQtPm1pbmltdW1fc2l6ZSk7CisJ CXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0oZW50LT5tYXhpbXVtX3NpemUpOworCQl2YWx1ZXNb Nl0gPSBJbnQ2NEdldERhdHVtKGVudC0+cmVzZXJ2ZWRfc3BhY2UpOwogCiAJCS8qCiAJCSAqIEtl ZXAgdHJhY2sgb2YgdGhlIHRvdGFsIHJlc2VydmVkIHNwYWNlIGZvciBuYW1lZCBzaG1lbSBhcmVh cywgdG8gYmUKQEAgLTEzMTMsOCArMTM3Nyw5IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQ R19GVU5DVElPTl9BUkdTKQogCW51bGxzWzFdID0gdHJ1ZTsKIAl2YWx1ZXNbMl0gPSBJbnQ2NEdl dERhdHVtKFNobWVtQWxsb2NhdG9yLT5mcmVlX29mZnNldCAtIG5hbWVkX2FsbG9jYXRlZCk7CiAJ dmFsdWVzWzNdID0gdmFsdWVzWzJdOwotCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0oMCk7CisJ dmFsdWVzWzRdID0gdmFsdWVzWzJdOwogCXZhbHVlc1s1XSA9IHZhbHVlc1syXTsKKwl2YWx1ZXNb Nl0gPSB2YWx1ZXNbMl07CiAJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQs IHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBvdXRwdXQgYXMtb2YteWV0 IHVudXNlZCBzaGFyZWQgbWVtb3J5ICovCkBAIC0xMzIzLDggKzEzODgsOSBAQCBwZ19nZXRfc2ht ZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAludWxsc1sxXSA9IGZhbHNlOwogCXZh bHVlc1syXSA9IEludDY0R2V0RGF0dW0oU2htZW1TZWdIZHItPnRvdGFsc2l6ZSAtIFNobWVtQWxs b2NhdG9yLT5mcmVlX29mZnNldCk7CiAJdmFsdWVzWzNdID0gdmFsdWVzWzJdOwotCXZhbHVlc1s0 XSA9IEludDY0R2V0RGF0dW0oMCk7CisJdmFsdWVzWzRdID0gdmFsdWVzWzJdOwogCXZhbHVlc1s1 XSA9IHZhbHVlc1syXTsKKwl2YWx1ZXNbNl0gPSB2YWx1ZXNbMl07CiAJdHVwbGVzdG9yZV9wdXR2 YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7 CiAKIAlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IDMyOTQ1ZDczZjM2Li41ZmY2YzU0MzMwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC04NzAyLDggKzg3MDIsOCBAQAogeyBvaWQgPT4gJzUwNTInLCBkZXNjciA9PiAnYWxsb2Nh dGlvbnMgZnJvbSB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQnLAogICBwcm9uYW1lID0+ ICdwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLCBwcm9yb3dzID0+ICc1MCcsIHByb3JldHNldCA9 PiAndCcsCiAgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJv YXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50 OCxpbnQ4LGludDh9JywgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sb30nLAotICBwcm9hcmdu YW1lcyA9PiAne25hbWUsb2ZmLHNpemUsYWxsb2NhdGVkX3NpemUsbWF4aW11bV9zaXplLHJlc2Vy dmVkX3NwYWNlfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50OCxp bnQ4LGludDgsaW50OH0nLCBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tuYW1lLG9mZixzaXplLGFsbG9jYXRlZF9zaXplLG1pbmltdW1fc2l6ZSxt YXhpbXVtX3NpemUscmVzZXJ2ZWRfc3BhY2V9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfc2htZW1f YWxsb2NhdGlvbnMnLAogICBwcm9hY2wgPT4gJ3tQT1NUR1JFUz1YLHBnX3JlYWRfYWxsX3N0YXRz PVh9JyB9LAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKaW5kZXggODE0MGEwMjU1YWUuLjBlNmQ1YTYzZjI4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaG1lbS5oCkBAIC01Nyw2ICs1NywxMiBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbVN0 cnVjdE9wdHMKIAkgKi8KIAlzaXplX3QJCWFsaWdubWVudDsKIAorCS8qCisJICogTWluaW11bSBz aXplIHRoaXMgc3RydWN0dXJlIGNhbiBzaHJpbmsgdG8uIFNob3VsZCBiZSBzZXQgdG8gMCBmb3IK KwkgKiBmaXhlZC1zaXplIHN0cnVjdHVyZXMuCisJICovCisJc3NpemVfdAkJbWluaW11bV9zaXpl OworCiAJLyoKIAkgKiBNYXhpbXVtIHNpemUgdGhpcyBzdHJ1Y3R1cmUgY2FuIGdyb3cgdXB0byBp biBmdXR1cmUuIFRoZSBtZW1vcnkgaXMgbm90CiAJICogYWxsb2NhdGVkIHJpZ2h0IGF3YXkgYnV0 IHRoZSBjb3JyZXNwb25kaW5nIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2ZWQgc28KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jIGIv c3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKaW5kZXgg ZmIzZGZkNjRiNGIuLmQwMzVkNzY3YTYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Jl c2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jl c2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwpAQCAtMTQ0LDE0ICsxNDQsMTcgQEAgcmVz aXphYmxlX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQogI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NI TUVNCiAJU2l6ZQkJbWF4X3NpemUgPSBhZGRfc2l6ZShvZmZzZXRvZihUZXN0UmVzaXphYmxlU2ht ZW1TdHJ1Y3QsIGRhdGEpLAogCQkJCQkJCQkJbXVsX3NpemUodGVzdF9tYXhfZW50cmllcywgVEVT VF9FTlRSWV9TSVpFKSk7CisJU2l6ZQkJbWluX3NpemUgPSBvZmZzZXRvZihUZXN0UmVzaXphYmxl U2htZW1TdHJ1Y3QsIGRhdGEpOwogCiAjZWxzZQogCVNpemUJCW1heF9zaXplID0gMDsKKwlTaXpl CQltaW5fc2l6ZSA9IDA7CiAjZW5kaWYKIAogCS8qIFJlZ2lzdGVyIG91ciByZXNpemFibGUgc2hh cmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KIAlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAicmVz aXphYmxlX3NobWVtIiwKIAkJCQkJICAgLnNpemUgPSB1c2VfdW5rbm93bl9zaXplID8gU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSA6IGluaXRpYWxfc2l6ZSwKKwkJCQkJICAgLm1pbmltdW1fc2l6 ZSA9IG1pbl9zaXplLAogCQkJCQkgICAubWF4aW11bV9zaXplID0gbWF4X3NpemUsCiAJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJnJlc2l6YWJsZV9zaG1lbSwKIAkJKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbCBi L3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5w bAppbmRleCBhMTcyY2QwZmQxOS4uNmEwMGFlMGExOTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFibGVfc2htZW0ucGwKQEAg LTk2LDcgKzk2LDcgQEAgc3ViIHJ1bl9yZXNpemFibGVfdGVzdHMKIAkJJHNlc3Npb24yLT5xdWl0 OwogCiAJCSMgVmVyaWZ5IG5vIG90aGVyIHN0cnVjdHVyZSBpcyByZXNpemFibGUKLQkJaXMoJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfc2htZW1f YWxsb2NhdGlvbnMgV0hFUkUgbmFtZSA8PiAncmVzaXphYmxlX3NobWVtJyBBTkQgbWF4aW11bV9z aXplIDw+IDA7IiksCisJCWlzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3NobWVtX2FsbG9jYXRpb25zIFdIRVJFIG5hbWUgPD4gJ3Jlc2l6YWJs ZV9zaG1lbScgQU5EIG1heGltdW1fc2l6ZSA8PiBtaW5pbXVtX3NpemU7IiksCiAJCQkJCQkJJzAn LCAiJHByZWZpeDogbm8gb3RoZXIgcmVzaXphYmxlIHN0cnVjdHVyZXMiKTsKIAogCQkjIFJlc2l6 ZSB0byBtYXhpbXVtCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8w MDFfbGF0ZV9zaG1lbV9hbGxvYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAw MV9sYXRlX3NobWVtX2FsbG9jLnBsCmluZGV4IGM4OWIxNDA4NzFmLi40NzJkNGIxMjFhZSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxs b2MucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1f YWxsb2MucGwKQEAgLTY3LDYgKzY3LDE0IEBAIGlmICgkaGF2ZV9yZXNpemFibGVfc2htZW0pCiAg ICBsaWtlKCRzdGRlcnIsIHFyL2lzIG5vdCByZXNpemFibGUvLCAic2hyaW5rIGVycm9yIG1lc3Nh Z2UgbWVudGlvbnMgbm90IHJlc2l6YWJsZSIpOwogfQogCisjIyMKKyMgVGVzdCB0aGF0IG1pbmlt dW1fc2l6ZSBhbmQgbWF4aW11bV9zaXplIGVxdWFsIHNpemUgZm9yIGEgZml4ZWQtc2l6ZSBzdHJ1 Y3R1cmUKKyMgaW4gcGdfc2htZW1fYWxsb2NhdGlvbnMuCisjIyMKK2lzKCRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKyAgICJTRUxFQ1QgbWluaW11bV9zaXplID0gc2l6ZSBBTkQgbWF4aW11 bV9zaXplID0gc2l6ZSBGUk9NIHBnX3NobWVtX2FsbG9jYXRpb25zIFdIRVJFIG5hbWUgPSAndGVz dF9zaG1lbSBhcmVhJzsiKSwKKyAgICd0JywgImZpeGVkLXNpemUgc3RydWN0dXJlIGhhcyBtaW5p bXVtX3NpemUgPSBtYXhpbXVtX3NpemUgPSBzaXplIik7CisKICRub2RlLT5zdG9wOwogCiBkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMmJiYmY0OGM5 NmEuLmM0MmViOWM2N2ExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTc3 MSw5ICsxNzcxLDEwIEBAIHBnX3NobWVtX2FsbG9jYXRpb25zfCBTRUxFQ1QgbmFtZSwKICAgICBv ZmYsCiAgICAgc2l6ZSwKICAgICBhbGxvY2F0ZWRfc2l6ZSwKKyAgICBtaW5pbXVtX3NpemUsCiAg ICAgbWF4aW11bV9zaXplLAogICAgIHJlc2VydmVkX3NwYWNlCi0gICBGUk9NIHBnX2dldF9zaG1l bV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBvZmYsIHNpemUs IGFsbG9jYXRlZF9zaXplLCBtYXhpbXVtX3NpemUsIHJlc2VydmVkX3NwYWNlKTsKKyAgIEZST00g cGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKCkgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKG5hbWUs IG9mZiwgc2l6ZSwgYWxsb2NhdGVkX3NpemUsIG1pbmltdW1fc2l6ZSwgbWF4aW11bV9zaXplLCBy ZXNlcnZlZF9zcGFjZSk7CiBwZ19zaG1lbV9hbGxvY2F0aW9uc19udW1hfCBTRUxFQ1QgbmFtZSwK ICAgICBudW1hX25vZGUsCiAgICAgc2l6ZQotLSAKMi4zNC4xCgo= --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0004-Avoid-creating-ABI-incompatibility-because.patch" Content-Disposition: attachment; filename="v20260406-0004-Avoid-creating-ABI-incompatibility-because.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937fj3 RnJvbSA0NTY5NmQ4ZjIzNzFjY2VjYTFlMzg3MTllZjQ5MDM2Y2RkNjdjMjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDEzOjAwOjAwICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDYgNC82XSBBdm9pZCBjcmVhdGluZyBBQkkgaW5jb21wYXRpYmlsaXR5IGJl Y2F1c2Ugb2YKIEhBVkVfUkVTSVpBQkxFX1NITUVNCgpQZXIgdGhlIHN1Z2dlc3Rpb24gYXQgaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUV6ZTJXam4yY3BRRVB3ekxhamMw WGRjTXk4VD1kMUFXamczVUFtTVVUMlRtSGtRa0FAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFj a2VuZC9wb3J0L3N5c3Zfc2htZW0uYyAgICAgICAgICAgICAgICAgfCAxNCArKysrKy0KIHNyYy9i YWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKwog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgNDggKysrKysr Ky0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oICAgICAgICAgICAg ICAgIHwgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAg IHwgIDUgLS0KIC4uLi9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYyB8 IDIyICsrKysrLS0tLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYyAg ICAgIHwgIDYgLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDU2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jIGIvc3Jj L2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKaW5kZXggOGQ4NTlkZmJiZmIuLmJiMmE4MTQxN2M2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3J0L3N5c3Zfc2htZW0uYwpAQCAtMTAxMyw3ICsxMDEzLDYgQEAgUEdTaGFyZWRNZW1v cnlEZXRhY2godm9pZCkKIAl9CiB9CiAKLSNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQogLyoK ICAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1vcnkgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHRoZSBnaXZl biBhZGRyZXNzIGlzIHJlbGVhc2VkLgogICoKQEAgLTEwMjQsNiArMTAyMywxMSBAQCBQR1NoYXJl ZE1lbW9yeURldGFjaCh2b2lkKQogdm9pZAogUEdTaGFyZWRNZW1vcnlFbnN1cmVGcmVlZCh2b2lk ICphZGRyLCBTaXplIHNpemUpCiB7CisjaWZuZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJZXJl cG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCSBlcnJtc2coInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24g dGhpcyBwbGF0Zm9ybSIpKSk7CisjZWxzZQogCWlmICghQW5vbnltb3VzU2htZW0pCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLApA QCAtMTAzNSw2ICsxMDM5LDcgQEAgUEdTaGFyZWRNZW1vcnlFbnN1cmVGcmVlZCh2b2lkICphZGRy LCBTaXplIHNpemUpCiAJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9SRU1PVkUpID09IC0x KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCBmcmVlIHNoYXJlZCBt ZW1vcnk6ICVtIikpKTsKKyNlbmRpZgogfQogCiAvKgpAQCAtMTA0Nyw2ICsxMDUyLDExIEBAIFBH U2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKQogdm9pZAogUEdT aGFyZWRNZW1vcnlFbnN1cmVBbGxvY2F0ZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKQogeworI2lm bmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGUgc2hh cmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworI2Vsc2UK IAlpZiAoIUFub255bW91c1NobWVtKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKQEAgLTEwNTgsNSArMTA2OCw1IEBAIFBHU2hh cmVkTWVtb3J5RW5zdXJlQWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKIAlpZiAobWFk dmlzZShhZGRyLCBzaXplLCBNQURWX1BPUFVMQVRFX1dSSVRFKSA9PSAtMSkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeTogJW0i KSkpOworI2VuZGlmCiB9Ci0jZW5kaWYJCQkJCQkJLyogSEFWRV9SRVNJWkFCTEVfU0hNRU0gKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyBiL3NyYy9iYWNrZW5k L3BvcnQvd2luMzJfc2htZW0uYwppbmRleCBkYzJlZTAxODg0NS4uYzFmMzA2NjVlNjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9w b3J0L3dpbjMyX3NobWVtLmMKQEAgLTY3MSwzICs2NzEsMjUgQEAgR2V0T1NQYWdlU2l6ZSh2b2lk KQogCiAJcmV0dXJuIG9zX3BhZ2Vfc2l6ZTsKIH0KKworLyoKKyAqIFBHU2hhcmVkTWVtb3J5RW5z dXJlRnJlZWQgLyBQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRlZAorICoKKyAqIE5vdCBzdXBw b3J0ZWQgb24gV2luZG93cy4gIFRoZXNlIGFyZSBvbmx5IG1lYW5pbmdmdWwgb24gcGxhdGZvcm1z IHdpdGgKKyAqIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IChtbWFwICsgbWFkdmlzZSkuCisgKi8K K3ZvaWQKK1BHU2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQodm9pZCAqYWRkciwgU2l6ZSBzaXplKQor eworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9y dGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworfQorCit2b2lkCitQR1NoYXJlZE1lbW9yeUVuc3Vy ZUFsbG9jYXRlZCh2b2lkICphZGRyLCBTaXplIHNpemUpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJl c2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIp KSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCAwM2RlNWQ4OGQ1MS4uNGEzZThhODc2 OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMTg1LDE0ICsxODUsMTIgQEAgdHlwZWRl ZiBzdHJ1Y3QKIC8qCiAgKiBBIGNvbnZlbmllbnQgbWFjcm8gdG8gZ2V0IHRoZSBzcGFjZSByZXF1 aXJlZCBmb3IgYSBzaG1lbSByZXF1ZXN0IGNvbnNpc3RlbnRseS4KICAqIEEgcmVzaXphYmxlIHN0 cnVjdHVyZSwgcmVxdWVzdGVkIGJ5IG5vbi16ZXJvIG1heGltdW1fc2l6ZSwgcmVxdWlyZXMgc3Bh Y2UgZm9yCi0gKiBpdHMgbWF4aW11bSBzaXplLgorICogaXRzIG1heGltdW0gc2l6ZS4gUGxlYXNl IG5vdGUgdGhhdCBvbiB0aGUgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQKKyAqIHJlc2l6 YWJsZSBzaG1lbSwgdGhlIG1heGltdW1fc2l6ZSBpcyBlbnN1cmVkIHRvIGJlIDAgaS5lLiBhbGwg dGhlIHN0cnVjdHVyZXMKKyAqIGFyZSB0cmVhdGVkIGFzIGZpeGVkLXNpemUgc3RydWN0dXJlcy4K ICAqLwotI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCiAjZGVmaW5lIFNITUVNX1JFUVVFU1Rf U1BBQ0VfU0laRShyZXF1ZXN0KSBcCiAJKChyZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXpl ID4gMCA/IChyZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXplIDogKHJlcXVlc3QpLT5vcHRp b25zLT5zaXplKQotI2Vsc2UKLSNkZWZpbmUgU0hNRU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVl c3QpICgocmVxdWVzdCktPm9wdGlvbnMtPnNpemUpCi0jZW5kaWYKIAogc3RhdGljIExpc3QgKnBl bmRpbmdfc2htZW1fcmVxdWVzdHM7CiAKQEAgLTI5NiwxMCArMjk0LDggQEAgdHlwZWRlZiBzdHJ1 Y3QKIAl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0aW9uIGluIHNoYXJlZCBtZW0gKi8KIAlT aXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVzdGVkIGZvciB0aGUgc3RydWN0dXJlICovCiAJ U2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2NhdGVkICovCi0j aWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIAlTaXplCQltYXhpbXVtX3NpemU7CS8qIHRoZSBt YXhpbXVtIHNpemUgdGhlIHN0cnVjdHVyZSBjYW4gZ3JvdyB0byAqLwogCVNpemUJCXJlc2VydmVk X3NwYWNlOyAvKiB0aGUgdG90YWwgYWRkcmVzcyBzcGFjZSByZXNlcnZlZCAqLwotI2VuZGlmCiB9 IFNobWVtSW5kZXhFbnQ7CiAKIC8qIFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZvciBOVU1BIGlu cXVpcnkgd2UgbmVlZCB0byAidG91Y2ggcGFnZXMiIG9uY2UgKi8KQEAgLTMwOCw5ICszMDQsNyBA QCBzdGF0aWMgYm9vbCBmaXJzdE51bWFUb3VjaCA9IHRydWU7CiBzdGF0aWMgdm9pZCBDYWxsU2ht ZW1DYWxsYmFja3NBZnRlclN0YXJ0dXAoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcyk7 CiBzdGF0aWMgdm9pZCBJbml0U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCk7 CiBzdGF0aWMgYm9vbCBBdHRhY2hTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0 LCBib29sIG1pc3Npbmdfb2spOwotI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCiBzdGF0aWMg U2l6ZSBFc3RpbWF0ZUFsbG9jYXRlZFNpemUoU2htZW1JbmRleEVudCAqZW50cnkpOwotI2VuZGlm CiAKIERhdHVtCQlwZ19udW1hX2F2YWlsYWJsZShQR19GVU5DVElPTl9BUkdTKTsKIApAQCAtMzc2 LDE2ICszNzAsMjIgQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwoU2htZW1TdHJ1Y3RPcHRzICpvcHRp b25zLCBTaG1lbVJlcXVlc3RLaW5kIGtpbmQpCiAJaWYgKG9wdGlvbnMtPm5hbWUgPT0gTlVMTCkK IAkJZWxvZyhFUlJPUiwgInNoYXJlZCBtZW1vcnkgcmVxdWVzdCBpcyBtaXNzaW5nICduYW1lJyBv cHRpb24iKTsKIAorI2lmbmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWlmIChvcHRpb25zLT5t YXhpbXVtX3NpemUgPiAwKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkg aXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7CisjZWxzZQorCWlmIChvcHRpb25z LT5tYXhpbXVtX3NpemUgPiAwICYmIHNoYXJlZF9tZW1vcnlfdHlwZSAhPSBTSE1FTV9UWVBFX01N QVApCisJCWVsb2coRVJST1IsICJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSByZXF1aXJlcyBzaGFy ZWRfbWVtb3J5X3R5cGUgPSBtbWFwIik7CisjZW5kaWYKKwogCWlmIChJc1VuZGVyUG9zdG1hc3Rl cikKIAl7CiAJCWlmIChvcHRpb25zLT5zaXplIDw9IDAgJiYgb3B0aW9ucy0+c2l6ZSAhPSBTSE1F TV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2l6ZSAlemQg Zm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCQkgb3B0aW9ucy0+c2l6 ZSwgb3B0aW9ucy0+bmFtZSk7Ci0jaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIAkJaWYgKG9w dGlvbnMtPm1heGltdW1fc2l6ZSA8IDAgJiYgb3B0aW9ucy0+bWF4aW11bV9zaXplICE9IFNITUVN X0FUVEFDSF9VTktOT1dOX1NJWkUpCiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtYXhpbXVtX3Np emUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCiAJCQkJIG9wdGlv bnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7Ci0jZW5kaWYKIAl9CiAJZWxzZQogCXsK QEAgLTM5NCwyOCArMzk0LDIxIEBAIFNobWVtUmVxdWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0 cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlpZiAob3B0aW9ucy0+c2l6ZSA8 PSAwKQogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2l6ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkg cmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCQkgb3B0aW9ucy0+c2l6ZSwgb3B0aW9ucy0+bmFtZSk7 Ci0jaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIAkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6 ZSA9PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQogCQkJZWxvZyhFUlJPUiwgIlNITUVNX0FU VEFDSF9VTktOT1dOX1NJWkUgY2Fubm90IGJlIHVzZWQgZHVyaW5nIHN0YXJ0dXAiKTsKIAkJaWYg KG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDApCiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtYXhp bXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCiAJCQkJ IG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7Ci0jZW5kaWYKIAl9CiAKIAlp ZiAob3B0aW9ucy0+YWxpZ25tZW50ICE9IDAgJiYgcGdfbmV4dHBvd2VyMl9zaXplX3Qob3B0aW9u cy0+YWxpZ25tZW50KSAhPSBvcHRpb25zLT5hbGlnbm1lbnQpCiAJCWVsb2coRVJST1IsICJpbnZh bGlkIGFsaWdubWVudCAlenUgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwK IAkJCSBvcHRpb25zLT5hbGlnbm1lbnQsIG9wdGlvbnMtPm5hbWUpOwogCi0jaWZkZWYgSEFWRV9S RVNJWkFCTEVfU0hNRU0KIAlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCAmJiBvcHRpb25z LT5zaXplID4gb3B0aW9ucy0+bWF4aW11bV9zaXplKQogCQllbG9nKEVSUk9SLCAicmVzaXphYmxl IHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIFwiJXNcIiBzaG91bGQgaGF2ZSBtYXhpbXVtIHNpemUg KCV6ZCkgZ3JlYXRlciB0aGFuIHNpemUgKCV6ZCkiLAogCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlv bnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+c2l6ZSk7CiAKLQlpZiAob3B0aW9ucy0+bWF4aW11 bV9zaXplID4gMCAmJiBzaGFyZWRfbWVtb3J5X3R5cGUgIT0gU0hNRU1fVFlQRV9NTUFQKQotCQll bG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgcmVxdWlyZXMgc2hhcmVkX21lbW9y eV90eXBlID0gbW1hcCIpOwotI2VuZGlmCi0KIAkvKiBDaGVjayB0aGF0IHdlJ3JlIGluIHRoZSBy aWdodCBzdGF0ZSAqLwogCWlmIChzaG1lbV9yZXF1ZXN0X3N0YXRlICE9IFNSU19SRVFVRVNUSU5H KQogCQllbG9nKEVSUk9SLCAiU2htZW1SZXF1ZXN0U3RydWN0IGNhbiBvbmx5IGJlIGNhbGxlZCBm cm9tIGEgc2htZW1fcmVxdWVzdCBjYWxsYmFjayIpOwpAQCAtNjIwLDcgKzYxMyw2IEBAIEluaXRT aG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0KQogCWluZGV4X2VudHJ5LT5zaXpl ID0gcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZTsKIAlpbmRleF9lbnRyeS0+YWxsb2NhdGVkX3NpemUg PSBhbGxvY2F0ZWRfc2l6ZTsKIAlpbmRleF9lbnRyeS0+bG9jYXRpb24gPSBzdHJ1Y3RQdHI7Ci0j aWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIAlpbmRleF9lbnRyeS0+cmVzZXJ2ZWRfc3BhY2Ug PSBhbGxvY2F0ZWRfc2l6ZTsKIAlpbmRleF9lbnRyeS0+bWF4aW11bV9zaXplID0gcmVxdWVzdC0+ b3B0aW9ucy0+bWF4aW11bV9zaXplOwogCWlmIChyZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVtX3Np emUgPiAwKQpAQCAtNjI4LDcgKzYyMCw2IEBAIEluaXRTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1 ZXN0ICpyZXF1ZXN0KQogCQkvKiBBZGp1c3QgYWxsb2NhdGVkIHNpemUgb2YgYSByZXNpemFibGUg c3RydWN0dXJlLiAqLwogCQlpbmRleF9lbnRyeS0+YWxsb2NhdGVkX3NpemUgPSBFc3RpbWF0ZUFs bG9jYXRlZFNpemUoaW5kZXhfZW50cnkpOwogCX0KLSNlbmRpZgogCiAJLyogSW5pdGlhbGl6ZSBk ZXBlbmRpbmcgb24gdGhlIGtpbmQgb2Ygc2htZW0gYXJlYSBpdCBpcyAqLwogCXN3aXRjaCAocmVx dWVzdC0+a2luZCkKQEAgLTY4Myw3ICs2NzQsNiBAQCBBdHRhY2hTaG1lbUluZGV4RW50cnkoU2ht ZW1SZXF1ZXN0ICpyZXF1ZXN0LCBib29sIG1pc3Npbmdfb2spCiAJCQkJCQluYW1lLCBpbmRleF9l bnRyeS0+c2l6ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSkpKTsKIAl9CiAKLSNpZmRlZiBIQVZF X1JFU0laQUJMRV9TSE1FTQogCWlmIChpbmRleF9lbnRyeS0+bWF4aW11bV9zaXplICE9IHJlcXVl c3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSAmJgogCQlyZXF1ZXN0LT5vcHRpb25zLT5tYXhpbXVt X3NpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAl7CkBAIC02OTMsNyArNjgzLDYg QEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNz aW5nX29rKQogCQkJCQkJbmFtZSwgaW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSwKIAkJCQkJCXJl cXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSkpKTsKIAl9Ci0jZW5kaWYKIAogCS8qCiAJICog UmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBwb2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBh Y3Rpb25zIHRvCkBAIC03MTYsNyArNzA1LDYgQEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVt UmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQogCXJldHVybiB0cnVlOwogfQogCi0j aWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIC8qCiAgKiBFc3RpbWF0ZSB0aGUgYWN0dWFsIG1l bW9yeSBhbGxvY2F0ZWQgZm9yIGEgcmVzaXphYmxlIHN0cnVjdHVyZS4KICAqCkBAIC03NjAsNiAr NzQ4LDExIEBAIEVzdGltYXRlQWxsb2NhdGVkU2l6ZShTaG1lbUluZGV4RW50ICplbnRyeSkKIHZv aWQKIFNobWVtUmVzaXplU3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgbmV3X3NpemUpCiB7 CisjaWZuZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6YWJs ZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7Cisj ZWxzZQogCVNobWVtSW5kZXhFbnQgKnJlc3VsdDsKIAlib29sCQlmb3VuZDsKIAlTaXplCQlwYWdl X3NpemUgPSBHZXRPU1BhZ2VTaXplKCk7CkBAIC04MjIsOCArODE1LDggQEAgU2htZW1SZXNpemVT dHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6ZSkKIAlyZXN1bHQtPmFsbG9jYXRl ZF9zaXplID0gRXN0aW1hdGVBbGxvY2F0ZWRTaXplKHJlc3VsdCk7CiAKIAlMV0xvY2tSZWxlYXNl KFNobWVtSW5kZXhMb2NrKTsKKyNlbmRpZgogfQotI2VuZGlmCQkJCQkJCS8qIEhBVkVfUkVTSVpB QkxFX1NITUVNICovCiAKIC8qCiAgKglJbml0U2htZW1BbGxvY2F0b3IoKSAtLS0gc2V0IHVwIGJh c2ljIHBvaW50ZXJzIHRvIHNoYXJlZCBtZW1vcnkuCkBAIC0xMzAwLDcgKzEyOTMsNiBAQCBwZ19n ZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJdmFsdWVzWzFdID0gSW50 NjRHZXREYXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIp OwogCQl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKGVudC0+c2l6ZSk7CiAJCXZhbHVlc1szXSA9 IEludDY0R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc2l6ZSk7Ci0jaWZkZWYgSEFWRV9SRVNJWkFC TEVfU0hNRU0KIAkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bShlbnQtPm1heGltdW1fc2l6ZSk7 CiAJCXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0oZW50LT5yZXNlcnZlZF9zcGFjZSk7CiAKQEAg LTEzMTEsMTIgKzEzMDMsNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05f QVJHUykKIAkJICogdGhlIHNlZ21lbnQuCiAJCSAqLwogCQluYW1lZF9hbGxvY2F0ZWQgKz0gZW50 LT5yZXNlcnZlZF9zcGFjZTsKLSNlbHNlCi0JCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0oMCk7 Ci0JCXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc2l6ZSk7Ci0KLQkJ bmFtZWRfYWxsb2NhdGVkICs9IGVudC0+YWxsb2NhdGVkX3NpemU7Ci0jZW5kaWYKIAogCQl0dXBs ZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJ CQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdf c2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaAppbmRleCAzZDVhY2ViYTU5 Yy4uZjBlZmJmMmFlYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0u aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmgKQEAgLTg5LDEwICs4OSw4IEBA IGV4dGVybiBQR1NobWVtSGVhZGVyICpQR1NoYXJlZE1lbW9yeUNyZWF0ZShTaXplIHNpemUsCiAJ CQkJCQkJCQkJICAgUEdTaG1lbUhlYWRlciAqKnNoaW0pOwogZXh0ZXJuIGJvb2wgUEdTaGFyZWRN ZW1vcnlJc0luVXNlKHVuc2lnbmVkIGxvbmcgaWQxLCB1bnNpZ25lZCBsb25nIGlkMik7CiBleHRl cm4gdm9pZCBQR1NoYXJlZE1lbW9yeURldGFjaCh2b2lkKTsKLSNpZmRlZiBIQVZFX1JFU0laQUJM RV9TSE1FTQogZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlFbnN1cmVGcmVlZCh2b2lkICphZGRy LCBTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlFbnN1cmVBbGxvY2F0ZWQo dm9pZCAqYWRkciwgU2l6ZSBzaXplKTsKLSNlbmRpZgogZXh0ZXJuIHZvaWQgR2V0SHVnZVBhZ2VT aXplKFNpemUgKmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKTsKIGV4dGVybiBTaXplIEdl dE9TUGFnZVNpemUodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ht ZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBmMzU2MDI3ZTUwMC4uODE0 MGEwMjU1YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAgLTU3LDggKzU3LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgU2htZW1TdHJ1Y3RPcHRzCiAJICovCiAJc2l6ZV90CQlhbGlnbm1lbnQ7CiAKLSNpZmRlZiBI QVZFX1JFU0laQUJMRV9TSE1FTQotCiAJLyoKIAkgKiBNYXhpbXVtIHNpemUgdGhpcyBzdHJ1Y3R1 cmUgY2FuIGdyb3cgdXB0byBpbiBmdXR1cmUuIFRoZSBtZW1vcnkgaXMgbm90CiAJICogYWxsb2Nh dGVkIHJpZ2h0IGF3YXkgYnV0IHRoZSBjb3JyZXNwb25kaW5nIGFkZHJlc3Mgc3BhY2UgaXMgcmVz ZXJ2ZWQgc28KQEAgLTY4LDcgKzY2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1TdHJ1Y3RPcHRz CiAJICogc3RydWN0dXJlcy4KIAkgKi8KIAlzc2l6ZV90CQltYXhpbXVtX3NpemU7Ci0jZW5kaWYK IAogCS8qCiAJICogV2hlbiB0aGUgc2htZW0gYXJlYSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hl ZCB0bywgcG9pbnRlciB0byBpdCBpcwpAQCAtMTgxLDkgKzE3OCw3IEBAIHR5cGVkZWYgc3RydWN0 IFNobWVtQ2FsbGJhY2tzCiAKIGV4dGVybiB2b2lkIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoY29u c3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcyk7CiBleHRlcm4gYm9vbCBTaG1lbUFkZHJJc1Zh bGlkKGNvbnN0IHZvaWQgKmFkZHIpOwotI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCiBleHRl cm4gdm9pZCBTaG1lbVJlc2l6ZVN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19zaXpl KTsKLSNlbmRpZgogCiAvKgogICogVGhlc2UgbWFjcm9zIHByb3ZpZGUgc3ludGFjdGljIHN1Z2Fy IGZvciBjYWxsaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMgYi9zcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwppbmRleCA2Njc1NDU4MmIz Mi4uZmIzZGZkNjRiNGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL3Jlc2l6YWJsZV9zaG1lbS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL3Jlc2l6YWJsZV9zaG1lbS5jCkBAIC0xMzUsMjAgKzEzNSwyNCBAQCByZXNpemFibGVfc2ht ZW1fcmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJaW5pdGlhbF9zaXplID0gYWRkX3NpemUo b2Zmc2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSwKIAkJCQkJCQkJCQltdWxf c2l6ZSh0ZXN0X2luaXRpYWxfZW50cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CisKKy8qCisgKiBD cmVhdGUgcmVzaXphYmxlIHN0cnVjdHVyZSBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQg aXQuIE90aGVyd2lzZSBjcmVhdGUKKyAqIGFzIGEgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUuIE90aGVy IHdheSB3b3VsZCBiZSB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUKKyAqIC5tYXhpbXVtX3NpemUg aW4gdGhlIGNhbGwgdG8gU2htZW1SZXF1ZXN0U3RydWN0KCkuCisgKi8KICNpZmRlZiBIQVZFX1JF U0laQUJMRV9TSE1FTQogCVNpemUJCW1heF9zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJl c2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSwKIAkJCQkJCQkJCW11bF9zaXplKHRlc3RfbWF4X2Vu dHJpZXMsIFRFU1RfRU5UUllfU0laRSkpOwogCi0JLyogQSBwcmVwcm9jZXNzb3IgbWFjcm8gdG8g Y29uZGl0aW9uYWxseSBpbmNsdWRlIHRoZSBtYXhpbXVtX3NpemUgZmllbGQuICovCi0jZGVmaW5l IE1BWElNVU1fU0laRV9BUkcJCS5tYXhpbXVtX3NpemUgPSBtYXhfc2l6ZSwKICNlbHNlCi0jZGVm aW5lIE1BWElNVU1fU0laRV9BUkcKKwlTaXplCQltYXhfc2l6ZSA9IDA7CiAjZW5kaWYKIAogCS8q IFJlZ2lzdGVyIG91ciByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KIAlTaG1l bVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAicmVzaXphYmxlX3NobWVtIiwKIAkJCQkJICAgLnNpemUg PSB1c2VfdW5rbm93bl9zaXplID8gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSA6IGluaXRpYWxf c2l6ZSwKLQkJCQkJICAgTUFYSU1VTV9TSVpFX0FSRworCQkJCQkgICAubWF4aW11bV9zaXplID0g bWF4X3NpemUsCiAJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnJlc2l6YWJsZV9zaG1lbSwKIAkJ KTsKIH0KQEAgLTE3MiwxMSArMTc2LDE0IEBAIHJlc2l6YWJsZV9zaG1lbV9zaG1lbV9pbml0KHZv aWQgKmFyZykKIC8qCiAgKiBSZXNpemUgdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIHRvIGFj Y29tbW9kYXRlIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCiAgKiBlbnRyaWVzLgorICoKKyAqIE9u IHRoZSBwbGFmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCByZXNpemFibGUgc2hhcmVkIG1lbW9y eSwKKyAqIFNobWVtUmVzaXplU3RydWN0KCkgd2lsbCByYWlzZSBhbiBlcnJvciwgc28gdGhpcyBm dW5jdGlvbiB3aWxsIGZhaWwgaWYgdGhlCisgKiBjYWxsZXIgdHJpZXMgdG8gcmVzaXplIHRoZSBz dHJ1Y3R1cmUuCiAgKi8KIERhdHVtCiByZXNpemFibGVfc2htZW1fcmVzaXplKFBHX0ZVTkNUSU9O X0FSR1MpCiB7Ci0jaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KIAlpbnQzMgkJbmV3X2VudHJp ZXMgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJU2l6ZQkJbmV3X3NpemU7CiAKQEAgLTE5MSwxMSAr MTk4LDYgQEAgcmVzaXphYmxlX3NobWVtX3Jlc2l6ZShQR19GVU5DVElPTl9BUkdTKQogCXJlc2l6 YWJsZV9zaG1lbS0+bnVtX2VudHJpZXMgPSBuZXdfZW50cmllczsKIAogCVBHX1JFVFVSTl9WT0lE KCk7Ci0jZWxzZQotCWVyZXBvcnQoRVJST1IsCi0JCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCi0JCQkgZXJybXNnKCJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSBpcyBu b3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOwotI2VuZGlmCiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwppbmRleCBmYzJmZDY3ODg3Zi4uMGRk NDY5ODkxZWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3No bWVtLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAt MTA4LDE0ICsxMDgsOCBAQCBQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rfc2htZW1fcmVzaXplX2Zp eGVkKTsKIERhdHVtCiB0ZXN0X3NobWVtX3Jlc2l6ZV9maXhlZChQR19GVU5DVElPTl9BUkdTKQog ewotI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCiAJaW50MzIJCW5ld19zaXplID0gUEdfR0VU QVJHX0lOVDMyKDApOwogCiAJU2htZW1SZXNpemVTdHJ1Y3QoInRlc3Rfc2htZW0gYXJlYSIsIG5l d19zaXplKTsKIAlQR19SRVRVUk5fVk9JRCgpOwotI2Vsc2UKLQllcmVwb3J0KEVSUk9SLAotCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJIGVycm1zZygicmVz aXphYmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikp KTsKLSNlbmRpZgogfQotLSAKMi4zNC4xCgo= --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0003-Add-more-diagnostics-about-shared-memory-s.patch" Content-Disposition: attachment; filename="v20260406-0003-Add-more-diagnostics-about-shared-memory-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937fh2 RnJvbSAxZDFkODVmMWMzNmJiODZiNDY0OGM1YzVjM2FmYjRiNDFiMGY3YzJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDEwOjU4OjI5ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDYgMy82XSBBZGQgbW9yZSBkaWFnbm9zdGljcyBhYm91dCBzaGFyZWQgbWVt b3J5CiBzZWdtZW50cwoKTk9UIEZPUiBGSU5BTCBDT01NSVQKCkxvZyBzaXplLCBSU1MgYW5kIFN3 YXAgb2YgZXZlcnkgc2hhcmVkIG1lbW9yeSBzZWdtZW50IG1hcHBlZCBieSB0aGUgYmFja2VuZC4K VGhpcyB3aWxsIGJlIHVzZWZ1bCB0byB1bmRlcnN0YW5kIHRoZSBmYWlsdXJlIG9uIENGQm90IHdo ZXJlIHdlIGFyZSBzZWVpbmcgYWJvdXQKMTBNQiBleHRyYSBzaGFyZWQgbWVtb3J5IGFsbG9jYXRl ZCB0aGF0IGV4cGVjdGVkLgotLS0KIC4uLi9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFi bGVfc2htZW0uYyB8IDkzICsrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA4NCBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9y ZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKaW5kZXggMjA2M2QwNTA1M2YuLjY2NzU0 NTgyYjMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNp emFibGVfc2htZW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNp emFibGVfc2htZW0uYwpAQCAtMjU0LDggKzI1NCwxMSBAQCByZXNpemFibGVfc2htZW1fcmVhZChQ R19GVU5DVElPTl9BUkdTKQogICogYmFja2VuZC4KICAqCiAgKiBUaGUgVk1BIGNvbnRhaW5pbmcg b3VyIHJlc2l6YWJsZV9zaG1lbSBwb2ludGVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBtYWlu Ci0gKiBtZW1vcnkgc2VnbWVudC4gIFJTUyArIFN3YXAgKGluIGJ5dGVzKSBmb3IgdGhhdCBWTVMg ZnJvbSAgL3Byb2Mvc2VsZi9zbWFwcyBpcworICogbWVtb3J5IHNlZ21lbnQuICBSU1MgKyBTd2Fw IChpbiBieXRlcykgZm9yIHRoYXQgVk1BIGZyb20gL3Byb2Mvc2VsZi9zbWFwcyBpcwogICogcmV0 dXJuZWQuCisgKgorICogQXMgYSBzaWRlIGVmZmVjdCwgYWxsIHNoYXJlZC1tZW1vcnkgVk1BcyBh cmUgbG9nZ2VkIHdpdGggdGhlaXIgbmFtZSwgUlNTLAorICogYW5kIFN3YXAgdmFsdWVzIGZvciBk aWFnbm9zdGljIHB1cnBvc2VzLgogICovCiBEYXR1bQogcmVzaXphYmxlX3NobWVtX3VzYWdlKFBH X0ZVTkNUSU9OX0FSR1MpCkBAIC0yNjgsNiArMjcxLDE0IEBAIHJlc2l6YWJsZV9zaG1lbV91c2Fn ZShQR19GVU5DVElPTl9BUkdTKQogCWJvb2wJCWluX3RhcmdldF92bWEgPSBmYWxzZTsKIAlzaXpl X3QJCXJlc3VsdDsKIAorCS8qIFN0YXRlIGZvciBsb2dnaW5nIHNoYXJlZCBWTUFzICovCisJYm9v bAkJaW5fc2hhcmVkX3ZtYSA9IGZhbHNlOworCWNoYXIJCXZtYV9uYW1lWzI1Nl07CisJY2hhcgkJ dm1hX3JhbmdlWzY0XTsKKwlpbnQ2NAkJdm1hX3NpemVfa2IgPSAtMTsKKwlpbnQ2NAkJdm1hX3Jz c19rYiA9IC0xOworCWludDY0CQl2bWFfc3dhcF9rYiA9IC0xOworCiAJZiA9IGZvcGVuKCIvcHJv Yy9zZWxmL3NtYXBzIiwgInIiKTsKIAlpZiAoZiA9PSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApA QCAtMjc4LDIyICsyODksODYgQEAgcmVzaXphYmxlX3NobWVtX3VzYWdlKFBHX0ZVTkNUSU9OX0FS R1MpCiAJewogCQl1bnNpZ25lZCBsb25nIHN0YXJ0OwogCQl1bnNpZ25lZCBsb25nIGVuZDsKKwkJ Y2hhcgkJcGVybXNbNV07CisJCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworCQljaGFyCQlkZXZbMTJd OworCQl1bnNpZ25lZCBsb25nIGlub2RlOworCQljaGFyCQlwYXRobmFtZVsyNTZdOworCQlpbnQJ CQluZmllbGRzOwogCi0JCWlmIChzc2NhbmYobGluZSwgIiVseC0lbHgiLCAmc3RhcnQsICZlbmQp ID09IDIpCisJCW5maWVsZHMgPSBzc2NhbmYobGluZSwgIiVseC0lbHggJTRzICVseCAlMTFzICVs dSAlMjU1W15cbl0iLAorCQkJCQkJICZzdGFydCwgJmVuZCwgcGVybXMsICZvZmZzZXQsIGRldiwg Jmlub2RlLCBwYXRobmFtZSk7CisKKwkJaWYgKG5maWVsZHMgPj0gNikKIAkJeworCQkJLyoKKwkJ CSAqIFdlJ3ZlIGhpdCBhIG5ldyBWTUEgaGVhZGVyLiAgRmlyc3QsIGxvZyB0aGUgcHJldmlvdXMg c2hhcmVkIFZNQQorCQkJICogaWYgd2Ugd2VyZSB0cmFja2luZyBvbmUuCisJCQkgKi8KKwkJCWlm IChpbl9zaGFyZWRfdm1hKQorCQkJCWVsb2coTE9HLCAic2hhcmVkIFZNQSAlcyAlczogU2l6ZT0l bGQga0IsIFJzcz0lbGQga0IsIFN3YXA9JWxkIGtCIiwKKwkJCQkJIHZtYV9yYW5nZSwgdm1hX25h bWUsCisJCQkJCSAobG9uZykgKHZtYV9zaXplX2tiID49IDAgPyB2bWFfc2l6ZV9rYiA6IDApLAor CQkJCQkgKGxvbmcpICh2bWFfcnNzX2tiID49IDAgPyB2bWFfcnNzX2tiIDogMCksCisJCQkJCSAo bG9uZykgKHZtYV9zd2FwX2tiID49IDAgPyB2bWFfc3dhcF9rYiA6IDApKTsKKworCQkJLyogQ2hl Y2sgaWYgdGhpcyBWTUEgaXMgYSBzaGFyZWQgbWFwcGluZyAoaGFzICdzJyBpbiBwZXJtcykgKi8K KwkJCWluX3NoYXJlZF92bWEgPSAocGVybXNbM10gPT0gJ3MnKTsKKwkJCWlmIChpbl9zaGFyZWRf dm1hKQorCQkJeworCQkJCXNucHJpbnRmKHZtYV9yYW5nZSwgc2l6ZW9mKHZtYV9yYW5nZSksICIl bHgtJWx4Iiwgc3RhcnQsIGVuZCk7CisJCQkJaWYgKG5maWVsZHMgPj0gNykKKwkJCQkJc3RybGNw eSh2bWFfbmFtZSwgcGF0aG5hbWUsIHNpemVvZih2bWFfbmFtZSkpOworCQkJCWVsc2UKKwkJCQkJ c3RybGNweSh2bWFfbmFtZSwgIihhbm9ueW1vdXMpIiwgc2l6ZW9mKHZtYV9uYW1lKSk7CisJCQkJ dm1hX3NpemVfa2IgPSAtMTsKKwkJCQl2bWFfcnNzX2tiID0gLTE7CisJCQkJdm1hX3N3YXBfa2Ig PSAtMTsKKwkJCX0KKworCQkJLyogVHJhY2sgdGhlIHRhcmdldCBWTUEgZm9yIG91ciByZXR1cm4g dmFsdWUgKi8KIAkJCWluX3RhcmdldF92bWEgPSAodGFyZ2V0ID49IHN0YXJ0ICYmIHRhcmdldCA8 IGVuZCk7CisJCQlpZiAoaW5fdGFyZ2V0X3ZtYSkKKwkJCXsKKwkJCQlyc3Nfa2IgPSAtMTsKKwkJ CQlzd2FwX2tiID0gLTE7CisJCQl9CiAJCX0KLQkJZWxzZSBpZiAoaW5fdGFyZ2V0X3ZtYSkKKwkJ ZWxzZQogCQl7Ci0JCQlpZiAocnNzX2tiID09IC0xKQotCQkJCXNzY2FuZihsaW5lLCAiUnNzOiAl bGQga0IiLCAmcnNzX2tiKTsKLQkJCWlmIChzd2FwX2tiID09IC0xKQotCQkJCXNzY2FuZihsaW5l LCAiU3dhcDogJWxkIGtCIiwgJnN3YXBfa2IpOwotCQkJaWYgKHJzc19rYiA+PSAwICYmIHN3YXBf a2IgPj0gMCkKLQkJCQlicmVhazsKKwkJCS8qIFBhcnNlIGRldGFpbCBsaW5lcyBmb3IgdGhlIGN1 cnJlbnQgVk1BICovCisJCQlpbnQ2NAkJdmFsOworCisJCQlpZiAoc3NjYW5mKGxpbmUsICJTaXpl OiAlbGQga0IiLCAmdmFsKSA9PSAxKQorCQkJeworCQkJCWlmIChpbl9zaGFyZWRfdm1hICYmIHZt YV9zaXplX2tiID09IC0xKQorCQkJCQl2bWFfc2l6ZV9rYiA9IHZhbDsKKwkJCX0KKwkJCWVsc2Ug aWYgKHNzY2FuZihsaW5lLCAiUnNzOiAlbGQga0IiLCAmdmFsKSA9PSAxKQorCQkJeworCQkJCWlm IChpbl90YXJnZXRfdm1hICYmIHJzc19rYiA9PSAtMSkKKwkJCQkJcnNzX2tiID0gdmFsOworCQkJ CWlmIChpbl9zaGFyZWRfdm1hICYmIHZtYV9yc3Nfa2IgPT0gLTEpCisJCQkJCXZtYV9yc3Nfa2Ig PSB2YWw7CisJCQl9CisJCQllbHNlIGlmIChzc2NhbmYobGluZSwgIlN3YXA6ICVsZCBrQiIsICZ2 YWwpID09IDEpCisJCQl7CisJCQkJaWYgKGluX3RhcmdldF92bWEgJiYgc3dhcF9rYiA9PSAtMSkK KwkJCQkJc3dhcF9rYiA9IHZhbDsKKwkJCQlpZiAoaW5fc2hhcmVkX3ZtYSAmJiB2bWFfc3dhcF9r YiA9PSAtMSkKKwkJCQkJdm1hX3N3YXBfa2IgPSB2YWw7CisJCQl9CiAJCX0KIAl9CiAKKwkvKiBM b2cgdGhlIGxhc3Qgc2hhcmVkIFZNQSBpZiBhbnkgKi8KKwlpZiAoaW5fc2hhcmVkX3ZtYSkKKwkJ ZWxvZyhMT0csICJzaGFyZWQgVk1BICVzICVzOiBTaXplPSVsZCBrQiwgUnNzPSVsZCBrQiwgU3dh cD0lbGQga0IiLAorCQkJIHZtYV9yYW5nZSwgdm1hX25hbWUsCisJCQkgKGxvbmcpICh2bWFfc2l6 ZV9rYiA+PSAwID8gdm1hX3NpemVfa2IgOiAwKSwKKwkJCSAobG9uZykgKHZtYV9yc3Nfa2IgPj0g MCA/IHZtYV9yc3Nfa2IgOiAwKSwKKwkJCSAobG9uZykgKHZtYV9zd2FwX2tiID49IDAgPyB2bWFf c3dhcF9rYiA6IDApKTsKKwogCWZjbG9zZShmKTsKIAogCXJlc3VsdCA9IHJzc19rYiA+PSAwID8g bXVsX3NpemUocnNzX2tiLCAxMDI0KSA6IDA7Ci0tIAoyLjM0LjEKCg== --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0002-Use-smaps-instead-of-status-in-resizable_s.patch" Content-Disposition: attachment; filename="v20260406-0002-Use-smaps-instead-of-status-in-resizable_s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937ff1 RnJvbSBhOTgyZmQ5NDkxYzkxNGM2N2Q2NzRhMjFlNGJhMGFjNzQ2ODA3ODExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDEwOjQzOjE4ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDYgMi82XSBVc2Ugc21hcHMgaW5zdGVhZCBvZiBzdGF0dXMgaW4KIHJlc2l6 YWJsZV9zaG1lbV91c2VkKCkKCi9wcm9jL3NlbGYvc3RhdHVzIGdpdmVzIG1lbW9yeSB1c2FnZXMg YWNyb3NzIGFsbCB0aGUgVk1BcyBvZiBhIHByb2Nlc3MuCi9wcm9jL3NlbGYvc21hcHMgZ2l2ZXMg bWVtb3J5IHVzYWdlcyBmb3IgZWFjaCBWTUEgc2VwYXJhdGVseS4gSGVuY2UgdXNlIHNtYXBzIHRv CmFjY3VyYXRlbHkgZXN0aW1hdGUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgaW4gdGhlIG1haW4gc2hh cmVkIG1lbW9yeSBzZWdtZW50LgotLS0KIC4uLi9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3No bWVtLS0xLjAuc3FsICB8ICA2ICstCiAuLi4vbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXph YmxlX3NobWVtLmMgfCA4NiArKysrKysrKy0tLS0tLS0tLS0tCiAuLi4vcmVzaXphYmxlX3NobWVt L3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbCAgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA0MSBp bnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwgYi9zcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwKaW5kZXggYzFi Y2I2MTE3YjYuLmI0YjA3MzM2ZGMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsCkBAIC0yNSw4ICsyNSwx MCBAQCBSRVRVUk5TIGJvb2xlYW4KIEFTICdNT0RVTEVfUEFUSE5BTUUnCiBMQU5HVUFHRSBDIFNU UklDVDsKIAotLS0gRnVuY3Rpb24gdG8gcmVwb3J0IG1lbW9yeSB1c2FnZSBzdGF0aXN0aWNzIG9m IHRoZSBjYWxsaW5nIGJhY2tlbmQKLUNSRUFURSBGVU5DVElPTiByZXNpemFibGVfc2htZW1fdXNh Z2UoT1VUIHJzc19hbm9uIGJpZ2ludCwgT1VUIHJzc19maWxlIGJpZ2ludCwgT1VUIHJzc19zaG1l bSBiaWdpbnQsIE9VVCB2bV9zaXplIGJpZ2ludCkKKy0tIEZ1bmN0aW9uIHRvIHJlcG9ydCBtZW1v cnkgbWFwcGVkIGFnYWluc3QgdGhlIG1haW4gc2hhcmVkIG1lbW9yeSBzZWdtZW50IGluCistLSB0 aGUgYmFja2VuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIHJ1bnMuCitDUkVBVEUgRlVOQ1RJT04gcmVz aXphYmxlX3NobWVtX3VzYWdlKCkKK1JFVFVSTlMgYmlnaW50CiBBUyAnTU9EVUxFX1BBVEhOQU1F JwogTEFOR1VBR0UgQyBTVFJJQ1Q7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVz aXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKaW5kZXggNWFlMmQyZTJkMWQuLjIwNjNkMDUwNTNm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVf c2htZW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVf c2htZW0uYwpAQCAtMTAsMTkgKzEwLDE3IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKwogI2luY2x1ZGUgImNv bW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1ZGUgImZtZ3IuaCIKLSNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKLSNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKLSNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgogCiBQR19NT0RVTEVfTUFHSUM7CiAKQEAgLTI1Miw2OCAr MjUwLDU2IEBAIHJlc2l6YWJsZV9zaG1lbV9yZWFkKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIC8q Ci0gKiBSZXBvcnQgbXVsdGlwbGUgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3Mgb2YgdGhlIGNhbGxp bmcgYmFja2VuZCBwcm9jZXNzCi0gKiBhcyByZXBvcnRlZCBieSB0aGUga2VybmVsLgotICogUmV0 dXJucyBSc3NBbm9uLCBSc3NGaWxlLCBSc3NTaG1lbSwgVm1TaXplIGZyb20gL3Byb2Mvc2VsZi9z dGF0dXMgYXMgYSByZWNvcmQuCisgKiBSZXR1cm4gdGhlIG1lbW9yeSBtYXBwZWQgYWdhaW5zdCB0 aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgaW4gdGhpcworICogYmFja2VuZC4KICAqCi0g KiBUaGUgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZXNlIHZhbHVlcyB3aWxsIGJlIGF2YWlsYWJs ZSBpbgotICogL3Byb2Mvc2VsZi9zdGF0dXMsIGFueSBzeXN0ZW0gd2hpY2ggYWxzbyBzdXBwb3J0 IG1hZHZpc2Ugd2l0aCBNQURWX1JFTU9WRSBhbmQKLSAqIE1BRFZfUE9QVUxBVEVfV1JJVEUuCisg KiBUaGUgVk1BIGNvbnRhaW5pbmcgb3VyIHJlc2l6YWJsZV9zaG1lbSBwb2ludGVyIGlzIHVzZWQg dG8gZGV0ZXJtaW5lIHRoZSBtYWluCisgKiBtZW1vcnkgc2VnbWVudC4gIFJTUyArIFN3YXAgKGlu IGJ5dGVzKSBmb3IgdGhhdCBWTVMgZnJvbSAgL3Byb2Mvc2VsZi9zbWFwcyBpcworICogcmV0dXJu ZWQuCiAgKi8KIERhdHVtCiByZXNpemFibGVfc2htZW1fdXNhZ2UoUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlGSUxFCSAgICpmOwogCWNoYXIJCWxpbmVbMjU2XTsKLQlpbnQ2NAkJcnNzX2Fub25fa2Ig PSAtMTsKLQlpbnQ2NAkJcnNzX2ZpbGVfa2IgPSAtMTsKLQlpbnQ2NAkJcnNzX3NobWVtX2tiID0g LTE7Ci0JaW50NjQJCXZtX3NpemVfa2IgPSAtMTsKLQlpbnQJCQlmb3VuZCA9IDA7Ci0JVHVwbGVE ZXNjCXR1cGRlc2M7Ci0JRGF0dW0JCXZhbHVlc1s0XTsKLQlib29sCQludWxsc1s0XTsKLQlIZWFw VHVwbGUJdHVwbGU7Ci0KLQkvKiBPcGVuIC9wcm9jL3NlbGYvc3RhdHVzIHRvIHJlYWQgbWVtb3J5 IGluZm9ybWF0aW9uICovCi0JZiA9IGZvcGVuKCIvcHJvYy9zZWxmL3N0YXR1cyIsICJyIik7CisJ aW50NjQJCXJzc19rYiA9IC0xOworCWludDY0CQlzd2FwX2tiID0gLTE7CisJdWludHB0cl90CXRh cmdldCA9ICh1aW50cHRyX3QpIHJlc2l6YWJsZV9zaG1lbTsKKwlib29sCQlpbl90YXJnZXRfdm1h ID0gZmFsc2U7CisJc2l6ZV90CQlyZXN1bHQ7CisKKwlmID0gZm9wZW4oIi9wcm9jL3NlbGYvc21h cHMiLCAiciIpOwogCWlmIChmID09IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygiY291bGQgbm90IG9wZW4gL3Byb2Mv c2VsZi9zdGF0dXM6ICVtIikpKTsKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb3BlbiAvcHJvYy9z ZWxmL3NtYXBzOiAlbSIpKSk7CiAKLQkvKiBMb29rIGZvciB0aGUgbWVtb3J5IHVzYWdlIGxpbmVz ICovCi0Jd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZikgIT0gTlVMTCAmJiBmb3Vu ZCA8IDQpCisJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZikgIT0gTlVMTCkKIAl7 Ci0JCWlmIChyc3NfYW5vbl9rYiA9PSAtMSAmJiBzc2NhbmYobGluZSwgIlJzc0Fub246ICVsZCBr QiIsICZyc3NfYW5vbl9rYikgPT0gMSkKLQkJCWZvdW5kKys7Ci0JCWVsc2UgaWYgKHJzc19maWxl X2tiID09IC0xICYmIHNzY2FuZihsaW5lLCAiUnNzRmlsZTogJWxkIGtCIiwgJnJzc19maWxlX2ti KSA9PSAxKQotCQkJZm91bmQrKzsKLQkJZWxzZSBpZiAocnNzX3NobWVtX2tiID09IC0xICYmIHNz Y2FuZihsaW5lLCAiUnNzU2htZW06ICVsZCBrQiIsICZyc3Nfc2htZW1fa2IpID09IDEpCi0JCQlm b3VuZCsrOwotCQllbHNlIGlmICh2bV9zaXplX2tiID09IC0xICYmIHNzY2FuZihsaW5lLCAiVm1T aXplOiAlbGQga0IiLCAmdm1fc2l6ZV9rYikgPT0gMSkKLQkJCWZvdW5kKys7CisJCXVuc2lnbmVk IGxvbmcgc3RhcnQ7CisJCXVuc2lnbmVkIGxvbmcgZW5kOworCisJCWlmIChzc2NhbmYobGluZSwg IiVseC0lbHgiLCAmc3RhcnQsICZlbmQpID09IDIpCisJCXsKKwkJCWluX3RhcmdldF92bWEgPSAo dGFyZ2V0ID49IHN0YXJ0ICYmIHRhcmdldCA8IGVuZCk7CisJCX0KKwkJZWxzZSBpZiAoaW5fdGFy Z2V0X3ZtYSkKKwkJeworCQkJaWYgKHJzc19rYiA9PSAtMSkKKwkJCQlzc2NhbmYobGluZSwgIlJz czogJWxkIGtCIiwgJnJzc19rYik7CisJCQlpZiAoc3dhcF9rYiA9PSAtMSkKKwkJCQlzc2NhbmYo bGluZSwgIlN3YXA6ICVsZCBrQiIsICZzd2FwX2tiKTsKKwkJCWlmIChyc3Nfa2IgPj0gMCAmJiBz d2FwX2tiID49IDApCisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAlmY2xvc2UoZik7CiAKLQkvKiBC dWlsZCB0dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KLQlpZiAoZ2V0X2Nh bGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9T SVRFKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJmdW5jdGlvbiByZXR1cm5pbmcgcmVjb3JkIGNhbGxl ZCBpbiBjb250ZXh0ICIKLQkJCQkJCSJ0aGF0IGNhbm5vdCBhY2NlcHQgYSByZWNvcmQiKSkpOwot Ci0JLyogQnVpbGQgdGhlIHJlc3VsdCB0dXBsZSAqLwotCXZhbHVlc1swXSA9IEludDY0R2V0RGF0 dW0ocnNzX2Fub25fa2IgPj0gMCA/IHJzc19hbm9uX2tiICogMTAyNCA6IDApOwotCXZhbHVlc1sx XSA9IEludDY0R2V0RGF0dW0ocnNzX2ZpbGVfa2IgPj0gMCA/IHJzc19maWxlX2tiICogMTAyNCA6 IDApOwotCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0ocnNzX3NobWVtX2tiID49IDAgPyByc3Nf c2htZW1fa2IgKiAxMDI0IDogMCk7Ci0JdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh2bV9zaXpl X2tiID49IDAgPyB2bV9zaXplX2tiICogMTAyNCA6IDApOwotCi0JbnVsbHNbMF0gPSBudWxsc1sx XSA9IG51bGxzWzJdID0gbnVsbHNbM10gPSBmYWxzZTsKKwlyZXN1bHQgPSByc3Nfa2IgPj0gMCA/ IG11bF9zaXplKHJzc19rYiwgMTAyNCkgOiAwOworCXJlc3VsdCA9IGFkZF9zaXplKHJlc3VsdCwg c3dhcF9rYiA+PSAwID8gbXVsX3NpemUoc3dhcF9rYiwgMTAyNCkgOiAwKTsKIAotCXR1cGxlID0g aGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwotCVBHX1JFVFVSTl9EQVRV TShIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSkpOworCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vdC8w MDFfcmVzaXphYmxlX3NobWVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0v dC8wMDFfcmVzaXphYmxlX3NobWVtLnBsCmluZGV4IDZkNDViMWVjY2RjLi5hMTcyY2QwZmQxOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vdC8wMDFfcmVzaXph YmxlX3NobWVtLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAx X3Jlc2l6YWJsZV9zaG1lbS5wbApAQCAtMTksNyArMTksNyBAQCBzdWIgY2hlY2tfc2htZW1fdXNh Z2UKIHsKIAlteSAoJHNlc3Npb24sICRsYWJlbCwgJG5vZGUpID0gQF87CiAKLQlteSAkcnNzX3No bWVtID0gJHNlc3Npb24tPnF1ZXJ5X3NhZmUoJ1NFTEVDVCByc3Nfc2htZW0gRlJPTSByZXNpemFi bGVfc2htZW1fdXNhZ2UoKTsnLAorCW15ICRyc3Nfc2htZW0gPSAkc2Vzc2lvbi0+cXVlcnlfc2Fm ZSgnU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpOycsCiAJCQkJCQkJCQkJIHZlcmJvc2Ug PT4gMCk7CiAJbXkgJHRvdGFsX2FsbG9jID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CQkJCQkJCQkJICAgIlNFTEVDVCBzdW0oYWxsb2NhdGVkX3NpemUpIEZST00gcGdfc2htZW1fYWxs b2NhdGlvbnM7Iik7Ci0tIAoyLjM0LjEKCg== --00000000000002c74e064ecafef5 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260406-0006-Add-support-to-protect-unused-resizable_sh.patch" Content-Disposition: attachment; filename="v20260406-0006-Add-support-to-protect-unused-resizable_sh.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn937fn5 RnJvbSBlZjMyMWIzMjdlN2ZmMGE5YWJjMWViMzRmMTE5MTBkN2I3MWQzMmRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCA2IEFwciAyMDI2IDE5OjAwOjE0ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDYgNi82XSBBZGQgc3VwcG9ydCB0byBwcm90ZWN0IHVudXNlZCByZXNpemFi bGVfc2htZW0KIHN0cnVjdHVyZQoKQWRkIEFQSXMgdG8gbWFrZSB0aGUgcG9ydGlvbiBvZiByZXNp emFibGVfc2htZW0gc3RydWN0dXJlIGJleW9uZCBpdHMgY3VycmVudApzaXplIGluYWNjZXNzaWJs ZS4KCkF1dGhvcjogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ ClN1Z2dlc3RlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1cm0rcG9zdGdyZXNA Z21haWwuY29tPgotLS0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAg ICAgICB8IDEzICsrKy0KIHNyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jICAgICAgICAgICAg ICAgICB8IDU1ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVt LmMgICAgICAgICAgICAgICAgfCAgOCArKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMgICAgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvcGdfc2htZW0uaCAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3N0b3Jh Z2Uvc2htZW0uaCAgICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi9tb2R1bGVzL3Jlc2l6YWJs ZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYyB8IDUxICsrKysrKysrKysrKysrKysKIDcgZmlsZXMg Y2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAppbmRleCBh NmM3YjhiMWIyMi4uNjJiMzMzNjZmMzAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94ZnVuYy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNzgxLDkgKzM3ODEsMTYgQEAg bXlfc2htZW1faW5pdCh2b2lkICphcmcpCiAgICAgc2hhcmVkIHN0cnVjdHVyZS4gQWxzbyBhY2Nl c3NpbmcgdGhlIG1lbW9yeSBiZXlvbmQgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKICAgICBzdHJ1 Y3R1cmUgd2lsbCBub3QgY2F1c2UgYW55IHNlZ21lbnRhdGlvbiBmYXVsdCBvciBhIGJ1cyBlcnJv ci4gTWVtb3J5IHdpbGwKICAgICBiZSBhbGxvY2F0ZWQgZHVyaW5nIHN1Y2ggYSB3cml0ZSBhY2Nl c3MuIDBzIHdpbGwgYmUgcmV0dXJuZWQgb24gc3VjaCBhIHJlYWQKLSAgICBhY2Nlc3MgaWYgbWVt b3J5IGlzIG5vdCBhbGxvY2F0ZWQgeWV0LiBUaGUgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24g bWF5Ci0gICAgdXNlIG1wcm90ZWN0KCkgd2l0aCBQUk9UX05PTkUgaW4gZXZlcnkgYmFja2VuZCB0 aGF0IG1heSBhY2Nlc3MgdGhpcyBtZW1vcnkKLSAgICB0byBlbnN1cmUgdGhhdCBzdWNoIGFuIGFj Y2VzcyByZXN1bHRzIGluIGEgZmF1bHQuCisgICAgYWNjZXNzIGlmIG1lbW9yeSBpcyBub3QgYWxs b2NhdGVkIHlldC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICA8ZnVuY3Rpb24+U2ht ZW1Qcm90ZWN0U3RydWN0PC9mdW5jdGlvbj4gY2FuIGJlIGNhbGxlZCB3aGVuIHJlc2l6aW5nIHRo ZQorICAgIHN0cnVjdHVyZSB0byBtYWtlIHRoZSB1bnVzZWQgcG9ydGlvbiBvZiB0aGUgc3RydWN0 dXJlIGluYWNjZXNzaWJsZSBhbmQgdGhlCisgICAgdXNlZCBwb3J0aW9uIGFjY2Vzc2libGUuIFRo ZXNlIHByb3RlY3Rpb25zIHdvcmsgb25seSBhdCB0aGUgbWVtb3J5IHBhZ2UKKyAgICBsZXZlbCwg c28gc29tZSB1bnVzZWQgcG9ydGlvbiBtYXkgc3RpbGwgcmVtYWluIGFjY2Vzc2libGUuIFBsZWFz ZSBub3RlIHRoYXQKKyAgICB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIHByb3RlY3Rpb25zIG9u bHkgaW4gdGhlIGJhY2tlbmQgd2hlcmUgaXQgaXMgcnVuLgorICAgIEl0IG5lZWRzIHRvIGJlIGNh bGxlZCBmcm9tIGV2ZXJ5IGJhY2tlbmQgdGhhdCBtYXkgYWNjZXNzIHRoZSBzdHJ1Y3R1cmUuCiAg ICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L3N5 c3Zfc2htZW0uYyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCmluZGV4IGJiMmE4MTQx N2M2Li4xNGI2ZmE3ZjdlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVt LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKQEAgLTEwNjUsOCArMTA2NSw2 MyBAQCBQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRlZCh2b2lkICphZGRyLCBTaXplIHNpemUp CiAJQXNzZXJ0KGFkZHIgPT0gKHZvaWQgKikgVFlQRUFMSUdOKEdldE9TUGFnZVNpemUoKSwgYWRk cikpOwogCUFzc2VydChzaXplID09IFRZUEVBTElHTihHZXRPU1BhZ2VTaXplKCksIHNpemUpKTsK IAorCS8qCisJICogRW5zdXJlIHRoYXQgTUFEVl9QT1BVTEFURV9XUklURSBjYW4gaW5pdGlhbGl6 ZSB0aGUgbmV3bHkgYWxsb2NhdGVkCisJICogcGFnZXMuCisJICovCisJaWYgKG1wcm90ZWN0KGFk ZHIsIHNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpICE9IDApCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycm1zZygiY291bGQgbm90IHByb3RlY3Qgc2hhcmVkIG1lbW9yeTogJW0iKSkpOwor CiAJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9QT1BVTEFURV9XUklURSkgPT0gLTEpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiY291bGQgbm90IGFsbG9jYXRlIHNoYXJlZCBt ZW1vcnk6ICVtIikpKTsKICNlbmRpZgogfQorCisvKgorICogU2V0IG1lbW9yeSBwcm90ZWN0aW9u IG9uIHRoZSBnaXZlbiByZWdpb24gb2Ygc2hhcmVkIG1lbW9yeS4KKyAqCisgKiBNYWtlcyBbcndf c3RhcnQsIHJ3X2VuZCkgcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBhbmQgW3J3X2VuZCwgcHJvdF9l bmQpCisgKiBpbmFjY2Vzc2libGUuCisgKgorICogQWxsIGFkZHJlc3NlcyBhcmUgZXhwZWN0ZWQg dG8gYmUgcGFnZSBhbGlnbmVkLgorICoKKyAqIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0 aGF0IHN1cHBvcnQgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkuCisgKi8KK3ZvaWQKK1BHU2hhcmVk TWVtb3J5UHJvdGVjdCh2b2lkICpyd19zdGFydCwgdm9pZCAqcndfZW5kLCB2b2lkICpwcm90X2Vu ZCkKK3sKKyNpZm5kZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwllcmVwb3J0KEVSUk9SLAorCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVz aXphYmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikp KTsKKyNlbHNlCisKKwlpZiAoIUFub255bW91c1NobWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJv bmx5IGFub255bW91cyBzaGFyZWQgbWVtb3J5IGNhbiBiZSBwcm90ZWN0ZWQgYXQgcnVudGltZSIp KSk7CisKKwlBc3NlcnQocndfc3RhcnQgPT0gKHZvaWQgKikgVFlQRUFMSUdOKEdldE9TUGFnZVNp emUoKSwgcndfc3RhcnQpKTsKKwlBc3NlcnQocndfZW5kID09ICh2b2lkICopIFRZUEVBTElHTihH ZXRPU1BhZ2VTaXplKCksIHJ3X2VuZCkpOworCUFzc2VydChwcm90X2VuZCA9PSAodm9pZCAqKSBU WVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBwcm90X2VuZCkpOworCUFzc2VydChyd19lbmQgPj0g cndfc3RhcnQpOworCisJaWYgKHJ3X2VuZCA+IHJ3X3N0YXJ0KQorCXsKKwkJaWYgKG1wcm90ZWN0 KHJ3X3N0YXJ0LCAoY2hhciAqKSByd19lbmQgLSAoY2hhciAqKSByd19zdGFydCwKKwkJCQkJIFBS T1RfUkVBRCB8IFBST1RfV1JJVEUpICE9IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy bXNnKCJjb3VsZCBub3QgcHJvdGVjdCBzaGFyZWQgbWVtb3J5OiAlbSIpKSk7CisJfQorCisJaWYg KHByb3RfZW5kID4gcndfZW5kKQorCXsKKwkJaWYgKG1wcm90ZWN0KHJ3X2VuZCwgKGNoYXIgKikg cHJvdF9lbmQgLSAoY2hhciAqKSByd19lbmQsCisJCQkJCSBQUk9UX05PTkUpICE9IDApCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgcHJvdGVjdCBzaGFyZWQgbWVt b3J5OiAlbSIpKSk7CisJfQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0 L3dpbjMyX3NobWVtLmMgYi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVtLmMKaW5kZXggYzFm MzA2NjVlNjYuLmI1Mzk2ZTRhNWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3dpbjMy X3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zaG1lbS5jCkBAIC02OTMsMyAr NjkzLDExIEBAIFBHU2hhcmVkTWVtb3J5RW5zdXJlQWxsb2NhdGVkKHZvaWQgKmFkZHIsIFNpemUg c2l6ZSkKIAkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCSBl cnJtc2coInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBw bGF0Zm9ybSIpKSk7CiB9CisKK3ZvaWQKK1BHU2hhcmVkTWVtb3J5UHJvdGVjdCh2b2lkICpyd19z dGFydCwgdm9pZCAqcndfZW5kLCB2b2lkICpwcm90X2VuZCkKK3sKKwllcmVwb3J0KEVSUk9SLAor CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygi cmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt IikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDExNWM1NDNkMzZhLi5hM2VkMDgy ZTRkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC04ODAsNiArODgwLDY2IEBAIFNobWVt UmVzaXplU3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgbmV3X3NpemUpCiAjZW5kaWYKIH0K IAorLyoKKyAqIFNobWVtUHJvdGVjdFN0cnVjdCgpIC0tLSBwcm90ZWN0IHRoZSB1bnVzZWQgcG9y dGlvbiBvZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuCisgKgorICogTWFrZXMgdGhlIHJlZ2lvbiBi ZXlvbmQgdGhlIGN1cnJlbnQgc2l6ZSB1cCB0byBtYXhpbXVtX3NpemUgaW5hY2Nlc3NpYmxlLCBh bmQKKyAqIGVuc3VyZXMgdGhlIHJlZ2lvbiB1cCB0byB0aGUgY3VycmVudCBzaXplIGlzIHJlYWRh YmxlIGFuZCB3cml0YWJsZS4gRGVwZW5kaW5nCisgKiB1cG9uIHRoZSBwbGF0Zm9ybSwgdGhlIHBy b3RlY3Rpb24gaG9ub3VycyB0aGUgcGFnZSBib3VuZGFyaWVzLiBTbyBpdCBtYXkgYmUKKyAqIG1v cmUgcGVybWlzc2libGUgdGhhbiBzdHJpY3RseSBuZWVkZWQuCisgKgorICogT25seSB3b3JrcyBm b3IgcmVzaXphYmxlIHN0cnVjdHVyZXMuICBTaG91bGQgYmUgY2FsbGVkIGluIGV2ZXJ5IGJhY2tl bmQgdGhhdAorICogbWF5IGFjY2VzcyB0aGUgcmVzaXphYmxlIHN0cnVjdHVyZSB3aGlsZSByZXNp emluZyBpdC4KKyAqLwordm9pZAorU2htZW1Qcm90ZWN0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUp Cit7CisjaWZuZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJZXJlcG9ydChFUlJPUiwKKwkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6 YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7 CisjZWxzZQorCVNobWVtSW5kZXhFbnQgKnJlc3VsdDsKKwlib29sCQlmb3VuZDsKKwlTaXplCQlw YWdlX3NpemUgPSBHZXRPU1BhZ2VTaXplKCk7CisJY2hhcgkgICAqcndfc3RhcnQ7CisJY2hhcgkg ICAqcndfZW5kOworCWNoYXIJICAgKnByb3RfZW5kOworCisJTFdMb2NrQWNxdWlyZShTaG1lbUlu ZGV4TG9jaywgTFdfU0hBUkVEKTsKKwlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKSBoYXNoX3Nl YXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJzaG1lbSBzdHJ1Y3QgXCIlc1wiIGlzIG5v dCBpbml0aWFsaXplZCIsIG5hbWUpKSk7CisKKwlpZiAocmVzdWx0LT5taW5pbXVtX3NpemUgPT0g cmVzdWx0LT5tYXhpbXVtX3NpemUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygic2hh cmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wiIGlzIG5vdCByZXNpemFibGUiLCBuYW1lKSkpOworCisJ LyogUmVzaXphYmxlIHN0cnVjdHVyZXMgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggbW1hcC1iYXNl ZCBzaGFyZWQgbWVtb3J5LiAqLworCUFzc2VydChzaGFyZWRfbWVtb3J5X3R5cGUgPT0gU0hNRU1f VFlQRV9NTUFQKTsKKworCS8qIE1ha2UgYXQgbGVhc3QgW2xvY2F0aW9uLCBsb2NhdGlvbitzaXpl KSByZWFkYWJsZSBhbmQgd3JpdGFibGUgKi8KKwlyd19zdGFydCA9IChjaGFyICopIFRZUEVBTElH Tl9ET1dOKHBhZ2Vfc2l6ZSwgcmVzdWx0LT5sb2NhdGlvbik7CisJcndfZW5kID0gKGNoYXIgKikg VFlQRUFMSUdOKHBhZ2Vfc2l6ZSwKKwkJCQkJCQkJKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiAr IHJlc3VsdC0+c2l6ZSk7CisKKwkvKgorCSAqIE1ha2UgcmVtYWluaW5nIHBvcnRpb24gaW5hY2Nl c3NpYmxlIHdoaWxlIG1ha2luZyBzdXJlIHRoYXQgdGhlIHBvcnRpb24KKwkgKiBhZnRlciBtYXhp bXVtX3NpemUgaXMgbm90IGFmZmVjdGVkIHNpbmNlIGl0IG1heSBiZSB1c2VkIGJ5IG90aGVyCisJ ICogc3RydWN0dXJlcy4KKwkgKi8KKwlwcm90X2VuZCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dO KHBhZ2Vfc2l6ZSwKKwkJCQkJCQkJCSAgIChjaGFyICopIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1 bHQtPm1heGltdW1fc2l6ZSk7CisKKwlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKKwor CVBHU2hhcmVkTWVtb3J5UHJvdGVjdChyd19zdGFydCwgcndfZW5kLCBwcm90X2VuZCk7CisjZW5k aWYKK30KKwogLyoKICAqCUluaXRTaG1lbUFsbG9jYXRvcigpIC0tLSBzZXQgdXAgYmFzaWMgcG9p bnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3BnX3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmgKaW5kZXggZjBl ZmJmMmFlYzEuLjUxNjViODE1Y2MxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Bn X3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCkBAIC05MSw2ICs5 MSw3IEBAIGV4dGVybiBib29sIFBHU2hhcmVkTWVtb3J5SXNJblVzZSh1bnNpZ25lZCBsb25nIGlk MSwgdW5zaWduZWQgbG9uZyBpZDIpOwogZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlEZXRhY2go dm9pZCk7CiBleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUZyZWVkKHZvaWQgKmFkZHIs IFNpemUgc2l6ZSk7CiBleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRlZCh2 b2lkICphZGRyLCBTaXplIHNpemUpOworZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlQcm90ZWN0 KHZvaWQgKnJ3X3N0YXJ0LCB2b2lkICpyd19lbmQsIHZvaWQgKnByb3RfZW5kKTsKIGV4dGVybiB2 b2lkIEdldEh1Z2VQYWdlU2l6ZShTaXplICpodWdlcGFnZXNpemUsIGludCAqbW1hcF9mbGFncyk7 CiBleHRlcm4gU2l6ZSBHZXRPU1BhZ2VTaXplKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKaW5kZXgg MGU2ZDVhNjNmMjguLmY4ZGRiMGRkN2MwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCkBAIC0xODUsNiArMTg1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1DYWxsYmFja3MKIGV4dGVybiB2b2lkIFJlZ2lzdGVy U2htZW1DYWxsYmFja3MoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcyk7CiBleHRlcm4g Ym9vbCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIpOwogZXh0ZXJuIHZvaWQgU2ht ZW1SZXNpemVTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6ZSk7CitleHRlcm4g dm9pZCBTaG1lbVByb3RlY3RTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSk7CiAKIC8qCiAgKiBUaGVz ZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3VnYXIgZm9yIGNhbGxpbmcgdGhlIHVuZGVybHlp bmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1l bS9yZXNpemFibGVfc2htZW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jl c2l6YWJsZV9zaG1lbS5jCmluZGV4IGQwMzVkNzY3YTYyLi5jMDJiYTU0ODk2YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKQEAg LTU2LDEwICs1NiwxMiBAQCBzdGF0aWMgYm9vbCB1c2VfdW5rbm93bl9zaXplID0gZmFsc2U7CiAK IHN0YXRpYyB2b2lkIHJlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CiBzdGF0aWMg dm9pZCByZXNpemFibGVfc2htZW1fc2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQg cmVzaXphYmxlX3NobWVtX3NobWVtX2F0dGFjaCh2b2lkICphcmcpOwogCiBzdGF0aWMgU2htZW1D YWxsYmFja3Mgc2htZW1fY2FsbGJhY2tzID0gewogCS5yZXF1ZXN0X2ZuID0gcmVzaXphYmxlX3No bWVtX3JlcXVlc3QsCiAJLmluaXRfZm4gPSByZXNpemFibGVfc2htZW1fc2htZW1faW5pdCwKKwku YXR0YWNoX2ZuID0gcmVzaXphYmxlX3NobWVtX3NobWVtX2F0dGFjaCwKIH07CiAKIC8qIFNRTC1j YWxsYWJsZSBmdW5jdGlvbnMgKi8KQEAgLTE3MiwxMCArMTc0LDMyIEBAIHJlc2l6YWJsZV9zaG1l bV9zaG1lbV9pbml0KHZvaWQgKmFyZykKIAkgKi8KIAlBc3NlcnQocmVzaXphYmxlX3NobWVtICE9 IE5VTEwpOwogCisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkvKiBQcm90ZWN0IHRoZSBz aGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBpbiB0aGlzIGJhY2tlbmQuICovCisJU2htZW1Qcm90ZWN0 U3RydWN0KCJyZXNpemFibGVfc2htZW0iKTsKKyNlbmRpZgorCiAJcmVzaXphYmxlX3NobWVtLT5u dW1fZW50cmllcyA9IHRlc3RfaW5pdGlhbF9lbnRyaWVzOwogCW1lbXNldChyZXNpemFibGVfc2ht ZW0tPmRhdGEsIDAsIG11bF9zaXplKHRlc3RfaW5pdGlhbF9lbnRyaWVzLCBURVNUX0VOVFJZX1NJ WkUpKTsKIH0KIAorLyoKKyAqIFByb3RlY3QgdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIG1l bW9yeSBhZnRlciBhdHRhY2hpbmcuCisgKi8KK3N0YXRpYyB2b2lkCityZXNpemFibGVfc2htZW1f c2htZW1fYXR0YWNoKHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIFNoYXJlZCBtZW1vcnkgc3RydWN0 dXJlIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBhbGxvY2F0ZWQuIEluaXRpYWxpemUKKwkgKiBp dC4KKwkgKi8KKwlBc3NlcnQocmVzaXphYmxlX3NobWVtICE9IE5VTEwpOworCisjaWZkZWYgSEFW RV9SRVNJWkFCTEVfU0hNRU0KKwlTaG1lbVByb3RlY3RTdHJ1Y3QoInJlc2l6YWJsZV9zaG1lbSIp OworI2VuZGlmCit9CisKIC8qCiAgKiBSZXNpemUgdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJl IHRvIGFjY29tbW9kYXRlIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCiAgKiBlbnRyaWVzLgpAQCAt MTk4LDYgKzIyMiw3IEBAIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoUEdfRlVOQ1RJT05fQVJHUykK IAluZXdfc2l6ZSA9IGFkZF9zaXplKG9mZnNldG9mKFRlc3RSZXNpemFibGVTaG1lbVN0cnVjdCwg ZGF0YSksCiAJCQkJCQltdWxfc2l6ZShuZXdfZW50cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CiAJ U2htZW1SZXNpemVTdHJ1Y3QoInJlc2l6YWJsZV9zaG1lbSIsIG5ld19zaXplKTsKKwlTaG1lbVBy b3RlY3RTdHJ1Y3QoInJlc2l6YWJsZV9zaG1lbSIpOwogCXJlc2l6YWJsZV9zaG1lbS0+bnVtX2Vu dHJpZXMgPSBuZXdfZW50cmllczsKIAogCVBHX1JFVFVSTl9WT0lEKCk7CkBAIC0yMTcsNiArMjQy LDE5IEBAIHJlc2l6YWJsZV9zaG1lbV93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJt c2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOwogCisjaWZkZWYgSEFW RV9SRVNJWkFCTEVfU0hNRU0KKworCS8qCisJICogSWRlYWxseSB0aGUgc3RydWN0dXJlIHNob3Vs ZCBiZSBwcm90ZWN0ZWQgdGhyb3VnaCBhIHN5bmNocm9uaXphdGlvbgorCSAqIGN5Y2xlIGFjcm9z cyBhbGwgdGhlIGJhY2tlbmRzIHRoYXQgbWF5IGFjY2VzcyB0aGUgc3RydWN0dXJlLiBCdXQgd2UK KwkgKiBkb24ndCBpbXBsZW1lbnQgYW55IHN1Y2ggc3luY2hyb25pemF0aW9uIGluIHRoaXMgdGVz dCBtb2R1bGUgdG8ga2VlcCBpdAorCSAqIHNpbXBsZS4gR2l2ZW4gdGhhdCBQcm9jU2lnbmFsQmFy cmllciBtZWNoYW5pc20gaXMgbm90IGV4dGVuc2libGUsIHdlCisJICogbWF5IG5vdCBiZSBhYmxl IHRvIGRvIHRoYXQgYXMgd2VsbCBoZXJlLiBIZW5jZSBhZGQgcHJvdGVjdCBqdXN0IGJlZm9yZQor CSAqIGFjY2Vzc2luZyB0aGUgc3RydWN0dXJlLgorCSAqLworCVNobWVtUHJvdGVjdFN0cnVjdCgi cmVzaXphYmxlX3NobWVtIik7CisjZW5kaWYKKwogCS8qIFdyaXRlIHRoZSB2YWx1ZSB0byBhbGwg Y3VycmVudCBlbnRyaWVzICovCiAJZm9yIChpID0gMDsgaSA8IHJlc2l6YWJsZV9zaG1lbS0+bnVt X2VudHJpZXM7IGkrKykKIAkJcmVzaXphYmxlX3NobWVtLT5kYXRhW2ldID0gZW50cnlfdmFsdWU7 CkBAIC0yNDUsNiArMjgzLDE5IEBAIHJlc2l6YWJsZV9zaG1lbV9yZWFkKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJ IGVycm1zZygiZW50cnlfY291bnQgJWQgaXMgb3V0IG9mIHJhbmdlICgwLi4lZCkiLCBlbnRyeV9j b3VudCwgcmVzaXphYmxlX3NobWVtLT5udW1fZW50cmllcykpKTsKIAorI2lmZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCisKKwkvKgorCSAqIElkZWFsbHkgdGhlIHN0cnVjdHVyZSBzaG91bGQgYmUg cHJvdGVjdGVkIHRocm91Z2ggYSBzeW5jaHJvbml6YXRpb24KKwkgKiBjeWNsZSBhY3Jvc3MgYWxs IHRoZSBiYWNrZW5kcyB0aGF0IG1heSBhY2Nlc3MgdGhlIHN0cnVjdHVyZS4gQnV0IHdlCisJICog ZG9uJ3QgaW1wbGVtZW50IGFueSBzdWNoIHN5bmNocm9uaXphdGlvbiBpbiB0aGlzIHRlc3QgbW9k dWxlIHRvIGtlZXAgaXQKKwkgKiBzaW1wbGUuIEdpdmVuIHRoYXQgUHJvY1NpZ25hbEJhcnJpZXIg bWVjaGFuaXNtIGlzIG5vdCBleHRlbnNpYmxlLCB3ZQorCSAqIG1heSBub3QgYmUgYWJsZSB0byBk byB0aGF0IGFzIHdlbGwgaGVyZS4gSGVuY2UgYWRkIHByb3RlY3QganVzdCBiZWZvcmUKKwkgKiBh Y2Nlc3NpbmcgdGhlIHN0cnVjdHVyZS4KKwkgKi8KKwlTaG1lbVByb3RlY3RTdHJ1Y3QoInJlc2l6 YWJsZV9zaG1lbSIpOworI2VuZGlmCisKIAlmb3IgKGkgPSAwOyBpIDwgZW50cnlfY291bnQ7IGkr KykKIAl7CiAJCWlmIChyZXNpemFibGVfc2htZW0tPmRhdGFbaV0gIT0gZW50cnlfdmFsdWUpCi0t IAoyLjM0LjEKCg== --00000000000002c74e064ecafef5--