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 1w9LXO-001Mg4-38 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 11:21:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9LXM-002RYO-02 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 11:21:04 +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 1w9LXK-002RYB-2N for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 11:21:03 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9LX2-00000000faM-3X0H for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 11:21:01 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-43d0deb7ad5so3050540f8f.2 for ; Sun, 05 Apr 2026 04:20:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775388042; cv=none; d=google.com; s=arc-20240605; b=eGBRQacBpxG8D9BBJ754ocQa6QPIhElns+A/ixQZVbCl0Qky1r6lOrxL9jxyYbMpqO FcNl7I8dKaGFZc8dZtBSrtQCVJd3Kioo3qD2ZPFk1RDbF403J60VrcTGAIjY8s9xvg0t E8GzOe4dyEaagThOtO9R8Mo+9FOrMlYC5dlS0gbKsdKgHvvZoCRNXSJZmiO/Rqr7U0g/ b+eZ5Eaa2RYZe3kg54zGS5CHLRV/lOqAk7/UVz3R5CFW4OyPT51zNpHCwmCWMfDiCzBa zm+x+ExlS0ZI2Ki7MGTxkp8HHgXmr0uDSlpVRQx8R0hqok6U+aAhpMzjNZT6cNYzfOmP dYdw== 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=zd3o0x5z1Hxk0Gg/BkA84DGsMraavGe+3Mdqe/6lmSU=; fh=10yUW77TMzfyvAKzhp0I8Ydd6SWLLyLSnI1rqjELslM=; b=TR5tghAC3v8/vIZ3dvbYJuypFHMMrinRpRszsHMeG9MkB4VMfd+QOGdcFYDOz7pTBn EdWjmTKMxgYfuohtZ/JfZZ3SYlyKxqUOCr5GlaXDnNpm1M/yuFDD2c3P1GCIy2lDX4VZ o1tA4REDcZS4i4b2wjZD+CvPxVuOm61vxPzqt6TwleUt4p8QqhU7I9rrhUxVb4Xdor3i AaSkyVm2cPfevY7SsBTj9JK7lbGZySGNIFsPCgUTM8dC+Fx2/eKdD29b9q9kbleAuCKx IrBIjGZ4iBUlT/HpMaovi5kAujz1/d6JzluKt2IJetP/wKDRy8nVTP1mlAMnbUEBbLIH YiUw==; 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=1775388042; x=1775992842; 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=zd3o0x5z1Hxk0Gg/BkA84DGsMraavGe+3Mdqe/6lmSU=; b=bgIP9pVwOrZKdm2MfDa0SFIENZ9zZuvSu9oDrXYCNnvWDb4xi8guEVrjpu1qAt9quF Na4H/AGyWM7UuhfMCCPPwGP6KUcuoM7GOV19jenWSHvSvoUw+Y3BOEW0vP00CO3MIewy mEQbt0jkWX62PlLRtThMNiJ9uj7NilMvy2PzP3B8Pt/kwejZ7+vGSEOrdok2XtJ5tGyX EvSLyfcDFXkR9CifXM6t7egfT+vcEQyIaEruos0g750edjkt8eFDF/uZL/GM/DO1Kv+P asaYXrPGPcCk98hQOQAkKW2axDMtMNIfoImoAMf7CdEtUNWcvh0HDAVpglwQWIzMkvv8 +pNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775388042; x=1775992842; 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=zd3o0x5z1Hxk0Gg/BkA84DGsMraavGe+3Mdqe/6lmSU=; b=HgW70+vOtBRJfkyOy43UyjFom1nEx524yuZRENF3vfqmDXOPm+VecWmeb/R9/KtcFo FeTeTcpbDXA4q3EfhZUTy77qJhwOSNm3n7gy3AhPYAe/Qjr6w/kJyaL5OpZPXmzgRXUz nfHUxoM9/8GCIPPppcMnGQPyqPjTXTwrGM5IXY0sRzy/ggG8lA72cwsYMyO4kQjNh8Ww YZOHqct66yjY7JKbwpcvMpihW1nebkNCz0CcBPpckrFPaZOgmnp4Yif04cQxeAHeRAKm JNuKwA0fM8ixdP1yphvrcD7KOZy+rUwzuaVPmIfnaVf46qGcu7KVGS3pNaKjfppr7Wf4 17rg== X-Forwarded-Encrypted: i=1; AJvYcCX4aILyBvLa8vtNcBV6tn4O9kU6+T01iyj+FseIC+EwLiffssC6EMgdBMxH0bVGiq2zE5alYXlsWd8wKUJQ@postgresql.org X-Gm-Message-State: AOJu0Yxkpizi1wtBn/wZBCzPCrubWdEQf/3Mwl6Mm1qqhnbmrlN7AJ2e knr8JnV48Dcs7gx6nPe8pYtdWeO86yxH+z4pgzGq5H4fFjWAQp8ptH0r4VsXHv9Wktrjlzn6wT0 ivU6SNo9/Xk6oPuboiTRbH8U1tq9J1aY= X-Gm-Gg: AeBDieva7aIm8Uhsk4rmituV664OJMr3UJ1vgDJzLcHWv/3k3KxdLsE7Ur/7HYO0TTu eCkh3LEQecb+aiQZkqaxNWtA9wMWnvG5F+qfAM60kf4pob7XxPMWl5YxcxiS8nc5G0cjrU+3QFp HtBCsQ8eaAtPh2RGR20sSC0QXYqO7C+OoQW89iO+KUBpI+BLO8NlUqON3IOQcxdYzJAxw0dAe6O h/B9mw1m7WTRnFUw6PvytOIJbKJmkru/9uC+89+7zWNMYGmrHFNDTIjZgyuuGyatCn+NvfOhrqH rlQRy0sc2guDTmNdFgTD9oRH+Rb3q4U+gva+AUeBMLUlOfE8/1m8 X-Received: by 2002:a05:6000:25c8:b0:43c:f257:c6fc with SMTP id ffacd0b85a97d-43d2926adc0mr13765947f8f.10.1775388042062; Sun, 05 Apr 2026 04:20:42 -0700 (PDT) MIME-Version: 1.0 References: <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> <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> In-Reply-To: From: Ashutosh Bapat Date: Sun, 5 Apr 2026 16:50:28 +0530 X-Gm-Features: AQROBzBeV_2jXTHDC26aPqVuEtr0tWhWeUGK8-fQa8ehDFS_Uc_FXga50ViCVg4 Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Matthias van de Meent Cc: Heikki Linnakangas , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000961c1c064eb4bda8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000961c1c064eb4bda8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 on > 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? 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. > > Following points are up for discussion > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D > > Nit: I think "reserved"/"space_reserved" is a better descriptor than > "allocated_space", as "allocated_space" could reasonably imply the > memory isn't available to the OS. Renamed it to reserved_space. New name is also less confusing with allocation_size. > > Note that currently, your patch rejects the case where resizeable > structs are initialized at their maximum size: > > > +++ b/src/backend/storage/ipc/shmem.c > > > +#ifdef HAVE_RESIZABLE_SHMEM > > + if (options->maximum_size > 0 && options->size >=3D options->maxim= um_size) > > + elog(ERROR, "resizable shared memory structure \"%s\" should h= ave maximum size (%zd) greater than size (%zd)", > > + options->name, options->maximum_size, options->size); > > It'd need to check 'options->size > options->maximum_size' to allow > max-sized initialization to succeed here without erroring. good catch. FIxed in the attached patch. > > > But if we do so, we need another member in > > ShmemStructDesc and ShmemIndexEnt to indicate whether the structure is > > resizable or not. Instead the patches set maximum_size to 0 for > > fixed-size structures and non-zero for resizable structures. This way > > we can check whether a structure is resizable or not by checking > > whether its maximum_size is zero or not. pg_shmem_allocations view > > also has a maximum_size column which has the similar characteristics. > > I would like to know what others think. > > I think that shmem allocations can set > > .size for the initial size, and > .minimum_size/.maximum_size for configuring resizeability; > > The latter fields can then be initialized with .size if they're 0. > > > > 3. allocated_space member in various structures and in pg_shmem_allocat= ions view > > -----------------------------------------------------------------------= -------- > > The patch adds a new member allocated_space to ShmemIndexEnt and > > pg_shmem_allocations view. allocated_space to maximum_size is what > > allocated_size is to size - it's the type aligned value of > > maximum_size. But it also highlights the difference between the > > address space allocation and the actual memory allocation. This > > difference is crucial to resizable structures. However, unlike > > maximum_size, we set it to a non-zero value, allocated_size, for > > fixed-size structures as well since they are allocated the same amount > > of space as their allocated_size. While this seems logically correct > > to me, some may find maximum_size to be zero but allocated_space to be > > non-zero for fixed-size structures a bit weird. I would like to know > > what others think. > > I'd prefer to have consistent values; constant-sized structs are no > different from resizable structs whose min/max size equal their > current size. The only alternative that I think could be considered > correct is returning NULL for those, but zero is definitely wrong. > > Note that returning min/max=3Dsize would also allow for better > aggregations on pg_shmem_allocations columns. > > Note: if we expose minimum_size, we may also want to expose > min_allocated_size (i.e., the full reservation minus the size of > MADV_REMOVEd pages when the shmem allocation is min-sized). > > > As a side question, do we want to allow users to specify minimum_size > > in ShmemStructOpts for resizable structures? Resizing memory lower > > than that would be prohibited. For fixed sized structures, > > minimum_size would be same as size and also maximum_size. > > I think it would be useful, if only to inform users and developers > about this in e.g. pg_shmem_allocations. > > > 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. > > > 4. to mprotect or not to mprotect > > --------------------------------- > > If memory beyond the current size of a resizable structure is > > accessed, it won't cause any segfault or bus error. When writing > > memory will be simply allocated and when reading, it will return > > zeroes if memory is not allocated yet. mprotect'ing the memory beyond > > the current size of a resizable structure to PROT_NONE can prevent > > accidental access to unallocated memory (sans page boundaries), but it > > needs to be done in every backend process which requires a > > synchronization mechanism beyond the scope of shmem.c. Hence the patch > > does not use mprotect. > > It seems to me that the synchronization is a crucial component of > resizing; isn't it bad if shmem structs can suddenly without > synchronization contain zeroes? > > > A subsystem will require some higher level > > synchronization mechanism between users of the structure and the > > process which resizes it. That synchronization mechanism can be used > > to mprotect the memory, if required. I have documented this, but I > > would like to know whether we should provide an API in shmem.c to > > mprotect. > > I think we should; I think it would simplify and deduplicate external > code that needs to mark the pages PROT_NONE, and centralize OS page > calculations to within the shmem subsystem. > It'd also allow checks that validate that the pages marked with > PROT_NONE are 1) within a shmem allocation and 2) currently not in use > by that shmem allocation. Reasonable. Let's wait for Heikki's opinion on this as well before implementing it. > > (Was there a point 5. for discussion? I can't find it) There is no point 5, just bad numbering. > > (This is where I ran out of time for these questions, sorry I didn't > get to point 6) CFBot did show some failures. 1. Makefile didn't define PGXS, fixed it. 2. Windows compiler didn't like #ifdef in the middle of function like macro argument list C5101 and C2059. Used a conditional macro instead. 3. The test fails one one machine because RssShmem is consistently 8MB higher than the allocated_size in all cases. I guess it is because of huge page setting. Adding huge_pages =3D off to the test configuration. I think the test can not rely on huge pages anyway since allocated_size isn't aligned to huge page size. -- Best Wishes, Ashutosh Bapat --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0001-refactor-Move-ShmemInitHash-to-separate-fi.patch" Content-Disposition: attachment; filename="v20260405_2-0001-refactor-Move-ShmemInitHash-to-separate-fi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k2l0 RnJvbSBmMDhmNGQyY2MxOTZhMjEwZGNhMWVkZDcxOTU2NTZjNjI0ODFmZWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTM6MDc6MjggKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwMS8xNV0gcmVmYWN0b3I6IE1vdmUgU2htZW1Jbml0SGFzaCB0byBz ZXBhcmF0ZSBmaWxlCgpJbiBwcmVwYXJhdGlvbiBmb3IgbmV4dCBjb21taXRzCi0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jICAgICAgfCAxMDggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW1faGFzaC5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgIHwgICA5ICstCiA1IGZpbGVzIGNoYW5n ZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9N YWtlZmlsZQppbmRleCA5YTA3ZjZlMWQ5Mi4uZjcxNjUzYmJlNDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L01ha2VmaWxlCkBAIC0yMiw2ICsyMiw3IEBAIE9CSlMgPSBcCiAJc2htX21xLm8gXAogCXNobV90 b2MubyBcCiAJc2htZW0ubyBcCisJc2htZW1faGFzaC5vIFwKIAlzaWduYWxmdW5jcy5vIFwKIAlz aW52YWwubyBcCiAJc2ludmFsYWR0Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZApp bmRleCA5YzFjYTk1NGQ5ZC4uYjhjMzFlMjk5NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29u LmJ1aWxkCkBAIC0xNCw2ICsxNCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3No bV9tcS5jJywKICAgJ3NobV90b2MuYycsCiAgICdzaG1lbS5jJywKKyAgJ3NobWVtX2hhc2guYycs CiAgICdzaWduYWxmdW5jcy5jJywKICAgJ3NpbnZhbC5jJywKICAgJ3NpbnZhbGFkdC5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDNjYjUxYWQ2MmY4Li5jOTk0Zjc2NzRlYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jCkBAIC05Niw5ICs5Niw2IEBAIHR5cGVkZWYgc3RydWN0IFNobWVt QWxsb2NhdG9yRGF0YQogCiAjZGVmaW5lIFNobWVtSW5kZXhMb2NrICgmU2htZW1BbGxvY2F0b3It PmluZGV4X2xvY2spCiAKLXN0YXRpYyBIVEFCICpzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2Nh dGlvbiwgc2l6ZV90IHNpemUsIGJvb2wgZm91bmQsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqbmFt ZSwgaW50NjQgbmVsZW1zLCBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpOwotc3RhdGlj IHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKTsKIHN0YXRp YyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwog CiAvKiBzaGFyZWQgbWVtb3J5IGdsb2JhbCB2YXJpYWJsZXMgKi8KQEAgLTI1NywyOSArMjU0LDYg QEAgU2htZW1BbGxvY05vRXJyb3IoU2l6ZSBzaXplKQogCXJldHVybiBTaG1lbUFsbG9jUmF3KHNp emUsICZhbGxvY2F0ZWRfc2l6ZSk7CiB9CiAKLS8qCi0gKiBTaG1lbUhhc2hBbGxvYyAtLSBhbGxv YyBjYWxsYmFjayBmb3Igc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcwotICoKLSAqIENhcnZlIG91 dCB0aGUgYWxsb2NhdGlvbiBmcm9tIGEgcHJlLWFsbG9jYXRlZCByZWdpb24uICBBbGwgc2hhcmVk IG1lbW9yeQotICogaGFzaCB0YWJsZXMgYXJlIGluaXRpYWxpemVkIHdpdGggSEFTSF9GSVhFRF9T SVpFLCBzbyBhbGwgdGhlIGFsbG9jYXRpb25zCi0gKiBoYXBwZW4gdXBmcm9udCBkdXJpbmcgaW5p dGlhbGl6YXRpb24gYW5kIG5vIGxvY2tpbmcgaXMgcmVxdWlyZWQuCi0gKi8KLXN0YXRpYyB2b2lk ICoKLVNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKQotewotCXNobWVt X2hhc2hfYWxsb2NhdG9yICphbGxvY2F0b3IgPSAoc2htZW1faGFzaF9hbGxvY2F0b3IgKikgYWxs b2NfYXJnOwotCXZvaWQJICAgKnJlc3VsdDsKLQotCXNpemUgPSBNQVhBTElHTihzaXplKTsKLQot CWlmIChhbGxvY2F0b3ItPmVuZCAtIGFsbG9jYXRvci0+bmV4dCA8IHNpemUpCi0JCXJldHVybiBO VUxMOwotCXJlc3VsdCA9IGFsbG9jYXRvci0+bmV4dDsKLQlhbGxvY2F0b3ItPm5leHQgKz0gc2l6 ZTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KIC8qCiAgKiBTaG1lbUFsbG9jUmF3IC0tIGFsbG9j YXRlIGFsaWduIGNodW5rIGFuZCByZXR1cm4gYWxsb2NhdGVkIHNpemUKICAqCkBAIC0zNDEsODgg KzMxNSw2IEBAIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcikKIAlyZXR1cm4gKGFk ZHIgPj0gU2htZW1CYXNlKSAmJiAoYWRkciA8IFNobWVtRW5kKTsKIH0KIAotLyoKLSAqIFNobWVt SW5pdEhhc2ggLS0gQ3JlYXRlIGFuZCBpbml0aWFsaXplLCBvciBhdHRhY2ggdG8sIGEKLSAqCQlz aGFyZWQgbWVtb3J5IGhhc2ggdGFibGUuCi0gKgotICogV2UgYXNzdW1lIGNhbGxlciBpcyBkb2lu ZyBzb21lIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uCi0gKiBzbyB0aGF0IHR3byBwcm9jZXNzZXMg ZG9uJ3QgdHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRoZSBzYW1lCi0gKiB0YWJsZSBhdCBvbmNl LiAgKEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFyZSBkb25lIGluIHRoZSBwb3N0bWFzdGVy Ci0gKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hvdWxkIGFsd2F5cyBiZSBhdHRhY2hpbmcg dG8gZXhpc3RpbmcgdGFibGVzLikKLSAqCi0gKiBuZWxlbXMgaXMgdGhlIG1heGltdW0gbnVtYmVy IG9mIGhhc2h0YWJsZSBlbnRyaWVzLgotICoKLSAqICppbmZvUCBhbmQgaGFzaF9mbGFncyBtdXN0 IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVzIGFuZCBrZXkKLSAqIGNvbXBhcmlzb24g c2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBGbGFnIGJpdHMgYW5kIHZhbHVlcyBzcGVj aWZpYwotICogdG8gc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcyBhcmUgYWRkZWQgaGVyZSwgZXhj ZXB0IHRoYXQgY2FsbGVycyBtYXkKLSAqIGNob29zZSB0byBzcGVjaWZ5IEhBU0hfUEFSVElUSU9O LgotICoKLSAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJu ZWQgTlVMTCBmb3Igc29tZSBmYWlsdXJlCi0gKiBjYXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93 cyBlcnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQgbm90IGNoZWNrCi0gKiBmb3IgTlVMTC4K LSAqLwotSFRBQiAqCi1TaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBz dHJpbmcgbmFtZSBmb3Igc2htZW0gaW5kZXggKi8KLQkJCSAgaW50NjQgbmVsZW1zLAkJLyogc2l6 ZSBvZiB0aGUgdGFibGUgKi8KLQkJCSAgSEFTSENUTCAqaW5mb1AsCS8qIGluZm8gYWJvdXQga2V5 IGFuZCBidWNrZXQgc2l6ZSAqLwotCQkJICBpbnQgaGFzaF9mbGFncykJLyogaW5mbyBhYm91dCBp bmZvUCAqLwotewotCWJvb2wJCWZvdW5kOwotCXNpemVfdAkJc2l6ZTsKLQl2b2lkCSAgICpsb2Nh dGlvbjsKLQotCXNpemUgPSBoYXNoX2VzdGltYXRlX3NpemUobmVsZW1zLCBpbmZvUC0+ZW50cnlz aXplKTsKLQotCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlICov Ci0JbG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFtZSwgc2l6ZSwgJmZvdW5kKTsKLQotCXJl dHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwgc2l6ZSwgZm91bmQsCi0JCQkJCQkJIG5h bWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBv ciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBpbiB0aGUgZ2l2ZW4gc2htZW0gcmVnaW9u LgotICoKLSAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20gU2htZW1Jbml0SGFzaCgpIHRvIGFsbG93 IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCi0gKiBzaGFyZSB0aGUgbG9naWMgZm9yIGJvb3RzdHJh cHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4KLSAqLwotc3RhdGljIEhUQUIgKgotc2ht ZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAot CQkJCSAgY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLCBIQVNIQ1RMICppbmZvUCwgaW50 IGhhc2hfZmxhZ3MpCi17Ci0Jc2htZW1faGFzaF9hbGxvY2F0b3IgYWxsb2NhdG9yOwotCi0JLyoK LQkgKiBIYXNoIHRhYmxlcyBhbGxvY2F0ZWQgaW4gc2hhcmVkIG1lbW9yeSBoYXZlIGEgZml4ZWQg ZGlyZWN0b3J5IGFuZCBoYXZlCi0JICogYWxsIGVsZW1lbnRzIGFsbG9jYXRlZCB1cGZyb250LiAg V2UgZG9uJ3Qgc3VwcG9ydCBncm93aW5nIGJlY2F1c2Ugd2UnZAotCSAqIG5lZWQgdG8gZ3JvdyB0 aGUgdW5kZXJseWluZyBzaG1lbSByZWdpb24gd2l0aCBpdC4KLQkgKgotCSAqIFRoZSBzaGFyZWQg bWVtb3J5IGFsbG9jYXRvciBtdXN0IGJlIHNwZWNpZmllZCB0b28uCi0JICovCi0JaW5mb1AtPmFs bG9jID0gU2htZW1IYXNoQWxsb2M7Ci0JaW5mb1AtPmFsbG9jX2FyZyA9IE5VTEw7Ci0JaGFzaF9m bGFncyB8PSBIQVNIX1NIQVJFRF9NRU0gfCBIQVNIX0FMTE9DIHwgSEFTSF9GSVhFRF9TSVpFOwot Ci0JLyoKLQkgKiBpZiBpdCBhbHJlYWR5IGV4aXN0cywgYXR0YWNoIHRvIGl0IHJhdGhlciB0aGFu IGFsbG9jYXRlIGFuZCBpbml0aWFsaXplCi0JICogbmV3IHNwYWNlCi0JICovCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCWFsbG9jYXRvci5uZXh0ID0gKGNoYXIgKikgbG9jYXRpb247Ci0JCWFsbG9jYXRv ci5lbmQgPSAoY2hhciAqKSBsb2NhdGlvbiArIHNpemU7Ci0JCWluZm9QLT5hbGxvY19hcmcgPSAm YWxsb2NhdG9yOwotCX0KLQllbHNlCi0JewotCQkvKiBQYXNzIGxvY2F0aW9uIG9mIGhhc2h0YWJs ZSBoZWFkZXIgdG8gaGFzaF9jcmVhdGUgKi8KLQkJaW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSBs b2NhdGlvbjsKLQkJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKLQl9Ci0KLQlyZXR1cm4gaGFz aF9jcmVhdGUobmFtZSwgbmVsZW1zLCBpbmZvUCwgaGFzaF9mbGFncyk7Ci19Ci0KIC8qCiAgKiBT aG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQg bWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hh c2guYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGIwNTczMDEyOWUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKQEAgLTAsMCArMSwxMzAgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNobWVtX2hhc2guYworICoJICBoYXNoIHRhYmxl IGltcGxlbWVudGF0aW9uIGluIHNoYXJlZCBtZW1vcnkKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogQSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgaW1wbGVtZW50 YXRpb24gb24gdG9wIG9mIHRoZSBuYW1lZCwgZml4ZWQtc2l6ZQorICogc2hhcmVkIG1lbW9yeSBh cmVhcyBtYW5hZ2VkIGJ5IHNobWVtLmMuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4aW11 bQorICogc2l6ZSwgYnV0IHRoZWlyIGFjdHVhbCBzaXplIGNhbiB2YXJ5IGR5bmFtaWNhbGx5LiAg V2hlbiBlbnRyaWVzIGFyZSBhZGRlZAorICogdG8gdGhlIHRhYmxlLCBtb3JlIHNwYWNlIGlzIGFs bG9jYXRlZC4gIEVhY2ggc2hhcmVkIGRhdGEgc3RydWN0dXJlIGFuZCBoYXNoCisgKiBoYXMgYSBz dHJpbmcgbmFtZSB0byBpZGVudGlmeSBpdC4KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInN0b3JhZ2Uvc2ht ZW0uaCIKKworc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxs b2NfYXJnKTsKKworLyoKKyAqIFNobWVtSW5pdEhhc2ggLS0gQ3JlYXRlIGFuZCBpbml0aWFsaXpl LCBvciBhdHRhY2ggdG8sIGEKKyAqCQlzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUuCisgKgorICog V2UgYXNzdW1lIGNhbGxlciBpcyBkb2luZyBzb21lIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uCisg KiBzbyB0aGF0IHR3byBwcm9jZXNzZXMgZG9uJ3QgdHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRo ZSBzYW1lCisgKiB0YWJsZSBhdCBvbmNlLiAgKEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFy ZSBkb25lIGluIHRoZSBwb3N0bWFzdGVyCisgKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hv dWxkIGFsd2F5cyBiZSBhdHRhY2hpbmcgdG8gZXhpc3RpbmcgdGFibGVzLikKKyAqCisgKiBuZWxl bXMgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzLgorICoKKyAqICpp bmZvUCBhbmQgaGFzaF9mbGFncyBtdXN0IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVz IGFuZCBrZXkKKyAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBG bGFnIGJpdHMgYW5kIHZhbHVlcyBzcGVjaWZpYworICogdG8gc2hhcmVkLW1lbW9yeSBoYXNoIHRh YmxlcyBhcmUgYWRkZWQgaGVyZSwgZXhjZXB0IHRoYXQgY2FsbGVycyBtYXkKKyAqIGNob29zZSB0 byBzcGVjaWZ5IEhBU0hfUEFSVElUSU9OLgorICoKKyAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5 LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCBmb3Igc29tZSBmYWlsdXJlCisgKiBjYXNl cy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBlcnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQg bm90IGNoZWNrCisgKiBmb3IgTlVMTC4KKyAqLworSFRBQiAqCitTaG1lbUluaXRIYXNoKGNvbnN0 IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcgbmFtZSBmb3Igc2htZW0gaW5kZXggKi8KKwkJ CSAgaW50NjQgbmVsZW1zLAkJLyogc2l6ZSBvZiB0aGUgdGFibGUgKi8KKwkJCSAgSEFTSENUTCAq aW5mb1AsCS8qIGluZm8gYWJvdXQga2V5IGFuZCBidWNrZXQgc2l6ZSAqLworCQkJICBpbnQgaGFz aF9mbGFncykJLyogaW5mbyBhYm91dCBpbmZvUCAqLworeworCWJvb2wJCWZvdW5kOworCXNpemVf dAkJc2l6ZTsKKwl2b2lkCSAgICpsb2NhdGlvbjsKKworCXNpemUgPSBoYXNoX2VzdGltYXRlX3Np emUobmVsZW1zLCBpbmZvUC0+ZW50cnlzaXplKTsKKworCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNo bWVtIGluZGV4IG9yIGFsbG9jYXRlICovCisJbG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFt ZSwgc2l6ZSwgJmZvdW5kKTsKKworCXJldHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwg c2l6ZSwgZm91bmQsCisJCQkJCQkJIG5hbWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOwor fQorCisvKgorICogSW5pdGlhbGl6ZSBvciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBp biB0aGUgZ2l2ZW4gc2htZW0gcmVnaW9uLgorICoKKyAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20g U2htZW1Jbml0SGFzaCgpIHRvIGFsbG93IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCisgKiBzaGFy ZSB0aGUgbG9naWMgZm9yIGJvb3RzdHJhcHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4K KyAqLworSFRBQiAqCitzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNp emUsIGJvb2wgZm91bmQsCisJCQkJICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBuZWxlbXMsIEhB U0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncykKK3sKKwlzaG1lbV9oYXNoX2FsbG9jYXRvciBh bGxvY2F0b3I7CisKKwkvKgorCSAqIEhhc2ggdGFibGVzIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVt b3J5IGhhdmUgYSBmaXhlZCBkaXJlY3RvcnkgYW5kIGhhdmUKKwkgKiBhbGwgZWxlbWVudHMgYWxs b2NhdGVkIHVwZnJvbnQuICBXZSBkb24ndCBzdXBwb3J0IGdyb3dpbmcgYmVjYXVzZSB3ZSdkCisJ ICogbmVlZCB0byBncm93IHRoZSB1bmRlcmx5aW5nIHNobWVtIHJlZ2lvbiB3aXRoIGl0LgorCSAq CisJICogVGhlIHNoYXJlZCBtZW1vcnkgYWxsb2NhdG9yIG11c3QgYmUgc3BlY2lmaWVkIHRvby4K KwkgKi8KKwlpbmZvUC0+YWxsb2MgPSBTaG1lbUhhc2hBbGxvYzsKKwlpbmZvUC0+YWxsb2NfYXJn ID0gTlVMTDsKKwloYXNoX2ZsYWdzIHw9IEhBU0hfU0hBUkVEX01FTSB8IEhBU0hfQUxMT0MgfCBI QVNIX0ZJWEVEX1NJWkU7CisKKwkvKgorCSAqIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBhdHRhY2gg dG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUKKwkgKiBuZXcgc3BhY2UK KwkgKi8KKwlpZiAoIWZvdW5kKQorCXsKKwkJYWxsb2NhdG9yLm5leHQgPSAoY2hhciAqKSBsb2Nh dGlvbjsKKwkJYWxsb2NhdG9yLmVuZCA9IChjaGFyICopIGxvY2F0aW9uICsgc2l6ZTsKKwkJaW5m b1AtPmFsbG9jX2FyZyA9ICZhbGxvY2F0b3I7CisJfQorCWVsc2UKKwl7CisJCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLworCQlpbmZvUC0+aGN0 bCA9IChIQVNISERSICopIGxvY2F0aW9uOworCQloYXNoX2ZsYWdzIHw9IEhBU0hfQVRUQUNIOwor CX0KKworCXJldHVybiBoYXNoX2NyZWF0ZShuYW1lLCBuZWxlbXMsIGluZm9QLCBoYXNoX2ZsYWdz KTsKK30KKworLyoKKyAqIFNobWVtSGFzaEFsbG9jIC0tIGFsbG9jIGNhbGxiYWNrIGZvciBzaGFy ZWQgbWVtb3J5IGhhc2ggdGFibGVzCisgKgorICogQ2FydmUgb3V0IHRoZSBhbGxvY2F0aW9uIGZy b20gYSBwcmUtYWxsb2NhdGVkIHJlZ2lvbi4gIEFsbCBzaGFyZWQgbWVtb3J5CisgKiBoYXNoIHRh YmxlcyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBIQVNIX0ZJWEVEX1NJWkUsIHNvIGFsbCB0aGUgYWxs b2NhdGlvbnMKKyAqIGhhcHBlbiB1cGZyb250IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgbm8g bG9ja2luZyBpcyByZXF1aXJlZC4KKyAqLworc3RhdGljIHZvaWQgKgorU2htZW1IYXNoQWxsb2Mo U2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpCit7CisJc2htZW1faGFzaF9hbGxvY2F0b3IgKmFs bG9jYXRvciA9IChzaG1lbV9oYXNoX2FsbG9jYXRvciAqKSBhbGxvY19hcmc7CisJdm9pZAkgICAq cmVzdWx0OworCisJc2l6ZSA9IE1BWEFMSUdOKHNpemUpOworCisJaWYgKGFsbG9jYXRvci0+ZW5k IC0gYWxsb2NhdG9yLT5uZXh0IDwgc2l6ZSkKKwkJcmV0dXJuIE5VTEw7CisJcmVzdWx0ID0gYWxs b2NhdG9yLT5uZXh0OworCWFsbG9jYXRvci0+bmV4dCArPSBzaXplOworCisJcmV0dXJuIHJlc3Vs dDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBhMmViNDk5ZDYzYy4uODJmNTQwM2M5NTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3NobWVtLmgKQEAgLTMwLDE1ICszMCwyMCBAQCB0eXBlZGVmIHN0cnVjdCBQR1NobWVtSGVh ZGVyIFBHU2htZW1IZWFkZXI7IC8qIGF2b2lkIGluY2x1ZGluZwogZXh0ZXJuIHZvaWQgSW5pdFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CiBleHRlcm4gdm9pZCAqU2htZW1B bGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6 ZSk7CitleHRlcm4gdm9pZCAqU2htZW1IYXNoQWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19h cmcpOwogZXh0ZXJuIGJvb2wgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKTsKLWV4 dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywK LQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CiBleHRlcm4gdm9pZCAq U2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQ dHIpOwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiBleHRlcm4gU2l6 ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFNpemUg cGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCisvKiBzaG1lbV9oYXNoLmMgKi8KK2V4dGVy biBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywKKwkJ CQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CitleHRlcm4gSFRBQiAqc2ht ZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAor CQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywgSEFTSENUTCAqaW5mb1As IGludCBoYXNoX2ZsYWdzKQorCiAvKiBpcGNpLmMgKi8KIGV4dGVybiB2b2lkIFJlcXVlc3RBZGRp blNobWVtU3BhY2UoU2l6ZSBzaXplKTsKIAoKYmFzZS1jb21taXQ6IGRlMjgxNDBkZWQ4ZDRiYTAw ZmFmOTA1ZWMzNTMwZmZlYjhhMzRhNTMKLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0004-Convert-pg_stat_statements-to-use-the-new-.patch" Content-Disposition: attachment; filename="v20260405_2-0004-Convert-pg_stat_statements-to-use-the-new-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k3b3 RnJvbSBhODJlNmM2YzY0ZjE5ZmU2MGE5YWNhMDBlMjQzMTQyZDc3ZWE5NzRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMToyNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA0LzE1XSBDb252ZXJ0IHBnX3N0YXRfc3RhdGVtZW50cyB0byB1c2Ug dGhlIG5ldwogaW50ZXJmYWNlCgpBcyBwYXJ0IG9mIHRoaXMsIGVtYmVkIHRoZSBMV0xvY2sgaXQg bmVlZHMgaW4gdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0Cml0c2VsZiwgc28gdGhhdCB3ZSBkb24n dCBuZWVkIHRvIHVzZSBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCkKYW55bW9yZS4gTFdMb2Nr TmV3VHJhbmNoZUlkK0xXTG9ja0luaXRpYWxpemUgaXMgbW9yZSBjb252ZW5pZW50IHRvIHVzZQpp biBleHRlbnNpb25zLgoKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBh dC5vc3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFn aUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFp bC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv Q0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwu Z21haWwuY29tCi0tLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YyAgIHwgMTczICsrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc3IGluc2VydGlv bnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNTQ5NGQ0MWRjYTEuLmYwNzhiNGZlNzFiIDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwor KysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAt MjQ5LDcgKzI0OSw3IEBAIHR5cGVkZWYgc3RydWN0IHBnc3NFbnRyeQogICovCiB0eXBlZGVmIHN0 cnVjdCBwZ3NzU2hhcmVkU3RhdGUKIHsKLQlMV0xvY2sJICAgKmxvY2s7CQkJLyogcHJvdGVjdHMg aGFzaHRhYmxlIHNlYXJjaC9tb2RpZmljYXRpb24gKi8KKwlMV0xvY2tQYWRkZWQgbG9jazsJCQkv KiBwcm90ZWN0cyBoYXNodGFibGUgc2VhcmNoL21vZGlmaWNhdGlvbiAqLwogCWRvdWJsZQkJY3Vy X21lZGlhbl91c2FnZTsJLyogY3VycmVudCBtZWRpYW4gdXNhZ2UgaW4gaGFzaHRhYmxlICovCiAJ U2l6ZQkJbWVhbl9xdWVyeV9sZW47IC8qIGN1cnJlbnQgbWVhbiBlbnRyeSB0ZXh0IGxlbmd0aCAq LwogCXNsb2NrX3QJCW11dGV4OwkJCS8qIHByb3RlY3RzIGZvbGxvd2luZyBmaWVsZHMgb25seTog Ki8KQEAgLTI1OSwxNCArMjU5LDI0IEBAIHR5cGVkZWYgc3RydWN0IHBnc3NTaGFyZWRTdGF0ZQog CXBnc3NHbG9iYWxTdGF0cyBzdGF0czsJCS8qIGdsb2JhbCBzdGF0aXN0aWNzIGZvciBwZ3NzICov CiB9IHBnc3NTaGFyZWRTdGF0ZTsKIAorLyogTGlua3MgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZSAq Lworc3RhdGljIHBnc3NTaGFyZWRTdGF0ZSAqcGdzczsKK3N0YXRpYyBIVEFCICpwZ3NzX2hhc2g7 CisKK3N0YXRpYyB2b2lkIHBnc3Nfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgcGdzc19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisKK3N0YXRpYyBjb25zdCBTaG1lbUNhbGxi YWNrcyBwZ3NzX3NobWVtX2NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IHBnc3Nfc2htZW1f cmVxdWVzdCwKKwkuaW5pdF9mbiA9IHBnc3Nfc2htZW1faW5pdCwKK307CisKIC8qLS0tLSBMb2Nh bCB2YXJpYWJsZXMgLS0tLSovCiAKIC8qIEN1cnJlbnQgbmVzdGluZyBkZXB0aCBvZiBwbGFubmVy L0V4ZWN1dG9yUnVuL1Byb2Nlc3NVdGlsaXR5IGNhbGxzICovCiBzdGF0aWMgaW50CW5lc3Rpbmdf bGV2ZWwgPSAwOwogCiAvKiBTYXZlZCBob29rIHZhbHVlcyAqLwotc3RhdGljIHNobWVtX3JlcXVl c3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0YXRpYyBzaG1l bV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7CiBzdGF0 aWMgcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSBwcmV2X3Bvc3RfcGFyc2VfYW5hbHl6ZV9o b29rID0gTlVMTDsKIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9 IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0 ID0gTlVMTDsKQEAgLTI3NSwxMCArMjg1LDYgQEAgc3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tf dHlwZSBwcmV2X0V4ZWN1dG9yRmluaXNoID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29r X3R5cGUgcHJldl9FeGVjdXRvckVuZCA9IE5VTEw7CiBzdGF0aWMgUHJvY2Vzc1V0aWxpdHlfaG9v a190eXBlIHByZXZfUHJvY2Vzc1V0aWxpdHkgPSBOVUxMOwogCi0vKiBMaW5rcyB0byBzaGFyZWQg bWVtb3J5IHN0YXRlICovCi1zdGF0aWMgcGdzc1NoYXJlZFN0YXRlICpwZ3NzID0gTlVMTDsKLXN0 YXRpYyBIVEFCICpwZ3NzX2hhc2ggPSBOVUxMOwotCiAvKi0tLS0gR1VDIHZhcmlhYmxlcyAtLS0t Ki8KIAogdHlwZWRlZiBlbnVtCkBAIC0zMzEsOCArMzM3LDYgQEAgUEdfRlVOQ1RJT05fSU5GT19W MShwZ19zdGF0X3N0YXRlbWVudHNfMV8xMyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRf c3RhdGVtZW50cyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50c19pbmZv KTsKIAotc3RhdGljIHZvaWQgcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQpOwotc3RhdGljIHZvaWQg cGdzc19zaG1lbV9zdGFydHVwKHZvaWQpOwogc3RhdGljIHZvaWQgcGdzc19zaG1lbV9zaHV0ZG93 bihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIHBnc3NfcG9zdF9wYXJzZV9hbmFs eXplKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnF1ZXJ5LAogCQkJCQkJCQkJSnVtYmxlU3Rh dGUgKmpzdGF0ZSk7CkBAIC0zNjYsNyArMzcwLDYgQEAgc3RhdGljIHZvaWQgcGdzc19zdG9yZShj b25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIHN0YXRpYyB2b2lkIHBnX3N0YXRfc3Rh dGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCQlwZ3Nz VmVyc2lvbiBhcGlfdmVyc2lvbiwKIAkJCQkJCQkJCQlib29sIHNob3d0ZXh0KTsKLXN0YXRpYyBT aXplIHBnc3NfbWVtc2l6ZSh2b2lkKTsKIHN0YXRpYyBwZ3NzRW50cnkgKmVudHJ5X2FsbG9jKHBn c3NIYXNoS2V5ICprZXksIFNpemUgcXVlcnlfb2Zmc2V0LCBpbnQgcXVlcnlfbGVuLAogCQkJCQkJ CSAgaW50IGVuY29kaW5nLCBib29sIHN0aWNreSk7CiBzdGF0aWMgdm9pZCBlbnRyeV9kZWFsbG9j KHZvaWQpOwpAQCAtNDcxLDEzICs0NzQsMTQgQEAgX1BHX2luaXQodm9pZCkKIAogCU1hcmtHVUNQ cmVmaXhSZXNlcnZlZCgicGdfc3RhdF9zdGF0ZW1lbnRzIik7CiAKKwkvKgorCSAqIFJlZ2lzdGVy IG91ciBzaGFyZWQgbWVtb3J5IG5lZWRzLgorCSAqLworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3Mo JnBnc3Nfc2htZW1fY2FsbGJhY2tzKTsKKwogCS8qCiAJICogSW5zdGFsbCBob29rcy4KIAkgKi8K LQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKLQlzaG1lbV9y ZXF1ZXN0X2hvb2sgPSBwZ3NzX3NobWVtX3JlcXVlc3Q7Ci0JcHJldl9zaG1lbV9zdGFydHVwX2hv b2sgPSBzaG1lbV9zdGFydHVwX2hvb2s7Ci0Jc2htZW1fc3RhcnR1cF9ob29rID0gcGdzc19zaG1l bV9zdGFydHVwOwogCXByZXZfcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgPSBwb3N0X3BhcnNlX2Fu YWx5emVfaG9vazsKIAlwb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IHBnc3NfcG9zdF9wYXJzZV9h bmFseXplOwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwpAQCAtNDk1LDMwICs0 OTksNDIgQEAgX1BHX2luaXQodm9pZCkKIH0KIAogLyoKLSAqIHNobWVtX3JlcXVlc3QgaG9vazog cmVxdWVzdCBhZGRpdGlvbmFsIHNoYXJlZCByZXNvdXJjZXMuICBXZSdsbCBhbGxvY2F0ZSBvcgot ICogYXR0YWNoIHRvIHRoZSBzaGFyZWQgcmVzb3VyY2VzIGluIHBnc3Nfc2htZW1fc3RhcnR1cCgp LgorICogc2htZW0gcmVxdWVzdCBjYWxsYmFjazogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IHJlc291 cmNlcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAuICBOb3Rl IHRoYXQgdGhlIHNoYXJlZCBtZW1vcnkgaXNuJ3QKKyAqIGFsbG9jYXRlZCBoZXJlIHlldCwgdGhp cyBtZXJlbHkgcmVnaXN0ZXIgb3VyIG5lZWRzLgorICoKKyAqIEluIEVYRUNfQkFDS0VORCBtb2Rl LCB0aGlzIGlzIGFsc28gY2FsbGVkIGluIGVhY2ggYmFja2VuZCwgdG8gcmUtYXR0YWNoIHRvCisg KiB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHRoYXQgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuCiAg Ki8KIHN0YXRpYyB2b2lkCi1wZ3NzX3NobWVtX3JlcXVlc3Qodm9pZCkKK3Bnc3Nfc2htZW1fcmVx dWVzdCh2b2lkICphcmcpCiB7Ci0JaWYgKHByZXZfc2htZW1fcmVxdWVzdF9ob29rKQotCQlwcmV2 X3NobWVtX3JlcXVlc3RfaG9vaygpOwotCi0JUmVxdWVzdEFkZGluU2htZW1TcGFjZShwZ3NzX21l bXNpemUoKSk7Ci0JUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNoZSgicGdfc3RhdF9zdGF0ZW1lbnRz IiwgMSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMgaGFz aCIsCisJCQkJCSAubmVsZW1zID0gcGdzc19tYXgsCisJCQkJCSAuaGFzaF9pbmZvLmtleXNpemUg PSBzaXplb2YocGdzc0hhc2hLZXkpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXpl b2YocGdzc0VudHJ5KSwKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9C UywKKwkJCQkJIC5wdHIgPSAmcGdzc19oYXNoLAorCQkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihwZ3Nz U2hhcmVkU3RhdGUpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZwZ3NzLAorCQkpOwogfQog CiAvKgotICogc2htZW1fc3RhcnR1cCBob29rOiBhbGxvY2F0ZSBvciBhdHRhY2ggdG8gc2hhcmVk IG1lbW9yeSwKLSAqIHRoZW4gbG9hZCBhbnkgcHJlLWV4aXN0aW5nIHN0YXRpc3RpY3MgZnJvbSBm aWxlLgotICogQWxzbyBjcmVhdGUgYW5kIGxvYWQgdGhlIHF1ZXJ5LXRleHRzIGZpbGUsIHdoaWNo IGlzIGV4cGVjdGVkIHRvIGV4aXN0Ci0gKiAoZXZlbiBpZiBlbXB0eSkgd2hpbGUgdGhlIG1vZHVs ZSBpcyBlbmFibGVkLgorICogc2htZW0gaW5pdCBjYWxsYmFjazogSW5pdGlhbGl6ZSBvdXIgc2hh cmVkIG1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgYXQKKyAqIHBvc3RtYXN0ZXIgc3RhcnR1cC4KKyAq CisgKiBMb2FkIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGlzdGljcyBmcm9tIGZpbGUuICBBbHNvIGNy ZWF0ZSBhbmQgbG9hZCB0aGUKKyAqIHF1ZXJ5LXRleHRzIGZpbGUsIHdoaWNoIGlzIGV4cGVjdGVk IHRvIGV4aXN0IChldmVuIGlmIGVtcHR5KSB3aGlsZSB0aGUKKyAqIG1vZHVsZSBpcyBlbmFibGVk LgogICovCiBzdGF0aWMgdm9pZAotcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCitwZ3NzX3NobWVt X2luaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJCWluZm87CisJaW50 CQkJdHJhbmNoZV9pZDsKIAlGSUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAgICpxZmlsZSA9 IE5VTEw7CiAJdWludDMyCQloZWFkZXI7CkBAIC01MjgsNTkgKzU0NCwzOCBAQCBwZ3NzX3NobWVt X3N0YXJ0dXAodm9pZCkKIAlpbnQJCQlidWZmZXJfc2l6ZTsKIAljaGFyCSAgICpidWZmZXIgPSBO VUxMOwogCi0JaWYgKHByZXZfc2htZW1fc3RhcnR1cF9ob29rKQotCQlwcmV2X3NobWVtX3N0YXJ0 dXBfaG9vaygpOwotCi0JLyogcmVzZXQgaW4gY2FzZSB0aGlzIGlzIGEgcmVzdGFydCB3aXRoaW4g dGhlIHBvc3RtYXN0ZXIgKi8KLQlwZ3NzID0gTlVMTDsKLQlwZ3NzX2hhc2ggPSBOVUxMOwotCiAJ LyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0YXRlLCBpbmNs dWRpbmcgaGFzaCB0YWJsZQorCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHdlJ3JlIGxvYWRl ZCBmcm9tIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBpbgorCSAqIF9QR19pbml0KCksIHNvIHdl IHNob3VsZCBub3QgZ2V0IGhlcmUgYWZ0ZXIgcG9zdG1hc3RlciBzdGFydHVwLgogCSAqLwotCUxX TG9ja0FjcXVpcmUoQWRkaW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotCi0JcGdzcyA9 IFNobWVtSW5pdFN0cnVjdCgicGdfc3RhdF9zdGF0ZW1lbnRzIiwKLQkJCQkJCSAgIHNpemVvZihw Z3NzU2hhcmVkU3RhdGUpLAotCQkJCQkJICAgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKiBGaXJzdCB0aW1lIHRocm91Z2ggLi4uICovCi0JCXBnc3MtPmxvY2sgPSAmKEdldE5hbWVk TFdMb2NrVHJhbmNoZSgicGdfc3RhdF9zdGF0ZW1lbnRzIikpLT5sb2NrOwotCQlwZ3NzLT5jdXJf bWVkaWFuX3VzYWdlID0gQVNTVU1FRF9NRURJQU5fSU5JVDsKLQkJcGdzcy0+bWVhbl9xdWVyeV9s ZW4gPSBBU1NVTUVEX0xFTkdUSF9JTklUOwotCQlTcGluTG9ja0luaXQoJnBnc3MtPm11dGV4KTsK LQkJcGdzcy0+ZXh0ZW50ID0gMDsKLQkJcGdzcy0+bl93cml0ZXJzID0gMDsKLQkJcGdzcy0+Z2Nf Y291bnQgPSAwOwotCQlwZ3NzLT5zdGF0cy5kZWFsbG9jID0gMDsKLQkJcGdzcy0+c3RhdHMuc3Rh dHNfcmVzZXQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0JfQotCi0JaW5mby5rZXlzaXplID0g c2l6ZW9mKHBnc3NIYXNoS2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkp OwotCXBnc3NfaGFzaCA9IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwK LQkJCQkJCQkgIHBnc3NfbWF4LAotCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTKTsKLQotCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKKwlB c3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyKTsKIAogCS8qCi0JICogSWYgd2UncmUgaW4gdGhlIHBv c3RtYXN0ZXIgKG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLi4uKSwgc2V0IHVwIGEgc2htZW0KLQkg KiBleGl0IGhvb2sgdG8gZHVtcCB0aGUgc3RhdGlzdGljcyB0byBkaXNrLgorCSAqIEluaXRpYWxp emUgdGhlIHNobWVtIGFyZWEgd2l0aCBubyBzdGF0aXN0aWNzLgogCSAqLwotCWlmICghSXNVbmRl clBvc3RtYXN0ZXIpCi0JCW9uX3NobWVtX2V4aXQocGdzc19zaG1lbV9zaHV0ZG93biwgKERhdHVt KSAwKTsKKwl0cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKCJwZ19zdGF0X3N0YXRlbWVu dHMiKTsKKwlMV0xvY2tJbml0aWFsaXplKCZwZ3NzLT5sb2NrLmxvY2ssIHRyYW5jaGVfaWQpOwor CXBnc3MtPmN1cl9tZWRpYW5fdXNhZ2UgPSBBU1NVTUVEX01FRElBTl9JTklUOworCXBnc3MtPm1l YW5fcXVlcnlfbGVuID0gQVNTVU1FRF9MRU5HVEhfSU5JVDsKKwlTcGluTG9ja0luaXQoJnBnc3Mt Pm11dGV4KTsKKwlwZ3NzLT5leHRlbnQgPSAwOworCXBnc3MtPm5fd3JpdGVycyA9IDA7CisJcGdz cy0+Z2NfY291bnQgPSAwOworCXBnc3MtPnN0YXRzLmRlYWxsb2MgPSAwOworCXBnc3MtPnN0YXRz LnN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogVGhlIGhhc2ggdGFi bGUgbXVzdCd2ZSBhbHNvIGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93ICovCisJQXNzZXJ0KHBnc3Nf aGFzaCAhPSBOVUxMKTsKIAogCS8qCi0JICogRG9uZSBpZiBzb21lIG90aGVyIHByb2Nlc3MgYWxy ZWFkeSBjb21wbGV0ZWQgb3VyIGluaXRpYWxpemF0aW9uLgorCSAqIFNldCB1cCBhIHNobWVtIGV4 aXQgaG9vayB0byBkdW1wIHRoZSBzdGF0aXN0aWNzIHRvIGRpc2sgb24gcG9zdG1hc3RlcgorCSAq IChvciBzdGFuZGFsb25lIGJhY2tlbmQpIGV4aXQuCiAJICovCi0JaWYgKGZvdW5kKQotCQlyZXR1 cm47CisJb25fc2htZW1fZXhpdChwZ3NzX3NobWVtX3NodXRkb3duLCAoRGF0dW0pIDApOwogCiAJ LyoKKwkgKiBMb2FkIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGlzdGljcyBmcm9tIGZpbGUuCisJICoK IAkgKiBOb3RlOiB3ZSBkb24ndCBib3RoZXIgd2l0aCBsb2NrcyBoZXJlLCBiZWNhdXNlIHRoZXJl IHNob3VsZCBiZSBubyBvdGhlcgogCSAqIHByb2Nlc3NlcyBydW5uaW5nIHdoZW4gdGhpcyBjb2Rl IGlzIHJlYWNoZWQuCiAJICovCkBAIC0xMzM5LDcgKzEzMzQsNyBAQCBwZ3NzX3N0b3JlKGNvbnN0 IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVyeUlkLAogCWtleS50b3BsZXZlbCA9IChuZXN0aW5nX2xl dmVsID09IDApOwogCiAJLyogTG9va3VwIHRoZSBoYXNoIHRhYmxlIGVudHJ5IHdpdGggc2hhcmVk IGxvY2suICovCi0JTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19TSEFSRUQpOworCUxXTG9j a0FjcXVpcmUoJnBnc3MtPmxvY2subG9jaywgTFdfU0hBUkVEKTsKIAogCWVudHJ5ID0gKHBnc3NF bnRyeSAqKSBoYXNoX3NlYXJjaChwZ3NzX2hhc2gsICZrZXksIEhBU0hfRklORCwgTlVMTCk7CiAK QEAgLTEzNjAsMTEgKzEzNTUsMTEgQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50 NjQgcXVlcnlJZCwKIAkJICovCiAJCWlmIChqc3RhdGUpCiAJCXsKLQkJCUxXTG9ja1JlbGVhc2Uo cGdzcy0+bG9jayk7CisJCQlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOwogCQkJbm9y bV9xdWVyeSA9IGdlbmVyYXRlX25vcm1hbGl6ZWRfcXVlcnkoanN0YXRlLCBxdWVyeSwKIAkJCQkJ CQkJCQkJCSAgIHF1ZXJ5X2xvY2F0aW9uLAogCQkJCQkJCQkJCQkJICAgJnF1ZXJ5X2xlbik7Ci0J CQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX1NIQVJFRCk7CisJCQlMV0xvY2tBY3F1aXJl KCZwZ3NzLT5sb2NrLmxvY2ssIExXX1NIQVJFRCk7CiAJCX0KIAogCQkvKiBBcHBlbmQgbmV3IHF1 ZXJ5IHRleHQgdG8gZmlsZSB3aXRoIG9ubHkgc2hhcmVkIGxvY2sgaGVsZCAqLwpAQCAtMTM3OSw4 ICsxMzc0LDggQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwK IAkJZG9fZ2MgPSBuZWVkX2djX3F0ZXh0cygpOwogCiAJCS8qIE5lZWQgZXhjbHVzaXZlIGxvY2sg dG8gbWFrZSBhIG5ldyBoYXNodGFibGUgZW50cnkgLSBwcm9tb3RlICovCi0JCUxXTG9ja1JlbGVh c2UocGdzcy0+bG9jayk7Ci0JCUxXTG9ja0FjcXVpcmUocGdzcy0+bG9jaywgTFdfRVhDTFVTSVZF KTsKKwkJTFdMb2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2NrKTsKKwkJTFdMb2NrQWNxdWlyZSgm cGdzcy0+bG9jay5sb2NrLCBMV19FWENMVVNJVkUpOwogCiAJCS8qCiAJCSAqIEEgZ2FyYmFnZSBj b2xsZWN0aW9uIG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmVuJ3QgaG9sZGluZyB0aGUK QEAgLTE1MTksNyArMTUxNCw3IEBAIHBnc3Nfc3RvcmUoY29uc3QgY2hhciAqcXVlcnksIGludDY0 IHF1ZXJ5SWQsCiAJfQogCiBkb25lOgotCUxXTG9ja1JlbGVhc2UocGdzcy0+bG9jayk7CisJTFdM b2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2NrKTsKIAogCS8qIFdlIHBvc3Rwb25lIHRoaXMgY2xl YW4tdXAgdW50aWwgd2UncmUgb3V0IG9mIHRoZSBsb2NrICovCiAJaWYgKG5vcm1fcXVlcnkpCkBA IC0xODA4LDcgKzE4MDMsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sCiAJICogd2UgbmVlZCB0byBwYXJ0aXRpb24gdGhlIGhhc2ggdGFibGUg dG8gbGltaXQgdGhlIHRpbWUgc3BlbnQgaG9sZGluZyBhbnkKIAkgKiBvbmUgbG9jay4KIAkgKi8K LQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX1NIQVJFRCk7CisJTFdMb2NrQWNxdWlyZSgm cGdzcy0+bG9jay5sb2NrLCBMV19TSEFSRUQpOwogCiAJaWYgKHNob3d0ZXh0KQogCXsKQEAgLTIw NDYsNyArMjA0MSw3IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJz aW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CiAJfQogCi0JTFdMb2NrUmVsZWFzZShwZ3Nz LT5sb2NrKTsKKwlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOwogCiAJaWYgKHFidWZm ZXIpCiAJCXBmcmVlKHFidWZmZXIpOwpAQCAtMjA4NiwyMCArMjA4MSw2IEBAIHBnX3N0YXRfc3Rh dGVtZW50c19pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBs ZUdldERhdHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSkpOwogfQog Ci0vKgotICogRXN0aW1hdGUgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQuCi0gKi8KLXN0YXRp YyBTaXplCi1wZ3NzX21lbXNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplOwotCi0Jc2l6ZSA9IE1B WEFMSUdOKHNpemVvZihwZ3NzU2hhcmVkU3RhdGUpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg aGFzaF9lc3RpbWF0ZV9zaXplKHBnc3NfbWF4LCBzaXplb2YocGdzc0VudHJ5KSkpOwotCi0JcmV0 dXJuIHNpemU7Ci19Ci0KIC8qCiAgKiBBbGxvY2F0ZSBhIG5ldyBoYXNodGFibGUgZW50cnkuCiAg KiBjYWxsZXIgbXVzdCBob2xkIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHBnc3MtPmxvY2sKQEAgLTI3 MzAsNyArMjcxMSw3IEBAIGVudHJ5X3Jlc2V0KE9pZCB1c2VyaWQsIE9pZCBkYmlkLCBpbnQ2NCBx dWVyeWlkLCBib29sIG1pbm1heF9vbmx5KQogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInBnX3N0YXRfc3RhdGVtZW50 cyBtdXN0IGJlIGxvYWRlZCB2aWEgXCJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNcIiIpKSk7CiAK LQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX0VYQ0xVU0lWRSk7CisJTFdMb2NrQWNxdWly ZSgmcGdzcy0+bG9jay5sb2NrLCBMV19FWENMVVNJVkUpOwogCW51bV9lbnRyaWVzID0gaGFzaF9n ZXRfbnVtX2VudHJpZXMocGdzc19oYXNoKTsKIAogCXN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOwpAQCAtMjgyNCw3ICsyODA1LDcgQEAgZG9uZToKIAlyZWNvcmRfZ2NfcXRleHRz KCk7CiAKIHJlbGVhc2VfbG9jazoKLQlMV0xvY2tSZWxlYXNlKHBnc3MtPmxvY2spOworCUxXTG9j a1JlbGVhc2UoJnBnc3MtPmxvY2subG9jayk7CiAKIAlyZXR1cm4gc3RhdHNfcmVzZXQ7CiB9Ci0t IAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0003-Add-test-module-to-test-after-startup-shme.patch" Content-Disposition: attachment; filename="v20260405_2-0003-Add-test-module-to-test-after-startup-shme.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k312 RnJvbSBhYjc0ZDE0NmZkMzNmODU4ZDdlNjE5NjdkYzAzOGQ0NzZmNWFmOTQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoxMDozMSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDAzLzE1XSBBZGQgdGVzdCBtb2R1bGUgdG8gdGVzdCBhZnRlci1zdGFy dHVwIHNobWVtCiBhbGxvY2F0aW9ucwoKTm9uZSBvZiB0aGUgZXhpc3RpbmcgbW9kdWxlcyBjb3Vs ZCBtYWtlIHVzZSBvZiB0aGUgbGF6eSBzaG1lbQphbGxvY2F0aW9uIGFmdGVyIHBvc3RtYXN0ZXIg c3RhcnR1cDoKCi0gcGdfc3RhdF9zdGF0ZW1lbnRzIG5lZWRzIHRvIGxvYWQgYW5kIGR1bXAgc3Rh dHMgZmlsZSBvbiBzdGFydHVwIGFuZAogIHNodXRkb3duLCB3aGljaCBkb2Vzbid0IHJlYWxseSB3 b3JrIGlmIHRoZSBsaWJyYXJ5IGlzIG5vdCBsb2FkZWQgaW50bwogIHBvc3RtYXN0ZXIKCi0gdGVz dF9haW8gcmVnaXN0ZXJzIGluamVjdGlvbiBwb2ludHMsIHdoaWNoIHJlZmVyZW5jZSB0aGUgbGli cmFyeQogIGl0c2VsZiwgd2hpY2ggY3JlYXRlcyBhIHdlaXJkIGluaXRpYWxpemF0aW9uIGxvb3Ag aWYgeW91IHRyeSB0byBkbwogIHRoYXQgZGlyZWN0bHkgZnJvbSBfUEdfaW5pdCgpIGluIGEgYmFj a2VuZC4gVGhlIGluaXRpYWxpemF0aW9uCiAgcmVhbGx5IG5lZWRzIHRvIGhhcHBlbiBhZnRlciBf UEdfaW5pdCgpCgotIGluamVjdGlvbl9wb2ludHMgd291bGQgYmUgYSBjYW5kaWRhdGUsIGJ1dCBp dCBhbHJlYWR5IGtub3dzIHRvIHVzZQogIERTTSB3aGVuIGl0J3Mgbm90IGxvYWRlZCBmcm9tIHNo YXJlZF9wcmVsb2FkX2xpYnJhcmllcy4KLS0tCiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtl ZmlsZSAgICAgICAgICB8ICAyNCArKysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL21l c29uLmJ1aWxkICAgICAgIHwgIDMzICsrKysrKwogLi4uL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9z aG1lbV9hbGxvYy5wbCAgICAgIHwgIDQ5ICsrKysrKysrKwogLi4uL21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsICAgIHwgICA5ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vdGVzdF9zaG1lbS5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKysrCiAuLi4vbW9k dWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uY29udHJvbCAgICAgfCAgIDMgKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDkgZmlsZXMgY2hh bmdlZCwgMjIyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0u YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3No bWVtLmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCA4NjRiNDA3YWJjZi4uZjFiMDRjOTk5NjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQpAQCAtNDgsNiArNDgsNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3RfcmVzb3du ZXIgXAogCQkgIHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3Nhc2xwcmVwIFwKKwkJICB0ZXN0 X3NobWVtIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKIAkJICB0ZXN0X3Rp ZHN0b3JlIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IGU1YWNhY2Q1MDgzLi5mYzk5NTUyZDlhYiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL21lc29uLmJ1aWxkCkBAIC00OSw2ICs0OSw3IEBAIHN1YmRpcigndGVzdF9yZWdleCcp CiBzdWJkaXIoJ3Rlc3RfcmVzb3duZXInKQogc3ViZGlyKCd0ZXN0X3Jsc19ob29rcycpCiBzdWJk aXIoJ3Rlc3Rfc2FzbHByZXAnKQorc3ViZGlyKCd0ZXN0X3NobWVtJykKIHN1YmRpcigndGVzdF9z aG1fbXEnKQogc3ViZGlyKCd0ZXN0X3NscnUnKQogc3ViZGlyKCd0ZXN0X3RpZHN0b3JlJykKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMjQwN2Y3NDYyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKQEAgLTAsMCArMSwyNCBAQAorIyBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X3NobWVtIC0gdGVz dCBjb2RlIGZvciBzaG1lbSBhbGxvY2F0aW9ucyIKKworTU9EVUxFX2JpZyA9IHRlc3Rfc2htZW0K K09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXRlc3Rfc2htZW0ubworCitFWFRFTlNJT04gPSB0 ZXN0X3NobWVtCitEQVRBID0gdGVzdF9zaG1lbS0tMS4wLnNxbAorCitUQVBfVEVTVFMgPSAxCisK K2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAk KFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNs dWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3Ny Y2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZmI0YmYzMjhiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9zaG1lbV9z b3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X3NobWVtLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9 PSAnd2luZG93cycKKyAgdGVzdF9zaG1lbV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3 aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9zaG1lbScsCisg ICAgJy0tRklMRURFU0MnLCAndGVzdF9zaG1lbSAtIHRlc3QgY29kZSBmb3Igc2htZW0gYWxsb2Nh dGlvbnMnLF0pCitlbmRpZgorCit0ZXN0X3NobWVtID0gc2hhcmVkX21vZHVsZSgndGVzdF9zaG1l bScsCisgIHRlc3Rfc2htZW1fc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAor KQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9zaG1lbQorCit0ZXN0X2luc3RhbGxfZGF0YSAr PSBmaWxlcygKKyAgJ3Rlc3Rfc2htZW0uY29udHJvbCcsCisgICd0ZXN0X3NobWVtLS0xLjAuc3Fs JywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X3NobWVtJywKKyAgJ3NkJzogbWVz b24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGly KCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2xhdGVfc2htZW1f YWxsb2MucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5jMTU0ZjU3NjgyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCkBAIC0wLDAg KzEsNDkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMjIworIyBUZXN0IGFsbG9jYXRpbmcgbWVt b3J5IGFmdGVyIHN0YXJ0dXAsIGkuZS4gd2hlbiB0aGUgbGlicmFyeSBpcyBub3QKKyMgaW4gc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzCisjIyMKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworCisk bm9kZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2htZW07 Iik7CisKKyMgQ2hlY2sgdGhhdCB0aGUgYXR0YWNoIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgb24g YSBuZXcgY29ubmVjdGlvbgorbXkgJGF0dGFjaF9jb3VudDEgPSAkbm9kZS0+c2FmZV9wc3FsKCJw b3N0Z3JlcyIsICJTRUxFQ1QgZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCk7Iik7CitteSAk YXR0YWNoX2NvdW50MiA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNFTEVDVCBnZXRf dGVzdF9zaG1lbV9hdHRhY2hfY291bnQoKTsiKTsKK2NtcF9vaygkYXR0YWNoX2NvdW50MiwgJz4n LCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFjayBpcyBjYWxsZWQgaW4gZWFjaCBiYWNr ZW5kIik7Ciskbm9kZS0+c3RvcDsKKworIyMjCisjIFRlc3QgdGhhdCBsb2FkaW5nIHZpYSBzaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXMgYWxzbyB3b3JrcworIyMjCiskbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9zaG1l bSciKTsKKyRub2RlLT5zdGFydDsKKworIyBXaGVuIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzLCB0aGUgYXR0YWNoIGNhbGxiYWNrIGlzCisjIGNhbGxlZCBvciBub3QsIGRlcGVu ZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgYW4gRVhFQ19CQUNLRU5EIGJ1aWxkLgorbXkgJGV4ZWNf YmFja2VuZCA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNIT1cgZGVidWdfZXhlY19i YWNrZW5kOyIpIGVxICdvbic7CiskYXR0YWNoX2NvdW50MSA9ICRub2RlLT5zYWZlX3BzcWwoInBv c3RncmVzIiwgIlNFTEVDVCBnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQoKTsiKTsKKyRhdHRh Y2hfY291bnQyID0gJG5vZGUtPnNhZmVfcHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIGdldF90ZXN0 X3NobWVtX2F0dGFjaF9jb3VudCgpOyIpOworCitpZiAoJGV4ZWNfYmFja2VuZCkKK3sKKyAgIGNt cF9vaygkYXR0YWNoX2NvdW50MiwgJz4nLCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFj ayBpcyBjYWxsZWQgaW4gZWFjaCBiYWNrZW5kIHdoZW4gbG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXMiKTsKK30KK2Vsc2UKK3sKKyAgIG9rKCRhdHRhY2hfY291bnQxID09IDAgJiYg JGF0dGFjaF9jb3VudDIgPT0gMCwgImF0dGFjaCBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4g bG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKTsKK30KKworJG5vZGUtPnN0b3A7 Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rf c2htZW0tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJk MDFmZDkyNTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVt L3Rlc3Rfc2htZW0tLTEuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3Jp cHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgor XGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2htZW0iIHRvIGxvYWQgdGhpcyBmaWxl LiBccXVpdAorCisKK0NSRUFURSBGVU5DVElPTiBnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQo KQorUkVUVVJOUyBwZ19jYXRhbG9nLmludDQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBM QU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rf c2htZW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjliZDQwMTJiNDM1Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAtMCww ICsxLDEwMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9zaG1lbS5jCisgKgkJ SGVscGVycyB0byB0ZXN0IHNobWVtIGFsbG9jYXRpb24gcm91dGluZXMKKyAqCisgKiBUZXN0IGJh c2ljIG1lbW9yeSBhbGxvY2F0aW9uIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUuIE9uZSBub3RhYmxl IGZlYXR1cmUKKyAqIHRoYXQgaXMgbm90IGV4ZXJjaXNlZCBieSBhbnkgb3RoZXIgbW9kdWxlIGlu IHRoZSByZXBvc2l0b3J5IGlzIHRoZQorICogYWxsb2NhdGluZyAobm9uLURTTSkgc2hhcmVkIG1l bW9yeSBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIw LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKKworCitQR19NT0RVTEVfTUFHSUM7CisKK3R5cGVkZWYgc3RydWN0IFRlc3RT aG1lbURhdGEKK3sKKwlpbnQJCQl2YWx1ZTsKKwlib29sCQlpbml0aWFsaXplZDsKKwlpbnQJCQlh dHRhY2hfY291bnQ7Cit9IFRlc3RTaG1lbURhdGE7CisKK3N0YXRpYyBUZXN0U2htZW1EYXRhICpU ZXN0U2htZW07CisKK3N0YXRpYyBib29sIGF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gZmFsc2U7 CisKK3N0YXRpYyB2b2lkIHRlc3Rfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgdGVzdF9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCB0ZXN0X3NobWVtX2F0 dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgVGVzdFNobWVt Q2FsbGJhY2tzID0geworCS5mbGFncyA9IFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFS VFVQLAorCS5yZXF1ZXN0X2ZuID0gdGVzdF9zaG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gdGVz dF9zaG1lbV9pbml0LAorCS5hdHRhY2hfZm4gPSB0ZXN0X3NobWVtX2F0dGFjaCwKK307CisKK3N0 YXRpYyB2b2lkCit0ZXN0X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCWVsb2coTE9HLCAi dGVzdF9zaG1lbV9yZXF1ZXN0IGNhbGxiYWNrIGNhbGxlZCIpOworCisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gInRlc3Rfc2htZW0gYXJlYSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFRl c3RTaG1lbURhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZUZXN0U2htZW0pOworfQor CitzdGF0aWMgdm9pZAordGVzdF9zaG1lbV9pbml0KHZvaWQgKmFyZykKK3sKKwllbG9nKExPRywg ImluaXQgY2FsbGJhY2sgY2FsbGVkIik7CisJaWYgKFRlc3RTaG1lbS0+aW5pdGlhbGl6ZWQpCisJ CWVsb2coRVJST1IsICJzaG1lbSBhcmVhIGFscmVhZHkgaW5pdGlhbGl6ZWQiKTsKKwlUZXN0U2ht ZW0tPmluaXRpYWxpemVkID0gdHJ1ZTsKKworCWlmIChhdHRhY2hlZF9vcl9pbml0aWFsaXplZCkK KwkJZWxvZyhFUlJPUiwgImF0dGFjaCBvciBpbml0aWFsaXplIGFscmVhZHkgY2FsbGVkIGluIHRo aXMgcHJvY2VzcyIpOworCWF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gdHJ1ZTsKK30KKworc3Rh dGljIHZvaWQKK3Rlc3Rfc2htZW1fYXR0YWNoKHZvaWQgKmFyZykKK3sKKwllbG9nKExPRywgInRl c3Rfc2htZW1fYXR0YWNoIGNhbGxiYWNrIGNhbGxlZCIpOworCWlmICghVGVzdFNobWVtLT5pbml0 aWFsaXplZCkKKwkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90IHlldCBpbml0aWFsaXplZCIp OworCVRlc3RTaG1lbS0+YXR0YWNoX2NvdW50Kys7CisKKwlpZiAoYXR0YWNoZWRfb3JfaW5pdGlh bGl6ZWQpCisJCWVsb2coRVJST1IsICJhdHRhY2ggb3IgaW5pdGlhbGl6ZSBhbHJlYWR5IGNhbGxl ZCBpbiB0aGlzIHByb2Nlc3MiKTsKKwlhdHRhY2hlZF9vcl9pbml0aWFsaXplZCA9IHRydWU7Cit9 CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJZWxvZyhMT0csICJ0ZXN0X3NobWVtIG1vZHVs ZSdzIF9QR19pbml0IGNhbGxlZCIpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJlRlc3RTaG1l bUNhbGxiYWNrcyk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2V0X3Rlc3Rfc2htZW1fYXR0 YWNoX2NvdW50KTsKK0RhdHVtCitnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlpZiAoIWF0dGFjaGVkX29yX2luaXRpYWxpemVkKQorCQllbG9nKEVSUk9S LCAic2htZW0gYXJlYSBub3QgYXR0YWNoZWQgb3IgaW5pdGlhbGl6ZWQgaW4gdGhpcyBwcm9jZXNz Iik7CisJaWYgKCFUZXN0U2htZW0tPmluaXRpYWxpemVkKQorCQllbG9nKEVSUk9SLCAic2htZW0g YXJlYSBub3QgeWV0IGluaXRpYWxpemVkIik7CisJUEdfUkVUVVJOX0lOVDMyKFRlc3RTaG1lbS0+ YXR0YWNoX2NvdW50KTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9z aG1lbS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMmYy NmY0NTM3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90 ZXN0X3NobWVtLmNvbnRyb2wKQEAgLTAsMCArMSwzIEBACitjb21tZW50ID0gJ1Rlc3QgY29kZSBm b3Igc2htZW0gYWxsb2NhdGlvbnMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3Bh dGhuYW1lID0gJyRsaWJkaXIvdGVzdF9zaG1lbScKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggYjg0MTY3NzQxZmIuLjYzYzBiM2E5NDY1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMzE0Niw2ICszMTQ2LDcgQEAgVGVzdERTTVJlZ2lzdHJ5SGFzaEVudHJ5CiBUZXN0RFNNUmVn aXN0cnlTdHJ1Y3QKIFRlc3REZWNvZGluZ0RhdGEKIFRlc3REZWNvZGluZ1R4bkRhdGEKK1Rlc3RT aG1lbURhdGEKIFRlc3RTcGVjCiBUZXN0VmFsdWVUeXBlCiBUZXh0RnJlcQotLSAKMi4zNC4xCgo= --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Disposition: attachment; filename="v20260405_2-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k3i4 RnJvbSAyOTM5MTRmYjQxMTYxYmFjODU1YWZkYjAwNzQzMzRlYWM1Y2JkYWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMTowMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA1LzE1XSBJbnRyb2R1Y2UgcmVnaXN0cnkgb2YgYnVpbHQtaW4gc3Vi c3lzdGVtcwoKVG8gYWRkIGEgbmV3IGJ1aWx0LWluIHN1YnN5c3RlbSwgYWRkIGl0IHRvIHN1YnN5 c3RlbXNsaXN0LmguIFRoYXQKaG9va3MgdXAgaXRzIGNhbGxiYWNrcyBzbyB0aGF0IHRoZXkgZ2V0 IGNhbGxlZCBhdCB0aGUgcmlnaHQgdGltZXMKZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cC4gRm9y IG5vdyB0aGlzIGlzIHVudXNlZCwgYnV0IHdpbGwgcmVwbGFjZQp0aGUgY3VycmVudCBTdWJzeXN0 ZW1TaG1lbVNpemUoKSBhbmQgU3Vic3lzdGVtU2htZW1Jbml0KCkgY2FsbHMgaW4KdGhlIG5leHQg Y29tbWl0cy4KLS0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgICAgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jIHwgIDIgKysKIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jICAgICB8ICA1ICsrKysrCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKwog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgIHwgIDMgKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2lwYy5oICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3N1YnN5c3RlbWxpc3QuaCAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbXMuaCAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjayAgICAgICAgfCAgMSArCiA5 IGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv aW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCmlu ZGV4IGM3MDdjY2ZhNTYzLi40OWQ4OGExYjZkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAu YwpAQCAtMzYzLDYgKzM2Myw4IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAlTZXRQcm9jZXNzaW5nTW9kZShCb290c3RyYXBQcm9j ZXNzaW5nKTsKIAlJZ25vcmVTeXN0ZW1JbmRleGVzID0gdHJ1ZTsKIAorCVJlZ2lzdGVyQnVpbHRp blNobWVtQ2FsbGJhY2tzKCk7CisKIAlJbml0aWFsaXplTWF4QmFja2VuZHMoKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKaW5kZXggMDk3MzAxMGI3ZGMuLmVk MGY0ZjJkMjM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNr ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCkBAIC02 NjQsNiArNjY0LDggQEAgU3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkgKi8KIAlMb2NhbFByb2Nlc3NDb250cm9sRmlsZShmYWxzZSk7CiAKKwlSZWdpc3RlckJ1aWx0 aW5TaG1lbUNhbGxiYWNrcygpOworCiAJLyoKIAkgKiBSZWxvYWQgYW55IGxpYnJhcmllcyB0aGF0 IHdlcmUgcHJlbG9hZGVkIGJ5IHRoZSBwb3N0bWFzdGVyLiAgU2luY2Ugd2UKIAkgKiBleGVjJ2Qg dGhpcyBwcm9jZXNzLCB0aG9zZSBsaWJyYXJpZXMgZGlkbid0IGNvbWUgYWxvbmcgd2l0aCB1czsg YnV0IHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDY5MzQ3NTAxNGZlLi5i MjAxMGJjZTE4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTkyMiw2ICs5 MjIsMTEgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlB cHBseUxhdW5jaGVyUmVnaXN0ZXIoKTsKIAorCS8qCisJICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBt ZW1vcnkgbmVlZHMgb2YgYWxsIGNvcmUgc3Vic3lzdGVtcy4KKwkgKi8KKwlSZWdpc3RlckJ1aWx0 aW5TaG1lbUNhbGxiYWNrcygpOworCiAJLyoKIAkgKiBwcm9jZXNzIGFueSBsaWJyYXJpZXMgdGhh dCBzaG91bGQgYmUgcHJlbG9hZGVkIGF0IHBvc3RtYXN0ZXIgc3RhcnQKIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYwppbmRleCAyNDQyMmE4MGFiMy4uZTRhNmE1MmYxMmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNs dWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCkBAIC0yNTIsNiArMjUzLDI2IEBAIENyZWF0ZVNoYXJl ZE1lbW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAkJc2htZW1fc3RhcnR1cF9ob29rKCk7CiB9CiAK Ky8qCisgKiBFYXJseSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIHN1YnN5c3RlbXMsIGdpdmlu ZyB0aGVtIGEgY2hhbmNlIHRvCisgKiByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5lZWRz IGJlZm9yZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGlzCisgKiBhbGxvY2F0ZWQuCisgKi8K K3ZvaWQKK1JlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJhY2tzKHZvaWQpCit7CisJLyoKKwkgKiBD YWxsIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoLi4uKSBvbiBlYWNoIHN1YnN5c3RlbSBsaXN0ZWQg aW4KKwkgKiBzdWJzeXN0ZW1zbGlzdC5oCisJICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RF TShzdWJzeXN0ZW1fY2FsbGJhY2tzKSBcCisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmKHN1YnN5 c3RlbV9jYWxsYmFja3MpKTsKKworI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIgor CisjdW5kZWYgUEdfU0hNRU1fU1VCU1lTVEVNCit9CisKIC8qCiAgKiBJbml0aWFsaXplIHZhcmlv dXMgc3Vic3lzdGVtcywgc2V0dGluZyB1cCB0aGVpciBkYXRhIHN0cnVjdHVyZXMgaW4KICAqIHNo YXJlZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOTM4NTEyNjllNDMuLjZhOWZmM2FkMjI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00MTM4LDYgKzQxMzgsOSBAQCBQb3N0Z3Jlc1NpbmdsZVVz ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJLyogcmVhZCBjb250cm9sIGZpbGUgKGVy cm9yIGNoZWNraW5nIGFuZCBjb250YWlucyBjb25maWcgKSAqLwogCUxvY2FsUHJvY2Vzc0NvbnRy b2xGaWxlKGZhbHNlKTsKIAorCS8qIFJlZ2lzdGVyIHRoZSBzaGFyZWQgbWVtb3J5IG5lZWRzIG9m IGFsbCBjb3JlIHN1YnN5c3RlbXMuICovCisJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3Mo KTsKKwogCS8qCiAJICogcHJvY2VzcyBhbnkgbGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxv YWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2lwYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAppbmRleCBkYTMyNzg3YWI1 MS4uYjIwNWIwMGU3YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaXBjLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gdm9p ZCBjaGVja19vbl9zaG1lbV9leGl0X2xpc3RzX2FyZV9lbXB0eSh2b2lkKTsKIC8qIGlwY2kuYyAq LwogZXh0ZXJuIFBHRExMSU1QT1JUIHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHNobWVtX3N0YXJ0 dXBfaG9vazsKIAorZXh0ZXJuIHZvaWQgUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3Modm9p ZCk7CiBleHRlcm4gU2l6ZSBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBD cmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpOwogI2lmZGVmIEVYRUNfQkFDS0VO RApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZWQ0M2M5MGJjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApAQCAtMCwwICsxLDIzIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogc3Vic3lzdGVtbGlzdC5oCisgKgorICogTGlzdCBvZiBpbml0aWFsaXphdGlv biBjYWxsYmFja3Mgb2YgYnVpbHQtaW4gc3Vic3lzdGVtcy4gVGhpcyBpcyBrZXB0IGluCisgKiBp dHMgb3duIHNvdXJjZSBmaWxlIGZvciBwb3NzaWJsZSB1c2UgYnkgYXV0b21hdGljIHRvb2xzLgor ICogUEdfU0hNRU1fU1VCU1lTVEVNIGlzIGRlZmluZWQgaW4gdGhlIGNhbGxlcnMgZGVwZW5kaW5n IG9uIGhvdyB0aGUgbGlzdCBpcworICogdXNlZC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogdGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vdCBh biAjaWZuZGVmIFNVQlNZU1RFTUxJU1RfSCBoZXJlICovCisKKy8qCisgKiBOb3RlOiB0aGVyZSBh cmUgc29tZSBpbnRlci1kZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVzZSwgc28gdGhlIG9yZGVyIG9m IHNvbWUKKyAqIG9mIHRoZXNlIG1hdHRlci4KKyAqLworCisvKiBUT0RPOiBlbXB0eSBmb3Igbm93 ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbXMuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4zOGI3MzViZWM2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3Vic3lzdGVtcy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHN1YnN5c3RlbXMuaAorICoJICBQcm92aWRlIGV4dGVybiBkZWNsYXJhdGlvbnMgZm9y IGFsbCB0aGUgYnVpbHQtaW4gc3Vic3lzdGVtIGNhbGxiYWNrcworICoKKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0 ZW1zLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBTVUJTWVNURU1TX0gK KyNkZWZpbmUgU1VCU1lTVEVNU19ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisKKy8q CisgKiBFeHRlcm4gZGVjbGFyYXRpb25zIG9mIGFsbCB0aGUgYnVpbHQtaW4gc3Vic3lzdGVtIGNh bGxiYWNrcworICoKKyAqIFRoZSBhY3R1YWwgbGlzdCBpcyBpbiBzdWJzeXN0ZW1saXN0LmgsIHNv IHRoYXQgdGhlIHNhbWUgbGlzdCBjYW4gYmUgdXNlZAorICogZm9yIG90aGVyIHB1cnBvc2VzLgor ICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RFTShjYWxsYmFja3MpIFwKKwlleHRlcm4gY29u c3QgU2htZW1DYWxsYmFja3MgY2FsbGJhY2tzOworI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVt bGlzdC5oIgorI3VuZGVmIFBHX1NITUVNX1NVQlNZU1RFTQorCisjZW5kaWYJCQkJCQkJLyogU1VC U1lTVEVNU19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVj ayBiL3NyYy90b29scy9wZ2luY2x1ZGUvaGVhZGVyc2NoZWNrCmluZGV4IDE0YzQ2NmNjMjM3Li4y NGY3NDE2MTg1ZSAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sK KysrIGIvc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sKQEAgLTEzMSw2ICsxMzEsNyBA QCBkbwogCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcHJvY3R5cGVsaXN0Lmgg JiYgY29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9yZWdleC9yZWdlcnJzLmggJiYg Y29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCAm JiBjb250aW51ZQorCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlz dC5oICYmIGNvbnRpbnVlCiAJdGVzdCAiJGYiID0gc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0 LmggJiYgY29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv Y19rd2xpc3QuaCAmJiBjb250aW51ZQogCXRlc3QgIiRmIiA9IHNyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9lY3BnX2t3bGlzdC5oICYmIGNvbnRpbnVlCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0002-Introduce-a-new-mechanism-for-registering-.patch" Content-Disposition: attachment; filename="v20260405_2-0002-Introduce-a-new-mechanism-for-registering-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k2u1 RnJvbSA3MGQxM2NjYzY5NDJkNWY5NDA4MmI0YjU4MWVkNzQxOGE4MDliYTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMDowMTozOSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDAyLzE1XSBJbnRyb2R1Y2UgYSBuZXcgbWVjaGFuaXNtIGZvciByZWdp c3RlcmluZwogc2hhcmVkIG1lbW9yeSBhcmVhcwoKVGhpcyBtZXJnZXMgdGhlIHNlcGFyYXRlIFtT dWJzeXN0ZW1dU2htZW1TaXplKCkgYW5kCltTdWJzeXN0ZW1dU2htZW1Jbml0KCkgcGhhc2VzIGF0 IHBvc3RtYXN0ZXIgc3RhcnR1cC4gRWFjaCBzdWJzeXN0ZW0gaXMKbm93IGNhbGxlZCBpbnRvIGp1 c3Qgb25jZSwgYmVmb3JlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgaGFzIGJlZW4KYWxsb2Nh dGVkLCB0byByZWdpc3RlciBvciAicmVxdWVzdCIgdGhlIHN1YnN5c3RlbSdzIHNoYXJlZCBtZW1v cnkKbmVlZHMuIFRoaXMgaXMgbW9yZSBlcmdvbm9taWMsIGFzIHlvdSBvbmx5IG5lZWQgdG8gY2Fs Y3VsYXRlIHRoZSBzaXplCm9uY2UuCgpUaGlzIHJlcGxhY2VzIFNobWVtSW5pdFN0cnVjdCgpIGFu ZCBTaG1lbUluaXRIYXNoKCksIHdoaWNoIGJlY29tZSBqdXN0CmJhY2t3YXJkcy1jb21wYXRpYmls aXR5IHdyYXBwZXJzIGFyb3VuZCB0aGUgbmV3IGZ1bmN0aW9ucy4gSW4gZnV0dXJlCmNvbW1pdHMs IEkgcGxhbiB0byByZXBsYWNlIGFsbCBTaG1lbUluaXRTdHJ1Y3QoKSBhbmQgU2htZW1Jbml0SGFz aCgpCmNhbGxzIHdpdGggdGhlIG5ldyBmdW5jdGlvbnMsIGFsdGhvdWdoIHdlJ2xsIHN0aWxsIG5l ZWQgdG8ga2VlcCB0aGVtCmFyb3VuZCBmb3IgZXh0ZW5zaW9ucy4KClJldmlld2VkLWJ5OiBBc2h1 dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFpz b2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+ClJldmlld2VkLWJ5OiBSb2Jl cnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1c3Rh ZnNzb24gPGRhbmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01MlVpSjN6NHZLZDNBSjcy WDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdz LnNnbWwgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAg ICAgICAgICB8IDE2MiArKystLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyB8ICAg NSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgfCAgMTkgKy0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICB8ICAzMCArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgIHwgODMyICsrKysrKysrKysrKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jICAgIHwgIDg2ICsrLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgIHwgICAzICsKIHNyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaG1lbS5oICAgICAgICAgICAgIHwgMTgzICsrKysrLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9zaG1lbV9pbnRlcm5hbC5oICAgIHwgIDUyICsrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCAgICAgICAgfCAgIDkgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDExOTAgaW5zZXJ0aW9u cygrKSwgMjA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2htZW1faW50ZXJuYWwuaAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA5ZWUxYTJi ZmM2YS4uMmViZWM2OTI4ZDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNTQsOCArNDI1 NCw4IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hh Y3RzIHBweAogICA8cGFyYT4KICAgIEFub255bW91cyBhbGxvY2F0aW9ucyBhcmUgYWxsb2NhdGlv bnMgdGhhdCBoYXZlIGJlZW4gbWFkZQogICAgd2l0aCA8bGl0ZXJhbD5TaG1lbUFsbG9jKCk8L2xp dGVyYWw+IGRpcmVjdGx5LCByYXRoZXIgdGhhbiB2aWEKLSAgIDxsaXRlcmFsPlNobWVtSW5pdFN0 cnVjdCgpPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+U2htZW1Jbml0SGFzaCgpPC9saXRlcmFs Pi4KKyAgIDxsaXRlcmFsPlNobWVtUmVxdWVzdFN0cnVjdCgpPC9saXRlcmFsPiBvcgorICAgPGxp dGVyYWw+U2htZW1SZXF1ZXN0SGFzaCgpPC9saXRlcmFsPi4KICAgPC9wYXJhPgogCiAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1 bmMuc2dtbAppbmRleCA3MGU4MTViOGEyYy4uYWVkM2YyZjAwNzEgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC94ZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNjI4 LDcxICszNjI4LDEzMiBAQCBDUkVBVEUgRlVOQ1RJT04gbWFrZV9hcnJheShhbnllbGVtZW50KSBS RVRVUk5TIGFueWFycmF5CiAgICAgICBBZGQtaW5zIGNhbiByZXNlcnZlIHNoYXJlZCBtZW1vcnkg b24gc2VydmVyIHN0YXJ0dXAuICBUbyBkbyBzbywgdGhlCiAgICAgICBhZGQtaW4ncyBzaGFyZWQg bGlicmFyeSBtdXN0IGJlIHByZWxvYWRlZCBieSBzcGVjaWZ5aW5nIGl0IGluCiAgICAgICA8eHJl ZiBsaW5rZW5kPSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVzIi8+PGluZGV4dGVybT48cHJp bWFyeT5zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM8L3ByaW1hcnk+PC9pbmRleHRlcm0+LgotICAg ICAgVGhlIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBhbHNvIHJlZ2lzdGVyIGEKLSAgICAgIDxsaXRl cmFsPnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gaW4gaXRzCi0gICAgICA8ZnVuY3Rpb24+ X1BHX2luaXQ8L2Z1bmN0aW9uPiBmdW5jdGlvbi4gIFRoaXMKLSAgICAgIDxsaXRlcmFsPnNobWVt X3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gY2FuIHJlc2VydmUgc2hhcmVkIG1lbW9yeSBieQotICAg ICAgY2FsbGluZzoKKyAgICAgIFRoZSBzaGFyZWQgbGlicmFyeSBzaG91bGQgcmVnaXN0ZXIgY2Fs bGJhY2tzIGluCisgICAgICBpdHMgPGZ1bmN0aW9uPl9QR19pbml0PC9mdW5jdGlvbj4gZnVuY3Rp b24sIHdoaWNoIHRoZW4gZ2V0IGNhbGxlZCBhdCB0aGUKKyAgICAgIHJpZ2h0IHN0YWdlcyBvZiB0 aGUgc3lzdGVtIHN0YXJ0dXAgdG8gaW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG1lbW9yeS4KKyAgICAg IEhlcmUgaXMgYW4gZXhhbXBsZToKIDxwcm9ncmFtbGlzdGluZz4KLXZvaWQgUmVxdWVzdEFkZGlu U2htZW1TcGFjZShTaXplIHNpemUpCi08L3Byb2dyYW1saXN0aW5nPgotICAgICAgRWFjaCBiYWNr ZW5kIHNob3VsZCBvYnRhaW4gYSBwb2ludGVyIHRvIHRoZSByZXNlcnZlZCBzaGFyZWQgbWVtb3J5 IGJ5Ci0gICAgICBjYWxsaW5nOgotPHByb2dyYW1saXN0aW5nPgotdm9pZCAqU2htZW1Jbml0U3Ry dWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCi08L3Byb2dy YW1saXN0aW5nPgotICAgICAgSWYgdGhpcyBmdW5jdGlvbiBzZXRzIDxsaXRlcmFsPmZvdW5kUHRy PC9saXRlcmFsPiB0bwotICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCB0aGUgY2FsbGVy IHNob3VsZCBwcm9jZWVkIHRvIGluaXRpYWxpemUgdGhlCi0gICAgICBjb250ZW50cyBvZiB0aGUg cmVzZXJ2ZWQgc2hhcmVkIG1lbW9yeS4gIElmIDxsaXRlcmFsPmZvdW5kUHRyPC9saXRlcmFsPgot ICAgICAgaXMgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgc2hhcmVkIG1lbW9y eSB3YXMgYWxyZWFkeQotICAgICAgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciBiYWNrZW5kLCBhbmQg dGhlIGNhbGxlciBuZWVkIG5vdCBpbml0aWFsaXplCi0gICAgICBmdXJ0aGVyLgotICAgICA8L3Bh cmE+Cit0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7CisgICAgTFdMb2NrICAgICAgbG9jazsg ICAgLyogcHJvdGVjdHMgdGhlIGZpZWxkcyBiZWxvdyAqLwogCi0gICAgIDxwYXJhPgotICAgICAg VG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLCBlYWNoIGJhY2tlbmQgc2hvdWxkIHVzZSB0aGUgTFdM b2NrCi0gICAgICA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2NrPC9mdW5jdGlvbj4gd2hlbiBp bml0aWFsaXppbmcgaXRzIGFsbG9jYXRpb24KLSAgICAgIG9mIHNoYXJlZCBtZW1vcnksIGFzIHNo b3duIGhlcmU6Ci08cHJvZ3JhbWxpc3Rpbmc+Ci1zdGF0aWMgbXlzdHJ1Y3QgKnB0ciA9IE5VTEw7 Ci1ib29sICAgICAgICBmb3VuZDsKKyAgICAuLi4gc2hhcmVkIG1lbW9yeSBjb250ZW50cyAuLi4K K30gTXlTaG1lbURhdGE7CisKK3N0YXRpYyBNeVNobWVtRGF0YSAqTXlTaG1lbTsgICAgLyogcG9p bnRlciB0byB0aGUgc3RydWN0IGluIHNoYXJlZCBtZW1vcnkgKi8KKworc3RhdGljIHZvaWQgbXlf c2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgbXlfc2htZW1faW5pdCh2b2lk ICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBteV9zaG1lbV9jYWxsYmFja3MgPSB7Cisg ICAgLnJlcXVlc3RfZm4gPSBteV9zaG1lbV9yZXF1ZXN0LAorICAgIC5pbml0X2ZuID0gbXlfc2ht ZW1faW5pdCwKK307CisKKy8qCisgKiBNb2R1bGUgbG9hZCBjYWxsYmFjaworICovCit2b2lkCitf UEdfaW5pdCh2b2lkKQoreworICAgIC8qCisgICAgICogSW4gb3JkZXIgdG8gY3JlYXRlIG91ciBz aGFyZWQgbWVtb3J5IGFyZWEsIHdlIGhhdmUgdG8gYmUgbG9hZGVkIHZpYQorICAgICAqIHNoYXJl ZF9wcmVsb2FkX2xpYnJhcmllcy4KKyAgICAgKi8KKyAgICBpZiAoIXByb2Nlc3Nfc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBS ZWdpc3RlciBvdXIgc2hhcmVkIG1lbW9yeSBuZWVkcyAqLworICAgIFJlZ2lzdGVyU2htZW1DYWxs YmFja3MoJmFtcDtteV9zaG1lbV9jYWxsYmFja3MpOworfQorCisvKiBjYWxsYmFjayB0byByZXF1 ZXN0ICAqLworc3RhdGljIHZvaWQKK215X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworICAg IC8qIEEgcGVyc2lzdGVudCBoYW5kbGUgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSBpbiB0aGlz IGJhY2tlbmQgKi8KKyAgICBzdGF0aWMgU2htZW1TdHJ1Y3REZXNjIE15U2htZW1EZXNjOworCisg ICAgU2htZW1SZXF1ZXN0U3RydWN0KCZhbXA7TXlTaG1lbURlc2MsCisgICAgICAgICAgICAgICAg ICAgICAgIC5uYW1lID0gIk15IHNobWVtIGFyZWEiLAorICAgICAgICAgICAgICAgICAgICAgICAu c2l6ZSA9IHNpemVvZihNeVNobWVtRGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgIC5wdHIg PSAodm9pZCAqKikgJmFtcDtNeVNobWVtLAorICAgICAgICApOworfQogCi1MV0xvY2tBY3F1aXJl KEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZFKTsKLXB0ciA9IFNobWVtSW5pdFN0cnVj dCgibXkgc3RydWN0IG5hbWUiLCBzaXplLCAmYW1wO2ZvdW5kKTsKLWlmICghZm91bmQpCisvKiBj YWxsYmFjayB0byBpbml0aWFsaXplIHRoZSBjb250ZW50cyBvZiB0aGUgTXlTaG1lbSBhcmVhIGF0 IHN0YXJ0dXAgKi8KK3N0YXRpYyB2b2lkCitteV9zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKLSAg ICAuLi4gaW5pdGlhbGl6ZSBjb250ZW50cyBvZiBzaGFyZWQgbWVtb3J5IC4uLgotICAgIHB0ci0+ bG9ja3MgPSBHZXROYW1lZExXTG9ja1RyYW5jaGUoIm15IHRyYW5jaGUgbmFtZSIpOworICAgIGlu dCAgICAgICAgIHRyYW5jaGVfaWQ7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBsb2NrICovCisg ICAgdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgibXkgdHJhbmNoZSBuYW1lIik7Cisg ICAgTFdMb2NrSW5pdGlhbGl6ZSgmYW1wO015U2htZW0tPmxvY2ssIHRyYW5jaGVfaWQpOworCisg ICAgLi4uIGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgTXlTaG1lbSBmaWVsZHMgLi4uCiB9Ci1MV0xv Y2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CisKIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAg ICA8bGl0ZXJhbD5zaG1lbV9zdGFydHVwX2hvb2s8L2xpdGVyYWw+IHByb3ZpZGVzIGEgY29udmVu aWVudCBwbGFjZSBmb3IgdGhlCi0gICAgICBpbml0aWFsaXphdGlvbiBjb2RlLCBidXQgaXQgaXMg bm90IHN0cmljdGx5IHJlcXVpcmVkIHRoYXQgYWxsIHN1Y2ggY29kZQotICAgICAgYmUgcGxhY2Vk IGluIHRoaXMgaG9vay4gIE9uIFdpbmRvd3MgKGFuZCBhbnl3aGVyZSBlbHNlIHdoZXJlCi0gICAg ICA8bGl0ZXJhbD5FWEVDX0JBQ0tFTkQ8L2xpdGVyYWw+IGlzIGRlZmluZWQpLCBlYWNoIGJhY2tl bmQgZXhlY3V0ZXMgdGhlCi0gICAgICByZWdpc3RlcmVkIDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBf aG9vazwvbGl0ZXJhbD4gc2hvcnRseSBhZnRlciBpdAotICAgICAgYXR0YWNoZXMgdG8gc2hhcmVk IG1lbW9yeSwgc28gYWRkLWlucyBzaG91bGQgc3RpbGwgYWNxdWlyZQotICAgICAgPGZ1bmN0aW9u PkFkZGluU2htZW1Jbml0TG9jazwvZnVuY3Rpb24+IHdpdGhpbiB0aGlzIGhvb2ssIGFzIHNob3du IGluIHRoZQotICAgICAgZXhhbXBsZSBhYm92ZS4gIE9uIG90aGVyIHBsYXRmb3Jtcywgb25seSB0 aGUgcG9zdG1hc3RlciBwcm9jZXNzIGV4ZWN1dGVzCi0gICAgICB0aGUgPGxpdGVyYWw+c2htZW1f c3RhcnR1cF9ob29rPC9saXRlcmFsPiwgYW5kIGVhY2ggYmFja2VuZCBhdXRvbWF0aWNhbGx5Ci0g ICAgICBpbmhlcml0cyB0aGUgcG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KKyAgICAgIFRoZSA8 ZnVuY3Rpb24+cmVxdWVzdF9mbjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCBkdXJpbmcg c3lzdGVtCisgICAgICBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4g YWxsb2NhdGVkLiBJdCBzaG91bGQgY2FsbAorICAgICAgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0 cnVjdCgpPC9mdW5jdGlvbj4gdG8gcmVnaXN0ZXIgdGhlIGFkZC1pbidzCisgICAgICBzaGFyZWQg bWVtb3J5IG5lZWRzLiBOb3RlIHRoYXQgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVjdCgpPC9m dW5jdGlvbj4KKyAgICAgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgYWxsb2NhdGUgb3IgaW5pdGlhbGl6 ZSB0aGUgbWVtb3J5LCBpdCBtZXJlbHkKKyAgICAgIHJlZ2lzdGVycyB0aGUgc3BhY2UgdG8gYmUg YWxsb2NhdGVkIGxhdGVyIGluIHRoZSBzdGFydHVwIHNlcXVlbmNlLiAgV2hlbgorICAgICAgdGhl IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIGl0IGlzIGluaXRpYWxpemVkIHRvIHplcm8uICBGb3IgYW55 IG1vcmUKKyAgICAgIGNvbXBsZXggaW5pdGlhbGl6YXRpb24sIHNldCB0aGUgPGZ1bmN0aW9uPmlu aXRfZm4oKTwvZnVuY3Rpb24+IGNhbGxiYWNrLAorICAgICAgd2hpY2ggd2lsbCBiZSBjYWxsZWQg YWZ0ZXIgdGhlIG1lbW9yeSBoYXMgYmVlbiBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkCisgICAg ICB0byB6ZXJvLCBidXQgYmVmb3JlIGFueSBvdGhlciBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcsIGFu ZCB0aHVzIG5vIGxvY2tpbmcKKyAgICAgIGlzIHJlcXVpcmVkLgogICAgICA8L3BhcmE+Ci0KICAg ICAgPHBhcmE+Ci0gICAgICBBbiBleGFtcGxlIG9mIGEgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9o b29rPC9saXRlcmFsPiBhbmQKLSAgICAgIDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBfaG9vazwvbGl0 ZXJhbD4gY2FuIGJlIGZvdW5kIGluCisgICAgICBPbiBXaW5kb3dzLCB0aGUgPGZ1bmN0aW9uPmF0 dGFjaF9mbjwvZnVuY3Rpb24+IGNhbGxiYWNrLCBpZiBhbnksIGlzCisgICAgICBhZGRpdGlvbmFs bHkgY2FsbGVkIGF0IGV2ZXJ5IGJhY2tlbmQgc3RhcnR1cC4gIEl0IGNhbiBiZSB1c2VkIHRvCisg ICAgICBpbml0aWFsaXplIGFkZGl0aW9uYWwgcGVyLWJhY2tlbmQgc3RhdGUgcmVsYXRlZCB0byB0 aGUgc2hhcmVkIG1lbW9yeQorICAgICAgYXJlYSB0aGF0IGlzIGluaGVyaXRlZCB2aWEgPGZ1bmN0 aW9uPmZvcmsoKTwvZnVuY3Rpb24+IG9uIG90aGVyIHN5c3RlbXMuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBBbiBleGFtcGxlIG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSBj YW4gYmUgZm91bmQgaW4KICAgICAgIDxmaWxlbmFtZT5jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYzwvZmlsZW5hbWU+IGluCiAgICAgICB0aGUgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzb3VyY2UgdHJlZS4KICAgICAgPC9wYXJhPgog ICAgIDwvc2VjdDM+CiAKICAgICA8c2VjdDMgaWQ9InhmdW5jLXNoYXJlZC1hZGRpbi1hZnRlci1z dGFydHVwIj4KLSAgICAgPHRpdGxlPlJlcXVlc3RpbmcgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFy dHVwPC90aXRsZT4KKyAgICAgPHRpdGxlPlJlcXVlc3RpbmcgU2hhcmVkIE1lbW9yeSBBZnRlciBT dGFydHVwIHdpdGggPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVjdDwvZnVuY3Rpb24+PC90aXRs ZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0 KCk8L2Z1bmN0aW9uPiBjYW4gYWxzbyBiZSBjYWxsZWQgYWZ0ZXIKKyAgICAgIHN5c3RlbSBzdGFy dHVwLCB3aGljaCBpcyB1c2VmdWwgdG8gYWxsb3cgc21hbGwgYWxsb2NhdGlvbnMgaW4gYWRkLWlu CisgICAgICBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBpbgorICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLXNoYXJlZC1wcmVsb2FkLWxpYnJhcmllcyIvPjxpbmRleHRlcm0+PHByaW1h cnk+c2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPi4KKyAgICAg IEhvd2V2ZXIsIGFmdGVyIHN0YXJ0dXAgdGhlIGFsbG9jYXRpb24gY2FuIGZhaWwgaWYgdGhlcmUg aXMgbm90IGVub3VnaAorICAgICAgc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuIFRoZSBzeXN0ZW0g cmVzZXJ2ZXMgc29tZSBtZW1vcnkgZm9yIGFsbG9jYXRpb25zCisgICAgICBhZnRlciBzdGFydHVw LCBidXQgdGhhdCByZXNlcnZhdGlvbiBpcyBzbWFsbC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIEJ5IGRlZmF1bHQsIDxmdW5jdGlvbj5SZWdpc3RlclNobWVtQ2FsbGJhY2tzKCk8 L2Z1bmN0aW9uPiBmYWlscyB3aXRoIGFuCisgICAgICBlcnJvciBpZiBjYWxsZWQgYWZ0ZXIgc3lz dGVtIHN0YXJ0dXAuIFRvIHVzZSBpdCBhZnRlciBzdGFydHVwLCB5b3UgbXVzdAorICAgICAgc2V0 IHRoZSA8bGl0ZXJhbD5TSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUDwvbGl0ZXJh bD4gZmxhZyBpbgorICAgICAgdGhlIGFyZ3VtZW50IDxzdHJ1Y3RuYW1lPlNobWVtQ2FsbGJhY2tz PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3QgdG8KKyAgICAgIGFja25vd2xlZGdlIHRoZSByaXNrLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiA8ZnVuY3Rpb24+UmVnaXN0ZXJTaG1l bUNhbGxiYWNrcygpPC9mdW5jdGlvbj4gaXMgY2FsbGVkIGFmdGVyCisgICAgICBzdGFydHVwLCBp dCB3aWxsIGltbWVkaWF0ZWx5IGNhbGwgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrcywgZGVwZW5k aW5nCisgICAgICBvbiB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzIHdlcmUgYWxy ZWFkeSBpbml0aWFsaXplZCBieQorICAgICAgYW5vdGhlciBiYWNrZW5kLiBUaGUgY2FsbGJhY2tz IHdpbGwgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gaW50ZXJuYWwKKyAgICAgIGxvY2ssIHdo aWNoIHByZXZlbnRzIGNvbmN1cnJlbnQgdHdvIGJhY2tlbmRzIGZyb20gaW5pdGlhbGl6YXRpbmcg dGhlCisgICAgICBtZW1vcnkgYXJlYSBjb25jdXJyZW50bHkuCisgICAgIDwvcGFyYT4KKyAgICA8 L3NlY3QzPgorCisgICAgPHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tZHluYW1pYyI+Cisg ICAgIDx0aXRsZT5BbGxvY2F0aW5nIER5bmFtaWMgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVw PC90aXRsZT4KIAogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGlzIGFub3RoZXIsIG1vcmUgZmxl eGlibGUgbWV0aG9kIG9mIHJlc2VydmluZyBzaGFyZWQgbWVtb3J5IHRoYXQKLSAgICAgIGNhbiBi ZSBkb25lIGFmdGVyIHNlcnZlciBzdGFydHVwIGFuZCBvdXRzaWRlIGEKLSAgICAgIDxsaXRlcmFs PnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4uICBUbyBkbyBzbywgZWFjaCBiYWNrZW5kIHRo YXQgd2lsbAorICAgICAgY2FuIGJlIGRvbmUgYWZ0ZXIgc2VydmVyIHN0YXJ0dXAuICBUbyBkbyBz bywgZWFjaCBiYWNrZW5kIHRoYXQgd2lsbAogICAgICAgdXNlIHRoZSBzaGFyZWQgbWVtb3J5IHNo b3VsZCBvYnRhaW4gYSBwb2ludGVyIHRvIGl0IGJ5IGNhbGxpbmc6CiA8cHJvZ3JhbWxpc3Rpbmc+ CiB2b2lkICpHZXROYW1lZERTTVNlZ21lbnQoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUs CkBAIC0zNzExLDEwICszNzcyLDcgQEAgdm9pZCAqR2V0TmFtZWREU01TZWdtZW50KGNvbnN0IGNo YXIgKm5hbWUsIHNpemVfdCBzaXplLAogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAg ICBVbmxpa2Ugc2hhcmVkIG1lbW9yeSByZXNlcnZlZCBhdCBzZXJ2ZXIgc3RhcnR1cCwgdGhlcmUg aXMgbm8gbmVlZCB0bwotICAgICAgYWNxdWlyZSA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2Nr PC9mdW5jdGlvbj4gb3Igb3RoZXJ3aXNlIHRha2UgYWN0aW9uCi0gICAgICB0byBhdm9pZCByYWNl IGNvbmRpdGlvbnMgd2hlbiByZXNlcnZpbmcgc2hhcmVkIG1lbW9yeSB3aXRoCi0gICAgICA8ZnVu Y3Rpb24+R2V0TmFtZWREU01TZWdtZW50PC9mdW5jdGlvbj4uICBUaGlzIGZ1bmN0aW9uIGVuc3Vy ZXMgdGhhdCBvbmx5CisgICAgICA8ZnVuY3Rpb24+R2V0TmFtZWREU01TZWdtZW50PC9mdW5jdGlv bj4gZW5zdXJlcyB0aGF0IG9ubHkKICAgICAgIG9uZSBiYWNrZW5kIGFsbG9jYXRlcyBhbmQgaW5p dGlhbGl6ZXMgdGhlIHNlZ21lbnQgYW5kIHRoYXQgYWxsIG90aGVyCiAgICAgICBiYWNrZW5kcyBy ZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgZnVsbHkgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZAog ICAgICAgc2VnbWVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3Ry YXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBjNTJjMGE2MDIz ZC4uYzcwN2NjZmE1NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3Ry YXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKQEAgLTM5LDYgKzM5 LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzczLDYgKzM3NCw3IEBAIEJvb3Rz dHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAog CUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAKKwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tz KCk7CiAJQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwppbmRleCA0MzRlMDY0MzAyMi4uMDk3MzAxMGI3 ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKQEAgLTQ5LDcgKzQ5 LDkgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pb193b3JrZXIuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidGNvcC9iYWNrZW5kX3N0YXJ0dXAu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC02NzIsNyArNjc0LDEwIEBAIFN1 YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBSZXN0b3JlIGJh c2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8KIAlpZiAoVXNlZFNobWVtU2VnQWRkciAhPSBO VUxMKQorCXsKIAkJSW5pdFNobWVtQWxsb2NhdG9yKFVzZWRTaG1lbVNlZ0FkZHIpOworCQlTaG1l bUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisJfQogCiAJLyoKIAkgKiBSdW4gdGhlIGFwcHJvcHJp YXRlIE1haW4gZnVuY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggZWI0 ZjNlYjcyZDQuLjY5MzQ3NTAxNGZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpA QCAtMTE1LDYgKzExNSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVw LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1l LmgiCkBAIC05NTEsNyArOTUyLDE0IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsKIAogCS8qCi0JICogR2l2ZSBwcmVs b2FkZWQgbGlicmFyaWVzIGEgY2hhbmNlIHRvIHJlcXVlc3QgYWRkaXRpb25hbCBzaGFyZWQgbWVt b3J5LgorCSAqIEFzayBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nIHByZWxvYWRlZCBsaWJyYXJp ZXMsIHRvIHJlZ2lzdGVyIHRoZWlyCisJICogc2hhcmVkIG1lbW9yeSBuZWVkcy4KKwkgKi8KKwlT aG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKKwkvKgorCSAqIEFsc28gY2FsbCBhbnkgbGVn YWN5IHNobWVtIHJlcXVlc3QgaG9va3MgdGhhdCBtaWdodCdiZSBiZWVuIGluc3RhbGxlZAorCSAq IGJ5IHByZWxvYWRlZCBsaWJyYXJpZXMuCiAJICovCiAJcHJvY2Vzc19zaG1lbV9yZXF1ZXN0cygp OwogCkBAIC0zMjMyLDcgKzMyNDAsMTQgQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQog CQkvKiByZS1yZWFkIGNvbnRyb2wgZmlsZSBpbnRvIGxvY2FsIG1lbW9yeSAqLwogCQlMb2NhbFBy b2Nlc3NDb250cm9sRmlsZSh0cnVlKTsKIAotCQkvKiByZS1jcmVhdGUgc2hhcmVkIG1lbW9yeSBh bmQgc2VtYXBob3JlcyAqLworCQkvKgorCQkgKiBSZS1pbml0aWFsaXplIHNoYXJlZCBtZW1vcnkg YW5kIHNlbWFwaG9yZXMuICBOb3RlOiBXZSBkb24ndCBjYWxsCisJCSAqIFJlZ2lzdGVyQnVpbHRp blNobWVtQ2FsbGJhY2tzKCksIHdlIGtlZXAgdGhlIG9sZCByZWdpc3RyYXRpb25zLiAgSW4KKwkJ ICogb3JkZXIgdG8gcmUtcmVnaXN0ZXIgc3RydWN0cyBpbiBleHRlbnNpb25zLCB3ZSdkIG5lZWQg dG8gcmVsb2FkCisJCSAqIHNoYXJlZCBwcmVsb2FkIGxpYnJhcmllcywgYW5kIHdlIGRvbid0IHdh bnQgdG8gZG8gdGhhdC4KKwkJICovCisJCVJlc2V0U2htZW1BbGxvY2F0b3IoKTsKKwkJU2htZW1D YWxsUmVxdWVzdENhbGxiYWNrcygpOwogCQlDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVz KCk7CiAKIAkJVXBkYXRlUE1TdGF0ZShQTV9TVEFSVFVQKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpp bmRleCA3YWFiNWRhMzM4Ni4uMjQ0MjJhODBhYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAg LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFk dC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgpAQCAtMTAwLDggKzEwMSw5IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCSAq IGR1cmluZyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gcGhhc2UuCiAJICovCiAJc2l6ZSA9IDEwMDAw MDsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXplKFNITUVNX0lOREVY X1NJWkUsCi0JCQkJCQkJCQkJCSBzaXplb2YoU2htZW1JbmRleEVudCkpKTsKKwlzaXplID0gYWRk X3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkpOworCisJLyogbGVnYWN5IHN1YnN5 c3RlbXMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgZHNtX2VzdGltYXRlX3NpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIERTTVJlZ2lzdHJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBCdWZmZXJNYW5hZ2VyU2htZW1TaXplKCkpOwpAQCAtMTc2LDYgKzE3OCwx MyBAQCBBdHRhY2hTaGFyZWRNZW1vcnlTdHJ1Y3RzKHZvaWQpCiAJICovCiAJSW5pdGlhbGl6ZUZh c3RQYXRoTG9ja3MoKTsKIAorCS8qCisJICogQXR0YWNoIHRvIExXTG9ja3MgZmlyc3QuIFRoZXkg YXJlIG5lZWRlZCBieSBtb3N0IG90aGVyIHN1YnN5c3RlbXMuCisJICovCisJTFdMb2NrU2htZW1J bml0KCk7CisKKwkvKiBFc3RhYmxpc2ggcG9pbnRlcnMgdG8gYWxsIHNoYXJlZCBtZW1vcnkgYXJl YXMgaW4gdGhpcyBiYWNrZW5kICovCisJU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKTsKIAlDcmVhdGVP ckF0dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyoKQEAgLTIyMCw3ICsyMjksMTcgQEAgQ3JlYXRl U2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcyh2b2lkKQogCSAqLwogCUluaXRTaG1lbUFsbG9jYXRv cihzZWdoZHIpOwogCi0JLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCisJLyoKKwkgKiBJbml0 aWFsaXplIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRoZSBzaG1lbSBpbml0IGZ1bmN0 aW9uIHVzZQorCSAqIExXTG9ja3MuICAoTm90aGluZyBlbHNlIGNhbiBiZSBydW5uaW5nIGR1cmlu ZyBzdGFydHVwLCBzbyB0aGV5IGRvbid0CisJICogbmVlZCB0byBkbyBhbnkgbG9ja2luZyB5ZXQs IGJ1dCB3ZSBuZXZlcnRoZWxlc3MgYWxsb3cgaXQuKQorCSAqLworCUxXTG9ja1NobWVtSW5pdCgp OworCisJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMgKi8KKwlTaG1lbUluaXRSZXF1ZXN0 ZWQoKTsKKworCS8qIEluaXRpYWxpemUgbGVnYWN5IHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0 dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyogSW5pdGlhbGl6ZSBkeW5hbWljIHNoYXJlZCBtZW1v cnkgZmFjaWxpdGllcy4gKi8KQEAgLTI1MSwxMSArMjcwLDYgQEAgQ3JlYXRlU2hhcmVkTWVtb3J5 QW5kU2VtYXBob3Jlcyh2b2lkKQogc3RhdGljIHZvaWQKIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1 Y3RzKHZvaWQpCiB7Ci0JLyoKLQkgKiBTZXQgdXAgTFdMb2Nrcy4gIFRoZXkgYXJlIG5lZWRlZCBi eSBtb3N0IG90aGVyIHN1YnN5c3RlbXMuCi0JICovCi0JTFdMb2NrU2htZW1Jbml0KCk7Ci0KIAlk c21fc2htZW1faW5pdCgpOwogCURTTVJlZ2lzdHJ5U2htZW1Jbml0KCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCmluZGV4IGM5OTRmNzY3NGVjLi4yOWZmNjA2NWRkYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCkBAIC0xOSw0MyArMTksMTE1IEBACiAgKiBtZXRob2RzKS4gIFRoZSByb3V0aW5l cyBpbiB0aGlzIGZpbGUgYXJlIHVzZWQgZm9yIGFsbG9jYXRpbmcgYW5kCiAgKiBiaW5kaW5nIHRv IHNoYXJlZCBtZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLgogICoKLSAqIE5PVEVTOgotICoJCShhKSBU aGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2hhcmVkIG1lbW9yeSBkYXRhIHN0cnVjdHVyZXMKLSAq CWF2YWlsYWJsZSB0byBQT1NUR1JFUzogZml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzLCBxdWV1ZXMgYW5k IGhhc2gKLSAqCXRhYmxlcy4gIEZpeGVkLXNpemUgc3RydWN0dXJlcyBjb250YWluIHRoaW5ncyBs aWtlIGdsb2JhbCB2YXJpYWJsZXMKLSAqCWZvciBhIG1vZHVsZSBhbmQgc2hvdWxkIG5ldmVyIGJl IGFsbG9jYXRlZCBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeQotICoJaW5pdGlhbGl6YXRpb24gcGhh c2UuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4aW11bSBzaXplIGFuZAotICoJY2Fubm90 IGdyb3cgYmV5b25kIHRoYXQuICBRdWV1ZXMgbGluayBkYXRhIHN0cnVjdHVyZXMKLSAqCXRoYXQg aGF2ZSBiZWVuIGFsbG9jYXRlZCBlaXRoZXIgd2l0aGluIGZpeGVkLXNpemUgc3RydWN0dXJlcyBv ciBhcyBoYXNoCi0gKglidWNrZXRzLiAgRWFjaCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUgaGFzIGEg c3RyaW5nIG5hbWUgdG8gaWRlbnRpZnkKLSAqCWl0IChhc3NpZ25lZCBpbiB0aGUgbW9kdWxlIHRo YXQgZGVjbGFyZXMgaXQpLgotICoKLSAqCQkoYikgRHVyaW5nIGluaXRpYWxpemF0aW9uLCBlYWNo IG1vZHVsZSBsb29rcyBmb3IgaXRzCi0gKglzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgaGFz aCB0YWJsZSBjYWxsZWQgdGhlICJTaG1lbSBJbmRleCIuCi0gKglJZiB0aGUgZGF0YSBzdHJ1Y3R1 cmUgaXMgbm90IHByZXNlbnQsIHRoZSBjYWxsZXIgY2FuIGFsbG9jYXRlCi0gKglhIG5ldyBvbmUg YW5kIGluaXRpYWxpemUgaXQuICBJZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXMgcHJlc2VudCwKLSAq CXRoZSBjYWxsZXIgImF0dGFjaGVzIiB0byB0aGUgc3RydWN0dXJlIGJ5IGluaXRpYWxpemluZyBh IHBvaW50ZXIKLSAqCWluIHRoZSBsb2NhbCBhZGRyZXNzIHNwYWNlLgotICoJCVRoZSBzaG1lbSBp bmRleCBoYXMgdHdvIHB1cnBvc2VzOiBmaXJzdCwgaXQgZ2l2ZXMgdXMKLSAqCWEgc2ltcGxlIG1v ZGVsIG9mIGhvdyB0aGUgd29ybGQgbG9va3Mgd2hlbiBhIGJhY2tlbmQgcHJvY2VzcwotICoJaW5p dGlhbGl6ZXMuICBJZiBzb21ldGhpbmcgaXMgcHJlc2VudCBpbiB0aGUgc2htZW0gaW5kZXgsCi0g KglpdCBpcyBpbml0aWFsaXplZC4gIElmIGl0IGlzIG5vdCwgaXQgaXMgdW5pbml0aWFsaXplZC4g IFNlY29uZCwKLSAqCXRoZSBzaG1lbSBpbmRleCBhbGxvd3MgdXMgdG8gYWxsb2NhdGUgc2hhcmVk IG1lbW9yeSBvbiBkZW1hbmQKLSAqCWluc3RlYWQgb2YgdHJ5aW5nIHRvIHByZWFsbG9jYXRlIHN0 cnVjdHVyZXMgYW5kIGhhcmQtd2lyZSB0aGUKLSAqCXNpemVzIGFuZCBsb2NhdGlvbnMgaW4gaGVh ZGVyIGZpbGVzLiAgSWYgeW91IGFyZSB1c2luZyBhIGxvdAotICoJb2Ygc2hhcmVkIG1lbW9yeSBp biBhIGxvdCBvZiBkaWZmZXJlbnQgcGxhY2VzIChhbmQgY2hhbmdpbmcKLSAqCXRoaW5ncyBkdXJp bmcgZGV2ZWxvcG1lbnQpLCB0aGlzIGlzIGltcG9ydGFudC4KLSAqCi0gKgkJKGMpIEluIHN0YW5k YXJkIFVuaXgtaXNoIGVudmlyb25tZW50cywgaW5kaXZpZHVhbCBiYWNrZW5kcyBkbyBub3QKLSAq CW5lZWQgdG8gcmUtZXN0YWJsaXNoIHRoZWlyIGxvY2FsIHBvaW50ZXJzIGludG8gc2hhcmVkIG1l bW9yeSwgYmVjYXVzZQotICoJdGhleSBpbmhlcml0IGNvcnJlY3QgdmFsdWVzIG9mIHRob3NlIHZh cmlhYmxlcyB2aWEgZm9yaygpIGZyb20gdGhlCi0gKglwb3N0bWFzdGVyLiAgSG93ZXZlciwgdGhp cyBkb2VzIG5vdCB3b3JrIGluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZS4KLSAqCUluIHBvcnRzIHVz aW5nIEVYRUNfQkFDS0VORCwgbmV3IGJhY2tlbmRzIGhhdmUgdG8gc2V0IHVwIHRoZWlyIGxvY2Fs Ci0gKglwb2ludGVycyB1c2luZyB0aGUgbWV0aG9kIGRlc2NyaWJlZCBpbiAoYikgYWJvdmUuCi0g KgotICoJCShkKSBtZW1vcnkgYWxsb2NhdGlvbiBtb2RlbDogc2hhcmVkIG1lbW9yeSBjYW4gbmV2 ZXIgYmUKLSAqCWZyZWVkLCBvbmNlIGFsbG9jYXRlZC4gICBFYWNoIGhhc2ggdGFibGUgaGFzIGl0 cyBvd24gZnJlZSBsaXN0LAotICoJc28gaGFzaCBidWNrZXRzIGNhbiBiZSByZXVzZWQgd2hlbiBh biBpdGVtIGlzIGRlbGV0ZWQuCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmYWNpbGl0aWVzIHRv IGFsbG9jYXRlIGZpeGVkLXNpemUgc3RydWN0dXJlcyBpbiBzaGFyZWQKKyAqIG1lbW9yeSwgZm9y IHRoaW5ncyBsaWtlIHZhcmlhYmxlcyBzaGFyZWQgYmV0d2VlbiBhbGwgYmFja2VuZCBwcm9jZXNz ZXMuCisgKiBFYWNoIHN1Y2ggc3RydWN0dXJlIGhhcyBhIHN0cmluZyBuYW1lIHRvIGlkZW50aWZ5 IGl0LCBzcGVjaWZpZWQgd2hlbiBpdCBpcworICogcmVxdWVzdGVkLiAgc2htZW1faGFzaC5jIHBy b3ZpZGVzIGEgc2hhcmVkIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gb24gdG9wCisgKiBvZiB0 aGF0LgorICoKKyAqIFNoYXJlZCBtZW1vcnkgYXJlYXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGFs bG9jYXRlZCBhZnRlciBwb3N0bWFzdGVyCisgKiBzdGFydHVwLCBhbHRob3VnaCB3ZSBkbyBhbGxv dyBzbWFsbCBhbGxvY2F0aW9ucyBsYXRlciBmb3IgdGhlIGJlbmVmaXQgb2YKKyAqIGV4dGVuc2lv biBtb2R1bGVzIHRoYXQgYXJlIGxvYWRlZCBhZnRlciBzdGFydHVwLiAgRGVzcGl0ZSB0aGF0IGFs bG93YW5jZSwKKyAqIGV4dGVuc2lvbnMgdGhhdCBuZWVkIHNoYXJlZCBtZW1vcnkgc2hvdWxkIGJl IGFkZGVkIGluCisgKiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMsIGJlY2F1c2UgdGhlIGFsbG93 YW5jZSBpcyBxdWl0ZSBzbWFsbCBhbmQgdGhlcmUgaXMKKyAqIG5vIGd1YXJhbnRlZSB0aGF0IGFu eSBtZW1vcnkgaXMgYXZhaWxhYmxlIGFmdGVyIHN0YXJ0dXAuCisgKgorICogTm93YWRheXMsIHRo ZXJlIGlzIGFsc28gYSB0aGlyZCB3YXkgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBjYWxsZWQK KyAqIER5bmFtaWMgU2hhcmVkIE1lbW9yeS4gIFNlZSBkc20uYyBmb3IgdGhhdCBmYWNpbGl0eS4g IE9uZSBiaWcgZGlmZmVyZW5jZQorICogYmV0d2VlbiB0cmFkaXRpb25hbCBzaGFyZWQgbWVtb3J5 IGhhbmRsZWQgYnkgc2htZW0uYyBhbmQgZHluYW1pYyBzaGFyZWQKKyAqIG1lbW9yeSBpcyB0aGF0 IHRyYWRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgYXJlYXMgYXJlIG1hcHBlZCB0byB0aGUgc2FtZQor ICogYWRkcmVzcyBpbiBhbGwgcHJvY2Vzc2VzLCBzbyB5b3UgY2FuIHVzZSBub3JtYWwgcG9pbnRl cnMgaW4gc2hhcmVkIG1lbW9yeQorICogc3RydWN0cy4gIFdpdGggRHluYW1pYyBTaGFyZWQgTWVt b3J5LCB5b3UgbXVzdCB1c2Ugb2Zmc2V0cyBvciBEU0EgcG9pbnRlcnMKKyAqIGluc3RlYWQuCisg KgorICogU2hhcmVkIG1lbW9yeSBtYW5hZ2VkIGJ5IHNobWVtLmMgY2FuIG5ldmVyIGJlIGZyZWVk LCBvbmNlIGFsbG9jYXRlZC4gIEVhY2gKKyAqIGhhc2ggdGFibGUgaGFzIGl0cyBvd24gZnJlZSBs aXN0LCBzbyBoYXNoIGJ1Y2tldHMgY2FuIGJlIHJldXNlZCB3aGVuIGFuCisgKiBpdGVtIGlzIGRl bGV0ZWQuICBIb3dldmVyLCBpZiBvbmUgaGFzaCB0YWJsZSBncm93cyB2ZXJ5IGxhcmdlIGFuZCB0 aGVuCisgKiBzaHJpbmtzLCBpdHMgc3BhY2UgY2Fubm90IGJlIHJlZGlzdHJpYnV0ZWQgdG8gb3Ro ZXIgdGFibGVzLiAgV2UgY291bGQgYnVpbGQKKyAqIGEgc2ltcGxlIGhhc2ggYnVja2V0IGdhcmJh Z2UgY29sbGVjdG9yIGlmIG5lZWQgYmUuICBSaWdodCBub3csIGl0IHNlZW1zCisgKiB1bm5lY2Vz c2FyeS4KKyAqCisgKiBVc2FnZQorICogLS0tLS0KKyAqCisgKiBUbyBhbGxvY2F0ZSBzaGFyZWQg bWVtb3J5LCB5b3UgbmVlZCB0byByZWdpc3RlciBhIHNldCBvZiBjYWxsYmFjayBmdW5jdGlvbnMK KyAqIHdoaWNoIGhhbmRsZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBhbGxvY2F0aW9uLiAgSW4gdGhl IHJlcXVlc3RfZm4gY2FsbGJhY2ssCisgKiBmaWxsIGluIGEgU2htZW1SZXF1ZXN0U3RydWN0T3B0 cyBzdHJ1Y3Qgd2l0aCB0aGUgbmFtZSwgc2l6ZSwgYW5kIGFueSBvdGhlcgorICogb3B0aW9ucywg YW5kIGNhbGwgU2htZW1SZXF1ZXN0U3RydWN0KCkuICBMZWF2ZSBhbnkgdW51c2VkIGZpZWxkcyBh cyB6ZXJvcy4KKyAqCisgKgl0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7CisgKgkJLi4uCisg Kgl9IE15U2htZW1EYXRhOworICoKKyAqCXN0YXRpYyBNeVNobWVtRGF0YSAqTXlTaG1lbTsKKyAq CisgKglzdGF0aWMgdm9pZCBteV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CisgKglzdGF0aWMg dm9pZCBteV9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisgKgorICogIGNvbnN0IFNobWVtQ2FsbGJh Y2tzIE15U2htZW1DYWxsYmFja3MgPSB7CisgKgkJLnJlcXVlc3RfZm4gPSBteV9zaG1lbV9yZXF1 ZXN0LAorICoJCS5pbml0X2ZuID0gbXlfc2htZW1faW5pdCwKKyAqCX07CisgKgorICoJc3RhdGlj IHZvaWQKKyAqCW15X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQorICoJeworICoJCXN0YXRpYyBT aG1lbVN0cnVjdERlc2MgTXlTaG1lbURlc2M7CisgKgorICoJCVNobWVtUmVxdWVzdFN0cnVjdCgm TXlTaG1lbURlc2MsICYoU2htZW1SZXF1ZXN0U3RydWN0T3B0cykgeworICoJCQkubmFtZSA9ICJN eSBzaG1lbSBhcmVhIiwKKyAqCQkJLnNpemUgPSBzaXplb2YoTXlTaG1lbURhdGEpLAorICoJCQku cHRyID0gKHZvaWQgKiopICZNeVNobWVtLAorICoJCX0pOworICoJfQorICoKKyAqIEluIGJ1aWx0 aW4gUG9zdGdyZVNRTCBjb2RlLCBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGUgbGlzdCBpbgorICog c3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmguIEluIGFuIGFkZC1pbiBtb2R1bGUs IHlvdSBjYW4gcmVnaXN0ZXIKKyAqIHRoZSBjYWxsYmFja3MgYnkgY2FsbGluZyBSZWdpc3RlclNo bWVtQ2FsbGJhY2tzKCZNeVNobWVtQ2FsbGJhY2tzKSBpbiB0aGUKKyAqIGV4dGVuc2lvbidzIF9Q R19pbml0KCkgZnVuY3Rpb24uCisgKgorICogTGlmZWN5Y2xlCisgKiAtLS0tLS0tLS0KKyAqCisg KiBJbml0aWFsaXppbmcgc2hhcmVkIG1lbW9yeSBoYXBwZW5zIGluIG11bHRpcGxlIHBoYXNlcy4g SW4gdGhlIGZpcnN0IHBoYXNlLAorICogZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWxsIHRo ZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBhcmUgY2FsbGVkLiAgT25seQorICogYWZ0ZXIgYWxsIHRo ZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2FsbGVkIGFuZCBhbGwgdGhlIHNobWVt IGFyZWFzCisgKiBoYXZlIGJlZW4gcmVxdWVzdGVkIGJ5IHRoZSBTaG1lbVJlcXVlc3RTdHJ1Y3Qo KSBjYWxscyB3ZSBrbm93IGhvdyBtdWNoCisgKiBzaGFyZWQgbWVtb3J5IHdlIG5lZWQgaW4gdG90 YWwuIEFmdGVyIHRoYXQsIHBvc3RtYXN0ZXIgYWxsb2NhdGVzIGdsb2JhbAorICogc2hhcmVkIG1l bW9yeSBzZWdtZW50LCBhbmQgY2FsbHMgYWxsIHRoZSBpbml0X2ZuIGNhbGxiYWNrcyB0byBpbml0 aWFsaXplCisgKiBhbGwgdGhlIHJlcXVlc3RlZCBzaG1lbSBhcmVhcy4KKyAqCisgKiBJbiBzdGFu ZGFyZCBVbml4LWlzaCBlbnZpcm9ubWVudHMsIGluZGl2aWR1YWwgYmFja2VuZHMgZG8gbm90IG5l ZWQgdG8KKyAqIHJlLWVzdGFibGlzaCB0aGVpciBsb2NhbCBwb2ludGVycyBpbnRvIHNoYXJlZCBt ZW1vcnksIGJlY2F1c2UgdGhleSBpbmhlcml0CisgKiBjb3JyZWN0IHZhbHVlcyBvZiB0aG9zZSB2 YXJpYWJsZXMgdmlhIGZvcmsoKSBmcm9tIHRoZSBwb3N0bWFzdGVyLiAgSG93ZXZlciwKKyAqIHRo aXMgZG9lcyBub3Qgd29yayBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBJbiBwb3J0cyB1c2lu ZyBFWEVDX0JBQ0tFTkQsCisgKiBiYWNrZW5kIHN0YXJ0dXAgYWxzbyBjYWxscyB0aGUgc2htZW1f cmVxdWVzdCBjYWxsYmFja3MgdG8gcmUtZXN0YWJsaXNoIHRoZQorICoga25vd2xlZGdlIGFib3V0 IGVhY2ggc2hhcmVkIG1lbW9yeSBhcmVhLCBzZXRzIHRoZSBwb2ludGVyIHZhcmlhYmxlcworICog KCpTaG1lbVN0cnVjdERlc2MtPnB0ciksIGFuZCBjYWxscyB0aGUgYXR0YWNoX2ZuIGNhbGxiYWNr LCBpZiBhbnksIGZvcgorICogYWRkaXRpb25hbCBwZXItYmFja2VuZCBzZXR1cC4KKyAqCisgKiBM ZWdhY3kgU2htZW1Jbml0U3RydWN0KCkvU2htZW1Jbml0SGFzaCgpIGZ1bmN0aW9ucworICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBT aG1lbUluaXRTdHJ1Y3QoKS9TaG1lbUluaXRIYXNoKCkgaXMgYW5vdGhlciB3YXkgb2YgcmVnaXN0 ZXJpbmcgc2htZW0KKyAqIGFyZWFzLiAgSXQgcHJlLWRhdGVzIHRoZSBTaG1lbVJlcXVlc3RTdHJ1 Y3QoKS9TaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rpb25zLAorICogYW5kIHNob3VsZCBub3QgYmUg dXNlZCBpbiBuZXcgY29kZSwgYnV0IGFzIG9mIHRoaXMgd3JpdGluZyBpdCBpcyBzdGlsbAorICog d2lkZWx5IHVzZWQgaW4gZXh0ZW5zaW9ucy4KKyAqCisgKiBUbyBhbGxvY2F0ZSBhIHNobWVtIGFy ZWEgd2l0aCBTaG1lbUluaXRTdHJ1Y3QoKSwgeW91IG5lZWQgdG8gc2VwYXJhdGVseQorICogcmVn aXN0ZXIgdGhlIHNpemUgbmVlZGVkIGZvciB0aGUgYXJlYSBieSBjYWxsaW5nIFJlcXVlc3RBZGRp blNobWVtU3BhY2UoKQorICogZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2htZW1fcmVxdWVzdF9ob29r LCBhbmQgYWxsb2NhdGUgdGhlIGFyZWEgYnkgY2FsbGluZworICogU2htZW1Jbml0U3RydWN0KCkg ZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2htZW1fc3RhcnR1cF9ob29rLiAgVGhlcmUgYXJlIG5vCisg KiBpbml0L2F0dGFjaCBjYWxsYmFja3MuICBJbnN0ZWFkLCB0aGUgY2FsbGVyIG9mIFNobWVtSW5p dFN0cnVjdCgpIG11c3QgY2hlY2sKKyAqIHRoZSByZXR1cm4gc3RhdHVzIG9mIFNobWVtSW5pdFN0 cnVjdCgpIGFuZCBpbml0aWFsaXplIHRoZSBzdHJ1Y3QgaWYgaXQgd2FzCisgKiBub3QgcHJldmlv dXNseSBpbml0aWFsaXplZC4KKyAqCisgKiBDYWxsaW5nIFNobWVtQWxsb2MoKSBkaXJlY3RseQor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGVyZSdzIGEgbW9yZSBs b3ctbGV2ZWwgd2F5IG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSB0b286IHlvdSBjYW4gY2Fs bAorICogU2htZW1BbGxvYygpIGRpcmVjdGx5LiAgSXQncyB1c2VkIHRvIGltcGxlbWVudCB0aGUg aGlnaGVyIGxldmVsIG1lY2hhbmlzbXMsCisgKiBhbmQgc2hvdWxkIGdlbmVyYWxseSBub3QgYmUg Y2FsbGVkIGRpcmVjdGx5LgogICovCiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgpAQCAtNzAsMTAg KzE0Miw4MCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCiAKKy8q CisgKiBSZWdpc3RlcmVkIGNhbGxiYWNrcy4KKyAqCisgKiBEdXJpbmcgcG9zdG1hc3RlciBzdGFy dHVwLCB3ZSBhY2N1bXVsYXRlIHRoZSBjYWxsYmFja3MgZnJvbSBhbGwgc3Vic3lzdGVtcworICog aW4gdGhpcyBsaXN0LgorICoKKyAqIFRoaXMgaXMgaW4gcHJvY2VzcyBwcml2YXRlIG1lbW9yeSwg YWx0aG91Z2ggb24gVW5peC1saWtlIHN5c3RlbXMsIHdlIGV4cGVjdAorICogYWxsIHRoZSByZWdp c3RyYXRpb25zIHRvIGhhcHBlbiBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgdGltZSBhbmQgYmUgaW5o ZXJpdGVkCisgKiBieSBhbGwgdGhlIGNoaWxkIHByb2Nlc3NlcyB2aWEgZm9yaygpLgorICovCitz dGF0aWMgTGlzdCAqcmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3M7CisKKy8qCisgKiBJbiB0aGUg c2htZW0gcmVxdWVzdCBwaGFzZSwgYWxsIHRoZSBzaG1lbSBhcmVhcyByZXF1ZXN0ZWQgd2l0aCB0 aGUKKyAqIFNobWVtUmVxdWVzdCooKSBmdW5jdGlvbnMgYXJlIGFjY3VtdWxhdGVkIGhlcmUuCisg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisJU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zOworCVNobWVt UmVxdWVzdEtpbmQga2luZDsKK30gU2htZW1SZXF1ZXN0OworCitzdGF0aWMgTGlzdCAqcGVuZGlu Z19zaG1lbV9yZXF1ZXN0czsKKworLyoKKyAqIFBlci1wcm9jZXNzIHN0YXRlIG1hY2hpbmUsIGZv ciBzYW5pdHkgY2hlY2tpbmcgdGhhdCB3ZSBkbyB0aGluZ3MgaW4gdGhlCisgKiByaWdodCBvcmRl ci4KKyAqCisgKiBQb3N0bWFzdGVyOgorICogICBJTklUSUFMIC0+IFJFUVVFU1RJTkcgLT4gSU5J VElBTElaSU5HIC0+IERPTkUKKyAqCisgKiBCYWNrZW5kcyBpbiBFWEVDX0JBQ0tFTkQgbW9kZToK KyAqICAgSU5JVElBTCAtPiBSRVFVRVNUSU5HIC0+IEFUVEFDSElORyAtPiBET05FCisgKgorICog TGF0ZSByZXF1ZXN0OgorICogICBET05FIC0+IFJFUVVFU1RJTkcgLT4gQUZURVJfU1RBUlRVUF9B VFRBQ0hfT1JfSU5JVCAtPiBET05FCisgKi8KK2VudW0gc2htZW1fcmVxdWVzdF9zdGF0ZQorewor CS8qIEluaXRpYWwgc3RhdGUgKi8KKwlTUlNfSU5JVElBTCwKKworCS8qCisJICogV2hlbiB3ZSBz dGFydCBjYWxsaW5nIHRoZSBzaG1lbV9yZXF1ZXN0IGNhbGxiYWNrcywgd2UgZW50ZXIgdGhlCisJ ICogU1JTX1JFUVVFU1RJTkcgcGhhc2UuICBBbGwgU2htZW1SZXF1ZXN0U3RydWN0IGNhbGxzIGhh cHBlbiBpbiB0aGlzCisJICogc3RhdGUuCisJICovCisJU1JTX1JFUVVFU1RJTkcsCisKKwkvKgor CSAqIFBvc3RtYXN0ZXIgaGFzIGZpbmlzaGVkIGFsbCBzaG1lbSByZXF1ZXN0cywgYW5kIGlzIG5v dyBpbml0aWFsaXppbmcgdGhlCisJICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAgaW5pdF9mbiBj YWxsYmFja3MgYXJlIGNhbGxlZCBpbiB0aGlzIHN0YXRlLgorCSAqLworCVNSU19JTklUSUFMSVpJ TkcsCisKKwkvKgorCSAqIEEgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlzIHN0YXJ0aW5nIHVw LiAgYXR0YWNoX2ZuIGNhbGxiYWNrcyBhcmUKKwkgKiBjYWxsZWQgaW4gdGhpcyBzdGF0ZS4KKwkg Ki8KKwlTUlNfQVRUQUNISU5HLAorCisJLyogQW4gYWZ0ZXItc3RhcnR1cCBhbGxvY2F0aW9uIG9y IGF0dGFjaG1lbnQgaXMgaW4gcHJvZ3Jlc3MuICovCisJU1JTX0FGVEVSX1NUQVJUVVBfQVRUQUNI X09SX0lOSVQsCisKKwkvKiBOb3JtYWwgc3RhdGUgYWZ0ZXIgc2htZW0gaW5pdGlhbGl6YXRpb24g LyBhdHRhY2htZW50ICovCisJU1JTX0RPTkUsCit9Oworc3RhdGljIGVudW0gc2htZW1fcmVxdWVz dF9zdGF0ZSBzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0lOSVRJQUw7CisKIC8qCiAgKiBUaGlz IGlzIHRoZSBmaXJzdCBkYXRhIHN0cnVjdHVyZSBzdG9yZWQgaW4gdGhlIHNoYXJlZCBtZW1vcnkg c2VnbWVudCwgYXQKICAqIHRoZSBvZmZzZXQgdGhhdCBQR1NobWVtSGVhZGVyLT5jb250ZW50X29m ZnNldCBwb2ludHMgdG8uICBBbGxvY2F0aW9ucyBieQpAQCAtMTA1LDM1ICsyNDcsMzc5IEBAIHN0 YXRpYyB2b2lkICpTaG1lbUJhc2U7CQkJLyogc3RhcnQgYWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5 ICovCiBzdGF0aWMgdm9pZCAqU2htZW1FbmQ7CQkJLyogZW5kKzEgYWRkcmVzcyBvZiBzaGFyZWQg bWVtb3J5ICovCiAKIHN0YXRpYyBTaG1lbUFsbG9jYXRvckRhdGEgKlNobWVtQWxsb2NhdG9yOwot c3RhdGljIEhUQUIgKlNobWVtSW5kZXggPSBOVUxMOyAvKiBwcmltYXJ5IGluZGV4IGhhc2h0YWJs ZSBmb3Igc2htZW0gKi8KKworLyoKKyAqIFNobWVtSW5kZXggaXMgYSBnbG9iYWwgZGlyZWN0b3J5 IG9mIHNobWVtIGFyZWFzLCBpdHNlbGYgYWxzbyBzdG9yZWQgaW4gdGhlCisgKiBzaGFyZWQgbWVt b3J5LgorICovCitzdGF0aWMgSFRBQiAqU2htZW1JbmRleDsKKworIC8qIG1heCBzaXplIG9mIGRh dGEgc3RydWN0dXJlIHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJ CSAoNDgpCisKKy8qCisgKiAjIG9mIGFkZGl0aW9uYWwgZW50cmllcyB0byByZXNlcnZlIGluIHRo ZSBzaG1lbSBpbmRleCB0YWJsZSwgZm9yCisgKiBhbGxvY2F0aW9ucyBhZnRlciBwb3N0bWFzdGVy IHN0YXJ0dXAuICAoVGhpcyBpcyBub3QgYSBoYXJkIGxpbWl0LCB0aGUgaGFzaAorICogdGFibGUg Y2FuIGdyb3cgbGFyZ2VyIHRoYW4gdGhhdCBpZiB0aGVyZSBpcyBzaGFyZWQgbWVtb3J5IGF2YWls YWJsZSkKKyAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9BRERJVElPTkFMX1NJWkUJCSAoMTI4KQor CisvKiB0aGlzIGlzIGEgaGFzaCBidWNrZXQgaW4gdGhlIHNobWVtIGluZGV4IHRhYmxlICovCit0 eXBlZGVmIHN0cnVjdAoreworCWNoYXIJCWtleVtTSE1FTV9JTkRFWF9LRVlTSVpFXTsJLyogc3Ry aW5nIG5hbWUgKi8KKwl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0aW9uIGluIHNoYXJlZCBt ZW0gKi8KKwlTaXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVzdGVkIGZvciB0aGUgc3RydWN0 dXJlICovCisJU2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2Nh dGVkICovCit9IFNobWVtSW5kZXhFbnQ7CiAKIC8qIFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZv ciBOVU1BIGlucXVpcnkgd2UgbmVlZCB0byAidG91Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBi b29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIAorc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2FsbGJh Y2tzQWZ0ZXJTdGFydHVwKGNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOworc3RhdGlj IHZvaWQgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOworc3RhdGlj IGJvb2wgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBt aXNzaW5nX29rKTsKKwogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1Mp OwogCiAvKgotICogQSB2ZXJ5IHNpbXBsZSBhbGxvY2F0b3IgdXNlZCB0byBjYXJ2ZSBvdXQgZGlm ZmVyZW50IHBhcnRzIG9mIGEgaGFzaCB0YWJsZQotICogZnJvbSBhIHByZXZpb3VzbHkgYWxsb2Nh dGVkIGNvbnRpZ3VvdXMgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoJU2htZW1SZXF1ZXN0U3RydWN0 KCkgLS0tIHJlcXVlc3QgYSBuYW1lZCBzaGFyZWQgbWVtb3J5IGFyZWEKKyAqCisgKiBTdWJzeXN0 ZW1zIGNhbGwgdGhpcyB0byByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5lZWRzLiAgVGhp cyBpcworICogdXN1YWxseSBkb25lIGVhcmx5IGluIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYmVmb3Jl IHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIGhhcyBiZWVuIGNyZWF0ZWQsIHNvIHRoYXQg dGhlIHNpemUgY2FuIGJlIGluY2x1ZGVkIGluIHRoZSBlc3RpbWF0ZSBmb3IKKyAqIHRvdGFsIGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZC4gIFdlIHNldCBhc2lkZSBhIHNtYWxsIGFtb3Vu dCBvZgorICogbWVtb3J5IGZvciBhbGxvY2F0aW9ucyB0aGF0IGhhcHBlbiBsYXRlciwgZm9yIHRo ZSBiZW5lZml0IG9mIG5vbi1wcmVsb2FkZWQKKyAqIGV4dGVuc2lvbnMsIGJ1dCB0aGF0IHNob3Vs ZCBub3QgYmUgcmVsaWVkIHVwb24uCisgKgorICogVGhpcyBkb2VzIG5vdCB5ZXQgYWxsb2NhdGUg dGhlIG1lbW9yeSwgYnV0IG1lcmVseSByZWdpc3RlciB0aGUgbmVlZCBmb3IgaXQuCisgKiBUaGUg YWN0dWFsIGFsbG9jYXRpb24gaGFwcGVucyBsYXRlciBpbiB0aGUgcG9zdG1hc3RlciBzdGFydHVw IHNlcXVlbmNlLgorICoKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVl c3QgY2FsbGJhY2sgZnVuY3Rpb24sIHJlZ2lzdGVyZWQgd2l0aAorICogUmVnaXN0ZXJTaG1lbUNh bGxiYWNrcygpLiAgVGhpcyBlbmZvcmNlcyBhIGNvZGluZyBwYXR0ZXJuIHRoYXQgd29ya3MgdGhl CisgKiBzYW1lIGluIG5vcm1hbCBVbml4IHN5c3RlbXMgYW5kIHdpdGggRVhFQ19CQUNLRU5ELiAg T24gVW5peCBzeXN0ZW1zLCB0aGUKKyAqIHNobWVtX3JlcXVlc3QgY2FsbGJhY2tzIGFyZSBjYWxs ZWQgb25jZSwgZWFybHkgaW4gcG9zdG1hc3RlciBzdGFydHVwLCBhbmQKKyAqIHRoZSBjaGlsZCBw cm9jZXNzZXMgaW5oZXJpdCB0aGUgc3RydWN0IGRlc2NyaXB0b3JzIGFuZCBhbnkgb3RoZXIKKyAq IHBlci1wcm9jZXNzIHN0YXRlIGZyb20gdGhlIHBvc3RtYXN0ZXIuICBJbiBFWEVDX0JBQ0tFTkQg bW9kZSwgc2htZW1fcmVxdWVzdAorICogY2FsbGJhY2tzIGFyZSAqYWxzbyogY2FsbGVkIGluIGVh Y2ggYmFja2VuZCwgYXQgYmFja2VuZCBzdGFydHVwLCB0bworICogcmUtZXN0YWJsaXNoIHRoZSBz dHJ1Y3QgZGVzY3JpcHRvcnMuICBCeSBjYWxsaW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGluIGJvdGgK KyAqIGNhc2VzLCB3ZSBlbnN1cmUgdGhhdCBhbGwgdGhlIHNobWVtIGFyZWFzIGFyZSByZWdpc3Rl cmVkIHRoZSBzYW1lIHdheSBpbgorICogYWxsIHByb2Nlc3Nlcy4KKyAqCisgKiAnZGVzYycgaXMg YSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZvciB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoK KyAqICdvcHRpb25zJyBkZWZpbmVzIHRoZSBuYW1lIGFuZCBzaXplIG9mIHRoZSBhcmVhLCBhbmQg YW55IG90aGVyIG9wdGlvbmFsCisgKiBmZWF0dXJlcy4gIExlYXZlIHVudXNlZCBvcHRpb25zIGFz IHplcm9zLiAgVGhlIG9wdGlvbnMgYXJlIGNvcGllZCB0bworICogbG9uZ2VyLWxpdmVkIG1lbW9y eSwgc28gaXQgZG9lc24ndCBuZWVkIHRvIGxpdmUgYWZ0ZXIgdGhlCisgKiBTaG1lbVJlcXVlc3RT dHJ1Y3QoKSBjYWxsIGFuZCBjYW4gcG9pbnQgdG8gYSBsb2NhbCB2YXJpYWJsZSBpbiB0aGUgY2Fs bGluZworICogZnVuY3Rpb24uICBUaGUgJ25hbWUnIG11c3QgcG9pbnQgdG8gYSBsb25nLWxpdmVk IHN0cmluZyB0aG91Z2gsIG9ubHkgdGhlCisgKiBwb2ludGVyIHRvIGl0IGlzIGNvcGllZC4KKyAq Lwordm9pZAorU2htZW1SZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRz ICpvcHRpb25zKQoreworCVNobWVtU3RydWN0T3B0cyAqb3B0aW9uc19jb3B5OworCisJb3B0aW9u c19jb3B5ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkg IHNpemVvZihTaG1lbVN0cnVjdE9wdHMpKTsKKwltZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25z LCBzaXplb2YoU2htZW1TdHJ1Y3RPcHRzKSk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbChvcHRp b25zX2NvcHksIFNITUVNX0tJTkRfU1RSVUNUKTsKK30KKworLyoKKyAqIEludGVybmFsIHdvcmto b3JzZSBvZiBTaG1lbVJlcXVlc3RTdHJ1Y3QoKSBhbmQgU2htZW1SZXF1ZXN0SGFzaCgpLgorICoK KyAqIE5vdGU6ICdkZXNjJyBhbmQgJ29wdGlvbnMnIG11c3QgbGl2ZSB1bnRpbCB0aGUgaW5pdC9h dHRhY2ggY2FsbGJhY2tzIGhhdmUKKyAqIGJlZW4gY2FsbGVkLiAgVW5saWtlIGluIHRoZSBwdWJs aWMgU2htZW1SZXF1ZXN0U3RydWN0KCkgYW5kCisgKiBTaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rp b25zLCAnb3B0aW9ucycgaXMgKm5vdCogY29waWVkLiAgVGhpcyBhbGxvd3MKKyAqIFNobWVtUmVx dWVzdEhhc2goKSB0byBwYXNzIGEgcG9pbnRlciB0byB0aGUgZXh0ZW5kZWQgU2htZW1SZXF1ZXN0 SGFzaE9wdHMKKyAqIHN0cnVjdCBpbnN0ZWFkLgorICovCit2b2lkCitTaG1lbVJlcXVlc3RJbnRl cm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtpbmQga2luZCkKK3sK KwlTaG1lbVJlcXVlc3QgKnJlcXVlc3Q7CisKKwlpZiAob3B0aW9ucy0+bmFtZSA9PSBOVUxMKQor CQllbG9nKEVSUk9SLCAic2hhcmVkIG1lbW9yeSByZXF1ZXN0IGlzIG1pc3NpbmcgJ25hbWUnIG9w dGlvbiIpOworCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQorCXsKKwkJaWYgKG9wdGlvbnMtPnNp emUgPD0gMCAmJiBvcHRpb25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0 IGZvciBcIiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisJ ZWxzZQorCXsKKwkJaWYgKG9wdGlvbnMtPnNpemUgPT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0la RSkKKwkJCWVsb2coRVJST1IsICJTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1 c2VkIGR1cmluZyBzdGFydHVwIik7CisJCWlmIChvcHRpb25zLT5zaXplIDw9IDApCisJCQllbG9n KEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBc IiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisKKwlpZiAo c2htZW1fcmVxdWVzdF9zdGF0ZSAhPSBTUlNfUkVRVUVTVElORykKKwkJZWxvZyhFUlJPUiwgIlNo bWVtUmVxdWVzdFN0cnVjdCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVlc3Qg Y2FsbGJhY2siKTsKKworCS8qIENoZWNrIHRoYXQgaXQncyBub3QgYWxyZWFkeSByZWdpc3RlcmVk IGluIHRoaXMgcHJvY2VzcyAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgZXhpc3Rpbmcs IHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlpZiAoc3RyY21wKGV4aXN0aW5nLT5vcHRp b25zLT5uYW1lLCBvcHRpb25zLT5uYW1lKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycm1zZygic2hhcmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJl ZCIsCisJCQkJCQkJb3B0aW9ucy0+bmFtZSkpKTsKKwl9CisKKwlyZXF1ZXN0ID0gcGFsbG9jKHNp emVvZihTaG1lbVJlcXVlc3QpKTsKKwlyZXF1ZXN0LT5vcHRpb25zID0gb3B0aW9uczsKKwlyZXF1 ZXN0LT5raW5kID0ga2luZDsKKwlwZW5kaW5nX3NobWVtX3JlcXVlc3RzID0gbGFwcGVuZChwZW5k aW5nX3NobWVtX3JlcXVlc3RzLCByZXF1ZXN0KTsKK30KKworLyoKKyAqCVNobWVtR2V0UmVxdWVz dGVkU2l6ZSgpIC0tLSBlc3RpbWF0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgcmVnaXN0ZXJlZCBz aGFyZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHN0cnVjdHVyZXMu CisgKgorICogVGhpcyBpcyBjYWxsZWQgb25jZSBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAsIGJlZm9y ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiBoYXMgYmVlbiBjcmVhdGVkLgorICovCitz aXplX3QKK1NobWVtR2V0UmVxdWVzdGVkU2l6ZSh2b2lkKQoreworCXNpemVfdAkJc2l6ZTsKKwor CS8qIG1lbW9yeSBuZWVkZWQgZm9yIHRoZSBTaG1lbUluZGV4ICovCisJc2l6ZSA9IGhhc2hfZXN0 aW1hdGVfc2l6ZShsaXN0X2xlbmd0aChwZW5kaW5nX3NobWVtX3JlcXVlc3RzKSArIFNITUVNX0lO REVYX0FERElUSU9OQUxfU0laRSwKKwkJCQkJCQkgIHNpemVvZihTaG1lbUluZGV4RW50KSk7CisJ c2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCisJLyogbWVtb3J5IG5lZWRlZCBmb3IgYWxs IHRoZSByZXF1ZXN0ZWQgYXJlYXMgKi8KKwlmb3JlYWNoX3B0cihTaG1lbVJlcXVlc3QsIHJlcXVl c3QsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwg cmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSk7CisJCS8qIGNhbGN1bGF0ZSBhbGlnbm1lbnQgcGFkZGlu ZyBsaWtlIFNobWVtQWxsb2NSYXcoKSBkb2VzICovCisJCXNpemUgPSBDQUNIRUxJTkVBTElHTihz aXplKTsKKwl9CisKKwlyZXR1cm4gc2l6ZTsKK30KKworLyoKKyAqCVNobWVtSW5pdFJlcXVlc3Rl ZCgpIC0tLSBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeQor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGlz IGNhbGxlZCBvbmNlIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1v cnkgc2VnbWVudAorICogaGFzIGJlZW4gY3JlYXRlZC4KKyAqLwordm9pZAorU2htZW1Jbml0UmVx dWVzdGVkKHZvaWQpCit7CisJLyogU2hvdWxkIGJlIGNhbGxlZCBvbmx5IGJ5IHRoZSBwb3N0bWFz dGVyIG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLiAqLworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0 ZXIpOworCUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMSVpJTkcpOwor CisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBTaG1lbUluZGV4IGVudHJpZXMgYW5kIHBlcmZvcm0g YmFzaWMgaW5pdGlhbGl6YXRpb24gb2YKKwkgKiBhbGwgdGhlIHJlcXVlc3RlZCBtZW1vcnkgYXJl YXMuICBUaGVyZSBhcmUgbm8gY29uY3VycmVudCBwcm9jZXNzZXMgeWV0LAorCSAqIHNvIG5vIG5l ZWQgZm9yIGxvY2tpbmcuCisJICovCisJZm9yZWFjaF9wdHIoU2htZW1SZXF1ZXN0LCByZXF1ZXN0 LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQorCXsKKwkJSW5pdFNobWVtSW5kZXhFbnRyeShyZXF1 ZXN0KTsKKwl9CisJbGlzdF9mcmVlX2RlZXAocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyk7CisJcGVu ZGluZ19zaG1lbV9yZXF1ZXN0cyA9IE5JTDsKKworCS8qCisJICogQ2FsbCB0aGUgc3Vic3lzdGVt LXNwZWNpZmljIGluaXQgY2FsbGJhY2tzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbiBvZgorCSAq IGFsbCB0aGUgYXJlYXMuCisJICovCisJZm9yZWFjaF9wdHIoY29uc3QgU2htZW1DYWxsYmFja3Ms IGNhbGxiYWNrcywgcmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3MpCisJeworCQlpZiAoY2FsbGJh Y2tzLT5pbml0X2ZuKQorCQkJY2FsbGJhY2tzLT5pbml0X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9h cmcpOworCX0KKworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfRE9ORTsKK30KKworLyoKKyAq IFJlLWVzdGFibGlzaCBwcm9jZXNzIHByaXZhdGUgc3RhdGUgcmVsYXRlZCB0byBzaG1lbSBhcmVh cy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBhdCBiYWNrZW5kIHN0YXJ0dXAgaW4gRVhFQ19CQUNL RU5EIG1vZGUsIGluIGV2ZXJ5IGJhY2tlbmQuCisgKi8KKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK3Zv aWQKK1NobWVtQXR0YWNoUmVxdWVzdGVkKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkv KiBNdXN0IGJlIGluaXRpYWxpemluZyBhIChub24tc3RhbmRhbG9uZSkgYmFja2VuZCAqLworCUFz c2VydChJc1VuZGVyUG9zdG1hc3Rlcik7CisJQXNzZXJ0KFNobWVtQWxsb2NhdG9yLT5pbmRleCAh PSBOVUxMKTsKKwlBc3NlcnQoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfUkVRVUVTVElORyk7 CisJc2htZW1fcmVxdWVzdF9zdGF0ZSA9IFNSU19BVFRBQ0hJTkc7CisKKwlMV0xvY2tBY3F1aXJl KFNobWVtSW5kZXhMb2NrLCBMV19TSEFSRUQpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gYWxsIHRo ZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzLgorCSAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVz dCwgcmVxdWVzdCwgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7CisJCUF0dGFjaFNobWVtSW5k ZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJfQorCWxpc3RfZnJlZV9kZWVwKHBlbmRpbmdfc2ht ZW1fcmVxdWVzdHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CisKKwkvKiBDYWxs IGF0dGFjaCBjYWxsYmFja3MgKi8KKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVtX2NhbGxi YWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAoY29uc3QgU2ht ZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKKworCQlpZiAoY2FsbGJhY2tzLT5hdHRhY2hfZm4p CisJCQljYWxsYmFja3MtPmF0dGFjaF9mbihjYWxsYmFja3MtPmF0dGFjaF9mbl9hcmcpOworCX0K KworCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCisJc2htZW1fcmVxdWVzdF9zdGF0 ZSA9IFNSU19ET05FOworfQorI2VuZGlmCisKKy8qCisgKiBJbnNlcnQgcmVxdWVzdGVkIHNobWVt IGFyZWEgaW50byB0aGUgc2hhcmVkIG1lbW9yeSBpbmRleCBhbmQgaW5pdGlhbGl6ZSBpdC4KKyAq CisgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IGRvZXMgcGVyZm9ybXMgYmFzaWMgaW5pdGlhbGl6YXRp b24gZGVwZW5kaW5nIG9uCisgKiBTaG1lbVJlcXVlc3RLaW5kLCBsaWtlIHNldHRpbmcgdGhlIGds b2JhbCBwb2ludGVyIHZhcmlhYmxlIHRvIHRoZSBhcmVhIGZvcgorICogU0hNRU1fS0lORF9TVFJV Q1Qgb3Igc2V0dGluZyB1cCB0aGUgYmFja2VuZC1wcml2YXRlIEhUQUIgY29udHJvbCBzdHJ1Y3Qu CisgKiBUaGlzIGRvZXMgKm5vdCogY2FsbCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGluaXQgY2Fs bGJhY2tzLiAgVGhhdCdzIGRvbmUKKyAqIGxhdGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMg aGF2ZSBiZWVuIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLgogICovCi10eXBlZGVmIHN0cnVj dCBzaG1lbV9oYXNoX2FsbG9jYXRvcgorc3RhdGljIHZvaWQKK0luaXRTaG1lbUluZGV4RW50cnko U2htZW1SZXF1ZXN0ICpyZXF1ZXN0KQogewotCWNoYXIJICAgKm5leHQ7CQkJLyogc3RhcnQgb2Yg ZnJlZSBzcGFjZSBpbiB0aGUgYXJlYSAqLwotCWNoYXIJICAgKmVuZDsJCQkvKiBlbmQgb2YgdGhl IHNobWVtIGFyZWEgKi8KLX0gc2htZW1faGFzaF9hbGxvY2F0b3I7CisJY29uc3QgY2hhciAqbmFt ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm5hbWU7CisJU2htZW1JbmRleEVudCAqaW5kZXhfZW50cnk7 CisJYm9vbAkJZm91bmQ7CisJc2l6ZV90CQlhbGxvY2F0ZWRfc2l6ZTsKKwl2b2lkCSAgICpzdHJ1 Y3RQdHI7CisKKwkvKiBsb29rIGl0IHVwIGluIHRoZSBzaG1lbSBpbmRleCAqLworCWluZGV4X2Vu dHJ5ID0gKFNobWVtSW5kZXhFbnQgKikKKwkJaGFzaF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwg SEFTSF9FTlRFUl9OVUxMLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgInNo YXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgbmFtZSk7 CisJaWYgKCFpbmRleF9lbnRyeSkKKwl7CisJCS8qIHRyaWVkIHRvIGFkZCBpdCB0byB0aGUgaGFz aCB0YWJsZSwgYnV0IHRoZXJlIHdhcyBubyBzcGFjZSAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJIGVycm1zZygiY291bGQgbm90 IGNyZWF0ZSBTaG1lbUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVjdHVyZSBcIiVzXCIiLAorCQkJ CQkJbmFtZSkpKTsKKwl9CisKKwkvKgorCSAqIFdlIGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUg c2hhcmVkIG1lbW9yeSBpbmRleC4gIEFsbG9jYXRlIHJlcXVlc3RlZAorCSAqIGFtb3VudCBvZiBz aGFyZWQgbWVtb3J5IGZvciBpdCwgYW5kIGluaXRpYWxpemUgdGhlIGluZGV4IGVudHJ5LgorCSAq LworCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwgJmFs bG9jYXRlZF9zaXplKTsKKwlpZiAoc3RydWN0UHRyID09IE5VTEwpCisJeworCQkvKiBvdXQgb2Yg bWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4IGVudHJ5ICovCisJCWhhc2hfc2Vh cmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coIm5v dCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmUiCisJCQkJCQkiIFwiJXNc IiAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAorCQkJCQkJbmFtZSwgcmVxdWVzdC0+b3B0aW9ucy0+ c2l6ZSkpKTsKKwl9CisJaW5kZXhfZW50cnktPnNpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5zaXpl OworCWluZGV4X2VudHJ5LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXplOworCWluZGV4 X2VudHJ5LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKworCS8qIEluaXRpYWxpemUgZGVwZW5kaW5n IG9uIHRoZSBraW5kIG9mIHNobWVtIGFyZWEgaXQgaXMgKi8KKwlzd2l0Y2ggKHJlcXVlc3QtPmtp bmQpCisJeworCQljYXNlIFNITUVNX0tJTkRfU1RSVUNUOgorCQkJaWYgKHJlcXVlc3QtPm9wdGlv bnMtPnB0cikKKwkJCQkqKHJlcXVlc3QtPm9wdGlvbnMtPnB0cikgPSBpbmRleF9lbnRyeS0+bG9j YXRpb247CisJCQlicmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CisJCQlzaG1lbV9oYXNo X2luaXQoc3RydWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOworCX0KK30KKwor LyoKKyAqIExvb2sgdXAgYSBuYW1lZCBzaG1lbSBhcmVhIGluIHRoZSBzaGFyZWQgbWVtb3J5IGlu ZGV4IGFuZCBhdHRhY2ggdG8gaXQuCisgKgorICogTm90ZSB0aGF0IHRoaXMgb25seSBwZXJmb3Jt cyB0aGUgYmFzaWMgYXR0YWNobWVudCBhY3Rpb25zIGRlcGVuZGluZyBvbgorICogU2htZW1SZXF1 ZXN0S2luZCwgbGlrZSBzZXR0aW5nIHRoZSBnbG9iYWwgcG9pbnRlciB2YXJpYWJsZSB0byB0aGUg YXJlYSBmb3IKKyAqIFNITUVNX0tJTkRfU1RSVUNUIG9yIHNldHRpbmcgdXAgdGhlIGJhY2tlbmQt cHJpdmF0ZSBIVEFCIGNvbnRyb2wgc3RydWN0LgorICogVGhpcyBkb2VzICpub3QqIGNhbGwgdGhl IHN1YnN5c3RlbS1zcGVjaWZpYyBhdHRhY2ggY2FsbGJhY2tzLiAgVGhhdCdzIGRvbmUKKyAqIGxh dGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIG9yIGF0 dGFjaGVkIHRvLgorICovCitzdGF0aWMgYm9vbAorQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVt UmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQoreworCWNvbnN0IGNoYXIgKm5hbWUg PSByZXF1ZXN0LT5vcHRpb25zLT5uYW1lOworCVNobWVtSW5kZXhFbnQgKmluZGV4X2VudHJ5Owor CisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggKi8KKwlpbmRleF9lbnRyeSA9IChT aG1lbUluZGV4RW50ICopCisJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRklO RCwgTlVMTCk7CisJaWYgKCFpbmRleF9lbnRyeSkKKwl7CisJCWlmICghbWlzc2luZ19vaykKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmaW5kIFNobWVtSW5kZXgg ZW50cnkgZm9yIGRhdGEgc3RydWN0dXJlIFwiJXNcIiIsCisJCQkJCQkJcmVxdWVzdC0+b3B0aW9u cy0+bmFtZSkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENoZWNrIHRoYXQgdGhlIHNp emUgaW4gdGhlIGluZGV4IG1hdGNoZXMgdGhlIHJlcXVlc3QuICovCisJaWYgKGluZGV4X2VudHJ5 LT5zaXplICE9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemUgJiYKKwkJcmVxdWVzdC0+b3B0aW9ucy0+ c2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0 aCIgXAorCQkJCQkJIiBkaWZmZXJlbnQgc2l6ZTogZXhpc3RpbmcgJXp1LCByZXF1ZXN0ZWQgJXp1 IiwKKwkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRpb25zLT5zaXpl KSkpOworCX0KKworCS8qCisJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBwb2ludGVyIHZh cmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCisJICogYXR0YWNoIGRlcGVuZGluZyBvbiB0 aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgorCSAqLworCXN3aXRjaCAocmVxdWVzdC0+a2lu ZCkKKwl7CisJCWNhc2UgU0hNRU1fS0lORF9TVFJVQ1Q6CisJCQlpZiAocmVxdWVzdC0+b3B0aW9u cy0+cHRyKQorCQkJCSoocmVxdWVzdC0+b3B0aW9ucy0+cHRyKSA9IGluZGV4X2VudHJ5LT5sb2Nh dGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFNITUVNX0tJTkRfSEFTSDoKKwkJCXNobWVtX2hhc2hf YXR0YWNoKGluZGV4X2VudHJ5LT5sb2NhdGlvbiwgcmVxdWVzdC0+b3B0aW9ucyk7CisJCQlicmVh azsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqCUluaXRTaG1lbUFsbG9jYXRvcigp IC0tLSBzZXQgdXAgYmFzaWMgcG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KICAqCiAgKiBDYWxs ZWQgYXQgcG9zdG1hc3RlciBvciBzdGFuZC1hbG9uZSBiYWNrZW5kIHN0YXJ0dXAsIHRvIGluaXRp YWxpemUgdGhlCiAgKiBhbGxvY2F0b3IncyBkYXRhIHN0cnVjdHVyZSBpbiB0aGUgc2hhcmVkIG1l bW9yeSBzZWdtZW50LiAgSW4gRVhFQ19CQUNLRU5ELAotICogdGhpcyBpcyBhbHNvIGNhbGxlZCBh dCBiYWNrZW5kIHN0YXJ0dXAsIHRvIHNldCB1cCBwb2ludGVycyB0byB0aGUgc2hhcmVkCi0gKiBt ZW1vcnkgYXJlYXMuCisgKiB0aGlzIGlzIGFsc28gY2FsbGVkIGF0IGJhY2tlbmQgc3RhcnR1cCwg dG8gc2V0IHVwIHBvaW50ZXJzIHRvIHRoZQorICogYWxyZWFkeS1pbml0aWFsaXplZCBkYXRhIHN0 cnVjdHVyZS4KICAqLwogdm9pZAogSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNl Z2hkcikKIHsKIAlTaXplCQlvZmZzZXQ7CisJaW50NjQJCWhhc2hfbmVsZW1zOwogCUhBU0hDVEwJ CWluZm87CiAJaW50CQkJaGFzaF9mbGFnczsKIApAQCAtMTQyLDYgKzYyOCwxNiBAQCBJbml0U2ht ZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogI2VuZGlmCiAJQXNzZXJ0KHNlZ2hk ciAhPSBOVUxMKTsKIAorCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwl7CisJCUFzc2VydChzaG1l bV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0 KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX1JFUVVFU1RJTkcpOworCQlzaG1lbV9yZXF1ZXN0 X3N0YXRlID0gU1JTX0lOSVRJQUxJWklORzsKKwl9CisKIAkvKgogCSAqIFdlIGFzc3VtZSB0aGUg cG9pbnRlciBhbmQgb2Zmc2V0IGFyZSBNQVhBTElHTi4gIE5vdCBhIGhhcmQgcmVxdWlyZW1lbnQs CiAJICogYnV0IGl0J3MgdHJ1ZSB0b2RheSBhbmQga2VlcHMgdGhlIG1hdGggYmVsb3cgc2ltcGxl ci4KQEAgLTE4NiwxOSArNjgyLDIxIEBAIEluaXRTaG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVy ICpzZWdoZHIpCiAJICogdXNlIFNobWVtSW5pdEhhc2goKSBoZXJlIGJlY2F1c2UgaXQgcmVsaWVz IG9uIFNobWVtSW5kZXggYmVpbmcgYWxyZWFkeQogCSAqIGluaXRpYWxpemVkLgogCSAqLworCWhh c2hfbmVsZW1zID0gbGlzdF9sZW5ndGgocGVuZGluZ19zaG1lbV9yZXF1ZXN0cykgKyBTSE1FTV9J TkRFWF9BRERJVElPTkFMX1NJWkU7CisKIAlpbmZvLmtleXNpemUgPSBTSE1FTV9JTkRFWF9LRVlT SVpFOwogCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNobWVtSW5kZXhFbnQpOwogCWhhc2hfZmxh Z3MgPSBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0ZJWEVEX1NJWkU7CiAKIAlpZiAo IUlzVW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUgPSBo YXNoX2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhfU0laRSwgaW5mby5lbnRyeXNpemUpOworCQlT aG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShoYXNoX25lbGVt cywgaW5mby5lbnRyeXNpemUpOwogCQlTaG1lbUFsbG9jYXRvci0+aW5kZXggPSAoSEFTSEhEUiAq KSBTaG1lbUFsbG9jKFNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplKTsKIAl9CiAJU2htZW1JbmRl eCA9IHNobWVtX2hhc2hfY3JlYXRlKFNobWVtQWxsb2NhdG9yLT5pbmRleCwKIAkJCQkJCQkJICAg U2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUsCiAJCQkJCQkJCSAgIElzVW5kZXJQb3N0bWFzdGVy LAotCQkJCQkJCQkgICAiU2htZW1JbmRleCIsIFNITUVNX0lOREVYX1NJWkUsCisJCQkJCQkJCSAg ICJTaG1lbUluZGV4IiwgaGFzaF9uZWxlbXMsCiAJCQkJCQkJCSAgICZpbmZvLCBoYXNoX2ZsYWdz KTsKIAlBc3NlcnQoU2htZW1JbmRleCAhPSBOVUxMKTsKIApAQCAtMjE5LDYgKzcxNywyMyBAQCBJ bml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogCX0KIH0KIAorLyoKKyAq IFJlc2V0IHN0YXRlIG9uIHBvc3RtYXN0ZXIgY3Jhc2ggcmVzdGFydC4KKyAqLwordm9pZAorUmVz ZXRTaG1lbUFsbG9jYXRvcih2b2lkKQoreworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOwor CXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfSU5JVElBTDsKKworCXBlbmRpbmdfc2htZW1fcmVx dWVzdHMgPSBOSUw7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBjbGVhciB0aGUgcmVn aXN0ZXJlZCBjYWxsYmFja3MuICBXZSB3aWxsIG5lZWQgdG8KKwkgKiBjYWxsIHRoZW0gYWdhaW4g YXMgd2UgcmVzdGFydAorCSAqLworfQorCiAvKgogICogU2htZW1BbGxvYyAtLSBhbGxvY2F0ZSBt YXgtYWxpZ25lZCBjaHVuayBmcm9tIHNoYXJlZCBtZW1vcnkKICAqCkBAIC0zMTYsOTIgKzgzMSwx OTEgQEAgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKQogfQogCiAvKgotICogU2ht ZW1Jbml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1l bW9yeS4KKyAqIFJlZ2lzdGVyIGNhbGxiYWNrcyB0aGF0IGRlZmluZSBhIHNoYXJlZCBtZW1vcnkg YXJlYSAob3IgbXVsdGlwbGUgYXJlYXMpLgogICoKLSAqCQlUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5pdGlhbGl6YXRpb24gdG8gZmluZCBvciBhbGxvY2F0ZQotICoJCWEgZGF0YSBzdHJ1Y3R1cmUg aW4gc2hhcmVkIG1lbW9yeS4gIElmIG5vIG90aGVyIHByb2Nlc3MKLSAqCQloYXMgY3JlYXRlZCB0 aGUgc3RydWN0dXJlLCB0aGlzIHJvdXRpbmUgYWxsb2NhdGVzIHNwYWNlCi0gKgkJZm9yIGl0LiAg SWYgaXQgZXhpc3RzIGFscmVhZHksIGEgcG9pbnRlciB0byB0aGUgZXhpc3RpbmcKLSAqCQlzdHJ1 Y3R1cmUgaXMgcmV0dXJuZWQuCisgKiBUaGUgc3lzdGVtIHdpbGwgY2FsbCB0aGUgY2FsbGJhY2tz IGF0IGRpZmZlcmVudCBzdGFnZXMgb2YgcG9zdG1hc3RlciBvcgorICogYmFja2VuZCBzdGFydHVw LCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgYXJlYS4KICAqCi0gKglSZXR1cm5zOiBw b2ludGVyIHRvIHRoZSBvYmplY3QuICAqZm91bmRQdHIgaXMgc2V0IHRydWUgaWYgdGhlIG9iamVj dCB3YXMKLSAqCQlhbHJlYWR5IGluIHRoZSBzaG1lbSBpbmRleCAoaGVuY2UsIGFscmVhZHkgaW5p dGlhbGl6ZWQpLgorICogVGhpcyBpcyBub3JtYWxseSBjYWxsZWQgZWFybHkgZHVyaW5nIHBvc3Rt YXN0ZXIgc3RhcnR1cCwgYnV0IGlmIHRoZQorICogU0hNRU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVS X1NUQVJUVVAgaXMgc2V0LCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgYWZ0ZXIKKyAqIHN0YXJ0dXAs IGFsdGhvdWdoIGFmdGVyIHN0YXJ0dXAgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGVyZSdz IGVub3VnaAorICogc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuICBXaGVuIGNhbGxlZCBhZnRlciBz dGFydHVwLCB0aGlzIGltbWVkaWF0ZWx5IGNhbGxzCisgKiB0aGUgcmlnaHQgY2FsbGJhY2tzIGRl cGVuZGluZyBvbiB3aGV0aGVyIGFub3RoZXIgYmFja2VuZCBoYWQgYWxyZWFkeQorICogaW5pdGlh bGl6ZWQgdGhlIGFyZWEuCiAgKgotICoJTm90ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhpcyBm dW5jdGlvbiByZXR1cm5lZCBOVUxMIGZvciBzb21lIGZhaWx1cmUKLSAqCWNhc2VzLiAgTm93LCBp dCBhbHdheXMgdGhyb3dzIGVycm9yIGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBub3QgY2hlY2sK LSAqCWZvciBOVUxMLgorICogTm90ZTogSW4gRVhFQ19CQUNLRU5EIG1vZGUsIHRoaXMgbmVlZHMg dG8gYmUgY2FsbGVkIGluIGV2ZXJ5IGJhY2tlbmQKKyAqIHByb2Nlc3MuICBUaGF0J3MgbmVlZGVk IGJlY2F1c2Ugd2UgY2Fubm90IHBhc3MgZG93biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAqIHBv aW50ZXJzIGZyb20gdGhlIHBvc3RtYXN0ZXIgcHJvY2VzcywgYmVjYXVzZSBkaWZmZXJlbnQgcHJv Y2Vzc2VzIG1heSBoYXZlCisgKiBsb2FkZWQgbGlicmFyaWVzIHRvIGRpZmZlcmVudCBhZGRyZXNz ZXMuCiAgKi8KLXZvaWQgKgotU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUg c2l6ZSwgYm9vbCAqZm91bmRQdHIpCit2b2lkCitSZWdpc3RlclNobWVtQ2FsbGJhY2tzKGNvbnN0 IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpCiB7Ci0JU2htZW1JbmRleEVudCAqcmVzdWx0Owot CXZvaWQJICAgKnN0cnVjdFB0cjsKKwlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfRE9O RSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKKwl7CisJCS8qCisJCSAqIEFmdGVyLXN0YXJ0dXAgaW5p dGlhbGl6YXRpb24gb3IgYXR0YWNobWVudC4gIENhbGwgdGhlIGFwcHJvcHJpYXRlCisJCSAqIGNh bGxiYWNrcyBpbW1tZWRpYXRlbHkuCisJCSAqLworCQlpZiAoKGNhbGxiYWNrcy0+ZmxhZ3MgJiBT SE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUCkgPT0gMCkKKwkJCWVsb2coRVJST1Is ICJjYW5ub3QgcmVxdWVzdCBzaGFyZWQgbWVtb3J5IGF0IHRoaXMgdGltZSIpOwogCi0JQXNzZXJ0 KFNobWVtSW5kZXggIT0gTlVMTCk7CisJCUNhbGxTaG1lbUNhbGxiYWNrc0FmdGVyU3RhcnR1cChj YWxsYmFja3MpOworCX0KKwllbHNlCisJeworCQkvKiBSZW1lbWJlciB0aGUgY2FsbGJhY2tzIGZv ciBsYXRlciAqLworCQlyZWdpc3RlcmVkX3NobWVtX2NhbGxiYWNrcyA9IGxhcHBlbmQocmVnaXN0 ZXJlZF9zaG1lbV9jYWxsYmFja3MsCisJCQkJCQkJCQkJCSAodm9pZCAqKSBjYWxsYmFja3MpOwor CX0KK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgc2htZW0gYXJlYSAob3IgbXVsdGlwbGUgYXJlYXMp IGFmdGVyIHN0YXJ0dXAuCisgKi8KK3N0YXRpYyB2b2lkCitDYWxsU2htZW1DYWxsYmFja3NBZnRl clN0YXJ0dXAoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcykKK3sKKwlib29sCQlmb3Vu ZF9hbnk7CisJYm9vbAkJbm90Zm91bmRfYW55OworCisJQXNzZXJ0KHNobWVtX3JlcXVlc3Rfc3Rh dGUgPT0gU1JTX0RPTkUpOworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfUkVRVUVTVElORzsK KworCS8qCisJICogQ2FsbCB0aGUgcmVxdWVzdCBjYWxsYmFjayBmaXJzdC4gVGhlIGNhbGxiYWNr IG1ha2UgU2htZW1SZXF1ZXN0KigpCisJICogY2FsbHMgZm9yIGVhY2ggc2htZW0gYXJlYSwgYWRk aW5nIHRoZW0gdG8gcGVuZGluZ19zaG1lbV9yZXF1ZXN0cy4KKwkgKi8KKwlBc3NlcnQocGVuZGlu Z19zaG1lbV9yZXF1ZXN0cyA9PSBOSUwpOworCWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJ CWNhbGxiYWNrcy0+cmVxdWVzdF9mbihjYWxsYmFja3MtPnJlcXVlc3RfZm5fYXJnKTsKKwlzaG1l bV9yZXF1ZXN0X3N0YXRlID0gU1JTX0FGVEVSX1NUQVJUVVBfQVRUQUNIX09SX0lOSVQ7CisKKwlp ZiAocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9PSBOSUwpCisJeworCQlzaG1lbV9yZXF1ZXN0X3N0 YXRlID0gU1JTX0RPTkU7CisJCXJldHVybjsKKwl9CiAKKwkvKiBIb2xkIFNobWVtSW5kZXhMb2Nr IHdoaWxlIHdlIGFsbG9jYXRlIGFsbCB0aGUgc2htZW0gZW50cmllcyAqLwogCUxXTG9ja0FjcXVp cmUoU2htZW1JbmRleExvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLwotCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopCi0JCWhhc2hfc2Vh cmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRU5URVJfTlVMTCwgZm91bmRQdHIpOworCS8qCisJ ICogQ2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBzaGFyZWQgbWVtb3J5IGFyZWFzIGhhdmUgYWxyZWFk eSBiZWVuCisJICogaW5pdGlhbGl6ZWQuICBXZSBhc3N1bWUgYWxsIHRoZSBhcmVhcyByZXF1ZXN0 ZWQgYnkgdGhlIHJlcXVlc3QgY2FsbGJhY2sKKwkgKiB0byBmb3JtIGEgY29oZXJlbnQgdW5pdCBz dWNoIHRoYXQgdGhleSdyZSBhbGwgYWxyZWFkeSBpbml0aWFsaXplZCBvcgorCSAqIG5vbmUuICBP dGhlcndpc2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIHdoaWNoIGNhbGxiYWNrLCBpbml0IG9yIGF0 dGFjaCwKKwkgKiB0byBjYWxsYmFjayBhZnRlcndhcmRzLgorCSAqLworCWZvdW5kX2FueSA9IG5v dGZvdW5kX2FueSA9IGZhbHNlOworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwg cGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7CisJCWlmIChoYXNoX3NlYXJjaChTaG1lbUluZGV4 LCByZXF1ZXN0LT5vcHRpb25zLT5uYW1lLCBIQVNIX0ZJTkQsIE5VTEwpKQorCQkJZm91bmRfYW55 ID0gdHJ1ZTsKKwkJZWxzZQorCQkJbm90Zm91bmRfYW55ID0gdHJ1ZTsKKwl9CisJaWYgKGZvdW5k X2FueSAmJiBub3Rmb3VuZF9hbnkpCisJCWVsb2coRVJST1IsICJmb3VuZCBzb21lIGJ1dCBub3Qg YWxsIik7CiAKLQlpZiAoIXJlc3VsdCkKKwkvKgorCSAqIEFsbG9jYXRlIG9yIGF0dGFjaCBhbGwg dGhlIHNobWVtIGFyZWFzIHJlcXVlc3RlZCBieSB0aGUgcmVxdWVzdF9mbgorCSAqIGNhbGxiYWNr LgorCSAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwgcGVuZGluZ19zaG1l bV9yZXF1ZXN0cykKIAl7Ci0JCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQllcmVw b3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJIGVy cm1zZygiY291bGQgbm90IGNyZWF0ZSBTaG1lbUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVjdHVy ZSBcIiVzXCIiLAotCQkJCQkJbmFtZSkpKTsKKwkJaWYgKGZvdW5kX2FueSkKKwkJCUF0dGFjaFNo bWVtSW5kZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJCWVsc2UKKwkJCUluaXRTaG1lbUluZGV4 RW50cnkocmVxdWVzdCk7CiAJfQorCWxpc3RfZnJlZV9kZWVwKHBlbmRpbmdfc2htZW1fcmVxdWVz dHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CiAKLQlpZiAoKmZvdW5kUHRyKQor CS8qIEZpbmlzaCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBzdWJzeXN0ZW0tc3BlY2lmaWMg Y2FsbGJhY2sgKi8KKwlpZiAoZm91bmRfYW55KQogCXsKLQkJLyoKLQkJICogU3RydWN0dXJlIGlz IGluIHRoZSBzaG1lbSBpbmRleCBzbyBzb21lb25lIGVsc2UgaGFzIGFsbG9jYXRlZCBpdAotCQkg KiBhbHJlYWR5LiAgVGhlIHNpemUgYmV0dGVyIGJlIHRoZSBzYW1lIGFzIHRoZSBzaXplIHdlIGFy ZSB0cnlpbmcgdG8KLQkJICogaW5pdGlhbGl6ZSB0bywgb3IgdGhlcmUgaXMgYSBuYW1lIGNvbmZs aWN0IChvciB3b3JzZSkuCi0JCSAqLwotCQlpZiAocmVzdWx0LT5zaXplICE9IHNpemUpCi0JCXsK LQkJCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycm1zZygiU2htZW1JbmRleCBlbnRyeSBzaXplIGlzIHdyb25nIGZvciBkYXRhIHN0cnVj dHVyZSIKLQkJCQkJCQkiIFwiJXNcIjogZXhwZWN0ZWQgJXp1LCBhY3R1YWwgJXp1IiwKLQkJCQkJ CQluYW1lLCBzaXplLCByZXN1bHQtPnNpemUpKSk7Ci0JCX0KLQkJc3RydWN0UHRyID0gcmVzdWx0 LT5sb2NhdGlvbjsKKwkJaWYgKGNhbGxiYWNrcy0+YXR0YWNoX2ZuKQorCQkJY2FsbGJhY2tzLT5h dHRhY2hfZm4oY2FsbGJhY2tzLT5hdHRhY2hfZm5fYXJnKTsKIAl9CiAJZWxzZQogCXsKLQkJU2l6 ZQkJYWxsb2NhdGVkX3NpemU7Ci0KLQkJLyogSXQgaXNuJ3QgaW4gdGhlIHRhYmxlIHlldC4gYWxs b2NhdGUgYW5kIGluaXRpYWxpemUgaXQgKi8KLQkJc3RydWN0UHRyID0gU2htZW1BbGxvY1Jhdyhz aXplLCAmYWxsb2NhdGVkX3NpemUpOwotCQlpZiAoc3RydWN0UHRyID09IE5VTEwpCi0JCXsKLQkJ CS8qIG91dCBvZiBtZW1vcnk7IHJlbW92ZSB0aGUgZmFpbGVkIFNobWVtSW5kZXggZW50cnkgKi8K LQkJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKLQkJ CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKLQkJCQkJIGVycm1zZygibm90IGVub3Vn aCBzaGFyZWQgbWVtb3J5IGZvciBkYXRhIHN0cnVjdHVyZSIKLQkJCQkJCQkiIFwiJXNcIiAoJXp1 IGJ5dGVzIHJlcXVlc3RlZCkiLAotCQkJCQkJCW5hbWUsIHNpemUpKSk7Ci0JCX0KLQkJcmVzdWx0 LT5zaXplID0gc2l6ZTsKLQkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXpl OwotCQlyZXN1bHQtPmxvY2F0aW9uID0gc3RydWN0UHRyOworCQlpZiAoY2FsbGJhY2tzLT5pbml0 X2ZuKQorCQkJY2FsbGJhY2tzLT5pbml0X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9hcmcpOwogCX0K IAogCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCXNobWVtX3JlcXVlc3Rfc3RhdGUg PSBTUlNfRE9ORTsKK30KIAotCUFzc2VydChTaG1lbUFkZHJJc1ZhbGlkKHN0cnVjdFB0cikpOwor LyoKKyAqIENhbGwgYWxsIHNobWVtIHJlcXVlc3QgY2FsbGJhY2tzLgorICovCit2b2lkCitTaG1l bUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CiAKLQlBc3Nl cnQoc3RydWN0UHRyID09ICh2b2lkICopIENBQ0hFTElORUFMSUdOKHN0cnVjdFB0cikpOworCUFz c2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwlzaG1lbV9yZXF1ZXN0 X3N0YXRlID0gU1JTX1JFUVVFU1RJTkc7CisKKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVt X2NhbGxiYWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAoY29u c3QgU2htZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKIAotCXJldHVybiBzdHJ1Y3RQdHI7CisJ CWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJCQljYWxsYmFja3MtPnJlcXVlc3RfZm4oY2Fs bGJhY2tzLT5yZXF1ZXN0X2ZuX2FyZyk7CisJfQogfQogCisvKgorICogU2htZW1Jbml0U3RydWN0 IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9yeS4KKyAqCisg KgkJVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIHRvIGZpbmQgb3IgYWxsb2Nh dGUKKyAqCQlhIGRhdGEgc3RydWN0dXJlIGluIHNoYXJlZCBtZW1vcnkuICBJZiBubyBvdGhlciBw cm9jZXNzCisgKgkJaGFzIGNyZWF0ZWQgdGhlIHN0cnVjdHVyZSwgdGhpcyByb3V0aW5lIGFsbG9j YXRlcyBzcGFjZQorICoJCWZvciBpdC4gIElmIGl0IGV4aXN0cyBhbHJlYWR5LCBhIHBvaW50ZXIg dG8gdGhlIGV4aXN0aW5nCisgKgkJc3RydWN0dXJlIGlzIHJldHVybmVkLgorICoKKyAqCVJldHVy bnM6IHBvaW50ZXIgdG8gdGhlIG9iamVjdC4gICpmb3VuZFB0ciBpcyBzZXQgdHJ1ZSBpZiB0aGUg b2JqZWN0IHdhcworICoJCWFscmVhZHkgaW4gdGhlIHNobWVtIGluZGV4IChoZW5jZSwgYWxyZWFk eSBpbml0aWFsaXplZCkuCisgKgorICogTm90ZTogVGhpcyBpcyBhIGxlZ2FjeSBpbnRlcmZhY2Us IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAqIGV4dGVuc2lvbnMuICBV c2UgU2htZW1SZXF1ZXN0U3RydWN0KCkgaW4gbmV3IGNvZGUhCisgKi8KK3ZvaWQgKgorU2htZW1J bml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCit7 CisJdm9pZAkgICAqcHRyID0gTlVMTDsKKwlTaG1lbVN0cnVjdE9wdHMgb3B0aW9ucyA9IHsKKwkJ Lm5hbWUgPSBuYW1lLAorCQkuc2l6ZSA9IHNpemUsCisJCS5wdHIgPSAmcHRyLAorCX07CisJU2ht ZW1SZXF1ZXN0IHJlcXVlc3QgPSB7Jm9wdGlvbnMsIFNITUVNX0tJTkRfU1RSVUNUfTsKKworCUFz c2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19ET05FIHx8CisJCSAgIHNobWVtX3JlcXVl c3Rfc3RhdGUgPT0gU1JTX0lOSVRJQUxJWklORyB8fAorCQkgICBzaG1lbV9yZXF1ZXN0X3N0YXRl ID09IFNSU19SRVFVRVNUSU5HKTsKKworCUxXTG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExX X0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIER1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAsIGxvb2sg dXAgdGhlIGV4aXN0aW5nIGVudHJ5IGlmIGFueS4KKwkgKi8KKwkqZm91bmRQdHIgPSBmYWxzZTsK KwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCSpmb3VuZFB0ciA9IEF0dGFjaFNobWVtSW5kZXhF bnRyeSgmcmVxdWVzdCwgdHJ1ZSk7CisKKwkvKiBJbml0aWFsaXplIGl0IGlmIG5vdCBmb3VuZCAq LworCWlmICghKmZvdW5kUHRyKQorCQlJbml0U2htZW1JbmRleEVudHJ5KCZyZXF1ZXN0KTsKKwor CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCisJQXNzZXJ0KHB0ciAhPSBOVUxMKTsK KwlyZXR1cm4gcHRyOworfQogCiAvKgogICogQWRkIHR3byBTaXplIHZhbHVlcywgY2hlY2tpbmcg Zm9yIG92ZXJmbG93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9o YXNoLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKaW5kZXggMGIwNTcz MDEyOWUuLmFiMzA0NjFmMjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbV9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCkBA IC0yMSw5ICsyMSw4MSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKKy8qCisgKiBBIHZlcnkgc2ltcGxlIGFsbG9jYXRvciB1 c2VkIHRvIGNhcnZlIG91dCBkaWZmZXJlbnQgcGFydHMgb2YgYSBoYXNoIHRhYmxlCisgKiBmcm9t IGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgY29udGlndW91cyBzaGFyZWQgbWVtb3J5IGFyZWEuCisg Ki8KK3R5cGVkZWYgc3RydWN0IHNobWVtX2hhc2hfYWxsb2NhdG9yCit7CisJY2hhcgkgICAqbmV4 dDsJCQkvKiBzdGFydCBvZiBmcmVlIHNwYWNlIGluIHRoZSBhcmVhICovCisJY2hhcgkgICAqZW5k OwkJCS8qIGVuZCBvZiB0aGUgc2htZW0gYXJlYSAqLworfSBzaG1lbV9oYXNoX2FsbG9jYXRvcjsK IAogc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJn KTsKIAorLyoKKyAqIFNobWVtUmVxdWVzdEhhc2ggLS0gUmVxdWVzdCBhIHNoYXJlZCBtZW1vcnkg aGFzaCB0YWJsZS4KKyAqCisgKiBTaW1pbGFyIHRvIFNobWVtUmVxdWVzdFN0cnVjdCgpLCBidXQg cmVxdWVzdHMgYSBoYXNoIHRhYmxlIGluc3RlYWQgb2YgYW4KKyAqIG9wYXF1ZSBhcmVhLgorICov Cit2b2lkCitTaG1lbVJlcXVlc3RIYXNoV2l0aE9wdHMoY29uc3QgU2htZW1IYXNoT3B0cyAqb3B0 aW9ucykKK3sKKwlTaG1lbUhhc2hPcHRzICpvcHRpb25zX2NvcHk7CisKKwlBc3NlcnQob3B0aW9u cy0+bmFtZSAhPSBOVUxMKTsKKworCW9wdGlvbnNfY29weSA9IE1lbW9yeUNvbnRleHRBbGxvYyhU b3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICBzaXplb2YoU2htZW1IYXNoT3B0cykpOworCW1l bWNweShvcHRpb25zX2NvcHksIG9wdGlvbnMsIHNpemVvZihTaG1lbUhhc2hPcHRzKSk7CisKKwkv KiBTZXQgb3B0aW9ucyBmb3IgdGhlIGZpeGVkLXNpemUgYXJlYSBob2xkaW5nIHRoZSBoYXNoIHRh YmxlICovCisJb3B0aW9uc19jb3B5LT5iYXNlLm5hbWUgPSBvcHRpb25zLT5uYW1lOworCW9wdGlv bnNfY29weS0+YmFzZS5zaXplID0gaGFzaF9lc3RpbWF0ZV9zaXplKG9wdGlvbnNfY29weS0+bmVs ZW1zLAorCQkJCQkJCQkJCQkJIG9wdGlvbnNfY29weS0+aGFzaF9pbmZvLmVudHJ5c2l6ZSk7CisK KwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0aW9uc19jb3B5LT5iYXNlLCBTSE1FTV9LSU5EX0hB U0gpOworfQorCit2b2lkCitzaG1lbV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVtU3Ry dWN0T3B0cyAqYmFzZV9vcHRpb25zKQoreworCVNobWVtSGFzaE9wdHMgKm9wdGlvbnMgPSAoU2ht ZW1IYXNoT3B0cyAqKSBiYXNlX29wdGlvbnM7CisJaW50CQkJaGFzaF9mbGFncyA9IG9wdGlvbnMt Pmhhc2hfZmxhZ3M7CisJSFRBQgkgICAqaHRhYjsKKworCW9wdGlvbnMtPmhhc2hfaW5mby5oY3Rs ID0gbG9jYXRpb247CisJaHRhYiA9IHNobWVtX2hhc2hfY3JlYXRlKGxvY2F0aW9uLCBvcHRpb25z LT5iYXNlLnNpemUsIGZhbHNlLAorCQkJCQkJCSBvcHRpb25zLT5uYW1lLAorCQkJCQkJCSBvcHRp b25zLT5uZWxlbXMsICZvcHRpb25zLT5oYXNoX2luZm8sIGhhc2hfZmxhZ3MpOworCisJaWYgKG9w dGlvbnMtPnB0cikKKwkJKm9wdGlvbnMtPnB0ciA9IGh0YWI7Cit9CisKK3ZvaWQKK3NobWVtX2hh c2hfYXR0YWNoKHZvaWQgKmxvY2F0aW9uLCBTaG1lbVN0cnVjdE9wdHMgKmJhc2Vfb3B0aW9ucykK K3sKKwlTaG1lbUhhc2hPcHRzICpvcHRpb25zID0gKFNobWVtSGFzaE9wdHMgKikgYmFzZV9vcHRp b25zOworCWludAkJCWhhc2hfZmxhZ3MgPSBvcHRpb25zLT5oYXNoX2ZsYWdzOworCUhUQUIJICAg Kmh0YWI7CisKKwkvKiBhdHRhY2ggdG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRp YWxpemUgbmV3IHNwYWNlICovCisJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKKwlvcHRpb25z LT5oYXNoX2luZm8uaGN0bCA9IGxvY2F0aW9uOworCUFzc2VydChvcHRpb25zLT5oYXNoX2luZm8u aGN0bCAhPSBOVUxMKTsKKwlodGFiID0gc2htZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIG9wdGlv bnMtPmJhc2Uuc2l6ZSwgdHJ1ZSwKKwkJCQkJCQkgb3B0aW9ucy0+bmFtZSwKKwkJCQkJCQkgb3B0 aW9ucy0+bmVsZW1zLCAmb3B0aW9ucy0+aGFzaF9pbmZvLCBoYXNoX2ZsYWdzKTsKKworCWlmIChv cHRpb25zLT5wdHIpCisJCSpvcHRpb25zLT5wdHIgPSBodGFiOworfQorCiAvKgogICogU2htZW1J bml0SGFzaCAtLSBDcmVhdGUgYW5kIGluaXRpYWxpemUsIG9yIGF0dGFjaCB0bywgYQogICoJCXNo YXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KQEAgLTQwLDkgKzExMiw4IEBAIHN0YXRpYyB2b2lkICpT aG1lbUhhc2hBbGxvYyhTaXplIHNpemUsIHZvaWQgKmFsbG9jX2FyZyk7CiAgKiB0byBzaGFyZWQt bWVtb3J5IGhhc2ggdGFibGVzIGFyZSBhZGRlZCBoZXJlLCBleGNlcHQgdGhhdCBjYWxsZXJzIG1h eQogICogY2hvb3NlIHRvIHNwZWNpZnkgSEFTSF9QQVJUSVRJT04uCiAgKgotICogTm90ZTogYmVm b3JlIFBvc3RncmVzIDkuMCwgdGhpcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIGZvciBzb21lIGZh aWx1cmUKLSAqIGNhc2VzLiAgTm93LCBpdCBhbHdheXMgdGhyb3dzIGVycm9yIGluc3RlYWQsIHNv IGNhbGxlcnMgbmVlZCBub3QgY2hlY2sKLSAqIGZvciBOVUxMLgorICogTm90ZTogVGhpcyBpcyBh IGxlZ2FjeSBpbnRlcmZhY2UsIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgK KyAqIGV4dGVuc2lvbnMuICBVc2UgU2htZW1SZXF1ZXN0SGFzaCgpIGluIG5ldyBjb2RlIQogICov CiBIVEFCICoKIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmlu ZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwpAQCAtNTYsNyArMTI3LDE0IEBAIFNobWVtSW5pdEhh c2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRl eCAqLwogCiAJc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShuZWxlbXMsIGluZm9QLT5lbnRyeXNp emUpOwogCi0JLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggb3IgYWxsb2NhdGUgKi8K KwkvKgorCSAqIExvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlLgorCSAq CisJICogTk9URTogVGhlIGFyZWEgaXMgcmVxdWVzdGVkIGludGVybmFsbHkgYXMgU0hNRU1fS0lO RF9TVFJVQ1QgaW5zdGVhZCBvZgorCSAqIFNITUVNX0tJTkRfSEFTSC4gIFRoYXQncyBjb3JyZWN0 IGJlY2F1c2Ugd2UgZG8gdGhlIGhhc2ggdGFibGUKKwkgKiBpbml0aWFsaXphdGlvbiBieSBjYWxs aW5nIHNobWVtX2hhc2hfY3JlYXRlKCkgb3Vyc2VsdmVzLiAgKFdlIGRvbid0CisJICogZXhwb3Nl IHRoZSByZXF1ZXN0IGtpbmQgdG8gdXNlcnM7IGlmIHdlIGRpZCwgdGhhdCB3b3VsZCBiZSBjb25m dXNpbmcuKQorCSAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0KG5hbWUsIHNpemUsICZm b3VuZCk7CiAKIAlyZXR1cm4gc2htZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIHNpemUsIGZvdW5k LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNWM0N2NmMTM0NzMuLjliODgwYTZhZjY1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTEyMSw2ICsxMjEsOSBAQCBGYXN0UGF0aExvY2tT aG1lbVNpemUodm9pZCkKIAogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFBy b2NzLCAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElkU2l6ZSkpKTsKIAorCUFzc2VydChUb3RhbFBy b2NzID4gMCk7CisJQXNzZXJ0KHNpemUgPiAwKTsKKwogCXJldHVybiBzaXplOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggMTBiZTYwMDExYWQuLjkzODUxMjY5ZTQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZh bC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInRjb3AvYmFja2Vu ZF9zdGFydHVwLmgiCkBAIC00MTU1LDcgKzQxNTYsMTQgQEAgUG9zdGdyZXNTaW5nbGVVc2VyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAK IAkvKgotCSAqIEdpdmUgcHJlbG9hZGVkIGxpYnJhcmllcyBhIGNoYW5jZSB0byByZXF1ZXN0IGFk ZGl0aW9uYWwgc2hhcmVkIG1lbW9yeS4KKwkgKiBCZWZvcmUgY29tcHV0aW5nIHRoZSB0b3RhbCBz aXplIG5lZWRlZCwgZ2l2ZSBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nCisJICogYWRkLWlucywg YSBjaGFuY2UgdG8gY2hhbmNlIHRvIGFkanVzdCB0aGVpciByZXF1ZXN0ZWQgc2htZW0gc2l6ZXMu CisJICovCisJU2htZW1DYWxsUmVxdWVzdENhbGxiYWNrcygpOworCisJLyoKKwkgKiBBbHNvIGNh bGwgYW55IGxlZ2FjeSBzaG1lbSByZXF1ZXN0IGhvb2tzIHRoYXQgbWlnaHQnYmUgYmVlbiBpbnN0 YWxsZWQKKwkgKiBieSBwcmVsb2FkZWQgbGlicmFyaWVzLgogCSAqLwogCXByb2Nlc3Nfc2htZW1f cmVxdWVzdHMoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCmluZGV4IDgyZjU0MDNjOTUyLi4xNDdhNjkxNWY3 ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaApAQCAtMyw2ICszLDExIEBACiAgKiBzaG1lbS5oCiAgKgkgIHNo YXJlZCBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmVzCiAgKgorICogVGhpcyBmaWxlIGNvbnRh aW5zIHB1YmxpYyBmdW5jdGlvbnMgZm9yIG90aGVyIGNvcmUgc3Vic3lzdGVtcyBhbmQKKyAqIGV4 dGVuc2lvbnMgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS4gIEludGVybmFsIGZ1bmN0aW9ucyBm b3IgdGhlIHNobWVtCisgKiBhbGxvY2F0b3IgaXRzZWxmIGFuZCBob29raW5nIGl0IHRvIHRoZSBy ZXN0IG9mIHRoZSBzeXN0ZW0gYXJlIGluCisgKiBzaG1lbV9pbnRlcm5hbC5oCisgKgogICogSGlz dG9yaWNhbCBub3RlOgogICogQSBsb25nIHRpbWUgYWdvLCBQb3N0Z3Jlcycgc2hhcmVkIG1lbW9y eSByZWdpb24gd2FzIGFsbG93ZWQgdG8gYmUgbWFwcGVkCiAgKiBhdCBhIGRpZmZlcmVudCBhZGRy ZXNzIGluIGVhY2ggcHJvY2VzcywgYW5kIHNoYXJlZCBtZW1vcnkgInBvaW50ZXJzIiB3ZXJlCkBA IC0yMyw0MyArMjgsMTY1IEBACiAKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAKKy8qCisg KiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RTdHJ1Y3QoKQorICoKKyAqICduYW1lJyBhbmQgJ3Np emUnIGFyZSByZXF1aXJlZC4gIEluaXRpYWxpemUgYW55IG9wdGlvbmFsIGZpZWxkcyB0aGF0IHlv dQorICogZG9uJ3QgdXNlIHRvIHplcm9zLgorICoKKyAqIEFmdGVyIHJlZ2lzdHJhdGlvbiwgdGhl IHNobWVtIG1hY2hpbmVyeSByZXNlcnZlcyBtZW1vcnkgZm9yIHRoZSBhcmVhLCBzZXRzCisgKiAn KnB0cicgdG8gcG9pbnQgdG8gdGhlIGFsbG9jYXRpb24sIGFuZCBjYWxscyB0aGUgY2FsbGJhY2tz IGF0IHRoZSByaWdodAorICogbW9tZW50cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2htZW1TdHJ1 Y3RPcHRzCit7CisJY29uc3QgY2hhciAqbmFtZTsKIAotLyogc2htZW0uYyAqLwotdHlwZWRlZiBz dHJ1Y3QgUEdTaG1lbUhlYWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKLQkJ CQkJCQkJCQkJICogc3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KLWV4dGVybiB2b2lkIEluaXRT aG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpOwotZXh0ZXJuIHZvaWQgKlNobWVt QWxsb2MoU2l6ZSBzaXplKTsKLWV4dGVybiB2b2lkICpTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNp emUpOwotZXh0ZXJuIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2Nf YXJnKTsKKwkvKgorCSAqIFJlcXVlc3RlZCBzaXplIG9mIHRoZSBzaG1lbSBhbGxvY2F0aW9uLgor CSAqCisJICogV2hlbiBhdHRhY2hpbmcgdG8gYW4gZXhpc3RpbmcgYWxsb2NhdGlvbiwgdGhlIHNp emUgbXVzdCBtYXRjaCB0aGUgc2l6ZQorCSAqIGdpdmVuIHdoZW4gdGhlIHNobWVtIHJlZ2lvbiB3 YXMgYWxsb2NhdGVkLiAgVGhpcyBjcm9zcy1jaGVjayBjYW4gYmUKKwkgKiBkaXNhYmxlZCBzcGVj aWZ5aW5nIFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUuCisJICovCisJc3NpemVfdAkJc2l6ZTsK KworCS8qCisJICogV2hlbiB0aGUgc2htZW0gYXJlYSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hl ZCB0bywgcG9pbnRlciB0byBpdCBpcworCSAqIHN0b3JlZCBpbiAqcHRyLiAgSXQgdXN1YWxseSBw b2ludHMgdG8gYSBnbG9iYWwgdmFyaWFibGUsIHVzZWQgdG8gYWNjZXNzCisJICogdGhlIHNoYXJl ZCBtZW1vcnkgYXJlYSBsYXRlci4gICpwdHIgaXMgc2V0IGJlZm9yZSB0aGUgaW5pdF9mbiBvcgor CSAqIGF0dGFjaF9mbiBjYWxsYmFjayBpcyBjYWxsZWQuCisJICovCisJdm9pZAkgICoqcHRyOwor fSBTaG1lbVN0cnVjdE9wdHM7CisKKyNkZWZpbmUgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSAo LTEpCisKKy8qCisgKiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RIYXNoKCkKKyAqCisgKiBFYWNo IGhhc2ggdGFibGUgaXMgYmFja2VkIGJ5IGFuIGFsbG9jYXRlZCBhcmVhLCBidXQgaWYgJ21heF9z aXplJyBpcworICogZ3JlYXRlciB0aGFuICdpbml0X3NpemUnLCBpdCBjYW4gYWxzbyBncm93IGJl eW9uZCB0aGUgaW5pdGlhbCBhbGxvY2F0ZWQKKyAqIGFyZWEgYnkgYWxsb2NhdGluZyBtb3JlIGhh c2ggZW50cmllcyBmcm9tIHRoZSBnbG9iYWwgdW5yZXNlcnZlZCBzcGFjZS4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgU2htZW1IYXNoT3B0cworeworCVNobWVtU3RydWN0T3B0cyBiYXNlOworCisJLyoK KwkgKiBOYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuICBSZXF1aXJlZC4gIE11c3QgYmUg dW5pcXVlIGFjcm9zcyB0aGUKKwkgKiBzeXN0ZW0uCisJICovCisJY29uc3QgY2hhciAqbmFtZTsK KworCS8qCisJICogJ25lbGVtcycgaXMgdGhlIG1heCBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHRo ZSBoYXNoIHRhYmxlLgorCSAqLworCWludDY0CQluZWxlbXM7CisKKwkvKgorCSAqIEhhc2ggdGFi bGUgb3B0aW9ucyBwYXNzZWQgdG8gaGFzaF9jcmVhdGUoKQorCSAqCisJICogaGFzaF9pbmZvIGFu ZCBoYXNoX2ZsYWdzIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCB0aGUgZW50cnkgc2l6ZXMgYW5kIGtl eQorCSAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBGbGFnIGJp dHMgYW5kIHZhbHVlcworCSAqIHNwZWNpZmljIHRvIHNoYXJlZC1tZW1vcnkgaGFzaCB0YWJsZXMg YXJlIGFkZGVkIGltcGxpY2l0bHkgaW4KKwkgKiBTaG1lbVJlcXVlc3RIYXNoKCksIGV4Y2VwdCB0 aGF0IGNhbGxlcnMgbWF5IGNob29zZSB0byBzcGVjaWZ5CisJICogSEFTSF9QQVJUSVRJT04gYW5k L29yIEhBU0hfRklYRURfU0laRS4KKwkgKi8KKwlIQVNIQ1RMCQloYXNoX2luZm87CisJaW50CQkJ aGFzaF9mbGFnczsKKworCS8qCisJICogV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXpl ZCBvciBhdHRhY2hlZCB0bywgcG9pbnRlciB0byBpdHMKKwkgKiBiYWNrZW5kLXByaXZhdGUgaGFu ZGxlIGlzIHN0b3JlZCBpbiAqcHRyLiAgSXQgdXN1YWxseSBwb2ludHMgdG8gYQorCSAqIGdsb2Jh bCB2YXJpYWJsZSwgdXNlZCB0byBhY2Nlc3MgdGhlIGhhc2ggdGFibGUgbGF0ZXIuCisJICovCisJ SFRBQgkgICoqcHRyOworfSBTaG1lbUhhc2hPcHRzOworCit0eXBlZGVmIHZvaWQgKCpTaG1lbVJl cXVlc3RDYWxsYmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUluaXRDYWxs YmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxiYWNrKSAo dm9pZCAqYXJnKTsKKworLyoKKyAqIFNoYXJlZCBtZW1vcnkgaXMgcmVzZXJ2ZWQgYW5kIGFsbG9j YXRlZCBpbiBzdGFnZXMgYXQgcG9zdG1hc3RlciBzdGFydHVwLAorICogYW5kIGluIEVYRUNfQkFD S0VORCBtb2RlLCB0aGVyZSdzIHNvbWUgZXh0cmEgd29yayBkb25lIHRvICJhdHRhY2giIHRvIHRo ZW0KKyAqIGF0IGJhY2tlbmQgc3RhcnR1cC4gIFNobWVtQ2FsbGJhY2tzIGhvbGRzIGNhbGxiYWNr IGZ1bmN0aW9ucyB0aGF0IGFyZQorICogY2FsbGVkIGF0IGRpZmZlcmVudCBzdGFnZXMuCisgKi8K K3R5cGVkZWYgc3RydWN0IFNobWVtQ2FsbGJhY2tzCit7CisJLyogU0hNRU1fQ0FMTEJBQ0tTXyog ZmxhZ3MgKi8KKwlpbnQJCQlmbGFnczsKKworCS8qCisJICogJ3JlcXVlc3RfZm4nIGlzIGNhbGxl ZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZAorCSAqIG1lbW9y eSBoYXMgYmVlbiBhbGxvY2F0ZWQuICBUaGUgZnVuY3Rpb24gc2hvdWxkIGNhbGwKKwkgKiBSZXF1 ZXN0U2htZW1TdHJ1Y3QoKSBhbmQgUmVxdWVzdFNobWVtSGFzaCgpIHRvIHJlZ2lzdGVyIHRoZSBz dWJzeXN0ZW0ncworCSAqIHNoYXJlZCBtZW1vcnkgbmVlZHMuCisJICovCisJU2htZW1SZXF1ZXN0 Q2FsbGJhY2sgcmVxdWVzdF9mbjsKKwl2b2lkCSAgICpyZXF1ZXN0X2ZuX2FyZzsKKworCS8qCisJ ICogSW5pdGlhbGl6YXRpb24gY2FsbGJhY2sgZnVuY3Rpb24uICBUaGlzIGlzIGNhbGxlZCB3aGVu IHRoZSBzaGFyZWQKKwkgKiBtZW1vcnkgYXJlYSBpcyBhbGxvY2F0ZWQsIHVzdWFsbHkgYXQgcG9z dG1hc3RlciBzdGFydHVwLgorCSAqLworCVNobWVtSW5pdENhbGxiYWNrIGluaXRfZm47CisJdm9p ZAkgICAqaW5pdF9mbl9hcmc7CisKKwkvKgorCSAqIEF0dGFjaG1lbnQgY2FsbGJhY2sgZnVuY3Rp b24uICBJbiBFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBjYWxsZWQgYXQKKwkgKiBzdGFydHVw IG9mIGVhY2ggYmFja2VuZC4gIEluICFFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBvbmx5IGNh bGxlZCBpZgorCSAqIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgaXMgcmVnaXN0ZXJlZCBhZnRlciBw b3N0bWFzdGVyIHN0YXJ0dXAgKHNlZQorCSAqIFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9T VEFSVFVQKS4KKwkgKi8KKwlTaG1lbUF0dGFjaENhbGxiYWNrIGF0dGFjaF9mbjsKKwl2b2lkCSAg ICphdHRhY2hfZm5fYXJnOworfSBTaG1lbUNhbGxiYWNrczsKKworLyoKKyAqIEZsYWdzIHRvIGNv bnRyb2wgdGhlIGJlaGF2aW9yIG9mIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoKS4KKyAqCisgKiBB TExPV19BRlRFUl9TVEFSVFVQOiBBbGxvdyB0aGVzZSBzaGFyZWQgbWVtb3J5IHVzYWdlcyB0byBi ZSByZWdpc3RlcmVkCisgKiBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuICBOb3JtYWxseSwgcmVn aXN0ZXJpbmcgYSBzaGFyZWQgbWVtb3J5IHN5c3RlbQorICogYWZ0ZXIgcG9zdG1hc3RlciBzdGFy dHVwIGlzIG5vdCBhbGxvd2VkIGUuZy4gaW4gYW4gYWRkLWluIGxpYnJhcnkgbG9hZGVkCisgKiBv bi1kZW1haW5kIGluIGEgYmFja2VuZC4gIElmIGEgc3Vic3lzdGVtIHNldHMgdGhpcyBmbGFnLCB0 aGUgY2FsbGJhY2tzIGFyZQorICogY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHJlZ2lzdHJhdGlv biwgdG8gaW5pdGlhbGl6ZSBvciBhdHRhY2ggdG8gdGhlCisgKiByZXF1ZXN0ZWQgc2hhcmVkIG1l bW9yeSBhcmVhcy4gIFRoaXMgaXMgbm90IHVzZWQgYnkgYW55IGJ1aWx0LWluCisgKiBzdWJzeXN0 ZW1zLCBidXQgZXh0ZW5zaW9ucyBtYXkgZmluZCBpdCB1c2VmdWwuCisgKi8KKyNkZWZpbmUgU0hN RU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVAJCTB4MDAwMDAwMDEKKworZXh0ZXJuIHZv aWQgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tz KTsKIGV4dGVybiBib29sIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CisKKy8q CisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3VnYXIgZm9yIGNhbGxpbmcgdGhl IHVuZGVybHlpbmcgZnVuY3Rpb25zCisgKiB3aXRoIG5hbWVkIGFyZ3VtZW50cyAtbGlrZSBzeW50 YXguCisgKi8KKyNkZWZpbmUgU2htZW1SZXF1ZXN0U3RydWN0KC4uLikgIFwKKwlTaG1lbVJlcXVl c3RTdHJ1Y3RXaXRoT3B0cygmKFNobWVtU3RydWN0T3B0cyl7X19WQV9BUkdTX199KQorCisjZGVm aW5lIFNobWVtUmVxdWVzdEhhc2goLi4uKSAgXAorCVNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cygm KFNobWVtSGFzaE9wdHMpe19fVkFfQVJHU19ffSkKKworZXh0ZXJuIHZvaWQgU2htZW1SZXF1ZXN0 U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKTsKK2V4dGVybiB2 b2lkIFNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cyhjb25zdCBTaG1lbUhhc2hPcHRzICpvcHRpb25z KTsKKworLyogbGVnYWN5IHNobWVtIGFsbG9jYXRpb24gZnVuY3Rpb25zICovCiBleHRlcm4gdm9p ZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91 bmRQdHIpOworZXh0ZXJuIEhUQUIgKlNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwgaW50 NjQgbmVsZW1zLAorCQkJCQkJICAgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKK2V4 dGVybiB2b2lkICpTaG1lbUFsbG9jKFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCAqU2htZW1BbGxv Y05vRXJyb3IoU2l6ZSBzaXplKTsKKwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6 ZSBzMik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJu IFBHRExMSU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCi0vKiBzaG1l bV9oYXNoLmMgKi8KLWV4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUs IGludDY0IG5lbGVtcywKLQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7 Ci1leHRlcm4gSFRBQiAqc2htZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBz aXplLCBib29sIGZvdW5kLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVt cywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKQotCiAvKiBpcGNpLmMgKi8KIGV4dGVy biB2b2lkIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoU2l6ZSBzaXplKTsKIAotLyogc2l6ZSBjb25z dGFudHMgZm9yIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwotIC8qIG1heCBzaXplIG9mIGRhdGEg c3RydWN0dXJlIHN0cmluZyBuYW1lICovCi0jZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAo NDgpCi0gLyogbWF4IG51bWJlciBvZiBuYW1lZCBzaG1lbSBzdHJ1Y3R1cmVzIGFuZCBoYXNoIHRh YmxlcyAqLwotI2RlZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDI1NikKLQotLyogdGhpcyBpcyBh IGhhc2ggYnVja2V0IGluIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwotdHlwZWRlZiBzdHJ1Y3QK LXsKLQljaGFyCQlrZXlbU0hNRU1fSU5ERVhfS0VZU0laRV07CS8qIHN0cmluZyBuYW1lICovCi0J dm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCi0JU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwotCVNpemUJ CWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLwotfSBTaG1l bUluZGV4RW50OwotCiAjZW5kaWYJCQkJCQkJLyogU0hNRU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9z aG1lbV9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m ZTEyYmYzMzQzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1f aW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz aG1lbV9pbnRlcm5hbC5oCisgKgkgIEludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHNobWVt IGFsbG9jYXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgU0hNRU1fSU5URVJOQUxfSAorI2RlZmluZSBTSE1FTV9JTlRFUk5B TF9ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgorCisvKiBEaWZmZXJlbnQga2luZHMgb2Ygc2htZW0gYXJlYXMuICovCit0eXBlZGVmIGVu dW0KK3sKKwlTSE1FTV9LSU5EX1NUUlVDVCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91cyBhcmVh IG9mIG1lbW9yeSAqLworCVNITUVNX0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUgKi8KK30g U2htZW1SZXF1ZXN0S2luZDsKKworLyogc2htZW0uYyAqLwordHlwZWRlZiBzdHJ1Y3QgUEdTaG1l bUhlYWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKKwkJCQkJCQkJCQkJICog c3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KK2V4dGVybiB2b2lkIFNobWVtQ2FsbFJlcXVlc3RD YWxsYmFja3Modm9pZCk7CitleHRlcm4gdm9pZCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhl YWRlciAqc2VnaGRyKTsKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lkIEF0dGFjaFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CisjZW5kaWYKK2V4dGVybiB2b2lk IFJlc2V0U2htZW1BbGxvY2F0b3Iodm9pZCk7CisKK2V4dGVybiB2b2lkIFNobWVtUmVxdWVzdElu dGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKTsK KworZXh0ZXJuIHNpemVfdCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCk7CitleHRlcm4gdm9p ZCBTaG1lbUluaXRSZXF1ZXN0ZWQodm9pZCk7CisjaWZkZWYgRVhFQ19CQUNLRU5ECitleHRlcm4g dm9pZCBTaG1lbUF0dGFjaFJlcXVlc3RlZCh2b2lkKTsKKyNlbmRpZgorCitleHRlcm4gUEdETExJ TVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCk7CisKKy8qIHNobWVtX2hhc2gu YyAqLworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfY3JlYXRlKHZvaWQgKmxvY2F0aW9uLCBzaXpl X3Qgc2l6ZSwgYm9vbCBmb3VuZCwKKwkJCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBu ZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CitleHRlcm4gdm9pZCBzaG1l bV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucyk7Citl eHRlcm4gdm9pZCBzaG1lbV9oYXNoX2F0dGFjaCh2b2lkICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RP cHRzICpvcHRpb25zKTsKKworI2VuZGlmCQkJCQkJCS8qIFNITUVNX0lOVEVSTkFMX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYzcyZjZjNTk1NzMuLmI4NDE2Nzc0MWZiIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjg2Myw5ICsyODYzLDE2IEBAIFNoYXJlZFR5cG1v ZFRhYmxlRW50cnkKIFNoYXJlZHNvcnQKIFNoZWxsVHlwZUluZm8KIFNoaXBwYWJsZUNhY2hlRW50 cnkKLVNobWVtQWxsb2NhdG9yRGF0YQogU2hpcHBhYmxlQ2FjaGVLZXkKK1NobWVtQWxsb2NhdG9y RGF0YQorU2htZW1DYWxsYmFja3MKIFNobWVtSW5kZXhFbnQKK1NobWVtSGFzaERlc2MKK1NobWVt SGFzaE9wdHMKK1NobWVtUmVxdWVzdAorU2htZW1SZXF1ZXN0S2luZAorU2htZW1TdHJ1Y3REZXNj CitTaG1lbVN0cnVjdE9wdHMKIFNodXRkb3duRm9yZWlnblNjYW5fZnVuY3Rpb24KIFNodXRkb3du SW5mb3JtYXRpb24KIFNodXRkb3duTW9kZQotLSAKMi4zNC4xCgo= --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405_2-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k3p5 RnJvbSA3ZmNhYmQ2MzgwMjdkYWIzODQ5NzIyN2E4Y2FmMWE5MjU2Zjc2OWViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoxODowNSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA2LzE1XSBDb252ZXJ0IGx3bG9jay5jIHRvIHVzZSB0aGUgbmV3IGlu dGVyZmFjZQoKSXQgc2VlbXMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIHRvIGNvbnZlcnQgZmlyc3Qg YmVjYXVzZSBpdCBuZWVkcyB0bwppbml0aWFsaXplZCBiZWZvcmUgYW55IG90aGVyIHN1YnN5c3Rl bSwgYnV0IG90aGVyIHRoYW4gdGhhdCBpdCdzCm5vdGhpbmcgc3BlY2lhbC4KLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICB8IDEzIC0tLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2x3bG9jay5jICAgfCA3MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaCAgICAgICAgfCAgMiAtCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3N1YnN5c3RlbWxpc3QuaCB8ICA5ICsrKy0KIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5z ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IGU0 YTZhNTJmMTJkLi5kZTY1YTllZjMzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMTIxLDcg KzEyMSw2IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBUd29QaGFzZVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3Vu ZFdvcmtlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMV0xvY2tTaG1lbVNpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NBcnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSk7CkBAIC0xNzksMTEgKzE3OCw2IEBAIEF0dGFj aFNoYXJlZE1lbW9yeVN0cnVjdHModm9pZCkKIAkgKi8KIAlJbml0aWFsaXplRmFzdFBhdGhMb2Nr cygpOwogCi0JLyoKLQkgKiBBdHRhY2ggdG8gTFdMb2NrcyBmaXJzdC4gVGhleSBhcmUgbmVlZGVk IGJ5IG1vc3Qgb3RoZXIgc3Vic3lzdGVtcy4KLQkgKi8KLQlMV0xvY2tTaG1lbUluaXQoKTsKLQog CS8qIEVzdGFibGlzaCBwb2ludGVycyB0byBhbGwgc2hhcmVkIG1lbW9yeSBhcmVhcyBpbiB0aGlz IGJhY2tlbmQgKi8KIAlTaG1lbUF0dGFjaFJlcXVlc3RlZCgpOwogCUNyZWF0ZU9yQXR0YWNoU2ht ZW1TdHJ1Y3RzKCk7CkBAIC0yMzAsMTMgKzIyNCw2IEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNl bWFwaG9yZXModm9pZCkKIAkgKi8KIAlJbml0U2htZW1BbGxvY2F0b3Ioc2VnaGRyKTsKIAotCS8q Ci0JICogSW5pdGlhbGl6ZSBMV0xvY2tzIGZpcnN0LCBpbiBjYXNlIGFueSBvZiB0aGUgc2htZW0g aW5pdCBmdW5jdGlvbiB1c2UKLQkgKiBMV0xvY2tzLiAgKE5vdGhpbmcgZWxzZSBjYW4gYmUgcnVu bmluZyBkdXJpbmcgc3RhcnR1cCwgc28gdGhleSBkb24ndAotCSAqIG5lZWQgdG8gZG8gYW55IGxv Y2tpbmcgeWV0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKLQkgKi8KLQlMV0xvY2tT aG1lbUluaXQoKTsKLQogCS8qIEluaXRpYWxpemUgYWxsIHNobWVtIGFyZWFzICovCiAJU2htZW1J bml0UmVxdWVzdGVkKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRleCA1Y2I2OTY0 OTBkNi4uMzBiNzE1YWIwNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTg0LDYg Kzg0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTIxMiw2ICsyMTMsMTUgQEAgdHlwZWRlZiBzdHJ1 Y3QgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogCiBzdGF0aWMgTGlzdCAqTmFtZWRMV0xvY2tU cmFuY2hlUmVxdWVzdHMgPSBOSUw7CiAKK3N0YXRpYyB2b2lkIExXTG9ja1NobWVtUmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2Nv bnN0IFNobWVtQ2FsbGJhY2tzIExXTG9ja0NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IExX TG9ja1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IExXTG9ja1NobWVtSW5pdCwKK307CisKKwog c3RhdGljIHZvaWQgSW5pdGlhbGl6ZUxXTG9ja3MoaW50IG51bUxvY2tzKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBMV0xvY2tSZXBvcnRXYWl0U3RhcnQoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBMV0xvY2tSZXBvcnRXYWl0RW5kKHZvaWQpOwpAQCAtNDAxLDU4ICs0MTEsNTEgQEAg TnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXModm9pZCkKIH0KIAogLyoKLSAqIENvbXB1dGUgc2ht ZW0gc3BhY2UgbmVlZGVkIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRoZSBtYWluIExX TG9jawotICogYXJyYXkuCisgKiBSZXF1ZXN0IHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQg dHJhbmNoZXMgYW5kIHRoZSBtYWluIExXTG9jayBhcnJheS4KICAqLwotU2l6ZQotTFdMb2NrU2ht ZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorTFdMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK IHsKLQlTaXplCQlzaXplOwogCWludAkJCW51bUxvY2tzOworCVNpemUJCXNpemU7CisKKwludW1M b2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsK IAogCS8qIFNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgKi8KIAlzaXplID0gc2l6ZW9m KExXTG9ja1RyYW5jaGVTaG1lbURhdGEpOwotCi0JLyogU3BhY2UgZm9yIHRoZSBMV0xvY2sgYXJy YXkgKi8KLQludW1Mb2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVk VHJhbmNoZXMoKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobnVtTG9ja3MsIHNp emVvZihMV0xvY2tQYWRkZWQpKSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkxXTG9j ayB0cmFuY2hlcyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lk ICoqKSAmTFdMb2NrVHJhbmNoZXMsCisJCSk7CiAKLQlyZXR1cm4gc2l6ZTsKKwkvKiBTcGFjZSBm b3IgdGhlIExXTG9jayBhcnJheSAqLworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJNYWlu IExXTG9jayBhcnJheSIsCisJCQkJCSAgIC5zaXplID0gbnVtTG9ja3MgKiBzaXplb2YoTFdMb2Nr UGFkZGVkKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmTWFpbkxXTG9ja0FycmF5LAorCQkp OwogfQogCiAvKgotICogQWxsb2NhdGUgc2htZW0gc3BhY2UgZm9yIHVzZXItZGVmaW5lZCB0cmFu Y2hlcyBhbmQgdGhlIG1haW4gTFdMb2NrIGFycmF5LAotICogYW5kIGluaXRpYWxpemUgaXQuCisg KiBJbml0aWFsaXplIHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRo ZSBtYWluIExXTG9jayBhcnJheS4KICAqLwotdm9pZAotTFdMb2NrU2htZW1Jbml0KHZvaWQpCitz dGF0aWMgdm9pZAorTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQludW1Mb2Nr czsKLQlib29sCQlmb3VuZDsKIAotCUxXTG9ja1RyYW5jaGVzID0gKExXTG9ja1RyYW5jaGVTaG1l bURhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJMV0xvY2sgdHJhbmNoZXMiLCBzaXplb2YoTFdM b2NrVHJhbmNoZVNobWVtRGF0YSksICZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIENh bGN1bGF0ZSB0b3RhbCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBtYWluIGFycmF5ICov Ci0JCUxXTG9ja1RyYW5jaGVzLT5udW1fbWFpbl9hcnJheV9sb2NrcyA9Ci0JCQlOVU1fRklYRURf TFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKCk7CisJbnVtTG9ja3MgPSBOVU1f RklYRURfTFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKCk7CiAKLQkJLyogSW5p dGlhbGl6ZSB0aGUgZHluYW1pYy1hbGxvY2F0aW9uIGNvdW50ZXIgZm9yIHRyYW5jaGVzICovCi0J CUxXTG9ja1RyYW5jaGVzLT5udW1fdXNlcl9kZWZpbmVkID0gMDsKKwkvKiBSZW1lbWJlciB0b3Rh bCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBtYWluIGFycmF5ICovCisJTFdMb2NrVHJh bmNoZXMtPm51bV9tYWluX2FycmF5X2xvY2tzID0gbnVtTG9ja3M7CiAKLQkJU3BpbkxvY2tJbml0 KCZMV0xvY2tUcmFuY2hlcy0+bG9jayk7Ci0JfQorCS8qIEluaXRpYWxpemUgdGhlIGR5bmFtaWMt YWxsb2NhdGlvbiBjb3VudGVyIGZvciB0cmFuY2hlcyAqLworCUxXTG9ja1RyYW5jaGVzLT5udW1f dXNlcl9kZWZpbmVkID0gMDsKIAotCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtYWlu IGFycmF5ICovCi0JbnVtTG9ja3MgPSBMV0xvY2tUcmFuY2hlcy0+bnVtX21haW5fYXJyYXlfbG9j a3M7Ci0JTWFpbkxXTG9ja0FycmF5ID0gKExXTG9ja1BhZGRlZCAqKQotCQlTaG1lbUluaXRTdHJ1 Y3QoIk1haW4gTFdMb2NrIGFycmF5IiwgbnVtTG9ja3MgKiBzaXplb2YoTFdMb2NrUGFkZGVkKSwg JmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJLyogSW5pdGlhbGl6ZSBhbGwgTFdMb2NrcyAq LwotCQlJbml0aWFsaXplTFdMb2NrcyhudW1Mb2Nrcyk7Ci0JfQorCVNwaW5Mb2NrSW5pdCgmTFdM b2NrVHJhbmNoZXMtPmxvY2spOworCisJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYWxsIExX TG9ja3MgaW4gdGhlIG1haW4gYXJyYXkgKi8KKwlJbml0aWFsaXplTFdMb2NrcyhudW1Mb2Nrcyk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9jay5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaAppbmRleCA2MWYwZGJlNzQ5YS4uZWZhNWI0MjdlOWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sd2xvY2suaApAQCAtMTI2LDggKzEyNiw2IEBAIGV4dGVybiBib29sIExXTG9j a0hlbGRCeU1lSW5Nb2RlKExXTG9jayAqbG9jaywgTFdMb2NrTW9kZSBtb2RlKTsKIGV4dGVybiBi b29sIExXTG9ja1dhaXRGb3JWYXIoTFdMb2NrICpsb2NrLCBwZ19hdG9taWNfdWludDY0ICp2YWxw dHIsIHVpbnQ2NCBvbGR2YWwsIHVpbnQ2NCAqbmV3dmFsKTsKIGV4dGVybiB2b2lkIExXTG9ja1Vw ZGF0ZVZhcihMV0xvY2sgKmxvY2ssIHBnX2F0b21pY191aW50NjQgKnZhbHB0ciwgdWludDY0IHZh bCk7CiAKLWV4dGVybiBTaXplIExXTG9ja1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIExX TG9ja1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRMV0xvY2tBY2Nlc3Modm9pZCk7 CiAKIGV4dGVybiBjb25zdCBjaGFyICpHZXRMV0xvY2tJZGVudGlmaWVyKHVpbnQzMiBjbGFzc0lk LCB1aW50MTYgZXZlbnRJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5 c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGVk NDNjOTBiY2MzLi5mMGNmMDFmNWE4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z dWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgK QEAgLTIwLDQgKzIwLDExIEBACiAgKiBvZiB0aGVzZSBtYXR0ZXIuCiAgKi8KIAotLyogVE9ETzog ZW1wdHkgZm9yIG5vdyAqLworLyoKKyAqIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRo ZSBvdGhlciBzaG1lbSBpbml0IGZ1bmN0aW9ucyB1c2UgTFdMb2Nrcy4KKyAqIChOb3RoaW5nIGVs c2UgY2FuIGJlIHJ1bm5pbmcgZHVyaW5nIHN0YXJ0dXAsIHNvIHRoZXkgZG9uJ3QgbmVlZCB0byBk byBhbnkKKyAqIGxvY2tpbmcgeWV0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKKyAq LworUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9ja0NhbGxiYWNrcykKKworLyogVE9ETzogbm90aGlu ZyBlbHNlIGZvciBub3cgKi8KLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0007-Use-the-new-mechanism-in-a-few-core-subsys.patch" Content-Disposition: attachment; filename="v20260405_2-0007-Use-the-new-mechanism-in-a-few-core-subsys.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k3x6 RnJvbSBjZDc4YjE5OTEzYjlkZmEwY2FhZGZhMmJiNzg3OThhZjQ2NjZmZTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoyMToxNyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA3LzE1XSBVc2UgdGhlIG5ldyBtZWNoYW5pc20gaW4gYSBmZXcgY29y ZQogc3Vic3lzdGVtcwoKSSBjaG9zZSB0aGVzZSBzdWJzeXN0ZW1zIHNwZWNpZmljYWxseSBiZWNh dXNlIHRoZXkgaGF2ZSBzb21lCmNvbXBsaWNhdGluZyBwcm9wZXJ0aWVzLCBtYWtpbmcgdGhlbSBz bGlnaHRseSBoYXJkZXIgdG8gY29udmVydCB0aGFuCm1vc3Q6CgotIFRoZSBpbml0aWFsaXphdGlv biBjYWxsYmFja3Mgb2Ygc29tZSBvZiB0aGVzZSBzdWJzeXN0ZW1zIGhhdmUKICBkZXBlbmRlbmNp ZXMsIGkuZS4gdGhleSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGluIHRoZSByaWdodCBvcmRlci4K Ci0gVGhlIFByb2dHbG9iYWwgcG9pbnRlciBzdGlsbCBuZWVkcyB0byBiZSBpbmhlcml0ZWQgYnkg dGhlCiAgQmFja2VuZFBhcmFtZXRlcnMgbWVjaGFuaXNtIG9uIEVYRUNfQkFDS0VORCBidWlsZHMs IGJlY2F1c2UKICBQcm9jR2xvYmFsIGlzIHJlcXVpcmVkIGJ5IEluaXRQcm9jZXNzKCkgdG8gZ2V0 IGEgUEdQUk9DIGVudHJ5LCBhbmQKICB0aGUgUEdQUk9DIGVudHJ5IGlzIHJlcXVpcmVkIHRvIHVz ZSBMV0xvY2tzLCBhbmQgdXN1YWxseSBhdHRhY2hpbmcKICB0byBzaGFyZWQgbWVtb3J5IGFyZWFz IHJlcXVpcmVzIHRoZSB1c2Ugb2YgTFdMb2Nrcy4KCi0gU2ltaWxhcmx5LCBQcm9jU2lnbmFsIHBv aW50ZXIgc3RpbGwgbmVlZHMgdG8gYmUgaGFuZGxlZCBieQogIEJhY2tlbmRQYXJhbWV0ZXJzLCBi ZWNhdXNlIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjb25uZWN0aW9ucyBhY2Nlc3MgaXQKICB3aXRob3V0 IGNhbGxpbmcgSW5pdFByb2Nlc3MKCkknbSBiZWxpZXZlIGNvbnZlcnRpbmcgYWxsIHRoZSByZXN0 IG9mIHRoZSBzdWJzeXN0ZW1zIGFmdGVyIHRoaXMgd2lsbApiZSBwcmV0dHkgbWVjaGFuaWMuCgpS ZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpE aXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRXhIVzV2 TTFibmVMWWZnMHdHZUFhPTUyVWlKM3o0dktkM0FKNzJYOEZ3NmszS0tyZ0BtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyAgICB8ICAzNSArKy0tLQogc3JjL2Jh Y2tlbmQvcG9ydC9wb3NpeF9zZW1hLmMgICAgICAgICAgfCAgMjIgKystCiBzcmMvYmFja2VuZC9w b3J0L3N5c3Zfc2VtYS5jICAgICAgICAgICB8ICAyMSArKy0KIHNyYy9iYWNrZW5kL3BvcnQvd2lu MzJfc2VtYS5jICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20u YyAgICAgICAgICB8ICA2NCArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9y ZWdpc3RyeS5jIHwgIDM2ICsrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAg ICAgICB8ICAyOCAtLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYyAgICAgfCAgNTEgKysr Ky0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgfCAxMTAgKysrKysr Ky0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgIHwgIDY0ICsr KystLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgfCAgMzggKyst LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgIHwgMTkxICsrKysrKysr KysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyAgICAg IHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICB8ICAgMiAt CiBzcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oICAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3BnX3NlbWEuaCAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNp Z25hbC5oICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAg ICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCAgICAgICAgfCAg IDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgfCAgIDMgLQogc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggICAgfCAgMTcgKystCiAyNSBmaWxlcyBjaGFuZ2VkLCAz NDQgaW5zZXJ0aW9ucygrKSwgMzgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS90d29waGFzZS5jCmluZGV4IGQ0NjhjOTc3NGIzLi5hYjFjYmQ2N2JhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0yODIsNyArMjgyLDcgQEAgVHdvUGhhc2VTaG1l bUluaXQodm9pZCkKIAkJCWd4YWN0c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0 czsKIAkJCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSAmZ3hhY3RzW2ldOwogCi0JCQkvKiBh c3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBJbml0UHJvY0dsb2JhbCAqLwor CQkJLyogYXNzb2NpYXRlIGl0IHdpdGggYSBQR1BST0MgYXNzaWduZWQgYnkgUHJvY0dsb2JhbFNo bWVtSW5pdCAqLwogCQkJZ3hhY3RzW2ldLnBncHJvY25vID0gR2V0TnVtYmVyRnJvbVBHUHJvYygm UHJlcGFyZWRYYWN0UHJvY3NbaV0pOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJz dXAuYwppbmRleCAxNDQxYTA1MTc3My4uZGM1ZTMyZDg2ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3ZhcnN1cC5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKQEAgLTMwLDM1 ICszMSwyNSBAQAogLyogTnVtYmVyIG9mIE9JRHMgdG8gcHJlZmV0Y2ggKHByZWFsbG9jYXRlKSBw ZXIgWExPRyB3cml0ZSAqLwogI2RlZmluZSBWQVJfT0lEX1BSRUZFVENICQk4MTkyCiAKK3N0YXRp YyB2b2lkIFZhcnN1cFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworCiAvKiBwb2ludGVyIHRvIHZh cmlhYmxlcyBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSAqLwogVHJhbnNhbVZhcmlhYmxlc0RhdGEg KlRyYW5zYW1WYXJpYWJsZXMgPSBOVUxMOwogCitjb25zdCBTaG1lbUNhbGxiYWNrcyBWYXJzdXBT aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFZhcnN1cFNobWVtUmVxdWVzdCwKK307 CiAKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFy aWFibGVzLgorICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFyaWFibGVzLgog ICovCi1TaXplCi1WYXJzdXBTaG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gc2l6ZW9mKFRyYW5z YW1WYXJpYWJsZXNEYXRhKTsKLX0KLQotdm9pZAotVmFyc3VwU2htZW1Jbml0KHZvaWQpCitzdGF0 aWMgdm9pZAorVmFyc3VwU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsK LQotCS8qIEluaXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlUcmFuc2FtVmFy aWFibGVzID0gU2htZW1Jbml0U3RydWN0KCJUcmFuc2FtVmFyaWFibGVzIiwKLQkJCQkJCQkJCSAg IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSksCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJbWVtc2V0KFRy YW5zYW1WYXJpYWJsZXMsIDAsIHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwotCX0KLQll bHNlCi0JCUFzc2VydChmb3VuZCk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlRyYW5z YW1WYXJpYWJsZXMiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0 YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlRyYW5zYW1WYXJpYWJsZXMsCisJCSk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEuYyBiL3NyYy9i YWNrZW5kL3BvcnQvcG9zaXhfc2VtYS5jCmluZGV4IDQwMjA1YjdkNDAwLi41M2U0YTdhNWMzOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9wb3NpeF9zZW1hLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9ydC9wb3NpeF9zZW1hLmMKQEAgLTE1OSwyMiArMTU5LDI0IEBAIFBvc2l4U2VtYXBob3Jl S2lsbChzZW1fdCAqc2VtKQogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1v cnkgbmVlZGVkIGZvciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVk IGZvciBzZW1hcGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhT ZW1hcykKK3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcykKIHsKICNp ZmRlZiBVU0VfTkFNRURfUE9TSVhfU0VNQVBIT1JFUwogCS8qIE5vIHNoYXJlZCBtZW1vcnkgbmVl ZGVkIGluIHRoaXMgY2FzZSAqLwotCXJldHVybiAwOwogI2Vsc2UKIAkvKiBOZWVkIGEgUEdTZW1h cGhvcmVEYXRhIHBlciBzZW1hcGhvcmUgKi8KLQlyZXR1cm4gbXVsX3NpemUobWF4U2VtYXMsIHNp emVvZihQR1NlbWFwaG9yZURhdGEpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiU2Vt YXBob3JlcyIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUobWF4U2VtYXMsIHNpemVvZihQR1Nl bWFwaG9yZURhdGEpKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmc2hhcmVkU2VtYXMsCisJ CSk7CiAjZW5kaWYKIH0KIAogLyoKLSAqIFBHUmVzZXJ2ZVNlbWFwaG9yZXMgLS0tIGluaXRpYWxp emUgc2VtYXBob3JlIHN1cHBvcnQKKyAqIFBHU2VtYXBob3JlSW5pdCAtLS0gaW5pdGlhbGl6ZSBz ZW1hcGhvcmUgc3VwcG9ydAogICoKICAqIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBwb3N0bWFzdGVy IHN0YXJ0IG9yIHNoYXJlZCBtZW1vcnkgcmVpbml0aWFsaXphdGlvbi4KICAqIEl0IHNob3VsZCBk byB3aGF0ZXZlciBpcyBuZWVkZWQgdG8gYmUgYWJsZSB0byBzdXBwb3J0IHVwIHRvIG1heFNlbWFz CkBAIC0xOTMsMTAgKzE5NSw5IEBAIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcykK ICAqIHdlIGRvbid0IGhhdmUgdG8gZXhwb3NlIHRoZSBjb3VudGVycyB0byBvdGhlciBwcm9jZXNz ZXMuKQogICovCiB2b2lkCi1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2Vt YXBob3JlSW5pdChpbnQgbWF4U2VtYXMpCiB7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQlib29s CQlmb3VuZDsKIAogCS8qCiAJICogV2UgdXNlIHRoZSBkYXRhIGRpcmVjdG9yeSdzIGlub2RlIG51 bWJlciB0byBzZWVkIHRoZSBzZWFyY2ggZm9yIGZyZWUKQEAgLTIxNCwxMSArMjE1LDYgQEAgUEdS ZXNlcnZlU2VtYXBob3JlcyhpbnQgbWF4U2VtYXMpCiAJbXlTZW1Qb2ludGVycyA9IChzZW1fdCAq KikgbWFsbG9jKG1heFNlbWFzICogc2l6ZW9mKHNlbV90ICopKTsKIAlpZiAobXlTZW1Qb2ludGVy cyA9PSBOVUxMKQogCQllbG9nKFBBTklDLCAib3V0IG9mIG1lbW9yeSIpOwotI2Vsc2UKLQotCXNo YXJlZFNlbWFzID0gKFBHU2VtYXBob3JlKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlbWFwaG9yZXMi LCBQR1NlbWFwaG9yZVNobWVtU2l6ZShtYXhTZW1hcyksICZmb3VuZCk7Ci0JQXNzZXJ0KCFmb3Vu ZCk7CiAjZW5kaWYKIAogCW51bVNlbXMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9y dC9zeXN2X3NlbWEuYyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMKaW5kZXggNGIyYmY4 NDA3MmYuLjk4ZDk5NTE1MDQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2Vt YS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMKQEAgLTMwMSwxNiArMzAxLDIw IEBAIElwY1NlbWFwaG9yZUNyZWF0ZShpbnQgbnVtU2VtcykKIAogCiAvKgotICogUmVwb3J0IGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZCBmb3Igc2VtYXBob3JlcworICogUmVxdWVzdCBz aGFyZWQgbWVtb3J5IG5lZWRlZCBmb3Igc2VtYXBob3JlcwogICovCi1TaXplCi1QR1NlbWFwaG9y ZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCit2b2lkCitQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChp bnQgbWF4U2VtYXMpCiB7Ci0JcmV0dXJuIG11bF9zaXplKG1heFNlbWFzLCBzaXplb2YoUEdTZW1h cGhvcmVEYXRhKSk7CisJLyogTmVlZCBhIFBHU2VtYXBob3JlRGF0YSBwZXIgc2VtYXBob3JlICov CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNlbWFwaG9yZXMiLAorCQkJCQkgICAuc2l6 ZSA9IG11bF9zaXplKG1heFNlbWFzLCBzaXplb2YoUEdTZW1hcGhvcmVEYXRhKSksCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJnNoYXJlZFNlbWFzLAorCQkpOwogfQogCiAvKgotICogUEdSZXNl cnZlU2VtYXBob3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9ydAorICogUEdTZW1h cGhvcmVJbml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAgKgogICogVGhpcyBp cyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnQgb3Igc2hhcmVkIG1lbW9yeSByZWluaXRp YWxpemF0aW9uLgogICogSXQgc2hvdWxkIGRvIHdoYXRldmVyIGlzIG5lZWRlZCB0byBiZSBhYmxl IHRvIHN1cHBvcnQgdXAgdG8gbWF4U2VtYXMKQEAgLTMyNywxMCArMzMxLDkgQEAgUEdTZW1hcGhv cmVTaG1lbVNpemUoaW50IG1heFNlbWFzKQogICogaGF2ZSBjbG9iYmVyZWQuKQogICovCiB2b2lk Ci1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2VtYXBob3JlSW5pdChpbnQg bWF4U2VtYXMpCiB7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQlib29sCQlmb3VuZDsKIAogCS8q CiAJICogV2UgdXNlIHRoZSBkYXRhIGRpcmVjdG9yeSdzIGlub2RlIG51bWJlciB0byBzZWVkIHRo ZSBzZWFyY2ggZm9yIGZyZWUKQEAgLTM0NCwxMCArMzQ3LDYgQEAgUEdSZXNlcnZlU2VtYXBob3Jl cyhpbnQgbWF4U2VtYXMpCiAJCQkJIGVycm1zZygiY291bGQgbm90IHN0YXQgZGF0YSBkaXJlY3Rv cnkgXCIlc1wiOiAlbSIsCiAJCQkJCQlEYXRhRGlyKSkpOwogCi0Jc2hhcmVkU2VtYXMgPSAoUEdT ZW1hcGhvcmUpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VtYXBob3JlcyIsIFBHU2VtYXBob3JlU2ht ZW1TaXplKG1heFNlbWFzKSwgJmZvdW5kKTsKLQlBc3NlcnQoIWZvdW5kKTsKLQogCW51bVNoYXJl ZFNlbWFzID0gMDsKIAltYXhTaGFyZWRTZW1hcyA9IG1heFNlbWFzOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3J0L3dpbjMyX3NlbWEuYyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2Vt YS5jCmluZGV4IGJhOTdjOWIyZDY0Li5hMzIwMjU1NDc2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9ydC93aW4zMl9zZW1hLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMK QEAgLTI1LDE3ICsyNSwxNiBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlU2VtYXBob3JlcyhpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIAogCiAvKgotICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5 IG5lZWRlZCBmb3Igc2VtYXBob3JlcworICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IG5lZWRlZCBm b3Igc2VtYXBob3JlcwogICovCi1TaXplCi1QR1NlbWFwaG9yZVNobWVtU2l6ZShpbnQgbWF4U2Vt YXMpCit2b2lkCitQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChpbnQgbWF4U2VtYXMpCiB7CiAJLyog Tm8gc2hhcmVkIG1lbW9yeSBuZWVkZWQgb24gV2luZG93cyAqLwotCXJldHVybiAwOwogfQogCiAv KgotICogUEdSZXNlcnZlU2VtYXBob3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9y dAorICogUEdTZW1hcGhvcmVJbml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAg KgogICogSW4gdGhlIFdpbjMyIGltcGxlbWVudGF0aW9uLCB3ZSBhY3F1aXJlIHNlbWFwaG9yZXMg b24tZGVtYW5kOyB0aGUKICAqIG1heFNlbWFzIHBhcmFtZXRlciBpcyBqdXN0IHVzZWQgdG8gc2l6 ZSB0aGUgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZgpAQCAtNDQsNyArNDMsNyBAQCBQR1NlbWFw aG9yZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCiAgKiBwcm9jZXNzIGV4aXRzLgogICovCiB2b2lk Ci1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2VtYXBob3JlSW5pdChpbnQg bWF4U2VtYXMpCiB7CiAJbXlTZW1TZXQgPSAoSEFORExFICopIG1hbGxvYyhtYXhTZW1hcyAqIHNp emVvZihIQU5ETEUpKTsKIAlpZiAobXlTZW1TZXQgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMK aW5kZXggNmE1YjE2MzkyZjcuLjhiNjlkZjRmZjI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwpAQCAt NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9mcmVlcGFnZS5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKQEAgLTEw OSw2ICsxMTAsMTUgQEAgc3RhdGljIGJvb2wgZHNtX2luaXRfZG9uZSA9IGZhbHNlOwogCiAvKiBQ cmVhbGxvY2F0ZWQgRFNNIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgcmVnaW9uLiAq Lwogc3RhdGljIHZvaWQgKmRzbV9tYWluX3NwYWNlX2JlZ2luID0gTlVMTDsKK3N0YXRpYyBzaXpl X3QgZHNtX21haW5fc3BhY2Vfc2l6ZTsKKworc3RhdGljIHZvaWQgZHNtX21haW5fc3BhY2VfcmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgZHNtX21haW5fc3BhY2VfaW5pdCh2b2lkICph cmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBkc21fc2htZW1fY2FsbGJhY2tzID0geworCS5y ZXF1ZXN0X2ZuID0gZHNtX21haW5fc3BhY2VfcmVxdWVzdCwKKwkuaW5pdF9mbiA9IGRzbV9tYWlu X3NwYWNlX2luaXQsCit9OwogCiAvKgogICogTGlzdCBvZiBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudHMgdXNlZCBieSB0aGlzIGJhY2tlbmQuCkBAIC00NjQsNDIgKzQ3NCw0MCBAQCBkc21f c2V0X2NvbnRyb2xfaGFuZGxlKGRzbV9oYW5kbGUgaCkKICNlbmRpZgogCiAvKgotICogUmVzZXJ2 ZSBzb21lIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgRFNNIHNl Z21lbnRzLgorICogUmVzZXJ2ZSBzcGFjZSBpbiB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21l bnQgZm9yIERTTSBzZWdtZW50cy4KICAqLwotc2l6ZV90Ci1kc21fZXN0aW1hdGVfc2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK2RzbV9tYWluX3NwYWNlX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCXJl dHVybiAxMDI0ICogMTAyNCAqIChzaXplX3QpIG1pbl9keW5hbWljX3NoYXJlZF9tZW1vcnk7CisJ ZHNtX21haW5fc3BhY2Vfc2l6ZSA9IDEwMjQgKiAxMDI0ICogKHNpemVfdCkgbWluX2R5bmFtaWNf c2hhcmVkX21lbW9yeTsKKworCWlmIChkc21fbWFpbl9zcGFjZV9zaXplID09IDApCisJCXJldHVy bjsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQcmVhbGxvY2F0ZWQgRFNNIiwKKwkJ CQkJICAgLnNpemUgPSBkc21fbWFpbl9zcGFjZV9zaXplLAorCQkJCQkgICAucHRyID0gJmRzbV9t YWluX3NwYWNlX2JlZ2luLAorCQkpOwogfQogCi0vKgotICogSW5pdGlhbGl6ZSBzcGFjZSBpbiB0 aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIERTTSBzZWdtZW50cy4KLSAqLwotdm9p ZAotZHNtX3NobWVtX2luaXQodm9pZCkKK3N0YXRpYyB2b2lkCitkc21fbWFpbl9zcGFjZV9pbml0 KHZvaWQgKmFyZykKIHsKLQlzaXplX3QJCXNpemUgPSBkc21fZXN0aW1hdGVfc2l6ZSgpOwotCWJv b2wJCWZvdW5kOworCUZyZWVQYWdlTWFuYWdlciAqZnBtID0gKEZyZWVQYWdlTWFuYWdlciAqKSBk c21fbWFpbl9zcGFjZV9iZWdpbjsKKwlzaXplX3QJCWZpcnN0X3BhZ2UgPSAwOworCXNpemVfdAkJ cGFnZXM7CiAKLQlpZiAoc2l6ZSA9PSAwKQorCWlmIChkc21fbWFpbl9zcGFjZV9zaXplID09IDAp CiAJCXJldHVybjsKIAotCWRzbV9tYWluX3NwYWNlX2JlZ2luID0gU2htZW1Jbml0U3RydWN0KCJQ cmVhbGxvY2F0ZWQgRFNNIiwgc2l6ZSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJRnJl ZVBhZ2VNYW5hZ2VyICpmcG0gPSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2Jl Z2luOwotCQlzaXplX3QJCWZpcnN0X3BhZ2UgPSAwOwotCQlzaXplX3QJCXBhZ2VzOwotCi0JCS8q IFJlc2VydmUgc3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFnZXIuICovCi0JCXdoaWxlIChmaXJz dF9wYWdlICogRlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQotCQkJKytm aXJzdF9wYWdlOwotCi0JCS8qIEluaXRpYWxpemUgaXQgYW5kIGdpdmUgaXQgYWxsIHRoZSByZXN0 IG9mIHRoZSBzcGFjZS4gKi8KLQkJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRzbV9t YWluX3NwYWNlX2JlZ2luKTsKLQkJcGFnZXMgPSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmly c3RfcGFnZTsKLQkJRnJlZVBhZ2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwot CX0KKwkvKiBSZXNlcnZlIHNwYWNlIGZvciB0aGUgRnJlZVBhZ2VNYW5hZ2VyLiAqLworCXdoaWxl IChmaXJzdF9wYWdlICogRlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQor CQkrK2ZpcnN0X3BhZ2U7CisKKwkvKiBJbml0aWFsaXplIGl0IGFuZCBnaXZlIGl0IGFsbCB0aGUg cmVzdCBvZiB0aGUgc3BhY2UuICovCisJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRz bV9tYWluX3NwYWNlX2JlZ2luKTsKKwlwYWdlcyA9IChkc21fbWFpbl9zcGFjZV9zaXplIC8gRlBN X1BBR0VfU0laRSkgLSBmaXJzdF9wYWdlOworCUZyZWVQYWdlTWFuYWdlclB1dChmcG0sIGZpcnN0 X3BhZ2UsIHBhZ2VzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2RzbV9yZWdpc3RyeS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5 LmMKaW5kZXggOWJmY2Q2MTY4MjcuLjJiNTY5Nzc2NTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9kc21fcmVnaXN0cnkuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNt X3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3R1cGxlc3RvcmUuaCIKQEAgLTU3LDYgKzU4LDE0IEBAIHR5cGVkZWYgc3RydWN0IERT TVJlZ2lzdHJ5Q3R4U3RydWN0CiAKIHN0YXRpYyBEU01SZWdpc3RyeUN0eFN0cnVjdCAqRFNNUmVn aXN0cnlDdHg7CiAKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5U2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBEU01SZWdpc3RyeVNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25z dCBTaG1lbUNhbGxiYWNrcyBEU01SZWdpc3RyeVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBEU01SZWdpc3RyeVNo bWVtSW5pdCwKK307CisKIHR5cGVkZWYgc3RydWN0IE5hbWVkRFNNU3RhdGUKIHsKIAlkc21faGFu ZGxlCWhhbmRsZTsKQEAgLTExNCwyNyArMTIzLDIwIEBAIHN0YXRpYyBjb25zdCBkc2hhc2hfcGFy YW1ldGVycyBkc2hfcGFyYW1zID0gewogc3RhdGljIGRzYV9hcmVhICpkc21fcmVnaXN0cnlfZHNh Owogc3RhdGljIGRzaGFzaF90YWJsZSAqZHNtX3JlZ2lzdHJ5X3RhYmxlOwogCi1TaXplCi1EU01S ZWdpc3RyeVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5U2htZW1SZXF1 ZXN0KHZvaWQgKmFyZykKIHsKLQlyZXR1cm4gTUFYQUxJR04oc2l6ZW9mKERTTVJlZ2lzdHJ5Q3R4 U3RydWN0KSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkRTTSBSZWdpc3RyeSBEYXRh IiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoRFNNUmVnaXN0cnlDdHhTdHJ1Y3QpLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZEU01SZWdpc3RyeUN0eCwKKwkJKTsKIH0KIAotdm9pZAotRFNN UmVnaXN0cnlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitEU01SZWdpc3RyeVNobWVtSW5p dCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlEU01SZWdpc3RyeUN0eCA9IChEU01S ZWdpc3RyeUN0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkRTTSBSZWdpc3RyeSBEYXRh IiwKLQkJCQkJCURTTVJlZ2lzdHJ5U2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYg KCFmb3VuZCkKLQl7Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2FoID0gRFNBX0hBTkRMRV9JTlZBTElE OwotCQlEU01SZWdpc3RyeUN0eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKLQl9CisJ RFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lOVkFMSUQ7CisJRFNNUmVnaXN0cnlD dHgtPmRzaGggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p cGNpLmMKaW5kZXggZGU2NWE5ZWYzM2MuLjRmNzA3MTU4MzAzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBj aS5jCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgotI2lu Y2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWNvdmVyeS5oIgpAQCAtNDIsMTYgKzQxLDExIEBACiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vi c3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Rz bS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKLSNpbmNsdWRl ICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFs LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1 YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmpl Y3Rpb25fcG9pbnQuaCIKQEAgLTEwNSwxNCArOTksMTAgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZv aWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtR2V0UmVxdWVzdGVkU2l6ZSgpKTsKIAog CS8qIGxlZ2FjeSBzdWJzeXN0ZW1zICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGRzbV9lc3Rp bWF0ZV9zaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBEU01SZWdpc3RyeVNobWVtU2l6 ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQnVmZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTG9ja01hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIFByb2NHbG9iYWxTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFhMb2dQcmVmZXRjaFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgVmFyc3Vw U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTE9HU2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9nUmVjb3ZlcnlTaG1lbVNpemUoKSk7CiAJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIENMT0dTaG1lbVNpemUoKSk7CkBAIC0xMjEsMTEgKzExMSw3IEBAIENh bGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBUd29QaGFzZVNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcm9jQXJyYXlTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIEJhY2tlbmRTdGF0dXNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFNoYXJlZEludmFsU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQ TVNpZ25hbFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY1NpZ25hbFNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ2hlY2twb2ludGVyU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBdXRvVmFjdXVtU2htZW1TaXplKCkpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLCBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKCkpOwpAQCAtMjc4 LDEzICsyNjQsOSBAQCBSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcyh2b2lkKQogc3RhdGlj IHZvaWQKIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiB7Ci0JZHNtX3NobWVtX2lu aXQoKTsKLQlEU01SZWdpc3RyeVNobWVtSW5pdCgpOwotCiAJLyoKIAkgKiBTZXQgdXAgeGxvZywg Y2xvZywgYW5kIGJ1ZmZlcnMKIAkgKi8KLQlWYXJzdXBTaG1lbUluaXQoKTsKIAlYTE9HU2htZW1J bml0KCk7CiAJWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7CiAJWExvZ1JlY292ZXJ5U2htZW1Jbml0 KCk7CkBAIC0zMDcsMjMgKzI4OSwxMyBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lk KQogCS8qCiAJICogU2V0IHVwIHByb2Nlc3MgdGFibGUKIAkgKi8KLQlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyKQotCQlJbml0UHJvY0dsb2JhbCgpOwotCVByb2NBcnJheVNobWVtSW5pdCgpOwogCUJh Y2tlbmRTdGF0dXNTaG1lbUluaXQoKTsKIAlUd29QaGFzZVNobWVtSW5pdCgpOwogCUJhY2tncm91 bmRXb3JrZXJTaG1lbUluaXQoKTsKIAotCS8qCi0JICogU2V0IHVwIHNoYXJlZC1pbnZhbCBtZXNz YWdpbmcKLQkgKi8KLQlTaGFyZWRJbnZhbFNobWVtSW5pdCgpOwotCiAJLyoKIAkgKiBTZXQgdXAg aW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zCiAJICovCi0JUE1TaWduYWxTaG1lbUlu aXQoKTsKLQlQcm9jU2lnbmFsU2htZW1Jbml0KCk7CiAJQ2hlY2twb2ludGVyU2htZW1Jbml0KCk7 CiAJQXV0b1ZhY3V1bVNobWVtSW5pdCgpOwogCVJlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQoKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCmluZGV4IDg1MzdlOWZlZjJkLi43ZDRmNGNmMzJiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCkBAIC04MCwxMCArODAsMTAgQEAgSW5pdExhdGNoKExhdGNo ICpsYXRjaCkKICAqIGN1cnJlbnQgcHJvY2Vzcy4KICAqCiAgKiBJbml0U2hhcmVkTGF0Y2ggbmVl ZHMgdG8gYmUgY2FsbGVkIGluIHBvc3RtYXN0ZXIgYmVmb3JlIGZvcmtpbmcgY2hpbGQKLSAqIHBy b2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRlciBhbGxvY2F0aW5nIHRoZSBzaGFyZWQgbWVtb3J5 IGJsb2NrCi0gKiBjb250YWluaW5nIHRoZSBsYXRjaCB3aXRoIFNobWVtSW5pdFN0cnVjdC4gKFRo ZSBVbml4IGltcGxlbWVudGF0aW9uCi0gKiBkb2Vzbid0IGFjdHVhbGx5IHJlcXVpcmUgdGhhdCwg YnV0IHRoZSBXaW5kb3dzIG9uZSBkb2VzLikgQmVjYXVzZSBvZgotICogdGhpcyByZXN0cmljdGlv biwgd2UgaGF2ZSBubyBjb25jdXJyZW5jeSBpc3N1ZXMgdG8gd29ycnkgYWJvdXQgaGVyZS4KKyAq IHByb2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRlciBpbml0aWFsaXppbmcgdGhlIHNoYXJlZCBt ZW1vcnkgYmxvY2sKKyAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoLiAoVGhlIFVuaXggaW1wbGVtZW50 YXRpb24gZG9lc24ndCBhY3R1YWxseSByZXF1aXJlCisgKiB0aGF0LCBidXQgdGhlIFdpbmRvd3Mg b25lIGRvZXMuKSBCZWNhdXNlIG9mIHRoaXMgcmVzdHJpY3Rpb24sIHdlIGhhdmUgbm8KKyAqIGNv bmN1cnJlbmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgogICoKICAqIE5vdGUgdGhhdCBv dGhlciBoYW5kbGVzIGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwog ICogaW5oZXJpdGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFu aW5nIHVwIGNoaWxkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwppbmRleCA0NjE4ODIwYjMz Ny4uYmRhZDVmZGQwNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Btc2ln bmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwpAQCAtMjcsNiAr MjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNp Z25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1 YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKQEAgLTgzLDYgKzg0 LDE0IEBAIHN0cnVjdCBQTVNpZ25hbERhdGEKIC8qIFBNU2lnbmFsU3RhdGUgcG9pbnRlciBpcyB2 YWxpZCBpbiBib3RoIHBvc3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcyAqLwogTk9OX0VYRUNf U1RBVElDIHZvbGF0aWxlIFBNU2lnbmFsRGF0YSAqUE1TaWduYWxTdGF0ZSA9IE5VTEw7CiAKK3N0 YXRpYyB2b2lkIFBNU2lnbmFsU2htZW1SZXF1ZXN0KHZvaWQgKik7CitzdGF0aWMgdm9pZCBQTVNp Z25hbFNobWVtSW5pdCh2b2lkICopOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQTVNpZ25hbFNo bWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUE1TaWduYWxTaG1lbVJlcXVlc3QsCisJ LmluaXRfZm4gPSBQTVNpZ25hbFNobWVtSW5pdCwKK307CisKIC8qCiAgKiBMb2NhbCBjb3B5IG9m IFBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncywgb25seSB2YWxpZCBpbiB0aGUKICAqIHBv c3RtYXN0ZXIuICBQb3N0bWFzdGVyIGtlZXBzIGEgbG9jYWwgY29weSBzbyB0aGF0IGl0IGRvZXNu J3QgbmVlZCB0bwpAQCAtMTIzLDM5ICsxMzIsMjkgQEAgcG9zdG1hc3Rlcl9kZWF0aF9oYW5kbGVy KFNJR05BTF9BUkdTKQogc3RhdGljIHZvaWQgTWFya1Bvc3RtYXN0ZXJDaGlsZEluYWN0aXZlKGlu dCBjb2RlLCBEYXR1bSBhcmcpOwogCiAvKgotICogUE1TaWduYWxTaG1lbVNpemUKLSAqCQlDb21w dXRlIHNwYWNlIG5lZWRlZCBmb3IgcG1zaWduYWwuYydzIHNoYXJlZCBtZW1vcnkKKyAqIFBNU2ln bmFsU2htZW1SZXF1ZXN0IC0gUmVnaXN0ZXIgcG1zaWduYWwuYydzIHNoYXJlZCBtZW1vcnkgbmVl ZHMKICAqLwotU2l6ZQotUE1TaWduYWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitQTVNp Z25hbFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZTsKKwlzaXplX3QJCXNp emU7CiAKLQlzaXplID0gb2Zmc2V0b2YoUE1TaWduYWxEYXRhLCBQTUNoaWxkRmxhZ3MpOwotCXNp emUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhMaXZlUG9zdG1hc3RlckNoaWxkcmVuKCks Ci0JCQkJCQkJCSAgIHNpemVvZihzaWdfYXRvbWljX3QpKSk7CisJbnVtX2NoaWxkX2ZsYWdzID0g TWF4TGl2ZVBvc3RtYXN0ZXJDaGlsZHJlbigpOwogCi0JcmV0dXJuIHNpemU7CisJc2l6ZSA9IGFk ZF9zaXplKG9mZnNldG9mKFBNU2lnbmFsRGF0YSwgUE1DaGlsZEZsYWdzKSwKKwkJCQkJbXVsX3Np emUobnVtX2NoaWxkX2ZsYWdzLCBzaXplb2Yoc2lnX2F0b21pY190KSkpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAor CQkJCQkgICAucHRyID0gKHZvaWQgKiopICZQTVNpZ25hbFN0YXRlLAorCQkpOwogfQogCi0vKgot ICogUE1TaWduYWxTaG1lbUluaXQgLSBpbml0aWFsaXplIGR1cmluZyBzaGFyZWQtbWVtb3J5IGNy ZWF0aW9uCi0gKi8KLXZvaWQKLVBNU2lnbmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAor UE1TaWduYWxTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JUE1TaWdu YWxTdGF0ZSA9IChQTVNpZ25hbERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQTVNpZ25hbFN0 YXRlIiwgUE1TaWduYWxTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKiBpbml0aWFsaXplIGFsbCBmbGFncyB0byB6ZXJvZXMgKi8KLQkJTWVtU2V0KHVudm9sYXRp emUoUE1TaWduYWxEYXRhICosIFBNU2lnbmFsU3RhdGUpLCAwLCBQTVNpZ25hbFNobWVtU2l6ZSgp KTsKLQkJbnVtX2NoaWxkX2ZsYWdzID0gTWF4TGl2ZVBvc3RtYXN0ZXJDaGlsZHJlbigpOwotCQlQ TVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7Ci0JfQorCUFz c2VydChQTVNpZ25hbFN0YXRlKTsKKwlBc3NlcnQobnVtX2NoaWxkX2ZsYWdzID4gMCk7CisJUE1T aWduYWxTdGF0ZS0+bnVtX2NoaWxkX2ZsYWdzID0gbnVtX2NoaWxkX2ZsYWdzOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCBjYzIwN2NiNTZlMy4uZjU0MGJiNmIy M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC02MSw2ICs2MSw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5 c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgpAQCAtMTAzLDYgKzEwNCwx OCBAQCB0eXBlZGVmIHN0cnVjdCBQcm9jQXJyYXlTdHJ1Y3QKIAlpbnQJCQlwZ3Byb2Nub3NbRkxF WElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUHJvY0FycmF5U3RydWN0OwogCitzdGF0aWMgdm9pZCBQ cm9jQXJyYXlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByb2NBcnJheVNo bWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0FycmF5U2htZW1BdHRhY2godm9p ZCAqYXJnKTsKKworc3RhdGljIFByb2NBcnJheVN0cnVjdCAqcHJvY0FycmF5OworCitjb25zdCBz dHJ1Y3QgU2htZW1DYWxsYmFja3MgUHJvY0FycmF5U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVl c3RfZm4gPSBQcm9jQXJyYXlTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBQcm9jQXJyYXlTaG1l bUluaXQsCisJLmF0dGFjaF9mbiA9IFByb2NBcnJheVNobWVtQXR0YWNoLAorfTsKKwogLyoKICAq IFN0YXRlIGZvciB0aGUgR2xvYmFsVmlzVGVzdCogZmFtaWx5IG9mIGZ1bmN0aW9ucy4gVGhvc2Ug ZnVuY3Rpb25zIGNhbgogICogZS5nLiBiZSB1c2VkIHRvIGRlY2lkZSBpZiBhIGRlbGV0ZWQgcm93 IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgdmlvbGF0aW5nCkBAIC0yNjksOSArMjgyLDYgQEAgdHlw ZWRlZiBlbnVtIEtBWENvbXByZXNzUmVhc29uCiAJS0FYX1NUQVJUVVBfUFJPQ0VTU19JRExFLAkv KiBzdGFydHVwIHByb2Nlc3MgaXMgYWJvdXQgdG8gc2xlZXAgKi8KIH0gS0FYQ29tcHJlc3NSZWFz b247CiAKLQotc3RhdGljIFByb2NBcnJheVN0cnVjdCAqcHJvY0FycmF5OwotCiBzdGF0aWMgUEdQ Uk9DICphbGxQcm9jczsKIAogLyoKQEAgLTI4Miw4ICsyOTIsMTEgQEAgc3RhdGljIFRyYW5zYWN0 aW9uSWQgY2FjaGVkWGlkSXNOb3RJblByb2dyZXNzID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAv KgogICogQm9va2tlZXBpbmcgZm9yIHRyYWNraW5nIGVtdWxhdGVkIHRyYW5zYWN0aW9ucyBpbiBy ZWNvdmVyeQogICovCisKIHN0YXRpYyBUcmFuc2FjdGlvbklkICpLbm93bkFzc2lnbmVkWGlkczsK Kwogc3RhdGljIGJvb2wgKktub3duQXNzaWduZWRYaWRzVmFsaWQ7CisKIHN0YXRpYyBUcmFuc2Fj dGlvbklkIGxhdGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCkBA IC0zNzQsMTkgKzM4NywxMyBAQCBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkIEZ1bGxY aWRSZWxhdGl2ZVRvKEZ1bGxUcmFuc2FjdGlvbklkIHJlbCwKIHN0YXRpYyB2b2lkIEdsb2JhbFZp c1VwZGF0ZUFwcGx5KENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaG9yaXpvbnMpOwogCiAvKgot ICogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFByb2NBcnJheVNobWVtSW5p dAorICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5nIHBvc3RtYXN0ZXIg c3RhcnR1cC4KICAqLwotU2l6ZQotUHJvY0FycmF5U2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9p ZAorUHJvY0FycmF5U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCi0J LyogU2l6ZSBvZiB0aGUgUHJvY0FycmF5IHN0cnVjdHVyZSBpdHNlbGYgKi8KICNkZWZpbmUgUFJP Q0FSUkFZX01BWFBST0NTCShNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0cykKIAotCXNp emUgPSBvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKHNpemVvZihpbnQpLCBQUk9DQVJSQVlfTUFYUFJPQ1MpKTsKLQog CS8qCiAJICogRHVyaW5nIEhvdCBTdGFuZGJ5IHByb2Nlc3Npbmcgd2UgaGF2ZSBhIGRhdGEgc3Ry dWN0dXJlIGNhbGxlZAogCSAqIEtub3duQXNzaWduZWRYaWRzLCBjcmVhdGVkIGluIHNoYXJlZCBt ZW1vcnkuIExvY2FsIGRhdGEgc3RydWN0dXJlcyBhcmUKQEAgLTQwNSw2NCArNDEyLDQ5IEBAIFBy b2NBcnJheVNobWVtU2l6ZSh2b2lkKQogCiAJaWYgKEVuYWJsZUhvdFN0YW5kYnkpCiAJewotCQlz aXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklk KSwKLQkJCQkJCQkJIFRPVEFMX01BWF9DQUNIRURfU1VCWElEUykpOwotCQlzaXplID0gYWRkX3Np emUoc2l6ZSwKLQkJCQkJCW11bF9zaXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9T VUJYSURTKSk7CisJCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJLbm93bkFzc2lnbmVkWGlk cyIsCisJCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwgVE9U QUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKKwkJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJktub3du QXNzaWduZWRYaWRzLAorCQkJKTsKKworCQlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiS25v d25Bc3NpZ25lZFhpZHNWYWxpZCIsCisJCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihi b29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKKwkJCQkJCSAgIC5wdHIgPSAodm9pZCAq KikgJktub3duQXNzaWduZWRYaWRzVmFsaWQsCisJCQkpOwogCX0KIAotCXJldHVybiBzaXplOwor CS8qIFJlZ2lzdGVyIHRoZSBQcm9jQXJyYXkgc2hhcmVkIHN0cnVjdHVyZSAqLworCVNobWVtUmVx dWVzdFN0cnVjdCgubmFtZSA9ICJQcm9jIEFycmF5IiwKKwkJCQkJICAgLnNpemUgPSBhZGRfc2l6 ZShvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyksCisJCQkJCQkJCQkJbXVsX3Np emUoc2l6ZW9mKGludCksIFBST0NBUlJBWV9NQVhQUk9DUykpLAorCQkJCQkgICAucHRyID0gKHZv aWQgKiopICZwcm9jQXJyYXksCisJCSk7CiB9CiAKIC8qCiAgKiBJbml0aWFsaXplIHRoZSBzaGFy ZWQgUEdQUk9DIGFycmF5IGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCiAgKi8KLXZvaWQKLVBy b2NBcnJheVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NBcnJheVNobWVtSW5pdCh2 b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRo ZSBQcm9jQXJyYXkgc2hhcmVkIHN0cnVjdHVyZSAqLwotCXByb2NBcnJheSA9IChQcm9jQXJyYXlT dHJ1Y3QgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9jIEFycmF5IiwKLQkJCQkJCWFkZF9zaXpl KG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwgcGdwcm9jbm9zKSwKLQkJCQkJCQkJIG11bF9zaXpl KHNpemVvZihpbnQpLAotCQkJCQkJCQkJCSAgUFJPQ0FSUkFZX01BWFBST0NTKSksCi0JCQkJCQkm Zm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIFdlJ3JlIHRoZSBmaXJzdCAt IGluaXRpYWxpemUuCi0JCSAqLwotCQlwcm9jQXJyYXktPm51bVByb2NzID0gMDsKLQkJcHJvY0Fy cmF5LT5tYXhQcm9jcyA9IFBST0NBUlJBWV9NQVhQUk9DUzsKLQkJcHJvY0FycmF5LT5tYXhLbm93 bkFzc2lnbmVkWGlkcyA9IFRPVEFMX01BWF9DQUNIRURfU1VCWElEUzsKLQkJcHJvY0FycmF5LT5u dW1Lbm93bkFzc2lnbmVkWGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+dGFpbEtub3duQXNzaWduZWRY aWRzID0gMDsKLQkJcHJvY0FycmF5LT5oZWFkS25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9j QXJyYXktPmxhc3RPdmVyZmxvd2VkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXByb2NB cnJheS0+cmVwbGljYXRpb25fc2xvdF94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXBy b2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF9jYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKLQkJVHJhbnNhbVZhcmlhYmxlcy0+eGFjdENvbXBsZXRpb25Db3VudCA9IDE7Ci0JfQor CXByb2NBcnJheS0+bnVtUHJvY3MgPSAwOworCXByb2NBcnJheS0+bWF4UHJvY3MgPSBQUk9DQVJS QVlfTUFYUFJPQ1M7CisJcHJvY0FycmF5LT5tYXhLbm93bkFzc2lnbmVkWGlkcyA9IFRPVEFMX01B WF9DQUNIRURfU1VCWElEUzsKKwlwcm9jQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzID0gMDsK Kwlwcm9jQXJyYXktPnRhaWxLbm93bkFzc2lnbmVkWGlkcyA9IDA7CisJcHJvY0FycmF5LT5oZWFk S25vd25Bc3NpZ25lZFhpZHMgPSAwOworCXByb2NBcnJheS0+bGFzdE92ZXJmbG93ZWRYaWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfeG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCXByb2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF9jYXRh bG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUcmFuc2FtVmFyaWFibGVzLT54YWN0 Q29tcGxldGlvbkNvdW50ID0gMTsKIAogCWFsbFByb2NzID0gUHJvY0dsb2JhbC0+YWxsUHJvY3M7 Cit9CiAKLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBLbm93bkFzc2lnbmVkWGlkcyBhcnJh eXMgdG9vLCBpZiBuZWVkZWQgKi8KLQlpZiAoRW5hYmxlSG90U3RhbmRieSkKLQl7Ci0JCUtub3du QXNzaWduZWRYaWRzID0gKFRyYW5zYWN0aW9uSWQgKikKLQkJCVNobWVtSW5pdFN0cnVjdCgiS25v d25Bc3NpZ25lZFhpZHMiLAotCQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwK LQkJCQkJCQkJCSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAotCQkJCQkJCSZmb3VuZCk7Ci0J CUtub3duQXNzaWduZWRYaWRzVmFsaWQgPSAoYm9vbCAqKQotCQkJU2htZW1Jbml0U3RydWN0KCJL bm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKLQkJCQkJCQltdWxfc2l6ZShzaXplb2YoYm9vbCksIFRP VEFMX01BWF9DQUNIRURfU1VCWElEUyksCi0JCQkJCQkJJmZvdW5kKTsKLQl9CitzdGF0aWMgdm9p ZAorUHJvY0FycmF5U2htZW1BdHRhY2godm9pZCAqYXJnKQoreworCWFsbFByb2NzID0gUHJvY0ds b2JhbC0+YWxsUHJvY3M7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK aW5kZXggZjFhYjNhYTNmZTAuLmFkZWJmMGU3ODk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCisj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVu dC5oIgpAQCAtMTA2LDcgKzEwNywxNiBAQCBzdHJ1Y3QgUHJvY1NpZ25hbEhlYWRlcgogI2RlZmlu ZSBCQVJSSUVSX0NMRUFSX0JJVChmbGFncywgdHlwZSkgXAogCSgoZmxhZ3MpICY9IH4oKCh1aW50 MzIpIDEpIDw8ICh1aW50MzIpICh0eXBlKSkpCiAKK3N0YXRpYyB2b2lkIFByb2NTaWduYWxTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9p ZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gUHJvY1NpZ25hbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IFByb2NTaWduYWxTaG1lbUluaXQsCit9OworCiBOT05fRVhFQ19TVEFUSUMgUHJvY1NpZ25hbEhl YWRlciAqUHJvY1NpZ25hbCA9IE5VTEw7CisKIHN0YXRpYyBQcm9jU2lnbmFsU2xvdCAqTXlQcm9j U2lnbmFsU2xvdCA9IE5VTEw7CiAKIHN0YXRpYyBib29sIENoZWNrUHJvY1NpZ25hbChQcm9jU2ln bmFsUmVhc29uIHJlYXNvbik7CkBAIC0xMTQsNTEgKzEyNCwzOSBAQCBzdGF0aWMgdm9pZCBDbGVh bnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBS ZXNldFByb2NTaWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpOwogCiAvKgotICogUHJvY1Np Z25hbFNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBQcm9jU2lnbmFsJ3Mg c2hhcmVkIG1lbW9yeQorICogUHJvY1NpZ25hbFNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVyIFBy b2NTaWduYWwncyBzaGFyZWQgbWVtb3J5IG5lZWRzIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cAogICov Ci1TaXplCi1Qcm9jU2lnbmFsU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorUHJvY1NpZ25h bFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBtdWxf c2l6ZShOdW1Qcm9jU2lnbmFsU2xvdHMsIHNpemVvZihQcm9jU2lnbmFsU2xvdCkpOwogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihQcm9jU2lnbmFsSGVhZGVyLCBwc2hfc2xvdCkpOwot CXJldHVybiBzaXplOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2NTaWduYWwi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlByb2NT aWduYWwsCisJCSk7CiB9CiAKLS8qCi0gKiBQcm9jU2lnbmFsU2htZW1Jbml0Ci0gKgkJQWxsb2Nh dGUgYW5kIGluaXRpYWxpemUgUHJvY1NpZ25hbCdzIHNoYXJlZCBtZW1vcnkKLSAqLwotdm9pZAot UHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NTaWduYWxTaG1lbUlu aXQodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSBQcm9jU2lnbmFsU2htZW1TaXplKCk7Ci0J Ym9vbAkJZm91bmQ7CisJcGdfYXRvbWljX2luaXRfdTY0KCZQcm9jU2lnbmFsLT5wc2hfYmFycmll ckdlbmVyYXRpb24sIDApOwogCi0JUHJvY1NpZ25hbCA9IChQcm9jU2lnbmFsSGVhZGVyICopCi0J CVNobWVtSW5pdFN0cnVjdCgiUHJvY1NpZ25hbCIsIHNpemUsICZmb3VuZCk7Ci0KLQkvKiBJZiB3 ZSdyZSBmaXJzdCwgaW5pdGlhbGl6ZS4gKi8KLQlpZiAoIWZvdW5kKQorCWZvciAoaW50IGkgPSAw OyBpIDwgTnVtUHJvY1NpZ25hbFNsb3RzOyArK2kpCiAJewotCQlpbnQJCQlpOwotCi0JCXBnX2F0 b21pY19pbml0X3U2NCgmUHJvY1NpZ25hbC0+cHNoX2JhcnJpZXJHZW5lcmF0aW9uLCAwKTsKKwkJ UHJvY1NpZ25hbFNsb3QgKnNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07CiAKLQkJZm9y IChpID0gMDsgaSA8IE51bVByb2NTaWduYWxTbG90czsgKytpKQotCQl7Ci0JCQlQcm9jU2lnbmFs U2xvdCAqc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKLQotCQkJU3BpbkxvY2tJbml0 KCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfcGlk LCAwKTsKLQkJCXNsb3QtPnBzc19jYW5jZWxfa2V5X2xlbiA9IDA7Ci0JCQlNZW1TZXQoc2xvdC0+ cHNzX3NpZ25hbEZsYWdzLCAwLCBzaXplb2Yoc2xvdC0+cHNzX3NpZ25hbEZsYWdzKSk7Ci0JCQlw Z19hdG9taWNfaW5pdF91NjQoJnNsb3QtPnBzc19iYXJyaWVyR2VuZXJhdGlvbiwgUEdfVUlOVDY0 X01BWCk7Ci0JCQlwZ19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19iYXJyaWVyQ2hlY2tNYXNr LCAwKTsKLQkJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmc2xvdC0+cHNzX2JhcnJpZXJDVik7Ci0J CX0KKwkJU3BpbkxvY2tJbml0KCZzbG90LT5wc3NfbXV0ZXgpOworCQlwZ19hdG9taWNfaW5pdF91 MzIoJnNsb3QtPnBzc19waWQsIDApOworCQlzbG90LT5wc3NfY2FuY2VsX2tleV9sZW4gPSAwOwor CQlNZW1TZXQoc2xvdC0+cHNzX3NpZ25hbEZsYWdzLCAwLCBzaXplb2Yoc2xvdC0+cHNzX3NpZ25h bEZsYWdzKSk7CisJCXBnX2F0b21pY19pbml0X3U2NCgmc2xvdC0+cHNzX2JhcnJpZXJHZW5lcmF0 aW9uLCBQR19VSU5UNjRfTUFYKTsKKwkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFy cmllckNoZWNrTWFzaywgMCk7CisJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmc2xvdC0+cHNzX2Jh cnJpZXJDVik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCmluZGV4IGE3 YTdjYzRmMGE5Li4zN2EyMWZmYWYxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMK QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogLyoKICAqIENvbmNlcHR1YWxseSwgdGhlIHNoYXJl ZCBjYWNoZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiBhbgpAQCAtMjA1LDYg KzIwNiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBTSVNlZwogCiBzdGF0aWMgU0lTZWcgKnNobUludmFs QnVmZmVyOwkvKiBwb2ludGVyIHRvIHRoZSBzaGFyZWQgaW52YWwgYnVmZmVyICovCiAKK3N0YXRp YyB2b2lkIFNoYXJlZEludmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBT aGFyZWRJbnZhbFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBT aGFyZWRJbnZhbFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gU2hhcmVkSW52YWxT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTaGFyZWRJbnZhbFNobWVtSW5pdCwKK307CisKIAog c3RhdGljIExvY2FsVHJhbnNhY3Rpb25JZCBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwogCkBAIC0y MTIsMTAgKzIyMSwxMSBAQCBzdGF0aWMgdm9pZCBDbGVhbnVwSW52YWxpZGF0aW9uU3RhdGUoaW50 IHN0YXR1cywgRGF0dW0gYXJnKTsKIAogCiAvKgotICogU2hhcmVkSW52YWxTaG1lbVNpemUgLS0t IHJldHVybiBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZAorICogU2hhcmVkSW52YWxTaG1lbVJl cXVlc3QKKyAqCQlSZWdpc3RlciBzaGFyZWQgbWVtb3J5IG5lZWRzIGZvciB0aGUgU0kgbWVzc2Fn ZSBidWZmZXIKICAqLwotU2l6ZQotU2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2 b2lkCitTaGFyZWRJbnZhbFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsK IApAQCAtMjIzLDI2ICsyMzMsMTggQEAgU2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6ZW9mKFByb2NTdGF0ZSksIE51bVByb2NTdGF0 ZVNsb3RzKSk7CS8qIHByb2NTdGF0ZSAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6 ZShzaXplb2YoaW50KSwgTnVtUHJvY1N0YXRlU2xvdHMpKTsJLyogcGdwcm9jbm9zICovCiAKLQly ZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAic2htSW52YWxCdWZmZXIi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnNobUlu dmFsQnVmZmVyLAorCQkpOwogfQogCi0vKgotICogU2hhcmVkSW52YWxTaG1lbUluaXQKLSAqCQlD cmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFNJIG1lc3NhZ2UgYnVmZmVyCi0gKi8KLXZvaWQKLVNo YXJlZEludmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorU2hhcmVkSW52YWxTaG1lbUlu aXQodm9pZCAqYXJnKQogewogCWludAkJCWk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBBbGxvY2F0 ZSBzcGFjZSBpbiBzaGFyZWQgbWVtb3J5ICovCi0Jc2htSW52YWxCdWZmZXIgPSAoU0lTZWcgKikK LQkJU2htZW1Jbml0U3RydWN0KCJzaG1JbnZhbEJ1ZmZlciIsIFNoYXJlZEludmFsU2htZW1TaXpl KCksICZmb3VuZCk7Ci0JaWYgKGZvdW5kKQotCQlyZXR1cm47CiAKLQkvKiBDbGVhciBtZXNzYWdl IGNvdW50ZXJzLCBzYXZlIHNpemUgb2YgcHJvY1N0YXRlIGFycmF5LCBpbml0IHNwaW5sb2NrICov CisJLyogQ2xlYXIgbWVzc2FnZSBjb3VudGVycywgaW5pdCBzcGlubG9jayAqLwogCXNobUludmFs QnVmZmVyLT5taW5Nc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5tYXhNc2dOdW0gPSAwOwog CXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNob2xkID0gQ0xFQU5VUF9NSU47CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwppbmRleCA5Yjg4MGE2YWY2NS4uYTA1YzU1YjUzNGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25h bC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRi eS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL3Rp bWVvdXQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93 YWl0X2V2ZW50LmgiCkBAIC03MCw5ICs3MSwyMyBAQCBQR1BST0MJICAgKk15UHJvYyA9IE5VTEw7 CiAKIC8qIFBvaW50ZXJzIHRvIHNoYXJlZC1tZW1vcnkgc3RydWN0dXJlcyAqLwogUFJPQ19IRFIg ICAqUHJvY0dsb2JhbCA9IE5VTEw7CitzdGF0aWMgdm9pZCAqQWxsUHJvY3NTaG1lbVB0cjsKK3N0 YXRpYyB2b2lkICpGYXN0UGF0aExvY2tBcnJheVNobWVtUHRyOwogTk9OX0VYRUNfU1RBVElDIFBH UFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxMOwogUEdQUk9DCSAgICpQcmVwYXJlZFhhY3RQcm9j cyA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbVJlcXVlc3Qodm9pZCAqYXJn KTsKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3Qg U2htZW1DYWxsYmFja3MgUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2Zu ID0gUHJvY0dsb2JhbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFByb2NHbG9iYWxTaG1lbUlu aXQsCit9OworCitzdGF0aWMgdWludDMyIFRvdGFsUHJvY3M7CitzdGF0aWMgc2l6ZV90IFByb2NH bG9iYWxBbGxQcm9jc1NobWVtU2l6ZTsKK3N0YXRpYyBzaXplX3QgRmFzdFBhdGhMb2NrQXJyYXlT aG1lbVNpemU7CisKIC8qIElzIGEgZGVhZGxvY2sgY2hlY2sgcGVuZGluZz8gKi8KIHN0YXRpYyB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X2RlYWRsb2NrX3RpbWVvdXQ7CiAKQEAgLTgzLDMyICs5 OCwxMiBAQCBzdGF0aWMgRGVhZExvY2tTdGF0ZSBDaGVja0RlYWRMb2NrKHZvaWQpOwogCiAKIC8q Ci0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUEdQUk9DLgorICogQ2Fs Y3VsYXRlIHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEZhc3QtUGF0aCBsb2Nrcy4KICAq Lwogc3RhdGljIFNpemUKLVBHUHJvY1NobWVtU2l6ZSh2b2lkKQorQ2FsY3VsYXRlRmFzdFBhdGhM b2NrU2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90YWxQcm9j cyA9Ci0JCWFkZF9zaXplKE1heEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZX1BST0NT LCBtYXhfcHJlcGFyZWRfeGFjdHMpKTsKLQotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6 ZShUb3RhbFByb2NzLCBzaXplb2YoUEdQUk9DKSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBt dWxfc2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+ c3VieGlkU3RhdGVzKSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFBy b2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSkpOwotCi0JcmV0dXJuIHNpemU7 Ci19Ci0KLS8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgRmFzdC1Q YXRoIGxvY2tzLgotICovCi1zdGF0aWMgU2l6ZQotRmFzdFBhdGhMb2NrU2htZW1TaXplKHZvaWQp Ci17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90YWxQcm9jcyA9Ci0JCWFkZF9zaXplKE1h eEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZX1BST0NTLCBtYXhfcHJlcGFyZWRfeGFj dHMpKTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKIApAQCAtMTI4 LDI2ICsxMjMsNyBAQCBGYXN0UGF0aExvY2tTaG1lbVNpemUodm9pZCkKIH0KIAogLyoKLSAqIFJl cG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KLSAqLwot U2l6ZQotUHJvY0dsb2JhbFNobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemUgPSAwOwotCi0J LyogUHJvY0dsb2JhbCAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKHNsb2NrX3QpKTsKLQotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBQR1NlbWFwaG9yZVNobWVtU2l6ZShQcm9jR2xvYmFsU2VtYXMoKSkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR1Byb2NTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIEZhc3RQYXRoTG9ja1NobWVtU2l6ZSgpKTsKLQotCXJldHVybiBzaXplOwotfQot Ci0vKgotICogUmVwb3J0IG51bWJlciBvZiBzZW1hcGhvcmVzIG5lZWRlZCBieSBJbml0UHJvY0ds b2JhbC4KKyAqIFJlcG9ydCBudW1iZXIgb2Ygc2VtYXBob3JlcyBuZWVkZWQgYnkgUHJvY0dsb2Jh bFNobWVtSW5pdC4KICAqLwogaW50CiBQcm9jR2xvYmFsU2VtYXModm9pZCkKQEAgLTE2MCw3ICsx MzYsNjcgQEAgUHJvY0dsb2JhbFNlbWFzKHZvaWQpCiB9CiAKIC8qCi0gKiBJbml0UHJvY0dsb2Jh bCAtCisgKiBQcm9jR2xvYmFsU2htZW1SZXF1ZXN0CisgKgkgIFJlZ2lzdGVyIHNoYXJlZCBtZW1v cnkgbmVlZHMuCisgKgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgb3Igc3Rh bmRhbG9uZSBiYWNrZW5kIHN0YXJ0dXAsIGFuZCBhbHNvCisgKiBkdXJpbmcgYmFja2VuZCBzdGFy dHVwIGluIEVYRUNfQkFDS0VORCBtb2RlLgorICovCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNo bWVtUmVxdWVzdCh2b2lkICphcmcpCit7CisJU2l6ZQkJc2l6ZTsKKworCS8qCisJICogUmVzZXJ2 ZSBhbGwgdGhlIFBHUFJPQyBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQuICBUaGVyZSBhcmUgc2l4IHNl cGFyYXRlCisJICogY29uc3VtZXJzOiAoMSkgbm9ybWFsIGJhY2tlbmRzLCAoMikgYXV0b3ZhY3V1 bSB3b3JrZXJzIGFuZCBzcGVjaWFsCisJICogd29ya2VycywgKDMpIGJhY2tncm91bmQgd29ya2Vy cywgKDQpIHdhbHNlbmRlcnMsICg1KSBhdXhpbGlhcnkKKwkgKiBwcm9jZXNzZXMsIGFuZCAoNikg cHJlcGFyZWQgdHJhbnNhY3Rpb25zLiAgKEZvciBsYXJnZWx5LWhpc3RvcmljYWwKKwkgKiByZWFz b25zLCB3ZSBjb21iaW5lIGF1dG92YWN1dW0gYW5kIHNwZWNpYWwgd29ya2VycyBpbnRvIG9uZSBj YXRlZ29yeQorCSAqIHdpdGggYSBzaW5nbGUgZnJlZWxpc3QuKSAgRWFjaCBQR1BST0Mgc3RydWN0 dXJlIGlzIGRlZGljYXRlZCB0byBleGFjdGx5CisJICogb25lIG9mIHRoZXNlIHB1cnBvc2VzLCBh bmQgdGhleSBkbyBub3QgbW92ZSBiZXR3ZWVuIGdyb3Vwcy4KKwkgKi8KKwlUb3RhbFByb2NzID0K KwkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllfUFJPQ1MsIG1h eF9wcmVwYXJlZF94YWN0cykpOworCisJc2l6ZSA9IDA7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUs IG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpKTsK KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9j R2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKSk7CisJUHJvY0ds b2JhbEFsbFByb2NzU2htZW1TaXplID0gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiUEdQUk9DIHN0cnVjdHVyZXMiLAorCQkJCQkgICAuc2l6ZSA9IFByb2NHbG9iYWxBbGxQcm9j c1NobWVtU2l6ZSwKKwkJCQkJICAgLnB0ciA9ICZBbGxQcm9jc1NobWVtUHRyLAorCQkpOworCisJ aWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKKwkJc2l6ZSA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1T aXplID0gQ2FsY3VsYXRlRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7CisJZWxzZQorCQlzaXplID0g U0hNRU1fQVRUQUNIX1VOS05PV05fU0laRTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAi RmFzdC1QYXRoIExvY2sgQXJyYXkiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5w dHIgPSAmRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVB0ciwKKwkJKTsKKworCS8qCisJICogUHJvY0ds b2JhbCBpcyByZWdpc3RlcmVkIGhlcmUgaW4gLnB0ciBhcyB1c3VhbCwgYnV0IGl0IG5lZWRzIHRv IGJlCisJICogcHJvcGFnYXRlZCBzcGVjaWFsbHkgaW4gRVhFQ19CQUNLRU5EIG1vZGUsIGJlY2F1 c2UgUHJvY0dsb2JhbCBuZWVkcyB0bworCSAqIGJlIGFjY2Vzc2VkIGVhcmx5IGF0IGJhY2tlbmQg c3RhcnR1cCwgYmVmb3JlIFNobWVtQXR0YWNoUmVxdWVzdGVkKCkgaGFzCisJICogYmVlbiBjYWxs ZWQuCisJICovCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2MgSGVhZGVyIiwKKwkJ CQkJICAgLnNpemUgPSBzaXplb2YoUFJPQ19IRFIpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZQcm9jR2xvYmFsLAorCQkpOworCisJLyogTGV0IHRoZSBzZW1hcGhvcmUgaW1wbGVtZW50YXRp b24gcmVnaXN0ZXIgaXRzIHNoYXJlZCBtZW1vcnkgbmVlZHMgKi8KKwlQR1NlbWFwaG9yZVNobWVt UmVxdWVzdChQcm9jR2xvYmFsU2VtYXMoKSk7Cit9CisKKworLyoKKyAqIFByb2NHbG9iYWxTaG1l bUluaXQgLQogICoJICBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvY2VzcyB0YWJsZSBkdXJpbmcg cG9zdG1hc3RlciBvciBzdGFuZGFsb25lCiAgKgkgIGJhY2tlbmQgc3RhcnR1cC4KICAqCkBAIC0x NzksMzYgKzIxNSwyMyBAQCBQcm9jR2xvYmFsU2VtYXModm9pZCkKICAqCSAgQW5vdGhlciByZWFz b24gZm9yIGNyZWF0aW5nIHNlbWFwaG9yZXMgaGVyZSBpcyB0aGF0IHRoZSBzZW1hcGhvcmUKICAq CSAgaW1wbGVtZW50YXRpb24gdHlwaWNhbGx5IHJlcXVpcmVzIHVzIHRvIGNyZWF0ZSBzZW1hcGhv cmVzIGluIHRoZQogICoJICBwb3N0bWFzdGVyLCBub3QgaW4gYmFja2VuZHMuCi0gKgotICogTm90 ZTogdGhpcyBpcyBOT1QgY2FsbGVkIGJ5IGluZGl2aWR1YWwgYmFja2VuZHMgdW5kZXIgYSBwb3N0 bWFzdGVyLAotICogbm90IGV2ZW4gaW4gdGhlIEVYRUNfQkFDS0VORCBjYXNlLiAgVGhlIFByb2NH bG9iYWwgYW5kIEF1eGlsaWFyeVByb2NzCi0gKiBwb2ludGVycyBtdXN0IGJlIHByb3BhZ2F0ZWQg c3BlY2lhbGx5IGZvciBFWEVDX0JBQ0tFTkQgb3BlcmF0aW9uLgogICovCi12b2lkCi1Jbml0UHJv Y0dsb2JhbCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJn KQogeworCWNoYXIJICAgKnB0cjsKKwlzaXplX3QJCXJlcXVlc3RTaXplOwogCVBHUFJPQwkgICAq cHJvY3M7CiAJaW50CQkJaSwKIAkJCQlqOwotCWJvb2wJCWZvdW5kOwotCXVpbnQzMgkJVG90YWxQ cm9jcyA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVwYXJlZF94 YWN0czsKIAogCS8qIFVzZWQgZm9yIHNldHVwIG9mIHBlci1iYWNrZW5kIGZhc3QtcGF0aCBzbG90 cy4gKi8KIAljaGFyCSAgICpmcFB0ciwKIAkJCSAgICpmcEVuZFB0ciBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CiAJU2l6ZQkJZnBMb2NrQml0c1NpemUsCiAJCQkJZnBSZWxJZFNpemU7Ci0JU2l6 ZQkJcmVxdWVzdFNpemU7Ci0JY2hhcgkgICAqcHRyOwogCi0JLyogQ3JlYXRlIHRoZSBQcm9jR2xv YmFsIHNoYXJlZCBzdHJ1Y3R1cmUgKi8KLQlQcm9jR2xvYmFsID0gKFBST0NfSERSICopCi0JCVNo bWVtSW5pdFN0cnVjdCgiUHJvYyBIZWFkZXIiLCBzaXplb2YoUFJPQ19IRFIpLCAmZm91bmQpOwot CUFzc2VydCghZm91bmQpOwotCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSBkYXRhIHN0cnVjdHVy ZXMuCi0JICovCisJQXNzZXJ0KFByb2NHbG9iYWwpOwogCVByb2NHbG9iYWwtPnNwaW5zX3Blcl9k ZWxheSA9IERFRkFVTFRfU1BJTlNfUEVSX0RFTEFZOwogCVNwaW5Mb2NrSW5pdCgmUHJvY0dsb2Jh bC0+ZnJlZVByb2NzTG9jayk7CiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsK QEAgLTIyMSwyMyArMjQ0LDExIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJcGdfYXRvbWljX2lu aXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJ TlZBTElEX1BST0NfTlVNQkVSKTsKIAotCS8qCi0JICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGFs bCB0aGUgUEdQUk9DIHN0cnVjdHVyZXMgd2UnbGwgbmVlZC4gIFRoZXJlIGFyZQotCSAqIHNpeCBz ZXBhcmF0ZSBjb25zdW1lcnM6ICgxKSBub3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdv cmtlcnMgYW5kCi0JICogc3BlY2lhbCB3b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAo NCkgd2Fsc2VuZGVycywgKDUpIGF1eGlsaWFyeQotCSAqIHByb2Nlc3NlcywgYW5kICg2KSBwcmVw YXJlZCB0cmFuc2FjdGlvbnMuICAoRm9yIGxhcmdlbHktaGlzdG9yaWNhbAotCSAqIHJlYXNvbnMs IHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBhbmQgc3BlY2lhbCB3b3JrZXJzIGludG8gb25lIGNhdGVn b3J5Ci0JICogd2l0aCBhIHNpbmdsZSBmcmVlbGlzdC4pICBFYWNoIFBHUFJPQyBzdHJ1Y3R1cmUg aXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkKLQkgKiBvbmUgb2YgdGhlc2UgcHVycG9zZXMsIGFuZCB0 aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4gZ3JvdXBzLgotCSAqLwotCXJlcXVlc3RTaXplID0gUEdQ cm9jU2htZW1TaXplKCk7Ci0KLQlwdHIgPSBTaG1lbUluaXRTdHJ1Y3QoIlBHUFJPQyBzdHJ1Y3R1 cmVzIiwKLQkJCQkJCSAgcmVxdWVzdFNpemUsCi0JCQkJCQkgICZmb3VuZCk7Ci0KKwlwdHIgPSBB bGxQcm9jc1NobWVtUHRyOworCXJlcXVlc3RTaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1T aXplOwogCU1lbVNldChwdHIsIDAsIHJlcXVlc3RTaXplKTsKIAorCS8qIENhcnZlIG91dCB0aGUg YWxsUHJvY3MgYXJyYXkgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhICovCiAJcHJvY3MgPSAo UEdQUk9DICopIHB0cjsKIAlwdHIgPSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7 CiAKQEAgLTI0Niw3ICsyNTcsNyBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9iYWwt PmFsbFByb2NDb3VudCA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUzsKIAogCS8q Ci0JICogQWxsb2NhdGUgYXJyYXlzIG1pcnJvcmluZyBQR1BST0MgZmllbGRzIGluIGEgZGVuc2Ug bWFubmVyLiBTZWUKKwkgKiBDYXJ2ZSBvdXQgYXJyYXlzIG1pcnJvcmluZyBQR1BST0MgZmllbGRz IGluIGEgZGVuc2UgbWFubmVyLiBTZWUKIAkgKiBQUk9DX0hEUi4KIAkgKgogCSAqIFhYWDogSXQg bWlnaHQgbWFrZSBzZW5zZSB0byBpbmNyZWFzZSBwYWRkaW5nIGZvciB0aGVzZSBhcnJheXMsIGdp dmVuCkBAIC0yNjEsMzAgKzI3MiwyNiBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9i YWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIHB0cjsKIAlwdHIgPSBwdHIgKyAoVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAotCS8qIG1ha2Ugc3VyZSB3 ZXIgZGlkbid0IG92ZXJmbG93ICovCisJLyogbWFrZSBzdXJlIHdlIGRpZG4ndCBvdmVyZmxvdyAq LwogCUFzc2VydCgocHRyID4gKGNoYXIgKikgcHJvY3MpICYmIChwdHIgPD0gKGNoYXIgKikgcHJv Y3MgKyByZXF1ZXN0U2l6ZSkpOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBhcnJheXMgZm9yIGZhc3Qt cGF0aCBsb2Nrcy4gVGhvc2UgYXJlIHZhcmlhYmxlLWxlbmd0aCwgc28KKwkgKiBJbml0aWFsaXpl IGFycmF5cyBmb3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFyaWFibGUtbGVuZ3RoLCBz bwogCSAqIGNhbid0IGJlIGluY2x1ZGVkIGluIFBHUFJPQyBkaXJlY3RseS4gV2UgYWxsb2NhdGUg YSBzZXBhcmF0ZSBwaWVjZSBvZgogCSAqIHNoYXJlZCBtZW1vcnkgYW5kIHRoZW4gZGl2aWRlIHRo YXQgYmV0d2VlbiBiYWNrZW5kcy4KIAkgKi8KIAlmcExvY2tCaXRzU2l6ZSA9IE1BWEFMSUdOKEZh c3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7CiAJZnBSZWxJZFNp emUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tTbG90c1BlckJhY2tlbmQoKSAqIHNpemVvZihPaWQp KTsKIAotCXJlcXVlc3RTaXplID0gRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7Ci0KLQlmcFB0ciA9 IFNobWVtSW5pdFN0cnVjdCgiRmFzdC1QYXRoIExvY2sgQXJyYXkiLAotCQkJCQkJCXJlcXVlc3RT aXplLAotCQkJCQkJCSZmb3VuZCk7Ci0KLQlNZW1TZXQoZnBQdHIsIDAsIHJlcXVlc3RTaXplKTsK KwlmcFB0ciA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1QdHI7CisJcmVxdWVzdFNpemUgPSBGYXN0 UGF0aExvY2tBcnJheVNobWVtU2l6ZTsKKwltZW1zZXQoZnBQdHIsIDAsIHJlcXVlc3RTaXplKTsK IAogCS8qIEZvciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICovCiAJZnBF bmRQdHIgPSBmcFB0ciArIHJlcXVlc3RTaXplOwogCi0JLyogUmVzZXJ2ZSBzcGFjZSBmb3Igc2Vt YXBob3Jlcy4gKi8KLQlQR1Jlc2VydmVTZW1hcGhvcmVzKFByb2NHbG9iYWxTZW1hcygpKTsKKwkv KiBJbml0aWFsaXplIHNlbWFwaG9yZXMgKi8KKwlQR1NlbWFwaG9yZUluaXQoUHJvY0dsb2JhbFNl bWFzKCkpOwogCiAJZm9yIChpID0gMDsgaSA8IFRvdGFsUHJvY3M7IGkrKykKIAl7CkBAIC00MDUs NyArNDEyLDcgQEAgSW5pdFByb2Nlc3Modm9pZCkKIAogCS8qCiAJICogRGVjaWRlIHdoaWNoIGxp c3Qgc2hvdWxkIHN1cHBseSBvdXIgUEdQUk9DLiAgVGhpcyBsb2dpYyBtdXN0IG1hdGNoIHRoZQot CSAqIHdheSB0aGUgZnJlZWxpc3RzIHdlcmUgY29uc3RydWN0ZWQgaW4gSW5pdFByb2NHbG9iYWwo KS4KKwkgKiB3YXkgdGhlIGZyZWVsaXN0cyB3ZXJlIGNvbnN0cnVjdGVkIGluIFByb2NHbG9iYWxT aG1lbUluaXQoKS4KIAkgKi8KIAlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IEFt U3BlY2lhbFdvcmtlclByb2Nlc3MoKSkKIAkJcHJvY2dsb2JhbGxpc3QgPSAmUHJvY0dsb2JhbC0+ YXV0b3ZhY0ZyZWVQcm9jczsKQEAgLTQ2MCw3ICs0NjcsNyBAQCBJbml0UHJvY2Vzcyh2b2lkKQog CiAJLyoKIAkgKiBJbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgTXlQcm9jLCBleGNlcHQgZm9yIHRo b3NlIHByZXZpb3VzbHkKLQkgKiBpbml0aWFsaXplZCBieSBJbml0UHJvY0dsb2JhbC4KKwkgKiBp bml0aWFsaXplZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogCSAqLwogCWRsaXN0X25vZGVfaW5p dCgmTXlQcm9jLT5mcmVlUHJvY3NMaW5rKTsKIAlNeVByb2MtPndhaXRTdGF0dXMgPSBQUk9DX1dB SVRfU1RBVFVTX09LOwpAQCAtNTkzLDcgKzYwMCw3IEBAIEluaXRQcm9jZXNzUGhhc2UyKHZvaWQp CiAgKiBUaGlzIGlzIGNhbGxlZCBieSBiZ3dyaXRlciBhbmQgc2ltaWxhciBwcm9jZXNzZXMgc28g dGhhdCB0aGV5IHdpbGwgaGF2ZSBhCiAgKiBNeVByb2MgdmFsdWUgdGhhdCdzIHJlYWwgZW5vdWdo IHRvIGxldCB0aGVtIHdhaXQgZm9yIExXTG9ja3MuICBUaGUgUEdQUk9DCiAgKiBhbmQgc2VtYSB0 aGF0IGFyZSBhc3NpZ25lZCBhcmUgb25lIG9mIHRoZSBleHRyYSBvbmVzIGNyZWF0ZWQgZHVyaW5n Ci0gKiBJbml0UHJvY0dsb2JhbC4KKyAqIFByb2NHbG9iYWxTaG1lbUluaXQuCiAgKgogICogQXV4 aWxpYXJ5IHByb2Nlc3NlcyBhcmUgcHJlc2VudGx5IG5vdCBleHBlY3RlZCB0byB3YWl0IGZvciBy ZWFsIChsb2NrbWdyKQogICogbG9ja3MsIHNvIHdlIG5lZWQgbm90IHNldCB1cCB0aGUgZGVhZGxv Y2sgY2hlY2tlci4gIFRoZXkgYXJlIG5ldmVyIGFkZGVkCkBAIC02NjIsNyArNjY5LDcgQEAgSW5p dEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwgZmllbGRz IG9mIE15UHJvYywgZXhjZXB0IGZvciB0aG9zZSBwcmV2aW91c2x5Ci0JICogaW5pdGlhbGl6ZWQg YnkgSW5pdFByb2NHbG9iYWwuCisJICogaW5pdGlhbGl6ZWQgYnkgUHJvY0dsb2JhbFNobWVtSW5p dC4KIAkgKi8KIAlkbGlzdF9ub2RlX2luaXQoJk15UHJvYy0+ZnJlZVByb2NzTGluayk7CiAJTXlQ cm9jLT53YWl0U3RhdHVzID0gUFJPQ19XQUlUX1NUQVRVU19PSzsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwppbmRleCBkNDlhN2E5MmM2NC4uODExOTllZGNhODYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9oYXNo L2R5bmFoYXNoLmMKQEAgLTMzOCw3ICszMzgsOCBAQCBzdHJpbmdfY29tcGFyZShjb25zdCBjaGFy ICprZXkxLCBjb25zdCBjaGFyICprZXkyLCBTaXplIGtleXNpemUpCiAgKiB1bmRlciBpbmZvLT5o Y3h0IHJhdGhlciB0aGFuIHVuZGVyIFRvcE1lbW9yeUNvbnRleHQ7IHRoZSBkZWZhdWx0CiAgKiBi ZWhhdmlvciBpcyBvbmx5IHN1aXRhYmxlIGZvciBzZXNzaW9uLWxpZmVzcGFuIGhhc2ggdGFibGVz LgogICogT3RoZXIgZmxhZ3MgYml0cyBhcmUgc3BlY2lhbC1wdXJwb3NlIGFuZCBzZWxkb20gdXNl ZCwgZXhjZXB0IGZvciB0aG9zZQotICogYXNzb2NpYXRlZCB3aXRoIHNoYXJlZC1tZW1vcnkgaGFz aCB0YWJsZXMsIGZvciB3aGljaCBzZWUgU2htZW1Jbml0SGFzaCgpLgorICogYXNzb2NpYXRlZCB3 aXRoIHNoYXJlZC1tZW1vcnkgaGFzaCB0YWJsZXMsIGZvciB3aGljaCBzZWUKKyAqIFNobWVtUmVx dWVzdEhhc2goKS4KICAqCiAgKiBGaWVsZHMgaW4gKmluZm8gYXJlIHJlYWQgb25seSB3aGVuIHRo ZSBhc3NvY2lhdGVkIGZsYWdzIGJpdCBpcyBzZXQuCiAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRv IGluaXRpYWxpemUgb3RoZXIgZmllbGRzIG9mICppbmZvLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXgg NmZhOTFiZmNkYzAuLjU1YTRhYjI2YjM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM0NSw4ICsz NDUsNiBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBUcmFuc2FjdGlvbklkTGF0ZXN0KFRyYW5zYWN0 aW9uSWQgbWFpbnhpZCwKIGV4dGVybiBYTG9nUmVjUHRyIFRyYW5zYWN0aW9uSWRHZXRDb21taXRM U04oVHJhbnNhY3Rpb25JZCB4aWQpOwogCiAvKiBpbiB0cmFuc2FtL3ZhcnN1cC5jICovCi1leHRl cm4gU2l6ZSBWYXJzdXBTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBWYXJzdXBTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0TmV3VHJhbnNhY3Rpb25JZChi b29sIGlzU3ViWGFjdCk7CiBleHRlcm4gdm9pZCBBZHZhbmNlTmV4dEZ1bGxUcmFuc2FjdGlvbklk UGFzdFhpZChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgUmVh ZE5leHRGdWxsVHJhbnNhY3Rpb25JZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvZHNtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oCmluZGV4IDQwNzY1N2RmM2Zm Li4xYmRlNzFiNDQwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9kc20uaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oCkBAIC0yNiw5ICsyNiw2IEBAIGV4dGVybiB2b2lk IGRzbV9wb3N0bWFzdGVyX3N0YXJ0dXAoUEdTaG1lbUhlYWRlciAqKTsKIGV4dGVybiB2b2lkIGRz bV9iYWNrZW5kX3NodXRkb3duKHZvaWQpOwogZXh0ZXJuIHZvaWQgZHNtX2RldGFjaF9hbGwodm9p ZCk7CiAKLWV4dGVybiBzaXplX3QgZHNtX2VzdGltYXRlX3NpemUodm9pZCk7Ci1leHRlcm4gdm9p ZCBkc21fc2htZW1faW5pdCh2b2lkKTsKLQogI2lmZGVmIEVYRUNfQkFDS0VORAogZXh0ZXJuIHZv aWQgZHNtX3NldF9jb250cm9sX2hhbmRsZShkc21faGFuZGxlIGgpOwogI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9kc21fcmVnaXN0cnkuaAppbmRleCA1MDZmYWUyYzljYS4uYTIyNjljODlmMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaApAQCAtMjIsNyArMjIsNSBAQCBleHRlcm4gZHNhX2Fy ZWEgKkdldE5hbWVkRFNBKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgKmZvdW5kKTsKIGV4dGVybiBk c2hhc2hfdGFibGUgKkdldE5hbWVkRFNIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJCQkJCQlj b25zdCBkc2hhc2hfcGFyYW1ldGVycyAqcGFyYW1zLAogCQkJCQkJCQkJYm9vbCAqZm91bmQpOwot ZXh0ZXJuIFNpemUgRFNNUmVnaXN0cnlTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBEU01S ZWdpc3RyeVNobWVtSW5pdCh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIERTTV9SRUdJU1RSWV9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NlbWEuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcGdfc2VtYS5oCmluZGV4IDY2ZmFjYzY5MDdhLi5mZTUwZWU1MDViYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zZW1hLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wZ19zZW1hLmgKQEAgLTM3LDExICszNywxMSBAQCB0eXBlZGVmIEhBTkRMRSBQR1Nl bWFwaG9yZTsKICNlbmRpZgogCiAKLS8qIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBu ZWVkZWQgKi8KLWV4dGVybiBTaXplIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcyk7 CisvKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZvciBzZW1hcGhvcmVzICovCitleHRl cm4gdm9pZCBQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChpbnQgbWF4U2VtYXMpOwogCiAvKiBNb2R1 bGUgaW5pdGlhbGl6YXRpb24gKGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydCBvciBzaG1l bSByZWluaXQpICovCi1leHRlcm4gdm9pZCBQR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1h cyk7CitleHRlcm4gdm9pZCBQR1NlbWFwaG9yZUluaXQoaW50IG1heFNlbWFzKTsKIAogLyogQWxs b2NhdGUgYSBQR1NlbWFwaG9yZSBzdHJ1Y3R1cmUgd2l0aCBpbml0aWFsIGNvdW50IDEgKi8KIGV4 dGVybiBQR1NlbWFwaG9yZSBQR1NlbWFwaG9yZUNyZWF0ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcG1zaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcG1zaWdu YWwuaAppbmRleCAyMDZmYjc4ZjhhNS4uMDAxZTZlZWE2MWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcG1zaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFs LmgKQEAgLTY2LDggKzY2LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIFBNU2lnbmFs RGF0YSAqUE1TaWduYWxTdGF0ZTsKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4g cG1zaWduYWwuYwogICovCi1leHRlcm4gU2l6ZSBQTVNpZ25hbFNobWVtU2l6ZSh2b2lkKTsKLWV4 dGVybiB2b2lkIFBNU2lnbmFsU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2VuZFBvc3Rt YXN0ZXJTaWduYWwoUE1TaWduYWxSZWFzb24gcmVhc29uKTsKIGV4dGVybiBib29sIENoZWNrUG9z dG1hc3RlclNpZ25hbChQTVNpZ25hbFJlYXNvbiByZWFzb24pOwogZXh0ZXJuIHZvaWQgU2V0UXVp dFNpZ25hbFJlYXNvbihRdWl0U2lnbmFsUmVhc29uIHJlYXNvbik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4 IDIyODIyZmM2OGQ3Li4zZTFkMWZhZDVmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTU1Miw4ICs1NTIs NiBAQCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9DICpBdXhpbGlhcnlQcm9jczsKICAqIEZ1bmN0 aW9uIFByb3RvdHlwZXMKICAqLwogZXh0ZXJuIGludAlQcm9jR2xvYmFsU2VtYXModm9pZCk7Ci1l eHRlcm4gU2l6ZSBQcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5pdFBy b2NHbG9iYWwodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0UHJvY2Vzcyh2b2lkKTsKIGV4dGVybiB2 b2lkIEluaXRQcm9jZXNzUGhhc2UyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdEF1eGlsaWFyeVBy b2Nlc3Modm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBhYmRmMDIxZTY2ZS4uZDcx OGE1YjU0MmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtMTksOCArMTksNiBAQAogI2lu Y2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAKIAotZXh0ZXJuIFNpemUgUHJvY0FycmF5U2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJu IHZvaWQgUHJvY0FycmF5QWRkKFBHUFJPQyAqcHJvYyk7CiBleHRlcm4gdm9pZCBQcm9jQXJyYXlS ZW1vdmUoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhpZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKaW5kZXggY2M0ZjI2YWEzM2QuLjdmODU1OTcxYjVhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtNjcsOSArNjcsNiBAQCB0eXBlZGVmIGVudW0KIC8qCiAgKiBw cm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gcHJvY3NpZ25hbC5jCiAgKi8KLWV4dGVybiBTaXpl IFByb2NTaWduYWxTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBQcm9jU2lnbmFsU2htZW1J bml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2Fu Y2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKTsKIGV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwo cGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgIFByb2NOdW1iZXIg cHJvY051bWJlcik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaAppbmRleCAxMjJkYmNkZjE5Zi4uMjA4 ZWE5ZDA1MWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaApAQCAtMjcsOCArMjcsNiBAQAogLyoK ICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBzaW52YWxhZHQuYwogICovCi1leHRlcm4g U2l6ZSBTaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNoYXJlZEludmFs U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29s IHNlbmRPbmx5KTsKIAogZXh0ZXJuIHZvaWQgU0lJbnNlcnREYXRhRW50cmllcyhjb25zdCBTaGFy ZWRJbnZhbGlkYXRpb25NZXNzYWdlICpkYXRhLCBpbnQgbik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lz dGVtbGlzdC5oCmluZGV4IGYwY2YwMWY1YTg1Li5kNjJjMjlmMTM2MSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTI3LDQgKzI3LDE5IEBACiAgKi8KIFBHX1NITUVNX1NVQlNZ U1RFTShMV0xvY2tDYWxsYmFja3MpCiAKLS8qIFRPRE86IG5vdGhpbmcgZWxzZSBmb3Igbm93ICov CitQR19TSE1FTV9TVUJTWVNURU0oZHNtX3NobWVtX2NhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZ U1RFTShEU01SZWdpc3RyeVNobWVtQ2FsbGJhY2tzKQorCisvKiB4bG9nLCBjbG9nLCBhbmQgYnVm ZmVycyAqLworUEdfU0hNRU1fU1VCU1lTVEVNKFZhcnN1cFNobWVtQ2FsbGJhY2tzKQorCisvKiBw cm9jZXNzIHRhYmxlICovCitQR19TSE1FTV9TVUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJh Y2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFByb2NBcnJheVNobWVtQ2FsbGJhY2tzKQorCisvKiBz aGFyZWQtaW52YWwgbWVzc2FnaW5nICovCitQR19TSE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxT aG1lbUNhbGxiYWNrcykKKworLyogaW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zICov CitQR19TSE1FTV9TVUJTWVNURU0oUE1TaWduYWxTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NV QlNZU1RFTShQcm9jU2lnbmFsU2htZW1DYWxsYmFja3MpCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0008-refactor-predicate.c-inline-SerialInit-to-.patch" Content-Disposition: attachment; filename="v20260405_2-0008-refactor-predicate.c-inline-SerialInit-to-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k437 RnJvbSBhMmEyMTUyNDY2MWM0Mzk1NWI3OTkzMjMyOTViZWM0MGU5Y2QzMzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMTkgTWFyIDIwMjYgMTc6MjE6MzAgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwOC8xNV0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IGlubGluZSBTZXJp YWxJbml0IHRvCiB0aGUgY2FsbGVyCgpUaGUgU2htZW1Jbml0IGZ1bmN0aW9uIGlzIHZlcnkgY29t cGxpY2F0ZWQgY3VycmVudGx5LiBUaGVzZQpyZWZhY3RvcmluZ3MgbW92ZSBpdCBpbiBhIGRpcmVj dGlvbiB0aGF0IGlzIG1vcmUgbmF0dXJhbCB3aXRoIHRoZSBuZXcKc2htZW0gY2FsbGJhY2tzLgot LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyB8IDczICsrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA0NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggZTAwM2Zh NWIxMDcuLjEzYTZhNGI5M2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBA IC00NDQsNyArNDQ0LDYgQEAgc3RhdGljIHZvaWQgRmxhZ1N4YWN0VW5zYWZlKFNFUklBTElaQUJM RVhBQ1QgKnN4YWN0KTsKIAogc3RhdGljIGJvb2wgU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5 KGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CiBzdGF0aWMgaW50CXNlcmlhbF9lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKLXN0YXRpYyB2b2lkIFNlcmlh bEluaXQodm9pZCk7CiBzdGF0aWMgdm9pZCBTZXJpYWxBZGQoVHJhbnNhY3Rpb25JZCB4aWQsIFNl ckNvbW1pdFNlcU5vIG1pbkNvbmZsaWN0Q29tbWl0U2VxTm8pOwogc3RhdGljIFNlckNvbW1pdFNl cU5vIFNlcmlhbEdldE1pbkNvbmZsaWN0Q29tbWl0U2VxTm8oVHJhbnNhY3Rpb25JZCB4aWQpOwog c3RhdGljIHZvaWQgU2VyaWFsU2V0QWN0aXZlU2VyWG1pbihUcmFuc2FjdGlvbklkIHhpZCk7CkBA IC04MDksNDggKzgwOCw2IEBAIFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseVVuaXRUZXN0cyh2 b2lkKQogfQogI2VuZGlmCiAKLS8qCi0gKiBJbml0aWFsaXplIGZvciB0aGUgdHJhY2tpbmcgb2Yg b2xkIHNlcmlhbGl6YWJsZSBjb21taXR0ZWQgeGlkcy4KLSAqLwotc3RhdGljIHZvaWQKLVNlcmlh bEluaXQodm9pZCkKLXsKLQlib29sCQlmb3VuZDsKLQotCS8qCi0JICogU2V0IHVwIFNMUlUgbWFu YWdlbWVudCBvZiB0aGUgcGdfc2VyaWFsIGRhdGEuCi0JICovCi0JU2VyaWFsU2xydUN0bC0+UGFn ZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5OwotCVNlcmlhbFNscnVDdGwt PmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsK LQlTaW1wbGVMcnVJbml0KFNlcmlhbFNscnVDdGwsICJzZXJpYWxpemFibGUiLAotCQkJCSAgc2Vy aWFsaXphYmxlX2J1ZmZlcnMsIDAsICJwZ19zZXJpYWwiLAotCQkJCSAgTFdUUkFOQ0hFX1NFUklB TF9CVUZGRVIsIExXVFJBTkNIRV9TRVJJQUxfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9OT05F LCBmYWxzZSk7Ci0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCVNlcmlhbFBhZ2VQcmVjZWRl c0xvZ2ljYWxseVVuaXRUZXN0cygpOwotI2VuZGlmCi0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0 cyhTZXJpYWxTbHJ1Q3RsLCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOwotCi0JLyoKLQkgKiBDcmVh dGUgb3IgYXR0YWNoIHRvIHRoZSBTZXJpYWxDb250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzZXJp YWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29u dHJvbERhdGEiLCBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLCAmZm91bmQpOwotCi0JQXNzZXJ0 KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJ ICogU2V0IGNvbnRyb2wgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkgKi8K LQkJTFdMb2NrQWNxdWlyZShTZXJpYWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsKLQkJc2Vy aWFsQ29udHJvbC0+aGVhZFBhZ2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7Ci0JCUxXTG9ja1JlbGVhc2UoU2VyaWFsQ29udHJvbExvY2spOwotCX0KLX0K LQogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzZXJpYWxpemFibGVfYnVmZmVycwogICovCkBA IC0xMzU1LDcgKzEzMTIsMzUgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIElu aXRpYWxpemUgdGhlIFNMUlUgc3RvcmFnZSBmb3Igb2xkIGNvbW1pdHRlZCBzZXJpYWxpemFibGUK IAkgKiB0cmFuc2FjdGlvbnMuCiAJICovCi0JU2VyaWFsSW5pdCgpOworCVNlcmlhbFNscnVDdGwt PlBhZ2VQcmVjZWRlcyA9IFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseTsKKwlTZXJpYWxTbHJ1 Q3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJy b3I7CisJU2ltcGxlTHJ1SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKKwkJCQkg IHNlcmlhbGl6YWJsZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKKwkJCQkgIExXVFJBTkNIRV9T RVJJQUxfQlVGRkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCisJCQkJICBTWU5DX0hBTkRMRVJf Tk9ORSwgZmFsc2UpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlTZXJpYWxQYWdlUHJl Y2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKKyNlbmRpZgorCVNscnVQYWdlUHJlY2VkZXNVbml0 VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKKworCS8qCisJICog Q3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1cmUuCisJICovCisJ c2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQorCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlh bENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKKworCUFz c2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7CisJaWYgKCFmb3VuZCkKKwl7CisJCS8q CisJCSAqIFNldCBjb250cm9sIGluZm9ybWF0aW9uIHRvIHJlZmxlY3QgZW1wdHkgU0xSVS4KKwkJ ICovCisJCUxXTG9ja0FjcXVpcmUoU2VyaWFsQ29udHJvbExvY2ssIExXX0VYQ0xVU0lWRSk7CisJ CXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJCXNlcmlhbENvbnRyb2wtPmhlYWRYaWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJc2VyaWFsQ29udHJvbC0+dGFpbFhpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCQlMV0xvY2tSZWxlYXNlKFNlcmlhbENvbnRyb2xMb2NrKTsKKwl9 CiB9CiAKIC8qCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405_2-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k4i9 RnJvbSA2MWRkNjI0NDdjM2YyNTlkYmUyOTFlY2RlNWRjY2JkYTM5Y2JiMjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDozMjo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDEwLzE1XSBDb252ZXJ0IFNMUlVzIHRvIHVzZSB0aGUgbmV3IGludGVy ZmFjZQoKSSByZXBsYWNlZCB0aGUgb2xkIFNpbXBsZUxydUluaXQoKSBmdW5jdGlvbiB3aXRob3V0 IGEgYmFja3dhcmRzCmNvbXBhdGliaWxpdHkgd3JhcHBlciwgYmVjYXVzZSBmZXcgZXh0ZW5zaW9u cyBkZWZpbmUgdGhlaXIgb3duIFNMUlVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2Nsb2cuYyAgICAgICAgfCAgNTUgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29t bWl0X3RzLmMgICB8ICA4NSArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRp eGFjdC5jICAgfCAxMzggKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1 LmMgICAgICAgIHwgMzY2ICsrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zdWJ0cmFucy5jICAgIHwgIDU3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2FzeW5jLmMgICAgICAgICAgICAgfCAxMTUgKysrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jICAgICAgICAgICB8ICAxNiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUu YyAgICAgfCAyNjYgKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3NscnUuYyB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oICAgICAgICAg ICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCAgICAgICAgICAg fCAgIDIgLQogc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oICAgICAgICAgICB8ICAgMiAt CiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICAgIHwgMTEyICsrKystLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oICAgICAgICAgICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvYXN5bmMuaCAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3ByZWRpY2F0ZS5oICAgICAgICAgIHwgICA1IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW1faW50ZXJuYWwuaCAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0 ZW1saXN0LmggICAgICB8ICAxMCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3Ns cnUuYyAgIHwgMTA2ICsrKy0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAg ICAgICAgfCAgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDY5MSBpbnNlcnRpb25zKCspLCA2NjQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGM2NTRlMDkyOWIz Li43Y2QxYTU2MjAxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNDMsNiArNDMs NyBAQAogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5j bHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpAQCAtMTA2LDEzICsxMDcsMjEgQEAgVHJhbnNhY3Rp b25JZFRvUGFnZShUcmFuc2FjdGlvbklkIHhpZCkKIC8qCiAgKiBMaW5rIHRvIHNoYXJlZC1tZW1v cnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciBDTE9HIGNvbnRyb2wKICAqLwotc3RhdGljIFNscnVDdGxE YXRhIFhhY3RDdGxEYXRhOworc3RhdGljIHZvaWQgQ0xPR1NobWVtUmVxdWVzdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIGJvb2wgQ0xP R1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGludAljbG9n X2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwogCi0jZGVm aW5lIFhhY3RDdGwgKCZYYWN0Q3RsRGF0YSkKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIENMT0dTaG1l bUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IENMT0dTaG1lbVJlcXVlc3QsCisJLmluaXRf Zm4gPSBDTE9HU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNscnVEZXNjIFhhY3RTbHJ1RGVzYzsK KworI2RlZmluZSBYYWN0Q3RsICgmWGFjdFNscnVEZXNjKQogCiAKLXN0YXRpYyBib29sIENMT0dQ YWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0YXRpYyBpbnQJY2xvZ19l cnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2 b2lkIFdyaXRlVHJ1bmNhdGVYbG9nUmVjKGludDY0IHBhZ2VubywgVHJhbnNhY3Rpb25JZCBvbGRl c3RYYWN0LAogCQkJCQkJCQkgT2lkIG9sZGVzdFhhY3REYik7CiBzdGF0aWMgdm9pZCBUcmFuc2Fj dGlvbklkU2V0UGFnZVN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLApAQCAt Nzc1LDE2ICs3ODQsMTAgQEAgQ0xPR1NobWVtQnVmZmVycyh2b2lkKQogfQogCiAvKgotICogSW5p dGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgQ0xPRworICogUmVnaXN0ZXIgc2hhcmVk IG1lbW9yeSBmb3IgQ0xPRwogICovCi1TaXplCi1DTE9HU2htZW1TaXplKHZvaWQpCi17Ci0JcmV0 dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDTE9HU2htZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJf UEFHRSk7Ci19Ci0KLXZvaWQKLUNMT0dTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitDTE9H U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRvLXR1bmluZyBpcyByZXF1ZXN0 ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlmICh0cmFuc2FjdGlvbl9idWZmZXJz ID09IDApCkBAIC04MDYsMTIgKzgwOSwyNiBAQCBDTE9HU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJ UEdDX1NfT1ZFUlJJREUpOwogCX0KIAlBc3NlcnQodHJhbnNhY3Rpb25fYnVmZmVycyAhPSAwKTsK KwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlhhY3RTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0g InRyYW5zYWN0aW9uIiwKKwkJCQkJIC5EaXIgPSAicGdfeGFjdCIsCisJCQkJCSAubG9uZ19zZWdt ZW50X25hbWVzID0gZmFsc2UsCisKKwkJCQkJIC5uc2xvdHMgPSBDTE9HU2htZW1CdWZmZXJzKCks CisJCQkJCSAubmxzbnMgPSBDTE9HX0xTTlNfUEVSX1BBR0UsCisKKwkJCQkJIC5zeW5jX2hhbmRs ZXIgPSBTWU5DX0hBTkRMRVJfQ0xPRywKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVBy ZWNlZGVzLAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9m b3JfaW9fZXJyb3IsCiAKLQlYYWN0Q3RsLT5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVz OwotCVhhY3RDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9mb3Jf aW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChYYWN0Q3RsLCAidHJhbnNhY3Rpb24iLCBDTE9HU2ht ZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJfUEFHRSwKLQkJCQkgICJwZ194YWN0IiwgTFdUUkFO Q0hFX1hBQ1RfQlVGRkVSLAotCQkJCSAgTFdUUkFOQ0hFX1hBQ1RfU0xSVSwgU1lOQ19IQU5ETEVS X0NMT0csIGZhbHNlKTsKKwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9YQUNU X0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfWEFDVF9TTFJVLAor CQkpOworfQorCitzdGF0aWMgdm9pZAorQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpCit7CiAJU2xy dVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKIH0K IApAQCAtODI3LDcgKzg0NCw3IEBAIGNoZWNrX3RyYW5zYWN0aW9uX2J1ZmZlcnMoaW50ICpuZXd2 YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIC8qCiAgKiBUaGlzIGZ1bmMgbXVz dCBiZSBjYWxsZWQgT05DRSBvbiBzeXN0ZW0gaW5zdGFsbC4gIEl0IGNyZWF0ZXMKICAqIHRoZSBp bml0aWFsIENMT0cgc2VnbWVudC4gIChUaGUgQ0xPRyBkaXJlY3RvcnkgaXMgYXNzdW1lZCB0bwot ICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRiLCBhbmQgQ0xPR1NobWVtSW5pdCBtdXN0IGhh dmUgYmVlbgorICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRiLCBhbmQgQ0xPR1NobWVtSW5p dCBtdXN0IGhhdmUgYmVlbiBYWFgKICAqIGNhbGxlZCBhbHJlYWR5LikKICAqLwogdm9pZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwppbmRleCAzNjIxOWRkMTNjYy4uMjYyNWNi ZjkzYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC0zMCw2ICsz MCw3IEBACiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tz LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC04MCw5ICs4MSwxOSBAQCBUcmFu c2FjdGlvbklkVG9DVHNQYWdlKFRyYW5zYWN0aW9uSWQgeGlkKQogLyoKICAqIExpbmsgdG8gc2hh cmVkLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgZm9yIENvbW1pdFRzIGNvbnRyb2wKICAqLwotc3Rh dGljIFNscnVDdGxEYXRhIENvbW1pdFRzQ3RsRGF0YTsKK3N0YXRpYyB2b2lkIENvbW1pdFRzU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBDb21taXRUc1NobWVtSW5pdCh2b2lk ICphcmcpOworc3RhdGljIGJvb2wgQ29tbWl0VHNQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGlu dDY0IHBhZ2UyKTsKK3N0YXRpYyBpbnQJY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3Io Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBDb21taXRU c1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQ29tbWl0VHNTaG1lbVJlcXVlc3Qs CisJLmluaXRfZm4gPSBDb21taXRUc1NobWVtSW5pdCwKK307CisKK3N0YXRpYyBTbHJ1RGVzYyBD b21taXRUc1NscnVEZXNjOwogCi0jZGVmaW5lIENvbW1pdFRzQ3RsICgmQ29tbWl0VHNDdGxEYXRh KQorI2RlZmluZSBDb21taXRUc0N0bCAoJkNvbW1pdFRzU2xydURlc2MpCiAKIC8qCiAgKiBXZSBr ZWVwIGEgY2FjaGUgb2YgdGhlIGxhc3QgdmFsdWUgc2V0IGluIHNoYXJlZCBtZW1vcnkuCkBAIC0x MDQsNiArMTE1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tbWl0VGltZXN0YW1wU2hhcmVkCiAKIHN0 YXRpYyBDb21taXRUaW1lc3RhbXBTaGFyZWQgKmNvbW1pdFRzU2hhcmVkOwogCitzdGF0aWMgdm9p ZCBDb21taXRUc1NobWVtSW5pdCh2b2lkICphcmcpOwogCiAvKiBHVUMgdmFyaWFibGUgKi8KIGJv b2wJCXRyYWNrX2NvbW1pdF90aW1lc3RhbXA7CkBAIC0xMTQsOCArMTI2LDYgQEAgc3RhdGljIHZv aWQgU2V0WGlkQ29tbWl0VHNJblBhZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywK IHN0YXRpYyB2b2lkIFRyYW5zYWN0aW9uSWRTZXRDb21taXRUcyhUcmFuc2FjdGlvbklkIHhpZCwg VGltZXN0YW1wVHogdHMsCiAJCQkJCQkJCQkgUmVwbE9yaWdpbklkIG5vZGVpZCwgaW50IHNsb3Ru byk7CiBzdGF0aWMgdm9pZCBlcnJvcl9jb21taXRfdHNfZGlzYWJsZWQodm9pZCk7Ci1zdGF0aWMg Ym9vbCBDb21taXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3Rh dGljIGludAljb21taXRfdHNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFx dWVfZGF0YSk7CiBzdGF0aWMgdm9pZCBBY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3RhdGljIHZv aWQgRGVhY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3RhdGljIHZvaWQgV3JpdGVUcnVuY2F0ZVhs b2dSZWMoaW50NjQgcGFnZW5vLCBUcmFuc2FjdGlvbklkIG9sZGVzdFhpZCk7CkBAIC01MTIsMjQg KzUyMiwxMiBAQCBDb21taXRUc1NobWVtQnVmZmVycyh2b2lkKQogfQogCiAvKgotICogU2hhcmVk IG1lbW9yeSBzaXppbmcgZm9yIENvbW1pdFRzCisgKiBSZWdpc3RlciBDb21taXRUcyBzaGFyZWQg bWVtb3J5IG5lZWRzIGF0IHN5c3RlbSBzdGFydHVwIChwb3N0bWFzdGVyIHN0YXJ0CisgKiBvciBz dGFuZGFsb25lIGJhY2tlbmQpCiAgKi8KLVNpemUKLUNvbW1pdFRzU2htZW1TaXplKHZvaWQpCi17 Ci0JcmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDb21taXRUc1NobWVtQnVmZmVycygpLCAwKSAr Ci0JCXNpemVvZihDb21taXRUaW1lc3RhbXBTaGFyZWQpOwotfQotCi0vKgotICogSW5pdGlhbGl6 ZSBDb21taXRUcyBhdCBzeXN0ZW0gc3RhcnR1cCAocG9zdG1hc3RlciBzdGFydCBvciBzdGFuZGFs b25lCi0gKiBiYWNrZW5kKQotICovCi12b2lkCi1Db21taXRUc1NobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK0NvbW1pdFRzU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3Vu ZDsKLQogCS8qIElmIGF1dG8tdHVuaW5nIGlzIHJlcXVlc3RlZCwgbm93IGlzIHRoZSB0aW1lIHRv IGRvIGl0ICovCiAJaWYgKGNvbW1pdF90aW1lc3RhbXBfYnVmZmVycyA9PSAwKQogCXsKQEAgLTU1 MCwzMSArNTQ4LDM2IEBAIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJUEdDX1NfT1ZF UlJJREUpOwogCX0KIAlBc3NlcnQoY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzICE9IDApOworCVNp bXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmQ29tbWl0VHNTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0g ImNvbW1pdF90aW1lc3RhbXAiLAorCQkJCQkgLkRpciA9ICJwZ19jb21taXRfdHMiLAorCQkJCQkg Lmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNlLAogCi0JQ29tbWl0VHNDdGwtPlBhZ2VQcmVjZWRl cyA9IENvbW1pdFRzUGFnZVByZWNlZGVzOwotCUNvbW1pdFRzQ3RsLT5lcnJkZXRhaWxfZm9yX2lv X2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5p dChDb21taXRUc0N0bCwgImNvbW1pdF90aW1lc3RhbXAiLCBDb21taXRUc1NobWVtQnVmZmVycygp LCAwLAotCQkJCSAgInBnX2NvbW1pdF90cyIsIExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCi0J CQkJICBMV1RSQU5DSEVfQ09NTUlUVFNfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9DT01NSVRf VFMsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhDb21taXRUc0N0 bCwgQ09NTUlUX1RTX1hBQ1RTX1BFUl9QQUdFKTsKKwkJCQkJIC5uc2xvdHMgPSBDb21taXRUc1No bWVtQnVmZmVycygpLAogCi0JY29tbWl0VHNTaGFyZWQgPSBTaG1lbUluaXRTdHJ1Y3QoIkNvbW1p dFRzIHNoYXJlZCIsCi0JCQkJCQkJCQkgc2l6ZW9mKENvbW1pdFRpbWVzdGFtcFNoYXJlZCksCi0J CQkJCQkJCQkgJmZvdW5kKTsKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBDb21taXRUc1BhZ2VQcmVj ZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFp bF9mb3JfaW9fZXJyb3IsCiAKLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJQXNzZXJ0 KCFmb3VuZCk7CisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX0NPTU1JVF9UUywK KwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCisJ CQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX0NPTU1JVFRTX1NMUlUsCisJCSk7CiAK LQkJY29tbWl0VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK LQkJVElNRVNUQU1QX05PQkVHSU4oY29tbWl0VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0LnRpbWUp OwotCQljb21taXRUc1NoYXJlZC0+ZGF0YUxhc3RDb21taXQubm9kZWlkID0gSW52YWxpZFJlcGxP cmlnaW5JZDsKLQkJY29tbWl0VHNTaGFyZWQtPmNvbW1pdFRzQWN0aXZlID0gZmFsc2U7Ci0JfQot CWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQ29t bWl0VHMgc2hhcmVkIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoQ29tbWl0VGltZXN0YW1wU2hh cmVkKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmY29tbWl0VHNTaGFyZWQsCisJCSk7Cit9 CisKK3N0YXRpYyB2b2lkCitDb21taXRUc1NobWVtSW5pdCh2b2lkICphcmcpCit7CisJY29tbWl0 VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUSU1FU1RB TVBfTk9CRUdJTihjb21taXRUc1NoYXJlZC0+ZGF0YUxhc3RDb21taXQudGltZSk7CisJY29tbWl0 VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0Lm5vZGVpZCA9IEludmFsaWRSZXBsT3JpZ2luSWQ7CisJ Y29tbWl0VHNTaGFyZWQtPmNvbW1pdFRzQWN0aXZlID0gZmFsc2U7CisKKwlTbHJ1UGFnZVByZWNl ZGVzVW5pdFRlc3RzKENvbW1pdFRzQ3RsLCBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0UpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCA5ZjhkNTQyYzA5 OC4uNjJkNThkYTRhYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBA IC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCkBAIC0xMTMsMTEgKzExNCwxNiBAQCBQcmV2aW91c011bHRpWGFjdElkKE11bHRpWGFj dElkIG11bHRpKQogLyoKICAqIExpbmtzIHRvIHNoYXJlZC1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVz IGZvciBNdWx0aVhhY3QgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgTXVsdGlYYWN0 T2Zmc2V0Q3RsRGF0YTsKLXN0YXRpYyBTbHJ1Q3RsRGF0YSBNdWx0aVhhY3RNZW1iZXJDdGxEYXRh Oworc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBp bnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRhaWwoY29u c3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworc3RhdGljIGJvb2wgTXVsdGlYYWN0TWVtYmVyUGFnZVBy ZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFjdE1l bWJlcklvRXJyb3JEZXRhaWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworCitzdGF0aWMgU2xy dURlc2MgTXVsdGlYYWN0T2Zmc2V0U2xydURlc2M7CitzdGF0aWMgU2xydURlc2MgTXVsdGlYYWN0 TWVtYmVyU2xydURlc2M7CiAKLSNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0 T2Zmc2V0Q3RsRGF0YSkKLSNkZWZpbmUgTXVsdGlYYWN0TWVtYmVyQ3RsCSgmTXVsdGlYYWN0TWVt YmVyQ3RsRGF0YSkKKyNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0T2Zmc2V0 U2xydURlc2MpCisjZGVmaW5lIE11bHRpWGFjdE1lbWJlckN0bAkoJk11bHRpWGFjdE1lbWJlclNs cnVEZXNjKQogCiAvKgogICogTXVsdGlYYWN0IHN0YXRlIHNoYXJlZCBhY3Jvc3MgYWxsIGJhY2tl bmRzLiAgQWxsIHRoaXMgc3RhdGUgaXMgcHJvdGVjdGVkCkBAIC0yMjAsNiArMjI2LDE1IEBAIHN0 YXRpYyBNdWx0aVhhY3RTdGF0ZURhdGEgKk11bHRpWGFjdFN0YXRlOwogc3RhdGljIE11bHRpWGFj dElkICpPbGRlc3RNZW1iZXJNWGFjdElkOwogc3RhdGljIE11bHRpWGFjdElkICpPbGRlc3RWaXNp YmxlTVhhY3RJZDsKIAorc3RhdGljIHZvaWQgTXVsdGlYYWN0U2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2 b2lkIE11bHRpWGFjdFNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gTXVsdGlYYWN0 U2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gTXVsdGlYYWN0U2htZW1Jbml0LAorCS5hdHRhY2hf Zm4gPSBNdWx0aVhhY3RTaG1lbUF0dGFjaCwKK307CiAKIHN0YXRpYyBpbmxpbmUgTXVsdGlYYWN0 SWQgKgogTXlPbGRlc3RNZW1iZXJNWGFjdElkU2xvdCh2b2lkKQpAQCAtMzIxLDEwICszMzYsNiBA QCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RNZW1iZXJTbHJ1UmVhZENvbnRleHQKIAlNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0OwogfSBNdWx0aVhhY3RNZW1iZXJTbHJ1UmVhZENvbnRleHQ7CiAKLXN0 YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQg cGFnZTIpOwotc3RhdGljIGJvb2wgTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzKGludDY0IHBh Z2UxLCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgaW50CU11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRh aWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwotc3RhdGljIGludAlNdWx0aVhhY3RNZW1iZXJJ b0Vycm9yRGV0YWlsKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2b2lkIEV4dGVu ZE11bHRpWGFjdE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0aWMgdm9pZCBFeHRlbmRN dWx0aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKTsKIHN0 YXRpYyB2b2lkIFNldE9sZGVzdE9mZnNldCh2b2lkKTsKQEAgLTE3NDcsODAgKzE3NTgsODEgQEAg bXVsdGl4YWN0X3R3b3BoYXNlX3Bvc3RhYm9ydChGdWxsVHJhbnNhY3Rpb25JZCBmeGlkLCB1aW50 MTYgaW5mbywKIAltdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChmeGlkLCBpbmZvLCByZWNk YXRhLCBsZW4pOwogfQogCisKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5 IGZvciBNdWx0aVhhY3QuCi0gKgotICogTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUoKSBj YWxjdWxhdGVzIHRoZSBzaXplIG9mIHRoZSBNdWx0aVhhY3RTdGF0ZQotICogc3RydWN0LCBhbmQg dGhlIHR3byBwZXItYmFja2VuZCBNdWx0aVhhY3RJZCBhcnJheXMuICBUaGV5IGFyZSBjYXJ2ZWQg b3V0IG9mCi0gKiB0aGUgc2FtZSBhbGxvY2F0aW9uLiAgTXVsdGlYYWN0U2htZW1TaXplKCkgYWRk aXRpb25hbGx5IGluY2x1ZGVzIHRoZSBtZW1vcnkKLSAqIG5lZWRlZCBmb3IgdGhlIHR3byBTTFJV IGFyZWFzLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkcyBmb3IgTXVsdGlYYWN0Lgog ICovCi1zdGF0aWMgU2l6ZQotTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUodm9pZCkKK3N0 YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNp emU7CiAKKwkvKgorCSAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgTXVsdGlYYWN0U3RhdGUg c3RydWN0LCBhbmQgdGhlIHR3bworCSAqIHBlci1iYWNrZW5kIE11bHRpWGFjdElkIGFycmF5cy4g IFRoZXkgYXJlIGNhcnZlZCBvdXQgb2YgdGhlIHNhbWUKKwkgKiBhbGxvY2F0aW9uLgorCSAqLwog CXNpemUgPSBvZmZzZXRvZihNdWx0aVhhY3RTdGF0ZURhdGEsIHBlckJhY2tlbmRYYWN0SWRzKTsK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3NpemUoc2l6ZW9mKE11bHRpWGFjdElk KSwgTnVtTWVtYmVyU2xvdHMpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3Np emUoc2l6ZW9mKE11bHRpWGFjdElkKSwgTnVtVmlzaWJsZVNsb3RzKSk7Ci0JcmV0dXJuIHNpemU7 Ci19CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNoYXJlZCBNdWx0aVhhY3QgU3RhdGUi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJk11bHRp WGFjdFN0YXRlLAorCQkpOwogCi1TaXplCi1NdWx0aVhhY3RTaG1lbVNpemUodm9pZCkKLXsKLQlT aXplCQlzaXplOworCVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmTXVsdGlYYWN0T2Zmc2V0U2xy dURlc2MsCisJCQkJCSAubmFtZSA9ICJtdWx0aXhhY3Rfb2Zmc2V0IiwKKwkJCQkJIC5EaXIgPSAi cGdfbXVsdGl4YWN0L29mZnNldHMiLAorCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNl LAogCi0Jc2l6ZSA9IE11bHRpWGFjdFNoYXJlZFN0YXRlU2htZW1TaXplKCk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShtdWx0aXhhY3Rfb2Zmc2V0X2J1ZmZlcnMs IDApKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFj dF9tZW1iZXJfYnVmZmVycywgMCkpOworCQkJCQkgLm5zbG90cyA9IG11bHRpeGFjdF9vZmZzZXRf YnVmZmVycywKIAotCXJldHVybiBzaXplOwotfQorCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNf SEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VULAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFj dE9mZnNldFBhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gTXVs dGlYYWN0T2Zmc2V0SW9FcnJvckRldGFpbCwKIAotdm9pZAotTXVsdGlYYWN0U2htZW1Jbml0KHZv aWQpCi17Ci0JYm9vbAkJZm91bmQ7CisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5D SEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RS QU5DSEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCisJCSk7CiAKLQlkZWJ1Z19lbG9nMihERUJVRzIs ICJTaGFyZWQgTWVtb3J5IEluaXQgZm9yIE11bHRpWGFjdCIpOworCVNpbXBsZUxydVJlcXVlc3Qo LmRlc2MgPSAmTXVsdGlYYWN0TWVtYmVyU2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJtdWx0aXhh Y3RfbWVtYmVyIiwKKwkJCQkJIC5EaXIgPSAicGdfbXVsdGl4YWN0L21lbWJlcnMiLAorCQkJCQkg Lmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCiAKLQlNdWx0aVhhY3RPZmZzZXRDdGwtPlBhZ2VQ cmVjZWRlcyA9IE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlczsKLQlNdWx0aVhhY3RNZW1iZXJD dGwtPlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE1lbWJlclBhZ2VQcmVjZWRlczsKLQlNdWx0aVhh Y3RPZmZzZXRDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBNdWx0aVhhY3RPZmZzZXRJb0Vy cm9yRGV0YWlsOwotCU11bHRpWGFjdE1lbWJlckN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9 IE11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWw7CisJCQkJCSAubnNsb3RzID0gbXVsdGl4YWN0 X21lbWJlcl9idWZmZXJzLAogCi0JU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RPZmZzZXRDdGwsCi0J CQkJICAibXVsdGl4YWN0X29mZnNldCIsIG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywgMCwKLQkJ CQkgICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVG RkVSLAotCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAotCQkJCSAgU1lOQ19I QU5ETEVSX01VTFRJWEFDVF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVjZWRl c1VuaXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF KTsKLQlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKLQkJCQkgICJtdWx0aXhhY3Rf bWVtYmVyIiwgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzLCAwLAotCQkJCSAgInBnX211bHRpeGFj dC9tZW1iZXJzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE1FTUJFUl9CVUZGRVIsCi0JCQkJICBMV1RS QU5DSEVfTVVMVElYQUNUTUVNQkVSX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNU X01FTUJFUiwKLQkJCQkgIHRydWUpOwotCS8qIGRvZXNuJ3QgY2FsbCBTaW1wbGVMcnVUcnVuY2F0 ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KLQotCS8qIEluaXRpYWxpemUg b3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlNdWx0aVhhY3RTdGF0ZSA9IFNobWVtSW5pdFN0 cnVjdCgiU2hhcmVkIE11bHRpWGFjdCBTdGF0ZSIsCi0JCQkJCQkJCQkgTXVsdGlYYWN0U2hhcmVk U3RhdGVTaG1lbVNpemUoKSwKLQkJCQkJCQkJCSAmZm91bmQpOwotCWlmICghSXNVbmRlclBvc3Rt YXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5D X0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUiwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBNdWx0aVhh Y3RNZW1iZXJQYWdlUHJlY2VkZXMsCisJCQkJCSAuZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IE11 bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWwsCiAKLQkJLyogTWFrZSBzdXJlIHdlIHplcm8gb3V0 IHRoZSBwZXItYmFja2VuZCBzdGF0ZSAqLwotCQlNZW1TZXQoTXVsdGlYYWN0U3RhdGUsIDAsIE11 bHRpWGFjdFNoYXJlZFN0YXRlU2htZW1TaXplKCkpOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3Vu ZCk7CisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVS X0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVN QkVSX1NMUlUsCisJCSk7CiAKKwkvKgorCSAqIG1lbWJlcnMgU0xSVSBkb2Vzbid0IGNhbGwgU2lt cGxlTHJ1VHJ1bmNhdGUoKSBvciBtZWV0IGNyaXRlcmlhIGZvciB1bml0CisJICogdGVzdHMKKwkg Ki8KK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJ LyoKKwkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCisJICovCisJT2xkZXN0TWVtYmVyTVhhY3RJ ZCA9IE11bHRpWGFjdFN0YXRlLT5wZXJCYWNrZW5kWGFjdElkczsKKwlPbGRlc3RWaXNpYmxlTVhh Y3RJZCA9IE9sZGVzdE1lbWJlck1YYWN0SWQgKyBOdW1NZW1iZXJTbG90czsKKworCVNscnVQYWdl UHJlY2VkZXNVbml0VGVzdHMoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBNVUxUSVhBQ1RfT0ZGU0VUU19Q RVJfUEFHRSk7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbUF0dGFjaCh2b2lkICph cmcpCit7CiAJLyoKIAkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9zbHJ1LmMKaW5kZXggYTJiYjhmYTgwMzMuLjQ3ZGQ1MmQ2NzQ5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vc2xydS5jCkBAIC03MCw3ICs3MCw5IEBACiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50 LmgiCiAKIC8qCkBAIC04OSw5ICs5MSw5IEBACiAgKiAgZGlyLzEyMzQ1NiBmb3IgWzJeMjAsIDJe MjQtMV0KICAqLwogc3RhdGljIGlubGluZSBpbnQKLVNscnVGaWxlTmFtZShTbHJ1Q3RsIGN0bCwg Y2hhciAqcGF0aCwgaW50NjQgc2Vnbm8pCitTbHJ1RmlsZU5hbWUoU2xydURlc2MgKmN0bCwgY2hh ciAqcGF0aCwgaW50NjQgc2Vnbm8pCiB7Ci0JaWYgKGN0bC0+bG9uZ19zZWdtZW50X25hbWVzKQor CWlmIChjdGwtPm9wdGlvbnMubG9uZ19zZWdtZW50X25hbWVzKQogCXsKIAkJLyoKIAkJICogV2Ug Y291bGQgdXNlIDE2IGNoYXJhY3RlcnMgaGVyZSBidXQgdGhlIGRpc2FkdmFudGFnZSB3b3VsZCBi ZSB0aGF0CkBAIC0xMDEsNyArMTAzLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBjaGFy ICpwYXRoLCBpbnQ2NCBzZWdubykKIAkJICogdGhhdCBpbiB0aGUgZnV0dXJlIHdlIGNhbid0IGRl Y3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5LgogCQkgKi8KIAkJQXNzZXJ0KHNl Z25vID49IDAgJiYgc2Vnbm8gPD0gSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRkZGRikpOwotCQly ZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIgUFJJWDY0LCBjdGwtPkRp ciwgc2Vnbm8pOworCQlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIg UFJJWDY0LCBjdGwtPm9wdGlvbnMuRGlyLCBzZWdubyk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMTAs NyArMTEyLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBjaGFyICpwYXRoLCBpbnQ2NCBz ZWdubykKIAkJICogaW50ZWdlcnMgYXJlIGFsbG93ZWQuIFNlZSBTbHJ1Q29ycmVjdFNlZ21lbnRG aWxlbmFtZUxlbmd0aCgpCiAJCSAqLwogCQlBc3NlcnQoc2Vnbm8gPj0gMCAmJiBzZWdubyA8PSBJ TlQ2NENPTlNUKDB4RkZGRkZGKSk7Ci0JCXJldHVybiBzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgs ICIlcy8lMDRYIiwgKGN0bCktPkRpciwKKwkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFU SCwgIiVzLyUwNFgiLCAoY3RsKS0+b3B0aW9ucy5EaXIsCiAJCQkJCQkodW5zaWduZWQgaW50KSBz ZWdubyk7CiAJfQogfQpAQCAtMTc2LDE5ICsxNzgsMTkgQEAgc3RhdGljIFNscnVFcnJvckNhdXNl IHNscnVfZXJyY2F1c2U7CiBzdGF0aWMgaW50CXNscnVfZXJybm87CiAKIAotc3RhdGljIHZvaWQg U2ltcGxlTHJ1WmVyb0xTTnMoU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotc3RhdGljIHZvaWQg U2ltcGxlTHJ1V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKTsKLXN0YXRpYyB2b2lkIFNs cnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubywgU2xydVdyaXRlQWxs IGZkYXRhKTsKLXN0YXRpYyBib29sIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBp bnQ2NCBwYWdlbm8sIGludCBzbG90bm8pOwotc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsV3JpdGVQ YWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sCitzdGF0aWMgdm9pZCBT aW1wbGVMcnVaZXJvTFNOcyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyB2b2lk IFNpbXBsZUxydVdhaXRJTyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyB2b2lk IFNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3Jp dGVBbGwgZmRhdGEpOworc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydURlc2Mg KmN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyBib29sIFNscnVQaHlzaWNh bFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sCiAJCQkJ CQkJCSAgU2xydVdyaXRlQWxsIGZkYXRhKTsKLXN0YXRpYyB2b2lkIFNscnVSZXBvcnRJT0Vycm9y KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sCitzdGF0aWMgdm9pZCBTbHJ1UmVwb3J0SU9FcnJv cihTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sCiAJCQkJCQkJICBjb25zdCB2b2lkICpvcGFx dWVfZGF0YSk7Ci1zdGF0aWMgaW50CVNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8pOworc3RhdGljIGludAlTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1RGVzYyAqY3RsLCBp bnQ2NCBwYWdlbm8pOwogCi1zdGF0aWMgYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwKK3N0YXRpYyBib29sIFNscnVTY2FuRGlyQ2JEZWxl dGVDdXRvZmYoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkgIGludDY0 IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpOwotc3RhdGljIHZvaWQgU2xydUludGVybmFsRGVsZXRlU2Vn bWVudChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pOworc3RhdGljIHZvaWQgU2xydUludGVybmFs RGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubyk7CiBzdGF0aWMgaW5saW5l IHZvaWQgU2xydVJlY2VudGx5VXNlZChTbHJ1U2hhcmVkIHNoYXJlZCwgaW50IHNsb3Rubyk7CiAK IApAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBTbHJ1UmVjZW50bHlVc2Vk KFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xvdG5vKTsKICAqIEluaXRpYWxpemF0aW9uIG9mIHNo YXJlZCBtZW1vcnkKICAqLwogCi1TaXplCitzdGF0aWMgU2l6ZQogU2ltcGxlTHJ1U2htZW1TaXpl KGludCBuc2xvdHMsIGludCBubHNucykKIHsKIAlpbnQJCQluYmFua3MgPSBuc2xvdHMgLyBTTFJV X0JBTktfU0laRTsKQEAgLTIzOCwxMjAgKzI0MCwxMzUgQEAgU2ltcGxlTHJ1QXV0b3R1bmVCdWZm ZXJzKGludCBkaXZpc29yLCBpbnQgbWF4KQogfQogCiAvKgotICogSW5pdGlhbGl6ZSwgb3IgYXR0 YWNoIHRvLCBhIHNpbXBsZSBMUlUgY2FjaGUgaW4gc2hhcmVkIG1lbW9yeS4KLSAqCi0gKiBjdGw6 IGFkZHJlc3Mgb2YgbG9jYWwgKHVuc2hhcmVkKSBjb250cm9sIHN0cnVjdHVyZS4KLSAqIG5hbWU6 IG5hbWUgb2YgU0xSVS4gIChUaGlzIGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQot ICogbnNsb3RzOiBudW1iZXIgb2YgcGFnZSBzbG90cyB0byB1c2UuCi0gKiBubHNuczogbnVtYmVy IG9mIExTTiBncm91cHMgcGVyIHBhZ2UgKHNldCB0byB6ZXJvIGlmIG5vdCByZWxldmFudCkuCi0g KiBzdWJkaXI6IFBHREFUQS1yZWxhdGl2ZSBzdWJkaXJlY3RvcnkgdGhhdCB3aWxsIGNvbnRhaW4g dGhlIGZpbGVzLgotICogYnVmZmVyX3RyYW5jaGVfaWQ6IHRyYW5jaGUgSUQgdG8gdXNlIGZvciB0 aGUgU0xSVSdzIHBlci1idWZmZXIgTFdMb2Nrcy4KLSAqIGJhbmtfdHJhbmNoZV9pZDogdHJhbmNo ZSBJRCB0byB1c2UgZm9yIHRoZSBiYW5rIExXTG9ja3MuCi0gKiBzeW5jX2hhbmRsZXI6IHdoaWNo IHNldCBvZiBmdW5jdGlvbnMgdG8gdXNlIHRvIGhhbmRsZSBzeW5jIHJlcXVlc3RzCi0gKiBsb25n X3NlZ21lbnRfbmFtZXM6IHVzZSBzaG9ydCBvciBsb25nIHNlZ21lbnQgbmFtZXMKKyAqIFJlZ2lz dGVyIGEgc2ltcGxlIExSVSBjYWNoZSBpbiBzaGFyZWQgbWVtb3J5LgogICovCiB2b2lkCi1TaW1w bGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQg bmxzbnMsCi0JCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZlcl90cmFuY2hlX2lkLCBp bnQgYmFua190cmFuY2hlX2lkLAotCQkJICBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVy LCBib29sIGxvbmdfc2VnbWVudF9uYW1lcykKK1NpbXBsZUxydVJlcXVlc3RXaXRoT3B0cyhjb25z dCBTbHJ1T3B0cyAqb3B0aW9ucykKIHsKKwlTbHJ1T3B0cyAgICpvcHRpb25zX2NvcHk7CisKKwlB c3NlcnQob3B0aW9ucy0+bmFtZSAhPSBOVUxMKTsKKwlBc3NlcnQob3B0aW9ucy0+bnNsb3RzID4g MCk7CisJQXNzZXJ0KG9wdGlvbnMtPlBhZ2VQcmVjZWRlcyAhPSBOVUxMKTsKKwlBc3NlcnQob3B0 aW9ucy0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciAhPSBOVUxMKTsKKworCW9wdGlvbnNfY29weSA9 IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICBzaXplb2Yo U2xydU9wdHMpKTsKKwltZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25zLCBzaXplb2YoU2xydU9w dHMpKTsKKworCW9wdGlvbnNfY29weS0+YmFzZS5uYW1lID0gb3B0aW9ucy0+bmFtZTsKKwlvcHRp b25zX2NvcHktPmJhc2Uuc2l6ZSA9IFNpbXBsZUxydVNobWVtU2l6ZShvcHRpb25zX2NvcHktPm5z bG90cywgb3B0aW9uc19jb3B5LT5ubHNucyk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0 aW9uc19jb3B5LT5iYXNlLCBTSE1FTV9LSU5EX1NMUlUpOworfQorCisvKiBJbml0aWFsaXplIGxv Y2tzIGFuZCBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KK3ZvaWQKK3NobWVtX3NscnVfaW5pdCh2b2lk ICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpiYXNlX29wdGlvbnMpCit7CisJU2xydU9wdHMg ICAqb3B0aW9ucyA9IChTbHJ1T3B0cyAqKSBiYXNlX29wdGlvbnM7CisJU2xydURlc2MgICAqZGVz YyA9IChTbHJ1RGVzYyAqKSBvcHRpb25zLT5kZXNjOworCWNoYXIJCW5hbWVidWZbTkFNRURBVEFM RU5dOwogCVNscnVTaGFyZWQJc2hhcmVkOwotCWJvb2wJCWZvdW5kOworCWludAkJCW5zbG90cyA9 IG9wdGlvbnMtPm5zbG90czsKIAlpbnQJCQluYmFua3MgPSBuc2xvdHMgLyBTTFJVX0JBTktfU0la RTsKKwlpbnQJCQlubHNucyA9IG9wdGlvbnMtPm5sc25zOworCWNoYXIJICAgKnB0cjsKKwlTaXpl CQlvZmZzZXQ7CisKKwlzaGFyZWQgPSAoU2xydVNoYXJlZCkgbG9jYXRpb247CisJZGVzYy0+c2hh cmVkID0gc2hhcmVkOworCWRlc2MtPm5iYW5rcyA9IG5iYW5rczsKKwltZW1jcHkoJmRlc2MtPm9w dGlvbnMsIG9wdGlvbnMsIHNpemVvZihTbHJ1T3B0cykpOworCisJLyogYXNzaWduIG5ldyB0cmFu Y2hlIElEcywgaWYgbm90IGdpdmVuICovCisJaWYgKGRlc2MtPm9wdGlvbnMuYnVmZmVyX3RyYW5j aGVfaWQgPT0gMCkKKwl7CisJCXNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgIiVz IGJ1ZmZlciIsIGRlc2MtPm9wdGlvbnMubmFtZSk7CisJCWRlc2MtPm9wdGlvbnMuYnVmZmVyX3Ry YW5jaGVfaWQgPSBMV0xvY2tOZXdUcmFuY2hlSWQobmFtZWJ1Zik7CisJfQorCWlmIChkZXNjLT5v cHRpb25zLmJhbmtfdHJhbmNoZV9pZCA9PSAwKQorCXsKKwkJc25wcmludGYobmFtZWJ1Ziwgc2l6 ZW9mKG5hbWVidWYpLCAiJXMgYmFuayIsIGRlc2MtPm9wdGlvbnMubmFtZSk7CisJCWRlc2MtPm9w dGlvbnMuYmFua190cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKG5hbWVidWYpOworCX0K IAogCUFzc2VydChuc2xvdHMgPD0gU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIAotCUFzc2Vy dChjdGwtPlBhZ2VQcmVjZWRlcyAhPSBOVUxMKTsKLQlBc3NlcnQoY3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yICE9IE5VTEwpOworCW1lbXNldChzaGFyZWQsIDAsIHNpemVvZihTbHJ1U2hhcmVk RGF0YSkpOwogCi0Jc2hhcmVkID0gKFNscnVTaGFyZWQpIFNobWVtSW5pdFN0cnVjdChuYW1lLAot CQkJCQkJCQkJCSAgU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpLAotCQkJCQkJCQkJ CSAgJmZvdW5kKTsKKwlzaGFyZWQtPm51bV9zbG90cyA9IG5zbG90czsKKwlzaGFyZWQtPmxzbl9n cm91cHNfcGVyX3BhZ2UgPSBubHNuczsKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0Jewot CQkvKiBJbml0aWFsaXplIGxvY2tzIGFuZCBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KLQkJY2hhcgkg ICAqcHRyOwotCQlTaXplCQlvZmZzZXQ7Ci0KLQkJQXNzZXJ0KCFmb3VuZCk7Ci0KLQkJbWVtc2V0 KHNoYXJlZCwgMCwgc2l6ZW9mKFNscnVTaGFyZWREYXRhKSk7Ci0KLQkJc2hhcmVkLT5udW1fc2xv dHMgPSBuc2xvdHM7Ci0JCXNoYXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZSA9IG5sc25zOwotCi0J CXBnX2F0b21pY19pbml0X3U2NCgmc2hhcmVkLT5sYXRlc3RfcGFnZV9udW1iZXIsIDApOwotCi0J CXNoYXJlZC0+c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgobmFtZSk7Ci0K LQkJcHRyID0gKGNoYXIgKikgc2hhcmVkOwotCQlvZmZzZXQgPSBNQVhBTElHTihzaXplb2YoU2xy dVNoYXJlZERhdGEpKTsKLQkJc2hhcmVkLT5wYWdlX2J1ZmZlciA9IChjaGFyICoqKSAocHRyICsg b2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsK LQkJc2hhcmVkLT5wYWdlX3N0YXR1cyA9IChTbHJ1UGFnZVN0YXR1cyAqKSAocHRyICsgb2Zmc2V0 KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihTbHJ1UGFnZVN0YXR1cykp OwotCQlzaGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9vbCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihib29sKSk7Ci0JCXNoYXJlZC0+cGFnZV9u dW1iZXIgPSAoaW50NjQgKikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihu c2xvdHMgKiBzaXplb2YoaW50NjQpKTsKLQkJc2hhcmVkLT5wYWdlX2xydV9jb3VudCA9IChpbnQg KikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2Yo aW50KSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBMV0xvY2tzICovCi0JCXNoYXJlZC0+YnVmZmVyX2xv Y2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFM SUdOKG5zbG90cyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKLQkJc2hhcmVkLT5iYW5rX2xvY2tz ID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdO KG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKLQkJc2hhcmVkLT5iYW5rX2N1cl9scnVf Y291bnQgPSAoaW50ICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZzZXQgKz0gTUFYQUxJR04obmJh bmtzICogc2l6ZW9mKGludCkpOwotCi0JCWlmIChubHNucyA+IDApCi0JCXsKLQkJCXNoYXJlZC0+ Z3JvdXBfbHNuID0gKFhMb2dSZWNQdHIgKikgKHB0ciArIG9mZnNldCk7Ci0JCQlvZmZzZXQgKz0g TUFYQUxJR04obnNsb3RzICogbmxzbnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwotCQl9CisJcGdf YXRvbWljX2luaXRfdTY0KCZzaGFyZWQtPmxhdGVzdF9wYWdlX251bWJlciwgMCk7CiAKLQkJcHRy ICs9IEJVRkZFUkFMSUdOKG9mZnNldCk7Ci0JCWZvciAoaW50IHNsb3RubyA9IDA7IHNsb3RubyA8 IG5zbG90czsgc2xvdG5vKyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YnVm ZmVyX2xvY2tzW3Nsb3Rub10ubG9jaywKLQkJCQkJCQkgYnVmZmVyX3RyYW5jaGVfaWQpOworCXNo YXJlZC0+c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgoZGVzYy0+b3B0aW9u cy5uYW1lKTsKIAotCQkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOwotCQkJc2hh cmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX0VNUFRZOwotCQkJc2hhcmVkLT5w YWdlX2RpcnR5W3Nsb3Rub10gPSBmYWxzZTsKLQkJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xv dG5vXSA9IDA7Ci0JCQlwdHIgKz0gQkxDS1NaOwotCQl9CisJcHRyID0gKGNoYXIgKikgc2hhcmVk OworCW9mZnNldCA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0YSkpOworCXNoYXJlZC0+ cGFnZV9idWZmZXIgPSAoY2hhciAqKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFM SUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsKKwlzaGFyZWQtPnBhZ2Vfc3RhdHVzID0gKFNs cnVQYWdlU3RhdHVzICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCArPSBNQVhBTElHTihuc2xv dHMgKiBzaXplb2YoU2xydVBhZ2VTdGF0dXMpKTsKKwlzaGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9v bCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9m KGJvb2wpKTsKKwlzaGFyZWQtPnBhZ2VfbnVtYmVyID0gKGludDY0ICopIChwdHIgKyBvZmZzZXQp OworCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoaW50NjQpKTsKKwlzaGFyZWQt PnBhZ2VfbHJ1X2NvdW50ID0gKGludCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0gTUFY QUxJR04obnNsb3RzICogc2l6ZW9mKGludCkpOwogCi0JCS8qIEluaXRpYWxpemUgdGhlIHNsb3Qg YmFua3MuICovCi0JCWZvciAoaW50IGJhbmtubyA9IDA7IGJhbmtubyA8IG5iYW5rczsgYmFua25v KyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YmFua19sb2Nrc1tiYW5rbm9d LmxvY2ssIGJhbmtfdHJhbmNoZV9pZCk7Ci0JCQlzaGFyZWQtPmJhbmtfY3VyX2xydV9jb3VudFti YW5rbm9dID0gMDsKLQkJfQorCS8qIEluaXRpYWxpemUgTFdMb2NrcyAqLworCXNoYXJlZC0+YnVm ZmVyX2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0g TUFYQUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOworCXNoYXJlZC0+YmFua19s b2NrcyA9IChMV0xvY2tQYWRkZWQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFM SUdOKG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKKwlzaGFyZWQtPmJhbmtfY3VyX2xy dV9jb3VudCA9IChpbnQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFMSUdOKG5i YW5rcyAqIHNpemVvZihpbnQpKTsKIAotCQkvKiBTaG91bGQgZml0IHRvIGVzdGltYXRlZCBzaG1l bSBzaXplICovCi0JCUFzc2VydChwdHIgLSAoY2hhciAqKSBzaGFyZWQgPD0gU2ltcGxlTHJ1U2ht ZW1TaXplKG5zbG90cywgbmxzbnMpKTsKKwlpZiAobmxzbnMgPiAwKQorCXsKKwkJc2hhcmVkLT5n cm91cF9sc24gPSAoWExvZ1JlY1B0ciAqKSAocHRyICsgb2Zmc2V0KTsKKwkJb2Zmc2V0ICs9IE1B WEFMSUdOKG5zbG90cyAqIG5sc25zICogc2l6ZW9mKFhMb2dSZWNQdHIpKTsKIAl9Ci0JZWxzZQor CisJcHRyICs9IEJVRkZFUkFMSUdOKG9mZnNldCk7CisJZm9yIChpbnQgc2xvdG5vID0gMDsgc2xv dG5vIDwgbnNsb3RzOyBzbG90bm8rKykKIAl7Ci0JCUFzc2VydChmb3VuZCk7Ci0JCUFzc2VydChz aGFyZWQtPm51bV9zbG90cyA9PSBuc2xvdHMpOworCQlMV0xvY2tJbml0aWFsaXplKCZzaGFyZWQt PmJ1ZmZlcl9sb2Nrc1tzbG90bm9dLmxvY2ssCisJCQkJCQkgZGVzYy0+b3B0aW9ucy5idWZmZXJf dHJhbmNoZV9pZCk7CisKKwkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOworCQlz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7CisJCXNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dID0gZmFsc2U7CisJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xv dG5vXSA9IDA7CisJCXB0ciArPSBCTENLU1o7CiAJfQogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRo ZSB1bnNoYXJlZCBjb250cm9sIHN0cnVjdCwgaW5jbHVkaW5nIGRpcmVjdG9yeSBwYXRoLiBXZQot CSAqIGFzc3VtZSBjYWxsZXIgc2V0IFBhZ2VQcmVjZWRlcy4KLQkgKi8KLQljdGwtPnNoYXJlZCA9 IHNoYXJlZDsKLQljdGwtPnN5bmNfaGFuZGxlciA9IHN5bmNfaGFuZGxlcjsKLQljdGwtPmxvbmdf c2VnbWVudF9uYW1lcyA9IGxvbmdfc2VnbWVudF9uYW1lczsKLQljdGwtPm5iYW5rcyA9IG5iYW5r czsKLQlzdHJsY3B5KGN0bC0+RGlyLCBzdWJkaXIsIHNpemVvZihjdGwtPkRpcikpOworCS8qIElu aXRpYWxpemUgdGhlIHNsb3QgYmFua3MuICovCisJZm9yIChpbnQgYmFua25vID0gMDsgYmFua25v IDwgbmJhbmtzOyBiYW5rbm8rKykKKwl7CisJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YmFu a19sb2Nrc1tiYW5rbm9dLmxvY2ssIGRlc2MtPm9wdGlvbnMuYmFua190cmFuY2hlX2lkKTsKKwkJ c2hhcmVkLT5iYW5rX2N1cl9scnVfY291bnRbYmFua25vXSA9IDA7CisJfQorCisJLyogU2hvdWxk IGZpdCB0byBlc3RpbWF0ZWQgc2htZW0gc2l6ZSAqLworCUFzc2VydChwdHIgLSAoY2hhciAqKSBz aGFyZWQgPD0gU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpKTsKK30KKwordm9pZAor c2htZW1fc2xydV9hdHRhY2godm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqYmFzZV9v cHRpb25zKQoreworCVNscnVPcHRzICAgKm9wdGlvbnMgPSAoU2xydU9wdHMgKikgYmFzZV9vcHRp b25zOworCVNscnVEZXNjICAgKmRlc2MgPSAoU2xydURlc2MgKikgb3B0aW9ucy0+ZGVzYzsKKwlp bnQJCQluc2xvdHMgPSBvcHRpb25zLT5uc2xvdHM7CisJaW50CQkJbmJhbmtzID0gbnNsb3RzIC8g U0xSVV9CQU5LX1NJWkU7CisKKwlkZXNjLT5zaGFyZWQgPSAoU2xydVNoYXJlZCkgbG9jYXRpb247 CisJZGVzYy0+bmJhbmtzID0gbmJhbmtzOworCW1lbWNweSgmZGVzYy0+b3B0aW9ucywgb3B0aW9u cywgc2l6ZW9mKFNscnVPcHRzKSk7CiB9CiAKKwogLyoKICAqIEhlbHBlciBmdW5jdGlvbiBmb3Ig R1VDIGNoZWNrX2hvb2sgdG8gY2hlY2sgd2hldGhlciBzbHJ1IGJ1ZmZlcnMgYXJlIGluCiAgKiBt dWx0aXBsZXMgb2YgU0xSVV9CQU5LX1NJWkUuCkBAIC0zNzcsNyArMzk0LDcgQEAgY2hlY2tfc2xy dV9idWZmZXJzKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKQogICogQmFuayBsb2NrIG11 c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBpbnQK LVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCitTaW1wbGVMcnVa ZXJvUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlzbG90bm87CkBAIC00MzAsNyArNDQ3LDcgQEAgU2lt cGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKICAqIFRoaXMgYXNzdW1l cyB0aGF0IEludmFsaWRYTG9nUmVjUHRyIGlzIGJpdHdpc2UtYWxsLTAuCiAgKi8KIHN0YXRpYyB2 b2lkCi1TaW1wbGVMcnVaZXJvTFNOcyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKK1NpbXBsZUxy dVplcm9MU05zKFNscnVEZXNjICpjdGwsIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsKIApAQCAtNDQ2LDcgKzQ2Myw3IEBAIFNpbXBsZUxydVplcm9MU05z KFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQogICogU0xSVSBiYW5rIGxvY2sgaXMgYWNxdWlyZWQg YW5kIHJlbGVhc2VkIGhlcmUuCiAgKi8KIHZvaWQKLVNpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2Uo U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKK1NpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xy dURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKQogewogCWludAkJCXNsb3RubzsKIAlMV0xvY2sJICAg KmxvY2s7CkBAIC00NzIsNyArNDg5LDcgQEAgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1 Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQogICogQmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRy eSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBzdGF0aWMgdm9pZAotU2ltcGxlTHJ1 V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQorU2ltcGxlTHJ1V2FpdElPKFNscnVEZXNj ICpjdGwsIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsK IAlpbnQJCQliYW5rbm8gPSBTbG90R2V0QmFua051bWJlcihzbG90bm8pOwpAQCAtNTMwLDcgKzU0 Nyw3IEBAIFNpbXBsZUxydVdhaXRJTyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKICAqIFRoZSBj b3JyZWN0IGJhbmsgbG9jayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFuZCB3aWxsIGJlIGhlbGQg YXQgZXhpdC4KICAqLwogaW50Ci1TaW1wbGVMcnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vLCBib29sIHdyaXRlX29rLAorU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydURlc2MgKmN0bCwg aW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAogCQkJCSAgY29uc3Qgdm9pZCAqb3BhcXVlX2Rh dGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKQEAgLTYzNCw3ICs2NTEs NyBAQCBTaW1wbGVMcnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdy aXRlX29rLAogICogSXQgaXMgdW5zcGVjaWZpZWQgd2hldGhlciB0aGUgbG9jayB3aWxsIGJlIHNo YXJlZCBvciBleGNsdXNpdmUuCiAgKi8KIGludAotU2ltcGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHko U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCitTaW1w bGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGNvbnN0 IHZvaWQgKm9wYXF1ZV9kYXRhKQogewogCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7 CiAJTFdMb2NrCSAgICpiYW5rbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKGN0bCwgcGFnZW5v KTsKQEAgLTY4MSw3ICs2OTgsNyBAQCBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3Rs IGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKICAqIEJhbmsgbG9j ayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFuZCB3aWxsIGJlIGhlbGQgYXQgZXhpdC4KICAqLwog c3RhdGljIHZvaWQKLVNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3Ru bywgU2xydVdyaXRlQWxsIGZkYXRhKQorU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVEZXNjICpj dGwsIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJl ZCA9IGN0bC0+c2hhcmVkOwogCWludDY0CQlwYWdlbm8gPSBzaGFyZWQtPnBhZ2VfbnVtYmVyW3Ns b3Rub107CkBAIC03NjEsNyArNzc4LDcgQEAgU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVDdGwg Y3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCiAgKiBmZGF0YSBpcyBhbHdheXMg cGFzc2VkIGEgTlVMTCBoZXJlLgogICovCiB2b2lkCi1TaW1wbGVMcnVXcml0ZVBhZ2UoU2xydUN0 bCBjdGwsIGludCBzbG90bm8pCitTaW1wbGVMcnVXcml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50 IHNsb3RubykKIHsKIAlBc3NlcnQoY3RsLT5zaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0g U0xSVV9QQUdFX0VNUFRZKTsKIApAQCAtNzc1LDcgKzc5Miw3IEBAIFNpbXBsZUxydVdyaXRlUGFn ZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKICAqIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRo ZSBnaXZlbiBwYWdlLgogICovCiBib29sCi1TaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3Qo U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKK1NpbXBsZUxydURvZXNQaHlzaWNhbFBhZ2VFeGlz dChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJaW50NjQJCXNlZ25vID0gcGFnZW5v IC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKIAlpbnQJCQlycGFnZW5vID0gcGFnZW5vICUgU0xS VV9QQUdFU19QRVJfU0VHTUVOVDsKQEAgLTgzMyw3ICs4NTAsNyBAQCBTaW1wbGVMcnVEb2VzUGh5 c2ljYWxQYWdlRXhpc3QoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKICAqIHJlYWQvd3JpdGUg b3BlcmF0aW9ucy4gIFdlIGNvdWxkIGNhY2hlIG9uZSB2aXJ0dWFsIGZpbGUgcG9pbnRlciAuLi4K ICAqLwogc3RhdGljIGJvb2wKLVNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8sIGludCBzbG90bm8pCitTbHJ1UGh5c2ljYWxSZWFkUGFnZShTbHJ1RGVzYyAqY3Rs LCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwt PnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U OwpAQCAtOTA1LDcgKzkyMiw3IEBAIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBp bnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiAgKiBTaW1wbGVMcnVXcml0ZUFsbC4KICAqLwogc3Rh dGljIGJvb2wKLVNscnVQaHlzaWNhbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5v LCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCitTbHJ1UGh5c2ljYWxXcml0ZVBhZ2Uo U2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRh dGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8g PSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwpAQCAtMTAzNywxMSArMTA1NCwxMSBA QCBTbHJ1UGh5c2ljYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNs b3RubywgU2xydVdyaXRlQWxsIGZkYXRhKQogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAog CS8qIFF1ZXVlIHVwIGEgc3luYyByZXF1ZXN0IGZvciB0aGUgY2hlY2twb2ludGVyLiAqLwotCWlm IChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKKwlpZiAoY3RsLT5vcHRp b25zLnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKIAl7CiAJCUZpbGVUYWcJCXRh ZzsKIAotCQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5jX2hhbmRsZXIsIHNlZ25vKTsK KwkJSU5JVF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5zeW5jX2hhbmRsZXIsIHNlZ25v KTsKIAkJaWYgKCFSZWdpc3RlclN5bmNSZXF1ZXN0KCZ0YWcsIFNZTkNfUkVRVUVTVCwgZmFsc2Up KQogCQl7CiAJCQkvKiBObyBzcGFjZSB0byBlbnF1ZXVlIHN5bmMgcmVxdWVzdC4gIERvIGl0IHN5 bmNocm9ub3VzbHkuICovCkBAIC0xMDc3LDcgKzEwOTQsNyBAQCBTbHJ1UGh5c2ljYWxXcml0ZVBh Z2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubywgU2xydVdyaXRlQWxsIGZk YXRhKQogICogU2xydVBoeXNpY2FsV3JpdGVQYWdlLiAgQ2FsbCB0aGlzIGFmdGVyIGNsZWFuaW5n IHVwIHNoYXJlZC1tZW1vcnkgc3RhdGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1TbHJ1UmVwb3J0SU9F cnJvcihTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkK K1NscnVSZXBvcnRJT0Vycm9yKFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9p ZCAqb3BhcXVlX2RhdGEpCiB7CiAJaW50NjQJCXNlZ25vID0gcGFnZW5vIC8gU0xSVV9QQUdFU19Q RVJfU0VHTUVOVDsKIAlpbnQJCQlycGFnZW5vID0gcGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VH TUVOVDsKQEAgLTEwOTIsMTQgKzExMDksMTQgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBj dGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291 bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCksCi0JCQkJCSBvcGFxdWVfZGF0YSA/ IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCSBv cGFxdWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9k YXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQljYXNlIFNMUlVfU0VFS19GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCIgdG8gb2Zmc2V0ICVkOiAlbSIsCiAJCQkJ CQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5v cHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOwogCQkJYnJl YWs7CiAJCWNhc2UgU0xSVV9SRUFEX0ZBSUxFRDoKIAkJCWlmIChlcnJubykKQEAgLTExMDcsMTIg KzExMjQsMTIgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vubywg Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3Mo KSwKIAkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZyb20gZmlsZSBcIiVzXCIgYXQgb2Zm c2V0ICVkOiAlbSIsCiAJCQkJCQkJCXBhdGgsIG9mZnNldCksCi0JCQkJCQkgb3BhcXVlX2RhdGEg PyBjdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOworCQkJCQkJ IG9wYXF1ZV9kYXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVl X2RhdGEpIDogMCkpOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNn KCJjb3VsZCBub3QgcmVhZCBmcm9tIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZDogcmVhZCB0b28g ZmV3IGJ5dGVzIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/ IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkg b3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX1dSSVRFX0ZBSUxFRDoKIAkJCWlm IChlcnJubykKQEAgLTExMjAsMjYgKzExMzcsMjYgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0 bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJCSBlcnJtc2coIkNvdWxkIG5vdCB3cml0ZSB0 byBmaWxlIFwiJXNcIiBhdCBvZmZzZXQgJWQ6ICVtIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwK LQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWls X2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCShlcnJtc2coIkNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIiBhdCBv ZmZzZXQgJWQ6IHdyb3RlIHRvbyBmZXcgYnl0ZXMuIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwK LQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWls X2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJV X0ZTWU5DX0ZBSUxFRDoKIAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZlbChFUlJPUiksCiAJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZnN5 bmMgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlwYXRoKSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8g Y3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9w YXF1ZV9kYXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2Rh dGEpIDogMCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgU0xSVV9DTE9TRV9GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCksCi0JCQkJ CSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkg OiAwKSk7CisJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lv X2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyog Y2FuJ3QgZ2V0IGhlcmUsIHdlIHRydXN0ICovCkBAIC0xMTk5LDcgKzEyMTYsNyBAQCBTbHJ1UmVj ZW50bHlVc2VkKFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xvdG5vKQogICogVGhlIGNvcnJlY3Qg YmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0 LgogICovCiBzdGF0aWMgaW50Ci1TbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vKQorU2xydVNlbGVjdExSVVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKQog ewogCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7CiAKQEAgLTEyOTEsOCArMTMwOCw4 IEBAIFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCiAJCQl7CiAJ CQkJaWYgKHRoaXNfZGVsdGEgPiBiZXN0X3ZhbGlkX2RlbHRhIHx8CiAJCQkJCSh0aGlzX2RlbHRh ID09IGJlc3RfdmFsaWRfZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFnZVByZWNlZGVzKHRoaXNfcGFn ZV9udW1iZXIsCi0JCQkJCQkJCQkgICBiZXN0X3ZhbGlkX3BhZ2VfbnVtYmVyKSkpCisJCQkJCSBj dGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHRoaXNfcGFnZV9udW1iZXIsCisJCQkJCQkJCQkJCSAg IGJlc3RfdmFsaWRfcGFnZV9udW1iZXIpKSkKIAkJCQl7CiAJCQkJCWJlc3R2YWxpZHNsb3QgPSBz bG90bm87CiAJCQkJCWJlc3RfdmFsaWRfZGVsdGEgPSB0aGlzX2RlbHRhOwpAQCAtMTMwMyw4ICsx MzIwLDggQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKIAkJ CXsKIAkJCQlpZiAodGhpc19kZWx0YSA+IGJlc3RfaW52YWxpZF9kZWx0YSB8fAogCQkJCQkodGhp c19kZWx0YSA9PSBiZXN0X2ludmFsaWRfZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFnZVByZWNlZGVz KHRoaXNfcGFnZV9udW1iZXIsCi0JCQkJCQkJCQkgICBiZXN0X2ludmFsaWRfcGFnZV9udW1iZXIp KSkKKwkJCQkJIGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXModGhpc19wYWdlX251bWJlciwKKwkJ CQkJCQkJCQkJICAgYmVzdF9pbnZhbGlkX3BhZ2VfbnVtYmVyKSkpCiAJCQkJewogCQkJCQliZXN0 aW52YWxpZHNsb3QgPSBzbG90bm87CiAJCQkJCWJlc3RfaW52YWxpZF9kZWx0YSA9IHRoaXNfZGVs dGE7CkBAIC0xMzUyLDcgKzEzNjksNyBAQCBTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwg aW50NjQgcGFnZW5vKQogICogZW50cmllcyBhcmUgb24gZGlzay4KICAqLwogdm9pZAotU2ltcGxl THJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKQorU2ltcGxlTHJ1 V3JpdGVBbGwoU2xydURlc2MgKmN0bCwgYm9vbCBhbGxvd19yZWRpcnRpZWQpCiB7CiAJU2xydVNo YXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlTbHJ1V3JpdGVBbGxEYXRhIGZkYXRhOwpAQCAt MTQyMiw4ICsxNDM5LDggQEAgU2ltcGxlTHJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxs b3dfcmVkaXJ0aWVkKQogCQlTbHJ1UmVwb3J0SU9FcnJvcihjdGwsIHBhZ2VubywgTlVMTCk7CiAK IAkvKiBFbnN1cmUgdGhhdCBkaXJlY3RvcnkgZW50cmllcyBmb3IgbmV3IGZpbGVzIGFyZSBvbiBk aXNrLiAqLwotCWlmIChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKLQkJ ZnN5bmNfZm5hbWUoY3RsLT5EaXIsIHRydWUpOworCWlmIChjdGwtPm9wdGlvbnMuc3luY19oYW5k bGVyICE9IFNZTkNfSEFORExFUl9OT05FKQorCQlmc3luY19mbmFtZShjdGwtPm9wdGlvbnMuRGly LCB0cnVlKTsKIH0KIAogLyoKQEAgLTE0MzgsNyArMTQ1NSw3IEBAIFNpbXBsZUxydVdyaXRlQWxs KFNscnVDdGwgY3RsLCBib29sIGFsbG93X3JlZGlydGllZCkKICAqIGFmdGVyIGl0IGhhcyBhY2Ny dWVkIGZyZXNobHktd3JpdHRlbiBkYXRhLgogICovCiB2b2lkCi1TaW1wbGVMcnVUcnVuY2F0ZShT bHJ1Q3RsIGN0bCwgaW50NjQgY3V0b2ZmUGFnZSkKK1NpbXBsZUxydVRydW5jYXRlKFNscnVEZXNj ICpjdGwsIGludDY0IGN1dG9mZlBhZ2UpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNo YXJlZDsKIAlpbnQJCQlwcmV2YmFuazsKQEAgLTE0NjAsMTIgKzE0NzcsMTIgQEAgcmVzdGFydDoK IAkgKiBidWdzIGVsc2V3aGVyZSBpbiBTTFJVIGhhbmRsaW5nLCBzbyB3ZSBkb24ndCBjYXJlIGlm IHdlIHJlYWQgYSBzbGlnaHRseQogCSAqIG91dGRhdGVkIHZhbHVlOyB0aGVyZWZvcmUgd2UgZG9u J3QgYWRkIGEgbWVtb3J5IGJhcnJpZXIuCiAJICovCi0JaWYgKGN0bC0+UGFnZVByZWNlZGVzKHBn X2F0b21pY19yZWFkX3U2NCgmc2hhcmVkLT5sYXRlc3RfcGFnZV9udW1iZXIpLAotCQkJCQkJICBj dXRvZmZQYWdlKSkKKwlpZiAoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhwZ19hdG9taWNfcmVh ZF91NjQoJnNoYXJlZC0+bGF0ZXN0X3BhZ2VfbnVtYmVyKSwKKwkJCQkJCQkJICBjdXRvZmZQYWdl KSkKIAl7CiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCB0cnVuY2F0ZSBk aXJlY3RvcnkgXCIlc1wiOiBhcHBhcmVudCB3cmFwYXJvdW5kIiwKLQkJCQkJCWN0bC0+RGlyKSkp OworCQkJCQkJY3RsLT5vcHRpb25zLkRpcikpKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTQ4OCw3 ICsxNTA1LDcgQEAgcmVzdGFydDoKIAogCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9d ID09IFNMUlVfUEFHRV9FTVBUWSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoIWN0bC0+UGFnZVByZWNl ZGVzKHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSwgY3V0b2ZmUGFnZSkpCisJCWlmICghY3Rs LT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10sIGN1dG9m ZlBhZ2UpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTE1MzMsMTYgKzE1NTAsMTYgQEAgcmVz dGFydDoKICAqIHRoZXkgZWl0aGVyIGNhbid0IHlldCBjb250YWluIGFueXRoaW5nLCBvciBoYXZl IGFscmVhZHkgYmVlbiBjbGVhbmVkIG91dC4KICAqLwogc3RhdGljIHZvaWQKLVNscnVJbnRlcm5h bERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQorU2xydUludGVybmFsRGVs ZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubykKIHsKIAljaGFyCQlwYXRoW01B WFBHUEFUSF07CiAKIAkvKiBGb3JnZXQgYW55IGZzeW5jIHJlcXVlc3RzIHF1ZXVlZCBmb3IgdGhp cyBzZWdtZW50LiAqLwotCWlmIChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9O RSkKKwlpZiAoY3RsLT5vcHRpb25zLnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkK IAl7CiAJCUZpbGVUYWcJCXRhZzsKIAotCQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5j X2hhbmRsZXIsIHNlZ25vKTsKKwkJSU5JVF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5z eW5jX2hhbmRsZXIsIHNlZ25vKTsKIAkJUmVnaXN0ZXJTeW5jUmVxdWVzdCgmdGFnLCBTWU5DX0ZP UkdFVF9SRVFVRVNULCB0cnVlKTsKIAl9CiAKQEAgLTE1NTYsNyArMTU3Myw3IEBAIFNscnVJbnRl cm5hbERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQogICogRGVsZXRlIGFu IGluZGl2aWR1YWwgU0xSVSBzZWdtZW50LCBpZGVudGlmaWVkIGJ5IHRoZSBzZWdtZW50IG51bWJl ci4KICAqLwogdm9pZAotU2xydURlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25v KQorU2xydURlbGV0ZVNlZ21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2Vnbm8pCiB7CiAJU2xy dVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlwcmV2YmFuayA9IFNsb3RHZXRC YW5rTnVtYmVyKDApOwpAQCAtMTYzMywxOSArMTY1MCwxOSBAQCByZXN0YXJ0OgogICogZmlyc3Q+ PWN1dG9mZiAmJiBsYXN0Pj1jdXRvZmY6IG5vOyBldmVyeSBwYWdlIG9mIHRoaXMgc2VnbWVudCBp cyB0b28geW91bmcKICAqLwogc3RhdGljIGJvb2wKLVNscnVNYXlEZWxldGVTZWdtZW50KFNscnVD dGwgY3RsLCBpbnQ2NCBzZWdwYWdlLCBpbnQ2NCBjdXRvZmZQYWdlKQorU2xydU1heURlbGV0ZVNl Z21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2VncGFnZSwgaW50NjQgY3V0b2ZmUGFnZSkKIHsK IAlpbnQ2NAkJc2VnX2xhc3RfcGFnZSA9IHNlZ3BhZ2UgKyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U IC0gMTsKIAogCUFzc2VydChzZWdwYWdlICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCA9PSAwKTsK IAotCXJldHVybiAoY3RsLT5QYWdlUHJlY2VkZXMoc2VncGFnZSwgY3V0b2ZmUGFnZSkgJiYKLQkJ CWN0bC0+UGFnZVByZWNlZGVzKHNlZ19sYXN0X3BhZ2UsIGN1dG9mZlBhZ2UpKTsKKwlyZXR1cm4g KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMoc2VncGFnZSwgY3V0b2ZmUGFnZSkgJiYKKwkJCWN0 bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMoc2VnX2xhc3RfcGFnZSwgY3V0b2ZmUGFnZSkpOwogfQog CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogc3RhdGljIHZvaWQKLVNscnVQYWdlUHJlY2Vk ZXNUZXN0T2Zmc2V0KFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQpCitT bHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UsIHVp bnQzMiBvZmZzZXQpCiB7CiAJVHJhbnNhY3Rpb25JZCBsaHMsCiAJCQkJcmhzOwpAQCAtMTY1NCw2 ICsxNjcxLDkgQEAgU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoU2xydUN0bCBjdGwsIGludCBw ZXJfcGFnZSwgdWludDMyIG9mZnNldCkKIAlUcmFuc2FjdGlvbklkIG5ld2VzdFhhY3QsCiAJCQkJ b2xkZXN0WGFjdDsKIAorCS8qIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIFNscnUgaGFz IGJlZW4gaW5pdGlhbGl6ZWQgKi8KKwlBc3NlcnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyk7 CisKIAkvKgogCSAqIENvbXBhcmUgYW4gWElEIHBhaXIgaGF2aW5nIHVuZGVmaW5lZCBvcmRlciAo c2VlIFJGQyAxOTgyKSwgYSBwYWlyIGF0CiAJICogIm9wcG9zaXRlIGVuZHMiIG9mIHRoZSBYSUQg c3BhY2UuICBUcmFuc2FjdGlvbklkUHJlY2VkZXMoKSB0cmVhdHMgZWFjaApAQCAtMTY3MCwxOSAr MTY5MCwxOSBAQCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1Q3RsIGN0bCwgaW50IHBl cl9wYWdlLCB1aW50MzIgb2Zmc2V0KQogCUFzc2VydCghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHJo cywgbGhzICsgMSkpOwogCUFzc2VydCghVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhsaHMs IHJocykpOwogCUFzc2VydCghVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhyaHMsIGxocykp OwotCUFzc2VydCghY3RsLT5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9w YWdlKSk7Ci0JQXNzZXJ0KCFjdGwtPlBhZ2VQcmVjZWRlcyhsaHMgLyBwZXJfcGFnZSwgcmhzIC8g cGVyX3BhZ2UpKTsKLQlBc3NlcnQoIWN0bC0+UGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCBs aHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3RsLT5QYWdlUHJlY2VkZXMoKGxocyAtIHBlcl9w YWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVj ZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwot CUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDIgKiBwZXJf cGFnZSkgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJf cGFnZSwgKGxocyAtIDEgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkKKwlBc3NlcnQoIWN0bC0+b3B0 aW9ucy5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9wYWdlKSk7CisJQXNz ZXJ0KCFjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKGxocyAvIHBlcl9wYWdlLCByaHMgLyBwZXJf cGFnZSkpOworCUFzc2VydCghY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFn ZSwgbGhzIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMo KGxocyAtIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOworCUFzc2VydChj dGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCAobGhzIC0gMyAqIHBlcl9w YWdlKSAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhz IC8gcGVyX3BhZ2UsIChsaHMgLSAyICogcGVyX3BhZ2UpIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQo Y3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDEgKiBwZXJf cGFnZSkgLyBwZXJfcGFnZSkKIAkJICAgfHwgKDFVIDw8IDMxKSAlIHBlcl9wYWdlICE9IDApOwkv KiBTZWUgQ29tbWl0VHNQYWdlUHJlY2VkZXMoKSAqLwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRl cygobGhzICsgMSAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkKKwlBc3Nl cnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcygobGhzICsgMSAqIHBlcl9wYWdlKSAvIHBlcl9w YWdlLCByaHMgLyBwZXJfcGFnZSkKIAkJICAgfHwgKDFVIDw8IDMxKSAlIHBlcl9wYWdlICE9IDAp OwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsgMiAqIHBlcl9wYWdlKSAvIHBlcl9w YWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsg MyAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3Rs LT5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFn ZSkpOworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKChsaHMgKyAyICogcGVyX3Bh Z2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5Q YWdlUHJlY2VkZXMoKGxocyArIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSwgcmhzIC8gcGVyX3Bh Z2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2Us IChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwogCiAJLyoKIAkgKiBHZXROZXdUcmFuc2Fj dGlvbklkKCkgaGFzIGFzc2lnbmVkIHRoZSBsYXN0IFhJRCBpdCBjYW4gc2FmZWx5IHVzZSwgYW5k CkBAIC0xNzI3LDcgKzE3NDcsNyBAQCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1Q3Rs IGN0bCwgaW50IHBlcl9wYWdlLCB1aW50MzIgb2Zmc2V0KQogICogZG8gbm90IGFwcGx5IHRvIHRo ZW0uKQogICovCiB2b2lkCi1TbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVDdGwgY3RsLCBp bnQgcGVyX3BhZ2UpCitTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVEZXNjICpjdGwsIGlu dCBwZXJfcGFnZSkKIHsKIAkvKiBUZXN0IGZpcnN0LCBtaWRkbGUgYW5kIGxhc3QgZW50cmllcyBv ZiBhIHBhZ2UuICovCiAJU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoY3RsLCBwZXJfcGFnZSwg MCk7CkBAIC0xNzQyLDcgKzE3NjIsNyBAQCBTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVD dGwgY3RsLCBpbnQgcGVyX3BhZ2UpCiAgKgkJb25lIGNvbnRhaW5pbmcgdGhlIHBhZ2UgcGFzc2Vk IGFzICJkYXRhIi4KICAqLwogYm9vbAotU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNscnVD dGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK1NscnVTY2FuRGlyQ2JSZXBv cnRQcmVzZW5jZShTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwK IAkJCQkJCQl2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0gKihpbnQ2NCAqKSBk YXRhOwpAQCAtMTc1OCw3ICsxNzc4LDcgQEAgU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKICAqCQlUaGlzIGNhbGxi YWNrIGRlbGV0ZXMgc2VnbWVudHMgcHJpb3IgdG8gdGhlIG9uZSBwYXNzZWQgaW4gYXMgImRhdGEi LgogICovCiBzdGF0aWMgYm9vbAotU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9mZihTbHJ1Q3RsIGN0 bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsCitTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0 b2ZmKFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAogCQkJCQkJ ICB2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0gKihpbnQ2NCAqKSBkYXRhOwpA QCAtMTc3NCw3ICsxNzk0LDcgQEAgU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9mZihTbHJ1Q3RsIGN0 bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsCiAgKgkJVGhpcyBjYWxsYmFjayBkZWxl dGVzIGFsbCBzZWdtZW50cy4KICAqLwogYm9vbAotU2xydVNjYW5EaXJDYkRlbGV0ZUFsbChTbHJ1 Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCitTbHJ1 U2NhbkRpckNiRGVsZXRlQWxsKFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBz ZWdwYWdlLCB2b2lkICpkYXRhKQogewogCVNscnVJbnRlcm5hbERlbGV0ZVNlZ21lbnQoY3RsLCBz ZWdwYWdlIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCk7CiAKQEAgLTE3ODgsOSArMTgwOCw5IEBA IFNscnVTY2FuRGlyQ2JEZWxldGVBbGwoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2 NCBzZWdwYWdlLCB2b2lkICpkYXRhKQogICogU0xSVSBzZWdtZW50LgogICovCiBzdGF0aWMgaW5s aW5lIGJvb2wKLVNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKFNscnVDdGwgY3RsLCBz aXplX3QgbGVuKQorU2xydUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydURlc2MgKmN0 bCwgc2l6ZV90IGxlbikKIHsKLQlpZiAoY3RsLT5sb25nX3NlZ21lbnRfbmFtZXMpCisJaWYgKGN0 bC0+b3B0aW9ucy5sb25nX3NlZ21lbnRfbmFtZXMpCiAJCXJldHVybiAobGVuID09IDE1KTsJCS8q IHNlZSBTbHJ1RmlsZU5hbWUoKSAqLwogCWVsc2UKIApAQCAtMTgyMSw3ICsxODQxLDcgQEAgU2xy dUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydUN0bCBjdGwsIHNpemVfdCBsZW4pCiAg KiBOb3RlIHRoYXQgbm8gbG9ja2luZyBpcyBhcHBsaWVkLgogICovCiBib29sCi1TbHJ1U2NhbkRp cmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0 YSkKK1NscnVTY2FuRGlyZWN0b3J5KFNscnVEZXNjICpjdGwsIFNscnVTY2FuQ2FsbGJhY2sgY2Fs bGJhY2ssIHZvaWQgKmRhdGEpCiB7CiAJYm9vbAkJcmV0dmFsID0gZmFsc2U7CiAJRElSCQkgICAq Y2xkaXI7CkBAIC0xODI5LDggKzE4NDksOCBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0 bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAlpbnQ2NAkJc2Vnbm87 CiAJaW50NjQJCXNlZ3BhZ2U7CiAKLQljbGRpciA9IEFsbG9jYXRlRGlyKGN0bC0+RGlyKTsKLQl3 aGlsZSAoKGNsZGUgPSBSZWFkRGlyKGNsZGlyLCBjdGwtPkRpcikpICE9IE5VTEwpCisJY2xkaXIg PSBBbGxvY2F0ZURpcihjdGwtPm9wdGlvbnMuRGlyKTsKKwl3aGlsZSAoKGNsZGUgPSBSZWFkRGly KGNsZGlyLCBjdGwtPm9wdGlvbnMuRGlyKSkgIT0gTlVMTCkKIAl7CiAJCXNpemVfdAkJbGVuOwog CkBAIC0xODQzLDcgKzE4NjMsNyBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xy dVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAkJCXNlZ3BhZ2UgPSBzZWdubyAq IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CiAKIAkJCWVsb2coREVCVUcyLCAiU2xydVNjYW5EaXJl Y3RvcnkgaW52b2tpbmcgY2FsbGJhY2sgb24gJXMvJXMiLAotCQkJCSBjdGwtPkRpciwgY2xkZS0+ ZF9uYW1lKTsKKwkJCQkgY3RsLT5vcHRpb25zLkRpciwgY2xkZS0+ZF9uYW1lKTsKIAkJCXJldHZh bCA9IGNhbGxiYWNrKGN0bCwgY2xkZS0+ZF9uYW1lLCBzZWdwYWdlLCBkYXRhKTsKIAkJCWlmIChy ZXR2YWwpCiAJCQkJYnJlYWs7CkBAIC0xODYxLDcgKzE4ODEsNyBAQCBTbHJ1U2NhbkRpcmVjdG9y eShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKICAq IHBlcmZvcm1zIHRoZSBmc3luYy4KICAqLwogaW50Ci1TbHJ1U3luY0ZpbGVUYWcoU2xydUN0bCBj dGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpCitTbHJ1U3luY0ZpbGVUYWcoU2xy dURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0aCkKIHsKIAlpbnQJCQlm ZDsKIAlpbnQJCQlzYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vc3VidHJhbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK aW5kZXggYzZjZTcxZmM3MDMuLmI3OWU2NDhiODk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3N1YnRyYW5zLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC02NiwxNiArNjcsMjIgQEAgVHJhbnNhY3Rp b25JZFRvUGFnZShUcmFuc2FjdGlvbklkIHhpZCkKICNkZWZpbmUgVHJhbnNhY3Rpb25JZFRvRW50 cnkoeGlkKSAoKHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkgU1VCVFJBTlNfWEFDVFNfUEVSX1BBR0Up CiAKIAorc3RhdGljIHZvaWQgU1VCVFJBTlNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIFNVQlRSQU5TU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBTdWJUcmFu c1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGludAlzdWJ0 cmFuc19lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKKwor Y29uc3QgU2htZW1DYWxsYmFja3MgU1VCVFJBTlNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVz dF9mbiA9IFNVQlRSQU5TU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU1VCVFJBTlNTaG1lbUlu aXQsCit9OworCiAvKgogICogTGluayB0byBzaGFyZWQtbWVtb3J5IGRhdGEgc3RydWN0dXJlcyBm b3IgU1VCVFJBTlMgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgU3ViVHJhbnNDdGxE YXRhOwotCi0jZGVmaW5lIFN1YlRyYW5zQ3RsICAoJlN1YlRyYW5zQ3RsRGF0YSkKK3N0YXRpYyBT bHJ1RGVzYyBTdWJUcmFuc1NscnVEZXNjOwogCi0KLXN0YXRpYyBib29sIFN1YlRyYW5zUGFnZVBy ZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgaW50CXN1YnRyYW5zX2Vy cmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworI2RlZmluZSBT dWJUcmFuc0N0bCAgKCZTdWJUcmFuc1NscnVEZXNjKQogCiAKIC8qCkBAIC0yMDcsMTcgKzIxNCwx MyBAQCBTVUJUUkFOU1NobWVtQnVmZmVycyh2b2lkKQogCXJldHVybiBNaW4oTWF4KDE2LCBzdWJ0 cmFuc2FjdGlvbl9idWZmZXJzKSwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIH0KIAorCisK IC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBTVUJUUkFOUworICog UmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3IgU1VCVFJBTlMKICAqLwotU2l6ZQotU1VCVFJBTlNT aG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKFNVQlRSQU5TU2ht ZW1CdWZmZXJzKCksIDApOwotfQotCi12b2lkCi1TVUJUUkFOU1NobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK1NVQlRSQU5TU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRv LXR1bmluZyBpcyByZXF1ZXN0ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlmIChz dWJ0cmFuc2FjdGlvbl9idWZmZXJzID09IDApCkBAIC0yNDAsMTEgKzI0MywyNSBAQCBTVUJUUkFO U1NobWVtSW5pdCh2b2lkKQogCX0KIAlBc3NlcnQoc3VidHJhbnNhY3Rpb25fYnVmZmVycyAhPSAw KTsKIAotCVN1YlRyYW5zQ3RsLT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRlczsK LQlTdWJUcmFuc0N0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHN1YnRyYW5zX2VycmRldGFp bF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwgInN1YnRyYW5zYWN0 aW9uIiwgU1VCVFJBTlNTaG1lbUJ1ZmZlcnMoKSwgMCwKLQkJCQkgICJwZ19zdWJ0cmFucyIsIExX VFJBTkNIRV9TVUJUUkFOU19CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfU1VCVFJBTlNfU0xSVSwg U1lOQ19IQU5ETEVSX05PTkUsIGZhbHNlKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlN1 YlRyYW5zU2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJzdWJ0cmFuc2FjdGlvbiIsCisJCQkJCSAu RGlyID0gInBnX3N1YnRyYW5zIiwKKwkJCQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwK KworCQkJCQkgLm5zbG90cyA9IFNVQlRSQU5TU2htZW1CdWZmZXJzKCksCisKKwkJCQkJIC5zeW5j X2hhbmRsZXIgPSBTWU5DX0hBTkRMRVJfTk9ORSwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBTdWJU cmFuc1BhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc3VidHJh bnNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0g TFdUUkFOQ0hFX1NVQlRSQU5TX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RS QU5DSEVfU1VCVFJBTlNfU0xSVSwKKwkJKTsKK30KKworc3RhdGljIHZvaWQKK1NVQlRSQU5TU2ht ZW1Jbml0KHZvaWQgKmFyZykKK3sKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5z Q3RsLCBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4 IGU5MWE2MmZmNDJhLi5kYjZhOWE2NTYxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC0xNzksNiAr MTc5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZHNhLmgiCkBAIC0zNDUsNiArMzQ2LDE1 IEBAIHR5cGVkZWYgc3RydWN0IEFzeW5jUXVldWVDb250cm9sCiAKIHN0YXRpYyBBc3luY1F1ZXVl Q29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7CiAKK3N0YXRpYyB2b2lkIEFzeW5jU2htZW1SZXF1 ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBBc3luY1NobWVtSW5pdCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBBc3luY1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gQXN5bmNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBBc3luY1NobWVtSW5pdCwKK307 CisKKwogI2RlZmluZSBRVUVVRV9IRUFECQkJCQkoYXN5bmNRdWV1ZUNvbnRyb2wtPmhlYWQpCiAj ZGVmaW5lIFFVRVVFX1RBSUwJCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+dGFpbCkKICNkZWZpbmUg UVVFVUVfU1RPUF9QQUdFCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+c3RvcFBhZ2UpCkBAIC0zNTks OSArMzY5LDEzIEBAIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7 CiAvKgogICogVGhlIFNMUlUgYnVmZmVyIGFyZWEgdGhyb3VnaCB3aGljaCB3ZSBhY2Nlc3MgdGhl IG5vdGlmaWNhdGlvbiBxdWV1ZQogICovCi1zdGF0aWMgU2xydUN0bERhdGEgTm90aWZ5Q3RsRGF0 YTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBhc3luY1F1ZXVlUGFnZVByZWNlZGVzKGludDY0IHAsIGlu dDY0IHEpOworc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcihjb25zdCB2 b2lkICpvcGFxdWVfZGF0YSk7CisKK3N0YXRpYyBTbHJ1RGVzYyBOb3RpZnlTbHJ1RGVzYzsKIAot I2RlZmluZSBOb3RpZnlDdGwJCQkJCSgmTm90aWZ5Q3RsRGF0YSkKKworI2RlZmluZSBOb3RpZnlD dGwJCQkJCSgmTm90aWZ5U2xydURlc2MpCiAjZGVmaW5lIFFVRVVFX1BBR0VTSVpFCQkJCUJMQ0tT WgogCiAjZGVmaW5lIFFVRVVFX0ZVTExfV0FSTl9JTlRFUlZBTAk1MDAwCS8qIHdhcm4gYXQgbW9z dCBvbmNlIGV2ZXJ5IDVzICovCkBAIC01NzAsOSArNTg0LDcgQEAgYm9vbAkJVHJhY2Vfbm90aWZ5 ID0gZmFsc2U7CiBpbnQJCQltYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzID0gMTA0ODU3NjsKIAogLyog bG9jYWwgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwotc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0 YWlsRm9ySW9FcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CiBzdGF0aWMgaW5saW5lIGlu dDY0IGFzeW5jUXVldWVQYWdlRGlmZihpbnQ2NCBwLCBpbnQ2NCBxKTsKLXN0YXRpYyBpbmxpbmUg Ym9vbCBhc3luY1F1ZXVlUGFnZVByZWNlZGVzKGludDY0IHAsIGludDY0IHEpOwogc3RhdGljIGlu bGluZSB2b2lkIEdsb2JhbENoYW5uZWxLZXlJbml0KEdsb2JhbENoYW5uZWxLZXkgKmtleSwgT2lk IGRib2lkLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKmNoYW5uZWwpOwogc3RhdGljIGRzaGFzaF9o YXNoIGdsb2JhbENoYW5uZWxUYWJsZUhhc2goY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qgc2l6ZSwK QEAgLTc4MCw3OCArNzkyLDYzIEBAIGluaXRQZW5kaW5nTGlzdGVuQWN0aW9ucyh2b2lkKQogfQog CiAvKgotICogUmVwb3J0IHNwYWNlIG5lZWRlZCBmb3Igb3VyIHNoYXJlZCBtZW1vcnkgYXJlYQor ICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkgbmVlZHMKICAqLwotU2l6ZQotQXN5bmNTaG1l bVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitBc3luY1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7 CiAJU2l6ZQkJc2l6ZTsKIAotCS8qIFRoaXMgaGFkIGJldHRlciBtYXRjaCBBc3luY1NobWVtSW5p dCAqLwogCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcywgc2l6ZW9mKFF1ZXVlQmFja2VuZFN0 YXR1cykpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJv bCwgYmFja2VuZCkpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6 ZShub3RpZnlfYnVmZmVycywgMCkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJBc3lu YyBRdWV1ZSBDb250cm9sIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0g KHZvaWQgKiopICZhc3luY1F1ZXVlQ29udHJvbCwKKwkJKTsKIAotCXJldHVybiBzaXplOwotfQor CVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmTm90aWZ5U2xydURlc2MsCisJCQkJCSAubmFtZSA9 ICJub3RpZnkiLAorCQkJCQkgLkRpciA9ICJwZ19ub3RpZnkiLAogCi0vKgotICogSW5pdGlhbGl6 ZSBvdXIgc2hhcmVkIG1lbW9yeSBhcmVhCi0gKi8KLXZvaWQKLUFzeW5jU2htZW1Jbml0KHZvaWQp Ci17Ci0JYm9vbAkJZm91bmQ7Ci0JU2l6ZQkJc2l6ZTsKKwkvKiBsb25nIHNlZ21lbnQgbmFtZXMg YXJlIHVzZWQgaW4gb3JkZXIgdG8gYXZvaWQgd3JhcGFyb3VuZCAqLworCQkJCQkgLmxvbmdfc2Vn bWVudF9uYW1lcyA9IHRydWUsCiAKLQkvKgotCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEFz eW5jUXVldWVDb250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzaXplID0gbXVsX3NpemUoTWF4QmFj a2VuZHMsIHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgb2Zmc2V0b2YoQXN5bmNRdWV1ZUNvbnRyb2wsIGJhY2tlbmQpKTsKKwkJCQkJIC5uc2xvdHMg PSBub3RpZnlfYnVmZmVycywKIAotCWFzeW5jUXVldWVDb250cm9sID0gKEFzeW5jUXVldWVDb250 cm9sICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQXN5bmMgUXVldWUgQ29udHJvbCIsIHNpemUsICZm b3VuZCk7CisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX05PTkUsCisJCQkJCSAu UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yID0gYXN5bmNRdWV1ZUVycmRldGFpbEZvcklvRXJyb3IsCiAKLQlpZiAoIWZv dW5kKQorCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hFX05PVElGWV9CVUZGRVIs CisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX05PVElGWV9TTFJVLAorCQkpOwor fQorCitzdGF0aWMgdm9pZAorQXN5bmNTaG1lbUluaXQodm9pZCAqYXJnKQoreworCVNFVF9RVUVV RV9QT1MoUVVFVUVfSEVBRCwgMCwgMCk7CisJU0VUX1FVRVVFX1BPUyhRVUVVRV9UQUlMLCAwLCAw KTsKKwlRVUVVRV9TVE9QX1BBR0UgPSAwOworCVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKKwlhc3luY1F1ZXVlQ29udHJvbC0+bGFzdFF1ZXVlRmlsbFdhcm4gPSAw OworCWFzeW5jUXVldWVDb250cm9sLT5nbG9iYWxDaGFubmVsVGFibGVEU0EgPSBEU0FfSEFORExF X0lOVkFMSUQ7CisJYXN5bmNRdWV1ZUNvbnRyb2wtPmdsb2JhbENoYW5uZWxUYWJsZURTSCA9IERT SEFTSF9IQU5ETEVfSU5WQUxJRDsKKwlmb3IgKGludCBpID0gMDsgaSA8IE1heEJhY2tlbmRzOyBp KyspCiAJewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgaXQgKi8KLQkJ U0VUX1FVRVVFX1BPUyhRVUVVRV9IRUFELCAwLCAwKTsKLQkJU0VUX1FVRVVFX1BPUyhRVUVVRV9U QUlMLCAwLCAwKTsKLQkJUVVFVUVfU1RPUF9QQUdFID0gMDsKLQkJUVVFVUVfRklSU1RfTElTVEVO RVIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+bGFzdFF1ZXVl RmlsbFdhcm4gPSAwOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5lbFRhYmxlRFNB ID0gRFNBX0hBTkRMRV9JTlZBTElEOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5l bFRhYmxlRFNIID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCQlmb3IgKGludCBpID0gMDsgaSA8 IE1heEJhY2tlbmRzOyBpKyspCi0JCXsKLQkJCVFVRVVFX0JBQ0tFTkRfUElEKGkpID0gSW52YWxp ZFBpZDsKLQkJCVFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlkT2lkOwotCQkJUVVFVUVf TkVYVF9MSVNURU5FUihpKSA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JCQlTRVRfUVVFVUVfUE9T KFFVRVVFX0JBQ0tFTkRfUE9TKGkpLCAwLCAwKTsKLQkJCVFVRVVFX0JBQ0tFTkRfV0FLRVVQX1BF TkRJTkcoaSkgPSBmYWxzZTsKLQkJCVFVRVVFX0JBQ0tFTkRfSVNfQURWQU5DSU5HKGkpID0gZmFs c2U7Ci0JCX0KKwkJUVVFVUVfQkFDS0VORF9QSUQoaSkgPSBJbnZhbGlkUGlkOworCQlRVUVVRV9C QUNLRU5EX0RCT0lEKGkpID0gSW52YWxpZE9pZDsKKwkJUVVFVUVfTkVYVF9MSVNURU5FUihpKSA9 IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCVNFVF9RVUVVRV9QT1MoUVVFVUVfQkFDS0VORF9QT1Mo aSksIDAsIDApOworCQlRVUVVRV9CQUNLRU5EX1dBS0VVUF9QRU5ESU5HKGkpID0gZmFsc2U7CisJ CVFVRVVFX0JBQ0tFTkRfSVNfQURWQU5DSU5HKGkpID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBT ZXQgdXAgU0xSVSBtYW5hZ2VtZW50IG9mIHRoZSBwZ19ub3RpZnkgZGF0YS4gTm90ZSB0aGF0IGxv bmcgc2VnbWVudAotCSAqIG5hbWVzIGFyZSB1c2VkIGluIG9yZGVyIHRvIGF2b2lkIHdyYXBhcm91 bmQuCisJICogRHVyaW5nIHN0YXJ0IG9yIHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkg ZGlyZWN0b3J5LgogCSAqLwotCU5vdGlmeUN0bC0+UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBh Z2VQcmVjZWRlczsKLQlOb3RpZnlDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBhc3luY1F1 ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcjsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIm5vdGlm eSIsIG5vdGlmeV9idWZmZXJzLCAwLAotCQkJCSAgInBnX25vdGlmeSIsIExXVFJBTkNIRV9OT1RJ RllfQlVGRkVSLCBMV1RSQU5DSEVfTk9USUZZX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTk9O RSwgdHJ1ZSk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogRHVyaW5nIHN0YXJ0IG9y IHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkgZGlyZWN0b3J5LgotCQkgKi8KLQkJKHZv aWQpIFNscnVTY2FuRGlyZWN0b3J5KE5vdGlmeUN0bCwgU2xydVNjYW5EaXJDYkRlbGV0ZUFsbCwg TlVMTCk7Ci0JfQorCSh2b2lkKSBTbHJ1U2NhbkRpcmVjdG9yeShOb3RpZnlDdGwsIFNscnVTY2Fu RGlyQ2JEZWxldGVBbGwsIE5VTEwpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCA0 ZjcwNzE1ODMwMy4uN2E4YzY5ZGU4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTEwMSwx NiArMTAxLDExIEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCS8qIGxlZ2FjeSBzdWJzeXN0 ZW1zICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvY2tNYW5hZ2VyU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBQcmVkaWNhdGVMb2NrU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFhMT0dTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dSZWNvdmVy eVNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ0xPR1NobWVtU2l6ZSgpKTsK LQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ29tbWl0VHNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFNVQlRSQU5TU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBUd29QaGFzZVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3Vu ZFdvcmtlclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2ht ZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5kU3RhdHVzU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50ZXJTaG1lbVNpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1lbVNpemUoKSk7CkBAIC0xMjMsNyAr MTE4LDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IEFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJUcmVl U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTeW5jU2NhblNobWVtU2l6ZSgp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXN5bmNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFN0YXRzU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBX YWl0RXZlbnRDdXN0b21TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVj dGlvblBvaW50U2htZW1TaXplKCkpOwpAQCAtMjcwLDEwICsyNjQsNiBAQCBDcmVhdGVPckF0dGFj aFNobWVtU3RydWN0cyh2b2lkKQogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1l bUluaXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKLQlDTE9HU2htZW1Jbml0KCk7Ci0J Q29tbWl0VHNTaG1lbUluaXQoKTsKLQlTVUJUUkFOU1NobWVtSW5pdCgpOwotCU11bHRpWGFjdFNo bWVtSW5pdCgpOwogCUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQoKTsKIAogCS8qCkBAIC0yODEsMTEg KzI3MSw2IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJICovCiAJTG9ja01h bmFnZXJTaG1lbUluaXQoKTsKIAotCS8qCi0JICogU2V0IHVwIHByZWRpY2F0ZSBsb2NrIG1hbmFn ZXIKLQkgKi8KLQlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KCk7Ci0KIAkvKgogCSAqIFNldCB1cCBw cm9jZXNzIHRhYmxlCiAJICovCkBAIC0zMTMsNyArMjk4LDYgQEAgQ3JlYXRlT3JBdHRhY2hTaG1l bVN0cnVjdHModm9pZCkKIAkgKi8KIAlCVHJlZVNobWVtSW5pdCgpOwogCVN5bmNTY2FuU2htZW1J bml0KCk7Ci0JQXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVtSW5pdCgpOwogCVdhaXRFdmVu dEN1c3RvbVNobWVtSW5pdCgpOwogCUluamVjdGlvblBvaW50U2htZW1Jbml0KCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYwppbmRleCAyOWZmNjA2NWRkYS4uYmMxODZkNmVhMTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYwpAQCAtMTM0LDYgKzEzNCw3IEBACiAKICNpbmNsdWRlIDx1bmlzdGQuaD4K IAorI2luY2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2lu Y2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC01NDksNiArNTUwLDkgQEAg SW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJCWNhc2UgU0hNRU1f S0lORF9IQVNIOgogCQkJc2htZW1faGFzaF9pbml0KHN0cnVjdFB0ciwgcmVxdWVzdC0+b3B0aW9u cyk7CiAJCQlicmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX1NMUlU6CisJCQlzaG1lbV9zbHJ1X2lu aXQoc3RydWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOwogCX0KIH0KIApAQCAt NjAyLDYgKzYwNiw5IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVl c3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CiAJCQlzaG1lbV9o YXNoX2F0dGFjaChpbmRleF9lbnRyeS0+bG9jYXRpb24sIHJlcXVlc3QtPm9wdGlvbnMpOwogCQkJ YnJlYWs7CisJCWNhc2UgU0hNRU1fS0lORF9TTFJVOgorCQkJc2htZW1fc2xydV9hdHRhY2goaW5k ZXhfZW50cnktPmxvY2F0aW9uLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOwogCX0KIAog CXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGFmMDMw NzFhNzFmLi45YzM4OWIyMzUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpA QCAtMTUyLDEwICsxNTIsNiBAQAogLyoKICAqIElOVEVSRkFDRSBST1VUSU5FUwogICoKLSAqIGhv dXNla2VlcGluZyBmb3Igc2V0dGluZyB1cCBzaGFyZWQgbWVtb3J5IHByZWRpY2F0ZSBsb2NrIHN0 cnVjdHVyZXMKLSAqCQlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCi0gKgkJUHJlZGljYXRl TG9ja1NobWVtU2l6ZSh2b2lkKQotICoKICAqIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGluZwogICoJ CUdldFByZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAgKgkJUGFnZUlzUHJlZGljYXRlTG9j a2VkKFJlbGF0aW9uIHJlbGF0aW9uLCBCbG9ja051bWJlciBibGtubykKQEAgLTIxMSw2ICsyMDcs OCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBtZ3IuaCIKQEAgLTMyMiw5ICszMjAsMTIgQEAKIC8qCiAgKiBUaGUgU0xS VSBidWZmZXIgYXJlYSB0aHJvdWdoIHdoaWNoIHdlIGFjY2VzcyB0aGUgb2xkIHhpZHMuCiAgKi8K LXN0YXRpYyBTbHJ1Q3RsRGF0YSBTZXJpYWxTbHJ1Q3RsRGF0YTsKK3N0YXRpYyBib29sIFNlcmlh bFBhZ2VQcmVjZWRlc0xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGlj IGludAlzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0 YSk7CiAKLSNkZWZpbmUgU2VyaWFsU2xydUN0bAkJCSgmU2VyaWFsU2xydUN0bERhdGEpCitzdGF0 aWMgU2xydURlc2MgU2VyaWFsU2xydURlc2M7CisKKyNkZWZpbmUgU2VyaWFsU2xydUN0bAkJCSgm U2VyaWFsU2xydURlc2MpCiAKICNkZWZpbmUgU0VSSUFMX1BBR0VTSVpFCQkJQkxDS1NaCiAjZGVm aW5lIFNFUklBTF9FTlRSWVNJWkUJCQlzaXplb2YoU2VyQ29tbWl0U2VxTm8pCkBAIC0zODQsNiAr Mzg1LDE3IEBAIGludAkJCW1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3BhZ2U7CS8qIGluIGd1Y190 YWJsZXMuYyAqLwogICovCiBzdGF0aWMgUHJlZFhhY3RMaXN0IFByZWRYYWN0OwogCitzdGF0aWMg dm9pZCBQcmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQ cmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcmVkaWNhdGVM b2NrU2htZW1BdHRhY2godm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUHJlZGlj YXRlTG9ja1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUHJlZGljYXRlTG9ja1No bWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFByZWRpY2F0ZUxvY2tTaG1lbUluaXQsCisJLmF0dGFj aF9mbiA9IFByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCwKK307CisKKwogLyoKICAqIFRoaXMgcHJv dmlkZXMgYSBwb29sIG9mIFJXQ29uZmxpY3QgZGF0YSBlbGVtZW50cyB0byB1c2UgaW4gY29uZmxp Y3QgbGlzdHMKICAqIGJldHdlZW4gdHJhbnNhY3Rpb25zLgpAQCAtNDMxLDYgKzQ0Myw4IEBAIHN0 YXRpYyBib29sIE15WGFjdERpZFdyaXRlID0gZmFsc2U7CiAgKi8KIHN0YXRpYyBTRVJJQUxJWkFC TEVYQUNUICpTYXZlZFNlcmlhbGl6YWJsZVhhY3QgPSBJbnZhbGlkU2VyaWFsaXphYmxlWGFjdDsK IAorc3RhdGljIGludDY0IG1heF9zZXJpYWxpemFibGVfeGFjdHM7CisKIC8qIGxvY2FsIGZ1bmN0 aW9ucyAqLwogCiBzdGF0aWMgU0VSSUFMSVpBQkxFWEFDVCAqQ3JlYXRlUHJlZFhhY3Qodm9pZCk7 CkBAIC00NDIsMTMgKzQ1NiwxMiBAQCBzdGF0aWMgdm9pZCBTZXRQb3NzaWJsZVVuc2FmZUNvbmZs aWN0KFNFUklBTElaQUJMRVhBQ1QgKnJvWGFjdCwgU0VSSUFMSVpBQkxFWEFDVAogc3RhdGljIHZv aWQgUmVsZWFzZVJXQ29uZmxpY3QoUldDb25mbGljdCBjb25mbGljdCk7CiBzdGF0aWMgdm9pZCBG bGFnU3hhY3RVbnNhZmUoU0VSSUFMSVpBQkxFWEFDVCAqc3hhY3QpOwogCi1zdGF0aWMgYm9vbCBT ZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0 YXRpYyBpbnQJc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVl X2RhdGEpOwogc3RhdGljIHZvaWQgU2VyaWFsQWRkKFRyYW5zYWN0aW9uSWQgeGlkLCBTZXJDb21t aXRTZXFObyBtaW5Db25mbGljdENvbW1pdFNlcU5vKTsKIHN0YXRpYyBTZXJDb21taXRTZXFObyBT ZXJpYWxHZXRNaW5Db25mbGljdENvbW1pdFNlcU5vKFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRp YyB2b2lkIFNlcmlhbFNldEFjdGl2ZVNlclhtaW4oVHJhbnNhY3Rpb25JZCB4aWQpOwogCiBzdGF0 aWMgdWludDMyIHByZWRpY2F0ZWxvY2tfaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6 ZSk7CisKIHN0YXRpYyB2b2lkIFN1bW1hcml6ZU9sZGVzdENvbW1pdHRlZFN4YWN0KHZvaWQpOwog c3RhdGljIFNuYXBzaG90IEdldFNhZmVTbmFwc2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpOwog c3RhdGljIFNuYXBzaG90IEdldFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJbnQoU25h cHNob3Qgc25hcHNob3QsCkBAIC0xMTAwLDcxICsxMTEzLDUzIEBAIENoZWNrUG9pbnRQcmVkaWNh dGUodm9pZCkKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqIFByZWRpY2F0ZUxvY2tTaG1l bUluaXQgLS0gSW5pdGlhbGl6ZSB0aGUgcHJlZGljYXRlIGxvY2tpbmcgZGF0YSBzdHJ1Y3R1cmVz LgotICoKLSAqIFRoaXMgaXMgY2FsbGVkIGZyb20gQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBo b3JlcygpLCB3aGljaCBzZWUgZm9yCi0gKiBtb3JlIGNvbW1lbnRzLiAgSW4gdGhlIG5vcm1hbCBw b3N0bWFzdGVyIGNhc2UsIHRoZSBzaGFyZWQgaGFzaCB0YWJsZXMKLSAqIGFyZSBjcmVhdGVkIGhl cmUuICBCYWNrZW5kcyBpbmhlcml0IHRoZSBwb2ludGVycwotICogdG8gdGhlIHNoYXJlZCB0YWJs ZXMgdmlhIGZvcmsoKS4gIEluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZSwgZWFjaAotICogYmFja2Vu ZCByZS1leGVjdXRlcyB0aGlzIGNvZGUgdG8gb2J0YWluIHBvaW50ZXJzIHRvIHRoZSBhbHJlYWR5 IGV4aXN0aW5nCi0gKiBzaGFyZWQgaGFzaCB0YWJsZXMuCisgKiBQcmVkaWNhdGVMb2NrU2htZW1S ZXF1ZXN0IC0tIFJlZ2lzdGVyIHRoZSBwcmVkaWNhdGUgbG9ja2luZyBkYXRhIHN0cnVjdHVyZXMu CiAgKi8KLXZvaWQKLVByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQ cmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlIQVNIQ1RMCQlpbmZvOwog CWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0czsKIAlpbnQ2NAkJbWF4X3ByZWRpY2F0 ZV9sb2NrczsKLQlpbnQ2NAkJbWF4X3NlcmlhbGl6YWJsZV94YWN0czsKIAlpbnQ2NAkJbWF4X3J3 X2NvbmZsaWN0czsKLQlTaXplCQlyZXF1ZXN0U2l6ZTsKLQlib29sCQlmb3VuZDsKLQotI2lmbmRl ZiBFWEVDX0JBQ0tFTkQKLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyKTsKLSNlbmRpZgogCiAJ LyoKLQkgKiBDb21wdXRlIHNpemUgb2YgcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2h0YWJsZS4g Tm90ZSB0aGVzZQotCSAqIGNhbGN1bGF0aW9ucyBtdXN0IGFncmVlIHdpdGggUHJlZGljYXRlTG9j a1NobWVtU2l6ZSEKKwkgKiBIYXNoIHRhYmxlcyBhbmQgb3RoZXIgc3RydWN0cyBhcmUgc2V0IHVw IGJ5IFNobWVtSW5pdFJlZ2lzdGVyZWQoKSAvCisJICogU2htZW1BdHRhY2hSZWdpc3RlcmVkKCkg dmlhIHJlZ2lzdGVyZWQgZGVzY3JpcHRvcnMgaW4KKwkgKiBQcmVkaWNhdGVMb2NrU2htZW1SZWdp c3RlcigpLiAgSGVyZSB3ZSBkbyB0aGUgcmVtYWluaW5nIGluaXRpYWxpemF0aW9uCisJICogdGhh dCBjYW4ndCBiZSBkb25lIGluIGEgY2FsbGJhY2suCiAJICovCiAJbWF4X3ByZWRpY2F0ZV9sb2Nr X3RhcmdldHMgPSBOUFJFRElDQVRFTE9DS1RBUkdFVEVOVFMoKTsKIAogCS8qCi0JICogQWxsb2Nh dGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DS1RBUkdFVCBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMKKwkgKiBSZWdpc3RlciBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VUIHN0cnVj dHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5mb3JtYXRp b24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcp OwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwotCWluZm8u bnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0JUHJlZGlj YXRlTG9ja1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFSR0VUIGhh c2giLAotCQkJCQkJCQkJCQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cywKLQkJCQkJCQkJCQkJ JmluZm8sCi0JCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCQlI QVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7Ci0KLQkvKiBQcmUtY2FsY3VsYXRlIHRo ZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLwotCVNjcmF0 Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3JhdGNo VGFyZ2V0VGFnKTsKLQlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tIYXNoUGFy dGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFt ZSA9ICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAorCQkJCQkgLm5lbGVtcyA9IG1heF9wcmVk aWNhdGVfbG9ja190YXJnZXRzLAorCQkJCQkgLnB0ciA9ICZQcmVkaWNhdGVMb2NrVGFyZ2V0SGFz aCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VU VEFHKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tU QVJHRVQpLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVM T0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICog QWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMgcGVyCiAJICogeGFjdC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwotCWlu Zm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihQUkVESUNBVEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hhc2g7 Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7CiAK IAkvKiBBc3N1bWUgYW4gYXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJnZXQgKi8KIAltYXhfcHJl ZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMgKiAyOwogCi0JUHJlZGlj YXRlTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLIGhhc2giLAotCQkJCQkJ CQkJICBtYXhfcHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAg SEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwg SEFTSF9GSVhFRF9TSVpFKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIlBSRURJQ0FURUxP Q0sgaGFzaCIsCisJCQkJCSAubmVsZW1zID0gbWF4X3ByZWRpY2F0ZV9sb2NrcywKKwkJCQkJIC5w dHIgPSAmUHJlZGljYXRlTG9ja0hhc2gsCisJCQkJCSAuaGFzaF9pbmZvLmtleXNpemUgPSBzaXpl b2YoUFJFRElDQVRFTE9DS1RBRyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihQUkVESUNBVEVMT0NLKSwKKwkJCQkJIC5oYXNoX2luZm8uaGFzaCA9IHByZWRpY2F0ZWxvY2tf aGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9D S19QQVJUSVRJT05TLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNU SU9OIHwgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUsCisJCSk7CiAKIAkvKgogCSAq IENvbXB1dGUgc2l6ZSBmb3Igc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uIGhhc2h0YWJsZS4gTm90 ZSB0aGVzZQpAQCAtMTE3NywyOSArMTE3MiwyNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZv aWQpCiAJbWF4X3NlcmlhbGl6YWJsZV94YWN0cyA9IChNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJl ZF94YWN0cykgKiAxMDsKIAogCS8qCi0JICogQWxsb2NhdGUgYSBsaXN0IHRvIGhvbGQgaW5mb3Jt YXRpb24gb24gdHJhbnNhY3Rpb25zIHBhcnRpY2lwYXRpbmcgaW4KKwkgKiBSZWdpc3RlciBhIGxp c3QgdG8gaG9sZCBpbmZvcm1hdGlvbiBvbiB0cmFuc2FjdGlvbnMgcGFydGljaXBhdGluZyBpbgog CSAqIHByZWRpY2F0ZSBsb2NraW5nLgogCSAqLwotCXJlcXVlc3RTaXplID0gYWRkX3NpemUoUHJl ZFhhY3RMaXN0RGF0YVNpemUsCi0JCQkJCQkgICAobXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxp emFibGVfeGFjdHMsCi0JCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSkpOwotCVBy ZWRYYWN0ID0gU2htZW1Jbml0U3RydWN0KCJQcmVkWGFjdExpc3QiLAotCQkJCQkJCSAgIHJlcXVl c3RTaXplLAotCQkJCQkJCSAgICZmb3VuZCk7Ci0JQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0 bWFzdGVyKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiUHJlZFhhY3RMaXN0IiwKKwkJ CQkJICAgLnNpemUgPSBhZGRfc2l6ZShQcmVkWGFjdExpc3REYXRhU2l6ZSwKKwkJCQkJCQkJCQko bXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxpemFibGVfeGFjdHMsCisJCQkJCQkJCQkJCQkgIHNp emVvZihTRVJJQUxJWkFCTEVYQUNUKSkpKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUHJl ZFhhY3QsCisJCSk7CiAKIAkvKgotCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFNFUklBTEla QUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAorCSAqIFJlZ2lzdGVyIGhhc2gg dGFibGUgZm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAog CSAqIGluZm9ybWF0aW9uIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUg YWNjZXNzZWQgZGF0YS4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxF WElEVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0J U2VyaWFsaXphYmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNo IiwKLQkJCQkJCQkJCQltYXhfc2VyaWFsaXphYmxlX3hhY3RzLAotCQkJCQkJCQkJCSZpbmZvLAot CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCUhBU0hfRklYRURf U0laRSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJTRVJJQUxJWkFCTEVYSUQgaGFzaCIs CisJCQkJCSAubmVsZW1zID0gbWF4X3NlcmlhbGl6YWJsZV94YWN0cywKKwkJCQkJIC5wdHIgPSAm U2VyaWFsaXphYmxlWGlkSGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihT RVJJQUxJWkFCTEVYSURUQUcpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXplb2Yo U0VSSUFMSVpBQkxFWElEKSwKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2Ug Zm9yIHRyYWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTEy MTQsNTggKzEyMDcsNTAgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqLwogCW1h eF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXphYmxlX3hhY3RzICogNTsKIAotCXJlcXVlc3RT aXplID0gUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSArCi0JCW11bF9zaXplKChTaXplKSBt YXhfcndfY29uZmxpY3RzLAotCQkJCSBSV0NvbmZsaWN0RGF0YVNpemUpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJSV0NvbmZsaWN0UG9vbCIsCisJCQkJCSAgIC5zaXplID0gUldDb25m bGljdFBvb2xIZWFkZXJEYXRhU2l6ZSArIG11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxpY3Rz LAorCQkJCQkJCQkJCQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZSV0NvbmZsaWN0UG9vbCwKKwkJKTsKIAotCVJXQ29uZmxpY3RQb29sID0g U2htZW1Jbml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgcmVxdWVzdFNpemUs Ci0JCQkJCQkJCQkgJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIp OwotCi0JLyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0 IG9mIGZpbmlzaGVkIHNlcmlhbGl6YWJsZQotCSAqIHRyYW5zYWN0aW9ucy4KLQkgKi8KLQlGaW5p c2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9ucyA9IChkbGlzdF9oZWFkICopCi0JCVNobWVtSW5p dFN0cnVjdCgiRmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMiLAotCQkJCQkJc2l6ZW9m KGRsaXN0X2hlYWQpLAotCQkJCQkJJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBv c3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJGaW5pc2hlZFNlcmlhbGl6 YWJsZVRyYW5zYWN0aW9ucyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKGRsaXN0X2hlYWQpLAor CQkJCQkgICAucHRyID0gKHZvaWQgKiopICZGaW5pc2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9u cywKKwkJKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgU0xSVSBzdG9yYWdlIGZvciBvbGQg Y29tbWl0dGVkIHNlcmlhbGl6YWJsZQogCSAqIHRyYW5zYWN0aW9ucy4KIAkgKi8KLQlTZXJpYWxT bHJ1Q3RsLT5QYWdlUHJlY2VkZXMgPSBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHk7Ci0JU2Vy aWFsU2xydUN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHNlcmlhbF9lcnJkZXRhaWxfZm9y X2lvX2Vycm9yOwotCVNpbXBsZUxydUluaXQoU2VyaWFsU2xydUN0bCwgInNlcmlhbGl6YWJsZSIs Ci0JCQkJICBzZXJpYWxpemFibGVfYnVmZmVycywgMCwgInBnX3NlcmlhbCIsCi0JCQkJICBMV1RS QU5DSEVfU0VSSUFMX0JVRkZFUiwgTFdUUkFOQ0hFX1NFUklBTF9TTFJVLAotCQkJCSAgU1lOQ19I QU5ETEVSX05PTkUsIGZhbHNlKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlNlcmlhbFNs cnVEZXNjLAorCQkJCQkgLm5hbWUgPSAic2VyaWFsaXphYmxlIiwKKwkJCQkJIC5EaXIgPSAicGdf c2VyaWFsIiwKKwkJCQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwKKworCQkJCQkgLm5z bG90cyA9IHNlcmlhbGl6YWJsZV9idWZmZXJzLAorCisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lO Q19IQU5ETEVSX05PTkUsCisJCQkJCSAuUGFnZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVz TG9naWNhbGx5LAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxfZXJyZGV0 YWlsX2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hF X1NFUklBTF9CVUZGRVIsCisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX1NFUklB TF9TTFJVLAorCQkpOwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAlTZXJpYWxQYWdlUHJl Y2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKICNlbmRpZgotCVNscnVQYWdlUHJlY2VkZXNVbml0 VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKIAotCS8qCi0JICog Q3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1cmUuCi0JICovCi0J c2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlh bENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKLQlBc3Nl cnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJTZXJpYWxDb250cm9sRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFNlcmlhbENv bnRyb2xEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmc2VyaWFsQ29udHJvbCwKKwkJ KTsKK30KIAotCS8qCi0JICogSWYgd2UganVzdCBhdHRhY2hlZCB0byBleGlzdGluZyBzaGFyZWQg bWVtb3J5IChFWEVDX0JBQ0tFTkQpLCB3ZSdyZSBhbGwKLQkgKiBkb25lLiAgT3RoZXJ3aXNlLCBk dXJpbmcgcG9zdG1hc3RlciBzdGFydHVwIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSB0aGUKLQkgKiBz aGFyZWQgbWVtb3J5LgotCSAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCS8qIFRo aXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JCU9sZENv bW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwotCQlyZXR1cm47Ci0J fQorc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCAqYXJnKQoreworCWlu dAkJCW1heF9yd19jb25mbGljdHM7CisJYm9vbAkJZm91bmQ7CiAKIAkvKgogCSAqIFJlc2VydmUg YSBkdW1teSBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0IHRvIG1ha2Ugc3VyZSB0 aGVyZSdzCkBAIC0xMjc3LDcgKzEyNjIsNiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQp CiAJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3VuZCk7CiAKLQkvKiBJ bml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KIAlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YXZhaWxh YmxlTGlzdCk7CiAJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmFjdGl2ZUxpc3QpOwogCVByZWRYYWN0 LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTEzMTksNiArMTMw Myw5IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAlkbGlzdF9pbml0KCZSV0NvbmZs aWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7CiAJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldD b25mbGljdCkgKChjaGFyICopIFJXQ29uZmxpY3RQb29sICsKIAkJCQkJCQkJCQkJUldDb25mbGlj dFBvb2xIZWFkZXJEYXRhU2l6ZSk7CisKKwltYXhfcndfY29uZmxpY3RzID0gbWF4X3NlcmlhbGl6 YWJsZV94YWN0cyAqIDU7CisKIAkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0 LCBjbGVhbi4gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yd19jb25mbGljdHM7IGkrKykK IAl7CkBAIC0xMzM1LDU3ICsxMzIyLDI4IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkK IAlzZXJpYWxDb250cm9sLT5oZWFkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJc2VyaWFs Q29udHJvbC0+dGFpbFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCUxXTG9ja1JlbGVhc2Uo U2VyaWFsQ29udHJvbExvY2spOwotfQotCi0vKgotICogRXN0aW1hdGUgc2hhcmVkLW1lbW9yeSBz cGFjZSB1c2VkIGZvciBwcmVkaWNhdGUgbG9jayB0YWJsZQotICovCi1TaXplCi1QcmVkaWNhdGVM b2NrU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JaW50NjQJCW1heF9wcmVk aWNhdGVfbG9ja190YXJnZXRzOwotCWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tzOwotCWludDY0 CQltYXhfc2VyaWFsaXphYmxlX3hhY3RzOwotCWludDY0CQltYXhfcndfY29uZmxpY3RzOwotCi0J LyogcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2ggdGFibGUgKi8KLQltYXhfcHJlZGljYXRlX2xv Y2tfdGFyZ2V0cyA9IE5QUkVESUNBVEVMT0NLVEFSR0VURU5UUygpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMsCi0J CQkJCQkJCQkJCSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCkpKTsKLQotCS8qIHByZWRpY2F0 ZSBsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhfcHJlZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0 ZV9sb2NrX3RhcmdldHMgKiAyOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRl X3NpemUobWF4X3ByZWRpY2F0ZV9sb2NrcywKLQkJCQkJCQkJCQkJIHNpemVvZihQUkVESUNBVEVM T0NLKSkpOwotCi0JLyogdHJhbnNhY3Rpb24gbGlzdCAqLwotCW1heF9zZXJpYWxpemFibGVfeGFj dHMgPSAoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpICogMTA7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFByZWRYYWN0TGlzdERhdGFTaXplKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgbXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCSAgIHNp emVvZihTRVJJQUxJWkFCTEVYQUNUKSkpOwogCi0JLyogdHJhbnNhY3Rpb24geGlkIHRhYmxlICov Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZShtYXhfc2VyaWFsaXph YmxlX3hhY3RzLAotCQkJCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhJRCkpKTsKKwkvKiBU aGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCU9sZENv bW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwogCi0JLyogcnctY29u ZmxpY3QgcG9vbCAqLwotCW1heF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXphYmxlX3hhY3Rz ICogNTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6 ZSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxp Y3RzLAotCQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpKTsKKwkvKiBQcmUtY2FsY3VsYXRl IHRoZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLworCVNj cmF0Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3Jh dGNoVGFyZ2V0VGFnKTsKKwlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tIYXNo UGFydGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7CiAKLQkvKiBIZWFkIGZvciBsaXN0 IG9mIGZpbmlzaGVkIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMuICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIHNpemVvZihkbGlzdF9oZWFkKSk7CisJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0 cyhTZXJpYWxTbHJ1Q3RsLCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOworfQogCi0JLyogU2hhcmVk IG1lbW9yeSBzdHJ1Y3R1cmVzIGZvciBTTFJVIHRyYWNraW5nIG9mIG9sZCBjb21taXR0ZWQgeGlk cy4gKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShzZXJpYWxpemFibGVf YnVmZmVycywgMCkpOworc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCh2b2lk ICphcmcpCit7CisJLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBzbyBsZXQncyBrZWVwIGEgbG9jYWwg Y29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dDsKIAotCXJldHVybiBzaXplOworCS8qIFByZS1jYWxjdWxhdGUgdGhlIGhhc2ggYW5kIHBhcnRp dGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCisJU2NyYXRjaFRhcmdldFRhZ0hhc2gg PSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUoJlNjcmF0Y2hUYXJnZXRUYWcpOworCVNj cmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRlTG9ja0hhc2hQYXJ0aXRpb25Mb2NrKFNjcmF0 Y2hUYXJnZXRUYWdIYXNoKTsKIH0KIAotCiAvKgogICogQ29tcHV0ZSB0aGUgaGFzaCBjb2RlIGFz c29jaWF0ZWQgd2l0aCBhIFBSRURJQ0FURUxPQ0tUQUcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NscnUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9zbHJ1LmMKaW5kZXggMjE5MGYzODhlYWUuLmY0ZGZlODY5N2Q3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2xydS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zbHJ1LmMKQEAgLTExOSw2ICsxMTksNyBA QCBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpbnQJCQlpOwog CisJQXNzZXJ0KG5hbWUpOwogCWZvciAoaSA9IDA7IGkgPCBTTFJVX05VTV9FTEVNRU5UUzsgaSsr KQogCXsKIAkJaWYgKHN0cmNtcChzbHJ1X25hbWVzW2ldLCBuYW1lKSA9PSAwKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Nsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgK aW5kZXggYTFjZmVkNWY0M2MuLjc4OTQ5OThjNzYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvY2xvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKQEAgLTQwLDggKzQw LDYgQEAgZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZFNldFRyZWVTdGF0dXMoVHJhbnNhY3Rpb25J ZCB4aWQsIGludCBuc3VieGlkcywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnN1YnhpZHMs IFhpZFN0YXR1cyBzdGF0dXMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiBYaWRTdGF0dXMgVHJh bnNhY3Rpb25JZEdldFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciAqbHNuKTsK IAotZXh0ZXJuIFNpemUgQ0xPR1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIENMT0dTaG1l bUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBDTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgU3RhcnR1cENMT0codm9pZCk7CiBleHRlcm4gdm9pZCBUcmltQ0xPRyh2b2lkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9jb21taXRfdHMuaAppbmRleCA0OWVlMjFjZDVkMi4uODI1Y2NkYTkwZWQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv Y29tbWl0X3RzLmgKQEAgLTI3LDggKzI3LDYgQEAgZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEdl dENvbW1pdFRzRGF0YShUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiBUcmFuc2FjdGlvbklkIEdl dExhdGVzdENvbW1pdFRzRGF0YShUaW1lc3RhbXBUeiAqdHMsCiAJCQkJCQkJCQkJICAgUmVwbE9y aWdpbklkICpub2RlaWQpOwogCi1leHRlcm4gU2l6ZSBDb21taXRUc1NobWVtU2l6ZSh2b2lkKTsK LWV4dGVybiB2b2lkIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0 cmFwQ29tbWl0VHModm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwQ29tbWl0VHModm9pZCk7CiBl eHRlcm4gdm9pZCBDb21taXRUc1BhcmFtZXRlckNoYW5nZShib29sIG5ld3ZhbHVlLCBib29sIG9s ZHZhbHVlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCAyYWU4YjU3MWRjYy4uNmJlNTI5OWFi NjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTEyMSw4ICsxMjEsNiBAQCBleHRlcm4gdm9p ZCBBdEVPWGFjdF9NdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBBdFByZXBhcmVfTXVsdGlY YWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfTXVsdGlYYWN0KEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOwogCi1leHRlcm4gU2l6ZSBNdWx0aVhhY3RTaG1lbVNpemUodm9pZCk7Ci1l eHRlcm4gdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3Ry YXBNdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwTXVsdGlYYWN0KHZvaWQpOwog ZXh0ZXJuIHZvaWQgVHJpbU11bHRpWGFjdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zbHJ1LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCmluZGV4IGY5NjZkMGQ5 ZmU3Li4zNmE3NTE0ZDdhMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNs dWRlICJzdG9yYWdlL3N5bmMuaCIKIAogLyoKQEAgLTEwNiwyMyArMTA3LDI4IEBAIHR5cGVkZWYg c3RydWN0IFNscnVTaGFyZWREYXRhCiAKIHR5cGVkZWYgU2xydVNoYXJlZERhdGEgKlNscnVTaGFy ZWQ7CiAKLS8qCi0gKiBTbHJ1Q3RsRGF0YSBpcyBhbiB1bnNoYXJlZCBzdHJ1Y3R1cmUgdGhhdCBw b2ludHMgdG8gdGhlIGFjdGl2ZSBpbmZvcm1hdGlvbgotICogaW4gc2hhcmVkIG1lbW9yeS4KLSAq LwotdHlwZWRlZiBzdHJ1Y3QgU2xydUN0bERhdGEKK3R5cGVkZWYgc3RydWN0IFNscnVEZXNjIFNs cnVEZXNjOworCit0eXBlZGVmIHN0cnVjdCBTbHJ1T3B0cwogewotCVNscnVTaGFyZWQJc2hhcmVk OworCVNobWVtU3RydWN0T3B0cyBiYXNlOwogCi0JLyogTnVtYmVyIG9mIGJhbmtzIGluIHRoaXMg U0xSVS4gKi8KLQl1aW50MTYJCW5iYW5rczsKKwkvKgorCSAqIG5hbWUgb2YgU0xSVS4gIChUaGlz IGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQorCSAqLworCWNvbnN0IGNoYXIgKm5h bWU7CiAKIAkvKgotCSAqIElmIHRydWUsIHVzZSBsb25nIHNlZ21lbnQgZmlsZSBuYW1lcy4gIE90 aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFtZXMuCi0JICoKLQkgKiBGb3IgZGV0YWlscyBhYm91 dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2VlIFNscnVGaWxlTmFtZSgpLgorCSAqIFBvaW50ZXIg dG8gYSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZvciB0aGUgU0xSVS4gIEl0IGlzIGluaXRpYWxp emVkIGluCisJICogd2hlbiB0aGUgU0xSVSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hlZCB0by4K IAkgKi8KLQlib29sCQlsb25nX3NlZ21lbnRfbmFtZXM7CisJU2xydURlc2MgICAqZGVzYzsKKwor CS8qIG51bWJlciBvZiBwYWdlIHNsb3RzIHRvIHVzZS4gKi8KKwlpbnQJCQluc2xvdHM7CisKKwkv KiBudW1iZXIgb2YgTFNOIGdyb3VwcyBwZXIgcGFnZSAoc2V0IHRvIHplcm8gaWYgbm90IHJlbGV2 YW50KS4gKi8KKwlpbnQJCQlubHNuczsKIAogCS8qCiAJICogV2hpY2ggc3luYyBoYW5kbGVyIGZ1 bmN0aW9uIHRvIHVzZSB3aGVuIGhhbmRpbmcgc3luYyByZXF1ZXN0cyBvdmVyIHRvCkBAIC0xMzAs NiArMTM2LDE5IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiAJICovCiAJU3luY1JlcXVl c3RIYW5kbGVyIHN5bmNfaGFuZGxlcjsKIAorCS8qCisJICogUEdEQVRBLXJlbGF0aXZlIHN1YmRp cmVjdG9yeSB0aGF0IHdpbGwgY29udGFpbiB0aGUgZmlsZXMuCisJICovCisJY29uc3QgY2hhciAq RGlyOworCisJLyoKKwkgKiBJZiB0cnVlLCB1c2UgbG9uZyBzZWdtZW50IGZpbGUgbmFtZXMuICBP dGhlcndpc2UsIHVzZSBzaG9ydCBmaWxlIG5hbWVzLgorCSAqCisJICogRm9yIGRldGFpbHMgYWJv dXQgdGhlIGZpbGUgbmFtZSBmb3JtYXQsIHNlZSBTbHJ1RmlsZU5hbWUoKS4KKwkgKi8KKwlib29s CQlsb25nX3NlZ21lbnRfbmFtZXM7CisKKwogCS8qCiAJICogRGVjaWRlIHdoZXRoZXIgYSBwYWdl IGlzICJvbGRlciIgZm9yIHRydW5jYXRpb24gYW5kIGFzIGEgaGludCBmb3IKIAkgKiBldmljdGlu ZyBwYWdlcyBpbiBMUlUgb3JkZXIuICBSZXR1cm4gdHJ1ZSBpZiBldmVyeSBlbnRyeSBvZiB0aGUg Zmlyc3QKQEAgLTE1MywxMyArMTcyLDI2IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiAJ aW50CQkJKCplcnJkZXRhaWxfZm9yX2lvX2Vycm9yKSAoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp OwogCiAJLyoKLQkgKiBEaXIgaXMgc2V0IGR1cmluZyBTaW1wbGVMcnVJbml0IGFuZCBkb2VzIG5v dCBjaGFuZ2UgdGhlcmVhZnRlci4gU2luY2UKLQkgKiBpdCdzIGFsd2F5cyB0aGUgc2FtZSwgaXQg ZG9lc24ndCBuZWVkIHRvIGJlIGluIHNoYXJlZCBtZW1vcnkuCisJICogVHJhbmNoZSBJRHMgdG8g dXNlIGZvciB0aGUgU0xSVSdzIHBlci1idWZmZXIgYW5kIHBlci1iYW5rIExXTG9ja3MuICBJZgor CSAqIHRoZXNlIGFyZSBsZWZ0IGFzIHplcm9zLCBuZXcgdHJhbmNoZXMgd2lsbCBiZSBhc3NpZ25l ZCBkeW5hbWljYWxseS4KIAkgKi8KLQljaGFyCQlEaXJbNjRdOwotfSBTbHJ1Q3RsRGF0YTsKKwlp bnQJCQlidWZmZXJfdHJhbmNoZV9pZDsKKwlpbnQJCQliYW5rX3RyYW5jaGVfaWQ7Cit9IFNscnVP cHRzOwogCi10eXBlZGVmIFNscnVDdGxEYXRhICpTbHJ1Q3RsOworLyoKKyAqIFNscnVEZXNjIGlz IGFuIHVuc2hhcmVkIHN0cnVjdHVyZSB0aGF0IHBvaW50cyB0byB0aGUgYWN0aXZlIGluZm9ybWF0 aW9uCisgKiBpbiBzaGFyZWQgbWVtb3J5LgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1RGVzYwor eworCVNscnVPcHRzCW9wdGlvbnM7CisKKwlTbHJ1U2hhcmVkCXNoYXJlZDsKKworCS8qIE51bWJl ciBvZiBiYW5rcyBpbiB0aGlzIFNMUlUuICovCisJdWludDE2CQluYmFua3M7Cit9IFNscnVEZXNj OwogCiAvKgogICogR2V0IHRoZSBTTFJVIGJhbmsgbG9jayBmb3IgZ2l2ZW4gU2xydUN0bCBhbmQg dGhlIHBhZ2Vuby4KQEAgLTE2OCw0OCArMjAwLDUyIEBAIHR5cGVkZWYgU2xydUN0bERhdGEgKlNs cnVDdGw7CiAgKiByZXNwZWN0aXZlIGJhbmsuCiAgKi8KIHN0YXRpYyBpbmxpbmUgTFdMb2NrICoK LVNpbXBsZUxydUdldEJhbmtMb2NrKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCitTaW1wbGVM cnVHZXRCYW5rTG9jayhTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJaW50CQkJYmFu a25vOwogCisJQXNzZXJ0KGN0bC0+bmJhbmtzICE9IDApOwogCWJhbmtubyA9IHBhZ2VubyAlIGN0 bC0+bmJhbmtzOwogCXJldHVybiAmKGN0bC0+c2hhcmVkLT5iYW5rX2xvY2tzW2Jhbmtub10ubG9j ayk7CiB9CiAKLWV4dGVybiBTaXplIFNpbXBsZUxydVNobWVtU2l6ZShpbnQgbnNsb3RzLCBpbnQg bmxzbnMpOworZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1UmVxdWVzdFdpdGhPcHRzKGNvbnN0IFNscnVP cHRzICpvcHRpb25zKTsKKworI2RlZmluZSBTaW1wbGVMcnVSZXF1ZXN0KC4uLikgIFwKKwlTaW1w bGVMcnVSZXF1ZXN0V2l0aE9wdHMoJihTbHJ1T3B0cyl7X19WQV9BUkdTX199KQorCiBleHRlcm4g aW50CVNpbXBsZUxydUF1dG90dW5lQnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCk7Ci1leHRl cm4gdm9pZCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg bnNsb3RzLCBpbnQgbmxzbnMsCi0JCQkJCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZl cl90cmFuY2hlX2lkLAotCQkJCQkJICBpbnQgYmFua190cmFuY2hlX2lkLCBTeW5jUmVxdWVzdEhh bmRsZXIgc3luY19oYW5kbGVyLAotCQkJCQkJICBib29sIGxvbmdfc2VnbWVudF9uYW1lcyk7Ci1l eHRlcm4gaW50CVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOwot ZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vKTsKLWV4dGVybiBpbnQJU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydUN0bCBjdGwsIGludDY0 IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKK2V4dGVybiBpbnQJU2ltcGxlTHJ1WmVyb1BhZ2UoU2xy dURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKK2V4dGVybiB2b2lkIFNpbXBsZUxydVplcm9BbmRX cml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKK2V4dGVybiBpbnQJU2ltcGxl THJ1UmVhZFBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAog CQkJCQkJCSAgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwotZXh0ZXJuIGludAlTaW1wbGVMcnVS ZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLAorZXh0ZXJuIGludAlT aW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sCiAJ CQkJCQkJCQkgICBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7Ci1leHRlcm4gdm9pZCBTaW1wbGVM cnVXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotZXh0ZXJuIHZvaWQgU2ltcGxl THJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKTsKK2V4dGVybiB2 b2lkIFNpbXBsZUxydVdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK2V4dGVy biB2b2lkIFNpbXBsZUxydVdyaXRlQWxsKFNscnVEZXNjICpjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0 aWVkKTsKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1leHRlcm4gdm9pZCBTbHJ1UGFnZVBy ZWNlZGVzVW5pdFRlc3RzKFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UpOworZXh0ZXJuIHZvaWQg U2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UpOwog I2Vsc2UKICNkZWZpbmUgU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhjdGwsIHBlcl9wYWdlKSBk byB7fSB3aGlsZSAoMCkKICNlbmRpZgotZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1VHJ1bmNhdGUoU2xy dUN0bCBjdGwsIGludDY0IGN1dG9mZlBhZ2UpOwotZXh0ZXJuIGJvb2wgU2ltcGxlTHJ1RG9lc1Bo eXNpY2FsUGFnZUV4aXN0KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOworZXh0ZXJuIHZvaWQg U2ltcGxlTHJ1VHJ1bmNhdGUoU2xydURlc2MgKmN0bCwgaW50NjQgY3V0b2ZmUGFnZSk7CitleHRl cm4gYm9vbCBTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoU2xydURlc2MgKmN0bCwgaW50 NjQgcGFnZW5vKTsKIAotdHlwZWRlZiBib29sICgqU2xydVNjYW5DYWxsYmFjaykgKFNscnVDdGwg Y3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK3R5cGVkZWYgYm9vbCAoKlNscnVT Y2FuQ2FsbGJhY2spIChTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFn ZSwKIAkJCQkJCQkJICB2b2lkICpkYXRhKTsKLWV4dGVybiBib29sIFNscnVTY2FuRGlyZWN0b3J5 KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKLWV4 dGVybiB2b2lkIFNscnVEZWxldGVTZWdtZW50KFNscnVDdGwgY3RsLCBpbnQ2NCBzZWdubyk7Citl eHRlcm4gYm9vbCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1RGVzYyAqY3RsLCBTbHJ1U2NhbkNhbGxi YWNrIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIFNscnVEZWxldGVTZWdtZW50 KFNscnVEZXNjICpjdGwsIGludDY0IHNlZ25vKTsKIAotZXh0ZXJuIGludAlTbHJ1U3luY0ZpbGVU YWcoU2xydUN0bCBjdGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpOworZXh0ZXJu IGludAlTbHJ1U3luY0ZpbGVUYWcoU2xydURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywg Y2hhciAqcGF0aCk7CiAKIC8qIFNscnVTY2FuRGlyZWN0b3J5IHB1YmxpYyBjYWxsYmFja3MgKi8K LWV4dGVybiBib29sIFNscnVTY2FuRGlyQ2JSZXBvcnRQcmVzZW5jZShTbHJ1Q3RsIGN0bCwgY2hh ciAqZmlsZW5hbWUsCitleHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiUmVwb3J0UHJlc2VuY2UoU2xy dURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkJaW50NjQgc2VncGFnZSwgdm9p ZCAqZGF0YSk7Ci1leHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQWxsKFNscnVDdGwgY3Rs LCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK2V4dGVybiBib29sIFNscnVTY2FuRGly Q2JEZWxldGVBbGwoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2Us CiAJCQkJCQkJCSAgIHZvaWQgKmRhdGEpOwogZXh0ZXJuIGJvb2wgY2hlY2tfc2xydV9idWZmZXJz KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKTsKIAorZXh0ZXJuIHZvaWQgc2htZW1fc2xy dV9pbml0KHZvaWQgKmxvY2F0aW9uLCBTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMpOworZXh0ZXJu IHZvaWQgc2htZW1fc2xydV9hdHRhY2godm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAq b3B0aW9ucyk7CisKICNlbmRpZgkJCQkJCQkvKiBTTFJVX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgK aW5kZXggMTFiNzM1NWRiZGYuLmQ5ODZjZDllODAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3VidHJhbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaApAQCAt MTUsOCArMTUsNiBAQCBleHRlcm4gdm9pZCBTdWJUcmFuc1NldFBhcmVudChUcmFuc2FjdGlvbklk IHhpZCwgVHJhbnNhY3Rpb25JZCBwYXJlbnQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3ViVHJh bnNHZXRQYXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3Vi VHJhbnNHZXRUb3Btb3N0VHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpOwogCi1leHRlcm4g U2l6ZSBTVUJUUkFOU1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNVQlRSQU5TU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwU1VCVFJBTlModm9pZCk7CiBleHRlcm4g dm9pZCBTdGFydHVwU1VCVFJBTlMoVHJhbnNhY3Rpb25JZCBvbGRlc3RBY3RpdmVYSUQpOwogZXh0 ZXJuIHZvaWQgQ2hlY2tQb2ludFNVQlRSQU5TKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvYXN5bmMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKaW5kZXgg M2JhYWU3Y2I4ZGMuLjIwMmU0YWE1ZTc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9hc3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKQEAgLTE5LDkgKzE5 LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVHJhY2Vfbm90aWZ5OwogZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nOwogCi1leHRlcm4gU2l6 ZSBBc3luY1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEFzeW5jU2htZW1Jbml0KHZvaWQp OwotCiBleHRlcm4gdm9pZCBOb3RpZnlNeUZyb250RW5kKGNvbnN0IGNoYXIgKmNoYW5uZWwsCiAJ CQkJCQkJIGNvbnN0IGNoYXIgKnBheWxvYWQsCiAJCQkJCQkJIGludDMyIHNyY1BpZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGUuaAppbmRleCBhNWFjNTViOGY3ZS4uNDQzYmZmYjU4ZmQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGUuaApAQCAtNDEsMTEgKzQxLDYgQEAgdHlwZWRlZiB2b2lkICpTZXJpYWxp emFibGVYYWN0SGFuZGxlOwogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotCi0vKiBo b3VzZWtlZXBpbmcgZm9yIHNoYXJlZCBtZW1vcnkgcHJlZGljYXRlIGxvY2sgc3RydWN0dXJlcyAq LwotZXh0ZXJuIHZvaWQgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKTsKLWV4dGVybiBTaXpl IFByZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCk7Ci0KIGV4dGVybiB2b2lkIENoZWNrUG9pbnRQ cmVkaWNhdGUodm9pZCk7CiAKIC8qIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGluZyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCmluZGV4IGZlMTJiZjMzNDM5Li43YjI1OWQzM2NjZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaApAQCAtMjEsNiArMjEsNyBAQCB0eXBl ZGVmIGVudW0KIHsKIAlTSE1FTV9LSU5EX1NUUlVDVCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91 cyBhcmVhIG9mIG1lbW9yeSAqLwogCVNITUVNX0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUg Ki8KKwlTSE1FTV9LSU5EX1NMUlUsCQkJLyogU0xSVSBidWZmZXJzIGFuZCBjb250cm9sIHN0cnVj dHVyZXMgKi8KIH0gU2htZW1SZXF1ZXN0S2luZDsKIAogLyogc2htZW0uYyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCBkNjJjMjlmMTM2MS4uYzE5OWYxOGEyN2EgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCkBAIC0zMiw2ICszMiwxMyBAQCBQR19TSE1FTV9T VUJTWVNURU0oRFNNUmVnaXN0cnlTaG1lbUNhbGxiYWNrcykKIAogLyogeGxvZywgY2xvZywgYW5k IGJ1ZmZlcnMgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShWYXJzdXBTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0o Q29tbWl0VHNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTVUJUUkFOU1NobWVt Q2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzKQor CisvKiBwcmVkaWNhdGUgbG9jayBtYW5hZ2VyICovCitQR19TSE1FTV9TVUJTWVNURU0oUHJlZGlj YXRlTG9ja1NobWVtQ2FsbGJhY2tzKQogCiAvKiBwcm9jZXNzIHRhYmxlICovCiBQR19TSE1FTV9T VUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzKQpAQCAtNDMsMyArNTAsNiBAQCBQR19T SE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxiYWNrcykKIC8qIGludGVycHJvY2Vz cyBzaWduYWxpbmcgbWVjaGFuaXNtcyAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFBNU2lnbmFsU2ht ZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz KQorCisvKiBvdGhlciBtb2R1bGVzIHRoYXQgbmVlZCBzb21lIHNoYXJlZCBtZW1vcnkgc3BhY2Ug Ki8KK1BHX1NITUVNX1NVQlNZU1RFTShBc3luY1NobWVtQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2xydS90ZXN0X3NscnUuYwppbmRleCBlNGJkMmFmMGJmNS4uNDBlZmZmZGJmNjIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCkBAIC00MCwxNCArNDAsMjIgQEAg UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X3NscnVfZGVsZXRlX2FsbCk7CiAvKiBOdW1iZXIgb2Yg U0xSVSBwYWdlIHNsb3RzICovCiAjZGVmaW5lIE5VTV9URVNUX0JVRkZFUlMJCTE2CiAKLXN0YXRp YyBTbHJ1Q3RsRGF0YSBUZXN0U2xydUN0bERhdGE7Ci0jZGVmaW5lIFRlc3RTbHJ1Q3RsCQkJKCZU ZXN0U2xydUN0bERhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X3NscnVfc2htZW1fcmVxdWVzdCh2b2lk ICphcmcpOworc3RhdGljIGJvb2wgdGVzdF9zbHJ1X3BhZ2VfcHJlY2VkZXNfbG9naWNhbGx5KGlu dDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CXRlc3Rfc2xydV9lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIAotc3RhdGljIHNobWVtX3Jl cXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0YXRpYyBz aG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7Citz dGF0aWMgY29uc3QgY2hhciAqVGVzdFNscnVEaXIgPSAicGdfdGVzdF9zbHJ1IjsKKworc3RhdGlj IFNscnVEZXNjIFRlc3RTbHJ1RGVzYzsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIHRl c3Rfc2xydV9zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSB0ZXN0X3NscnVfc2ht ZW1fcmVxdWVzdAorfTsKKworI2RlZmluZSBUZXN0U2xydUN0bAkJCSgmVGVzdFNscnVEZXNjKQog CiBzdGF0aWMgYm9vbAotdGVzdF9zbHJ1X3NjYW5fY2IoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVu YW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhKQordGVzdF9zbHJ1X3NjYW5fY2IoU2xydURl c2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCiB7CiAJ ZWxvZyhOT1RJQ0UsICJDYWxsaW5nIHRlc3Rfc2xydV9zY2FuX2NiKCkiKTsKIAlyZXR1cm4gU2xy dVNjYW5EaXJDYkRlbGV0ZUFsbChjdGwsIGZpbGVuYW1lLCBzZWdwYWdlLCBkYXRhKTsKQEAgLTE5 MCwyMCArMTk4LDYgQEAgdGVzdF9zbHJ1X2RlbGV0ZV9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fVk9JRCgpOwogfQogCi0vKgotICogTW9kdWxlIGxvYWQgY2FsbGJhY2tzIGFuZCBp bml0aWFsaXphdGlvbi4KLSAqLwotCi1zdGF0aWMgdm9pZAotdGVzdF9zbHJ1X3NobWVtX3JlcXVl c3Qodm9pZCkKLXsKLQlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2htZW1f cmVxdWVzdF9ob29rKCk7Ci0KLQkvKiByZXNlcnZlIHNoYXJlZCBtZW1vcnkgZm9yIHRoZSB0ZXN0 IFNMUlUgKi8KLQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNpbXBsZUxydVNobWVtU2l6ZShOVU1f VEVTVF9CVUZGRVJTLCAwKSk7Ci19Ci0KIHN0YXRpYyBib29sCiB0ZXN0X3NscnVfcGFnZV9wcmVj ZWRlc19sb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKQogewpAQCAtMjE4LDYwICsy MTIsNDYgQEAgdGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3Bh cXVlX2RhdGEpCiAJcmV0dXJuIGVycmRldGFpbCgiQ291bGQgbm90IGFjY2VzcyB0ZXN0X3NscnUg ZW50cnkgJXUuIiwgeGlkKTsKIH0KIAotc3RhdGljIHZvaWQKLXRlc3Rfc2xydV9zaG1lbV9zdGFy dHVwKHZvaWQpCit2b2lkCitfUEdfaW5pdCh2b2lkKQogewotCS8qCi0JICogU2hvcnQgc2VnbWVu dHMgbmFtZXMgYXJlIHdlbGwgdGVzdGVkIGVsc2V3aGVyZSBzbyBpbiB0aGlzIHRlc3Qgd2UgYXJl Ci0JICogZm9jdXNpbmcgb24gbG9uZyBuYW1lcy4KLQkgKi8KLQljb25zdCBib29sCWxvbmdfc2Vn bWVudF9uYW1lcyA9IHRydWU7Ci0JY29uc3QgY2hhcglzbHJ1X2Rpcl9uYW1lW10gPSAicGdfdGVz dF9zbHJ1IjsKLQlpbnQJCQl0ZXN0X3RyYW5jaGVfaWQgPSAtMTsKLQlpbnQJCQl0ZXN0X2J1ZmZl cl90cmFuY2hlX2lkID0gLTE7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXBy ZXZfc2htZW1fc3RhcnR1cF9ob29rKCk7CisJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xp YnJhcmllc19pbl9wcm9ncmVzcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjYW5u b3QgbG9hZCBcIiVzXCIgYWZ0ZXIgc3RhcnR1cCIsICJ0ZXN0X3NscnUiKSwKKwkJCQkgZXJyZGV0 YWlsKCJcIiVzXCIgbXVzdCBiZSBsb2FkZWQgd2l0aCBcInNoYXJlZF9wcmVsb2FkX2xpYnJhcmll c1wiLiIsCisJCQkJCQkgICAidGVzdF9zbHJ1IikpKTsKIAogCS8qCiAJICogQ3JlYXRlIHRoZSBT TFJVIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdCB5ZXQsIGZyb20gdGhlIHJvb3Qgb2YK IAkgKiB0aGUgZGF0YSBkaXJlY3RvcnkuCiAJICovCi0JKHZvaWQpIE1ha2VQR0RpcmVjdG9yeShz bHJ1X2Rpcl9uYW1lKTsKKwkodm9pZCkgTWFrZVBHRGlyZWN0b3J5KFRlc3RTbHJ1RGlyKTsKIAot CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgU0xSVSBmYWNpbGl0eS4gIEluIEVYRUNfQkFDS0VORCBi dWlsZHMsIHRoZQotCSAqIHNobWVtX3N0YXJ0dXBfaG9vayBpcyBjYWxsZWQgaW4gdGhlIHBvc3Rt YXN0ZXIgYW5kIGluIGVhY2ggYmFja2VuZCwgYnV0Ci0JICogd2Ugb25seSBuZWVkIHRvIGdlbmVy YXRlIHRoZSBMV0xvY2sgdHJhbmNoZXMgb25jZS4gIE5vdGUgdGhhdCB0aGVzZQotCSAqIHRyYW5j aGUgSUQgdmFyaWFibGVzIGFyZSBub3QgdXNlZCBieSBTaW1wbGVMcnVJbml0KCkgd2hlbgotCSAq IElzVW5kZXJQb3N0bWFzdGVyIGlzIHRydWUuCi0JICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3Rl cikKLQl7Ci0JCXRlc3RfdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgidGVzdF9zbHJ1 X3RyYW5jaGUiKTsKLQkJdGVzdF9idWZmZXJfdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJ ZCgidGVzdF9idWZmZXJfdHJhbmNoZSIpOwotCX0KLQotCVRlc3RTbHJ1Q3RsLT5QYWdlUHJlY2Vk ZXMgPSB0ZXN0X3NscnVfcGFnZV9wcmVjZWRlc19sb2dpY2FsbHk7Ci0JVGVzdFNscnVDdGwtPmVy cmRldGFpbF9mb3JfaW9fZXJyb3IgPSB0ZXN0X3NscnVfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsK LQlTaW1wbGVMcnVJbml0KFRlc3RTbHJ1Q3RsLCAiVGVzdFNMUlUiLAotCQkJCSAgTlVNX1RFU1Rf QlVGRkVSUywgMCwgc2xydV9kaXJfbmFtZSwKLQkJCQkgIHRlc3RfYnVmZmVyX3RyYW5jaGVfaWQs IHRlc3RfdHJhbmNoZV9pZCwgU1lOQ19IQU5ETEVSX05PTkUsCi0JCQkJICBsb25nX3NlZ21lbnRf bmFtZXMpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJnRlc3Rfc2xydV9zaG1lbV9jYWxsYmFj a3MpOwogfQogCi12b2lkCi1fUEdfaW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK3Rlc3Rfc2xydV9z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzX2luX3Byb2dyZXNzKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJtc2coImNh bm5vdCBsb2FkIFwiJXNcIiBhZnRlciBzdGFydHVwIiwgInRlc3Rfc2xydSIpLAotCQkJCSBlcnJk ZXRhaWwoIlwiJXNcIiBtdXN0IGJlIGxvYWRlZCB3aXRoIFwic2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzXCIuIiwKLQkJCQkJCSAgICJ0ZXN0X3NscnUiKSkpOworCVNpbXBsZUxydVJlcXVlc3QoLmRl c2MgPSAmVGVzdFNscnVEZXNjLAorCQkJCQkgLm5hbWUgPSAiVGVzdFNMUlUiLAorCQkJCQkgLkRp ciA9IFRlc3RTbHJ1RGlyLAorCisJLyoKKwkgKiBTaG9ydCBzZWdtZW50cyBuYW1lcyBhcmUgd2Vs bCB0ZXN0ZWQgZWxzZXdoZXJlIHNvIGluIHRoaXMgdGVzdCB3ZSBhcmUKKwkgKiBmb2N1c2luZyBv biBsb25nIG5hbWVzLgorCSAqLworCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCisK KwkJCQkJIC5uc2xvdHMgPSBOVU1fVEVTVF9CVUZGRVJTLAorCQkJCQkgLm5sc25zID0gMCwKIAot CXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVtX3Jl cXVlc3RfaG9vayA9IHRlc3Rfc2xydV9zaG1lbV9yZXF1ZXN0OworCQkJCQkgLnN5bmNfaGFuZGxl ciA9IFNZTkNfSEFORExFUl9OT05FLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IHRlc3Rfc2xydV9w YWdlX3ByZWNlZGVzX2xvZ2ljYWxseSwKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0g dGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IsCiAKLQlwcmV2X3NobWVtX3N0YXJ0dXBf aG9vayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X3Ns cnVfc2htZW1fc3RhcnR1cDsKKwkvKiBsZXQgc2xydS5jIGFzc2lnbiB0aGVzZSAqLworCQkJCQkg LmJ1ZmZlcl90cmFuY2hlX2lkID0gMCwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSAwLAorCQkp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2M2MwYjNhOTQ2NS4uM2MzNTA5NzM2 MWQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yOTAxLDkgKzI5MDEsOSBAQCBTbG90 SW52YWxpZGF0aW9uQ2F1c2VNYXAKIFNsb3ROdW1iZXIKIFNsb3RTeW5jQ3R4U3RydWN0CiBTbG90 U3luY1NraXBSZWFzb24KLVNscnVDdGwKLVNscnVDdGxEYXRhCitTbHJ1RGVzYwogU2xydUVycm9y Q2F1c2UKK1NscnVPcHRzCiBTbHJ1UGFnZVN0YXR1cwogU2xydVNjYW5DYWxsYmFjawogU2xydVNl Z1N0YXRlCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0009-refactor-predicate.c-Move-all-the-initiali.patch" Content-Disposition: attachment; filename="v20260405_2-0009-refactor-predicate.c-Move-all-the-initiali.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k4b8 RnJvbSBlOTYyNGQ3MjU5NDc1MzhmOGU2ODQ5N2I1OGM2MmNhNWM0OWNkNmIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMjA6Mjc6NTAgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwOS8xNV0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IE1vdmUgYWxsIHRo ZQogaW5pdGlhbGl6YXRpb24gdG9nZXRoZXIKClRoZSBTaG1lbUluaXQgZnVuY3Rpb24gaXMgdmVy eSBjb21wbGljYXRlZCBjdXJyZW50bHkuIFRoZXNlCnJlZmFjdG9yaW5ncyBtb3ZlIGl0IGluIGEg ZGlyZWN0aW9uIHRoYXQgaXMgbW9yZSBuYXR1cmFsIHdpdGggdGhlIG5ldwpzaG1lbSBjYWxsYmFj a3MuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIHwgMTY0ICsrKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyks IDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCAx M2E2YTRiOTNhNi4uYWYwMzA3MWE3MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMKQEAgLTExNDQsMTkgKzExNDQsNiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJ CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAogCQkJCQkJCQkJCQlIQVNIX1BBUlRJ VElPTiB8IEhBU0hfRklYRURfU0laRSk7CiAKLQkvKgotCSAqIFJlc2VydmUgYSBkdW1teSBlbnRy eSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0IHRvIG1ha2Ugc3VyZSB0aGVyZSdzCi0JICog YWx3YXlzIG9uZSBlbnRyeSBhdmFpbGFibGUgd2hlbiB3ZSBuZWVkIHRvIHNwbGl0IG9yIGNvbWJp bmUgYSBwYWdlLAotCSAqIGJlY2F1c2UgcnVubmluZyBvdXQgb2Ygc3BhY2UgdGhlcmUgY291bGQg bWVhbiBhYm9ydGluZyBhCi0JICogbm9uLXNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbi4KLQkgKi8K LQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJKHZvaWQpIGhhc2hfc2VhcmNoKFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoLCAmU2NyYXRjaFRhcmdldFRhZywKLQkJCQkJCSAgIEhBU0hfRU5U RVIsICZmb3VuZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCX0KLQogCS8qIFByZS1jYWxjdWxhdGUg dGhlIGhhc2ggYW5kIHBhcnRpdGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCiAJU2Ny YXRjaFRhcmdldFRhZ0hhc2ggPSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUoJlNjcmF0 Y2hUYXJnZXRUYWcpOwogCVNjcmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRlTG9ja0hhc2hQ YXJ0aXRpb25Mb2NrKFNjcmF0Y2hUYXJnZXRUYWdIYXNoKTsKQEAgLTEyMDAsNDkgKzExODcsNiBA QCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJICAgcmVxdWVzdFNpemUsCiAJ CQkJCQkJICAgJmZvdW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwot CWlmICghZm91bmQpCi0JewotCQlpbnQJCQlpOwotCi0JCS8qIGNsZWFuIGV2ZXJ5dGhpbmcsIGJv dGggdGhlIGhlYWRlciBhbmQgdGhlIGVsZW1lbnQgKi8KLQkJbWVtc2V0KFByZWRYYWN0LCAwLCBy ZXF1ZXN0U2l6ZSk7Ci0KLQkJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmF2YWlsYWJsZUxpc3QpOwot CQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YWN0aXZlTGlzdCk7Ci0JCVByZWRYYWN0LT5TeGFjdEds b2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJUHJlZFhhY3QtPlN4YWN0R2xvYmFs WG1pbkNvdW50ID0gMDsKLQkJUHJlZFhhY3QtPldyaXRhYmxlU3hhY3RDb3VudCA9IDA7Ci0JCVBy ZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFObyA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8g LSAxOwotCQlQcmVkWGFjdC0+Q2FuUGFydGlhbENsZWFyVGhyb3VnaCA9IDA7Ci0JCVByZWRYYWN0 LT5IYXZlUGFydGlhbENsZWFyZWRUaHJvdWdoID0gMDsKLQkJUHJlZFhhY3QtPmVsZW1lbnQKLQkJ CT0gKFNFUklBTElaQUJMRVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0 RGF0YVNpemUpOwotCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVh bi4gKi8KLQkJZm9yIChpID0gMDsgaSA8IG1heF9zZXJpYWxpemFibGVfeGFjdHM7IGkrKykKLQkJ ewotCQkJTFdMb2NrSW5pdGlhbGl6ZSgmUHJlZFhhY3QtPmVsZW1lbnRbaV0ucGVyWGFjdFByZWRp Y2F0ZUxpc3RMb2NrLAotCQkJCQkJCSBMV1RSQU5DSEVfUEVSX1hBQ1RfUFJFRElDQVRFX0xJU1Qp OwotCQkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0 LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKLQkJfQotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QgPSBDcmVhdGVQcmVkWGFjdCgpOwotCQlTZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQo UHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT52eGlkKTsKLQkJUHJlZFhhY3QtPk9sZENvbW1p dHRlZFN4YWN0LT5wcmVwYXJlU2VxTm8gPSAwOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QtPmNvbW1pdFNlcU5vID0gMDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5TZXFO by5sYXN0Q29tbWl0QmVmb3JlU25hcHNob3QgPSAwOwotCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+ T2xkQ29tbWl0dGVkU3hhY3QtPm91dENvbmZsaWN0cyk7Ci0JCWRsaXN0X2luaXQoJlByZWRYYWN0 LT5PbGRDb21taXR0ZWRTeGFjdC0+aW5Db25mbGljdHMpOwotCQlkbGlzdF9pbml0KCZQcmVkWGFj dC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKLQkJZGxpc3Rfbm9kZV9pbml0 KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkTGluayk7Ci0JCWRsaXN0X2lu aXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cG9zc2libGVVbnNhZmVDb25mbGljdHMp OwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkQmVmb3JlID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+eG1p biA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3Qt PmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRT eGFjdC0+cGlkID0gMDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5wZ3Byb2NubyA9 IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JfQotCS8qIFRoaXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0 J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JT2xkQ29tbWl0dGVkU3hhY3QgPSBQcmVkWGFjdC0+ T2xkQ29tbWl0dGVkU3hhY3Q7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFNF UklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZApAQCAtMTI3OCwyMyAr MTIyMiw2IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkJCQkJCQkJCSByZXF1ZXN0 U2l6ZSwKIAkJCQkJCQkJCSAmZm91bmQpOwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1h c3Rlcik7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCWludAkJCWk7Ci0KLQkJLyogY2xlYW4gZXZlcnl0 aGluZywgaW5jbHVkaW5nIHRoZSBlbGVtZW50cyAqLwotCQltZW1zZXQoUldDb25mbGljdFBvb2ws IDAsIHJlcXVlc3RTaXplKTsKLQotCQlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxh YmxlTGlzdCk7Ci0JCVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gKFJXQ29uZmxpY3QpICgoY2hh ciAqKSBSV0NvbmZsaWN0UG9vbCArCi0JCQkJCQkJCQkJCQlSV0NvbmZsaWN0UG9vbEhlYWRlckRh dGFTaXplKTsKLQkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4u ICovCi0JCWZvciAoaSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKyspCi0JCXsKLQkJCWRs aXN0X3B1c2hfdGFpbCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QsCi0JCQkJCQkJJlJX Q29uZmxpY3RQb29sLT5lbGVtZW50W2ldLm91dExpbmspOwotCQl9Ci0JfQogCiAJLyoKIAkgKiBD cmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0IG9mIGZpbmlzaGVkIHNl cmlhbGl6YWJsZQpAQCAtMTMwNSw4ICsxMjMyLDYgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2 b2lkKQogCQkJCQkJc2l6ZW9mKGRsaXN0X2hlYWQpLAogCQkJCQkJJmZvdW5kKTsKIAlBc3NlcnQo Zm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwotCWlmICghZm91bmQpCi0JCWRsaXN0X2luaXQo RmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMpOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHRoZSBTTFJVIHN0b3JhZ2UgZm9yIG9sZCBjb21taXR0ZWQgc2VyaWFsaXphYmxlCkBAIC0xMzI4 LDE5ICsxMjUzLDg4IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKi8KIAlzZXJp YWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wpCiAJCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29u dHJvbERhdGEiLCBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLCAmZm91bmQpOwotCiAJQXNzZXJ0 KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQorCisJLyoKKwkgKiBJ ZiB3ZSBqdXN0IGF0dGFjaGVkIHRvIGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgKEVYRUNfQkFDS0VO RCksIHdlJ3JlIGFsbAorCSAqIGRvbmUuICBPdGhlcndpc2UsIGR1cmluZyBwb3N0bWFzdGVyIHN0 YXJ0dXAgcHJvY2VlZCB0byBpbml0aWFsaXplIHRoZQorCSAqIHNoYXJlZCBtZW1vcnkuCisJICov CisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJLyoKLQkJICogU2V0IGNvbnRyb2wgaW5m b3JtYXRpb24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkgKi8KLQkJTFdMb2NrQWNxdWlyZShT ZXJpYWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFBh Z2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCUxX TG9ja1JlbGVhc2UoU2VyaWFsQ29udHJvbExvY2spOworCQkvKiBUaGlzIG5ldmVyIGNoYW5nZXMs IHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCQlPbGRDb21taXR0ZWRTeGFjdCA9IFBy ZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogUmVz ZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBz dXJlIHRoZXJlJ3MKKwkgKiBhbHdheXMgb25lIGVudHJ5IGF2YWlsYWJsZSB3aGVuIHdlIG5lZWQg dG8gc3BsaXQgb3IgY29tYmluZSBhIHBhZ2UsCisJICogYmVjYXVzZSBydW5uaW5nIG91dCBvZiBz cGFjZSB0aGVyZSBjb3VsZCBtZWFuIGFib3J0aW5nIGEKKwkgKiBub24tc2VyaWFsaXphYmxlIHRy YW5zYWN0aW9uLgorCSAqLworCSh2b2lkKSBoYXNoX3NlYXJjaChQcmVkaWNhdGVMb2NrVGFyZ2V0 SGFzaCwgJlNjcmF0Y2hUYXJnZXRUYWcsCisJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisJ QXNzZXJ0KCFmb3VuZCk7CisKKwkvKiBJbml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7CisJZGxpc3RfaW5pdCgmUHJlZFhhY3Qt PmFjdGl2ZUxpc3QpOworCVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwlQcmVkWGFjdC0+U3hhY3RHbG9iYWxYbWluQ291bnQgPSAwOworCVByZWRYYWN0 LT5Xcml0YWJsZVN4YWN0Q291bnQgPSAwOworCVByZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFO byA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8gLSAxOworCVByZWRYYWN0LT5DYW5QYXJ0aWFs Q2xlYXJUaHJvdWdoID0gMDsKKwlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9 IDA7CisJUHJlZFhhY3QtPmVsZW1lbnQKKwkJPSAoU0VSSUFMSVpBQkxFWEFDVCAqKSAoKGNoYXIg KikgUHJlZFhhY3QgKyBQcmVkWGFjdExpc3REYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBlbGVtZW50 cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhf c2VyaWFsaXphYmxlX3hhY3RzOyBpKyspCisJeworCQlMV0xvY2tJbml0aWFsaXplKCZQcmVkWGFj dC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCisJCQkJCQkgTFdUUkFOQ0hF X1BFUl9YQUNUX1BSRURJQ0FURV9MSVNUKTsKKwkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFjdC0+ YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKIAl9CisJUHJl ZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0ID0gQ3JlYXRlUHJlZFhhY3QoKTsKKwlTZXRJbnZhbGlk VmlydHVhbFRyYW5zYWN0aW9uSWQoUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT52eGlkKTsK KwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZXBhcmVTZXFObyA9IDA7CisJUHJlZFhh Y3QtPk9sZENvbW1pdHRlZFN4YWN0LT5jb21taXRTZXFObyA9IDA7CisJUHJlZFhhY3QtPk9sZENv bW1pdHRlZFN4YWN0LT5TZXFOby5sYXN0Q29tbWl0QmVmb3JlU25hcHNob3QgPSAwOworCWRsaXN0 X2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+b3V0Q29uZmxpY3RzKTsKKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmluQ29uZmxpY3RzKTsKKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKKwlk bGlzdF9ub2RlX2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRMaW5r KTsKKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBvc3NpYmxlVW5z YWZlQ29uZmxpY3RzKTsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNo ZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVk U3hhY3QtPnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0 dGVkU3hhY3QtPmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7CisJUHJlZFhhY3QtPk9sZENv bW1pdHRlZFN4YWN0LT5waWQgPSAwOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cGdw cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOworCisJLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBz byBsZXQncyBrZWVwIGEgbG9jYWwgY29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRY YWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKworCS8qIEluaXRpYWxpemUgdGhlIHJ3LWNvbmZsaWN0 IHBvb2wgKi8KKwlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7CisJ UldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldDb25mbGljdCkgKChjaGFyICopIFJXQ29uZmxp Y3RQb29sICsKKwkJCQkJCQkJCQkJUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSk7CisJLyog QWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQg aSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKyspCisJeworCQlkbGlzdF9wdXNoX3RhaWwo JlJXQ29uZmxpY3RQb29sLT5hdmFpbGFibGVMaXN0LAorCQkJCQkJJlJXQ29uZmxpY3RQb29sLT5l bGVtZW50W2ldLm91dExpbmspOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgZmlu aXNoZWQgc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9ucyAqLworCWRsaXN0X2luaXQoRmluaXNoZWRT ZXJpYWxpemFibGVUcmFuc2FjdGlvbnMpOworCisJLyogSW5pdGlhbGl6ZSBTZXJpYWxDb250cm9s IHRvIHJlZmxlY3QgZW1wdHkgU0xSVS4gKi8KKwlMV0xvY2tBY3F1aXJlKFNlcmlhbENvbnRyb2xM b2NrLCBMV19FWENMVVNJVkUpOworCXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJc2Vy aWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXNlcmlhbENvbnRy b2wtPnRhaWxYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlMV0xvY2tSZWxlYXNlKFNlcmlh bENvbnRyb2xMb2NrKTsKIH0KIAogLyoKLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0011-Convert-AIO-to-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405_2-0011-Convert-AIO-to-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k4o10 RnJvbSBkMjgyNmU1OTgwZTkzYzZlYmQxNjhmODgxMzg1ZTQ3MDM2ZTRmMGIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTI6NDM6MTYgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxMS8xNV0gQ29udmVydCBBSU8gdG8gdGhlIG5ldyBpbnRlcmZhY2UK ClRoaXMgcmVwbGFjZXMgdGhlICJzaG1lbV9zaXplIiBhbmQgInNobWVtX2luaXQiIGNhbGxiYWNr cyBpbiB0aGUgSU8KbWV0aG9kcyB0YWJsZSB3aXRoIHRoZSBzYW1lIFNobWVtQ2FsbGJhY2sgc3Ry dWN0IHRoYXQgd2Ugbm93IHVzZSBpbgpvdGhlciBzdWJzeXN0ZW1zCi0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9haW8vYWlvX2luaXQuYyAgICAgICAgfCAxMTIgKysrKysrKysrKysrKy0tLS0tLS0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3VyaW5nLmMgfCAgMzkgKysrKy0t LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyAgIHwgIDg0ICsrKysr KysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgIHwg ICAyIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX2ludGVybmFsLmggICAgICAgIHwgIDE2ICst LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX3N1YnN5cy5oICAgICAgICAgIHwgICA0IC0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oICAgICAgIHwgICAzICsKIDcgZmlsZXMg Y2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9haW8vYWlvX2luaXQuYwppbmRleCBkM2M2OGQ4YjA0Yy4uMThiYjQyMzUwNDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9haW8vYWlvX2luaXQuYwpAQCAtMjMsMTYgKzIzLDI0IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjLmgiCiAKIAorc3RhdGljIHZvaWQgQWlvU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7Citz dGF0aWMgdm9pZCBBaW9TaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEFpb1NobWVt QXR0YWNoKHZvaWQgKmFyZyk7CiAKLXN0YXRpYyBTaXplCi1BaW9DdGxTaG1lbVNpemUodm9pZCkK LXsKLQkvKiBwZ2Fpb19jdGwgaXRzZWxmICovCi0JcmV0dXJuIHNpemVvZihQZ0Fpb0N0bCk7Ci19 Citjb25zdCBTaG1lbUNhbGxiYWNrcyBBaW9TaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9m biA9IEFpb1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEFpb1NobWVtSW5pdCwKKwkuYXR0YWNo X2ZuID0gQWlvU2htZW1BdHRhY2gsCit9OworCitzdGF0aWMgUGdBaW9CYWNrZW5kICpBaW9CYWNr ZW5kU2htZW1QdHI7CitzdGF0aWMgUGdBaW9IYW5kbGUgKkFpb0hhbmRsZVNobWVtUHRyOworc3Rh dGljIHN0cnVjdCBpb3ZlYyAqQWlvSGFuZGxlSU9WU2htZW1QdHI7CitzdGF0aWMgdWludDY0ICpB aW9IYW5kbGVEYXRhU2htZW1QdHI7CiAKIHN0YXRpYyB1aW50MzIKIEFpb1Byb2NzKHZvaWQpCkBA IC0xMDksMTIgKzExNywxNSBAQCBBaW9DaG9vc2VNYXhDb25jdXJyZW5jeSh2b2lkKQogCXJldHVy biBNaW4obWF4X3Byb3BvcnRpb25hbF9waW5zLCA2NCk7CiB9CiAKLVNpemUKLUFpb1NobWVtU2l6 ZSh2b2lkKQorLyoKKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgYXJlYSBmb3IgQUlPIHN1YnN5 c3RlbS4KKyAqLworc3RhdGljIHZvaWQKK0Fpb1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0J U2l6ZQkJc3ogPSAwOwotCiAJLyoKKwkgKiBSZXNvbHZlIGlvX21heF9jb25jdXJyZW5jeSBpZiBu b3QgYWxyZWFkeSBkb25lCisJICoKIAkgKiBXZSBwcmVmZXIgdG8gcmVwb3J0IHRoaXMgdmFsdWUn cyBzb3VyY2UgYXMgUEdDX1NfRFlOQU1JQ19ERUZBVUxULgogCSAqIEhvd2V2ZXIsIGlmIHRoZSBE QkEgZXhwbGljaXRseSBzZXQgaW9fbWF4X2NvbmN1cnJlbmN5ID0gLTEgaW4gdGhlCiAJICogY29u ZmlnIGZpbGUsIHRoZW4gUEdDX1NfRFlOQU1JQ19ERUZBVUxUIHdpbGwgZmFpbCB0byBvdmVycmlk ZSB0aGF0IGFuZApAQCAtMTMyLDQ4ICsxNDMsNTIgQEAgQWlvU2htZW1TaXplKHZvaWQpCiAJCQkJ CQkJUEdDX1NfT1ZFUlJJREUpOwogCX0KIAotCXN6ID0gYWRkX3NpemUoc3osIEFpb0N0bFNobWVt U2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBBaW9CYWNrZW5kU2htZW1TaXplKCkpOwotCXN6 ID0gYWRkX3NpemUoc3osIEFpb0hhbmRsZVNobWVtU2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6 LCBBaW9IYW5kbGVJT1ZTaG1lbVNpemUoKSk7Ci0Jc3ogPSBhZGRfc2l6ZShzeiwgQWlvSGFuZGxl RGF0YVNobWVtU2l6ZSgpKTsKLQotCS8qIFJlc2VydmUgc3BhY2UgZm9yIG1ldGhvZCBzcGVjaWZp YyByZXNvdXJjZXMuICovCi0JaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX3NpemUpCi0JCXN6 ID0gYWRkX3NpemUoc3osIHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX3NpemUoKSk7Ci0KLQlyZXR1 cm4gc3o7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0N0bCIsCisJCQkJCSAgIC5z aXplID0gc2l6ZW9mKFBnQWlvQ3RsKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmcGdhaW9f Y3RsLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0JhY2tlbmQiLAor CQkJCQkgICAuc2l6ZSA9IEFpb0JhY2tlbmRTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQWlvQmFja2VuZFNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIkFpb0hhbmRsZSIsCisJCQkJCSAgIC5zaXplID0gQWlvSGFuZGxlU2htZW1TaXpl KCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkFpb0hhbmRsZVNobWVtUHRyLAorCQkpOwor CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0hhbmRsZUlPViIsCisJCQkJCSAgIC5z aXplID0gQWlvSGFuZGxlSU9WU2htZW1TaXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JkFpb0hhbmRsZUlPVlNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIkFpb0hhbmRsZURhdGEiLAorCQkJCQkgICAuc2l6ZSA9IEFpb0hhbmRsZURhdGFTaG1lbVNp emUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWlvSGFuZGxlRGF0YVNobWVtUHRyLAor CQkpOworCisJaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNrcy5yZXF1ZXN0X2Zu KQorCQlwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MucmVxdWVzdF9mbihwZ2Fpb19t ZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MucmVxdWVzdF9mbl9hcmcpOwogfQogCi12b2lkCi1B aW9TaG1lbUluaXQodm9pZCkKKy8qCisgKiBJbml0aWFsaXplIEFJTyBzaGFyZWQgbWVtb3J5IGR1 cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKi8KK3N0YXRpYyB2b2lkCitBaW9TaG1lbUluaXQo dm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwogCXVpbnQzMgkJaW9faGFuZGxlX29mZiA9IDA7 CiAJdWludDMyCQlpb3ZlY19vZmYgPSAwOwogCXVpbnQzMgkJcGVyX2JhY2tlbmRfaW92ZWNzID0g aW9fbWF4X2NvbmN1cnJlbmN5ICogaW9fbWF4X2NvbWJpbmVfbGltaXQ7CiAKLQlwZ2Fpb19jdGwg PSAoUGdBaW9DdGwgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9DdGwiLCBBaW9DdGxTaG1lbVNp emUoKSwgJmZvdW5kKTsKLQotCWlmIChmb3VuZCkKLQkJZ290byBvdXQ7Ci0KLQltZW1zZXQocGdh aW9fY3RsLCAwLCBBaW9DdGxTaG1lbVNpemUoKSk7Ci0KIAlwZ2Fpb19jdGwtPmlvX2hhbmRsZV9j b3VudCA9IEFpb1Byb2NzKCkgKiBpb19tYXhfY29uY3VycmVuY3k7CiAJcGdhaW9fY3RsLT5pb3Zl Y19jb3VudCA9IEFpb1Byb2NzKCkgKiBwZXJfYmFja2VuZF9pb3ZlY3M7CiAKLQlwZ2Fpb19jdGwt PmJhY2tlbmRfc3RhdGUgPSAoUGdBaW9CYWNrZW5kICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlv QmFja2VuZCIsIEFpb0JhY2tlbmRTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCXBnYWlvX2N0bC0+ aW9faGFuZGxlcyA9IChQZ0Fpb0hhbmRsZSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb0hhbmRs ZSIsIEFpb0hhbmRsZVNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JcGdhaW9fY3RsLT5pb3ZlY3Mg PSAoc3RydWN0IGlvdmVjICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlvSGFuZGxlSU9WIiwgQWlv SGFuZGxlSU9WU2htZW1TaXplKCksICZmb3VuZCk7Ci0JcGdhaW9fY3RsLT5oYW5kbGVfZGF0YSA9 ICh1aW50NjQgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9IYW5kbGVEYXRhIiwgQWlvSGFuZGxl RGF0YVNobWVtU2l6ZSgpLCAmZm91bmQpOworCXBnYWlvX2N0bC0+YmFja2VuZF9zdGF0ZSA9IEFp b0JhY2tlbmRTaG1lbVB0cjsKKwlwZ2Fpb19jdGwtPmlvX2hhbmRsZXMgPSBBaW9IYW5kbGVTaG1l bVB0cjsKKwlwZ2Fpb19jdGwtPmlvdmVjcyA9IEFpb0hhbmRsZUlPVlNobWVtUHRyOworCXBnYWlv X2N0bC0+aGFuZGxlX2RhdGEgPSBBaW9IYW5kbGVEYXRhU2htZW1QdHI7CiAKIAlmb3IgKGludCBw cm9jbm8gPSAwOyBwcm9jbm8gPCBBaW9Qcm9jcygpOyBwcm9jbm8rKykKIAl7CkBAIC0yMDgsMTAg KzIyMywxNSBAQCBBaW9TaG1lbUluaXQodm9pZCkKIAkJfQogCX0KIAotb3V0OgotCS8qIEluaXRp YWxpemUgSU8gbWV0aG9kIHNwZWNpZmljIHJlc291cmNlcy4gKi8KLQlpZiAocGdhaW9fbWV0aG9k X29wcy0+c2htZW1faW5pdCkKLQkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1faW5pdCghZm91bmQp OworCWlmIChwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbikKKwkJcGdh aW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmluaXRfZm4ocGdhaW9fbWV0aG9kX29wcy0+ c2htZW1fY2FsbGJhY2tzLmluaXRfZm5fYXJnKTsKK30KKworc3RhdGljIHZvaWQKK0Fpb1NobWVt QXR0YWNoKHZvaWQgKmFyZykKK3sKKwlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJh Y2tzLmF0dGFjaF9mbikKKwkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmF0dGFj aF9mbihwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuYXR0YWNoX2ZuX2FyZyk7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF9pb191 cmluZy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3VyaW5nLmMKaW5kZXgg OWY3NmQyNjgzYzAuLjMyOTVjNTllZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2Fpby9tZXRob2RfaW9fdXJpbmcuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRo b2RfaW9fdXJpbmcuYwpAQCAtNDksOCArNDksOCBAQAogCiAKIC8qIEVudHJ5IHBvaW50cyBmb3Ig SW9NZXRob2RPcHMuICovCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3VyaW5nX3NobWVtX3NpemUodm9p ZCk7Ci1zdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJvb2wgZmlyc3RfdGltZSk7 CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBw Z2Fpb191cmluZ19pbml0X2JhY2tlbmQodm9pZCk7CiBzdGF0aWMgaW50CXBnYWlvX3VyaW5nX3N1 Ym1pdCh1aW50MTYgbnVtX3N0YWdlZF9pb3MsIFBnQWlvSGFuZGxlICoqc3RhZ2VkX2lvcyk7CiBz dGF0aWMgdm9pZCBwZ2Fpb191cmluZ193YWl0X29uZShQZ0Fpb0hhbmRsZSAqaW9oLCB1aW50NjQg cmVmX2dlbmVyYXRpb24pOwpAQCAtNTksNyArNTksNiBAQCBzdGF0aWMgdm9pZCBwZ2Fpb191cmlu Z19jaGVja19vbmUoUGdBaW9IYW5kbGUgKmlvaCwgdWludDY0IHJlZl9nZW5lcmF0aW9uKTsKIC8q IGhlbHBlciBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIHBnYWlvX3VyaW5nX3NxX2Zyb21faW8o UGdBaW9IYW5kbGUgKmlvaCwgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTsKIAotCiBjb25zdCBJ b01ldGhvZE9wcyBwZ2Fpb191cmluZ19vcHMgPSB7CiAJLyoKIAkgKiBXaGlsZSBpb191cmluZyBt b3N0bHkgaXMgT0sgd2l0aCBGRHMgZ2V0dGluZyBjbG9zZWQgd2hpbGUgdGhlIElPIGlzIGluCkBA IC03MCw4ICs2OSw4IEBAIGNvbnN0IElvTWV0aG9kT3BzIHBnYWlvX3VyaW5nX29wcyA9IHsKIAkg Ki8KIAkud2FpdF9vbl9mZF9iZWZvcmVfY2xvc2UgPSB0cnVlLAogCi0JLnNobWVtX3NpemUgPSBw Z2Fpb191cmluZ19zaG1lbV9zaXplLAotCS5zaG1lbV9pbml0ID0gcGdhaW9fdXJpbmdfc2htZW1f aW5pdCwKKwkuc2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb191cmluZ19zaG1lbV9y ZXF1ZXN0LAorCS5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbiA9IHBnYWlvX3VyaW5nX3NobWVtX2lu aXQsCiAJLmluaXRfYmFja2VuZCA9IHBnYWlvX3VyaW5nX2luaXRfYmFja2VuZCwKIAogCS5zdWJt aXQgPSBwZ2Fpb191cmluZ19zdWJtaXQsCkBAIC0yNjcsMjMgKzI2NiwzMSBAQCBwZ2Fpb191cmlu Z19zaG1lbV9zaXplKHZvaWQpCiB7CiAJc2l6ZV90CQlzejsKIAorCXN6ID0gcGdhaW9fdXJpbmdf Y29udGV4dF9zaG1lbV9zaXplKCk7CisJc3ogPSBhZGRfc2l6ZShzeiwgcGdhaW9fdXJpbmdfcmlu Z19zaG1lbV9zaXplKCkpOworCisJcmV0dXJuIHN6OworfQorCitzdGF0aWMgdm9pZAorcGdhaW9f dXJpbmdfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCit7CiAJLyoKIAkgKiBLZXJuZWwgYW5kIGxp YnVyaW5nIHN1cHBvcnQgZm9yIHZhcmlvdXMgZmVhdHVyZXMgaW5mbHVlbmNlcyBob3cgbXVjaAog CSAqIHNobWVtIHdlIG5lZWQsIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBjaGVja3MuCiAJICovCiAJ cGdhaW9fdXJpbmdfY2hlY2tfY2FwYWJpbGl0aWVzKCk7CiAKLQlzeiA9IHBnYWlvX3VyaW5nX2Nv bnRleHRfc2htZW1fc2l6ZSgpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3VyaW5nX3Jpbmdf c2htZW1fc2l6ZSgpKTsKLQotCXJldHVybiBzejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiQWlvVXJpbmdDb250ZXh0IiwKKwkJCQkJICAgLnNpemUgPSBwZ2Fpb191cmluZ19zaG1lbV9z aXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnBnYWlvX3VyaW5nX2NvbnRleHRzLAor CQkpOwogfQogCiBzdGF0aWMgdm9pZAotcGdhaW9fdXJpbmdfc2htZW1faW5pdChib29sIGZpcnN0 X3RpbWUpCitwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQlUb3Rh bFByb2NzID0gcGdhaW9fdXJpbmdfcHJvY3MoKTsKLQlib29sCQlmb3VuZDsKIAljaGFyCSAgICpz aG1lbTsKIAlzaXplX3QJCXJpbmdfbWVtX3JlbWFpbiA9IDA7CiAJY2hhcgkgICAqcmluZ19tZW1f bmV4dCA9IDA7CkBAIC0yOTEsMTMgKzI5OCwxMSBAQCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJv b2wgZmlyc3RfdGltZSkKIAkvKgogCSAqIFdlIGFsbG9jYXRlIG1lbW9yeSBmb3IgYWxsIFBnQWlv VXJpbmdDb250ZXh0IGluc3RhbmNlcyBhbmQsIGlmCiAJICogc3VwcG9ydGVkLCB0aGUgbWVtb3J5 IHJlcXVpcmVkIGZvciBlYWNoIG9mIHRoZSBpb191cmluZyBpbnN0YW5jZXMsIGluCi0JICogb25l IFNobWVtSW5pdFN0cnVjdCgpLgorCSAqIG9uZSBjb21iaW5lZCBhbGxvY2F0aW9uLgorCSAqCisJ ICogcGdhaW9fdXJpbmdfY29udGV4dHMgaXMgYWxyZWFkeSBzZXQgdG8gdGhlIGJhc2Ugb2YgdGhl IGFsbG9jYXRpb24uCiAJICovCi0Jc2htZW0gPSBTaG1lbUluaXRTdHJ1Y3QoIkFpb1VyaW5nQ29u dGV4dCIsIHBnYWlvX3VyaW5nX3NobWVtX3NpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0J CXJldHVybjsKLQotCXBnYWlvX3VyaW5nX2NvbnRleHRzID0gKFBnQWlvVXJpbmdDb250ZXh0ICop IHNobWVtOworCXNobWVtID0gKGNoYXIgKikgcGdhaW9fdXJpbmdfY29udGV4dHM7CiAJc2htZW0g Kz0gcGdhaW9fdXJpbmdfY29udGV4dF9zaG1lbV9zaXplKCk7CiAKIAkvKiBpZiBzdXBwb3J0ZWQs IGhhbmRsZSBtZW1vcnkgYWxpZ25tZW50IC8gc2l6aW5nIGZvciBpb191cmluZyBtZW1vcnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYwppbmRleCBlMjQzNTdhN2EwYS4u ZWI2MzZiZjVhZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKQEAg LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCkBAIC03MywxNiAr NzQsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdBaW9Xb3JrZXJDb250cm9sCiB9IFBnQWlvV29ya2Vy Q29udHJvbDsKIAogCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3dvcmtlcl9zaG1lbV9zaXplKHZvaWQp Owotc3RhdGljIHZvaWQgcGdhaW9fd29ya2VyX3NobWVtX2luaXQoYm9vbCBmaXJzdF90aW1lKTsK K3N0YXRpYyB2b2lkIHBnYWlvX3dvcmtlcl9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQg cGdhaW9fd29ya2VyX3NobWVtX2F0dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgUGdBaW9Xb3Jr ZXJTdWJtaXNzaW9uUXVldWUgKmlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlOwogCiBzdGF0aWMg Ym9vbCBwZ2Fpb193b3JrZXJfbmVlZHNfc3luY2hyb25vdXNfZXhlY3V0aW9uKFBnQWlvSGFuZGxl ICppb2gpOwogc3RhdGljIGludAlwZ2Fpb193b3JrZXJfc3VibWl0KHVpbnQxNiBudW1fc3RhZ2Vk X2lvcywgUGdBaW9IYW5kbGUgKipzdGFnZWRfaW9zKTsKIAogCiBjb25zdCBJb01ldGhvZE9wcyBw Z2Fpb193b3JrZXJfb3BzID0gewotCS5zaG1lbV9zaXplID0gcGdhaW9fd29ya2VyX3NobWVtX3Np emUsCi0JLnNobWVtX2luaXQgPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2Fs bGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1fcmVxdWVzdCwKKwkuc2htZW1f Y2FsbGJhY2tzLmluaXRfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2Fs bGJhY2tzLmF0dGFjaF9mbiA9IHBnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2gsCiAKIAkubmVlZHNf c3luY2hyb25vdXNfZXhlY3V0aW9uID0gcGdhaW9fd29ya2VyX25lZWRzX3N5bmNocm9ub3VzX2V4 ZWN1dGlvbiwKIAkuc3VibWl0ID0gcGdhaW9fd29ya2VyX3N1Ym1pdCwKQEAgLTk1LDcgKzEwMCw2 IEBAIGludAkJCWlvX3dvcmtlcnMgPSAzOwogCiBzdGF0aWMgaW50CWlvX3dvcmtlcl9xdWV1ZV9z aXplID0gNjQ7CiBzdGF0aWMgaW50CU15SW9Xb3JrZXJJZDsKLXN0YXRpYyBQZ0Fpb1dvcmtlclN1 Ym1pc3Npb25RdWV1ZSAqaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWU7CiBzdGF0aWMgUGdBaW9X b3JrZXJDb250cm9sICppb193b3JrZXJfY29udHJvbDsKIAogCkBAIC0xMTYsNTAgKzEyMCw2MCBA QCBwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9zaXplKHZvaWQpCiAJCXNpemVvZihQZ0Fpb1dv cmtlclNsb3QpICogTUFYX0lPX1dPUktFUlM7CiB9CiAKLXN0YXRpYyBzaXplX3QKLXBnYWlvX3dv cmtlcl9zaG1lbV9zaXplKHZvaWQpCisvKgorICogU2V0IHNlY29uZGFyeSBBSU8gd29ya2VyIHBv aW50ZXIgZnJvbSB0aGUgY29tYmluZWQgYWxsb2NhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3Bn YWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cih2b2lkKQogewotCXNpemVfdAkJc3o7CiAJaW50 CQkJcXVldWVfc2l6ZTsKKwlTaXplCQlxdWV1ZV9zeiA9IHBnYWlvX3dvcmtlcl9xdWV1ZV9zaG1l bV9zaXplKCZxdWV1ZV9zaXplKTsKIAotCXN6ID0gcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3Np emUoJnF1ZXVlX3NpemUpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3dvcmtlcl9jb250cm9s X3NobWVtX3NpemUoKSk7Ci0KLQlyZXR1cm4gc3o7CisJaW9fd29ya2VyX2NvbnRyb2wgPSAoUGdB aW9Xb3JrZXJDb250cm9sICopCisJCSgoY2hhciAqKSBpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1 ZSArIE1BWEFMSUdOKHF1ZXVlX3N6KSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wZ2Fpb193b3JrZXJf c2htZW1faW5pdChib29sIGZpcnN0X3RpbWUpCitwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lk ICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CiAJaW50CQkJcXVldWVfc2l6ZTsKIAotCWlvX3dvcmtl cl9zdWJtaXNzaW9uX3F1ZXVlID0KLQkJU2htZW1Jbml0U3RydWN0KCJBaW9Xb3JrZXJTdWJtaXNz aW9uUXVldWUiLAotCQkJCQkJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3Np emUpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJaW9fd29ya2VyX3N1Ym1p c3Npb25fcXVldWUtPnNpemUgPSBxdWV1ZV9zaXplOwotCQlpb193b3JrZXJfc3VibWlzc2lvbl9x dWV1ZS0+aGVhZCA9IDA7Ci0JCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT50YWlsID0gMDsK LQl9CisJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3NpemUpOworCWlvX3dv cmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT5zaXplID0gcXVldWVfc2l6ZTsKKwlpb193b3JrZXJfc3Vi bWlzc2lvbl9xdWV1ZS0+aGVhZCA9IDA7CisJaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWUtPnRh aWwgPSAwOwogCi0JaW9fd29ya2VyX2NvbnRyb2wgPQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb1dv cmtlckNvbnRyb2wiLAotCQkJCQkJcGdhaW9fd29ya2VyX2NvbnRyb2xfc2htZW1fc2l6ZSgpLAot CQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQorCXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5 X3B0cigpOworCisJaW9fd29ya2VyX2NvbnRyb2wtPmlkbGVfd29ya2VyX21hc2sgPSAwOworCWZv ciAoaW50IGkgPSAwOyBpIDwgTUFYX0lPX1dPUktFUlM7ICsraSkKIAl7Ci0JCWlvX3dvcmtlcl9j b250cm9sLT5pZGxlX3dvcmtlcl9tYXNrID0gMDsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhf SU9fV09SS0VSUzsgKytpKQotCQl7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5s YXRjaCA9IE5VTEw7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5pbl91c2UgPSBm YWxzZTsKLQkJfQorCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5sYXRjaCA9IE5VTEw7 CisJCWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmluX3VzZSA9IGZhbHNlOwogCX0KIH0K IAorc3RhdGljIHZvaWQKK3BnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2godm9pZCAqYXJnKQorewor CXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cigpOworfQorCitzdGF0aWMgdm9pZAorcGdh aW9fd29ya2VyX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCXNpemVfdAkJc2l6ZTsKKwlp bnQJCQlxdWV1ZV9zaXplOworCisJc2l6ZSA9IE1BWEFMSUdOKHBnYWlvX3dvcmtlcl9xdWV1ZV9z aG1lbV9zaXplKCZxdWV1ZV9zaXplKSkgKworCQlwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9z aXplKCk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvV29ya2VyU3VibWlzc2lv blF1ZXVlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZSwKKwkJKTsKK30KKwogc3RhdGljIGludAogcGdh aW9fd29ya2VyX2Nob29zZV9pZGxlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXgg N2E4YzY5ZGU4MDIuLmE1MTBjOTI4ZGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xMjIs NyArMTIyLDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwg SW5qZWN0aW9uUG9pbnRTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RT eW5jU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBaW9TaG1lbVNpemUoKSk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRMU05TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgRGF0YUNoZWNrc3Vtc1NobWVtU2l6ZSgpKTsKQEAgLTMwMSw3ICszMDAsNiBA QCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVN0YXRzU2htZW1Jbml0KCk7CiAJ V2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KCk7CiAJSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQoKTsK LQlBaW9TaG1lbUluaXQoKTsKIAlXYWl0TFNOU2htZW1Jbml0KCk7CiAJTG9naWNhbERlY29kaW5n Q3RsU2htZW1Jbml0KCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaAppbmRleCAzM2Ux ZTJkYzA0OC4uOWNhNDA4N2FhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlv X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaApAQCAt MjAsNiArMjAsOCBAQAogI2luY2x1ZGUgInBvcnQvcGdfaW92ZWMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2Fpby5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAKIAogLyoK QEAgLTI2NywyMCArMjY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSW9NZXRob2RPcHMKIAkgKi8KIAli b29sCQl3YWl0X29uX2ZkX2JlZm9yZV9jbG9zZTsKIAotCiAJLyogZ2xvYmFsIGluaXRpYWxpemF0 aW9uICovCi0KLQkvKgotCSAqIEFtb3VudCBvZiBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgdG8g cmVzZXJ2ZSBmb3IgdGhlIGlvX21ldGhvZC4gQ2FsbGVkCi0JICoganVzdCBsaWtlIGEgbm9ybWFs IGlwY2kuYyBzdHlsZSAqU2l6ZSgpIGZ1bmN0aW9uLiBPcHRpb25hbC4KLQkgKi8KLQlzaXplX3QJ CSgqc2htZW1fc2l6ZSkgKHZvaWQpOwotCi0JLyoKLQkgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1v cnkuIEZpcnN0IHRpbWUgaXMgdHJ1ZSBpZiBBSU8ncyBzaGFyZWQgbWVtb3J5IHdhcwotCSAqIGp1 c3QgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4gT3B0aW9uYWwuCi0JICovCi0Jdm9pZAkJ KCpzaG1lbV9pbml0KSAoYm9vbCBmaXJzdF90aW1lKTsKKwlTaG1lbUNhbGxiYWNrcyBzaG1lbV9j YWxsYmFja3M7CiAKIAkvKgogCSAqIFBlci1iYWNrZW5kIGluaXRpYWxpemF0aW9uLiBPcHRpb25h bC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX3N1YnN5cy5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9haW9fc3Vic3lzLmgKaW5kZXggMjc2Y2IzZTMxYzQuLmRkNTQ4NjkzNTFm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaApAQCAtMjAsMTIgKzIwLDggQEAKIAogCiAvKiBh aW9faW5pdC5jICovCi1leHRlcm4gU2l6ZSBBaW9TaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9p ZCBBaW9TaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIHBnYWlvX2luaXRfYmFja2VuZCh2 b2lkKTsKIAotCiAvKiBhaW8uYyAqLwogZXh0ZXJuIHZvaWQgcGdhaW9fZXJyb3JfY2xlYW51cCh2 b2lkKTsKIGV4dGVybiB2b2lkIEF0RU9YYWN0X0Fpbyhib29sIGlzX2NvbW1pdCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGMxOTlmMThhMjdhLi5iNDM4Nzk0ZDQ2ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTUzLDMgKzUzLDYgQEAgUEdfU0hNRU1f U1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKIAogLyogb3RoZXIgbW9kdWxlcyB0 aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlICovCiBQR19TSE1FTV9TVUJTWVNURU0o QXN5bmNTaG1lbUNhbGxiYWNrcykKKworLyogQUlPIHN1YnN5c3RlbS4gVGhpcyBkZWxlZ2F0ZXMg dG8gdGhlIG1ldGhvZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShB aW9TaG1lbUNhbGxiYWNrcykKLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Disposition: attachment; filename="v20260405_2-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k4v11 RnJvbSAzYjgxNWQ3MWU4OThkZmY4NTlhY2YxNDhhN2Y1N2M0MjAwZmY2NmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMjM6NDQ6MTUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxMi8xNV0gQWRkIG9wdGlvbiBmb3IgYWxpZ25pbmcgc2htZW0gYWxs b2NhdGlvbnMKClRoZSBidWZmZXIgYmxvY2tzIChpbiB0aGUgbmV4dCBjb21taXQpIGFyZSBJTy1h bGlnbmVkLiBUaGlzIG1pZ2h0IGNvbWUKaGFuZHkgaW4gb3RoZXIgcGxhY2VzIHRvbywgc28gbWFr ZSBpdCBhbiBleHBsaWNpdCBmZWF0dXJlIG9mClNobWVtUmVxdWVzdFN0cnVjdC4KLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIHwgMjYgKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgfCAgNiArKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKaW5kZXggYmMxODZkNmVhMTcuLjk3MzgxMWU1NDVlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTIzOSw3ICsyMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRv ckRhdGEKIAogI2RlZmluZSBTaG1lbUluZGV4TG9jayAoJlNobWVtQWxsb2NhdG9yLT5pbmRleF9s b2NrKQogCi1zdGF0aWMgdm9pZCAqU2htZW1BbGxvY1JhdyhTaXplIHNpemUsIFNpemUgKmFsbG9j YXRlZF9zaXplKTsKK3N0YXRpYyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSBh bGlnbm1lbnQsIFNpemUgKmFsbG9jYXRlZF9zaXplKTsKIAogLyogc2hhcmVkIG1lbW9yeSBnbG9i YWwgdmFyaWFibGVzICovCiAKQEAgLTQwMCw3ICs0MDAsOCBAQCBTaG1lbUdldFJlcXVlc3RlZFNp emUodm9pZCkKIAl7CiAJCXNpemUgPSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRpb25zLT5z aXplKTsKIAkJLyogY2FsY3VsYXRlIGFsaWdubWVudCBwYWRkaW5nIGxpa2UgU2htZW1BbGxvY1Jh dygpIGRvZXMgKi8KLQkJc2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCQlzaXplID0gVFlQ RUFMSUdOKE1heChyZXF1ZXN0LT5vcHRpb25zLT5hbGlnbm1lbnQsIFBHX0NBQ0hFX0xJTkVfU0la RSksCisJCQkJCQkgc2l6ZSk7CiAJfQogCiAJcmV0dXJuIHNpemU7CkBAIC01MjUsNyArNTI2LDkg QEAgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJICogV2UgaW5z ZXJ0ZWQgdGhlIGVudHJ5IHRvIHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4LiAgQWxsb2NhdGUgcmVx dWVzdGVkCiAJICogYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgZm9yIGl0LCBhbmQgaW5pdGlhbGl6 ZSB0aGUgaW5kZXggZW50cnkuCiAJICovCi0Jc3RydWN0UHRyID0gU2htZW1BbGxvY1JhdyhyZXF1 ZXN0LT5vcHRpb25zLT5zaXplLCAmYWxsb2NhdGVkX3NpemUpOworCXN0cnVjdFB0ciA9IFNobWVt QWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwKKwkJCQkJCQkgIHJlcXVlc3QtPm9wdGlv bnMtPmFsaWdubWVudCwKKwkJCQkJCQkgICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKHN0cnVjdFB0 ciA9PSBOVUxMKQogCXsKIAkJLyogb3V0IG9mIG1lbW9yeTsgcmVtb3ZlIHRoZSBmYWlsZWQgU2ht ZW1JbmRleCBlbnRyeSAqLwpAQCAtNzU0LDcgKzc1Nyw3IEBAIFNobWVtQWxsb2MoU2l6ZSBzaXpl KQogCXZvaWQJICAgKm5ld1NwYWNlOwogCVNpemUJCWFsbG9jYXRlZF9zaXplOwogCi0JbmV3U3Bh Y2UgPSBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7CisJbmV3U3BhY2UgPSBT aG1lbUFsbG9jUmF3KHNpemUsIDAsICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKCFuZXdTcGFjZSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLApA QCAtNzczLDcgKzc3Niw3IEBAIFNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSkKIHsKIAlTaXpl CQlhbGxvY2F0ZWRfc2l6ZTsKIAotCXJldHVybiBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxvY2F0 ZWRfc2l6ZSk7CisJcmV0dXJuIFNobWVtQWxsb2NSYXcoc2l6ZSwgMCwgJmFsbG9jYXRlZF9zaXpl KTsKIH0KIAogLyoKQEAgLTc4Myw4ICs3ODYsOSBAQCBTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNp emUpCiAgKiBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIHJlcXVlc3RlZCBwbHVzIGFueSBwYWRkaW5n IHdlIGNob29zZSB0byBhZGQuCiAgKi8KIHN0YXRpYyB2b2lkICoKLVNobWVtQWxsb2NSYXcoU2l6 ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKK1NobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBT aXplIGFsaWdubWVudCwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpCiB7CisJU2l6ZQkJcmF3U3RhcnQ7 CiAJU2l6ZQkJbmV3U3RhcnQ7CiAJU2l6ZQkJbmV3RnJlZTsKIAl2b2lkCSAgICpuZXdTcGFjZTsK QEAgLTgwMCwxNCArODA0LDE1IEBAIFNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxv Y2F0ZWRfc2l6ZSkKIAkgKiBzdHJ1Y3R1cmVzIG91dCB0byBhIHBvd2VyLW9mLXR3byBzaXplIC0g YnV0IHdpdGhvdXQgdGhpcywgZXZlbiB0aGF0CiAJICogd29uJ3QgYmUgc3VmZmljaWVudC4KIAkg Ki8KLQlzaXplID0gQ0FDSEVMSU5FQUxJR04oc2l6ZSk7Ci0JKmFsbG9jYXRlZF9zaXplID0gc2l6 ZTsKKwlpZiAoYWxpZ25tZW50IDwgUEdfQ0FDSEVfTElORV9TSVpFKQorCQlhbGlnbm1lbnQgPSBQ R19DQUNIRV9MSU5FX1NJWkU7CiAKIAlBc3NlcnQoU2htZW1TZWdIZHIgIT0gTlVMTCk7CiAKIAlT cGluTG9ja0FjcXVpcmUoJlNobWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrKTsKIAotCW5ld1N0YXJ0 ID0gU2htZW1BbGxvY2F0b3ItPmZyZWVfb2Zmc2V0OworCXJhd1N0YXJ0ID0gU2htZW1BbGxvY2F0 b3ItPmZyZWVfb2Zmc2V0OworCW5ld1N0YXJ0ID0gVFlQRUFMSUdOKGFsaWdubWVudCwgcmF3U3Rh cnQpOwogCiAJbmV3RnJlZSA9IG5ld1N0YXJ0ICsgc2l6ZTsKIAlpZiAobmV3RnJlZSA8PSBTaG1l bVNlZ0hkci0+dG90YWxzaXplKQpAQCAtODIxLDggKzgyNiw5IEBAIFNobWVtQWxsb2NSYXcoU2l6 ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKIAlTcGluTG9ja1JlbGVhc2UoJlNobWVtQWxs b2NhdG9yLT5zaG1lbV9sb2NrKTsKIAogCS8qIG5vdGUgdGhpcyBhc3NlcnQgaXMgb2theSB3aXRo IG5ld1NwYWNlID09IE5VTEwgKi8KLQlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgQ0FDSEVM SU5FQUxJR04obmV3U3BhY2UpKTsKKwlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgVFlQRUFM SUdOKGFsaWdubWVudCwgbmV3U3BhY2UpKTsKIAorCSphbGxvY2F0ZWRfc2l6ZSA9IG5ld0ZyZWUg LSByYXdTdGFydDsKIAlyZXR1cm4gbmV3U3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCAx NDdhNjkxNWY3ZS4uOTEyMThkYjZkNmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAgLTUxLDYgKzUxLDEy IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtU3RydWN0T3B0cwogCSAqLwogCXNzaXplX3QJCXNpemU7 CiAKKwkvKgorCSAqIEFsaWdubWVudCBvZiB0aGUgc3RhcnRpbmcgYWRkcmVzcy4gSWYgbm90IHNl dCwgZGVmYXVsdHMgdG8gY2FjaGVsaW5lCisJICogYm91bmRhcnkuICBNdXN0IGJlIGEgcG93ZXIg b2YgdHdvLgorCSAqLworCXNpemVfdAkJYWxpZ25tZW50OworCiAJLyoKIAkgKiBXaGVuIHRoZSBz aG1lbSBhcmVhIGlzIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLCBwb2ludGVyIHRvIGl0IGlz CiAJICogc3RvcmVkIGluICpwdHIuICBJdCB1c3VhbGx5IHBvaW50cyB0byBhIGdsb2JhbCB2YXJp YWJsZSwgdXNlZCB0byBhY2Nlc3MKLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Disposition: attachment; filename="v20260405_2-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k5112 RnJvbSAwZDUyYWQ1MGM4YzVkOTZkODdjN2U5ZWUzN2U5ZTQxMjJiNjE5NmViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDo0NDowMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDEzLzE1XSBDb252ZXJ0IGJ1ZmZlciBtYW5hZ2VyIHRvIHRoZSBuZXcg QVBJCgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMgIHwgMTQ5ICsr KysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90 YWJsZS5jIHwgIDU0ICsrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxp c3QuYyAgfCAgOTMgKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCAg ICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oICAgICAgICAgICB8ICAgNCAt CiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICB8ICAgMyArCiA3IGZpbGVz IGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKaW5kZXggYzBjMjIzYjJlMzIuLjE0MDdjOTMwYzU2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKQEAgLTE4LDYgKzE4LDggQEAKICNp bmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2xpc3QuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAKIEJ1ZmZlckRlc2NQYWRk ZWQgKkJ1ZmZlckRlc2NyaXB0b3JzOwogY2hhcgkgICAqQnVmZmVyQmxvY2tzOwpAQCAtMjUsNiAr MjcsMTUgQEAgQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKkJ1ZmZlcklPQ1ZBcnJh eTsKIFdyaXRlYmFja0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiBDa3B0U29ydEl0 ZW0gKkNrcHRCdWZmZXJJZHM7CiAKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCAq YXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUF0dGFjaCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBCdWZmZXJNYW5hZ2VyU2htZW1DYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSBCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQnVm ZmVyTWFuYWdlclNobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gQnVmZmVyTWFuYWdlclNobWVtQXR0 YWNoLAorfTsKIAogLyoKICAqIERhdGEgU3RydWN0dXJlczoKQEAgLTYwLDM3ICs3MSwzMSBAQCBD a3B0U29ydEl0ZW0gKkNrcHRCdWZmZXJJZHM7CiAKIAogLyoKLSAqIEluaXRpYWxpemUgc2hhcmVk IGJ1ZmZlciBwb29sCi0gKgotICogVGhpcyBpcyBjYWxsZWQgb25jZSBkdXJpbmcgc2hhcmVkLW1l bW9yeSBpbml0aWFsaXphdGlvbiAoZWl0aGVyIGluIHRoZQotICogcG9zdG1hc3Rlciwgb3IgaW4g YSBzdGFuZGFsb25lIGJhY2tlbmQpLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBhcmVhIGZv ciB0aGUgYnVmZmVyIHBvb2wuCiAgKi8KLXZvaWQKLUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZEJ1ZnMsCi0JCQkJZm91bmREZXNjcywKLQkJCQlmb3VuZElPQ1YsCi0JCQkJ Zm91bmRCdWZDa3B0OwotCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJ1ZmZlciBEZXNj cmlwdG9ycyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQnVmZmVyRGVzY1Bh ZGRlZCksCiAJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkuICov Ci0JQnVmZmVyRGVzY3JpcHRvcnMgPSAoQnVmZmVyRGVzY1BhZGRlZCAqKQotCQlTaG1lbUluaXRT dHJ1Y3QoIkJ1ZmZlciBEZXNjcmlwdG9ycyIsCi0JCQkJCQlOQnVmZmVycyAqIHNpemVvZihCdWZm ZXJEZXNjUGFkZGVkKSwKLQkJCQkJCSZmb3VuZERlc2NzKTsKKwkJCQkJICAgLmFsaWdubWVudCA9 IFBHX0NBQ0hFX0xJTkVfU0laRSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQnVmZmVyRGVz Y3JpcHRvcnMsCisJCSk7CiAKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQnVmZmVyIEJs b2NrcyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiAoU2l6ZSkgQkxDS1NaLAogCS8qIEFs aWduIGJ1ZmZlciBwb29sIG9uIElPIHBhZ2Ugc2l6ZSBib3VuZGFyeS4gKi8KLQlCdWZmZXJCbG9j a3MgPSAoY2hhciAqKQotCQlUWVBFQUxJR04oUEdfSU9fQUxJR05fU0laRSwKLQkJCQkgIFNobWVt SW5pdFN0cnVjdCgiQnVmZmVyIEJsb2NrcyIsCi0JCQkJCQkJCSAgTkJ1ZmZlcnMgKiAoU2l6ZSkg QkxDS1NaICsgUEdfSU9fQUxJR05fU0laRSwKLQkJCQkJCQkJICAmZm91bmRCdWZzKSk7Ci0KLQkv KiBBbGlnbiBjb25kaXRpb24gdmFyaWFibGVzIHRvIGNhY2hlbGluZSBib3VuZGFyeS4gKi8KLQlC dWZmZXJJT0NWQXJyYXkgPSAoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCi0JCQkJCQlO QnVmZmVycyAqIHNpemVvZihDb25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCksCi0JCQkJ CQkmZm91bmRJT0NWKTsKKwkJCQkJICAgLmFsaWdubWVudCA9IFBHX0lPX0FMSUdOX1NJWkUsCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJ1ZmZlckJsb2NrcywKKwkJKTsKKworCVNobWVtUmVx dWVzdFN0cnVjdCgubmFtZSA9ICJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCisJCQkJ CSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQ YWRkZWQpLAorCS8qIEFsaWduIGRlc2NyaXB0b3JzIHRvIGEgY2FjaGVsaW5lIGJvdW5kYXJ5LiAq LworCQkJCQkgICAuYWxpZ25tZW50ID0gUEdfQ0FDSEVfTElORV9TSVpFLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZCdWZmZXJJT0NWQXJyYXksCisJCSk7CiAKIAkvKgogCSAqIFRoZSBhcnJh eSB1c2VkIHRvIHNvcnQgdG8tYmUtY2hlY2twb2ludGVkIGJ1ZmZlciBpZHMgaXMgbG9jYXRlZCBp bgpAQCAtOTksODAgKzEwNCw1MCBAQCBCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJICog dGhlIGNoZWNrcG9pbnRlciBpcyByZXN0YXJ0ZWQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVz IHdvdWxkIGJlCiAJICogcGFpbmZ1bC4KIAkgKi8KLQlDa3B0QnVmZmVySWRzID0gKENrcHRTb3J0 SXRlbSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNoZWNrcG9pbnQgQnVmZmVySWRzIiwKLQkJCQkJ CU5CdWZmZXJzICogc2l6ZW9mKENrcHRTb3J0SXRlbSksICZmb3VuZEJ1ZkNrcHQpOworCVNobWVt UmVxdWVzdFN0cnVjdCgubmFtZSA9ICJDaGVja3BvaW50IEJ1ZmZlcklkcyIsCisJCQkJCSAgIC5z aXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQ2twdFNvcnRJdGVtKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQ2twdEJ1ZmZlcklkcywKKwkJKTsKK30KIAotCWlmIChmb3VuZERlc2NzIHx8IGZv dW5kQnVmcyB8fCBmb3VuZElPQ1YgfHwgZm91bmRCdWZDa3B0KQotCXsKLQkJLyogc2hvdWxkIGZp bmQgYWxsIG9mIHRoZXNlLCBvciBub25lIG9mIHRoZW0gKi8KLQkJQXNzZXJ0KGZvdW5kRGVzY3Mg JiYgZm91bmRCdWZzICYmIGZvdW5kSU9DViAmJiBmb3VuZEJ1ZkNrcHQpOwotCQkvKiBub3RlOiB0 aGlzIHBhdGggaXMgb25seSB0YWtlbiBpbiBFWEVDX0JBQ0tFTkQgY2FzZSAqLwotCX0KLQllbHNl CisvKgorICogSW5pdGlhbGl6ZSBzaGFyZWQgYnVmZmVyIHBvb2wKKyAqCisgKiBUaGlzIGlzIGNh bGxlZCBvbmNlIGR1cmluZyBzaGFyZWQtbWVtb3J5IGluaXRpYWxpemF0aW9uIChlaXRoZXIgaW4g dGhlCisgKiBwb3N0bWFzdGVyLCBvciBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCkuCisgKi8KK3N0 YXRpYyB2b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwkvKgorCSAq IEluaXRpYWxpemUgYWxsIHRoZSBidWZmZXIgaGVhZGVycy4KKwkgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IE5CdWZmZXJzOyBpKyspCiAJewotCQlpbnQJCQlpOworCQlCdWZmZXJEZXNjICpidWYg PSBHZXRCdWZmZXJEZXNjcmlwdG9yKGkpOwogCi0JCS8qCi0JCSAqIEluaXRpYWxpemUgYWxsIHRo ZSBidWZmZXIgaGVhZGVycy4KLQkJICovCi0JCWZvciAoaSA9IDA7IGkgPCBOQnVmZmVyczsgaSsr KQotCQl7Ci0JCQlCdWZmZXJEZXNjICpidWYgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGkpOworCQlD bGVhckJ1ZmZlclRhZygmYnVmLT50YWcpOwogCi0JCQlDbGVhckJ1ZmZlclRhZygmYnVmLT50YWcp OworCQlwZ19hdG9taWNfaW5pdF91NjQoJmJ1Zi0+c3RhdGUsIDApOworCQlidWYtPndhaXRfYmFj a2VuZF9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKLQkJCXBnX2F0b21pY19pbml0 X3U2NCgmYnVmLT5zdGF0ZSwgMCk7Ci0JCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IElO VkFMSURfUFJPQ19OVU1CRVI7CisJCWJ1Zi0+YnVmX2lkID0gaTsKIAotCQkJYnVmLT5idWZfaWQg PSBpOworCQlwZ2Fpb193cmVmX2NsZWFyKCZidWYtPmlvX3dyZWYpOwogCi0JCQlwZ2Fpb193cmVm X2NsZWFyKCZidWYtPmlvX3dyZWYpOwotCi0JCQlwcm9jbGlzdF9pbml0KCZidWYtPmxvY2tfd2Fp dGVycyk7Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1Yo YnVmKSk7Ci0JCX0KKwkJcHJvY2xpc3RfaW5pdCgmYnVmLT5sb2NrX3dhaXRlcnMpOworCQlDb25k aXRpb25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1YoYnVmKSk7CiAJfQogCi0J LyogSW5pdCBvdGhlciBzaGFyZWQgYnVmZmVyLW1hbmFnZW1lbnQgc3R1ZmYgKi8KLQlTdHJhdGVn eUluaXRpYWxpemUoIWZvdW5kRGVzY3MpOwotCiAJLyogSW5pdGlhbGl6ZSBwZXItYmFja2VuZCBm aWxlIGZsdXNoIGNvbnRleHQgKi8KIAlXcml0ZWJhY2tDb250ZXh0SW5pdCgmQmFja2VuZFdyaXRl YmFja0NvbnRleHQsCiAJCQkJCQkgJmJhY2tlbmRfZmx1c2hfYWZ0ZXIpOwogfQogCi0vKgotICog QnVmZmVyTWFuYWdlclNobWVtU2l6ZQotICoKLSAqIGNvbXB1dGUgdGhlIHNpemUgb2Ygc2hhcmVk IG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sIGluY2x1ZGluZwotICogZGF0YSBwYWdlcywgYnVm ZmVyIGRlc2NyaXB0b3JzLCBoYXNoIHRhYmxlcywgZXRjLgotICovCi1TaXplCi1CdWZmZXJNYW5h Z2VyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQnVmZmVyTWFuYWdlclNobWVtQXR0YWNo KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQotCS8qIHNpemUgb2YgYnVmZmVyIGRl c2NyaXB0b3JzICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLCBz aXplb2YoQnVmZmVyRGVzY1BhZGRlZCkpKTsKLQkvKiB0byBhbGxvdyBhbGlnbmluZyBidWZmZXIg ZGVzY3JpcHRvcnMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpF KTsKLQotCS8qIHNpemUgb2YgZGF0YSBwYWdlcywgcGx1cyBhbGlnbm1lbnQgcGFkZGluZyAqLwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19JT19BTElHTl9TSVpFKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgbXVsX3NpemUoTkJ1ZmZlcnMsIEJMQ0tTWikpOwotCi0JLyogc2l6ZSBvZiBzdHVm ZiBjb250cm9sbGVkIGJ5IGZyZWVsaXN0LmMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3Ry YXRlZ3lTaG1lbVNpemUoKSk7Ci0KLQkvKiBzaXplIG9mIEkvTyBjb25kaXRpb24gdmFyaWFibGVz ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLAotCQkJCQkJCQkg ICBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQpKSk7Ci0JLyogdG8gYWxs b3cgYWxpZ25pbmcgdGhlIGFib3ZlICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NBQ0hF X0xJTkVfU0laRSk7Ci0KLQkvKiBzaXplIG9mIGNoZWNrcG9pbnQgc29ydCBhcnJheSBpbiBidWZt Z3IuYyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShOQnVmZmVycywgc2l6ZW9m KENrcHRTb3J0SXRlbSkpKTsKLQotCXJldHVybiBzaXplOworCS8qIEluaXRpYWxpemUgcGVyLWJh Y2tlbmQgZmlsZSBmbHVzaCBjb250ZXh0ICovCisJV3JpdGViYWNrQ29udGV4dEluaXQoJkJhY2tl bmRXcml0ZWJhY2tDb250ZXh0LAorCQkJCQkJICZiYWNrZW5kX2ZsdXNoX2FmdGVyKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKaW5kZXggZDA0ZWY3NGI4NTAuLjM0N2Jm MjY3ZDczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwpAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9p bnRlcm5hbHMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogLyogZW50cnkg Zm9yIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMzIsMzcg KzMzLDQyIEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyBIVEFCICpTaGFyZWRCdWZIYXNoOwog CitzdGF0aWMgdm9pZCBCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOwogCi0vKgotICog RXN0aW1hdGUgc3BhY2UgbmVlZGVkIGZvciBtYXBwaW5nIGhhc2h0YWJsZQotICoJCXNpemUgaXMg dGhlIGRlc2lyZWQgaGFzaCB0YWJsZSBzaXplIChwb3NzaWJseSBtb3JlIHRoYW4gTkJ1ZmZlcnMp Ci0gKi8KLVNpemUKLUJ1ZlRhYmxlU2htZW1TaXplKGludCBzaXplKQotewotCXJldHVybiBoYXNo X2VzdGltYXRlX3NpemUoc2l6ZSwgc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCkpOwotfQorY29uc3Qg U2htZW1DYWxsYmFja3MgQnVmVGFibGVTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IEJ1ZlRhYmxlU2htZW1SZXF1ZXN0LAorCS8qIG5vIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gbmVl ZGVkLCB0aGUgaGFzaCB0YWJsZSB3aWxsIHN0YXJ0IGVtcHR5ICovCit9OwogCiAvKgotICogSW5p dGlhbGl6ZSBzaG1lbSBoYXNoIHRhYmxlIGZvciBtYXBwaW5nIGJ1ZmZlcnMKKyAqIFJlZ2lzdGVy IHNobWVtIGhhc2ggdGFibGUgZm9yIG1hcHBpbmcgYnVmZmVycy4KICAqCQlzaXplIGlzIHRoZSBk ZXNpcmVkIGhhc2ggdGFibGUgc2l6ZSAocG9zc2libHkgbW9yZSB0aGFuIE5CdWZmZXJzKQogICov CiB2b2lkCi1Jbml0QnVmVGFibGUoaW50IHNpemUpCitCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lk ICphcmcpCiB7Ci0JSEFTSENUTAkJaW5mbzsKLQotCS8qIGFzc3VtZSBubyBsb2NraW5nIGlzIG5l ZWRlZCB5ZXQgKi8KLQotCS8qIEJ1ZmZlclRhZyBtYXBzIHRvIEJ1ZmZlciAqLwotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKEJ1ZmZl ckxvb2t1cEVudCk7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9O UzsKLQotCVNoYXJlZEJ1Zkhhc2ggPSBTaG1lbUluaXRIYXNoKCJTaGFyZWQgQnVmZmVyIExvb2t1 cCBUYWJsZSIsCi0JCQkJCQkJCSAgc2l6ZSwKLQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUp OworCWludAkJCXNpemU7CisKKwkvKgorCSAqIFJlcXVlc3QgdGhlIHNoYXJlZCBidWZmZXIgbG9v a3VwIGhhc2h0YWJsZS4KKwkgKgorCSAqIFNpbmNlIHdlIGNhbid0IHRvbGVyYXRlIHJ1bm5pbmcg b3V0IG9mIGxvb2t1cCB0YWJsZSBlbnRyaWVzLCB3ZSBtdXN0IGJlCisJICogc3VyZSB0byBzcGVj aWZ5IGFuIGFkZXF1YXRlIHRhYmxlIHNpemUgaGVyZS4gIFRoZSBtYXhpbXVtIHN0ZWFkeS1zdGF0 ZQorCSAqIHVzYWdlIGlzIG9mIGNvdXJzZSBOQnVmZmVycyBlbnRyaWVzLCBidXQgQnVmZmVyQWxs b2MoKSB0cmllcyB0byBpbnNlcnQKKwkgKiBhIG5ldyBlbnRyeSBiZWZvcmUgZGVsZXRpbmcgdGhl IG9sZC4gIEluIHByaW5jaXBsZSB0aGlzIGNvdWxkIGJlCisJICogaGFwcGVuaW5nIGluIGVhY2gg cGFydGl0aW9uIGNvbmN1cnJlbnRseSwgc28gd2UgY291bGQgbmVlZCBhcyBtYW55IGFzCisJICog TkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlMgZW50cmllcy4KKwkgKi8KKwlzaXplID0g TkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlM7CisKKwlTaG1lbVJlcXVlc3RIYXNoKC5u YW1lID0gIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKKwkJCQkJIC5uZWxlbXMgPSBzaXpl LAorCQkJCQkgLnB0ciA9ICZTaGFyZWRCdWZIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXpl ID0gc2l6ZW9mKEJ1ZmZlclRhZyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihCdWZmZXJMb29rdXBFbnQpLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5V TV9CVUZGRVJfUEFSVElUSU9OUywKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFLAorCQkpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggYjc2ODc4MzYxODguLmZk YjViYWQ3OTEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlz dC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTIwLDYg KzIwLDggQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogI2RlZmlu ZSBJTlRfQUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUgaW50ICopJih2YXIpKSkp CiAKQEAgLTU2LDYgKzU4LDE0IEBAIHR5cGVkZWYgc3RydWN0CiAvKiBQb2ludGVycyB0byBzaGFy ZWQgc3RhdGUgKi8KIHN0YXRpYyBCdWZmZXJTdHJhdGVneUNvbnRyb2wgKlN0cmF0ZWd5Q29udHJv bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFN0cmF0ZWd5Q3RsU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBTdHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25z dCBTaG1lbUNhbGxiYWNrcyBTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gU3RyYXRlZ3lDdGxTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTdHJhdGVneUN0bFNo bWVtSW5pdCwKK307CisKIC8qCiAgKiBQcml2YXRlIChub24tc2hhcmVkKSBzdGF0ZSBmb3IgbWFu YWdpbmcgYSByaW5nIG9mIHNoYXJlZCBidWZmZXJzIHRvIHJlLXVzZS4KICAqIFRoaXMgaXMgY3Vy cmVudGx5IHRoZSBvbmx5IGtpbmQgb2YgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb2JqZWN0LCBidXQg c29tZWRheQpAQCAtMzY5LDgwICszNzksMzUgQEAgU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihpbnQg Ymd3cHJvY25vKQogCiAKIC8qCi0gKiBTdHJhdGVneVNobWVtU2l6ZQotICoKLSAqIGVzdGltYXRl IHRoZSBzaXplIG9mIHNoYXJlZCBtZW1vcnkgdXNlZCBieSB0aGUgZnJlZWxpc3QtcmVsYXRlZCBz dHJ1Y3R1cmVzLgotICoKLSAqIE5vdGU6IGZvciBzb21ld2hhdCBoaXN0b3JpY2FsIHJlYXNvbnMs IHRoZSBidWZmZXIgbG9va3VwIGhhc2h0YWJsZSBzaXplCi0gKiBpcyBhbHNvIGRldGVybWluZWQg aGVyZS4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1SZXF1ZXN0IC0tIHJlcXVlc3Qgc2hhcmVkIG1lbW9y eSBmb3IgdGhlIGJ1ZmZlcgorICoJCWNhY2hlIHJlcGxhY2VtZW50IHN0cmF0ZWd5LgogICovCi1T aXplCi1TdHJhdGVneVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1N0cmF0ZWd5Q3RsU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQotCS8qIHNpemUgb2Yg bG9va3VwIGhhc2ggdGFibGUgLi4uIHNlZSBjb21tZW50IGluIFN0cmF0ZWd5SW5pdGlhbGl6ZSAq LwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZUYWJsZVNobWVtU2l6ZShOQnVmZmVycyArIE5V TV9CVUZGRVJfUEFSVElUSU9OUykpOwotCi0JLyogc2l6ZSBvZiB0aGUgc2hhcmVkIHJlcGxhY2Vt ZW50IHN0cmF0ZWd5IGNvbnRyb2wgYmxvY2sgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgTUFY QUxJR04oc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCkpKTsKLQotCXJldHVybiBzaXplOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCdWZmZXIgU3RyYXRlZ3kgU3RhdHVzIiwKKwkJ CQkJICAgLnNpemUgPSBzaXplb2YoQnVmZmVyU3RyYXRlZ3lDb250cm9sKSwKKwkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAmU3RyYXRlZ3lDb250cm9sCisJCSk7CiB9CiAKIC8qCi0gKiBTdHJhdGVn eUluaXRpYWxpemUgLS0gaW5pdGlhbGl6ZSB0aGUgYnVmZmVyIGNhY2hlIHJlcGxhY2VtZW50Ci0g KgkJc3RyYXRlZ3kuCi0gKgotICogQXNzdW1lczogQWxsIG9mIHRoZSBidWZmZXJzIGFyZSBhbHJl YWR5IGJ1aWx0IGludG8gYSBsaW5rZWQgbGlzdC4KLSAqCQlPbmx5IGNhbGxlZCBieSBwb3N0bWFz dGVyIGFuZCBvbmx5IGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1J bml0IC0tIGluaXRpYWxpemUgdGhlIGJ1ZmZlciBjYWNoZSByZXBsYWNlbWVudCBzdHJhdGVneS4K ICAqLwotdm9pZAotU3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCkKK3N0YXRpYyB2b2lkCitT dHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CisJU3Bpbkxv Y2tJbml0KCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIAotCS8qCi0J ICogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxlLgotCSAqCi0J ICogU2luY2Ugd2UgY2FuJ3QgdG9sZXJhdGUgcnVubmluZyBvdXQgb2YgbG9va3VwIHRhYmxlIGVu dHJpZXMsIHdlIG11c3QgYmUKLQkgKiBzdXJlIHRvIHNwZWNpZnkgYW4gYWRlcXVhdGUgdGFibGUg c2l6ZSBoZXJlLiAgVGhlIG1heGltdW0gc3RlYWR5LXN0YXRlCi0JICogdXNhZ2UgaXMgb2YgY291 cnNlIE5CdWZmZXJzIGVudHJpZXMsIGJ1dCBCdWZmZXJBbGxvYygpIHRyaWVzIHRvIGluc2VydAot CSAqIGEgbmV3IGVudHJ5IGJlZm9yZSBkZWxldGluZyB0aGUgb2xkLiAgSW4gcHJpbmNpcGxlIHRo aXMgY291bGQgYmUKLQkgKiBoYXBwZW5pbmcgaW4gZWFjaCBwYXJ0aXRpb24gY29uY3VycmVudGx5 LCBzbyB3ZSBjb3VsZCBuZWVkIGFzIG1hbnkgYXMKLQkgKiBOQnVmZmVycyArIE5VTV9CVUZGRVJf UEFSVElUSU9OUyBlbnRyaWVzLgotCSAqLwotCUluaXRCdWZUYWJsZShOQnVmZmVycyArIE5VTV9C VUZGRVJfUEFSVElUSU9OUyk7Ci0KLQkvKgotCSAqIEdldCBvciBjcmVhdGUgdGhlIHNoYXJlZCBz dHJhdGVneSBjb250cm9sIGJsb2NrCi0JICovCi0JU3RyYXRlZ3lDb250cm9sID0gKEJ1ZmZlclN0 cmF0ZWd5Q29udHJvbCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJ1ZmZlciBTdHJhdGVneSBTdGF0 dXMiLAotCQkJCQkJc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCksCi0JCQkJCQkmZm91bmQp OwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIE9ubHkgZG9uZSBvbmNlLCB1c3VhbGx5 IGluIHBvc3RtYXN0ZXIKLQkJICovCi0JCUFzc2VydChpbml0KTsKLQotCQlTcGluTG9ja0luaXQo JlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCS8qIEluaXRpYWxpemUg dGhlIGNsb2NrLXN3ZWVwIHBvaW50ZXIgKi8KKwlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0ZWd5 Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CiAKLQkJLyogSW5pdGlhbGl6ZSB0aGUgY2xv Y2stc3dlZXAgcG9pbnRlciAqLwotCQlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0ZWd5Q29udHJv bC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CisJLyogQ2xlYXIgc3RhdGlzdGljcyAqLworCVN0cmF0 ZWd5Q29udHJvbC0+Y29tcGxldGVQYXNzZXMgPSAwOworCXBnX2F0b21pY19pbml0X3UzMigmU3Ry YXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxvY3MsIDApOwogCi0JCS8qIENsZWFyIHN0YXRpc3Rp Y3MgKi8KLQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcyA9IDA7Ci0JCXBnX2F0b21p Y19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxvY3MsIDApOwotCi0JCS8q IE5vIHBlbmRpbmcgbm90aWZpY2F0aW9uICovCi0JCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25v ID0gLTE7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KCFpbml0KTsKKwkvKiBObyBwZW5kaW5nIG5vdGlm aWNhdGlvbiAqLworCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jCmluZGV4IGE1MTBjOTI4ZGFhLi5mNjRjMWQ1OWZhMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wZ19zaG1lbS5oIgpAQCAtOTksNyArOTgsNiBAQCBDYWxjdWxhdGVTaG1lbVNp emUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkp OwogCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQnVm ZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTG9ja01hbmFn ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dQcmVmZXRjaFNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExPR1NobWVtU2l6ZSgpKTsKQEAgLTI2 Myw3ICsyNjEsNiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVhMT0dTaG1l bUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1lbUluaXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUlu aXQoKTsKLQlCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KCk7CiAKIAkvKgogCSAqIFNldCB1cCBsb2Nr IG1hbmFnZXIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggYWQxYjdiMjIxNmEu Ljg5NjE1YTI1NGEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5h bHMuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApAQCAtNTg3LDEy ICs1ODcsNyBAQCBleHRlcm4gYm9vbCBTdHJhdGVneVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneSwKIGV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3RhcnQodWludDMyICpj b21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYyk7CiBleHRlcm4gdm9pZCBTdHJh dGVneU5vdGlmeUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pOwogCi1leHRlcm4gU2l6ZSBTdHJhdGVn eVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGlu aXQpOwotCiAvKiBidWZfdGFibGUuYyAqLwotZXh0ZXJuIFNpemUgQnVmVGFibGVTaG1lbVNpemUo aW50IHNpemUpOwotZXh0ZXJuIHZvaWQgSW5pdEJ1ZlRhYmxlKGludCBzaXplKTsKIGV4dGVybiB1 aW50MzIgQnVmVGFibGVIYXNoQ29kZShCdWZmZXJUYWcgKnRhZ1B0cik7CiBleHRlcm4gaW50CUJ1 ZlRhYmxlTG9va3VwKEJ1ZmZlclRhZyAqdGFnUHRyLCB1aW50MzIgaGFzaGNvZGUpOwogZXh0ZXJu IGludAlCdWZUYWJsZUluc2VydChCdWZmZXJUYWcgKnRhZ1B0ciwgdWludDMyIGhhc2hjb2RlLCBp bnQgYnVmX2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IGFhNjFhMzlkOWU2Li42ODM3YjM1ZmM2 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zm1nci5oCkBAIC0zNzEsMTAgKzM3MSw2IEBAIGV4dGVybiB2b2lkIE1h cmtEaXJ0eUFsbFVucGlubmVkQnVmZmVycyhpbnQzMiAqYnVmZmVyc19kaXJ0aWVkLAogCQkJCQkJ CQkJCWludDMyICpidWZmZXJzX2FscmVhZHlfZGlydHksCiAJCQkJCQkJCQkJaW50MzIgKmJ1ZmZl cnNfc2tpcHBlZCk7CiAKLS8qIGluIGJ1Zl9pbml0LmMgKi8KLWV4dGVybiB2b2lkIEJ1ZmZlck1h bmFnZXJTaG1lbUluaXQodm9pZCk7Ci1leHRlcm4gU2l6ZSBCdWZmZXJNYW5hZ2VyU2htZW1TaXpl KHZvaWQpOwotCiAvKiBpbiBsb2NhbGJ1Zi5jICovCiBleHRlcm4gdm9pZCBBdFByb2NFeGl0X0xv Y2FsQnVmZmVycyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCBi NDM4Nzk0ZDQ2ZC4uZDhlMTE3NTZhNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5o CkBAIC0zNiw2ICszNiw5IEBAIFBHX1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3Mp CiBQR19TSE1FTV9TVUJTWVNURU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NV QlNZU1RFTShTVUJUUkFOU1NobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lTVEVNKE11bHRp WGFjdFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZmZlck1hbmFnZXJTaG1l bUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tz KQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZlRhYmxlU2htZW1DYWxsYmFja3MpCiAKIC8qIHByZWRp Y2F0ZSBsb2NrIG1hbmFnZXIgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShQcmVkaWNhdGVMb2NrU2ht ZW1DYWxsYmFja3MpCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0014-Convert-all-remaining-subsystems-to-use-th.patch" Content-Disposition: attachment; filename="v20260405_2-0014-Convert-all-remaining-subsystems-to-use-th.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k5813 RnJvbSA5YzRlN2Q0ZDBkYjIxZjdhOWExZGI3ZGJmOGZlMjU1NTYyMzk4ODQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTk6MDU6MjYgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxNC8xNV0gQ29udmVydCBhbGwgcmVtYWluaW5nIHN1YnN5c3RlbXMg dG8gdXNlIHRoZQogbmV3IEFQSQoKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3N5bmNz Y2FuLmMgICAgICAgICAgfCAgNzYgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYyAgICAgICAgICB8ICA1NCArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3R3b3BoYXNlLmMgICAgICAgICB8ICA3NSArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDgyICsrKysrLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDUxICsrKy0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgIDM1ICsrLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgICAgICAgICB8ICA1MCArKy0tLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDc5ICsrKystLS0tCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAxMDUgKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICA1 NiArKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMgICB8 ICA0MSArKy0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAgICAg IHwgIDQzICsrKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyAgICAg ICAgfCAgNjAgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgICAgfCAgNTYgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWxjdGwuYyAgfCAgMjkgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jICAgICAgfCAgNTkgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgICAgfCAgNDEgKysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAg ICAgICAgICAgICAgICB8ICA2NCArKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlcmZ1bmNzLmMgICAgfCAgNTEgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyAgICAgICAgICAgfCAgNTkgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgICAgICAgICAgICAgICAgfCAxMjQgKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xvY2suYyAgICAgICAgICAgICAgIHwgMTEzICsrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYyAgIHwgMTczICsrKysrKyst LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMgICAg IHwgMTU4ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYyAgICAgICB8ICA4MyArKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5q ZWN0aW9uX3BvaW50LmMgICAgICB8ICA1NyArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaCAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3luY3Nj YW4uaCAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNl LmggICAgICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNo ZXIuaCAgICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5oICAgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggICAg ICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxz LmggICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmggICAgICAgICAg ICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaCAg IHwgICA0IC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmggICAgICAgICAgICAgICB8 ICAgMiAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCAgICAgICAgfCAg IDIgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGN0bC5oICAgICAgICAgIHwgICAy IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICB8ICAgMyAt CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAgIDQgLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICA0IC0KIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICAgICB8ICAgMiAtCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNs dWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICAgICAgICAgfCAgMjcgKysrCiBzcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oICAgICAgICAgICAgfCAgIDggLQogc3JjL2luY2x1ZGUv dXRpbHMvaW5qZWN0aW9uX3BvaW50LmggICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMiAtCiAuLi4vaW5qZWN0aW9uX3Bv aW50cy9pbmplY3Rpb25fcG9pbnRzLmMgICAgICAgfCAgNTkgKystLS0tCiBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLmMgICAgICAgICAgfCAxMDcgKysrKystLS0tLS0KIDU0IGZp bGVzIGNoYW5nZWQsIDkzMyBpbnNlcnRpb25zKCspLCAxMjA2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYwppbmRleCA2ZmNmY2IwZTU2MC4uMGY5ZWIxNjdiZWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3N5bmNzY2FuLmMKQEAgLTUwLDYgKzUwLDcgQEAKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xMTEsNiArMTEyLDE0IEBAIHR5cGVkZWYgc3Ry dWN0IHNzX3NjYW5fbG9jYXRpb25zX3QKICNkZWZpbmUgU2l6ZU9mU2NhbkxvY2F0aW9ucyhOKSBc CiAJKG9mZnNldG9mKHNzX3NjYW5fbG9jYXRpb25zX3QsIGl0ZW1zKSArIChOKSAqIHNpemVvZihz c19scnVfaXRlbV90KSkKIAorc3RhdGljIHZvaWQgU3luY1NjYW5TaG1lbVJlcXVlc3Qodm9pZCAq YXJnKTsKK3N0YXRpYyB2b2lkIFN5bmNTY2FuU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0 IFNobWVtQ2FsbGJhY2tzIFN5bmNTY2FuU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4g PSBTeW5jU2NhblNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFN5bmNTY2FuU2htZW1Jbml0LAor fTsKKwogLyogUG9pbnRlciB0byBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSAqLwogc3RhdGljIHNz X3NjYW5fbG9jYXRpb25zX3QgKnNjYW5fbG9jYXRpb25zOwogCkBAIC0xMjAsNTggKzEyOSw0NyBA QCBzdGF0aWMgQmxvY2tOdW1iZXIgc3Nfc2VhcmNoKFJlbEZpbGVMb2NhdG9yIHJlbGZpbGVsb2Nh dG9yLAogCiAKIC8qCi0gKiBTeW5jU2NhblNobWVtU2l6ZSAtLS0gcmVwb3J0IGFtb3VudCBvZiBz aGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZAorICogU3luY1NjYW5TaG1lbVJlcXVlc3QgLS0tIHJl Z2lzdGVyIHRoaXMgbW9kdWxlJ3Mgc2hhcmVkIG1lbW9yeQogICovCi1TaXplCi1TeW5jU2NhblNo bWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1N5bmNTY2FuU2htZW1SZXF1ZXN0KHZvaWQgKmFy ZykKIHsKLQlyZXR1cm4gU2l6ZU9mU2NhbkxvY2F0aW9ucyhTWU5DX1NDQU5fTkVMRU0pOworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJTeW5jIFNjYW4gTG9jYXRpb25zIExpc3QiLAorCQkJ CQkgICAuc2l6ZSA9IFNpemVPZlNjYW5Mb2NhdGlvbnMoU1lOQ19TQ0FOX05FTEVNKSwKKwkJCQkJ ICAgLnB0ciA9ICh2b2lkICoqKSAmc2Nhbl9sb2NhdGlvbnMsCisJCSk7CiB9CiAKIC8qCiAgKiBT eW5jU2NhblNobWVtSW5pdCAtLS0gaW5pdGlhbGl6ZSB0aGlzIG1vZHVsZSdzIHNoYXJlZCBtZW1v cnkKICAqLwotdm9pZAotU3luY1NjYW5TaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitTeW5j U2NhblNobWVtSW5pdCh2b2lkICphcmcpCiB7CiAJaW50CQkJaTsKLQlib29sCQlmb3VuZDsKIAot CXNjYW5fbG9jYXRpb25zID0gKHNzX3NjYW5fbG9jYXRpb25zX3QgKikKLQkJU2htZW1Jbml0U3Ry dWN0KCJTeW5jIFNjYW4gTG9jYXRpb25zIExpc3QiLAotCQkJCQkJU2l6ZU9mU2NhbkxvY2F0aW9u cyhTWU5DX1NDQU5fTkVMRU0pLAotCQkJCQkJJmZvdW5kKTsKKwlzY2FuX2xvY2F0aW9ucy0+aGVh ZCA9ICZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbMF07CisJc2Nhbl9sb2NhdGlvbnMtPnRhaWwgPSAm c2Nhbl9sb2NhdGlvbnMtPml0ZW1zW1NZTkNfU0NBTl9ORUxFTSAtIDFdOwogCi0JaWYgKCFJc1Vu ZGVyUG9zdG1hc3RlcikKKwlmb3IgKGkgPSAwOyBpIDwgU1lOQ19TQ0FOX05FTEVNOyBpKyspCiAJ ewotCQkvKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgYXJlYSAqLwotCQlBc3NlcnQoIWZvdW5k KTsKLQotCQlzY2FuX2xvY2F0aW9ucy0+aGVhZCA9ICZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbMF07 Ci0JCXNjYW5fbG9jYXRpb25zLT50YWlsID0gJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tTWU5DX1ND QU5fTkVMRU0gLSAxXTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgU1lOQ19TQ0FOX05FTEVNOyBpKysp Ci0JCXsKLQkJCXNzX2xydV9pdGVtX3QgKml0ZW0gPSAmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2ld OwotCi0JCQkvKgotCQkJICogSW5pdGlhbGl6ZSBhbGwgc2xvdHMgd2l0aCBpbnZhbGlkIHZhbHVl cy4gQXMgc2NhbnMgYXJlIHN0YXJ0ZWQsCi0JCQkgKiB0aGVzZSBpbnZhbGlkIGVudHJpZXMgd2ls bCBmYWxsIG9mZiB0aGUgTFJVIGxpc3QgYW5kIGdldAotCQkJICogcmVwbGFjZWQgd2l0aCByZWFs IGVudHJpZXMuCi0JCQkgKi8KLQkJCWl0ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLnNwY09p ZCA9IEludmFsaWRPaWQ7Ci0JCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5kYk9pZCA9 IEludmFsaWRPaWQ7Ci0JCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5yZWxOdW1iZXIg PSBJbnZhbGlkUmVsRmlsZU51bWJlcjsKLQkJCWl0ZW0tPmxvY2F0aW9uLmxvY2F0aW9uID0gSW52 YWxpZEJsb2NrTnVtYmVyOwotCi0JCQlpdGVtLT5wcmV2ID0gKGkgPiAwKSA/Ci0JCQkJKCZzY2Fu X2xvY2F0aW9ucy0+aXRlbXNbaSAtIDFdKSA6IE5VTEw7Ci0JCQlpdGVtLT5uZXh0ID0gKGkgPCBT WU5DX1NDQU5fTkVMRU0gLSAxKSA/Ci0JCQkJKCZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbaSArIDFd KSA6IE5VTEw7Ci0JCX0KKwkJc3NfbHJ1X2l0ZW1fdCAqaXRlbSA9ICZzY2FuX2xvY2F0aW9ucy0+ aXRlbXNbaV07CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSBhbGwgc2xvdHMgd2l0aCBpbnZhbGlk IHZhbHVlcy4gQXMgc2NhbnMgYXJlIHN0YXJ0ZWQsCisJCSAqIHRoZXNlIGludmFsaWQgZW50cmll cyB3aWxsIGZhbGwgb2ZmIHRoZSBMUlUgbGlzdCBhbmQgZ2V0IHJlcGxhY2VkCisJCSAqIHdpdGgg cmVhbCBlbnRyaWVzLgorCQkgKi8KKwkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3Iuc3Bj T2lkID0gSW52YWxpZE9pZDsKKwkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3IuZGJPaWQg PSBJbnZhbGlkT2lkOworCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5yZWxOdW1iZXIg PSBJbnZhbGlkUmVsRmlsZU51bWJlcjsKKwkJaXRlbS0+bG9jYXRpb24ubG9jYXRpb24gPSBJbnZh bGlkQmxvY2tOdW1iZXI7CisKKwkJaXRlbS0+cHJldiA9IChpID4gMCkgPworCQkJKCZzY2FuX2xv Y2F0aW9ucy0+aXRlbXNbaSAtIDFdKSA6IE5VTEw7CisJCWl0ZW0tPm5leHQgPSAoaSA8IFNZTkNf U0NBTl9ORUxFTSAtIDEpID8KKwkJCSgmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2kgKyAxXSkgOiBO VUxMOwogCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMKaW5kZXggNzMyYmM3NTBjOWUuLjAxNGZhYTE2MjJmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi bGliL3F1bmlxdWUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCkBAIC00MTcsNiArNDE4LDEzIEBAIHR5cGVkZWYgc3RydWN0IEJUVmFjSW5mbwog CiBzdGF0aWMgQlRWYWNJbmZvICpidHZhY2luZm87CiAKK3N0YXRpYyB2b2lkIEJUcmVlU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCVHJlZVNobWVtSW5pdCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBCVHJlZVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1 ZXN0X2ZuID0gQlRyZWVTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBCVHJlZVNobWVtSW5pdCwK K307CiAKIC8qCiAgKiBfYnRfdmFjdXVtX2N5Y2xlaWQgLS0tIGdldCB0aGUgYWN0aXZlIHZhY3V1 bSBjeWNsZSBJRCBmb3IgYW4gaW5kZXgsCkBAIC01NTMsNDcgKzU2MSwzNyBAQCBfYnRfZW5kX3Zh Y3V1bV9jYWxsYmFjayhpbnQgY29kZSwgRGF0dW0gYXJnKQogfQogCiAvKgotICogQlRyZWVTaG1l bVNpemUgLS0tIHJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQKKyAq IEJUcmVlU2htZW1SZXF1ZXN0IC0tLSByZWdpc3RlciB0aGlzIG1vZHVsZSdzIHNoYXJlZCBtZW1v cnkKICAqLwotU2l6ZQotQlRyZWVTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitCVHJlZVNo bWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBvZmZzZXRv ZihCVFZhY0luZm8sIHZhY3V1bXMpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShN YXhCYWNrZW5kcywgc2l6ZW9mKEJUT25lVmFjSW5mbykpKTsKLQlyZXR1cm4gc2l6ZTsKKworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCVHJlZSBWYWN1dW0gU3RhdGUiLAorCQkJCQkgICAu c2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJmJ0dmFjaW5mbywKKwkJKTsK IH0KIAogLyoKICAqIEJUcmVlU2htZW1Jbml0IC0tLSBpbml0aWFsaXplIHRoaXMgbW9kdWxlJ3Mg c2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1CVHJlZVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK0JUcmVlU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCWJ0dmFj aW5mbyA9IChCVFZhY0luZm8gKikgU2htZW1Jbml0U3RydWN0KCJCVHJlZSBWYWN1dW0gU3RhdGUi LAotCQkJCQkJCQkJCQkgIEJUcmVlU2htZW1TaXplKCksCi0JCQkJCQkJCQkJCSAgJmZvdW5kKTsK LQotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQkvKiBJbml0aWFsaXplIHNoYXJlZCBt ZW1vcnkgYXJlYSAqLwotCQlBc3NlcnQoIWZvdW5kKTsKLQotCQkvKgotCQkgKiBJdCBkb2Vzbid0 IHJlYWxseSBtYXR0ZXIgd2hhdCB0aGUgY3ljbGUgY291bnRlciBzdGFydHMgYXQsIGJ1dAotCQkg KiBoYXZpbmcgaXQgYWx3YXlzIHN0YXJ0IHRoZSBzYW1lIGRvZXNuJ3Qgc2VlbSBnb29kLiAgU2Vl ZCB3aXRoCi0JCSAqIGxvdy1vcmRlciBiaXRzIG9mIHRpbWUoKSBpbnN0ZWFkLgotCQkgKi8KLQkJ YnR2YWNpbmZvLT5jeWNsZV9jdHIgPSAoQlRDeWNsZUlkKSB0aW1lKE5VTEwpOworCS8qCisJICog SXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoYXQgdGhlIGN5Y2xlIGNvdW50ZXIgc3RhcnRzIGF0 LCBidXQgaGF2aW5nCisJICogaXQgYWx3YXlzIHN0YXJ0IHRoZSBzYW1lIGRvZXNuJ3Qgc2VlbSBn b29kLiAgU2VlZCB3aXRoIGxvdy1vcmRlciBiaXRzCisJICogb2YgdGltZSgpIGluc3RlYWQuCisJ ICovCisJYnR2YWNpbmZvLT5jeWNsZV9jdHIgPSAoQlRDeWNsZUlkKSB0aW1lKE5VTEwpOwogCi0J CWJ0dmFjaW5mby0+bnVtX3ZhY3V1bXMgPSAwOwotCQlidHZhY2luZm8tPm1heF92YWN1dW1zID0g TWF4QmFja2VuZHM7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlidHZhY2luZm8tPm51 bV92YWN1dW1zID0gMDsKKwlidHZhY2luZm8tPm1heF92YWN1dW1zID0gTWF4QmFja2VuZHM7CiB9 CiAKIGJ5dGVhICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3Bo YXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IGFiMWNi ZDY3YmFjLi44MzY5MjgxODBhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5j CkBAIC0xMDIsNiArMTAyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgpAQCAtMTg3LDggKzE4OCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBUd29QaGFzZVN0 YXRlRGF0YQogCUdsb2JhbFRyYW5zYWN0aW9uIHByZXBYYWN0c1tGTEVYSUJMRV9BUlJBWV9NRU1C RVJdOwogfSBUd29QaGFzZVN0YXRlRGF0YTsKIAorc3RhdGljIHZvaWQgVHdvUGhhc2VTaG1lbVJl cXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFR3b1BoYXNlU2htZW1Jbml0KHZvaWQgKmFy Zyk7CisKIHN0YXRpYyBUd29QaGFzZVN0YXRlRGF0YSAqVHdvUGhhc2VTdGF0ZTsKIAorY29uc3Qg U2htZW1DYWxsYmFja3MgVHdvUGhhc2VTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IFR3b1BoYXNlU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gVHdvUGhhc2VTaG1lbUluaXQsCit9 OworCiAvKgogICogR2xvYmFsIHRyYW5zYWN0aW9uIGVudHJ5IGN1cnJlbnRseSBsb2NrZWQgYnkg dXMsIGlmIGFueS4gIE5vdGUgdGhhdCBhbnkKICAqIGFjY2VzcyB0byB0aGUgZW50cnkgcG9pbnRl ZCB0byBieSB0aGlzIHZhcmlhYmxlIG11c3QgYmUgcHJvdGVjdGVkIGJ5CkBAIC0yMzQsMTAgKzI0 MywxMCBAQCBzdGF0aWMgdm9pZCBSZW1vdmVUd29QaGFzZUZpbGUoRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZCwgYm9vbCBnaXZlV2FybmluZyk7CiBzdGF0aWMgdm9pZCBSZWNyZWF0ZVR3b1BoYXNlRmls ZShGdWxsVHJhbnNhY3Rpb25JZCBmeGlkLCB2b2lkICpjb250ZW50LCBpbnQgbGVuKTsKIAogLyoK LSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKKyAqIFJlZ2lzdGVyIHNoYXJlZCBt ZW1vcnkgZm9yIHR3by1waGFzZSBzdGF0ZS4KICAqLwotU2l6ZQotVHdvUGhhc2VTaG1lbVNpemUo dm9pZCkKK3N0YXRpYyB2b2lkCitUd29QaGFzZVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJ U2l6ZQkJc2l6ZTsKIApAQCAtMjQ4LDQ2ICsyNTcsNDAgQEAgVHdvUGhhc2VTaG1lbVNpemUodm9p ZCkKIAlzaXplID0gTUFYQUxJR04oc2l6ZSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9z aXplKG1heF9wcmVwYXJlZF94YWN0cywKIAkJCQkJCQkJICAgc2l6ZW9mKEdsb2JhbFRyYW5zYWN0 aW9uRGF0YSkpKTsKLQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJQcmVwYXJlZCBUcmFuc2FjdGlvbiBUYWJsZSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJ CQkJICAgLnB0ciA9ICh2b2lkICoqKSAmVHdvUGhhc2VTdGF0ZSwKKwkJKTsKIH0KIAotdm9pZAot VHdvUGhhc2VTaG1lbUluaXQodm9pZCkKKy8qCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkg Zm9yIHR3by1waGFzZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK1R3b1BoYXNlU2htZW1Jbml0 KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCVR3b1BoYXNlU3RhdGUgPSBTaG1lbUlu aXRTdHJ1Y3QoIlByZXBhcmVkIFRyYW5zYWN0aW9uIFRhYmxlIiwKLQkJCQkJCQkJCVR3b1BoYXNl U2htZW1TaXplKCksCi0JCQkJCQkJCQkmZm91bmQpOwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIp Ci0JewotCQlHbG9iYWxUcmFuc2FjdGlvbiBneGFjdHM7Ci0JCWludAkJCWk7CisJR2xvYmFsVHJh bnNhY3Rpb24gZ3hhY3RzOworCWludAkJCWk7CiAKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCVR3b1Bo YXNlU3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOwotCQlUd29QaGFzZVN0YXRlLT5udW1QcmVwWGFj dHMgPSAwOworCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOworCVR3b1BoYXNlU3Rh dGUtPm51bVByZXBYYWN0cyA9IDA7CiAKLQkJLyoKLQkJICogSW5pdGlhbGl6ZSB0aGUgbGlua2Vk IGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFuc2FjdGlvbkRhdGEgc3RydWN0cwotCQkgKi8KLQkJZ3hh Y3RzID0gKEdsb2JhbFRyYW5zYWN0aW9uKQotCQkJKChjaGFyICopIFR3b1BoYXNlU3RhdGUgKwot CQkJIE1BWEFMSUdOKG9mZnNldG9mKFR3b1BoYXNlU3RhdGVEYXRhLCBwcmVwWGFjdHMpICsKLQkJ CQkJICBzaXplb2YoR2xvYmFsVHJhbnNhY3Rpb24pICogbWF4X3ByZXBhcmVkX3hhY3RzKSk7Ci0J CWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRfeGFjdHM7IGkrKykKLQkJewotCQkJLyogaW5z ZXJ0IGludG8gbGlua2VkIGxpc3QgKi8KLQkJCWd4YWN0c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0 ZS0+ZnJlZUdYYWN0czsKLQkJCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSAmZ3hhY3RzW2ld OworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUgbGlua2VkIGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFu c2FjdGlvbkRhdGEgc3RydWN0cworCSAqLworCWd4YWN0cyA9IChHbG9iYWxUcmFuc2FjdGlvbikK KwkJKChjaGFyICopIFR3b1BoYXNlU3RhdGUgKworCQkgTUFYQUxJR04ob2Zmc2V0b2YoVHdvUGhh c2VTdGF0ZURhdGEsIHByZXBYYWN0cykgKworCQkJCSAgc2l6ZW9mKEdsb2JhbFRyYW5zYWN0aW9u KSAqIG1heF9wcmVwYXJlZF94YWN0cykpOworCWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRf eGFjdHM7IGkrKykKKwl7CisJCS8qIGluc2VydCBpbnRvIGxpbmtlZCBsaXN0ICovCisJCWd4YWN0 c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0czsKKwkJVHdvUGhhc2VTdGF0ZS0+ ZnJlZUdYYWN0cyA9ICZneGFjdHNbaV07CiAKLQkJCS8qIGFzc29jaWF0ZSBpdCB3aXRoIGEgUEdQ Uk9DIGFzc2lnbmVkIGJ5IFByb2NHbG9iYWxTaG1lbUluaXQgKi8KLQkJCWd4YWN0c1tpXS5wZ3By b2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlByZXBhcmVkWGFjdFByb2NzW2ldKTsKLQkJfQor CQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBQcm9jR2xvYmFsU2ht ZW1Jbml0ICovCisJCWd4YWN0c1tpXS5wZ3Byb2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlBy ZXBhcmVkWGFjdFByb2NzW2ldKTsKIAl9Ci0JZWxzZQotCQlBc3NlcnQoZm91bmQpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDllODk5OWJiYjYxLi5iYmM1NjU1MDli MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVpbml0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgi CiAjaW5jbHVkZSAidXRpbHMvZ3VjX3RhYmxlcy5oIgpAQCAtNTcxLDYgKzU3MiwxNiBAQCB0eXBl ZGVmIGVudW0KIAlXQUxJTlNFUlRfU1BFQ0lBTF9DSEVDS1BPSU5UCiB9IFdhbEluc2VydENsYXNz OwogCitzdGF0aWMgdm9pZCBYTE9HU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCBYTE9HU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBYTE9HU2htZW1BdHRhY2go dm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgWExPR1NobWVtQ2FsbGJhY2tzID0g eworCS5yZXF1ZXN0X2ZuID0gWExPR1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFhMT0dTaG1l bUluaXQsCisJLmF0dGFjaF9mbiA9IFhMT0dTaG1lbUF0dGFjaCwKK307CisKIHN0YXRpYyBYTG9n Q3RsRGF0YSAqWExvZ0N0bCA9IE5VTEw7CiAKIC8qIGEgcHJpdmF0ZSBjb3B5IG9mIFhMb2dDdGwt Pkluc2VydC5XQUxJbnNlcnRMb2NrcywgZm9yIGNvbnZlbmllbmNlICovCkBAIC01NzksNiArNTkw LDcgQEAgc3RhdGljIFdBTEluc2VydExvY2tQYWRkZWQgKldBTEluc2VydExvY2tzID0gTlVMTDsK IC8qCiAgKiBXZSBtYWludGFpbiBhbiBpbWFnZSBvZiBwZ19jb250cm9sIGluIHNoYXJlZCBtZW1v cnkuCiAgKi8KK3N0YXRpYyBDb250cm9sRmlsZURhdGEgKkxvY2FsQ29udHJvbEZpbGUgPSBOVUxM Owogc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUgPSBOVUxMOwogCiAvKgpAQCAt NTI1Nyw3ICs1MjY5LDggQEAgdm9pZAogTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNl dCkKIHsKIAlBc3NlcnQocmVzZXQgfHwgQ29udHJvbEZpbGUgPT0gTlVMTCk7Ci0JQ29udHJvbEZp bGUgPSBwYWxsb2Nfb2JqZWN0KENvbnRyb2xGaWxlRGF0YSk7CisJTG9jYWxDb250cm9sRmlsZSA9 IHBhbGxvY19vYmplY3QoQ29udHJvbEZpbGVEYXRhKTsKKwlDb250cm9sRmlsZSA9IExvY2FsQ29u dHJvbEZpbGU7CiAJUmVhZENvbnRyb2xGaWxlKCk7CiAJU2V0TG9jYWxEYXRhQ2hlY2tzdW1TdGF0 ZShDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uKTsKIH0KQEAgLTUyNzQsMTAgKzUy ODcsMTAgQEAgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCkKIH0KIAogLyoKLSAqIElu aXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhMT0cKKyAqIFJlZ2lzdGVyIHNoYXJl ZCBtZW1vcnkgZm9yIFhMT0cuCiAgKi8KLVNpemUKLVhMT0dTaG1lbVNpemUodm9pZCkKK3N0YXRp YyB2b2lkCitYTE9HU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBA IC01MzE3LDIzICs1MzMwLDI0IEBAIFhMT0dTaG1lbVNpemUodm9pZCkKIAkvKiBhbmQgdGhlIGJ1 ZmZlcnMgdGhlbXNlbHZlcyAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShYTE9H X0JMQ0tTWiwgWExPR2J1ZmZlcnMpKTsKIAotCS8qCi0JICogTm90ZTogd2UgZG9uJ3QgY291bnQg Q29udHJvbEZpbGVEYXRhLCBpdCBjb21lcyBvdXQgb2YgdGhlICJzbG9wIGZhY3RvciIKLQkgKiBh ZGRlZCBieSBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzLiAgVGhpcyBsZXRzIHVzIHVz ZSB0aGlzCi0JICogcm91dGluZSBhZ2FpbiBiZWxvdyB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWxs b2NhdGlvbiBzaXplLgotCSAqLwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIlhMT0cgQ3RsIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZYTG9nQ3RsLAorCQkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJDb250cm9sIEZpbGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihDb250cm9sRmlsZURhdGEp LAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZDb250cm9sRmlsZSwKKwkJKTsKIH0KIAotdm9p ZAotWExPR1NobWVtSW5pdCh2b2lkKQorLyoKKyAqIFhMT0dTaG1lbUluaXQgLSBpbml0aWFsaXpl IHRoZSBYTG9nQ3RsIHNoYXJlZCBtZW1vcnkgYXJlYS4KKyAqLworc3RhdGljIHZvaWQKK1hMT0dT aG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kQ0ZpbGUsCi0JCQkJZm91bmRYTG9n OwogCWNoYXIJICAgKmFsbG9jcHRyOwogCWludAkJCWk7Ci0JQ29udHJvbEZpbGVEYXRhICpsb2Nh bENvbnRyb2xGaWxlOwogCiAjaWZkZWYgV0FMX0RFQlVHCiAKQEAgLTUzNTEsMzYgKzUzNjUsMTcg QEAgWExPR1NobWVtSW5pdCh2b2lkKQogCX0KICNlbmRpZgogCi0KLQlYTG9nQ3RsID0gKFhMb2dD dGxEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiWExPRyBDdGwiLCBYTE9HU2htZW1TaXplKCks ICZmb3VuZFhMb2cpOwotCi0JbG9jYWxDb250cm9sRmlsZSA9IENvbnRyb2xGaWxlOwotCUNvbnRy b2xGaWxlID0gKENvbnRyb2xGaWxlRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNvbnRyb2wg RmlsZSIsIHNpemVvZihDb250cm9sRmlsZURhdGEpLCAmZm91bmRDRmlsZSk7Ci0KLQlpZiAoZm91 bmRDRmlsZSB8fCBmb3VuZFhMb2cpCi0JewotCQkvKiBib3RoIHNob3VsZCBiZSBwcmVzZW50IG9y IG5laXRoZXIgKi8KLQkJQXNzZXJ0KGZvdW5kQ0ZpbGUgJiYgZm91bmRYTG9nKTsKLQotCQkvKiBJ bml0aWFsaXplIGxvY2FsIGNvcHkgb2YgV0FMSW5zZXJ0TG9ja3MgKi8KLQkJV0FMSW5zZXJ0TG9j a3MgPSBYTG9nQ3RsLT5JbnNlcnQuV0FMSW5zZXJ0TG9ja3M7Ci0KLQkJaWYgKGxvY2FsQ29udHJv bEZpbGUpCi0JCQlwZnJlZShsb2NhbENvbnRyb2xGaWxlKTsKLQkJcmV0dXJuOwotCX0KIAltZW1z ZXQoWExvZ0N0bCwgMCwgc2l6ZW9mKFhMb2dDdGxEYXRhKSk7CiAKIAkvKgogCSAqIEFscmVhZHkg aGF2ZSByZWFkIGNvbnRyb2wgZmlsZSBsb2NhbGx5LCB1bmxlc3MgaW4gYm9vdHN0cmFwIG1vZGUu IE1vdmUKIAkgKiBjb250ZW50cyBpbnRvIHNoYXJlZCBtZW1vcnkuCiAJICovCi0JaWYgKGxvY2Fs Q29udHJvbEZpbGUpCisJaWYgKExvY2FsQ29udHJvbEZpbGUpCiAJewotCQltZW1jcHkoQ29udHJv bEZpbGUsIGxvY2FsQ29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKLQkJcGZy ZWUobG9jYWxDb250cm9sRmlsZSk7CisJCW1lbWNweShDb250cm9sRmlsZSwgTG9jYWxDb250cm9s RmlsZSwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCQlwZnJlZShMb2NhbENvbnRyb2xGaWxl KTsKKwkJTG9jYWxDb250cm9sRmlsZSA9IE5VTEw7CiAJfQogCiAJLyoKQEAgLTU0NDIsNiArNTQz NywxNSBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJcGdfYXRvbWljX2luaXRfdTY0KCZYTG9nQ3Rs LT51bmxvZ2dlZExTTiwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQogCisvKgorICogWExPR1NobWVt QXR0YWNoIC0gc2V0IHVwIFdBTEluc2VydExvY2tzIHBvaW50ZXIgYWZ0ZXIgYXR0YWNoaW5nLgor ICovCitzdGF0aWMgdm9pZAorWExPR1NobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlXQUxJbnNl cnRMb2NrcyA9IFhMb2dDdGwtPkluc2VydC5XQUxJbnNlcnRMb2NrczsKK30KKwogLyoKICAqIFRo aXMgZnVuYyBtdXN0IGJlIGNhbGxlZCBPTkNFIG9uIHN5c3RlbSBpbnN0YWxsLiAgSXQgY3JlYXRl cyBwZ19jb250cm9sCiAgKiBhbmQgdGhlIGluaXRpYWwgWExPRyBzZWdtZW50LgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMKaW5kZXggYzIzNWVjYTdjNTEuLjgz YTNmOTdhNTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJl ZmV0Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVy LmMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNs dWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCkBAIC0y MDAsNiArMjAxLDE0IEBAIHN0YXRpYyBMc25SZWFkUXVldWVOZXh0U3RhdHVzIFhMb2dQcmVmZXRj aGVyTmV4dEJsb2NrKHVpbnRwdHJfdCBwZ3NyX3ByaXZhdGUsCiAKIHN0YXRpYyBYTG9nUHJlZmV0 Y2hTdGF0cyAqU2hhcmVkU3RhdHM7CiAKK3N0YXRpYyB2b2lkIFhMb2dQcmVmZXRjaFNobWVtUmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgWExvZ1ByZWZldGNoU2htZW1Jbml0KHZvaWQg KmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFhMb2dQcmVmZXRjaFNobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gWExvZ1ByZWZldGNoU2htZW1SZXF1ZXN0LAorCS5pbml0X2Zu ID0gWExvZ1ByZWZldGNoU2htZW1Jbml0LAorfTsKKwogc3RhdGljIGlubGluZSBMc25SZWFkUXVl dWUgKgogbHJxX2FsbG9jKHVpbnQzMiBtYXhfZGlzdGFuY2UsCiAJCSAgdWludDMyIG1heF9pbmZs aWdodCwKQEAgLTI5MiwxMCArMzAxLDI1IEBAIGxycV9jb21wbGV0ZV9sc24oTHNuUmVhZFF1ZXVl ICpscnEsIFhMb2dSZWNQdHIgbHNuKQogCQlscnFfcHJlZmV0Y2gobHJxKTsKIH0KIAotc2l6ZV90 Ci1YTG9nUHJlZmV0Y2hTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitYTG9nUHJlZmV0Y2hT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJY TG9nUHJlZmV0Y2hTdGF0cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFhMb2dQcmVmZXRjaFN0 YXRzKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmU2hhcmVkU3RhdHMsCisJCSk7Cit9CisK K3N0YXRpYyB2b2lkCitYTG9nUHJlZmV0Y2hTaG1lbUluaXQodm9pZCAqYXJnKQogewotCXJldHVy biBzaXplb2YoWExvZ1ByZWZldGNoU3RhdHMpOworCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVk U3RhdHMtPnJlc2V0X3RpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7CisJcGdfYXRvbWljX2lu aXRfdTY0KCZTaGFyZWRTdGF0cy0+cHJlZmV0Y2gsIDApOworCXBnX2F0b21pY19pbml0X3U2NCgm U2hhcmVkU3RhdHMtPmhpdCwgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+ c2tpcF9pbml0LCAwKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX25l dywgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9mcHcsIDApOwor CXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfcmVwLCAwKTsKIH0KIAogLyoK QEAgLTMxMywyNyArMzM3LDYgQEAgWExvZ1ByZWZldGNoUmVzZXRTdGF0cyh2b2lkKQogCXBnX2F0 b21pY193cml0ZV91NjQoJlNoYXJlZFN0YXRzLT5za2lwX3JlcCwgMCk7CiB9CiAKLXZvaWQKLVhM b2dQcmVmZXRjaFNobWVtSW5pdCh2b2lkKQotewotCWJvb2wJCWZvdW5kOwotCi0JU2hhcmVkU3Rh dHMgPSAoWExvZ1ByZWZldGNoU3RhdHMgKikKLQkJU2htZW1Jbml0U3RydWN0KCJYTG9nUHJlZmV0 Y2hTdGF0cyIsCi0JCQkJCQlzaXplb2YoWExvZ1ByZWZldGNoU3RhdHMpLAotCQkJCQkJJmZvdW5k KTsKLQotCWlmICghZm91bmQpCi0JewotCQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRz LT5yZXNldF90aW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCkpOwotCQlwZ19hdG9taWNfaW5pdF91 NjQoJlNoYXJlZFN0YXRzLT5wcmVmZXRjaCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hh cmVkU3RhdHMtPmhpdCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNr aXBfaW5pdCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfbmV3 LCAwKTsKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9mcHcsIDApOwot CQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX3JlcCwgMCk7Ci0JfQotfQog CiAvKgogICogQ2FsbGVkIHdoZW4gYW55IEdVQyBpcyBjaGFuZ2VkIHRoYXQgYWZmZWN0cyBwcmVm ZXRjaGluZy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXgg ZmQxYzM2ZDA2MWQuLmMyMzZlMmI3OTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWdu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxz L2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0 aWxzL2d1Y19ob29rcy5oIgpAQCAtMzA3LDYgKzMwOCwxNCBAQCBzdGF0aWMgY2hhciAqcHJpbWFy eV9pbWFnZV9tYXNrZWQgPSBOVUxMOwogCiBYTG9nUmVjb3ZlcnlDdGxEYXRhICpYTG9nUmVjb3Zl cnlDdGwgPSBOVUxMOwogCitzdGF0aWMgdm9pZCBYTG9nUmVjb3ZlcnlTaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBYTG9nUmVjb3ZlcnlTaG1lbUNhbGxiYWNrcyA9IHsKKwku cmVxdWVzdF9mbiA9IFhMb2dSZWNvdmVyeVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFhMb2dS ZWNvdmVyeVNobWVtSW5pdCwKK307CisKIC8qCiAgKiBhYm9ydGVkUmVjUHRyIGlzIHRoZSBzdGFy dCBwb2ludGVyIG9mIGEgYnJva2VuIHJlY29yZCBhdCBlbmQgb2YgV0FMIHdoZW4KICAqIHJlY292 ZXJ5IGNvbXBsZXRlczsgbWlzc2luZ0NvbnRyZWNQdHIgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBm aXJzdApAQCAtMzg1LDI4ICszOTQsMjAgQEAgc3RhdGljIHZvaWQgU2V0Q3VycmVudENodW5rU3Rh cnRUaW1lKFRpbWVzdGFtcFR6IHh0aW1lKTsKIHN0YXRpYyB2b2lkIFNldExhdGVzdFhUaW1lKFRp bWVzdGFtcFR6IHh0aW1lKTsKIAogLyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1v cnkgZm9yIFdBTCByZWNvdmVyeQorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3IgV0FMIHJl Y292ZXJ5CiAgKi8KLVNpemUKLVhMb2dSZWNvdmVyeVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZv aWQKK1hMb2dSZWNvdmVyeVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZTsK LQotCS8qIFhMb2dSZWNvdmVyeUN0bCAqLwotCXNpemUgPSBzaXplb2YoWExvZ1JlY292ZXJ5Q3Rs RGF0YSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiWExP RyBSZWNvdmVyeSBDdGwiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihYTG9nUmVjb3ZlcnlDdGxE YXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmWExvZ1JlY292ZXJ5Q3RsLAorCQkpOwog fQogCi12b2lkCi1YTG9nUmVjb3ZlcnlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitYTG9n UmVjb3ZlcnlTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JWExvZ1Jl Y292ZXJ5Q3RsID0gKFhMb2dSZWNvdmVyeUN0bERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJY TE9HIFJlY292ZXJ5IEN0bCIsIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSgpLCAmZm91bmQpOwotCWlm IChmb3VuZCkKLQkJcmV0dXJuOwogCW1lbXNldChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNpemVvZihY TG9nUmVjb3ZlcnlDdGxEYXRhKSk7CiAKIAlTcGluTG9ja0luaXQoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dh aXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKaW5kZXggYmY0NjMw Njc3YjQuLjJlMzFjMGQ2N2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nd2FpdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMK QEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNs dWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCkBAIC02OCw2 ICs2OSwxNCBAQCBzdGF0aWMgaW50CXdhaXRsc25fY21wKGNvbnN0IHBhaXJpbmdoZWFwX25vZGUg KmEsIGNvbnN0IHBhaXJpbmdoZWFwX25vZGUgKmIsCiAKIHN0cnVjdCBXYWl0TFNOU3RhdGUgKndh aXRMU05TdGF0ZSA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFdhaXRMU05TaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdhaXRMU05TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29u c3QgU2htZW1DYWxsYmFja3MgV2FpdExTTlNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2Zu ID0gV2FpdExTTlNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFdhaXRMU05TaG1lbUluaXQsCit9 OworCiAvKgogICogV2FpdCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdh aXRMYXRjaCgpIHRvIHJlcG9ydAogICogdGhlIHdhaXQgaW4gcGdfc3RhdF9hY3Rpdml0eS4KQEAg LTEwOSw0MSArMTE4LDM0IEBAIEdldEN1cnJlbnRMU05Gb3JXYWl0VHlwZShXYWl0TFNOVHlwZSBs c25UeXBlKQogCXBnX3VucmVhY2hhYmxlKCk7CiB9CiAKLS8qIFJlcG9ydCB0aGUgYW1vdW50IG9m IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBXYWl0TFNOU3RhdGUuICovCi1TaXplCi1X YWl0TFNOU2htZW1TaXplKHZvaWQpCisvKiBSZWdpc3RlciB0aGUgc2hhcmVkIG1lbW9yeSBzcGFj ZSBuZWVkZWQgZm9yIFdhaXRMU05TdGF0ZS4gKi8KK3N0YXRpYyB2b2lkCitXYWl0TFNOU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG9mZnNldG9mKFdh aXRMU05TdGF0ZSwgcHJvY0luZm9zKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUo TWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTLCBzaXplb2YoV2FpdExTTlByb2NJbmZv KSkpOwotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWl0TFNO U3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JndhaXRMU05TdGF0ZSwKKwkJKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgV2FpdExTTlN0YXRl IGluIHRoZSBzaGFyZWQgbWVtb3J5LiAqLwotdm9pZAotV2FpdExTTlNobWVtSW5pdCh2b2lkKQor c3RhdGljIHZvaWQKK1dhaXRMU05TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwotCi0Jd2FpdExTTlN0YXRlID0gKFdhaXRMU05TdGF0ZSAqKSBTaG1lbUluaXRTdHJ1Y3QoIldh aXRMU05TdGF0ZSIsCi0JCQkJCQkJCQkJCQkJV2FpdExTTlNobWVtU2l6ZSgpLAotCQkJCQkJCQkJ CQkJCSZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIGhlYXBzIGFuZCB0cmFj a2luZyAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgV0FJVF9MU05fVFlQRV9DT1VOVDsgaSsrKQog CXsKLQkJaW50CQkJaTsKLQotCQkvKiBJbml0aWFsaXplIGhlYXBzIGFuZCB0cmFja2luZyAqLwot CQlmb3IgKGkgPSAwOyBpIDwgV0FJVF9MU05fVFlQRV9DT1VOVDsgaSsrKQotCQl7Ci0JCQlwZ19h dG9taWNfaW5pdF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOW2ldLCBQR19VSU5UNjRf TUFYKTsKLQkJCXBhaXJpbmdoZWFwX2luaXRpYWxpemUoJndhaXRMU05TdGF0ZS0+d2FpdGVyc0hl YXBbaV0sIHdhaXRsc25fY21wLCBOVUxMKTsKLQkJfQotCi0JCS8qIEluaXRpYWxpemUgcHJvY2Vz cyBpbmZvIGFycmF5ICovCi0JCW1lbXNldCgmd2FpdExTTlN0YXRlLT5wcm9jSW5mb3MsIDAsCi0J CQkgICAoTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSAqIHNpemVvZihXYWl0TFNO UHJvY0luZm8pKTsKKwkJcGdfYXRvbWljX2luaXRfdTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRl ZExTTltpXSwgUEdfVUlOVDY0X01BWCk7CisJCXBhaXJpbmdoZWFwX2luaXRpYWxpemUoJndhaXRM U05TdGF0ZS0+d2FpdGVyc0hlYXBbaV0sIHdhaXRsc25fY21wLCBOVUxMKTsKIAl9CisKKwkvKiBJ bml0aWFsaXplIHByb2Nlc3MgaW5mbyBhcnJheSAqLworCW1lbXNldCgmd2FpdExTTlN0YXRlLT5w cm9jSW5mb3MsIDAsCisJCSAgIChNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpICog c2l6ZW9mKFdhaXRMU05Qcm9jSW5mbykpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uYwppbmRleCA4NDAwZTY3MjJjYy4uMjUwYzQzYjg1ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCkBAIC05OCw2ICs5OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z bWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90 Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgpAQCAtMzA5LDYgKzMxMCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0 aWMgQXV0b1ZhY3V1bVNobWVtU3RydWN0ICpBdXRvVmFjdXVtU2htZW07CiAKK3N0YXRpYyB2b2lk IEF1dG9WYWN1dW1TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEF1dG9WYWN1 dW1TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQXV0b1ZhY3V1 bVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQXV0b1ZhY3V1bVNobWVtUmVxdWVz dCwKKwkuaW5pdF9mbiA9IEF1dG9WYWN1dW1TaG1lbUluaXQsCit9OworCiAvKgogICogdGhlIGRh dGFiYXNlIGxpc3QgKG9mIGF2bF9kYmFzZSBlbGVtZW50cykgaW4gdGhlIGxhdW5jaGVyLCBhbmQg dGhlIGNvbnRleHQKICAqIHRoYXQgY29udGFpbnMgaXQKQEAgLTM1NDUsMTEgKzM1NTQsMTEgQEAg YXV0b3ZhY19pbml0KHZvaWQpCiB9CiAKIC8qCi0gKiBBdXRvVmFjdXVtU2htZW1TaXplCi0gKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVtb3J5 CisgKiBBdXRvVmFjdXVtU2htZW1SZXF1ZXN0CisgKgkJUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBz cGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0KICAqLwotU2l6ZQotQXV0b1ZhY3V1bVNobWVtU2l6 ZSh2b2lkKQorc3RhdGljIHZvaWQKK0F1dG9WYWN1dW1TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQog ewogCVNpemUJCXNpemU7CiAKQEAgLTM1NjAsNTMgKzM1NjksNDEgQEAgQXV0b1ZhY3V1bVNobWVt U2l6ZSh2b2lkKQogCXNpemUgPSBNQVhBTElHTihzaXplKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgbXVsX3NpemUoYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHMsCiAJCQkJCQkJCSAgIHNpemVvZihX b3JrZXJJbmZvRGF0YSkpKTsKLQlyZXR1cm4gc2l6ZTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJBdXRvVmFjdXVtIERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJkF1dG9WYWN1dW1TaG1lbSwKKwkJKTsKIH0KIAogLyoKICAqIEF1 dG9WYWN1dW1TaG1lbUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhdXRvdmFjdXVt LXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQorICoJCUluaXRpYWxpemUgYXV0b3ZhY3V1bS1yZWxhdGVk IHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK0F1dG9WYWN1dW1TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwotCi0JQXV0b1ZhY3V1bVNobWVtID0gKEF1dG9WYWN1dW1TaG1lbVN0cnVjdCAqKQotCQlTaG1l bUluaXRTdHJ1Y3QoIkF1dG9WYWN1dW0gRGF0YSIsCi0JCQkJCQlBdXRvVmFjdXVtU2htZW1TaXpl KCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCVdv cmtlckluZm8Jd29ya2VyOwotCQlpbnQJCQlpOworCVdvcmtlckluZm8Jd29ya2VyOwogCi0JCUFz c2VydCghZm91bmQpOwotCi0JCUF1dG9WYWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQgPSAwOwot CQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vycyk7Ci0JCWRsaXN0 X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmluZ1dvcmtlcnMpOwotCQlBdXRvVmFjdXVt U2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKLQkJbWVtc2V0KEF1dG9WYWN1dW1TaG1l bS0+YXZfd29ya0l0ZW1zLCAwLAotCQkJICAgc2l6ZW9mKEF1dG9WYWN1dW1Xb3JrSXRlbSkgKiBO VU1fV09SS0lURU1TKTsKLQotCQl3b3JrZXIgPSAoV29ya2VySW5mbykgKChjaGFyICopIEF1dG9W YWN1dW1TaG1lbSArCi0JCQkJCQkJICAgTUFYQUxJR04oc2l6ZW9mKEF1dG9WYWN1dW1TaG1lbVN0 cnVjdCkpKTsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBXb3JrZXJJbmZvIGZyZWUgbGlzdCAqLwot CQlmb3IgKGkgPSAwOyBpIDwgYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHM7IGkrKykKLQkJewotCQkJ ZGNsaXN0X3B1c2hfaGVhZCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2VycywKLQkJCQkJ CQkgJndvcmtlcltpXS53aV9saW5rcyk7Ci0JCQlwZ19hdG9taWNfaW5pdF9mbGFnKCZ3b3JrZXJb aV0ud2lfZG9iYWxhbmNlKTsKLQkJfQorCUF1dG9WYWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQg PSAwOworCWRjbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzKTsKKwlk bGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKTsKKwlBdXRvVmFj dXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKKwltZW1zZXQoQXV0b1ZhY3V1bVNo bWVtLT5hdl93b3JrSXRlbXMsIDAsCisJCSAgIHNpemVvZihBdXRvVmFjdXVtV29ya0l0ZW0pICog TlVNX1dPUktJVEVNUyk7CiAKLQkJcGdfYXRvbWljX2luaXRfdTMyKCZBdXRvVmFjdXVtU2htZW0t PmF2X253b3JrZXJzRm9yQmFsYW5jZSwgMCk7CisJd29ya2VyID0gKFdvcmtlckluZm8pICgoY2hh ciAqKSBBdXRvVmFjdXVtU2htZW0gKworCQkJCQkJICAgTUFYQUxJR04oc2l6ZW9mKEF1dG9WYWN1 dW1TaG1lbVN0cnVjdCkpKTsKIAorCS8qIGluaXRpYWxpemUgdGhlIFdvcmtlckluZm8gZnJlZSBs aXN0ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBhdXRvdmFjdXVtX3dvcmtlcl9zbG90czsgaSsr KQorCXsKKwkJZGNsaXN0X3B1c2hfaGVhZCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vy cywKKwkJCQkJCSAmd29ya2VyW2ldLndpX2xpbmtzKTsKKwkJcGdfYXRvbWljX2luaXRfZmxhZygm d29ya2VyW2ldLndpX2RvYmFsYW5jZSk7CiAJfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwor CXBnX2F0b21pY19pbml0X3UzMigmQXV0b1ZhY3V1bVNobWVtLT5hdl9ud29ya2Vyc0ZvckJhbGFu Y2UsIDApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDUzNmFmZjdj YTA1Li4wOTkyYjliNjM1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMzAsNiAr MzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRl ICJ1dGlscy9hc2NpaS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMTAsNiAr MTExLDE0IEBAIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VySGFuZGxlCiAKIHN0YXRpYyBCYWNrZ3Jv dW5kV29ya2VyQXJyYXkgKkJhY2tncm91bmRXb3JrZXJEYXRhOwogCitzdGF0aWMgdm9pZCBCYWNr Z3JvdW5kV29ya2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZ3Jv dW5kV29ya2VyU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEJh Y2tncm91bmRXb3JrZXJTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IEJhY2tncm91 bmRXb3JrZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBCYWNrZ3JvdW5kV29ya2VyU2htZW1J bml0LAorfTsKKwogLyoKICAqIExpc3Qgb2YgaW50ZXJuYWwgYmFja2dyb3VuZCB3b3JrZXIgZW50 cnkgcG9pbnRzLiAgV2UgbmVlZCB0aGlzIGZvcgogICogcmVhc29ucyBleHBsYWluZWQgaW4gTG9v a3VwQmFja2dyb3VuZFdvcmtlckZ1bmN0aW9uKCksIGJlbG93LgpAQCAtMTYwLDEwICsxNjksMTAg QEAgc3RhdGljIGJnd29ya2VyX21haW5fdHlwZSBMb29rdXBCYWNrZ3JvdW5kV29ya2VyRnVuY3Rp b24oY29uc3QgY2hhciAqbGlicmFyeW5hbWUKIAogCiAvKgotICogQ2FsY3VsYXRlIHNoYXJlZCBt ZW1vcnkgbmVlZGVkLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkZWQgZm9yIGJhY2tn cm91bmQgd29ya2Vycy4KICAqLwotU2l6ZQotQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK0JhY2tncm91bmRXb3JrZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQog ewogCVNpemUJCXNpemU7CiAKQEAgLTE3MSw2NiArMTgwLDU4IEBAIEJhY2tncm91bmRXb3JrZXJT aG1lbVNpemUodm9pZCkKIAlzaXplID0gb2Zmc2V0b2YoQmFja2dyb3VuZFdvcmtlckFycmF5LCBz bG90KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobWF4X3dvcmtlcl9wcm9jZXNz ZXMsCiAJCQkJCQkJCSAgIHNpemVvZihCYWNrZ3JvdW5kV29ya2VyU2xvdCkpKTsKLQotCXJldHVy biBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZ3JvdW5kIFdvcmtlciBE YXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZC YWNrZ3JvdW5kV29ya2VyRGF0YSwKKwkJKTsKIH0KIAogLyoKLSAqIEluaXRpYWxpemUgc2hhcmVk IG1lbW9yeS4KKyAqIEluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBmb3IgYmFja2dyb3VuZCB3b3Jr ZXJzLgogICovCi12b2lkCi1CYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQpCitzdGF0aWMg dm9pZAorQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0KLQlCYWNrZ3JvdW5kV29ya2VyRGF0YSA9IFNobWVtSW5pdFN0cnVjdCgiQmFja2dyb3Vu ZCBXb3JrZXIgRGF0YSIsCi0JCQkJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSgp LAotCQkJCQkJCQkJCSAgICZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0J CWRsaXN0X2l0ZXIJaXRlcjsKLQkJaW50CQkJc2xvdG5vID0gMDsKKwlkbGlzdF9pdGVyCWl0ZXI7 CisJaW50CQkJc2xvdG5vID0gMDsKIAotCQlCYWNrZ3JvdW5kV29ya2VyRGF0YS0+dG90YWxfc2xv dHMgPSBtYXhfd29ya2VyX3Byb2Nlc3NlczsKLQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFs bGVsX3JlZ2lzdGVyX2NvdW50ID0gMDsKLQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVs X3Rlcm1pbmF0ZV9jb3VudCA9IDA7CisJQmFja2dyb3VuZFdvcmtlckRhdGEtPnRvdGFsX3Nsb3Rz ID0gbWF4X3dvcmtlcl9wcm9jZXNzZXM7CisJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVs X3JlZ2lzdGVyX2NvdW50ID0gMDsKKwlCYWNrZ3JvdW5kV29ya2VyRGF0YS0+cGFyYWxsZWxfdGVy bWluYXRlX2NvdW50ID0gMDsKIAotCQkvKgotCQkgKiBDb3B5IGNvbnRlbnRzIG9mIHdvcmtlciBs aXN0IGludG8gc2hhcmVkIG1lbW9yeS4gIFJlY29yZCB0aGUgc2hhcmVkCi0JCSAqIG1lbW9yeSBz bG90IGFzc2lnbmVkIHRvIGVhY2ggd29ya2VyLiAgVGhpcyBlbnN1cmVzIGEgMS10by0xCi0JCSAq IGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlIHBvc3RtYXN0ZXIncyBwcml2YXRlIGxpc3QgYW5k IHRoZSBhcnJheQotCQkgKiBpbiBzaGFyZWQgbWVtb3J5LgotCQkgKi8KLQkJZGxpc3RfZm9yZWFj aChpdGVyLCAmQmFja2dyb3VuZFdvcmtlckxpc3QpCi0JCXsKLQkJCUJhY2tncm91bmRXb3JrZXJT bG90ICpzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3Nsb3Rub107Ci0JCQlSZWdp c3RlcmVkQmdXb3JrZXIgKnJ3OworCS8qCisJICogQ29weSBjb250ZW50cyBvZiB3b3JrZXIgbGlz dCBpbnRvIHNoYXJlZCBtZW1vcnkuICBSZWNvcmQgdGhlIHNoYXJlZAorCSAqIG1lbW9yeSBzbG90 IGFzc2lnbmVkIHRvIGVhY2ggd29ya2VyLiAgVGhpcyBlbnN1cmVzIGEgMS10by0xCisJICogY29y cmVzcG9uZGVuY2UgYmV0d2VlbiB0aGUgcG9zdG1hc3RlcidzIHByaXZhdGUgbGlzdCBhbmQgdGhl IGFycmF5IGluCisJICogc2hhcmVkIG1lbW9yeS4KKwkgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIs ICZCYWNrZ3JvdW5kV29ya2VyTGlzdCkKKwl7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90 ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3Nsb3Rub107CisJCVJlZ2lzdGVyZWRCZ1dv cmtlciAqcnc7CiAKLQkJCXJ3ID0gZGxpc3RfY29udGFpbmVyKFJlZ2lzdGVyZWRCZ1dvcmtlciwg cndfbG5vZGUsIGl0ZXIuY3VyKTsKLQkJCUFzc2VydChzbG90bm8gPCBtYXhfd29ya2VyX3Byb2Nl c3Nlcyk7Ci0JCQlzbG90LT5pbl91c2UgPSB0cnVlOwotCQkJc2xvdC0+dGVybWluYXRlID0gZmFs c2U7Ci0JCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOwotCQkJc2xvdC0+Z2VuZXJhdGlvbiA9IDA7 Ci0JCQlydy0+cndfc2htZW1fc2xvdCA9IHNsb3RubzsKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25v dGlmeV9waWQgPSAwOwkvKiBtaWdodCBiZSByZWluaXQgYWZ0ZXIgY3Jhc2ggKi8KLQkJCW1lbWNw eSgmc2xvdC0+d29ya2VyLCAmcnctPnJ3X3dvcmtlciwgc2l6ZW9mKEJhY2tncm91bmRXb3JrZXIp KTsKLQkJCSsrc2xvdG5vOwotCQl9CisJCXJ3ID0gZGxpc3RfY29udGFpbmVyKFJlZ2lzdGVyZWRC Z1dvcmtlciwgcndfbG5vZGUsIGl0ZXIuY3VyKTsKKwkJQXNzZXJ0KHNsb3RubyA8IG1heF93b3Jr ZXJfcHJvY2Vzc2VzKTsKKwkJc2xvdC0+aW5fdXNlID0gdHJ1ZTsKKwkJc2xvdC0+dGVybWluYXRl ID0gZmFsc2U7CisJCXNsb3QtPnBpZCA9IEludmFsaWRQaWQ7CisJCXNsb3QtPmdlbmVyYXRpb24g PSAwOworCQlydy0+cndfc2htZW1fc2xvdCA9IHNsb3RubzsKKwkJcnctPnJ3X3dvcmtlci5iZ3df bm90aWZ5X3BpZCA9IDA7CS8qIG1pZ2h0IGJlIHJlaW5pdCBhZnRlciBjcmFzaCAqLworCQltZW1j cHkoJnNsb3QtPndvcmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29ya2Vy KSk7CisJCSsrc2xvdG5vOworCX0KIAotCQkvKgotCQkgKiBNYXJrIGFueSByZW1haW5pbmcgc2xv dHMgYXMgbm90IGluIHVzZS4KLQkJICovCi0JCXdoaWxlIChzbG90bm8gPCBtYXhfd29ya2VyX3By b2Nlc3NlcykKLQkJewotCQkJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3QgPSAmQmFja2dyb3Vu ZFdvcmtlckRhdGEtPnNsb3Rbc2xvdG5vXTsKKwkvKgorCSAqIE1hcmsgYW55IHJlbWFpbmluZyBz bG90cyBhcyBub3QgaW4gdXNlLgorCSAqLworCXdoaWxlIChzbG90bm8gPCBtYXhfd29ya2VyX3By b2Nlc3NlcykKKwl7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90ID0gJkJhY2tncm91bmRX b3JrZXJEYXRhLT5zbG90W3Nsb3Rub107CiAKLQkJCXNsb3QtPmluX3VzZSA9IGZhbHNlOwotCQkJ KytzbG90bm87Ci0JCX0KKwkJc2xvdC0+aW5fdXNlID0gZmFsc2U7CisJCSsrc2xvdG5vOwogCX0K LQllbHNlCi0JCUFzc2VydChmb3VuZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVj a3BvaW50ZXIuYwppbmRleCAzYzk4MmM2ZmZhYy4uNmI0MjRlZTYxMGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NwaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgpAQCAtMTQzLDYgKzE0NCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0aWMgQ2hlY2tw b2ludGVyU2htZW1TdHJ1Y3QgKkNoZWNrcG9pbnRlclNobWVtOwogCitzdGF0aWMgdm9pZCBDaGVj a3BvaW50ZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIENoZWNrcG9pbnRl clNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBDaGVja3BvaW50 ZXJTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IENoZWNrcG9pbnRlclNobWVtUmVx dWVzdCwKKwkuaW5pdF9mbiA9IENoZWNrcG9pbnRlclNobWVtSW5pdCwKK307CisKIC8qIGludGVy dmFsIGZvciBjYWxsaW5nIEFic29yYlN5bmNSZXF1ZXN0cyBpbiBDaGVja3BvaW50V3JpdGVEZWxh eSAqLwogI2RlZmluZSBXUklURVNfUEVSX0FCU09SQgkJMTAwMAogCkBAIC05NTAsMTEgKzk1OSwx MSBAQCBSZXFTaHV0ZG93blhMT0coU0lHTkFMX0FSR1MpCiAgKi8KIAogLyoKLSAqIENoZWNrcG9p bnRlclNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBjaGVja3BvaW50ZXIt cmVsYXRlZCBzaGFyZWQgbWVtb3J5CisgKiBDaGVja3BvaW50ZXJTaG1lbVJlcXVlc3QKKyAqCQlS ZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgY2hlY2twb2ludGVyCiAgKi8K LVNpemUKLUNoZWNrcG9pbnRlclNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0NoZWNrcG9p bnRlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtOTY3LDM5 ICs5NzYsMjQgQEAgQ2hlY2twb2ludGVyU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKE1pbihOQnVmZmVycywKIAkJCQkJCQkJCSAgIE1BWF9DSEVDS1BPSU5U X1JFUVVFU1RTKSwKIAkJCQkJCQkJICAgc2l6ZW9mKENoZWNrcG9pbnRlclJlcXVlc3QpKSk7Ci0K LQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQ2hlY2twb2ludGVy IERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JkNoZWNrcG9pbnRlclNobWVtLAorCQkpOwogfQogCiAvKgogICogQ2hlY2twb2ludGVyU2htZW1J bml0Ci0gKgkJQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgY2hlY2twb2ludGVyLXJlbGF0ZWQgc2hh cmVkIG1lbW9yeQorICoJCUluaXRpYWxpemUgY2hlY2twb2ludGVyLXJlbGF0ZWQgc2hhcmVkIG1l bW9yeQogICovCi12b2lkCi1DaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lk CitDaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSBDaGVj a3BvaW50ZXJTaG1lbVNpemUoKTsKLQlib29sCQlmb3VuZDsKLQotCUNoZWNrcG9pbnRlclNobWVt ID0gKENoZWNrcG9pbnRlclNobWVtU3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQ2hlY2tw b2ludGVyIERhdGEiLAotCQkJCQkJc2l6ZSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5k KQotCXsKLQkJLyoKLQkJICogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplLiAgTm90 ZSB0aGF0IHdlIHplcm8gdGhlIHdob2xlCi0JCSAqIHJlcXVlc3RzIGFycmF5OyB0aGlzIGlzIHNv IHRoYXQgQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSBjYW4KLQkJICogYXNzdW1lIHRo YXQgYW55IHBhZCBieXRlcyBpbiB0aGUgcmVxdWVzdCBzdHJ1Y3RzIGFyZSB6ZXJvZXMuCi0JCSAq LwotCQlNZW1TZXQoQ2hlY2twb2ludGVyU2htZW0sIDAsIHNpemUpOwotCQlTcGluTG9ja0luaXQo JkNoZWNrcG9pbnRlclNobWVtLT5ja3B0X2xjayk7Ci0JCUNoZWNrcG9pbnRlclNobWVtLT5tYXhf cmVxdWVzdHMgPSBNaW4oTkJ1ZmZlcnMsIE1BWF9DSEVDS1BPSU5UX1JFUVVFU1RTKTsKLQkJQ2hl Y2twb2ludGVyU2htZW0tPmhlYWQgPSBDaGVja3BvaW50ZXJTaG1lbS0+dGFpbCA9IDA7Ci0JCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPnN0YXJ0X2N2KTsKLQkJQ29u ZGl0aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+ZG9uZV9jdik7Ci0JfQorCVNw aW5Mb2NrSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPmNrcHRfbGNrKTsKKwlDaGVja3BvaW50ZXJT aG1lbS0+bWF4X3JlcXVlc3RzID0gTWluKE5CdWZmZXJzLCBNQVhfQ0hFQ0tQT0lOVF9SRVFVRVNU Uyk7CisJQ2hlY2twb2ludGVyU2htZW0tPmhlYWQgPSBDaGVja3BvaW50ZXJTaG1lbS0+dGFpbCA9 IDA7CisJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+c3RhcnRfY3Yp OworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPmRvbmVfY3YpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1f c3RhdGUuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKaW5k ZXggNzYwMDRiY2VkYzYuLmViN2IwMWQwOTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv ZGF0YWNoZWNrc3VtX3N0YXRlLmMKQEAgLTIxMSw2ICsyMTEsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdyb2lkcy5oIgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHN0YXRpYyB2b2xhdGlsZSBz aWdfYXRvbWljX3QgbGF1bmNoZXJfcnVubmluZyA9IGZhbHNlOwogc3RhdGljIERhdGFDaGVja3N1 bXNXb3JrZXJPcGVyYXRpb24gb3BlcmF0aW9uOwogCiAvKiBQcm90b3R5cGVzICovCitzdGF0aWMg dm9pZCBEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CiBzdGF0aWMgYm9vbCBE YXRhYmFzZUV4aXN0cyhPaWQgZGJvaWQpOwogc3RhdGljIExpc3QgKkJ1aWxkRGF0YWJhc2VMaXN0 KHZvaWQpOwogc3RhdGljIExpc3QgKkJ1aWxkUmVsYXRpb25MaXN0KGJvb2wgdGVtcF9yZWxhdGlv bnMsIGJvb2wgaW5jbHVkZV9zaGFyZWQpOwpAQCAtMzU2LDYgKzM1OCwxMCBAQCBzdGF0aWMgYm9v bCBQcm9jZXNzU2luZ2xlUmVsYXRpb25Gb3JrKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9y a051bSwgQnVmZmVyQQogc3RhdGljIHZvaWQgbGF1bmNoZXJfY2FuY2VsX2hhbmRsZXIoU0lHTkFM X0FSR1MpOwogc3RhdGljIHZvaWQgV2FpdEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKHZvaWQp OwogCitjb25zdCBTaG1lbUNhbGxiYWNrcyBEYXRhQ2hlY2tzdW1zU2htZW1DYWxsYmFja3MgPSB7 CisJLnJlcXVlc3RfZm4gPSBEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0LAorfTsKKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKiBGdW5jdGlvbmFsaXR5IGZvciBtYW5pcHVsYXRpbmcgdGhlIGRh dGEgY2hlY2tzdW0gc3RhdGUgaW4gdGhlIGNsdXN0ZXIKICAqLwpAQCAtMTIzNiwzNSArMTI0Miwx NiBAQCBQcm9jZXNzQWxsRGF0YWJhc2VzKHZvaWQpCiB9CiAKIC8qCi0gKiBEYXRhQ2hlY2tzdW1T dGF0ZVNpemUKLSAqCQlDb21wdXRlIHJlcXVpcmVkIHNwYWNlIGZvciBkYXRhY2hlY2tzdW1zd29y a2VyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQotICovCi1TaXplCi1EYXRhQ2hlY2tzdW1zU2htZW1T aXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZTsKLQotCXNpemUgPSBzaXplb2YoRGF0YUNoZWNrc3Vt c1N0YXRlU3RydWN0KTsKLQlzaXplID0gTUFYQUxJR04oc2l6ZSk7Ci0KLQlyZXR1cm4gc2l6ZTsK LX0KLQotLyoKLSAqIERhdGFDaGVja3N1bVN0YXRlSW5pdAotICoJCUFsbG9jYXRlIGFuZCBpbml0 aWFsaXplIGRhdGFjaGVja3N1bXN3b3JrZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5CisgKiBEYXRh Q2hlY2tzdW1TaG1lbVJlcXVlc3QKKyAqCQlSZXF1ZXN0IGRhdGFjaGVja3N1bXN3b3JrZXItcmVs YXRlZCBzaGFyZWQgbWVtb3J5CiAgKi8KLXZvaWQKLURhdGFDaGVja3N1bXNTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZDsKLQotCURhdGFDaGVja3N1bVN0YXRlID0gKERhdGFDaGVja3N1bXNTdGF0 ZVN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkRhdGFDaGVja3N1bXNXb3JrZXIgRGF0YSIs Ci0JCQkJCQlEYXRhQ2hlY2tzdW1zU2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCWlmICgh Zm91bmQpCi0JCU1lbVNldChEYXRhQ2hlY2tzdW1TdGF0ZSwgMCwgRGF0YUNoZWNrc3Vtc1NobWVt U2l6ZSgpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiRGF0YUNoZWNrc3Vtc1dvcmtl ciBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoRGF0YUNoZWNrc3Vtc1N0YXRlU3RydWN0 KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmRGF0YUNoZWNrc3VtU3RhdGUsCisJCSk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCBmYTRiZGZlOWFiOS4uMGExYTExNDlk NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgpAQCAtMTU0LDMzICsxNTUsMzEgQEAgc3RhdGljIGludAly ZWFkeV9maWxlX2NvbXBhcmF0b3IoRGF0dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIExvYWRBcmNoaXZlTGlicmFyeSh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnYXJjaF9jYWxs X21vZHVsZV9zaHV0ZG93bl9jYihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIAotLyogUmVwb3J0IHNo YXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFBnQXJjaFNobWVtSW5pdCAqLwotU2l6ZQotUGdB cmNoU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7CitzdGF0aWMgdm9pZCBQZ0Fy Y2hTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFBnQXJjaFNobWVtSW5pdCh2 b2lkICphcmcpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihQZ0FyY2hEYXRhKSk7 Citjb25zdCBTaG1lbUNhbGxiYWNrcyBQZ0FyY2hTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVz dF9mbiA9IFBnQXJjaFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFBnQXJjaFNobWVtSW5pdCwK K307CiAKLQlyZXR1cm4gc2l6ZTsKKy8qIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVl ZGVkIGJ5IHRoZSBhcmNoaXZlciAqLworc3RhdGljIHZvaWQKK1BnQXJjaFNobWVtUmVxdWVzdCh2 b2lkICphcmcpCit7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFyY2hpdmVyIERhdGEi LAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihQZ0FyY2hEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmUGdBcmNoLAorCQkpOwogfQogCi0vKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBh cmNoaXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KLXZvaWQKLVBnQXJjaFNobWVtSW5pdCh2 b2lkKQorLyogSW5pdGlhbGl6ZSBhcmNoaXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KK3N0 YXRpYyB2b2lkCitQZ0FyY2hTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwot Ci0JUGdBcmNoID0gKFBnQXJjaERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBcmNoaXZlciBE YXRhIiwgUGdBcmNoU2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJ LyogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplICovCi0JCU1lbVNldChQZ0FyY2gs IDAsIFBnQXJjaFNobWVtU2l6ZSgpKTsKLQkJUGdBcmNoLT5wZ3Byb2NubyA9IElOVkFMSURfUFJP Q19OVU1CRVI7Ci0JCXBnX2F0b21pY19pbml0X3UzMigmUGdBcmNoLT5mb3JjZV9kaXJfc2Nhbiwg MCk7Ci0JfQorCU1lbVNldChQZ0FyY2gsIDAsIHNpemVvZihQZ0FyY2hEYXRhKSk7CisJUGdBcmNo LT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJcGdfYXRvbWljX2luaXRfdTMyKCZQ Z0FyY2gtPmZvcmNlX2Rpcl9zY2FuLCAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWxzdW1tYXJpemVyLmMKaW5kZXggYTM3YjMwMThhYmYuLjIwOTYwZjViNjMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdHlwZWRlZiBzdHJ1 Y3QKIC8qIFBvaW50ZXIgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZS4gKi8KIHN0YXRpYyBXYWxTdW1t YXJpemVyRGF0YSAqV2FsU3VtbWFyaXplckN0bDsKIAorc3RhdGljIHZvaWQgV2FsU3VtbWFyaXpl clNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgV2FsU3VtbWFyaXplclNobWVt SW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBXYWxTdW1tYXJpemVyU2ht ZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBXYWxTdW1tYXJpemVyU2htZW1SZXF1ZXN0 LAorCS5pbml0X2ZuID0gV2FsU3VtbWFyaXplclNobWVtSW5pdCwKK307CisKIC8qCiAgKiBXaGVu IHdlIHJlYWNoIGVuZCBvZiBXQUwgYW5kIG5lZWQgdG8gcmVhZCBtb3JlLCB3ZSBzbGVlcCBmb3Ig YSBudW1iZXIgb2YKICAqIG1pbGxpc2Vjb25kcyB0aGF0IGlzIGFuIGludGVnZXIgbXVsdGlwbGUg b2YgTVNfUEVSX1NMRUVQX1FVQU5UVU0uIFRoaXMgaXMKQEAgLTE2OCw0MyArMTc3LDM0IEBAIHN0 YXRpYyB2b2lkIHN1bW1hcml6ZXJfd2FpdF9mb3Jfd2FsKHZvaWQpOwogc3RhdGljIHZvaWQgTWF5 YmVSZW1vdmVPbGRXYWxTdW1tYXJpZXModm9pZCk7CiAKIC8qCi0gKiBBbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSByZXF1aXJlZCBmb3IgdGhpcyBtb2R1bGUuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVt b3J5IHNwYWNlIG5lZWRlZCBieSB0aGlzIG1vZHVsZS4KICAqLwotU2l6ZQotV2FsU3VtbWFyaXpl clNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1dhbFN1bW1hcml6ZXJTaG1lbVJlcXVlc3Qo dm9pZCAqYXJnKQogewotCXJldHVybiBzaXplb2YoV2FsU3VtbWFyaXplckRhdGEpOworCVNobWVt UmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWwgU3VtbWFyaXplciBDdGwiLAorCQkJCQkgICAuc2l6 ZSA9IHNpemVvZihXYWxTdW1tYXJpemVyRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JldhbFN1bW1hcml6ZXJDdGwsCisJCSk7CiB9CiAKIC8qCi0gKiBDcmVhdGUgb3IgYXR0YWNoIHRv IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhpcyBtb2R1bGUuCisgKiBJbml0aWFsaXplIHNo YXJlZCBtZW1vcnkgZm9yIHRoaXMgbW9kdWxlLgogICovCi12b2lkCi1XYWxTdW1tYXJpemVyU2ht ZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorV2FsU3VtbWFyaXplclNobWVtSW5pdCh2b2lkICph cmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlXYWxTdW1tYXJpemVyQ3RsID0gKFdhbFN1bW1hcml6 ZXJEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiV2FsIFN1bW1hcml6ZXIgQ3RsIiwgV2FsU3Vt bWFyaXplclNobWVtU2l6ZSgpLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKgotCQkgKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUuCi0JCSAqCi0JCSAq IFdlJ3JlIGp1c3QgZmlsbGluZyBpbiBkdW1teSB2YWx1ZXMgaGVyZSAtLSB0aGUgcmVhbCBpbml0 aWFsaXphdGlvbgotCQkgKiB3aWxsIGhhcHBlbiB3aGVuIEdldE9sZGVzdFVuc3VtbWFyaXplZExT TigpIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0Ci0JCSAqIHRpbWUuCi0JCSAqLwotCQlXYWxTdW1t YXJpemVyQ3RsLT5pbml0aWFsaXplZCA9IGZhbHNlOwotCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1t YXJpemVkX3RsaSA9IDA7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZWRfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPmxzbl9pc19leGFjdCA9IGZhbHNl OwotCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVyX3BncHJvY25vID0gSU5WQUxJRF9QUk9D X05VTUJFUjsKLQkJV2FsU3VtbWFyaXplckN0bC0+cGVuZGluZ19sc24gPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJ5 X2ZpbGVfY3YpOwotCX0KKwkvKgorCSAqIFdlJ3JlIGp1c3QgZmlsbGluZyBpbiBkdW1teSB2YWx1 ZXMgaGVyZSAtLSB0aGUgcmVhbCBpbml0aWFsaXphdGlvbiB3aWxsCisJICogaGFwcGVuIHdoZW4g R2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZS4K KwkgKi8KKwlXYWxTdW1tYXJpemVyQ3RsLT5pbml0aWFsaXplZCA9IGZhbHNlOworCVdhbFN1bW1h cml6ZXJDdGwtPnN1bW1hcml6ZWRfdGxpID0gMDsKKwlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJp emVkX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCVdhbFN1bW1hcml6ZXJDdGwtPmxzbl9pc19l eGFjdCA9IGZhbHNlOworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9jbm8gPSBJ TlZBTElEX1BST0NfTlVNQkVSOworCVdhbFN1bW1hcml6ZXJDdGwtPnBlbmRpbmdfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7CisJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTdW1tYXJpemVyQ3Rs LT5zdW1tYXJ5X2ZpbGVfY3YpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jCmluZGV4IDA5OTY0MTk4NTUwLi45ZTc1YTNlMDRlZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtMzgsNiArMzgsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMu aCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzEsNiArNzIsMTQgQEAgdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcEN0eFN0cnVjdAogCiBzdGF0aWMgTG9naWNhbFJlcEN0eFN0cnVj dCAqTG9naWNhbFJlcEN0eDsKIAorc3RhdGljIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtUmVxdWVz dCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkICph cmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBBcHBseUxhdW5jaGVyU2htZW1DYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBBcHBseUxhdW5jaGVyU2htZW1SZXF1ZXN0LAorCS5pbml0X2Zu ID0gQXBwbHlMYXVuY2hlclNobWVtSW5pdCwKK307CisKIC8qIGFuIGVudHJ5IGluIHRoZSBsYXN0 LXN0YXJ0LXRpbWVzIHNoYXJlZCBoYXNoIHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdCBMYXVuY2hl ckxhc3RTdGFydFRpbWVzRW50cnkKIHsKQEAgLTk3MiwxMSArOTgxLDExIEBAIGxvZ2ljYWxyZXBf cGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKLSAqIEFwcGx5TGF1bmNoZXJTaG1l bVNpemUKLSAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIg c2hhcmVkIG1lbW9yeQorICogQXBwbHlMYXVuY2hlclNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVy IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlcgogICov Ci1TaXplCi1BcHBseUxhdW5jaGVyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQXBwbHlM YXVuY2hlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtOTg3 LDcgKzk5NiwxMCBAQCBBcHBseUxhdW5jaGVyU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IE1BWEFM SUdOKHNpemUpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzLAogCQkJCQkJCQkgICBzaXplb2YoTG9naWNhbFJlcFdvcmtlcikp KTsKLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiTG9naWNhbCBS ZXBsaWNhdGlvbiBMYXVuY2hlciBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZMb2dpY2FsUmVwQ3R4LAorCQkpOwogfQogCiAvKgpAQCAtMTAy OCwzNSArMTA0MCwyMyBAQCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCkKIAogLyoKICAqIEFw cGx5TGF1bmNoZXJTaG1lbUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSByZXBsaWNh dGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CisgKgkJSW5pdGlhbGl6ZSByZXBsaWNhdGlvbiBs YXVuY2hlciBzaGFyZWQgbWVtb3J5CiAgKi8KLXZvaWQKLUFwcGx5TGF1bmNoZXJTaG1lbUluaXQo dm9pZCkKK3N0YXRpYyB2b2lkCitBcHBseUxhdW5jaGVyU2htZW1Jbml0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZDsKKwlpbnQJCQlzbG90OwogCi0JTG9naWNhbFJlcEN0eCA9IChMb2dpY2Fs UmVwQ3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiTG9naWNhbCBSZXBsaWNhdGlvbiBM YXVuY2hlciBEYXRhIiwKLQkJCQkJCUFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSwKLQkJCQkJCSZm b3VuZCk7CisJTG9naWNhbFJlcEN0eC0+bGFzdF9zdGFydF9kc2EgPSBEU0FfSEFORExFX0lOVkFM SUQ7CisJTG9naWNhbFJlcEN0eC0+bGFzdF9zdGFydF9kc2ggPSBEU0hBU0hfSEFORExFX0lOVkFM SUQ7CiAKLQlpZiAoIWZvdW5kKQorCS8qIEluaXRpYWxpemUgbWVtb3J5IGFuZCBzcGluIGxvY2tz IGZvciBlYWNoIHdvcmtlciBzbG90LiAqLworCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBzbG90KyspCiAJewotCQlpbnQJCQlzbG90OwotCi0J CW1lbXNldChMb2dpY2FsUmVwQ3R4LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwotCi0J CUxvZ2ljYWxSZXBDdHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwotCQlM b2dpY2FsUmVwQ3R4LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKKwkJ TG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF07 CiAKLQkJLyogSW5pdGlhbGl6ZSBtZW1vcnkgYW5kIHNwaW4gbG9ja3MgZm9yIGVhY2ggd29ya2Vy IHNsb3QuICovCi0JCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzOyBzbG90KyspCi0JCXsKLQkJCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9ICZM b2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3RdOwotCi0JCQltZW1zZXQod29ya2VyLCAwLCBzaXpl b2YoTG9naWNhbFJlcFdvcmtlcikpOwotCQkJU3BpbkxvY2tJbml0KCZ3b3JrZXItPnJlbG11dGV4 KTsKLQkJfQorCQltZW1zZXQod29ya2VyLCAwLCBzaXplb2YoTG9naWNhbFJlcFdvcmtlcikpOwor CQlTcGluTG9ja0luaXQoJndvcmtlci0+cmVsbXV0ZXgpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsY3RsLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYwppbmRleCA0ZTI5Mjk1MTIwMS4uNzJm NjhlYzU4ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGN0bC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGN0 bC5jCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rp b25fcG9pbnQuaCIKIAogLyoKQEAgLTk4LDYgKzk5LDEyIEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxEZWNvZGluZ0N0bERhdGEKIAogc3RhdGljIExvZ2ljYWxEZWNvZGluZ0N0bERhdGEgKkxvZ2lj YWxEZWNvZGluZ0N0bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIExvZ2ljYWxEZWNvZGluZ0N0bFNo bWVtUmVxdWVzdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBMb2dpY2FsRGVj b2RpbmdDdGxTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IExvZ2ljYWxEZWNvZGlu Z0N0bFNobWVtUmVxdWVzdCwKK307CisKIC8qCiAgKiBBIHByb2Nlc3MtbG9jYWwgY2FjaGUgb2Yg TG9naWNhbERlY29kaW5nQ3RsLT54bG9nX2xvZ2ljYWxfaW5mby4gVGhpcyBpcwogICogaW5pdGlh bGl6ZWQgYXQgcHJvY2VzcyBzdGFydHVwLCBhbmQgdXBkYXRlZCB3aGVuIHByb2Nlc3NpbmcgdGhl IHByb2Nlc3MKQEAgLTEyMCwyMyArMTI3LDEzIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV94bG9nX2xv Z2ljYWxfaW5mbyh2b2lkKTsKIHN0YXRpYyB2b2lkIGFib3J0X2xvZ2ljYWxfZGVjb2RpbmdfYWN0 aXZhdGlvbihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIHdyaXRlX2xvZ2ljYWxf ZGVjb2Rpbmdfc3RhdHVzX3VwZGF0ZV9yZWNvcmQoYm9vbCBzdGF0dXMpOwogCi1TaXplCi1Mb2dp Y2FsRGVjb2RpbmdDdGxTaG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gc2l6ZW9mKExvZ2ljYWxE ZWNvZGluZ0N0bERhdGEpOwotfQotCi12b2lkCi1Mb2dpY2FsRGVjb2RpbmdDdGxTaG1lbUluaXQo dm9pZCkKK3N0YXRpYyB2b2lkCitMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JTG9naWNhbERlY29kaW5nQ3RsID0gU2htZW1Jbml0 U3RydWN0KCJMb2dpY2FsIGRlY29kaW5nIGNvbnRyb2wiLAotCQkJCQkJCQkJCSBMb2dpY2FsRGVj b2RpbmdDdGxTaG1lbVNpemUoKSwKLQkJCQkJCQkJCQkgJmZvdW5kKTsKLQotCWlmICghZm91bmQp Ci0JCU1lbVNldChMb2dpY2FsRGVjb2RpbmdDdGwsIDAsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVt U2l6ZSgpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiTG9naWNhbCBkZWNvZGluZyBj b250cm9sIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoTG9naWNhbERlY29kaW5nQ3RsRGF0YSks CisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkxvZ2ljYWxEZWNvZGluZ0N0bCwKKwkJKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2lu LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IDY2MWQ2 OGFkNjUzLi4zNzJkNzdjNDc1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29y aWdpbi5jCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMTc2LDYg KzE3NywxNiBAQCBSZXBsT3JpZ2luWGFjdFN0YXRlIHJlcGxvcmlnaW5feGFjdF9zdGF0ZSA9IHsK ICAqLwogc3RhdGljIFJlcGxpY2F0aW9uU3RhdGUgKnJlcGxpY2F0aW9uX3N0YXRlczsKIAorc3Rh dGljIHZvaWQgUmVwbGljYXRpb25PcmlnaW5TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvbk9yaWdpblNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVt Q2FsbGJhY2tzIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3Rf Zm4gPSBSZXBsaWNhdGlvbk9yaWdpblNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFJlcGxpY2F0 aW9uT3JpZ2luU2htZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBSZXBsaWNhdGlvbk9yaWdpblNobWVt QXR0YWNoLAorfTsKKwogLyoKICAqIEFjdHVhbCBzaGFyZWQgbWVtb3J5IGJsb2NrIChyZXBsaWNh dGlvbl9zdGF0ZXNbXSBpcyBub3cgcGFydCBvZiB0aGlzKS4KICAqLwpAQCAtNTM5LDUwICs1NTAs NDggQEAgcmVwbG9yaWdpbl9ieV9vaWQoUmVwbE9yaWdpbklkIHJvaWRlbnQsIGJvb2wgbWlzc2lu Z19vaywgY2hhciAqKnJvbmFtZSkKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLVNpemUK LVJlcGxpY2F0aW9uT3JpZ2luU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorUmVwbGljYXRp b25PcmlnaW5TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemUgPSAwOwogCiAJ aWYgKG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9PSAwKQotCQlyZXR1cm4gc2l6ZTsK KwkJcmV0dXJuOwogCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFJlcGxpY2F0aW9u U3RhdGVDdGwsIHN0YXRlcykpOwotCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsCiAJCQkJCW11bF9z aXplKG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucywgc2l6ZW9mKFJlcGxpY2F0aW9uU3Rh dGUpKSk7Ci0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlJlcGxp Y2F0aW9uT3JpZ2luU3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJnJlcGxpY2F0aW9uX3N0YXRlc19jdGwsCisJCSk7CiB9CiAKLXZvaWQKLVJl cGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25P cmlnaW5TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCiAJaWYgKG1heF9h Y3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9PSAwKQogCQlyZXR1cm47CiAKLQlyZXBsaWNhdGlv bl9zdGF0ZXNfY3RsID0gKFJlcGxpY2F0aW9uU3RhdGVDdGwgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJSZXBsaWNhdGlvbk9yaWdpblN0YXRlIiwKLQkJCQkJCVJlcGxpY2F0aW9uT3JpZ2luU2htZW1T aXplKCksCi0JCQkJCQkmZm91bmQpOwogCXJlcGxpY2F0aW9uX3N0YXRlcyA9IHJlcGxpY2F0aW9u X3N0YXRlc19jdGwtPnN0YXRlczsKIAotCWlmICghZm91bmQpCi0JewotCQlpbnQJCQlpOworCXJl cGxpY2F0aW9uX3N0YXRlc19jdGwtPnRyYW5jaGVfaWQgPSBMV1RSQU5DSEVfUkVQTElDQVRJT05f T1JJR0lOX1NUQVRFOwogCi0JCU1lbVNldChyZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLCAwLCBSZXBs aWNhdGlvbk9yaWdpblNobWVtU2l6ZSgpKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG1heF9hY3Rp dmVfcmVwbGljYXRpb25fb3JpZ2luczsgaSsrKQorCXsKKwkJTFdMb2NrSW5pdGlhbGl6ZSgmcmVw bGljYXRpb25fc3RhdGVzW2ldLmxvY2ssCisJCQkJCQkgcmVwbGljYXRpb25fc3RhdGVzX2N0bC0+ dHJhbmNoZV9pZCk7CisJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmcmVwbGljYXRpb25fc3RhdGVz W2ldLm9yaWdpbl9jdik7CisJfQorfQogCi0JCXJlcGxpY2F0aW9uX3N0YXRlc19jdGwtPnRyYW5j aGVfaWQgPSBMV1RSQU5DSEVfUkVQTElDQVRJT05fT1JJR0lOX1NUQVRFOworc3RhdGljIHZvaWQK K1JlcGxpY2F0aW9uT3JpZ2luU2htZW1BdHRhY2godm9pZCAqYXJnKQoreworCWlmIChtYXhfYWN0 aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMgPT0gMCkKKwkJcmV0dXJuOwogCi0JCWZvciAoaSA9IDA7 IGkgPCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM7IGkrKykKLQkJewotCQkJTFdMb2Nr SW5pdGlhbGl6ZSgmcmVwbGljYXRpb25fc3RhdGVzW2ldLmxvY2ssCi0JCQkJCQkJIHJlcGxpY2F0 aW9uX3N0YXRlc19jdGwtPnRyYW5jaGVfaWQpOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZy ZXBsaWNhdGlvbl9zdGF0ZXNbaV0ub3JpZ2luX2N2KTsKLQkJfQotCX0KKwlyZXBsaWNhdGlvbl9z dGF0ZXMgPSByZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLT5zdGF0ZXM7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmlu ZGV4IGU3NWRiNjllM2Y2Li5kNjE1ZmY4YTgxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNv cC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKQEAgLTExOCw2ICsxMTksMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xvdFN5 bmNDdHhTdHJ1Y3QKIAogc3RhdGljIFNsb3RTeW5jQ3R4U3RydWN0ICpTbG90U3luY0N0eCA9IE5V TEw7CiAKK3N0YXRpYyB2b2lkIFNsb3RTeW5jU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBTbG90U3luY1NobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxi YWNrcyBTbG90U3luY1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gU2xvdFN5bmNT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTbG90U3luY1NobWVtSW5pdCwKK307CisKIC8qIEdV QyB2YXJpYWJsZSAqLwogYm9vbAkJc3luY19yZXBsaWNhdGlvbl9zbG90cyA9IGZhbHNlOwogCkBA IC0xODI4LDMyICsxODM3LDI2IEBAIElzU3luY2luZ1JlcGxpY2F0aW9uU2xvdHModm9pZCkKIH0K IAogLyoKLSAqIEFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIGZvciBzbG90IHN5bmNo cm9uaXphdGlvbi4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBz bG90IHN5bmNocm9uaXphdGlvbi4KICAqLwotU2l6ZQotU2xvdFN5bmNTaG1lbVNpemUodm9pZCkK K3N0YXRpYyB2b2lkCitTbG90U3luY1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0dXJu IHNpemVvZihTbG90U3luY0N0eFN0cnVjdCk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0g IlNsb3QgU3luYyBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoU2xvdFN5bmNDdHhTdHJ1 Y3QpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZTbG90U3luY0N0eCwKKwkJKTsKIH0KIAog LyoKLSAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzaGFyZWQgbWVtb3J5IG9mIHNsb3Qg c3luY2hyb25pemF0aW9uLgorICogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGZvciBzbG90IHN5 bmNocm9uaXphdGlvbi4KICAqLwotdm9pZAotU2xvdFN5bmNTaG1lbUluaXQodm9pZCkKK3N0YXRp YyB2b2lkCitTbG90U3luY1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9IFNs b3RTeW5jU2htZW1TaXplKCk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlTbG90U3luY0N0eCA9IChTbG90 U3luY0N0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNsb3QgU3luYyBEYXRhIiwgc2l6 ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQltZW1zZXQoU2xvdFN5bmNDdHgsIDAs IHNpemUpOwotCQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKLQkJU3BpbkxvY2tJbml0 KCZTbG90U3luY0N0eC0+bXV0ZXgpOwotCX0KKwltZW1zZXQoU2xvdFN5bmNDdHgsIDAsIHNpemVv ZihTbG90U3luY0N0eFN0cnVjdCkpOworCVNsb3RTeW5jQ3R4LT5waWQgPSBJbnZhbGlkUGlkOwor CVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYwppbmRleCBhOTA5MmZjMjM4Mi4uMjFhMjEzYTBlYmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5j bHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25f cG9pbnQuaCIKQEAgLTE0NSw2ICsxNDYsMTQgQEAgU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihT bG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxfTUFYX0NBVVNFUyArIDEpLAogLyog Q29udHJvbCBhcnJheSBmb3IgcmVwbGljYXRpb24gc2xvdCBtYW5hZ2VtZW50ICovCiBSZXBsaWNh dGlvblNsb3RDdGxEYXRhICpSZXBsaWNhdGlvblNsb3RDdGwgPSBOVUxMOwogCitzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvblNsb3RzU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBS ZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIFJlcGxpY2F0aW9uU2xvdHNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFJl cGxpY2F0aW9uU2xvdHNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBSZXBsaWNhdGlvblNsb3Rz U2htZW1Jbml0LAorfTsKKwogLyogTXkgYmFja2VuZCdzIHJlcGxpY2F0aW9uIHNsb3QgaW4gdGhl IHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNs b3QgPSBOVUxMOwogCkBAIC0xODMsNTYgKzE5Miw0MSBAQCBzdGF0aWMgdm9pZCBDcmVhdGVTbG90 T25EaXNrKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBzdGF0aWMgdm9pZCBTYXZlU2xvdFRvUGF0 aChSZXBsaWNhdGlvblNsb3QgKnNsb3QsIGNvbnN0IGNoYXIgKmRpciwgaW50IGVsZXZlbCk7CiAK IC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUmVwbGljYXRpb25T bG90c1NobWVtSW5pdC4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZv ciByZXBsaWNhdGlvbiBzbG90cy4KICAqLwotU2l6ZQotUmVwbGljYXRpb25TbG90c1NobWVtU2l6 ZSh2b2lkKQorc3RhdGljIHZvaWQKK1JlcGxpY2F0aW9uU2xvdHNTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQogewotCVNpemUJCXNpemUgPSAwOworCVNpemUJCXNpemU7CiAKIAlpZiAobWF4X3JlcGxp Y2F0aW9uX3Nsb3RzID09IDApCi0JCXJldHVybiBzaXplOworCQlyZXR1cm47CiAKIAlzaXplID0g b2Zmc2V0b2YoUmVwbGljYXRpb25TbG90Q3RsRGF0YSwgcmVwbGljYXRpb25fc2xvdHMpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLAogCQkJCQltdWxfc2l6ZShtYXhfcmVwbGljYXRpb25fc2xvdHMs IHNpemVvZihSZXBsaWNhdGlvblNsb3QpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVl c3RTdHJ1Y3QoLm5hbWUgPSAiUmVwbGljYXRpb25TbG90IEN0bCIsCisJCQkJCSAgIC5zaXplID0g c2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUmVwbGljYXRpb25TbG90Q3RsLAorCQkp OwogfQogCiAvKgotICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBmb3Ig cmVwbGljYXRpb24gc2xvdHMuCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIHJlcGxp Y2F0aW9uIHNsb3RzLgogICovCi12b2lkCi1SZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQp CitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0KLQlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCi0JCXJldHVy bjsKLQotCVJlcGxpY2F0aW9uU2xvdEN0bCA9IChSZXBsaWNhdGlvblNsb3RDdGxEYXRhICopCi0J CVNobWVtSW5pdFN0cnVjdCgiUmVwbGljYXRpb25TbG90IEN0bCIsIFJlcGxpY2F0aW9uU2xvdHNT aG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQorCWZvciAoaW50IGkg PSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCiAJewotCQlpbnQJCQlpOworCQlS ZXBsaWNhdGlvblNsb3QgKnNsb3QgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9z bG90c1tpXTsKIAotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJ TWVtU2V0KFJlcGxpY2F0aW9uU2xvdEN0bCwgMCwgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSgp KTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCi0JCXsK LQkJCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0 aW9uX3Nsb3RzW2ldOwotCi0JCQkvKiBldmVyeXRoaW5nIGVsc2UgaXMgemVyb2VkIGJ5IHRoZSBt ZW1zZXQgYWJvdmUgKi8KLQkJCXNsb3QtPmFjdGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKLQkJCVNwaW5Mb2NrSW5pdCgmc2xvdC0+bXV0ZXgpOwotCQkJTFdMb2NrSW5pdGlhbGl6ZSgm c2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9jaywKLQkJCQkJCQkgTFdUUkFOQ0hFX1JFUExJQ0FUSU9O X1NMT1RfSU8pOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5hY3RpdmVfY3YpOwot CQl9CisJCS8qIGV2ZXJ5dGhpbmcgZWxzZSBpcyB6ZXJvZWQgYnkgdGhlIG1lbXNldCBhYm92ZSAq LworCQlzbG90LT5hY3RpdmVfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCVNwaW5Mb2Nr SW5pdCgmc2xvdC0+bXV0ZXgpOworCQlMV0xvY2tJbml0aWFsaXplKCZzbG90LT5pb19pbl9wcm9n cmVzc19sb2NrLAorCQkJCQkJIExXVFJBTkNIRV9SRVBMSUNBVElPTl9TTE9UX0lPKTsKKwkJQ29u ZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5hY3RpdmVfY3YpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCmluZGV4IDQ1YjlkNGYwOWYyLi40ZTAz ZTcyMTg3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpA QCAtMjksNDcgKzI5LDQ2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIFdhbFJjdkRhdGEgKldhbFJjdiA9IE5VTEw7 CiAKK3N0YXRpYyB2b2lkIFdhbFJjdlNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgV2FsUmN2U2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFdh bFJjdlNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gV2FsUmN2U2htZW1SZXF1ZXN0 LAorCS5pbml0X2ZuID0gV2FsUmN2U2htZW1Jbml0LAorfTsKKwogLyoKICAqIEhvdyBsb25nIHRv IHdhaXQgZm9yIHdhbHJlY2VpdmVyIHRvIHN0YXJ0IHVwIGFmdGVyIHJlcXVlc3RpbmcKICAqIHBv c3RtYXN0ZXIgdG8gbGF1bmNoIGl0LiBJbiBzZWNvbmRzLgogICovCiAjZGVmaW5lIFdBTFJDVl9T VEFSVFVQX1RJTUVPVVQgMTAKIAotLyogUmVwb3J0IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVk IGJ5IFdhbFJjdlNobWVtSW5pdCAqLwotU2l6ZQotV2FsUmN2U2htZW1TaXplKHZvaWQpCisvKiBS ZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBieSB3YWxyZWNlaXZlciAqLworc3Rh dGljIHZvaWQKK1dhbFJjdlNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9 IDA7Ci0KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFdhbFJjdkRhdGEpKTsKLQotCXJl dHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWwgUmVjZWl2ZXIgQ3Rs IiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoV2FsUmN2RGF0YSksCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJldhbFJjdiwKKwkJKTsKIH0KIAotLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUg d2FscmVjZWl2ZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5ICovCi12b2lkCi1XYWxSY3ZTaG1lbUlu aXQodm9pZCkKKy8qIEluaXRpYWxpemUgd2FscmVjZWl2ZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5 ICovCitzdGF0aWMgdm9pZAorV2FsUmN2U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZDsKLQotCVdhbFJjdiA9IChXYWxSY3ZEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiV2Fs IFJlY2VpdmVyIEN0bCIsIFdhbFJjdlNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZSAqLwotCQlNZW1T ZXQoV2FsUmN2LCAwLCBXYWxSY3ZTaG1lbVNpemUoKSk7Ci0JCVdhbFJjdi0+d2FsUmN2U3RhdGUg PSBXQUxSQ1ZfU1RPUFBFRDsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxSY3YtPndhbFJj dlN0b3BwZWRDVik7Ci0JCVNwaW5Mb2NrSW5pdCgmV2FsUmN2LT5tdXRleCk7Ci0JCXBnX2F0b21p Y19pbml0X3U2NCgmV2FsUmN2LT53cml0dGVuVXB0bywgMCk7Ci0JCVdhbFJjdi0+cHJvY25vID0g SU5WQUxJRF9QUk9DX05VTUJFUjsKLQl9CisJTWVtU2V0KFdhbFJjdiwgMCwgc2l6ZW9mKFdhbFJj dkRhdGEpKTsKKwlXYWxSY3YtPndhbFJjdlN0YXRlID0gV0FMUkNWX1NUT1BQRUQ7CisJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZXYWxSY3YtPndhbFJjdlN0b3BwZWRDVik7CisJU3BpbkxvY2tJbml0 KCZXYWxSY3YtPm11dGV4KTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJldhbFJjdi0+d3JpdHRlblVw dG8sIDApOworCVdhbFJjdi0+cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIH0KIAogLyog SXMgd2FscmVjZWl2ZXIgcnVubmluZyAob3Igc3RhcnRpbmcgdXApPyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYwppbmRleCAyYmIzZjM0ZGM2ZC4uZWMzOTk0MmJmYzEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5j bHVkZSAidGNvcC9kZXN0LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgpAQCAtMTE3LDYgKzExOCwxNCBAQAogLyogQXJyYXkgb2YgV2FsU25kcyBp biBzaGFyZWQgbWVtb3J5ICovCiBXYWxTbmRDdGxEYXRhICpXYWxTbmRDdGwgPSBOVUxMOwogCitz dGF0aWMgdm9pZCBXYWxTbmRTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdh bFNuZFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBXYWxTbmRT aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFdhbFNuZFNobWVtUmVxdWVzdCwKKwku aW5pdF9mbiA9IFdhbFNuZFNobWVtSW5pdCwKK307CisKIC8qIE15IHNsb3QgaW4gdGhlIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KIFdhbFNuZAkgICAqTXlXYWxTbmQgPSBOVUxMOwogCkBAIC0zNzY1 LDQ3ICszNzc0LDM3IEBAIFdhbFNuZFNpZ25hbHModm9pZCkKIAlwcXNpZ25hbChTSUdDSExELCBT SUdfREZMKTsKIH0KIAotLyogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFdh bFNuZFNobWVtSW5pdCAqLwotU2l6ZQotV2FsU25kU2htZW1TaXplKHZvaWQpCisvKiBSZWdpc3Rl ciBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSB3YWxzZW5kZXIgKi8KK3N0YXRpYyB2b2lk CitXYWxTbmRTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSAwOworCVNp emUJCXNpemU7CiAKIAlzaXplID0gb2Zmc2V0b2YoV2FsU25kQ3RsRGF0YSwgd2Fsc25kcyk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKG1heF93YWxfc2VuZGVycywgc2l6ZW9mKFdh bFNuZCkpKTsKLQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJX YWwgU2VuZGVyIEN0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmV2FsU25kQ3RsLAorCQkpOwogfQogCi0vKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6 ZSB3YWxzZW5kZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5ICovCi12b2lkCi1XYWxTbmRTaG1lbUlu aXQodm9pZCkKKy8qIEluaXRpYWxpemUgd2Fsc2VuZGVyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeSAq Lworc3RhdGljIHZvaWQKK1dhbFNuZFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0JaW50CQkJaTsKKwlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9TWU5DX1JFUF9XQUlUX01P REU7IGkrKykKKwkJZGxpc3RfaW5pdCgmKFdhbFNuZEN0bC0+U3luY1JlcFF1ZXVlW2ldKSk7CiAK LQlXYWxTbmRDdGwgPSAoV2FsU25kQ3RsRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIldhbCBT ZW5kZXIgQ3RsIiwgV2FsU25kU2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQor CWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCiAJewotCQkvKiBGaXJz dCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJTWVtU2V0KFdhbFNuZEN0bCwgMCwg V2FsU25kU2htZW1TaXplKCkpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBOVU1fU1lOQ19SRVBfV0FJ VF9NT0RFOyBpKyspCi0JCQlkbGlzdF9pbml0KCYoV2FsU25kQ3RsLT5TeW5jUmVwUXVldWVbaV0p KTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCi0JCXsKLQkJCVdh bFNuZAkgICAqd2Fsc25kID0gJldhbFNuZEN0bC0+d2Fsc25kc1tpXTsKLQotCQkJU3BpbkxvY2tJ bml0KCZ3YWxzbmQtPm11dGV4KTsKLQkJfQorCQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxTbmRD dGwtPndhbHNuZHNbaV07CiAKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndh bF9mbHVzaF9jdik7Ci0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfcmVw bGF5X2N2KTsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9jb25maXJt X3Jjdl9jdik7CisJCVNwaW5Mb2NrSW5pdCgmd2Fsc25kLT5tdXRleCk7CiAJfQorCisJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9mbHVzaF9jdik7CisJQ29uZGl0aW9uVmFy aWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9yZXBsYXlfY3YpOworCUNvbmRpdGlvblZhcmlhYmxl SW5pdCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCmluZGV4IGY2NGMxZDU5ZmEzLi5iZjZiODFlNjIxYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYwpAQCAtMTQsNDEgKzE0LDE2IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog Ci0jaW5jbHVkZSAiYWNjZXNzL2Nsb2cuaCIKLSNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3RzLmgi Ci0jaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgotI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUu aCIKLSNpbmNsdWRlICJhY2Nlc3Mvc3VidHJhbnMuaCIKLSNpbmNsdWRlICJhY2Nlc3Mvc3luY3Nj YW4uaCIKLSNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxv Z3ByZWZldGNoZXIuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCi0jaW5jbHVk ZSAiYWNjZXNzL3hsb2d3YWl0LmgiCi0jaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2F1dG92YWN1dW0uaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFs cy5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFy aXplci5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgotI2luY2x1 ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK LSNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9kc20uaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKLSNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9n dWMuaCIKLSNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKLSNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCiAKIC8qIEdVQ3MgKi8KIGludAkJCXNoYXJlZF9tZW1vcnlfdHlwZSA9 IERFRkFVTFRfU0hBUkVEX01FTU9SWV9UWVBFOwpAQCAtNTcsOCArMzIsNiBAQCBzaG1lbV9zdGFy dHVwX2hvb2tfdHlwZSBzaG1lbV9zdGFydHVwX2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgU2l6ZSB0 b3RhbF9hZGRpbl9yZXF1ZXN0ID0gMDsKIAotc3RhdGljIHZvaWQgQ3JlYXRlT3JBdHRhY2hTaG1l bVN0cnVjdHModm9pZCk7Ci0KIC8qCiAgKiBSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlCiAgKgkJUmVx dWVzdCB0aGF0IGV4dHJhIHNobWVtIHNwYWNlIGJlIGFsbG9jYXRlZCBmb3IgdXNlIGJ5CkBAIC05 NywzMyArNzAsNiBAQCBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCkKIAlzaXplID0gMTAwMDAwOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaG1lbUdldFJlcXVlc3RlZFNpemUoKSk7CiAKLQkvKiBs ZWdhY3kgc3Vic3lzdGVtcyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2NrTWFuYWdlclNo bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1ByZWZldGNoU2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTE9HU2htZW1TaXplKCkpOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBYTG9nUmVjb3ZlcnlTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFR3b1BoYXNlU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNr Z3JvdW5kV29ya2VyU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5k U3RhdHVzU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50ZXJT aG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1lbVNpemUo KSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWxTbmRTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIFdhbFJjdlNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2Fs U3VtbWFyaXplclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUGdBcmNoU2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBcHBseUxhdW5jaGVyU2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCVHJlZVNobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgU3luY1NjYW5TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIFN0YXRzU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRD dXN0b21TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50 U2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTbG90U3luY1NobWVtU2l6ZSgp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdExTTlNobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgTG9naWNhbERlY29kaW5nQ3RsU2htZW1TaXplKCkpOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBEYXRhQ2hlY2tzdW1zU2htZW1TaXplKCkpOwotCiAJLyogaW5jbHVkZSBh ZGRpdGlvbmFsIHJlcXVlc3RlZCBzaG1lbSBmcm9tIHByZWxvYWQgbGlicmFyaWVzICovCiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIHRvdGFsX2FkZGluX3JlcXVlc3QpOwogCkBAIC0xNTcsNyArMTAz LDYgQEAgQXR0YWNoU2hhcmVkTWVtb3J5U3RydWN0cyh2b2lkKQogCiAJLyogRXN0YWJsaXNoIHBv aW50ZXJzIHRvIGFsbCBzaGFyZWQgbWVtb3J5IGFyZWFzIGluIHRoaXMgYmFja2VuZCAqLwogCVNo bWVtQXR0YWNoUmVxdWVzdGVkKCk7Ci0JQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKIAog CS8qCiAJICogTm93IGdpdmUgbG9hZGFibGUgbW9kdWxlcyBhIGNoYW5jZSB0byBzZXQgdXAgdGhl aXIgc2htZW0gYWxsb2NhdGlvbnMKQEAgLTIwNCw5ICsxNDksNiBAQCBDcmVhdGVTaGFyZWRNZW1v cnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMgKi8K IAlTaG1lbUluaXRSZXF1ZXN0ZWQoKTsKIAotCS8qIEluaXRpYWxpemUgbGVnYWN5IHN1YnN5c3Rl bXMgKi8KLQlDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cygpOwotCiAJLyogSW5pdGlhbGl6ZSBk eW5hbWljIHNoYXJlZCBtZW1vcnkgZmFjaWxpdGllcy4gKi8KIAlkc21fcG9zdG1hc3Rlcl9zdGFy dHVwKHNoaW0pOwogCkBAIC0yMzcsNzAgKzE3OSw2IEBAIFJlZ2lzdGVyQnVpbHRpblNobWVtQ2Fs bGJhY2tzKHZvaWQpCiAjdW5kZWYgUEdfU0hNRU1fU1VCU1lTVEVNCiB9CiAKLS8qCi0gKiBJbml0 aWFsaXplIHZhcmlvdXMgc3Vic3lzdGVtcywgc2V0dGluZyB1cCB0aGVpciBkYXRhIHN0cnVjdHVy ZXMgaW4KLSAqIHNoYXJlZCBtZW1vcnkuCi0gKgotICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHBv c3RtYXN0ZXIgb3IgYnkgYSBzdGFuZGFsb25lIGJhY2tlbmQuCi0gKiBJdCBpcyBhbHNvIGNhbGxl ZCBieSBhIGJhY2tlbmQgZm9ya2VkIGZyb20gdGhlIHBvc3RtYXN0ZXIgaW4gdGhlCi0gKiBFWEVD X0JBQ0tFTkQgY2FzZS4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNoYXJlZCBtZW1vcnkgc2Vn bWVudAotICogYWxyZWFkeSBleGlzdHMgYW5kIGhhcyBiZWVuIHBoeXNpY2FsbHkgYXR0YWNoZWQg dG8sIGJ1dCB3ZSBoYXZlIHRvCi0gKiBpbml0aWFsaXplIHBvaW50ZXJzIGluIGxvY2FsIG1lbW9y eSB0aGF0IHJlZmVyZW5jZSB0aGUgc2hhcmVkIHN0cnVjdHVyZXMsCi0gKiBiZWNhdXNlIHdlIGRp ZG4ndCBpbmhlcml0IHRoZSBjb3JyZWN0IHBvaW50ZXIgdmFsdWVzIGZyb20gdGhlIHBvc3RtYXN0 ZXIKLSAqIGFzIHdlIGRvIGluIHRoZSBmb3JrKCkgc2NlbmFyaW8uICBUaGUgZWFzaWVzdCB3YXkg dG8gZG8gdGhhdCBpcyB0byBydW4KLSAqIHRocm91Z2ggdGhlIHNhbWUgY29kZSBhcyBiZWZvcmUu ICAoTm90ZSB0aGF0IHRoZSBjYWxsZWQgcm91dGluZXMgbW9zdGx5Ci0gKiBjaGVjayBJc1VuZGVy UG9zdG1hc3RlciwgcmF0aGVyIHRoYW4gRVhFQ19CQUNLRU5ELCB0byBkZXRlY3QgdGhpcyBjYXNl LgotICogVGhpcyBpcyBhIGJpdCBjb2RlLXdhc3RlZnVsIGFuZCBjb3VsZCBiZSBjbGVhbmVkIHVw LikKLSAqLwotc3RhdGljIHZvaWQKLUNyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCi17 Ci0JLyoKLQkgKiBTZXQgdXAgeGxvZywgY2xvZywgYW5kIGJ1ZmZlcnMKLQkgKi8KLQlYTE9HU2ht ZW1Jbml0KCk7Ci0JWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7Ci0JWExvZ1JlY292ZXJ5U2htZW1J bml0KCk7Ci0KLQkvKgotCSAqIFNldCB1cCBsb2NrIG1hbmFnZXIKLQkgKi8KLQlMb2NrTWFuYWdl clNobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgcHJvY2VzcyB0YWJsZQotCSAqLwotCUJh Y2tlbmRTdGF0dXNTaG1lbUluaXQoKTsKLQlUd29QaGFzZVNobWVtSW5pdCgpOwotCUJhY2tncm91 bmRXb3JrZXJTaG1lbUluaXQoKTsKLQotCS8qCi0JICogU2V0IHVwIGludGVycHJvY2VzcyBzaWdu YWxpbmcgbWVjaGFuaXNtcwotCSAqLwotCUNoZWNrcG9pbnRlclNobWVtSW5pdCgpOwotCUF1dG9W YWN1dW1TaG1lbUluaXQoKTsKLQlSZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KCk7Ci0JUmVwbGlj YXRpb25PcmlnaW5TaG1lbUluaXQoKTsKLQlXYWxTbmRTaG1lbUluaXQoKTsKLQlXYWxSY3ZTaG1l bUluaXQoKTsKLQlXYWxTdW1tYXJpemVyU2htZW1Jbml0KCk7Ci0JUGdBcmNoU2htZW1Jbml0KCk7 Ci0JQXBwbHlMYXVuY2hlclNobWVtSW5pdCgpOwotCVNsb3RTeW5jU2htZW1Jbml0KCk7Ci0JRGF0 YUNoZWNrc3Vtc1NobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgb3RoZXIgbW9kdWxlcyB0 aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlCi0JICovCi0JQlRyZWVTaG1lbUluaXQo KTsKLQlTeW5jU2NhblNobWVtSW5pdCgpOwotCVN0YXRzU2htZW1Jbml0KCk7Ci0JV2FpdEV2ZW50 Q3VzdG9tU2htZW1Jbml0KCk7Ci0JSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQoKTsKLQlXYWl0TFNO U2htZW1Jbml0KCk7Ci0JTG9naWNhbERlY29kaW5nQ3RsU2htZW1Jbml0KCk7Ci19Ci0KIC8qCiAg KiBJbml0aWFsaXplU2htZW1HVUNzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggNzk4 YzQ1M2FiMzguLjY4ZDVhMDM4OWRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQzLDgg KzQzLDEwIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z dGFuZGJ5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgpAQCAtMzEyLDYgKzMxNCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBz dGF0aWMgdm9sYXRpbGUgRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tEYXRhICpGYXN0UGF0aFN0 cm9uZ1JlbGF0aW9uTG9ja3M7CiAKK3N0YXRpYyB2b2lkIExvY2tNYW5hZ2VyU2htZW1SZXF1ZXN0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBMb2NrTWFuYWdlclNobWVtQ2FsbGJhY2tzID0gewor CS5yZXF1ZXN0X2ZuID0gTG9ja01hbmFnZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBMb2Nr TWFuYWdlclNobWVtSW5pdCwKK307CisKIAogLyoKICAqIFBvaW50ZXJzIHRvIGhhc2ggdGFibGVz IGNvbnRhaW5pbmcgbG9jayBzdGF0ZQpAQCAtNDA5LDYgKzQxOSw3IEBAIFBST0NMT0NLX1BSSU5U KGNvbnN0IGNoYXIgKndoZXJlLCBjb25zdCBQUk9DTE9DSyAqcHJvY2xvY2tQKQogCiAKIHN0YXRp YyB1aW50MzIgcHJvY2xvY2tfaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSk7CisK IHN0YXRpYyB2b2lkIFJlbW92ZUxvY2FsTG9jayhMT0NBTExPQ0sgKmxvY2FsbG9jayk7CiBzdGF0 aWMgUFJPQ0xPQ0sgKlNldHVwTG9ja0luVGFibGUoTG9ja01ldGhvZCBsb2NrTWV0aG9kVGFibGUs IFBHUFJPQyAqcHJvYywKIAkJCQkJCQkJICBjb25zdCBMT0NLVEFHICpsb2NrdGFnLCB1aW50MzIg aGFzaGNvZGUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKQEAgLTQzMiwyMSArNDQzLDE1IEBAIHN0YXRp YyB2b2lkIEdldFNpbmdsZVByb2NCbG9ja2VyU3RhdHVzRGF0YShQR1BST0MgKmJsb2NrZWRfcHJv YywKIAogCiAvKgotICogSW5pdGlhbGl6ZSB0aGUgbG9jayBtYW5hZ2VyJ3Mgc2htZW0gZGF0YSBz dHJ1Y3R1cmVzLgorICogUmVnaXN0ZXIgdGhlIGxvY2sgbWFuYWdlcidzIHNobWVtIGRhdGEgc3Ry dWN0dXJlcy4KICAqCi0gKiBUaGlzIGlzIGNhbGxlZCBmcm9tIENyZWF0ZVNoYXJlZE1lbW9yeUFu ZFNlbWFwaG9yZXMoKSwgd2hpY2ggc2VlIGZvciBtb3JlCi0gKiBjb21tZW50cy4gIEluIHRoZSBu b3JtYWwgcG9zdG1hc3RlciBjYXNlLCB0aGUgc2hhcmVkIGhhc2ggdGFibGVzIGFyZQotICogY3Jl YXRlZCBoZXJlLCBhbmQgYmFja2VuZHMgaW5oZXJpdCBwb2ludGVycyB0byB0aGVtIHZpYSBmb3Jr KCkuICBJbiB0aGUKLSAqIEVYRUNfQkFDS0VORCBjYXNlLCBlYWNoIGJhY2tlbmQgcmUtZXhlY3V0 ZXMgdGhpcyBjb2RlIHRvIG9idGFpbiBwb2ludGVycyB0bwotICogdGhlIGFscmVhZHkgZXhpc3Rp bmcgc2hhcmVkIGhhc2ggdGFibGVzLiAgSW4gZWl0aGVyIGNhc2UsIGVhY2ggYmFja2VuZCBtdXN0 Ci0gKiBhbHNvIGNhbGwgSW5pdExvY2tNYW5hZ2VyQWNjZXNzKCkgdG8gY3JlYXRlIHRoZSBsb2Nh bGxvY2sgaGFzaCB0YWJsZS4KKyAqIEluIGFkZGl0aW9uIHRvIHRoaXMsIGVhY2ggYmFja2VuZCBt dXN0IGFsc28gY2FsbCBJbml0TG9ja01hbmFnZXJBY2Nlc3MoKSB0bworICogY3JlYXRlIHRoZSBs b2NhbGxvY2sgaGFzaCB0YWJsZS4KICAqLwotdm9pZAotTG9ja01hbmFnZXJTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitMb2NrTWFuYWdlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0J SEFTSENUTAkJaW5mbzsKIAlpbnQ2NAkJbWF4X3RhYmxlX3NpemU7Ci0JYm9vbAkJZm91bmQ7CiAK IAkvKgogCSAqIENvbXB1dGUgc2l6ZXMgZm9yIGxvY2sgaGFzaHRhYmxlcy4gIE5vdGUgdGhhdCB0 aGVzZSBjYWxjdWxhdGlvbnMgbXVzdApAQCAtNDU1LDQ1ICs0NjAsNDggQEAgTG9ja01hbmFnZXJT aG1lbUluaXQodm9pZCkKIAltYXhfdGFibGVfc2l6ZSA9IE5MT0NLRU5UUygpOwogCiAJLyoKLQkg KiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIt bG9ja2VkLW9iamVjdAorCSAqIEhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3Rv cmVzIHBlci1sb2NrZWQtb2JqZWN0CiAJICogaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlz aXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0spOwot CWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOwotCi0JTG9ja01ldGhv ZExvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiTE9DSyBoYXNoIiwKLQkJCQkJCQkJCSAgIG1heF90 YWJsZV9zaXplLAotCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwKLQkJCQkJCQkJCSAgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpF KTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIkxPQ0sgaGFzaCIsCisJCQkJCSAubmVsZW1z ID0gbWF4X3RhYmxlX3NpemUsCisJCQkJCSAucHRyID0gJkxvY2tNZXRob2RMb2NrSGFzaCwKKwkJ CQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKSwKKwkJCQkJIC5oYXNoX2lu Zm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0spLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0 aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiwKKwkJKTsKIAogCS8qIEFzc3VtZSBhbiBh dmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CiAK LQkvKgotCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlz IHN0b3JlcwotCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCi0JICovCi0JaW5m by5rZXlzaXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2gg PSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBtYXhfdGFibGVf c2l6ZSwKLQkJCQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0ZVTkNUSU9OIHwKLQkJCQkJCQkJCQkgICBIQVNIX0ZJWEVEX1NJWkUgfCBIQVNIX1BBUlRJVElP Tik7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJQUk9DTE9DSyBoYXNoIiwKKwkJCQkJIC5u ZWxlbXMgPSBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJIC5wdHIgPSAmTG9ja01ldGhvZFByb2NMb2Nr SGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihQUk9DTE9DS1RBRyksCisJ CQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9DTE9DSyksCisJCQkJCSAuaGFz aF9pbmZvLmhhc2ggPSBwcm9jbG9ja19oYXNoLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0 aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxF TSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTiwKKwkJKTsKKworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJGYXN0IFBhdGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCisJ CQkJCSAgIC5zaXplID0gc2l6ZW9mKEZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrRGF0YSksCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgKHZvaWQgKikgJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25M b2NrcywKKwkJKTsKIAogCS8qCi0JICogQWxsb2NhdGUgZmFzdC1wYXRoIHN0cnVjdHVyZXMuCisJ ICogRklYTUU6IHdlIHVzZWQgdG8gZG8gdGhpcyBpbiB0aGUgc2l6ZSBjYWxjdWxhdGlvbjoKKwkg KgorCSAqIC8vIFNpbmNlIE5MT0NLRU5UUyBpcyBvbmx5IGFuIGVzdGltYXRlLCBhZGQgMTAlIHNh ZmV0eSBtYXJnaW4uIHNpemUgPQorCSAqIGFkZF9zaXplKHNpemUsIHNpemUgLyAxMCk7CiAJICov Ci0JRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzID0KLQkJU2htZW1Jbml0U3RydWN0KCJGYXN0 IFBhdGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCi0JCQkJCQlzaXplb2YoRmFzdFBhdGhT dHJvbmdSZWxhdGlvbkxvY2tEYXRhKSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCQlTcGluTG9j a0luaXQoJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2Nrcy0+bXV0ZXgpOworfQorCitzdGF0aWMg dm9pZAorTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCAqYXJnKQoreworCVNwaW5Mb2NrSW5pdCgm RmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzLT5tdXRleCk7CiB9CiAKIC8qCkBAIC0zNzU4LDI5 ICszNzY2LDYgQEAgUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIH0K IAogCi0vKgotICogRXN0aW1hdGUgc2hhcmVkLW1lbW9yeSBzcGFjZSB1c2VkIGZvciBsb2NrIHRh YmxlcwotICovCi1TaXplCi1Mb2NrTWFuYWdlclNobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNp emUgPSAwOwotCWxvbmcJCW1heF90YWJsZV9zaXplOwotCi0JLyogbG9jayBoYXNoIHRhYmxlICov Ci0JbWF4X3RhYmxlX3NpemUgPSBOTE9DS0VOVFMoKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg aGFzaF9lc3RpbWF0ZV9zaXplKG1heF90YWJsZV9zaXplLCBzaXplb2YoTE9DSykpKTsKLQotCS8q IHByb2Nsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhfdGFibGVfc2l6ZSAqPSAyOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3RhYmxlX3NpemUsIHNpemVvZihQ Uk9DTE9DSykpKTsKLQotCS8qIGZhc3QtcGF0aCBzdHJ1Y3R1cmVzICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIHNpemVvZihGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9ja0RhdGEpKTsKLQotCXJl dHVybiBzaXplOwotfQotCiAvKgogICogR2V0TG9ja1N0YXR1c0RhdGEgLSBSZXR1cm4gYSBzdW1t YXJ5IG9mIHRoZSBsb2NrIG1hbmFnZXIncyBpbnRlcm5hbAogICogc3RhdHVzLCBmb3IgdXNlIGlu IGEgdXNlci1sZXZlbCByZXBvcnRpbmcgZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCBjZDA4NzEyOTQ2OS4uNGNiOWM4MGEyYzUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtMTgsNyAr MTgsOSBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCQkvKiBmb3IgTXlQcm9jICovCisjaW5jbHVkZSAic3Rv cmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWMuaCIJCQkvKiBmb3IgYXBwbGljYXRpb25fbmFtZSAqLwogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCkBAIC03MywxMzMgKzc1LDk3IEBAIHN0YXRpYyB2b2lkIHBnc3RhdF9i ZXNodXRkb3duX2hvb2soaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRf cmVhZF9jdXJyZW50X3N0YXR1cyh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9zZXR1cF9iYWNr ZW5kX3N0YXR1c19jb250ZXh0KHZvaWQpOwogCitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2htZW1Jbml0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2htZW1BdHRhY2godm9pZCAq YXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQmFja2VuZFN0YXR1c1NobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gQmFja2VuZFN0YXR1c1NobWVtUmVxdWVzdCwKKwkuaW5pdF9m biA9IEJhY2tlbmRTdGF0dXNTaG1lbUluaXQsCisJLmF0dGFjaF9mbiA9IEJhY2tlbmRTdGF0dXNT aG1lbUF0dGFjaCwKK307CiAKIC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVk ZWQgYnkgQmFja2VuZFN0YXR1c1NobWVtSW5pdC4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkg bmVlZHMgZm9yIGJhY2tlbmQgc3RhdHVzIHJlcG9ydGluZy4KICAqLwotU2l6ZQotQmFja2VuZFN0 YXR1c1NobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0JhY2tlbmRTdGF0dXNTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemU7Ci0KLQkvKiBCYWNrZW5kU3RhdHVzQXJyYXk6 ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRTdGF0dXMpLCBOdW1CYWNrZW5k U3RhdFNsb3RzKTsKLQkvKiBCYWNrZW5kQXBwbmFtZUJ1ZmZlcjogKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwKLQkJCQkJbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMp KTsKLQkvKiBCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXI6ICovCi0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsCi0JCQkJCW11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSk7 Ci0JLyogQmFja2VuZEFjdGl2aXR5QnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAot CQkJCQltdWxfc2l6ZShwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZSwgTnVtQmFja2Vu ZFN0YXRTbG90cykpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIFN0YXR1 cyBBcnJheSIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6ZW9mKFBnQmFja2VuZFN0YXR1 cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZCYWNr ZW5kU3RhdHVzQXJyYXksCisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFj a2VuZCBBcHBsaWNhdGlvbiBOYW1lIEJ1ZmZlciIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUo TkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQg KiopICZCYWNrZW5kQXBwbmFtZUJ1ZmZlciwKKwkJKTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJCYWNrZW5kIENsaWVudCBIb3N0IE5hbWUgQnVmZmVyIiwKKwkJCQkJICAgLnNpemUg PSBtdWxfc2l6ZShOQU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5w dHIgPSAodm9pZCAqKikgJkJhY2tlbmRDbGllbnRIb3N0bmFtZUJ1ZmZlciwKKwkJKTsKKworCUJh Y2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUgPSBtdWxfc2l6ZShwZ3N0YXRfdHJhY2tfYWN0aXZpdHlf cXVlcnlfc2l6ZSwKKwkJCQkJCQkJCQkgTnVtQmFja2VuZFN0YXRTbG90cyk7CisJU2htZW1SZXF1 ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgQWN0aXZpdHkgQnVmZmVyIiwKKwkJCQkJICAgLnNp emUgPSBCYWNrZW5kQWN0aXZpdHlCdWZmZXJTaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZCYWNrZW5kQWN0aXZpdHlCdWZmZXIKKwkJKTsKKwogI2lmZGVmIFVTRV9TU0wKLQkvKiBCYWNr ZW5kU3NsU3RhdHVzQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAotCQkJCQltdWxf c2l6ZShzaXplb2YoUGdCYWNrZW5kU1NMU3RhdHVzKSwgTnVtQmFja2VuZFN0YXRTbG90cykpOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIFNTTCBTdGF0dXMgQnVmZmVyIiwK KwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU1NMU3RhdHVzKSwgTnVt QmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tlbmRTc2xT dGF0dXNCdWZmZXIsCisJCSk7CiAjZW5kaWYKKwogI2lmZGVmIEVOQUJMRV9HU1MKLQkvKiBCYWNr ZW5kR3NzU3RhdHVzQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAotCQkJCQltdWxf c2l6ZShzaXplb2YoUGdCYWNrZW5kR1NTU3RhdHVzKSwgTnVtQmFja2VuZFN0YXRTbG90cykpOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIEdTUyBTdGF0dXMgQnVmZmVyIiwK KwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kR1NTU3RhdHVzKSwgTnVt QmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tlbmRHc3NT dGF0dXNCdWZmZXIsCisJCSk7CiAjZW5kaWYKLQlyZXR1cm4gc2l6ZTsKIH0KIAogLyoKICAqIElu aXRpYWxpemUgdGhlIHNoYXJlZCBzdGF0dXMgYXJyYXkgYW5kIHNldmVyYWwgc3RyaW5nIGJ1ZmZl cnMKICAqIGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCiAgKi8KLXZvaWQKLUJhY2tlbmRTdGF0 dXNTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitCYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZv aWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCWJvb2wJCWZvdW5kOwogCWludAkJCWk7CiAJY2hh cgkgICAqYnVmZmVyOwogCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIGFycmF5 ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRTdGF0dXMpLCBOdW1CYWNrZW5k U3RhdFNsb3RzKTsKLQlCYWNrZW5kU3RhdHVzQXJyYXkgPSAoUGdCYWNrZW5kU3RhdHVzICopCi0J CVNobWVtSW5pdFN0cnVjdCgiQmFja2VuZCBTdGF0dXMgQXJyYXkiLCBzaXplLCAmZm91bmQpOwot Ci0JaWYgKCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIHN0X2FwcG5hbWUgcG9pbnRlcnMuICovCisJ YnVmZmVyID0gQmFja2VuZEFwcG5hbWVCdWZmZXI7CisJZm9yIChpID0gMDsgaSA8IE51bUJhY2tl bmRTdGF0U2xvdHM7IGkrKykKIAl7Ci0JCS8qCi0JCSAqIFdlJ3JlIHRoZSBmaXJzdCAtIGluaXRp YWxpemUuCi0JCSAqLwotCQlNZW1TZXQoQmFja2VuZFN0YXR1c0FycmF5LCAwLCBzaXplKTsKLQl9 Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgYXBwbmFtZSBidWZmZXIgKi8K LQlzaXplID0gbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCUJh Y2tlbmRBcHBuYW1lQnVmZmVyID0gKGNoYXIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJCYWNrZW5k IEFwcGxpY2F0aW9uIE5hbWUgQnVmZmVyIiwgc2l6ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQp Ci0JewotCQlNZW1TZXQoQmFja2VuZEFwcG5hbWVCdWZmZXIsIDAsIHNpemUpOwotCi0JCS8qIElu aXRpYWxpemUgc3RfYXBwbmFtZSBwb2ludGVycy4gKi8KLQkJYnVmZmVyID0gQmFja2VuZEFwcG5h bWVCdWZmZXI7Ci0JCWZvciAoaSA9IDA7IGkgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCi0J CXsKLQkJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5zdF9hcHBuYW1lID0gYnVmZmVyOwotCQkJYnVm ZmVyICs9IE5BTUVEQVRBTEVOOwotCQl9CisJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5zdF9hcHBu YW1lID0gYnVmZmVyOworCQlidWZmZXIgKz0gTkFNRURBVEFMRU47CiAJfQogCi0JLyogQ3JlYXRl IG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIGNsaWVudCBob3N0bmFtZSBidWZmZXIgKi8KLQlzaXpl ID0gbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCUJhY2tlbmRD bGllbnRIb3N0bmFtZUJ1ZmZlciA9IChjaGFyICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQmFja2Vu ZCBDbGllbnQgSG9zdCBOYW1lIEJ1ZmZlciIsIHNpemUsICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5k KQorCS8qIEluaXRpYWxpemUgc3RfY2xpZW50aG9zdG5hbWUgcG9pbnRlcnMuICovCisJYnVmZmVy ID0gQmFja2VuZENsaWVudEhvc3RuYW1lQnVmZmVyOworCWZvciAoaSA9IDA7IGkgPCBOdW1CYWNr ZW5kU3RhdFNsb3RzOyBpKyspCiAJewotCQlNZW1TZXQoQmFja2VuZENsaWVudEhvc3RuYW1lQnVm ZmVyLCAwLCBzaXplKTsKLQotCQkvKiBJbml0aWFsaXplIHN0X2NsaWVudGhvc3RuYW1lIHBvaW50 ZXJzLiAqLwotCQlidWZmZXIgPSBCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXI7Ci0JCWZvciAo aSA9IDA7IGkgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCi0JCXsKLQkJCUJhY2tlbmRTdGF0 dXNBcnJheVtpXS5zdF9jbGllbnRob3N0bmFtZSA9IGJ1ZmZlcjsKLQkJCWJ1ZmZlciArPSBOQU1F REFUQUxFTjsKLQkJfQorCQlCYWNrZW5kU3RhdHVzQXJyYXlbaV0uc3RfY2xpZW50aG9zdG5hbWUg PSBidWZmZXI7CisJCWJ1ZmZlciArPSBOQU1FREFUQUxFTjsKIAl9CiAKLQkvKiBDcmVhdGUgb3Ig YXR0YWNoIHRvIHRoZSBzaGFyZWQgYWN0aXZpdHkgYnVmZmVyICovCi0JQmFja2VuZEFjdGl2aXR5 QnVmZmVyU2l6ZSA9IG11bF9zaXplKHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplLAot CQkJCQkJCQkJCSBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kQWN0aXZpdHlCdWZmZXIg PSAoY2hhciAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tlbmQgQWN0aXZpdHkgQnVmZmVyIiwK LQkJCQkJCUJhY2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUsCi0JCQkJCQkmZm91bmQpOwotCi0JaWYg KCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIHN0X2FjdGl2aXR5IHBvaW50ZXJzLiAqLworCWJ1ZmZl ciA9IEJhY2tlbmRBY3Rpdml0eUJ1ZmZlcjsKKwlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0 YXRTbG90czsgaSsrKQogCXsKLQkJTWVtU2V0KEJhY2tlbmRBY3Rpdml0eUJ1ZmZlciwgMCwgQmFj a2VuZEFjdGl2aXR5QnVmZmVyU2l6ZSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBzdF9hY3Rpdml0eSBw b2ludGVycy4gKi8KLQkJYnVmZmVyID0gQmFja2VuZEFjdGl2aXR5QnVmZmVyOwotCQlmb3IgKGkg PSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90czsgaSsrKQotCQl7Ci0JCQlCYWNrZW5kU3RhdHVz QXJyYXlbaV0uc3RfYWN0aXZpdHlfcmF3ID0gYnVmZmVyOwotCQkJYnVmZmVyICs9IHBnc3RhdF90 cmFja19hY3Rpdml0eV9xdWVyeV9zaXplOwotCQl9CisJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5z dF9hY3Rpdml0eV9yYXcgPSBidWZmZXI7CisJCWJ1ZmZlciArPSBwZ3N0YXRfdHJhY2tfYWN0aXZp dHlfcXVlcnlfc2l6ZTsKIAl9CiAKICNpZmRlZiBVU0VfU1NMCi0JLyogQ3JlYXRlIG9yIGF0dGFj aCB0byB0aGUgc2hhcmVkIFNTTCBzdGF0dXMgYnVmZmVyICovCi0Jc2l6ZSA9IG11bF9zaXplKHNp emVvZihQZ0JhY2tlbmRTU0xTdGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5k U3NsU3RhdHVzQnVmZmVyID0gKFBnQmFja2VuZFNTTFN0YXR1cyAqKQotCQlTaG1lbUluaXRTdHJ1 Y3QoIkJhY2tlbmQgU1NMIFN0YXR1cyBCdWZmZXIiLCBzaXplLCAmZm91bmQpOwotCi0JaWYgKCFm b3VuZCkKIAl7CiAJCVBnQmFja2VuZFNTTFN0YXR1cyAqcHRyOwogCi0JCU1lbVNldChCYWNrZW5k U3NsU3RhdHVzQnVmZmVyLCAwLCBzaXplKTsKLQogCQkvKiBJbml0aWFsaXplIHN0X3NzbHN0YXR1 cyBwb2ludGVycy4gKi8KIAkJcHRyID0gQmFja2VuZFNzbFN0YXR1c0J1ZmZlcjsKIAkJZm9yIChp ID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkrKykKQEAgLTIxMSwxNyArMTc3LDkgQEAg QmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkKQogI2VuZGlmCiAKICNpZmRlZiBFTkFCTEVfR1NT Ci0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIEdTU0FQSSBzdGF0dXMgYnVmZmVy ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRHU1NTdGF0dXMpLCBOdW1CYWNr ZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kR3NzU3RhdHVzQnVmZmVyID0gKFBnQmFja2VuZEdTU1N0 YXR1cyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tlbmQgR1NTIFN0YXR1cyBCdWZmZXIiLCBz aXplLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKIAl7CiAJCVBnQmFja2VuZEdTU1N0YXR1cyAq cHRyOwogCi0JCU1lbVNldChCYWNrZW5kR3NzU3RhdHVzQnVmZmVyLCAwLCBzaXplKTsKLQogCQkv KiBJbml0aWFsaXplIHN0X2dzc3N0YXR1cyBwb2ludGVycy4gKi8KIAkJcHRyID0gQmFja2VuZEdz c1N0YXR1c0J1ZmZlcjsKIAkJZm9yIChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkr KykKQEAgLTIzMyw2ICsxOTEsMTMgQEAgQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkKQogI2Vu ZGlmCiB9CiAKK3N0YXRpYyB2b2lkCitCYWNrZW5kU3RhdHVzU2htZW1BdHRhY2godm9pZCAqYXJn KQoreworCUJhY2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUgPSBtdWxfc2l6ZShwZ3N0YXRfdHJhY2tf YWN0aXZpdHlfcXVlcnlfc2l6ZSwKKwkJCQkJCQkJCQkgTnVtQmFja2VuZFN0YXRTbG90cyk7Cit9 CisKIC8qCiAgKiBJbml0aWFsaXplIHBnc3RhdHMgYmFja2VuZCBhY3Rpdml0eSBzdGF0ZSwgYW5k IHNldCB1cCBvdXIgb24tcHJvYy1leGl0CiAgKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3Rn cmVzIGFuZCBBdXhpbGlhcnlQcm9jZXNzTWFpbi4gIE15UHJvY051bWJlciBtdXN0CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jCmluZGV4IDMzZmJkY2E5NjA5Li45NTVm YWY1ZWJjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3No bWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMKQEAg LTE0LDYgKzE0LDcgQEAKIAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIgogCkBAIC01 Nyw2ICs1OCwxMyBAQCBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVsZWFzZV9tYXRjaGluZ19lbnRyeV9y ZWZzKGJvb2wgZGlzY2FyZF9wZW5kaW5nLCBSZWxlYXNlTWF0YwogCiBzdGF0aWMgdm9pZCBwZ3N0 YXRfc2V0dXBfbWVtY3h0KHZvaWQpOwogCitzdGF0aWMgdm9pZCBTdGF0c1NobWVtUmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgU3RhdHNTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29u c3QgU2htZW1DYWxsYmFja3MgU3RhdHNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IFN0YXRzU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU3RhdHNTaG1lbUluaXQsCit9OwogCiAv KiBwYXJhbWV0ZXIgZm9yIHRoZSBzaGFyZWQgaGFzaCAqLwogc3RhdGljIGNvbnN0IGRzaGFzaF9w YXJhbWV0ZXJzIGRzaF9wYXJhbXMgPSB7CkBAIC0xMjMsNyArMTMxLDcgQEAgcGdzdGF0X2RzYV9p bml0X3NpemUodm9pZCkKIC8qCiAgKiBDb21wdXRlIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVk IGZvciBjdW11bGF0aXZlIHN0YXRpc3RpY3MKICAqLwotU2l6ZQorc3RhdGljIFNpemUKIFN0YXRz U2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc3o7CkBAIC0xNDksMTAyICsxNTcsOTggQEAgU3Rh dHNTaG1lbVNpemUodm9pZCkKIAlyZXR1cm4gc3o7CiB9CiAKKy8qCisgKiBSZWdpc3RlciBzaGFy ZWQgbWVtb3J5IGFyZWEgZm9yIGN1bXVsYXRpdmUgc3RhdGlzdGljcworICovCitzdGF0aWMgdm9p ZAorU3RhdHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJTaGFyZWQgTWVtb3J5IFN0YXRzIiwKKwkJCQkJICAgLnNpemUgPSBTdGF0c1NobWVt U2l6ZSgpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZwZ1N0YXRMb2NhbC5zaG1lbSwKKwkJ KTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzIHN5c3RlbSBk dXJpbmcgc3RhcnR1cAogICovCi12b2lkCi1TdGF0c1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK1N0YXRzU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQlTaXplCQlz ejsKKwlkc2FfYXJlYSAgICpkc2E7CisJZHNoYXNoX3RhYmxlICpkc2g7CisJUGdTdGF0X1NobWVt Q29udHJvbCAqY3RsID0gcGdTdGF0TG9jYWwuc2htZW07CisJY2hhcgkgICAqcCA9IChjaGFyICop IGN0bDsKIAotCXN6ID0gU3RhdHNTaG1lbVNpemUoKTsKLQlwZ1N0YXRMb2NhbC5zaG1lbSA9IChQ Z1N0YXRfU2htZW1Db250cm9sICopCi0JCVNobWVtSW5pdFN0cnVjdCgiU2hhcmVkIE1lbW9yeSBT dGF0cyIsIHN6LCAmZm91bmQpOworCS8qIHRoZSBhbGxvY2F0aW9uIG9mIHBnU3RhdExvY2FsLnNo bWVtIGl0c2VsZiAqLworCXAgKz0gTUFYQUxJR04oc2l6ZW9mKFBnU3RhdF9TaG1lbUNvbnRyb2wp KTsKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlkc2FfYXJlYSAgICpkc2E7Ci0J CWRzaGFzaF90YWJsZSAqZHNoOwotCQlQZ1N0YXRfU2htZW1Db250cm9sICpjdGwgPSBwZ1N0YXRM b2NhbC5zaG1lbTsKLQkJY2hhcgkgICAqcCA9IChjaGFyICopIGN0bDsKKwkvKgorCSAqIENyZWF0 ZSBhIHNtYWxsIGRzYSBhbGxvY2F0aW9uIGluIHBsYWluIHNoYXJlZCBtZW1vcnkuIFRoaXMgaXMg cmVxdWlyZWQKKwkgKiBiZWNhdXNlIHBvc3RtYXN0ZXIgY2Fubm90IHVzZSBkc20gc2VnbWVudHMu IEl0IGFsc28gcHJvdmlkZXMgYSBzbWFsbAorCSAqIGVmZmljaWVuY3kgd2luLgorCSAqLworCWN0 bC0+cmF3X2RzYV9hcmVhID0gcDsKKwlkc2EgPSBkc2FfY3JlYXRlX2luX3BsYWNlKGN0bC0+cmF3 X2RzYV9hcmVhLAorCQkJCQkJCSAgcGdzdGF0X2RzYV9pbml0X3NpemUoKSwKKwkJCQkJCQkgIExX VFJBTkNIRV9QR1NUQVRTX0RTQSwgTlVMTCk7CisJZHNhX3Bpbihkc2EpOwogCi0JCUFzc2VydCgh Zm91bmQpOworCS8qCisJICogVG8gZW5zdXJlIGRzaGFzaCBpcyBjcmVhdGVkIGluICJwbGFpbiIg c2hhcmVkIG1lbW9yeSwgdGVtcG9yYXJpbHkgbGltaXQKKwkgKiBzaXplIG9mIGRzYSB0byB0aGUg aW5pdGlhbCBzaXplIG9mIHRoZSBkc2EuCisJICovCisJZHNhX3NldF9zaXplX2xpbWl0KGRzYSwg cGdzdGF0X2RzYV9pbml0X3NpemUoKSk7CiAKLQkJLyogdGhlIGFsbG9jYXRpb24gb2YgcGdTdGF0 TG9jYWwuc2htZW0gaXRzZWxmICovCi0JCXAgKz0gTUFYQUxJR04oc2l6ZW9mKFBnU3RhdF9TaG1l bUNvbnRyb2wpKTsKKwkvKgorCSAqIFdpdGggdGhlIGxpbWl0IGluIHBsYWNlLCBjcmVhdGUgdGhl IGRzaGFzaCB0YWJsZS4gWFhYOiBJdCdkIGJlIG5pY2UgaWYKKwkgKiB0aGVyZSB3ZXJlIGRzaGFz aF9jcmVhdGVfaW5fcGxhY2UoKS4KKwkgKi8KKwlkc2ggPSBkc2hhc2hfY3JlYXRlKGRzYSwgJmRz aF9wYXJhbXMsIE5VTEwpOworCWN0bC0+aGFzaF9oYW5kbGUgPSBkc2hhc2hfZ2V0X2hhc2hfdGFi bGVfaGFuZGxlKGRzaCk7CiAKLQkJLyoKLQkJICogQ3JlYXRlIGEgc21hbGwgZHNhIGFsbG9jYXRp b24gaW4gcGxhaW4gc2hhcmVkIG1lbW9yeS4gVGhpcyBpcwotCQkgKiByZXF1aXJlZCBiZWNhdXNl IHBvc3RtYXN0ZXIgY2Fubm90IHVzZSBkc20gc2VnbWVudHMuIEl0IGFsc28KLQkJICogcHJvdmlk ZXMgYSBzbWFsbCBlZmZpY2llbmN5IHdpbi4KLQkJICovCi0JCWN0bC0+cmF3X2RzYV9hcmVhID0g cDsKLQkJZHNhID0gZHNhX2NyZWF0ZV9pbl9wbGFjZShjdGwtPnJhd19kc2FfYXJlYSwKLQkJCQkJ CQkJICBwZ3N0YXRfZHNhX2luaXRfc2l6ZSgpLAotCQkJCQkJCQkgIExXVFJBTkNIRV9QR1NUQVRT X0RTQSwgTlVMTCk7Ci0JCWRzYV9waW4oZHNhKTsKKwkvKiBsaWZ0IGxpbWl0IHNldCBhYm92ZSAq LworCWRzYV9zZXRfc2l6ZV9saW1pdChkc2EsIC0xKTsKIAotCQkvKgotCQkgKiBUbyBlbnN1cmUg ZHNoYXNoIGlzIGNyZWF0ZWQgaW4gInBsYWluIiBzaGFyZWQgbWVtb3J5LCB0ZW1wb3JhcmlseQot CQkgKiBsaW1pdCBzaXplIG9mIGRzYSB0byB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBkc2EuCi0J CSAqLwotCQlkc2Ffc2V0X3NpemVfbGltaXQoZHNhLCBwZ3N0YXRfZHNhX2luaXRfc2l6ZSgpKTsK KwkvKgorCSAqIFBvc3RtYXN0ZXIgd2lsbCBuZXZlciBhY2Nlc3MgdGhlc2UgYWdhaW4sIHRodXMg ZnJlZSB0aGUgbG9jYWwKKwkgKiBkc2EvZHNoYXNoIHJlZmVyZW5jZXMuCisJICovCisJZHNoYXNo X2RldGFjaChkc2gpOworCWRzYV9kZXRhY2goZHNhKTsKIAotCQkvKgotCQkgKiBXaXRoIHRoZSBs aW1pdCBpbiBwbGFjZSwgY3JlYXRlIHRoZSBkc2hhc2ggdGFibGUuIFhYWDogSXQnZCBiZSBuaWNl Ci0JCSAqIGlmIHRoZXJlIHdlcmUgZHNoYXNoX2NyZWF0ZV9pbl9wbGFjZSgpLgotCQkgKi8KLQkJ ZHNoID0gZHNoYXNoX2NyZWF0ZShkc2EsICZkc2hfcGFyYW1zLCBOVUxMKTsKLQkJY3RsLT5oYXNo X2hhbmRsZSA9IGRzaGFzaF9nZXRfaGFzaF90YWJsZV9oYW5kbGUoZHNoKTsKKwlwZ19hdG9taWNf aW5pdF91NjQoJmN0bC0+Z2NfcmVxdWVzdF9jb3VudCwgMSk7CiAKLQkJLyogbGlmdCBsaW1pdCBz ZXQgYWJvdmUgKi8KLQkJZHNhX3NldF9zaXplX2xpbWl0KGRzYSwgLTEpOworCS8qIERvIHRoZSBw ZXIta2luZCBpbml0aWFsaXphdGlvbiAqLworCWZvciAoUGdTdGF0X0tpbmQga2luZCA9IFBHU1RB VF9LSU5EX01JTjsga2luZCA8PSBQR1NUQVRfS0lORF9NQVg7IGtpbmQrKykKKwl7CisJCWNvbnN0 IFBnU3RhdF9LaW5kSW5mbyAqa2luZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7 CisJCWNoYXIJICAgKnB0cjsKIAotCQkvKgotCQkgKiBQb3N0bWFzdGVyIHdpbGwgbmV2ZXIgYWNj ZXNzIHRoZXNlIGFnYWluLCB0aHVzIGZyZWUgdGhlIGxvY2FsCi0JCSAqIGRzYS9kc2hhc2ggcmVm ZXJlbmNlcy4KLQkJICovCi0JCWRzaGFzaF9kZXRhY2goZHNoKTsKLQkJZHNhX2RldGFjaChkc2Ep OworCQlpZiAoIWtpbmRfaW5mbykKKwkJCWNvbnRpbnVlOwogCi0JCXBnX2F0b21pY19pbml0X3U2 NCgmY3RsLT5nY19yZXF1ZXN0X2NvdW50LCAxKTsKKwkJLyogaW5pdGlhbGl6ZSBlbnRyeSBjb3Vu dCB0cmFja2luZyAqLworCQlpZiAoa2luZF9pbmZvLT50cmFja19lbnRyeV9jb3VudCkKKwkJCXBn X2F0b21pY19pbml0X3U2NCgmY3RsLT5lbnRyeV9jb3VudHNba2luZCAtIDFdLCAwKTsKIAotCQkv KiBEbyB0aGUgcGVyLWtpbmQgaW5pdGlhbGl6YXRpb24gKi8KLQkJZm9yIChQZ1N0YXRfS2luZCBr aW5kID0gUEdTVEFUX0tJTkRfTUlOOyBraW5kIDw9IFBHU1RBVF9LSU5EX01BWDsga2luZCsrKQor CQkvKiBpbml0aWFsaXplIGZpeGVkLW51bWJlcmVkIHN0YXRzICovCisJCWlmIChraW5kX2luZm8t PmZpeGVkX2Ftb3VudCkKIAkJewotCQkJY29uc3QgUGdTdGF0X0tpbmRJbmZvICpraW5kX2luZm8g PSBwZ3N0YXRfZ2V0X2tpbmRfaW5mbyhraW5kKTsKLQkJCWNoYXIJICAgKnB0cjsKLQotCQkJaWYg KCFraW5kX2luZm8pCi0JCQkJY29udGludWU7Ci0KLQkJCS8qIGluaXRpYWxpemUgZW50cnkgY291 bnQgdHJhY2tpbmcgKi8KLQkJCWlmIChraW5kX2luZm8tPnRyYWNrX2VudHJ5X2NvdW50KQotCQkJ CXBnX2F0b21pY19pbml0X3U2NCgmY3RsLT5lbnRyeV9jb3VudHNba2luZCAtIDFdLCAwKTsKLQot CQkJLyogaW5pdGlhbGl6ZSBmaXhlZC1udW1iZXJlZCBzdGF0cyAqLwotCQkJaWYgKGtpbmRfaW5m by0+Zml4ZWRfYW1vdW50KQorCQkJaWYgKHBnc3RhdF9pc19raW5kX2J1aWx0aW4oa2luZCkpCisJ CQkJcHRyID0gKChjaGFyICopIGN0bCkgKyBraW5kX2luZm8tPnNoYXJlZF9jdGxfb2ZmOworCQkJ ZWxzZQogCQkJewotCQkJCWlmIChwZ3N0YXRfaXNfa2luZF9idWlsdGluKGtpbmQpKQotCQkJCQlw dHIgPSAoKGNoYXIgKikgY3RsKSArIGtpbmRfaW5mby0+c2hhcmVkX2N0bF9vZmY7Ci0JCQkJZWxz ZQotCQkJCXsKLQkJCQkJaW50CQkJaWR4ID0ga2luZCAtIFBHU1RBVF9LSU5EX0NVU1RPTV9NSU47 Ci0KLQkJCQkJQXNzZXJ0KGtpbmRfaW5mby0+c2hhcmVkX3NpemUgIT0gMCk7Ci0JCQkJCWN0bC0+ Y3VzdG9tX2RhdGFbaWR4XSA9IFNobWVtQWxsb2Moa2luZF9pbmZvLT5zaGFyZWRfc2l6ZSk7Ci0J CQkJCXB0ciA9IGN0bC0+Y3VzdG9tX2RhdGFbaWR4XTsKLQkJCQl9Ci0KLQkJCQlraW5kX2luZm8t PmluaXRfc2htZW1fY2IocHRyKTsKKwkJCQlpbnQJCQlpZHggPSBraW5kIC0gUEdTVEFUX0tJTkRf Q1VTVE9NX01JTjsKKworCQkJCUFzc2VydChraW5kX2luZm8tPnNoYXJlZF9zaXplICE9IDApOwor CQkJCWN0bC0+Y3VzdG9tX2RhdGFbaWR4XSA9IFNobWVtQWxsb2Moa2luZF9pbmZvLT5zaGFyZWRf c2l6ZSk7CisJCQkJcHRyID0gY3RsLT5jdXN0b21fZGF0YVtpZHhdOwogCQkJfQorCisJCQlraW5k X2luZm8tPmluaXRfc2htZW1fY2IocHRyKTsKIAkJfQogCX0KLQllbHNlCi0JewotCQlBc3NlcnQo Zm91bmQpOwotCX0KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCmluZGV4IDJiNzY5Njc3NzZjLi45NTYzNWM3ZjU2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z aG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAtOTUsNTkgKzk2 LDQ3IEBAIHN0YXRpYyBXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqV2FpdEV2ZW50Q3VzdG9t Q291bnRlcjsKIHN0YXRpYyB1aW50MzIgV2FpdEV2ZW50Q3VzdG9tTmV3KHVpbnQzMiBjbGFzc0lk LCBjb25zdCBjaGFyICp3YWl0X2V2ZW50X25hbWUpOwogc3RhdGljIGNvbnN0IGNoYXIgKkdldFdh aXRFdmVudEN1c3RvbUlkZW50aWZpZXIodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CiAKK3N0YXRp YyB2b2lkIFdhaXRFdmVudEN1c3RvbVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2Fs bGJhY2tzIFdhaXRFdmVudEN1c3RvbVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0g V2FpdEV2ZW50Q3VzdG9tU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gV2FpdEV2ZW50Q3VzdG9t U2htZW1Jbml0LAorfTsKKwogLyoKLSAqICBSZXR1cm4gdGhlIHNwYWNlIGZvciBkeW5hbWljIHNo YXJlZCBoYXNoIHRhYmxlcyBhbmQgZHluYW1pYyBhbGxvY2F0aW9uIGNvdW50ZXIuCisgKiBSZWdp c3RlciBzaG1lbSBzcGFjZSBmb3IgZHluYW1pYyBzaGFyZWQgaGFzaCBhbmQgZHluYW1pYyBhbGxv Y2F0aW9uIGNvdW50ZXIuCiAgKi8KLVNpemUKLVdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK1dhaXRFdmVudEN1c3RvbVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7 Ci0JU2l6ZQkJc3o7Ci0KLQlzeiA9IE1BWEFMSUdOKHNpemVvZihXYWl0RXZlbnRDdXN0b21Db3Vu dGVyRGF0YSkpOwotCXN6ID0gYWRkX3NpemUoc3osIGhhc2hfZXN0aW1hdGVfc2l6ZShXQUlUX0VW RU5UX0NVU1RPTV9IQVNIX1NJWkUsCi0JCQkJCQkJCQkJIHNpemVvZihXYWl0RXZlbnRDdXN0b21F bnRyeUJ5SW5mbykpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBoYXNoX2VzdGltYXRlX3NpemUoV0FJ VF9FVkVOVF9DVVNUT01fSEFTSF9TSVpFLAotCQkJCQkJCQkJCSBzaXplb2YoV2FpdEV2ZW50Q3Vz dG9tRW50cnlCeU5hbWUpKSk7Ci0JcmV0dXJuIHN6OworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9m KFdhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAm V2FpdEV2ZW50Q3VzdG9tQ291bnRlciwKKwkJKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0g IldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZlbnQgaW5mb3JtYXRpb24iLAorCQkJCQkg LnB0ciA9ICZXYWl0RXZlbnRDdXN0b21IYXNoQnlJbmZvLAorCQkJCQkgLm5lbGVtcyA9IFdBSVRf RVZFTlRfQ1VTVE9NX0hBU0hfU0laRSwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVv Zih1aW50MzIpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50 Q3VzdG9tRW50cnlCeUluZm8pLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTLAorCQkpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUgPSAiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgbmFtZSIsCisJCQkJCSAucHRyID0gJldhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUs CisJCQkJCSAubmVsZW1zID0gV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9TSVpFLAorCS8qIGtleSBp cyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9 IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSksCisJCQkJCSAuaGFzaF9mbGFncyA9 IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUywKKwkJKTsKIH0KIAotLyoKLSAqIEFsbG9jYXRlIHNo bWVtIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoIGFuZCBkeW5hbWljIGFsbG9jYXRpb24g Y291bnRlci4KLSAqLwotdm9pZAotV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCitzdGF0 aWMgdm9pZAorV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZDsKLQlIQVNIQ1RMCQlpbmZvOwotCi0JV2FpdEV2ZW50Q3VzdG9tQ291bnRlciA9IChXYWl0 RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIldhaXRFdmVudEN1 c3RvbUNvdW50ZXJEYXRhIiwKLQkJCQkJCXNpemVvZihXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0 YSksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyogaW5pdGlhbGl6ZSB0aGUgYWxs b2NhdGlvbiBjb3VudGVyIGFuZCBpdHMgc3BpbmxvY2suICovCi0JCVdhaXRFdmVudEN1c3RvbUNv dW50ZXItPm5leHRJZCA9IFdBSVRfRVZFTlRfQ1VTVE9NX0lOSVRJQUxfSUQ7Ci0JCVNwaW5Mb2Nr SW5pdCgmV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+bXV0ZXgpOwotCX0KLQotCS8qIGluaXRpYWxp emUgb3IgYXR0YWNoIHRoZSBoYXNoIHRhYmxlcyB0byBzdG9yZSBjdXN0b20gd2FpdCBldmVudHMg Ki8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YodWludDMyKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5SW5mbyk7Ci0JV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5 SW5mbyA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZl bnQgaW5mb3JtYXRpb24iLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfU0laRSwKLQkJ CQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKLQotCS8qIGtleSBp cyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoY2hh cltOQU1FREFUQUxFTl0pOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3Rv bUVudHJ5QnlOYW1lKTsKLQlXYWl0RXZlbnRDdXN0b21IYXNoQnlOYW1lID0KLQkJU2htZW1Jbml0 SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIsCi0JCQkJCSAgV0FJVF9FVkVOVF9D VVNUT01fSEFTSF9TSVpFLAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJLyogaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiBjb3VudGVyIGFuZCBpdHMg c3BpbmxvY2suICovCisJV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+bmV4dElkID0gV0FJVF9FVkVO VF9DVVNUT01fSU5JVElBTF9JRDsKKwlTcGluTG9ja0luaXQoJldhaXRFdmVudEN1c3RvbUNvdW50 ZXItPm11dGV4KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv aW5qZWN0aW9uX3BvaW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2lu dC5jCmluZGV4IGMwNmIwZTliODAwLi5hN2M5OWUwOTdlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2luamVjdGlvbl9wb2ludC5jCkBAIC0xNyw2ICsxNyw3IEBACiAgKi8KICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwpA QCAtMTA5LDYgKzExMCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBJbmplY3Rpb25Qb2ludENhY2hlRW50 cnkKIAogc3RhdGljIEhUQUIgKkluamVjdGlvblBvaW50Q2FjaGUgPSBOVUxMOwogCisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKK3N0YXRpYyB2b2lkIEluamVjdGlvblBvaW50U2htZW1SZXF1 ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lk ICphcmcpOworI2VuZGlmCisKIC8qCiAgKiBpbmplY3Rpb25fcG9pbnRfY2FjaGVfYWRkCiAgKgpA QCAtMjI2LDQ1ICsyMzIsMzQgQEAgaW5qZWN0aW9uX3BvaW50X2NhY2hlX2dldChjb25zdCBjaGFy ICpuYW1lKQogfQogI2VuZGlmCQkJCQkJCS8qIFVTRV9JTkpFQ1RJT05fUE9JTlRTICovCiAKLS8q Ci0gKiBSZXR1cm4gdGhlIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoIHRhYmxlLgotICov Ci1TaXplCi1JbmplY3Rpb25Qb2ludFNobWVtU2l6ZSh2b2lkKQoteworY29uc3QgU2htZW1DYWxs YmFja3MgSW5qZWN0aW9uUG9pbnRTaG1lbUNhbGxiYWNrcyA9IHsKICNpZmRlZiBVU0VfSU5KRUNU SU9OX1BPSU5UUwotCVNpemUJCXN6ID0gMDsKLQotCXN6ID0gYWRkX3NpemUoc3osIHNpemVvZihJ bmplY3Rpb25Qb2ludHNDdGwpKTsKLQlyZXR1cm4gc3o7Ci0jZWxzZQotCXJldHVybiAwOworCS5y ZXF1ZXN0X2ZuID0gSW5qZWN0aW9uUG9pbnRTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBJbmpl Y3Rpb25Qb2ludFNobWVtSW5pdCwKICNlbmRpZgotfQorfTsKIAogLyoKLSAqIEFsbG9jYXRlIHNo bWVtIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoLgorICogUmVzZXJ2ZSBzcGFjZSBmb3Ig dGhlIGR5bmFtaWMgc2hhcmVkIGhhc2ggdGFibGUKICAqLwotdm9pZAotSW5qZWN0aW9uUG9pbnRT aG1lbUluaXQodm9pZCkKLXsKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCWJvb2wJCWZv dW5kOworc3RhdGljIHZvaWQKK0luamVjdGlvblBvaW50U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK K3sKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiSW5qZWN0aW9uUG9pbnQgaGFzaCIsCisJ CQkJCSAgIC5zaXplID0gc2l6ZW9mKEluamVjdGlvblBvaW50c0N0bCksCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJkFjdGl2ZUluamVjdGlvblBvaW50cywKKwkJKTsKK30KIAotCUFjdGl2ZUlu amVjdGlvblBvaW50cyA9IFNobWVtSW5pdFN0cnVjdCgiSW5qZWN0aW9uUG9pbnQgaGFzaCIsCi0J CQkJCQkJCQkJCXNpemVvZihJbmplY3Rpb25Qb2ludHNDdGwpLAotCQkJCQkJCQkJCQkmZm91bmQp OwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJcGdf YXRvbWljX2luaXRfdTMyKCZBY3RpdmVJbmplY3Rpb25Qb2ludHMtPm1heF9pbnVzZSwgMCk7Ci0J CWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX0lOSkVDVElPTl9QT0lOVFM7IGkrKykKLQkJCXBnX2F0 b21pY19pbml0X3U2NCgmQWN0aXZlSW5qZWN0aW9uUG9pbnRzLT5lbnRyaWVzW2ldLmdlbmVyYXRp b24sIDApOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7Ci0jZW5kaWYKK3N0YXRpYyB2b2lk CitJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJcGdfYXRvbWljX2luaXRf dTMyKCZBY3RpdmVJbmplY3Rpb25Qb2ludHMtPm1heF9pbnVzZSwgMCk7CisJZm9yIChpbnQgaSA9 IDA7IGkgPCBNQVhfSU5KRUNUSU9OX1BPSU5UUzsgaSsrKQorCQlwZ19hdG9taWNfaW5pdF91NjQo JkFjdGl2ZUluamVjdGlvblBvaW50cy0+ZW50cmllc1tpXS5nZW5lcmF0aW9uLCAwKTsKIH0KKyNl bmRpZgogCiAvKgogICogQXR0YWNoIGEgbmV3IGluamVjdGlvbiBwb2ludC4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUu aAppbmRleCBkYTc1MDNjNTdiNi4uMzA5N2U5YmIxYWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEz MDAsOCArMTMwMCw2IEBAIGV4dGVybiBCVEN5Y2xlSWQgX2J0X3ZhY3V1bV9jeWNsZWlkKFJlbGF0 aW9uIHJlbCk7CiBleHRlcm4gQlRDeWNsZUlkIF9idF9zdGFydF92YWN1dW0oUmVsYXRpb24gcmVs KTsKIGV4dGVybiB2b2lkIF9idF9lbmRfdmFjdXVtKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gdm9p ZCBfYnRfZW5kX3ZhY3V1bV9jYWxsYmFjayhpbnQgY29kZSwgRGF0dW0gYXJnKTsKLWV4dGVybiBT aXplIEJUcmVlU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQlRyZWVTaG1lbUluaXQodm9p ZCk7CiBleHRlcm4gYnl0ZWEgKmJ0b3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlk YXRlKTsKIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAog CQkJCQkgICBJbmRleEFNUHJvcGVydHkgcHJvcCwgY29uc3QgY2hhciAqcHJvcG5hbWUsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3luY3NjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9zeW5jc2Nhbi5oCmluZGV4IDI0Y2YzMzI5NGU1Li4zMmY4MzMyYWFlZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3N5bmNzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N5 bmNzY2FuLmgKQEAgLTI0LDcgKzI0LDUgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgdHJhY2Vf c3luY3NjYW47CiAKIGV4dGVybiB2b2lkIHNzX3JlcG9ydF9sb2NhdGlvbihSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGxvY2F0aW9uKTsKIGV4dGVybiBCbG9ja051bWJlciBzc19nZXRfbG9jYXRp b24oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciByZWxuYmxvY2tzKTsKLWV4dGVybiB2b2lkIFN5 bmNTY2FuU2htZW1Jbml0KHZvaWQpOwotZXh0ZXJuIFNpemUgU3luY1NjYW5TaG1lbVNpemUodm9p ZCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2UuaAppbmRleCA3NjFkNTZhNWYzZC4uMWQyZmY0 MmM5YjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCkBAIC0zMyw5ICszMyw2IEBAIHR5cGVkZWYgc3Ry dWN0IEdsb2JhbFRyYW5zYWN0aW9uRGF0YSAqR2xvYmFsVHJhbnNhY3Rpb247CiAvKiBHVUMgdmFy aWFibGUgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3ByZXBhcmVkX3hhY3RzOwogCi1l eHRlcm4gU2l6ZSBUd29QaGFzZVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFR3b1BoYXNl U2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBBdEFib3J0X1R3b3BoYXNlKHZvaWQpOwog ZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfVHdvcGhhc2Uodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4 IDRhZjM4ZTc0Y2U0Li40MzdiNGYzMjM0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yNTksOCArMjU5LDYg QEAgZXh0ZXJuIHZvaWQgSW5pdExvY2FsRGF0YUNoZWNrc3VtU3RhdGUodm9pZCk7CiBleHRlcm4g dm9pZCBTZXRMb2NhbERhdGFDaGVja3N1bVN0YXRlKHVpbnQzMiBkYXRhX2NoZWNrc3VtX3ZlcnNp b24pOwogZXh0ZXJuIGJvb2wgR2V0RGVmYXVsdENoYXJTaWduZWRuZXNzKHZvaWQpOwogZXh0ZXJu IFhMb2dSZWNQdHIgR2V0RmFrZUxTTkZvclVubG9nZ2VkUmVsKHZvaWQpOwotZXh0ZXJuIFNpemUg WExPR1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFhMT0dTaG1lbUluaXQodm9pZCk7CiBl eHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRhX2NoZWNrc3VtX3ZlcnNpb24pOwog ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRl cm4gdm9pZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2dwcmVmZXRjaGVyLmgKaW5kZXggN2VjNDBjNGI3OGIuLjU2YTgxNjc2ZDkyIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNoZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZ3ByZWZldGNoZXIuaApAQCAtMzQsOSArMzQsNiBAQCB0eXBlZGVmIHN0cnVj dCBYTG9nUHJlZmV0Y2hlciBYTG9nUHJlZmV0Y2hlcjsKIAogZXh0ZXJuIHZvaWQgWExvZ1ByZWZl dGNoUmVjb25maWd1cmUodm9pZCk7CiAKLWV4dGVybiBzaXplX3QgWExvZ1ByZWZldGNoU2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgWExvZ1ByZWZldGNoU2htZW1Jbml0KHZvaWQpOwotCiBl eHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hSZXNldFN0YXRzKHZvaWQpOwogCiBleHRlcm4gWExvZ1By ZWZldGNoZXIgKlhMb2dQcmVmZXRjaGVyQWxsb2NhdGUoWExvZ1JlYWRlclN0YXRlICpyZWFkZXIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCmluZGV4IDI4NDIxMDZiMjg1Li5iYTc3NTBkY2Ew YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaApAQCAtMTUzLDkgKzE1Myw2IEBAIGV4dGVy biBQR0RMTElNUE9SVCBib29sIHJlYWNoZWRDb25zaXN0ZW5jeTsKIC8qIEFyZSB3ZSBjdXJyZW50 bHkgaW4gc3RhbmRieSBtb2RlPyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgU3RhbmRieU1v ZGU7CiAKLWV4dGVybiBTaXplIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2 b2lkIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKTsKLQogZXh0ZXJuIHZvaWQgSW5pdFdhbFJl Y292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsCiAJCQkJCQkJYm9vbCAqd2FzU2h1 dGRvd25fcHRyLCBib29sICpoYXZlQmFja3VwTGFiZWxfcHRyLAogCQkJCQkJCWJvb2wgKmhhdmVU YmxzcGNNYXBfcHRyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3YWl0LmgKaW5kZXggZDEyNTMxZDMyYjguLjA3MTU3 ZjIyMGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaApAQCAtMTAwLDggKzEwMCw2IEBAIHR5cGVkZWYg c3RydWN0IFdhaXRMU05TdGF0ZQogCiBleHRlcm4gUEdETExJTVBPUlQgV2FpdExTTlN0YXRlICp3 YWl0TFNOU3RhdGU7CiAKLWV4dGVybiBTaXplIFdhaXRMU05TaG1lbVNpemUodm9pZCk7Ci1leHRl cm4gdm9pZCBXYWl0TFNOU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0Q3Vy cmVudExTTkZvcldhaXRUeXBlKFdhaXRMU05UeXBlIGxzblR5cGUpOwogZXh0ZXJuIHZvaWQgV2Fp dExTTldha2V1cChXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIGN1cnJlbnRMU04pOwog ZXh0ZXJuIHZvaWQgV2FpdExTTkNsZWFudXAodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDhlMzU0OWMzNzUyLi4yNzg2 YTdjNWZmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1 ZGUvcGdzdGF0LmgKQEAgLTU0MSwxMCArNTQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0Jh Y2tlbmRQZW5kaW5nCiAgKiBGdW5jdGlvbnMgaW4gcGdzdGF0LmMKICAqLwogCi0vKiBmdW5jdGlv bnMgY2FsbGVkIGZyb20gcG9zdG1hc3RlciAqLwotZXh0ZXJuIFNpemUgU3RhdHNTaG1lbVNpemUo dm9pZCk7Ci1leHRlcm4gdm9pZCBTdGF0c1NobWVtSW5pdCh2b2lkKTsKLQogLyogRnVuY3Rpb25z IGNhbGxlZCBkdXJpbmcgc2VydmVyIHN0YXJ0dXAgLyBzaHV0ZG93biAqLwogZXh0ZXJuIHZvaWQg cGdzdGF0X3Jlc3RvcmVfc3RhdHModm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfZGlzY2FyZF9z dGF0cyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKaW5kZXggYjIxZDExMWQ0 ZDUuLjg5NTRmNmIyOGVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjYs OCArNjYsNCBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBBdXRvVmFjV29ya2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydAogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1 bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIAkJCQkJCQkJICBPaWQg cmVsYXRpb25JZCwgQmxvY2tOdW1iZXIgYmxrbm8pOwogCi0vKiBzaGFyZWQgbWVtb3J5IHN0dWZm ICovCi1leHRlcm4gU2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQg QXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKTsKLQogI2VuZGlmCQkJCQkJCS8qIEFVVE9WQUNVVU1f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5h bHMuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXgg Yjc4OWNhZjQwMzQuLmI2MjYxYmMwMWRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2Jnd29ya2VyX2ludGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3 b3JrZXJfaW50ZXJuYWxzLmgKQEAgLTQxLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVnaXN0 ZXJlZEJnV29ya2VyCiAKIGV4dGVybiBQR0RMTElNUE9SVCBkbGlzdF9oZWFkIEJhY2tncm91bmRX b3JrZXJMaXN0OwogCi1leHRlcm4gU2l6ZSBCYWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKHZvaWQp OwotZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2 b2lkIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKTsK IGV4dGVybiB2b2lkIEZvcmdldEJhY2tncm91bmRXb3JrZXIoUmVnaXN0ZXJlZEJnV29ya2VyICpy dyk7CiBleHRlcm4gdm9pZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dv cmtlciAqcncpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5o IGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5oCmluZGV4IDQ3NDcwY2JhODkzLi4z NmVlYTBiMWFiMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5o CisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaApAQCAtMzksOSArMzksNiBA QCBleHRlcm4gYm9vbCBGb3J3YXJkU3luY1JlcXVlc3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3lu Y1JlcXVlc3RUeXBlIHR5cGUpOwogCiBleHRlcm4gdm9pZCBBYnNvcmJTeW5jUmVxdWVzdHModm9p ZCk7CiAKLWV4dGVybiBTaXplIENoZWNrcG9pbnRlclNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2 b2lkIENoZWNrcG9pbnRlclNobWVtSW5pdCh2b2lkKTsKLQogZXh0ZXJuIGJvb2wgRmlyc3RDYWxs U2luY2VMYXN0Q2hlY2twb2ludCh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIF9CR1dSSVRFUl9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0 ZS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaAppbmRleCAz NDM0OTRlZGNjOC4uMDU2MjU1Mzk2MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuaApAQCAtMTcsMTAgKzE3LDYgQEAKIAogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgogCi0vKiBTaGFyZWQgbWVtb3J5ICovCi1leHRlcm4gU2l6ZSBEYXRhQ2hl Y2tzdW1zU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgRGF0YUNoZWNrc3Vtc1NobWVtSW5p dCh2b2lkKTsKLQogLyogUG9zc2libGUgb3BlcmF0aW9ucyB0aGUgRGF0YWNoZWNrc3Vtc3dvcmtl ciBjYW4gcGVyZm9ybSAqLwogdHlwZWRlZiBlbnVtIERhdGFDaGVja3N1bXNXb3JrZXJPcGVyYXRp b24KIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmggYi9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oCmluZGV4IGZhYTc2MDljZDgxLi45NzcyYmI1NzNh MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wZ2FyY2guaAorKysgYi9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oCkBAIC0yNiw4ICsyNiw2IEBACiAjZGVmaW5lIE1B WF9YRk5fQ0hBUlMJNDAKICNkZWZpbmUgVkFMSURfWEZOX0NIQVJTICIwMTIzNDU2Nzg5QUJDREVG Lmhpc3RvcnkuYmFja3VwLnBhcnRpYWwiCiAKLWV4dGVybiBTaXplIFBnQXJjaFNobWVtU2l6ZSh2 b2lkKTsKLWV4dGVybiB2b2lkIFBnQXJjaFNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBib29sIFBn QXJjaENhblJlc3RhcnQodm9pZCk7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBQZ0FyY2hpdmVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKTsK IGV4dGVybiB2b2lkIFBnQXJjaFdha2V1cCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxz dW1tYXJpemVyLmgKaW5kZXggYTRjMDU1MDY2YjQuLmI5YTc1NWZhZGJjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaApAQCAtMTksOCArMTksNiBAQAogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgc3VtbWFyaXplX3dhbDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgd2FsX3N1 bW1hcnlfa2VlcF90aW1lOwogCi1leHRlcm4gU2l6ZSBXYWxTdW1tYXJpemVyU2htZW1TaXplKHZv aWQpOwotZXh0ZXJuIHZvaWQgV2FsU3VtbWFyaXplclNobWVtSW5pdCh2b2lkKTsKIHBnX25vcmV0 dXJuIGV4dGVybiB2b2lkIFdhbFN1bW1hcml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pOwogCiBleHRlcm4gdm9pZCBHZXRXYWxTdW1tYXJp emVyU3RhdGUoVGltZUxpbmVJRCAqc3VtbWFyaXplZF90bGksCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsY3RsLmgKaW5kZXggNDk1NTU0YzUzMmMuLjBiYzEzMDJmMTMwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbGN0bC5oCkBAIC0xNCw4ICsxNCw2IEBACiAjaWZuZGVmIExPR0lDQUxD VExfSAogI2RlZmluZSBMT0dJQ0FMQ1RMX0gKIAotZXh0ZXJuIFNpemUgTG9naWNhbERlY29kaW5n Q3RsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgTG9naWNhbERlY29kaW5nQ3RsU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cExvZ2ljYWxEZWNvZGluZ1N0YXR1cyhib29s IGxhc3Rfc3RhdHVzKTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVQcm9jZXNzWExvZ0xvZ2ljYWxJ bmZvKHZvaWQpOwogZXh0ZXJuIGJvb2wgUHJvY2Vzc0JhcnJpZXJVcGRhdGVYTG9nTG9naWNhbElu Zm8odm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4 IDUwNGI3MTA1MzZhLi41ZjBjMWI5YzY4MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgKQEAgLTE5LDkgKzE5LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogZXh0ZXJuIHZvaWQg QXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwogCi1leHRlcm4gU2l6ZSBBcHBseUxhdW5jaGVyU2htZW1TaXpl KHZvaWQpOwotZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKTsKLQogZXh0 ZXJuIHZvaWQgQXBwbHlMYXVuY2hlckZvcmdldFdvcmtlclN0YXJ0VGltZShPaWQgc3ViaWQpOwog CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyV2FrZXVwQXRDb21taXQodm9pZCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL29yaWdpbi5oCmluZGV4IGViNDZiNDFiNGI3Li5hNjlmYWY2ZWFhZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vb3JpZ2luLmgKQEAgLTg0LDggKzg0LDQgQEAgZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5f ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNv bnN0IGNoYXIgKnJlcGxvcmlnaW5faWRlbnRpZnkodWludDggaW5mbyk7CiAKLS8qIHNoYXJlZCBt ZW1vcnkgYWxsb2NhdGlvbiAqLwotZXh0ZXJuIFNpemUgUmVwbGljYXRpb25PcmlnaW5TaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpblNobWVtSW5pdCh2b2lkKTsK LQogI2VuZGlmCQkJCQkJCS8qIFBHX09SSUdJTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5k ZXggNGI0NzA5ZjZlMmMuLjFhMzU1N2RlNjA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0z MjcsMTAgKzMyNyw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Ns b3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dF9z ZWNzOwogCi0vKiBzaG1lbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KLWV4dGVybiBTaXpl IFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RzU2htZW1Jbml0KHZvaWQpOwotCiAvKiBtYW5hZ2VtZW50IG9mIGluZGl2aWR1YWwgc2xv dHMgKi8KIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdENyZWF0ZShjb25zdCBjaGFyICpuYW1l LCBib29sIGRiX3NwZWNpZmljLAogCQkJCQkJCQkgIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbmN5 IHBlcnNpc3RlbmN5LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5 bmMuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKaW5kZXggZTU0NmQwZDA1 MGQuLmQyMTIxY2QzZWQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 c3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKQEAgLTMxLDgg KzMxLDYgQEAgcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdAogZXh0ZXJuIHZvaWQgU2h1dERvd25TbG90 U3luYyh2b2lkKTsKIGV4dGVybiBib29sIFNsb3RTeW5jV29ya2VyQ2FuUmVzdGFydCh2b2lkKTsK IGV4dGVybiBib29sIElzU3luY2luZ1JlcGxpY2F0aW9uU2xvdHModm9pZCk7Ci1leHRlcm4gU2l6 ZSBTbG90U3luY1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNsb3RTeW5jU2htZW1Jbml0 KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3luY1JlcGxpY2F0aW9uU2xvdHMoV2FsUmVjZWl2ZXJDb25u ICp3cmNvbm4pOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVFNZTkNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggODVkMjRjODcyOTguLjQ3YzA3NTc0ZDRkIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTQ5MSw4ICs0OTEsNiBAQCBwZ19u b3JldHVybiBleHRlcm4gdm9pZCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cAogZXh0ZXJuIHZvaWQgV2FsUmN2UmVxdWVzdEFwcGx5UmVwbHko dm9pZCk7CiAKIC8qIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB3YWxyZWNlaXZlcmZ1bmNz LmMgKi8KLWV4dGVybiBTaXplIFdhbFJjdlNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFdh bFJjdlNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duV2FsUmN2KHZvaWQpOwog ZXh0ZXJuIGJvb2wgV2FsUmN2U3RyZWFtaW5nKHZvaWQpOwogZXh0ZXJuIGJvb2wgV2FsUmN2UnVu bmluZyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggYTRkZjNiOGUw YWUuLjg5NTJjODQ4ZDE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtNDEs OCArNDEsNiBAQCBleHRlcm4gdm9pZCBXYWxTbmRFcnJvckNsZWFudXAodm9pZCk7CiBleHRlcm4g dm9pZCBQaHlzaWNhbFdha2V1cExvZ2ljYWxXYWxTbmQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKTsKIGV4dGVybiB2b2lkIFdh bFNuZFNpZ25hbHModm9pZCk7Ci1leHRlcm4gU2l6ZSBXYWxTbmRTaG1lbVNpemUodm9pZCk7Ci1l eHRlcm4gdm9pZCBXYWxTbmRTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRXYWtl dXAoYm9vbCBwaHlzaWNhbCwgYm9vbCBsb2dpY2FsKTsKIGV4dGVybiB2b2lkIFdhbFNuZEluaXRT dG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFdhaXRTdG9wcGluZyh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sb2NrLmgKaW5kZXggZmE2OGU2ZWNlY2UuLmVlM2NiMWRjMjAzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApA QCAtMzc1LDggKzM3NSw2IEBAIHR5cGVkZWYgZW51bQogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlw ZXMKICAqLwotZXh0ZXJuIHZvaWQgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCk7Ci1leHRlcm4g U2l6ZSBMb2NrTWFuYWdlclNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRMb2NrTWFu YWdlckFjY2Vzcyh2b2lkKTsKIGV4dGVybiBMb2NrTWV0aG9kIEdldExvY2tzTWV0aG9kVGFibGUo Y29uc3QgTE9DSyAqbG9jayk7CiBleHRlcm4gTG9ja01ldGhvZCBHZXRMb2NrVGFnc01ldGhvZFRh YmxlKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3Qu aAppbmRleCBkOGUxMTc1NmE2MS4uNWUwOTI1NTJjNzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lz dGVtbGlzdC5oCkBAIC0zMiw2ICszMiw5IEBAIFBHX1NITUVNX1NVQlNZU1RFTShEU01SZWdpc3Ry eVNobWVtQ2FsbGJhY2tzKQogCiAvKiB4bG9nLCBjbG9nLCBhbmQgYnVmZmVycyAqLwogUEdfU0hN RU1fU1VCU1lTVEVNKFZhcnN1cFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFhM T0dTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShYTG9nUHJlZmV0Y2hTaG1lbUNh bGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShYTG9nUmVjb3ZlcnlTaG1lbUNhbGxiYWNrcykK IFBHX1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNU RU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShTVUJUUkFOU1No bWVtQ2FsbGJhY2tzKQpAQCAtNDAsMTIgKzQzLDE4IEBAIFBHX1NITUVNX1NVQlNZU1RFTShCdWZm ZXJNYW5hZ2VyU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oU3RyYXRlZ3lDdGxT aG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShCdWZUYWJsZVNobWVtQ2FsbGJhY2tz KQogCisvKiBsb2NrIG1hbmFnZXIgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShMb2NrTWFuYWdlclNo bWVtQ2FsbGJhY2tzKQorCiAvKiBwcmVkaWNhdGUgbG9jayBtYW5hZ2VyICovCiBQR19TSE1FTV9T VUJTWVNURU0oUHJlZGljYXRlTG9ja1NobWVtQ2FsbGJhY2tzKQogCiAvKiBwcm9jZXNzIHRhYmxl ICovCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzKQogUEdfU0hN RU1fU1VCU1lTVEVNKFByb2NBcnJheVNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVN KEJhY2tlbmRTdGF0dXNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShUd29QaGFz ZVNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJhY2tncm91bmRXb3JrZXJTaG1l bUNhbGxiYWNrcykKIAogLyogc2hhcmVkLWludmFsIG1lc3NhZ2luZyAqLwogUEdfU0hNRU1fU1VC U1lTVEVNKFNoYXJlZEludmFsU2htZW1DYWxsYmFja3MpCkBAIC01Myw5ICs2MiwyNyBAQCBQR19T SE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxiYWNrcykKIC8qIGludGVycHJvY2Vz cyBzaWduYWxpbmcgbWVjaGFuaXNtcyAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFBNU2lnbmFsU2ht ZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz KQorUEdfU0hNRU1fU1VCU1lTVEVNKENoZWNrcG9pbnRlclNobWVtQ2FsbGJhY2tzKQorUEdfU0hN RU1fU1VCU1lTVEVNKEF1dG9WYWN1dW1TaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RF TShSZXBsaWNhdGlvblNsb3RzU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oUmVw bGljYXRpb25PcmlnaW5TaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShXYWxTbmRT aG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShXYWxSY3ZTaG1lbUNhbGxiYWNrcykK K1BHX1NITUVNX1NVQlNZU1RFTShXYWxTdW1tYXJpemVyU2htZW1DYWxsYmFja3MpCitQR19TSE1F TV9TVUJTWVNURU0oUGdBcmNoU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQXBw bHlMYXVuY2hlclNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFNsb3RTeW5jU2ht ZW1DYWxsYmFja3MpCiAKIC8qIG90aGVyIG1vZHVsZXMgdGhhdCBuZWVkIHNvbWUgc2hhcmVkIG1l bW9yeSBzcGFjZSAqLworUEdfU0hNRU1fU1VCU1lTVEVNKEJUcmVlU2htZW1DYWxsYmFja3MpCitQ R19TSE1FTV9TVUJTWVNURU0oU3luY1NjYW5TaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZ U1RFTShBc3luY1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFN0YXRzU2htZW1D YWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oV2FpdEV2ZW50Q3VzdG9tU2htZW1DYWxsYmFj a3MpCitQR19TSE1FTV9TVUJTWVNURU0oSW5qZWN0aW9uUG9pbnRTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShXYWl0TFNOU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNU RU0oTG9naWNhbERlY29kaW5nQ3RsU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0o RGF0YUNoZWNrc3Vtc1NobWVtQ2FsbGJhY2tzKQogCiAvKiBBSU8gc3Vic3lzdGVtLiBUaGlzIGRl bGVnYXRlcyB0byB0aGUgbWV0aG9kLXNwZWNpZmljIGNhbGxiYWNrcyAqLwogUEdfU0hNRU1fU1VC U1lTVEVNKEFpb1NobWVtQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv YmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5k ZXggZGRkMDYzMDRlOTcuLmEzMzRlMDk2ZTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVz LmgKQEAgLTI5OCwxNCArMjk4LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRfdHJh Y2tfYWN0aXZpdHlfcXVlcnlfc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBQZ0JhY2tlbmRTdGF0 dXMgKk15QkVFbnRyeTsKIAogCi0vKiAtLS0tLS0tLS0tCi0gKiBGdW5jdGlvbnMgY2FsbGVkIGZy b20gcG9zdG1hc3RlcgotICogLS0tLS0tLS0tLQotICovCi1leHRlcm4gU2l6ZSBCYWNrZW5kU3Rh dHVzU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2 b2lkKTsKLQotCiAvKiAtLS0tLS0tLS0tCiAgKiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYmFja2Vu ZHMKICAqIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2luamVjdGlv bl9wb2ludC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaW5qZWN0aW9uX3BvaW50LmgKaW5kZXggMjdh MjUyNjUyNGYuLmZhYmQxNDU1YzNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9pbmpl Y3Rpb25fcG9pbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9pbmplY3Rpb25fcG9pbnQuaApA QCAtNDYsOSArNDYsNiBAQCB0eXBlZGVmIHZvaWQgKCpJbmplY3Rpb25Qb2ludENhbGxiYWNrKSAo Y29uc3QgY2hhciAqbmFtZSwKIAkJCQkJCQkJCQljb25zdCB2b2lkICpwcml2YXRlX2RhdGEsCiAJ CQkJCQkJCQkJdm9pZCAqYXJnKTsKIAotZXh0ZXJuIFNpemUgSW5qZWN0aW9uUG9pbnRTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lkKTsKLQog ZXh0ZXJuIHZvaWQgSW5qZWN0aW9uUG9pbnRBdHRhY2goY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJ CQkJIGNvbnN0IGNoYXIgKmxpYnJhcnksCiAJCQkJCQkJCSBjb25zdCBjaGFyICpmdW5jdGlvbiwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCAzNGMyN2NjM2RjMy4uODZlZTM0ODIyMGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKQEAgLTQyLDggKzQyLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHVp bnQzMiAqbXlfd2FpdF9ldmVudF9pbmZvOwogZXh0ZXJuIHVpbnQzMiBXYWl0RXZlbnRFeHRlbnNp b25OZXcoY29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIGV4dGVybiB1aW50MzIgV2FpdEV2 ZW50SW5qZWN0aW9uUG9pbnROZXcoY29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIAotZXh0 ZXJuIHZvaWQgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpOwotZXh0ZXJuIFNpemUgV2Fp dEV2ZW50Q3VzdG9tU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIGNoYXIgKipHZXRXYWl0RXZlbnRD dXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2FpdGV2ZW50cyk7CiAKIC8qIC0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9pbmpl Y3Rpb25fcG9pbnRzLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0 aW9uX3BvaW50cy5jCmluZGV4IGQ1OWM1YWQwNTgyLi4wZjFhZjUxMzY3MyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMuYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3BvaW50cy5jCkBA IC0xMDcsOSArMTA3LDEzIEBAIGV4dGVybiBQR0RMTEVYUE9SVCB2b2lkIGluamVjdGlvbl93YWl0 KGNvbnN0IGNoYXIgKm5hbWUsCiAvKiB0cmFjayBpZiBpbmplY3Rpb24gcG9pbnRzIGF0dGFjaGVk IGluIHRoaXMgcHJvY2VzcyBhcmUgbGlua2VkIHRvIGl0ICovCiBzdGF0aWMgYm9vbCBpbmplY3Rp b25fcG9pbnRfbG9jYWwgPSBmYWxzZTsKIAotLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxiYWNr cyAqLwotc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9o b29rID0gTlVMTDsKLXN0YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0 YXJ0dXBfaG9vayA9IE5VTEw7CitzdGF0aWMgdm9pZCBpbmplY3Rpb25fc2htZW1fcmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgaW5qZWN0aW9uX3NobWVtX2luaXQodm9pZCAqYXJnKTsK Kworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIGluamVjdGlvbl9zaG1lbV9jYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBpbmplY3Rpb25fc2htZW1fcmVxdWVzdCwKKwkuaW5pdF9mbiA9 IGluamVjdGlvbl9zaG1lbV9pbml0LAorfTsKIAogLyoKICAqIFJvdXRpbmUgZm9yIHNoYXJlZCBt ZW1vcnkgYXJlYSBpbml0aWFsaXphdGlvbiwgdXNlZCBhcyBhIGNhbGxiYWNrCkBAIC0xMjYsNDQg KzEzMCwyMyBAQCBpbmplY3Rpb25fcG9pbnRfaW5pdF9zdGF0ZSh2b2lkICpwdHIsIHZvaWQgKmFy ZykKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJnN0YXRlLT53YWl0X3BvaW50KTsKIH0KIAotLyog U2hhcmVkIG1lbW9yeSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgbW9kdWxlICovCiBzdGF0 aWMgdm9pZAotaW5qZWN0aW9uX3NobWVtX3JlcXVlc3Qodm9pZCkKK2luamVjdGlvbl9zaG1lbV9y ZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCi0JaWYgKHByZXZfc2htZW1fcmVx dWVzdF9ob29rKQotCQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vaygpOwotCi0Jc2l6ZSA9IE1BWEFM SUdOKHNpemVvZihJbmplY3Rpb25Qb2ludFNoYXJlZFN0YXRlKSk7Ci0JUmVxdWVzdEFkZGluU2ht ZW1TcGFjZShzaXplKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiaW5qZWN0aW9uX3Bv aW50cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKEluamVjdGlvblBvaW50U2hhcmVkU3RhdGUp LAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZpbmpfc3RhdGUsCisJCSk7CiB9CiAKIHN0YXRp YyB2b2lkCi1pbmplY3Rpb25fc2htZW1fc3RhcnR1cCh2b2lkKQoraW5qZWN0aW9uX3NobWVtX2lu aXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JaWYgKHByZXZfc2htZW1fc3RhcnR1 cF9ob29rKQotCQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaygpOwotCi0JLyogQ3JlYXRlIG9yIGF0 dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLwotCUxXTG9ja0FjcXVpcmUoQWRkaW5T aG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotCi0JaW5qX3N0YXRlID0gU2htZW1Jbml0U3Ry dWN0KCJpbmplY3Rpb25fcG9pbnRzIiwKLQkJCQkJCQkJc2l6ZW9mKEluamVjdGlvblBvaW50U2hh cmVkU3RhdGUpLAotCQkJCQkJCQkmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0J CSAqIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZS4gIFRoaXMgaXMgc2hhcmVkIHdp dGggdGhlIGR5bmFtaWMKLQkJICogaW5pdGlhbGl6YXRpb24gdXNpbmcgYSBEU00uCi0JCSAqLwot CQlpbmplY3Rpb25fcG9pbnRfaW5pdF9zdGF0ZShpbmpfc3RhdGUsIE5VTEwpOwotCX0KLQotCUxX TG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKKwkvKgorCSAqIEZpcnN0IHRpbWUgdGhy b3VnaCwgc28gaW5pdGlhbGl6ZS4gIFRoaXMgaXMgc2hhcmVkIHdpdGggdGhlIGR5bmFtaWMKKwkg KiBpbml0aWFsaXphdGlvbiB1c2luZyBhIERTTS4KKwkgKi8KKwlpbmplY3Rpb25fcG9pbnRfaW5p dF9zdGF0ZShpbmpfc3RhdGUsIE5VTEwpOwogfQogCiAvKgpAQCAtNjAxLDkgKzU4NCw1IEBAIF9Q R19pbml0KHZvaWQpCiAJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9w cm9ncmVzcykKIAkJcmV0dXJuOwogCi0JLyogU2hhcmVkIG1lbW9yeSBpbml0aWFsaXphdGlvbiAq LwotCXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVt X3JlcXVlc3RfaG9vayA9IGluamVjdGlvbl9zaG1lbV9yZXF1ZXN0OwotCXByZXZfc2htZW1fc3Rh cnR1cF9ob29rID0gc2htZW1fc3RhcnR1cF9ob29rOwotCXNobWVtX3N0YXJ0dXBfaG9vayA9IGlu amVjdGlvbl9zaG1lbV9zdGFydHVwOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJmluamVjdGlv bl9zaG1lbV9jYWxsYmFja3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2Fpby90ZXN0X2Fpby5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fpby5jCmlu ZGV4IGQ3NTMwNjgxMTkyLi4zNWVmYmExYTVlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2Fpby90ZXN0X2Fpby5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVz dF9haW8uYwpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9jaGVja3N1bS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY251bWJlci5oIgpAQCAtNDQsNiArNDMsNyBAQAogUEdfTU9EVUxFX01BR0lDOwogCiAKKy8q IEluIHNoYXJlZCBtZW1vcnkgKi8KIHR5cGVkZWYgc3RydWN0IEluaklvRXJyb3JTdGF0ZQogewog CUNvbmRpdGlvblZhcmlhYmxlIGN2OwpAQCAtNzQsOCArNzQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3Qg QmxvY2tzUmVhZFN0cmVhbURhdGEKIHN0YXRpYyBJbmpJb0Vycm9yU3RhdGUgKmlual9pb19lcnJv cl9zdGF0ZTsKIAogLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxiYWNrcyAqLwotc3RhdGljIHNo bWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0 YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5V TEw7CitzdGF0aWMgdm9pZCB0ZXN0X2Fpb19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCB0ZXN0X2Fpb19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCB0ZXN0 X2Fpb19zaG1lbV9hdHRhY2godm9pZCAqYXJnKTsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJh Y2tzIGlual9pb19zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSB0ZXN0X2Fpb19z aG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gdGVzdF9haW9fc2htZW1faW5pdCwKKwkuYXR0YWNo X2ZuID0gdGVzdF9haW9fc2htZW1fYXR0YWNoLAorfTsKIAogCiBzdGF0aWMgUGdBaW9IYW5kbGUg Kmxhc3RfaGFuZGxlOwpAQCAtODMsNzAgKzkwLDU1IEBAIHN0YXRpYyBQZ0Fpb0hhbmRsZSAqbGFz dF9oYW5kbGU7CiAKIAogc3RhdGljIHZvaWQKLXRlc3RfYWlvX3NobWVtX3JlcXVlc3Qodm9pZCkK K3Rlc3RfYWlvX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCWlmIChwcmV2X3NobWVtX3Jl cXVlc3RfaG9vaykKLQkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKLQotCVJlcXVlc3RBZGRp blNobWVtU3BhY2Uoc2l6ZW9mKEluaklvRXJyb3JTdGF0ZSkpOworCVNobWVtUmVxdWVzdFN0cnVj dCgubmFtZSA9ICJ0ZXN0X2FpbyBpbmplY3Rpb24gcG9pbnRzIiwKKwkJCQkJICAgLnNpemUgPSBz aXplb2YoSW5qSW9FcnJvclN0YXRlKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmaW5qX2lv X2Vycm9yX3N0YXRlLAorCQkpOwogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9haW9fc2htZW1fc3Rh cnR1cCh2b2lkKQordGVzdF9haW9fc2htZW1faW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXByZXZfc2htZW1fc3RhcnR1 cF9ob29rKCk7Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0 YXRlICovCi0JTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSk7 Ci0KLQlpbmpfaW9fZXJyb3Jfc3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoImluamVjdGlvbl9wb2lu dHMiLAotCQkJCQkJCQkJCSBzaXplb2YoSW5qSW9FcnJvclN0YXRlKSwKLQkJCQkJCQkJCQkgJmZv dW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRp YWxpemUgKi8KLQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX3Nob3J0X3JlYWQgPSBmYWxz ZTsKLQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX3Jlb3BlbiA9IGZhbHNlOwotCQlpbmpf aW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfY29tcGxldGlvbl93YWl0ID0gZmFsc2U7CisJLyogRmly c3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplICovCisJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFi bGVkX3Nob3J0X3JlYWQgPSBmYWxzZTsKKwlpbmpfaW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfcmVv cGVuID0gZmFsc2U7CisJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX2NvbXBsZXRpb25fd2Fp dCA9IGZhbHNlOwogCi0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmaW5qX2lvX2Vycm9yX3N0YXRl LT5jdik7Ci0JCWlual9pb19lcnJvcl9zdGF0ZS0+Y29tcGxldGlvbl93YWl0X2V2ZW50ID0gV2Fp dEV2ZW50SW5qZWN0aW9uUG9pbnROZXcoImNvbXBsZXRpb25fd2FpdCIpOworCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmaW5qX2lvX2Vycm9yX3N0YXRlLT5jdik7CisJaW5qX2lvX2Vycm9yX3N0YXRl LT5jb21wbGV0aW9uX3dhaXRfZXZlbnQgPSBXYWl0RXZlbnRJbmplY3Rpb25Qb2ludE5ldygiY29t cGxldGlvbl93YWl0Iik7CiAKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCQlJbmplY3Rp b25Qb2ludEF0dGFjaCgiYWlvLXByb2Nlc3MtY29tcGxldGlvbi1iZWZvcmUtc2hhcmVkIiwKLQkJ CQkJCQkgInRlc3RfYWlvIiwKLQkJCQkJCQkgImlual9pb19jb21wbGV0aW9uX2hvb2siLAotCQkJ CQkJCSBOVUxMLAotCQkJCQkJCSAwKTsKLQkJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8tcHJvY2Vz cy1jb21wbGV0aW9uLWJlZm9yZS1zaGFyZWQiKTsKLQotCQlJbmplY3Rpb25Qb2ludEF0dGFjaCgi YWlvLXdvcmtlci1hZnRlci1yZW9wZW4iLAotCQkJCQkJCSAidGVzdF9haW8iLAotCQkJCQkJCSAi aW5qX2lvX3Jlb3BlbiIsCi0JCQkJCQkJIE5VTEwsCi0JCQkJCQkJIDApOwotCQlJbmplY3Rpb25Q b2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7CisJSW5qZWN0aW9uUG9pbnRBdHRh Y2goImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJlZCIsCisJCQkJCQkgInRlc3Rf YWlvIiwKKwkJCQkJCSAiaW5qX2lvX2NvbXBsZXRpb25faG9vayIsCisJCQkJCQkgTlVMTCwKKwkJ CQkJCSAwKTsKKwlJbmplY3Rpb25Qb2ludExvYWQoImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVm b3JlLXNoYXJlZCIpOworCisJSW5qZWN0aW9uUG9pbnRBdHRhY2goImFpby13b3JrZXItYWZ0ZXIt cmVvcGVuIiwKKwkJCQkJCSAidGVzdF9haW8iLAorCQkJCQkJICJpbmpfaW9fcmVvcGVuIiwKKwkJ CQkJCSBOVUxMLAorCQkJCQkJIDApOworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXdvcmtlci1h ZnRlci1yZW9wZW4iKTsKIAogI2VuZGlmCi0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIFByZS1s b2FkIHRoZSBpbmplY3Rpb24gcG9pbnRzIG5vdywgc28gd2UgY2FuIGNhbGwgdGhlbSBpbiBhCi0J CSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLworfQorCitzdGF0aWMgdm9pZAordGVzdF9haW9f c2htZW1fYXR0YWNoKHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIFByZS1sb2FkIHRoZSBpbmplY3Rp b24gcG9pbnRzIG5vdywgc28gd2UgY2FuIGNhbGwgdGhlbSBpbiBhIGNyaXRpY2FsCisJICogc2Vj dGlvbi4KKwkgKi8KICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCQlJbmplY3Rpb25Qb2lu dExvYWQoImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJlZCIpOwotCQlJbmplY3Rp b25Qb2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7Ci0JCWVsb2coTE9HLCAiaW5q ZWN0aW9uIHBvaW50IGxvYWRlZCIpOworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXByb2Nlc3Mt Y29tcGxldGlvbi1iZWZvcmUtc2hhcmVkIik7CisJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8td29y a2VyLWFmdGVyLXJlb3BlbiIpOworCWVsb2coTE9HLCAiaW5qZWN0aW9uIHBvaW50IGxvYWRlZCIp OwogI2VuZGlmCi0JfQotCi0JTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogfQog CiB2b2lkCkBAIC0xNTUsMTAgKzE0Nyw3IEBAIF9QR19pbml0KHZvaWQpCiAJaWYgKCFwcm9jZXNz X3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKIAkJcmV0dXJuOwogCi0JcHJl dl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hvb2s7Ci0Jc2htZW1fcmVxdWVz dF9ob29rID0gdGVzdF9haW9fc2htZW1fcmVxdWVzdDsKLQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9v ayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X2Fpb19z aG1lbV9zdGFydHVwOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJmlual9pb19zaG1lbV9jYWxs YmFja3MpOwogfQogCiAKLS0gCjIuMzQuMQoK --000000000000961c1c064eb4bda8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405_2-0015-resizable-shared-memory-structures.patch" Content-Disposition: attachment; filename="v20260405_2-0015-resizable-shared-memory-structures.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlo4k5f14 RnJvbSAwOWRlODA4ZjE0ZDExZDI2YzQ1MDE2YWI5ZDgxZTkxMWVmMWU0NDRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNjo1MToyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDE1LzE1XSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVz CgpSZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGNhbiBiZSBhbGxvY2F0ZWQgYnkg c3BlY2lmeWluZyBhIG5ldwptZW1iZXIgU2htZW1TdHJ1Y3RPcHRzOjptYXhpbXVtX3NpemUuIEF0 IHRoZSBzdGFydHVwIG9yIHdoZW4gdGhlCnN0cnVjdHVyZSBpcyBjcmVhdGVkLCB3ZSByZXNlcnZl IGFkZHJlc3Mgc3BhY2Ugd29ydGggbWF4aW11bV9zaXplIGluIHRoZQpzaGFyZWQgbWVtb3J5IHNl Z21lbnQuIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHN1YnN5c3RlbSB3aGljaCBjcmVhdGVzCnRo ZSBzdHJ1Y3R1cmUgd291bGQgaW5pdGlhbGl6ZSBvbmx5IHRoZSBpbml0aWFsIHNpemUgd29ydGgg b2YgbWVtb3J5CndoZW4gY3JlYXRpbmcgaXQuIEluIGFuIG1tYXAnZWQgbWVtb3J5LCB0aGlzIHNo b3VsZCBhbGxvY2F0ZSBtZW1vcnkKd29ydGggdGhlIGluaXRpYWwgc2l6ZS4gSXQgc2hvdWxkIG5v dCBhbGxvY2F0ZSBtYXhpbXVtX3NpemUgd29ydGggb2YKbWVtb3J5IGluaXRpYWxseS4gQXMgdGhl IHN0cnVjdHVyZSBpcyByZXNpemVkIHVzaW5nIFNobWVtUmVzaXplU3RydWN0KCkKbWVtb3J5IGlz IGZyZWVkIG9yIGFsbG9jYXRlZCBpbiBjaHVua3Mgb2YgbWVtb3J5IHBhZ2VzIHdoZW4gc2hyaW5r aW5nCmFuZCBleHBhbmRpbmcgdGhlIHN0cnVjdHVyZSByZXNwZWN0aXZlbHkuCgpSZXNpemFibGUg c2hhcmVkIG1lbW9yeSBmZWF0dXJlIGRlcGVuZHMgdXBvbiBleGlzdGVuY2Ugb2YgZnVuY3Rpb24K bWFkdmlzZSgpIGFuZCBjb25zdGFudHMgTUFEVl9SRU1PVkUgYW5kIE1BRFZfV1JJVEVfUE9QVUxB VEUuCgpPbiB0aGUgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBoYXZlIHRoZXNlLCB3ZSBkaXNhYmxl IHRoaXMgZmVhdHVyZSBhdApjb21waWxlIHRpbWUuIFRoZSBjb21taXQgaW50cm9kdWNlcyBhIGNv bXBpbGUgdGltZSBmbGFnCkhBVkVfUkVTSVpBQkxFX1NITUVNIHdoaWNoIGlzIGRlZmluZWQgaWYg TUFEVl9SRU1PVkUgYW5kCk1BRFZfV1JJVEVfUE9QVUxBVEUgZXhpc3QuIFdlIGRvbid0IGNoZWNr IGV4aXN0ZW5jZSBvZiBtYWR2aXNlCnNlcGFyYXRlbHksIHNpbmNlIGV4aXN0ZW5jZSBvZiB0aGUg Y29uc3RhbnRzIGltcGxpZXMgZXhpc3RlbmNlIG9mIHRoZQpmdW5jdGlvbi4KCkhBVkVfUkVTSVpB QkxFX1NITUVNIGlzIG5vdCBkZWZpbmVkIGluIEVYRUNfQkFDS0VORCBidWlsZHMgc2luY2UgdGhh dCdzCmxhcmdlbHkgdXNlZCBmb3IgV2luZG93cyB3aGVyZSB0aGUgQVBJcyB0byBmcmVlIGFuZCBh bGxvY2F0ZSBtZW1vcnkgZnJvbQphbmQgdG8gYSBnaXZlbiBhZGRyZXNzIHNwYWNlIGFyZSBub3Qg a25vd24gdG8gdGhlIGF1dGhvciByaWdodCBub3cuCkdpdmVuIHRoYXQgUG9zdGdyZVNRTCBpcyB1 c2VkIHdpZGVseSBvbiBMaW51eCwgcHJvdmlkaW5nIHRoaXMgZmVhdHVyZSBvbgpMaW51eCBjb3Zl cnMgYmVuZWZpdHMgbW9zdCBvZiBpdHMgdXNlcnMuIE9uY2Ugd2UgZmlndXJlIG91dCB0aGUgcmVx dWlyZWQKV2luZG93cyBBUElzLCB3ZSB3aWxsIHN1cHBvcnQgdGhpcyBmZWF0dXJlIG9uIFdpbmRv d3MgYXMgd2VsbC4KClRoZSBmZWF0dXJlIGlzIGFsc28gbm90IGF2YWlsYWJsZSB3aGVuIFN5cy1W IHNoYXJlZCBtZW1vcnkgaXMgdXNlZCBldmVuCm9uIExpbnV4IHNpbmNlIHdlIGRvIG5vdCBrbm93 IHdoZXRoZXIgcmVxdWlyZWQgU3lzLVYgQVBJcyBleGlzdDsgbW9zdGx5CnRoZXkgZG9uJ3QuIFNp bmNlIHRoYXQgY29tYmluYXRpb24gaXMgb25seSBhdmFpbGFibGUgZm9yIGRldmVsb3BtZW50IGFu ZAp0ZXN0aW5nLCBub3Qgc3VwcG9ydGluZyB0aGUgZmVhdHVyZSB0aGVyZSBpc24ndCBnb2luZyB0 byBpbXBhY3QKUG9zdGdyZVNRTCB1c2Vycy4KClVzaW5nIEhBVkVfUkVTSVpBQkxFX1NITUVNIHdl IGRpc2FibGUgY29tcGlsaW5nIHRoZSBjb2RlIHJlbGF0ZWQgdG8KcmVzaXphYmxlIHNoYXJlZCBt ZW1vcnkgc3RydWN0dXJlcyBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBzdXBwb3J0CnRo ZSBmZWF0dXJlLiBCdXQgd2UgYWxzbyBoYXZlIHJ1biB0aW1lIGNoZWNrcyB0byBkaXNhYmxlIHRo aXMgZmVhdHVyZQp3aGVuIFN5cy1WIHNoYXJlZCBtZW1vcnkgaXMgdXNlZC4gSW4gb3JkZXIgdG8g a25vdyB3aGV0aGVyIGEgZ2l2ZW4KaW5zdGFuY2Ugb2YgcnVubmluZyBzZXJ2ZXIgc3VwcG9ydHMg cmVzaXphYmxlIHN0cnVjdHVyZXMsIHdlIGhhdmUKaW50cm9kdWNlZCBHVUMgaGF2ZV9yZXNpemFi bGVfc2htZW0uCgpBdXRob3I6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21h aWwuY29tPgotLS0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNCArCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAg fCAgMTUgKwogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwg IDMwICstCiBkb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAg NTQgKysrCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTYgKwogc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMgICAgICAgICAgICAgICAgIHwgIDY5 ICsrKysKIHNyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAgICAgICB8ICAy MyArKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMjY5 ICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAg IHwgICA4ICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaCAgICAgICAgICAgICAgICB8 ICAgOSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmggICAgICAgICAgICAgICAgfCAg IDUgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAgIHwgIDE1 ICsKIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUgICAgIHwgIDI1ICsrCiBz cmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZCAgfCAgMzYgKysKIC4u Li9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICB8ICAzNyArKwogLi4u L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jIHwgMzMyICsrKysrKysr KysrKysrKysrKwogLi4uL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbCAg IHwgICA0ICsKIC4uLi9yZXNpemFibGVfc2htZW0vdC8wMDFfcmVzaXphYmxlX3NobWVtLnBsICB8 IDIzOSArKysrKysrKysrKysrCiAuLi4vdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9j LnBsICAgICAgfCAgMjMgKysKIC4uLi9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4w LnNxbCAgICB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5j ICAgICAgfCAgMjAgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgICB8ICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAxICsKIDI4IGZpbGVzIGNoYW5nZWQsIDEyMjggaW5zZXJ0aW9ucygrKSwgMzYgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVz aXphYmxlX3NobWVtLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFibGVfc2htZW0ucGwKCmRpZmYgLS1naXQgYS9j b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZmY1ZGQ2NDQ2OGUuLjdhY2Q4NDRjY2Iy IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xODk1LDYg KzE4OTUsMTAgQEAgQUNfQ0hFQ0tfREVDTFMoW21lbXNldF9zXSwgW10sIFtdLCBbI2RlZmluZSBf X1NURENfV0FOVF9MSUJfRVhUMV9fIDEKICMgVGhpcyBpcyBwcm9iYWJseSBvbmx5IHByZXNlbnQg b24gbWFjT1MsIGJ1dCBtYXkgYXMgd2VsbCBjaGVjayBhbHdheXMKIEFDX0NIRUNLX0RFQ0xTKEZf RlVMTEZTWU5DLCBbXSwgW10sIFsjaW5jbHVkZSA8ZmNudGwuaD5dKQogCisjIExpbnV4LXNwZWNp ZmljIG1hZHZpc2UgY29uc3RhbnRzIG5lZWRlZCBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnku IFNlZSBzaW1pbGFyIGNoZWNrcyBpbiBtZXNvbi5idWlsZCBmb3IgZXhwbGFuYXRpb24gb2Ygd2h5 IHRoZXNlIGNoZWNrcyBhcmUgaGVyZS4KK0FDX0NIRUNLX0RFQ0xTKFtNQURWX1BPUFVMQVRFX1dS SVRFXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9tbWFuLmg+XSkKK0FDX0NIRUNLX0RFQ0xTKFtN QURWX1JFTU9WRV0sIFtdLCBbXSwgWyNpbmNsdWRlIDxzeXMvbW1hbi5oPl0pCisKIEFDX1JFUExB Q0VfRlVOQ1MobTRfbm9ybWFsaXplKFsKIAlleHBsaWNpdF9iemVybwogCWdldG9wdApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CmluZGV4IGQzZmVhNzM4Y2EzLi5hNDJhMTczNDQ1ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTIwNzIsNiAr MTIwNzIsMjEgQEAgZHluYW1pY19saWJyYXJ5X3BhdGggPSAnL3Vzci9sb2NhbC9saWIvcG9zdGdy ZXNxbDokbGliZGlyJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWhhdmUtcmVzaXphYmxlLXNobWVtIiB4cmVmbGFi ZWw9ImhhdmVfcmVzaXphYmxlX3NobWVtIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmhhdmVfcmVz aXphYmxlX3NobWVtPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5k ZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmhhdmVfcmVzaXphYmxlX3NobWVtPC92 YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAg ICAgICBSZXBvcnRzIHdoZXRoZXIgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBoYXMgYmVlbiBidWlsdAorICAgICAgICB3aXRoIDxsaXRlcmFsPkhBVkVfUkVTSVpBQkxFX1NI TUVNPC9saXRlcmFsPiBlbmFibGVkIGFuZCBzdXBwb3J0cworICAgICAgICA8bGluayBsaW5rZW5k PSJ4ZnVuYy1zaGFyZWQtYWRkaW4tcmVzaXphYmxlIj5SZXNpemFibGUgc2hhcmVkIG1lbW9yeSBz dHJ1Y3R1cmVzPC9saW5rPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtaHVnZS1wYWdl cy1zdGF0dXMiIHhyZWZsYWJlbD0iaHVnZV9wYWdlc19zdGF0dXMiPgogICAgICAgPHRlcm0+PHZh cm5hbWU+aHVnZV9wYWdlc19zdGF0dXM8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKICAg ICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggMmViZWM2OTI4ZDUuLjk3 MTdmODQzNGJiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC00MjQzLDggKzQyNDMsMzQgQEAg U0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4 CiAgICAgICAgU2l6ZSBvZiB0aGUgYWxsb2NhdGlvbiBpbiBieXRlcyBpbmNsdWRpbmcgcGFkZGlu Zy4gRm9yIGFub255bW91cwogICAgICAgIGFsbG9jYXRpb25zLCBubyBpbmZvcm1hdGlvbiBhYm91 dCBwYWRkaW5nIGlzIGF2YWlsYWJsZSwgc28gdGhlCiAgICAgICAgPGxpdGVyYWw+c2l6ZTwvbGl0 ZXJhbD4gYW5kIDxsaXRlcmFsPmFsbG9jYXRlZF9zaXplPC9saXRlcmFsPiBjb2x1bW5zCi0gICAg ICAgd2lsbCBhbHdheXMgYmUgZXF1YWwuIFBhZGRpbmcgaXMgbm90IG1lYW5pbmdmdWwgZm9yIGZy ZWUgbWVtb3J5LCBzbwotICAgICAgIHRoZSBjb2x1bW5zIHdpbGwgYmUgZXF1YWwgaW4gdGhhdCBj YXNlIGFsc28uCisgICAgICAgd2lsbCBhbHdheXMgYmUgZXF1YWwuIFBhZGRpbmcgaXMgbm90IG1l YW5pbmdmdWwgZm9yIGZyZWUgbWVtb3J5LCBzbyB0aGUKKyAgICAgICBjb2x1bW5zIHdpbGwgYmUg ZXF1YWwgaW4gdGhhdCBjYXNlIGFsc28uIEZvciByZXNpemFibGUgYWxsb2NhdGlvbnMgd2hpY2gK KyAgICAgICBtYXkgc3BhbiBtdWx0aXBsZSBtZW1vcnkgcGFnZXMsIHRoZSBwYWRkaW5nIGluY2x1 ZGVzIHRoZSBwYWRkaW5nIGR1ZSB0bworICAgICAgIHBhZ2UgYWxpZ25tZW50LgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtX3NpemU8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTWF4aW11bSBzaXpl IGluIGJ5dGVzIHRoYXQgdGhlIHJlc2l6YWJsZSBhbGxvY2F0aW9uIGNhbiBncm93IHRvLiBaZXJv IGZvcgorICAgICAgIGZpeGVkLXNpemUgYWxsb2NhdGlvbnMsIGZvciBhbm9ueW1vdXMgYWxsb2Nh dGlvbnMsIGFuZCBmb3IgZnJlZSBtZW1vcnkuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PnJlc2VydmVkX3NwYWNlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgZm9yIHRo ZSBhbGxvY2F0aW9uIGluIGJ5dGVzLiBGb3IgcmVzaXphYmxlCisgICAgICAgc3RydWN0dXJlcywg dGhpcyBpcyB0aGUgdG90YWwgYWRkcmVzcyBzcGFjZSByZXNlcnZlZCB0byBhY2NvbW1vZGF0ZQor ICAgICAgIGdyb3d0aCB1cCB0byA8c3RydWN0ZmllbGQ+bWF4aW11bV9zaXplPC9zdHJ1Y3RmaWVs ZD4sIGFuZCBpcyBncmVhdGVyCisgICAgICAgdGhhbiBvciBlcXVhbCB0byA8c3RydWN0ZmllbGQ+ YWxsb2NhdGVkX3NpemU8L3N0cnVjdGZpZWxkPi4gRm9yCisgICAgICAgZml4ZWQtc2l6ZSBhbGxv Y2F0aW9ucywgYW5vbnltb3VzIGFsbG9jYXRpb25zLCBhbmQgZnJlZSBtZW1vcnkgdGhpcworICAg ICAgIGlzIHNhbWUgYXMgPHN0cnVjdGZpZWxkPmFsbG9jYXRlZF9zaXplPC9zdHJ1Y3RmaWVsZD4u CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwK aW5kZXggYWVkM2YyZjAwNzEuLmMyYTBjNTEzNmFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv eGZ1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbApAQCAtMzc0OCw2ICszNzQ4 LDYwIEBAIG15X3NobWVtX2luaXQodm9pZCAqYXJnKQogICAgICA8L3BhcmE+CiAgICAgPC9zZWN0 Mz4KIAorICAgIDxzZWN0MyBpZD0ieGZ1bmMtc2hhcmVkLWFkZGluLXJlc2l6YWJsZSI+CisgICAg IDx0aXRsZT5SZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzPC90aXRsZT4KKworICAg ICA8cGFyYT4KKyAgICAgQSByZXNpemFibGUgbWVtb3J5IHN0cnVjdHVyZSBjYW4gYmUgcmVxdWVz dGVkIHVzaW5nCisgICAgIDxmdW5jdGlvbj5TaG1lbVJlcXVlc3RTdHJ1Y3Q8L2Z1bmN0aW9uPiBi eSBwYXNzaW5nCisgICAgIDxwYXJhbWV0ZXI+Lm1heGltdW1fc2l6ZTwvcGFyYW1ldGVyPiBhbG9u ZyB3aXRoCisgICAgIDxwYXJhbWV0ZXI+LnNpemU8L3BhcmFtZXRlcj4uIDxwYXJhbWV0ZXI+Lm1h eGltdW1fc2l6ZTwvcGFyYW1ldGVyPiBpcworICAgICBtYXhpbXVtIHNpemUgdXB0byB3aGljaCB0 aGUgc3RydWN0dXJlIGNhbiBncm93IHdoZXJlIGFzCisgICAgIDxwYXJhbWV0ZXI+LnNpemU8L3Bh cmFtZXRlcj4gaXMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlLiAgV2hpbGUKKyAg ICAgY29udGlndW91cyBhZGRyZXNzIHNwYWNlIHdvcnRoIDxwYXJhbWV0ZXI+bWF4aW11bV9zaXpl PC9wYXJhbWV0ZXI+IGlzCisgICAgIGFsbG9jYXRlZCB0byB0aGUgc3RydWN0dXJlLCBvbmx5IG1l bW9yeSB3b3J0aCA8cGFyYW1ldGVyPnNpemU8L3BhcmFtZXRlcj4KKyAgICAgYnl0ZXMgaXMgYWxs b2NhdGVkIGluaXRpYWxseS4gVGhlIDxmdW5jdGlvbj5pbml0X2ZuPC9mdW5jdGlvbj4gc2hvdWxk IG9ubHkKKyAgICAgaW5pdGlhbGl6ZSB0aGUgPHBhcmFtZXRlcj5zaXplPC9wYXJhbWV0ZXI+IGFt b3VudCBvZiBtZW1vcnkuIFRoZSBhY3R1YWwKKyAgICAgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGlz IHN0cnVjdHVyZSBhdCBhbnkgcG9pbnQgaW4gdGltZSBpcyBnaXZlbiBieSA8bGluaworICAgICBs aW5rZW5kPSJ2aWV3LXBnLXNobWVtLWFsbG9jYXRpb25zIj48c3RydWN0bmFtZT5wZ19zaG1lbV9h bGxvY2F0aW9uczwvc3RydWN0bmFtZT4uPHN0cnVjdGZpZWxkPmFsbG9jYXRlZF9zaXplPC9zdHJ1 Y3RmaWVsZD48L2xpbms+CisgICAgIGFuZCB0aGUgYWRkcmVzcyBzcGFjZSByZXNlcnZlZCBmb3Ig dGhpcyBzdHJ1Y3R1cmUgaXMgZ2l2ZW4gYnkgPGxpbmsKKyAgICAgbGlua2VuZD0idmlldy1wZy1z aG1lbS1hbGxvY2F0aW9ucyI+PHN0cnVjdG5hbWU+cGdfc2htZW1fYWxsb2NhdGlvbnM8L3N0cnVj dG5hbWU+LjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZF9zcGFjZTwvc3RydWN0ZmllbGQ+PC9saW5rPi4K KyAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgVGhlIHN0cnVjdHVyZSBjYW4gYmUgcmVz aXplZCB1c2luZyA8ZnVuY3Rpb24+U2htZW1SZXNpemVTdHJ1Y3Q8L2Z1bmN0aW9uPiBieQorICAg IHBhc3NpbmcgaXQgdGhlIHN0cnVjdHVyZSdzIDxzdHJ1Y3RuYW1lPlNobWVtU3RydWN0RGVzYzwv c3RydWN0bmFtZT4gYW5kIHRoZQorICAgIG5ldyBzaXplIHdoaWNoIGNhbiBiZSBhbnl3aGVyZSBi ZXR3ZWVuIDAgdG8KKyAgICA8cGFyYW1ldGVyPm1heGltdW1fc2l6ZTwvcGFyYW1ldGVyPi4gSWYg dGhlIG5ldyBzaXplIGlzIHNtYWxsZXIgdGhhbiB0aGUKKyAgICBjdXJyZW50IHNpemUgb2YgdGhl IHN0cnVjdHVyZSwgdGhlIG1lbW9yeSBiZXR3ZWVuIHRoZSBuZXcgc2l6ZSBhbmQgY3VycmVudAor ICAgIHNpemUgaXMgZnJlZWQgd2hpbGUga2VlcGluZyB0aGUgY29udGVudHMgb2YgdGhlIG1lbW9y eSB1cHRvIG5ldyBzaXplIGludGFjdC4KKyAgICBJZiB0aGUgbmV3IHNpemUgaXMgZ3JlYXRlciB0 aGFuIHRoZSBjdXJyZW50IHNpemUsIG1lbW9yeSBpcyBhbGxvY2F0ZWQgdXB0bworICAgIG5ldyBz aXplIHdoaWxlIGtlZXBpbmcgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHN0cnVjdHVyZSBp bnRhY3QuIFRoZQorICAgIHN0YXJ0aW5nIGFkZHJlc3Mgb2YgdGhlIHN0cnVjdHVyZSBkb2VzIG5v dCBjaGFuZ2UgYmVjYXVzZSBvZiByZXNpemluZworICAgIG9wZXJhdGlvbi4gVGhlIGNhbGxlciBt YXkgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlIGFkZGl0aW9uYWwKKyAgICBzeW5jaHJvbml6YXRp b24gYmV0d2VlbiB0aGUgcmVzaXppbmcgcHJvY2VzcyBhbmQgdGhlIHByb2Nlc3NlcyB1c2luZyB0 aGUKKyAgICBzaGFyZWQgc3RydWN0dXJlLiBBbHNvIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGJleW9u ZCB0aGUgY3VycmVudCBzaXplIG9mIHRoZQorICAgIHN0cnVjdHVyZSB3aWxsIG5vdCBjYXVzZSBh bnkgc2VnbWVudGF0aW9uIGZhdWx0IG9yIGEgYnVzIGVycm9yLiBNZW1vcnkgd2lsbAorICAgIGJl IGFsbG9jYXRlZCBkdXJpbmcgc3VjaCBhIHdyaXRlIGFjY2Vzcy4gMHMgd2lsbCBiZSByZXR1cm5l ZCBvbiBzdWNoIGEgcmVhZAorICAgIGFjY2VzcyBpZiBtZW1vcnkgaXMgbm90IGFsbG9jYXRlZCB5 ZXQuIFRoZSBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbiBtYXkKKyAgICB1c2UgbXByb3RlY3Qo KSB3aXRoIFBST1RfTk9ORSBpbiBldmVyeSBiYWNrZW5kIHRoYXQgbWF5IGFjY2VzcyB0aGlzIG1l bW9yeQorICAgIHRvIGVuc3VyZSB0aGF0IHN1Y2ggYW4gYWNjZXNzIHJlc3VsdHMgaW4gYSBmYXVs dC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMg YXZhaWxhYmxlIG9ubHkgb24gdGhlIHBsYXRmb3JtcyB3aGljaCBwcm92aWRlIHRoZSBBUElzCisg ICAgbmVjZXNzYXJ5IHRvIHJlc2VydmUgY29udGlndW91cyBhZGRyZXNzIHNwYWNlIGFuZCB0byBh bGxvY2F0ZSBvciBmcmVlIG1lbW9yeQorICAgIGluIHRoYXQgYWRkcmVzcyBzcGFjZSBvbiBkZW1h bmQuIE1hY3JvIDxzeW1ib2w+SEFWRV9SRVNJWkFCTEVfU0hNRU08L3N5bWJvbD4KKyAgICBpcyBk ZWZpbmVkIG9uIHN1Y2ggcGxhdGZvcm1zLiBJdCBjYW4gYmUgdXNlZCB0byBndWFyZCBjb2RlIHJl bGF0ZWQgdG8KKyAgICByZXNpemluZyBhIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlLiBUaGUgZnVu Y3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gd2l0aAorICAgIG1tYXAnZWQgbWVtb3J5LCBzbyBz dWJzeXN0ZW1zIHdoaWNoIHVzZSByZXNpemFibGUgc3RydWN0dXJlcyBtYXkgaGF2ZSB0bworICAg IGFkZHRpb25hbGx5IGRpc2FibGUgcmVzaXphYmxlIG1lbW9yeSB1c2FnZSB3aGVuIDxzeW1ib2w+ c2hhcmVkX21lbW9yeV90eXBlPC9zeW1ib2w+IGlzIG5vdAorICAgIDxzeW1ib2w+U0hNRU1fVFlQ RV9NTUFQPC9zeW1ib2w+LiBBIEdVQyA8eHJlZiBsaW5rZW5kPSJndWMtaGF2ZS1yZXNpemFibGUt c2htZW0iLz4gaXMgc2V0IHRvCisgICAgPGxpdGVyYWw+b248L2xpdGVyYWw+IHdoZW4gdGhpcyBm dW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBpbiBhIHJ1bm5pbmcKKyAgICBzZXJ2ZXIsIDxsaXRl cmFsPm9mZjwvbGl0ZXJhbD4gb3RoZXJ3aXNlLgorICAgIDwvcGFyYT4KKyAgICA8L3NlY3QzPgor CiAgICAgPHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tZHluYW1pYyI+CiAgICAgIDx0aXRs ZT5BbGxvY2F0aW5nIER5bmFtaWMgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVwPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA0M2Q1ZmZjMzBi MS4uNzkwODQ1NzYyZTEgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxk CkBAIC0yOTA0LDYgKzI5MDQsMjIgQEAgZGVjbF9jaGVja3MgPSBbCiAgIFsndGltaW5nc2FmZV9i Y21wJywgICdzdHJpbmcuaCddLAogXQogCisjIExpbnV4LXNwZWNpZmljIG1hZHZpc2UgY29uc3Rh bnRzIG5lZWRlZCBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkuCisjIFVzdWFsbHkgd2UgdXNl IEFDX0NIRUNLX0RFQ0xTIHRvIGNoZWNrIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIGJ1dCBp biB0aGlzCisjIGNhc2Ugd2UgYXJlIHVzaW5nIGl0IHRvIGRldGVjdCBleGlzdGVuY2Ugb2YgY29u c3RhbnRzLiBUaGVzZSBjb25zdGFudHMgYXJlCisjIHVzZWQgdG8gZGVmaW5lIEhBVkVfUkVTSVpB QkxFX1NITUVNIHdoaWNoIGlzIHVzZWQgaW4gc3RvcmFnZS9wZ19zaG1lbS5oIGFzCisjIHdlbGwg YXMgc3RvcmFnZS9zaG1lbS5oLiBUaGUgZmlyc3QgYWJzdHJhY3RzIHRoZSBBUElzIHRvIGFsbG9j YXRlIHNoYXJlZAorIyBtZW1vcnkgc2VnbWVudHMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3 aGVyZWFzIHRoZSBzZWNvbmQgYWJzdHJhY3RzIEFQSXMgdG8KKyMgYWxsb2NhdGUgc2hhcmVkIG1l bW9yeSB0byB2YXJpb3VzIHN1YnN5c3RlbXMuIFNpbmNlIHRoZXkgYXJlIHJlbGF0ZWQgYnV0Cisj IG9ydGhvZ29uYWwgdG8gZWFjaCBvdGhlciwgaW5jbHVkaW5nIGFueSBvbmUgb2YgdGhlbSBpbiB0 aGUgb3RoZXIgZmlsZSBkb2Vzbid0CisjIG1ha2Ugc2Vuc2UuIHBnX2NvbmZpZ19tYW51YWwuaCBp cyB0aGUgb25seSBwbGFjZSB3aGVyZSBIQVZFX1JFU0laQUJMRV9TSE1FTQorIyBjYW4gYmUgZGVm aW5lZCBhbmQgbWFkZSBhdmFpbGFibGUgdG8gYm90aCB3aXRob3V0IGluY2x1ZGluZyBzeXMvbW1h bi5oLiBCdXQKKyMgZm9yIHRoYXQgd2UgbmVlZCBjb25zdGFudHMgdGhhdCBpbmRpY2F0ZSB0aGUg ZXhpc3RlbmNlIG9mIGZvbGxvd2luZyBkZWZpbmVzLgorZGVjbF9jaGVja3MgKz0gWworICBbJ01B RFZfUE9QVUxBVEVfV1JJVEUnLCAnc3lzL21tYW4uaCddLAorICBbJ01BRFZfUkVNT1ZFJywgJ3N5 cy9tbWFuLmgnXSwKK10KKwogIyBOZWVkIHRvIGNoZWNrIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlv bnMgZm9yIHRoZXNlIGZ1bmN0aW9ucywgYmVjYXVzZQogIyBjaGVja2luZyBmb3IgbGlicmFyeSBz eW1ib2xzIHdvdWxkbid0IGhhbmRsZSBkZXBsb3ltZW50IHRhcmdldAogIyByZXN0cmljdGlvbnMg b24gbWFjT1MKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jIGIvc3Jj L2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKaW5kZXggMmUzODg2Y2Y5ZmUuLjhkODU5ZGZiYmZi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3J0L3N5c3Zfc2htZW0uYwpAQCAtNTg5LDYgKzU4OSwyNyBAQCBjaGVja19odWdlX3Bh Z2Vfc2l6ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCXJl dHVybiB0cnVlOwogfQogCisvKgorICogR2V0IHRoZSBwYWdlIHNpemUgYmVpbmcgdXNlZCBieSB0 aGUgc2hhcmVkIG1lbW9yeS4KKyAqCisgKiBUaGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBv bmx5IGFmdGVyIHRoZSBzaGFyZWQgbWVtb3J5IGhhcyBiZWVuIHNldHVwLgorICovCitTaXplCitH ZXRPU1BhZ2VTaXplKHZvaWQpCit7CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCisJQXNzZXJ0KGh1 Z2VfcGFnZXNfc3RhdHVzICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7CisKKwlvc19wYWdlX3NpemUg PSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CisKKwkvKiBJZiBodWdlIHBhZ2VzIGFyZSBhY3R1YWxs eSBpbiB1c2UsIHVzZSBodWdlIHBhZ2Ugc2l6ZSAqLworCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9 PSBIVUdFX1BBR0VTX09OKQorCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7 CisKKwlyZXR1cm4gb3NfcGFnZV9zaXplOworfQorCiAvKgogICogQ3JlYXRlcyBhbiBhbm9ueW1v dXMgbW1hcCgpZWQgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgogICoKQEAgLTk5MSwzICsxMDEyLDUx IEBAIFBHU2hhcmVkTWVtb3J5RGV0YWNoKHZvaWQpCiAJCUFub255bW91c1NobWVtID0gTlVMTDsK IAl9CiB9CisKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorLyoKKyAqIE1ha2Ugc3VyZSB0 aGF0IHRoZSBtZW1vcnkgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHRoZSBnaXZlbiBhZGRyZXNzIGlzIHJl bGVhc2VkLgorICoKKyAqIFRoZSBhZGRyZXNzIGFuZCBzaXplIGFyZSBleHBlY3RlZCB0byBiZSBw YWdlIGFsaWduZWQuCisgKgorICogT25seSBzdXBwb3J0ZWQgb24gcGxhdGZvcm1zIHRoYXQgc3Vw cG9ydCBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeS4KKyAqLwordm9pZAorUEdTaGFyZWRNZW1vcnlF bnN1cmVGcmVlZCh2b2lkICphZGRyLCBTaXplIHNpemUpCit7CisJaWYgKCFBbm9ueW1vdXNTaG1l bSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJIGVycm1zZygib25seSBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeSBjYW4g YmUgZnJlZWQiKSkpOworCisJQXNzZXJ0KGFkZHIgPT0gKHZvaWQgKikgVFlQRUFMSUdOKEdldE9T UGFnZVNpemUoKSwgYWRkcikpOworCUFzc2VydChzaXplID09IFRZUEVBTElHTihHZXRPU1BhZ2VT aXplKCksIHNpemUpKTsKKworCWlmIChtYWR2aXNlKGFkZHIsIHNpemUsIE1BRFZfUkVNT1ZFKSA9 PSAtMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgZnJlZSBzaGFy ZWQgbWVtb3J5OiAlbSIpKSk7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5 IG9mIGdpdmVuIHNpemUgZnJvbSB0aGUgZ2l2ZW4gYWRkcmVzcyBpcyBhbGxvY2F0ZWQuCisgKgor ICogVGhlIGFkZHJlc3MgYW5kIHNpemUgYXJlIGV4cGVjdGVkIHRvIGJlIHBhZ2UgYWxpZ25lZC4K KyAqCisgKiBPbmx5IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGFub255bW91 cyBzaGFyZWQgbWVtb3J5LgorICovCit2b2lkCitQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRl ZCh2b2lkICphZGRyLCBTaXplIHNpemUpCit7CisJaWYgKCFBbm9ueW1vdXNTaG1lbSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJIGVycm1zZygib25seSBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeSBjYW4gYmUgYWxsb2Nh dGVkIGF0IHJ1bnRpbWUiKSkpOworCisJQXNzZXJ0KGFkZHIgPT0gKHZvaWQgKikgVFlQRUFMSUdO KEdldE9TUGFnZVNpemUoKSwgYWRkcikpOworCUFzc2VydChzaXplID09IFRZUEVBTElHTihHZXRP U1BhZ2VTaXplKCksIHNpemUpKTsKKworCWlmIChtYWR2aXNlKGFkZHIsIHNpemUsIE1BRFZfUE9Q VUxBVEVfV1JJVEUpID09IC0xKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxk IG5vdCBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5OiAlbSIpKSk7Cit9CisjZW5kaWYJCQkJCQkJLyog SEFWRV9SRVNJWkFCTEVfU0hNRU0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQvd2lu MzJfc2htZW0uYyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwppbmRleCA3OTRlNGZj YjJhZC4uZGMyZWUwMTg4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2ht ZW0uYworKysgYi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NobWVtLmMKQEAgLTY0OCwzICs2NDgs MjYgQEAgY2hlY2tfaHVnZV9wYWdlX3NpemUoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3Vj U291cmNlIHNvdXJjZSkKIAl9CiAJcmV0dXJuIHRydWU7CiB9CisKKy8qCisgKiBHZXQgdGhlIHBh Z2Ugc2l6ZSB1c2VkIGJ5IHRoZSBzaGFyZWQgbWVtb3J5LgorICoKKyAqIFRoZSBmdW5jdGlvbiBz aG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gc2V0 dXAuCisgKi8KK1NpemUKK0dldE9TUGFnZVNpemUodm9pZCkKK3sKKwlTWVNURU1fSU5GTyBzeXNp bmZvOworCVNpemUJCW9zX3BhZ2Vfc2l6ZTsKKworCUFzc2VydChodWdlX3BhZ2VzX3N0YXR1cyAh PSBIVUdFX1BBR0VTX1VOS05PV04pOworCisJR2V0U3lzdGVtSW5mbygmc3lzaW5mbyk7CisJb3Nf cGFnZV9zaXplID0gc3lzaW5mby5kd1BhZ2VTaXplOworCisJLyogSWYgaHVnZSBwYWdlcyBhcmUg YWN0dWFsbHkgaW4gdXNlLCB1c2UgaHVnZSBwYWdlIHNpemUgKi8KKwlpZiAoaHVnZV9wYWdlc19z dGF0dXMgPT0gSFVHRV9QQUdFU19PTikKKwkJR2V0SHVnZVBhZ2VTaXplKCZvc19wYWdlX3NpemUs IE5VTEwpOworCisJcmV0dXJuIG9zX3BhZ2Vfc2l6ZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CmluZGV4IDk3MzgxMWU1NDVlLi40ZWFlMTRiZWRlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CkBAIC0xOSwxMSArMTksMTEgQEAKICAqIG1ldGhvZHMpLiAgVGhlIHJvdXRpbmVzIGluIHRoaXMg ZmlsZSBhcmUgdXNlZCBmb3IgYWxsb2NhdGluZyBhbmQKICAqIGJpbmRpbmcgdG8gc2hhcmVkIG1l bW9yeSBkYXRhIHN0cnVjdHVyZXMuCiAgKgotICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZmFjaWxp dGllcyB0byBhbGxvY2F0ZSBmaXhlZC1zaXplIHN0cnVjdHVyZXMgaW4gc2hhcmVkCi0gKiBtZW1v cnksIGZvciB0aGluZ3MgbGlrZSB2YXJpYWJsZXMgc2hhcmVkIGJldHdlZW4gYWxsIGJhY2tlbmQg cHJvY2Vzc2VzLgotICogRWFjaCBzdWNoIHN0cnVjdHVyZSBoYXMgYSBzdHJpbmcgbmFtZSB0byBp ZGVudGlmeSBpdCwgc3BlY2lmaWVkIHdoZW4gaXQgaXMKLSAqIHJlcXVlc3RlZC4gIHNobWVtX2hh c2guYyBwcm92aWRlcyBhIHNoYXJlZCBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIG9uIHRvcAot ICogb2YgdGhhdC4KKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZhY2lsaXRpZXMgdG8gYWxsb2Nh dGUgZml4ZWQtc2l6ZSBhcyB3ZWxsIGFzIHJlc2l6YWJsZQorICogc3RydWN0dXJlcyBpbiBzaGFy ZWQgbWVtb3J5LCBmb3IgdGhpbmdzIGxpa2UgdmFyaWFibGVzIHNoYXJlZCBiZXR3ZWVuIGFsbAor ICogYmFja2VuZCBwcm9jZXNzZXMuIEVhY2ggc3VjaCBzdHJ1Y3R1cmUgaGFzIGEgc3RyaW5nIG5h bWUgdG8gaWRlbnRpZnkgaXQsCisgKiBzcGVjaWZpZWQgd2hlbiBpdCBpcyByZXF1ZXN0ZWQuICBz aG1lbV9oYXNoLmMgcHJvdmlkZXMgYSBzaGFyZWQgaGFzaCB0YWJsZQorICogaW1wbGVtZW50YXRp b24gb24gdG9wIG9mIGZpeGVkLXNpemUgc3RydWN0dXJlcy4KICAqCiAgKiBTaGFyZWQgbWVtb3J5 IGFyZWFzIHNob3VsZCB1c3VhbGx5IG5vdCBiZSBhbGxvY2F0ZWQgYWZ0ZXIgcG9zdG1hc3Rlcgog ICogc3RhcnR1cCwgYWx0aG91Z2ggd2UgZG8gYWxsb3cgc21hbGwgYWxsb2NhdGlvbnMgbGF0ZXIg Zm9yIHRoZSBiZW5lZml0IG9mCkBAIC0xMDYsNiArMTA2LDIxIEBACiAgKiAoKlNobWVtU3RydWN0 RGVzYy0+cHRyKSwgYW5kIGNhbGxzIHRoZSBhdHRhY2hfZm4gY2FsbGJhY2ssIGlmIGFueSwgZm9y CiAgKiBhZGRpdGlvbmFsIHBlci1iYWNrZW5kIHNldHVwLgogICoKKyAqIFJlc2l6YWJsZSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBJbiBvcmRlciB0byBhbGxvY2F0ZSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBz dHJ1Y3R1cmVzLCBzZXQKKyAqIFNobWVtUmVxdWVzdFN0cnVjdE9wdHM6Om1heGltdW1fc2l6ZSB0 byB0aGUgbWF4aW11bSBzaXplIHRoYXQgdGhlIHN0cnVjdHVyZQorICogY2FuIGdyb3cgdG8uICBU aGUgYWRkcmVzcyBzcGFjZSBmb3IgdGhlIG1heGltdW0gc2l6ZSB3aWxsIGJlIHJlc2VydmVkIGF0 CisgKiBzdGFydHVwLCBidXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBvciBmcmVlZCBhcyB0aGUgc3Ry dWN0dXJlIGdyb3dzIG9yIHNocmlua3MKKyAqIHJlc3BlY3RpdmVseS4gU2htZW1SZXF1ZXN0U3Ry dWN0T3B0czo6c2l6ZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBpbml0aWFsIHNpemUKKyAqIG9mIHRo ZSBzdHJ1Y3R1cmUsIHdoaWNoIGlzIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCBhdCB0 aGUgc3RhcnR1cC4KKyAqIEFmdGVyIHN0YXJ0dXAsIHRoZSBzdHJ1Y3R1cmUgY2FuIGJlIHJlc2l6 ZWQgYnkgY2FsbGluZyBTaG1lbVJlc2l6ZVN0cnVjdCgpIGJ5CisgKiBwYXNzaW5nIGl0IHRoZSBT aG1lbVN0cnVjdERlc2MgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBuZXcgc2l6ZS4KKyAqCisg KiBXaGlsZSByZXNpemFibGUgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBhZnRlciB0aGUgc3Rh cnR1cCwgdGhlIG1lbW9yeQorICogYXZhaWxhYmxlIGZvciB0aGVtIGlzIHF1aXRlIGxpbWl0ZWQu CisgKgogICogTGVnYWN5IFNobWVtSW5pdFN0cnVjdCgpL1NobWVtSW5pdEhhc2goKSBmdW5jdGlv bnMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgpAQCAtMTcwLDYgKzE4NSwxOCBAQCB0eXBlZGVmIHN0cnVjdAogCVNobWVtUmVxdWVzdEtp bmQga2luZDsKIH0gU2htZW1SZXF1ZXN0OwogCisvKgorICogQSBjb252ZW5pZW50IG1hY3JvIHRv IGdldCB0aGUgc3BhY2UgcmVxdWlyZWQgZm9yIGEgc2htZW0gcmVxdWVzdCBjb25zaXN0ZW50bHku CisgKiBBIHJlc2l6YWJsZSBzdHJ1Y3R1cmUsIHJlcXVlc3RlZCBieSBub24temVybyBtYXhpbXVt X3NpemUsIHJlcXVpcmVzIHNwYWNlIGZvcgorICogaXRzIG1heGltdW0gc2l6ZS4KKyAqLworI2lm ZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisjZGVmaW5lIFNITUVNX1JFUVVFU1RfU1BBQ0VfU0la RShyZXF1ZXN0KSBcCisJKChyZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCA/IChy ZXF1ZXN0KS0+b3B0aW9ucy0+bWF4aW11bV9zaXplIDogKHJlcXVlc3QpLT5vcHRpb25zLT5zaXpl KQorI2Vsc2UKKyNkZWZpbmUgU0hNRU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3QpICgocmVx dWVzdCktPm9wdGlvbnMtPnNpemUpCisjZW5kaWYKKwogc3RhdGljIExpc3QgKnBlbmRpbmdfc2ht ZW1fcmVxdWVzdHM7CiAKIC8qCkBAIC0yNzIsNiArMjk5LDEwIEBAIHR5cGVkZWYgc3RydWN0CiAJ dm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCiAJU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwogCVNpemUJ CWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLworI2lmZGVm IEhBVkVfUkVTSVpBQkxFX1NITUVNCisJU2l6ZQkJbWF4aW11bV9zaXplOwkvKiB0aGUgbWF4aW11 bSBzaXplIHRoZSBzdHJ1Y3R1cmUgY2FuIGdyb3cgdG8gKi8KKwlTaXplCQlyZXNlcnZlZF9zcGFj ZTsgLyogdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgKi8KKyNlbmRpZgogfSBTaG1l bUluZGV4RW50OwogCiAvKiBUbyBnZXQgcmVsaWFibGUgcmVzdWx0cyBmb3IgTlVNQSBpbnF1aXJ5 IHdlIG5lZWQgdG8gInRvdWNoIHBhZ2VzIiBvbmNlICovCkBAIC0yODAsNiArMzExLDkgQEAgc3Rh dGljIGJvb2wgZmlyc3ROdW1hVG91Y2ggPSB0cnVlOwogc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2Fs bGJhY2tzQWZ0ZXJTdGFydHVwKGNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOwogc3Rh dGljIHZvaWQgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOwogc3Rh dGljIGJvb2wgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9v bCBtaXNzaW5nX29rKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorc3RhdGljIFNpemUg RXN0aW1hdGVBbGxvY2F0ZWRTaXplKFNobWVtSW5kZXhFbnQgKmVudHJ5KTsKKyNlbmRpZgogCiBE YXR1bQkJcGdfbnVtYV9hdmFpbGFibGUoUEdfRlVOQ1RJT05fQVJHUyk7CiAKQEAgLTM1MCw2ICsz ODQsMTEgQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwoU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zLCBT aG1lbVJlcXVlc3RLaW5kIGtpbmQpCiAJCWlmIChvcHRpb25zLT5zaXplIDw9IDAgJiYgb3B0aW9u cy0+c2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQogCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgc2l6ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJ CQkgb3B0aW9ucy0+c2l6ZSwgb3B0aW9ucy0+bmFtZSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVf U0hNRU0KKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDAgJiYgb3B0aW9ucy0+bWF4aW11 bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNc IiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7CisjZW5kaWYK IAl9CiAJZWxzZQogCXsKQEAgLTM1OCw4ICszOTcsMjQgQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwo U2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zLCBTaG1lbVJlcXVlc3RLaW5kIGtpbmQpCiAJCWlmIChv cHRpb25zLT5zaXplIDw9IDApCiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Ig c2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAogCQkJCSBvcHRpb25zLT5zaXplLCBv cHRpb25zLT5uYW1lKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCQlpZiAob3B0aW9u cy0+bWF4aW11bV9zaXplID09IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCQllbG9nKEVS Uk9SLCAiU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSBjYW5ub3QgYmUgdXNlZCBkdXJpbmcgc3Rh cnR1cCIpOworCQlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplIDwgMCkKKwkJCWVsb2coRVJST1Is ICJpbnZhbGlkIG1heGltdW1fc2l6ZSAlemQgZm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3Ig XCIlc1wiIiwKKwkJCQkgb3B0aW9ucy0+bWF4aW11bV9zaXplLCBvcHRpb25zLT5uYW1lKTsKKyNl bmRpZgogCX0KIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJaWYgKG9wdGlvbnMtPm1h eGltdW1fc2l6ZSA+IDAgJiYgb3B0aW9ucy0+c2l6ZSA+IG9wdGlvbnMtPm1heGltdW1fc2l6ZSkK KwkJZWxvZyhFUlJPUiwgInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSBcIiVzXCIg c2hvdWxkIGhhdmUgbWF4aW11bSBzaXplICglemQpIGdyZWF0ZXIgdGhhbiBzaXplICglemQpIiwK KwkJCSBvcHRpb25zLT5uYW1lLCBvcHRpb25zLT5tYXhpbXVtX3NpemUsIG9wdGlvbnMtPnNpemUp OworCisJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA+IDAgJiYgc2hhcmVkX21lbW9yeV90eXBl ICE9IFNITUVNX1RZUEVfTU1BUCkKKwkJZWxvZyhFUlJPUiwgInJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHJlcXVpcmVzIHNoYXJlZF9tZW1vcnlfdHlwZSA9IG1tYXAiKTsKKyNlbmRpZgorCiAJaWYg KHNobWVtX3JlcXVlc3Rfc3RhdGUgIT0gU1JTX1JFUVVFU1RJTkcpCiAJCWVsb2coRVJST1IsICJT aG1lbVJlcXVlc3RTdHJ1Y3QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBzaG1lbV9yZXF1ZXN0 IGNhbGxiYWNrIik7CiAKQEAgLTM3OSw4ICs0MzQsMTMgQEAgU2htZW1SZXF1ZXN0SW50ZXJuYWwo U2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zLCBTaG1lbVJlcXVlc3RLaW5kIGtpbmQpCiB9CiAKIC8q Ci0gKglTaG1lbUdldFJlcXVlc3RlZFNpemUoKSAtLS0gZXN0aW1hdGUgdGhlIHRvdGFsIHNpemUg b2YgYWxsIHJlZ2lzdGVyZWQgc2hhcmVkCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1lbW9yeSBzdHJ1Y3R1cmVzLgorICogU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkgLS0tIGVzdGlt YXRlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCByZWdpc3RlcmVkIHNoYXJlZAorICogbWVtb3J5IHN0 cnVjdHVyZXMuCisgKgorICogV2hlbiBtYXhpbXVtX3NpemUgaXMgc3BlY2lmaWVkIHdoZW4gcmVx dWVzdGluZyByZXNpemFibGUgc2hhcmVkIG1lbW9yeQorICogc3RydWN0dXJlcy4gV2UgdXNlIHRo YXQsIGluc3RlYWQgb2YgdGhlIChpbml0aWFsKSBzaXplLCBmb3IgdGhlIGVzdGltYXRpb24sCisg KiB0byBlbnN1cmUgdGhhdCBlbm91Z2ggc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIGdyb3dpbmcgdGhl IHJlc2l6YWJsZSBzdHJ1Y3R1cmVzCisgKiB0byBpdHMgbWF4aW11bSBzaXplLgogICoKICAqIFRo aXMgaXMgY2FsbGVkIG9uY2UgYXQgcG9zdG1hc3RlciBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudAogICogaGFzIGJlZW4gY3JlYXRlZC4KQEAgLTM5OCw3ICs0NTgsNyBA QCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCkKIAkvKiBtZW1vcnkgbmVlZGVkIGZvciBhbGwg dGhlIHJlcXVlc3RlZCBhcmVhcyAqLwogCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVz dCwgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKIAl7Ci0JCXNpemUgPSBhZGRfc2l6ZShzaXplLCBy ZXF1ZXN0LT5vcHRpb25zLT5zaXplKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNITUVNX1JF UVVFU1RfU1BBQ0VfU0laRShyZXF1ZXN0KSk7CiAJCS8qIGNhbGN1bGF0ZSBhbGlnbm1lbnQgcGFk ZGluZyBsaWtlIFNobWVtQWxsb2NSYXcoKSBkb2VzICovCiAJCXNpemUgPSBUWVBFQUxJR04oTWF4 KHJlcXVlc3QtPm9wdGlvbnMtPmFsaWdubWVudCwgUEdfQ0FDSEVfTElORV9TSVpFKSwKIAkJCQkJ CSBzaXplKTsKQEAgLTUwNiw2ICs1NjYsNyBAQCBJbml0U2htZW1JbmRleEVudHJ5KFNobWVtUmVx dWVzdCAqcmVxdWVzdCkKIAlTaG1lbUluZGV4RW50ICppbmRleF9lbnRyeTsKIAlib29sCQlmb3Vu ZDsKIAlzaXplX3QJCWFsbG9jYXRlZF9zaXplOworCXNpemVfdAkJcmVxdWVzdGVkX3NpemU7CiAJ dm9pZAkgICAqc3RydWN0UHRyOwogCiAJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXgg Ki8KQEAgLTUyMywxMCArNTg0LDE4IEBAIEluaXRTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0 ICpyZXF1ZXN0KQogCX0KIAogCS8qCi0JICogV2UgaW5zZXJ0ZWQgdGhlIGVudHJ5IHRvIHRoZSBz aGFyZWQgbWVtb3J5IGluZGV4LiAgQWxsb2NhdGUgcmVxdWVzdGVkCi0JICogYW1vdW50IG9mIHNo YXJlZCBtZW1vcnkgZm9yIGl0LCBhbmQgaW5pdGlhbGl6ZSB0aGUgaW5kZXggZW50cnkuCisJICog V2UgaW5zZXJ0ZWQgdGhlIGVudHJ5IHRvIHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4LiBBbGxvY2F0 ZSByZXF1ZXN0ZWQKKwkgKiBhbW91bnQgb2YgYWRkcmVzcyBzcGFjZSBpbiB0aGUgc2hhcmVkIG1l bW9yeSBzZWdtZW50IGZvciBpdCwgYW5kIGRvCisJICogYmFzaWMgaW5pdGlhbGl6aW9uLiBUaGUg bWVtb3J5IGdldHMgYWxsb2NhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhcworCSAqIHRoZSBj b3JyZXNwb25kaW5nIG1lbW9yeSBwYWdlcyBhcmUgd3JpdHRlbiB0by4gIEFsbG9jYXRlIGVub3Vn aCBzcGFjZQorCSAqIGZvciBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUgdG8gZ3JvdyB0byBpdHMgbWF4 aW11bSBzaXplLiBJdCBpcyBleHBlY3RlZAorCSAqIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIGNh bGxiYWNrIHdpbGwgdXNlIG9ubHkgYXMgbXVjaCBtZW1vcnkgYXMgdGhlCisJICogaW5pdGlhbCBz aXplIG9mIHRoZSByZXNpemFibGUgc3RydWN0dXJlLiAoV2VsbCwgaWYgaXQgZG9lc24ndCwgbW9y ZQorCSAqIG1lbW9yeSB3aWxsIGJlIGFsbG9jYXRlZCBpbml0aWFsbHkgdGhhbiBleHBlY3RlZCwg bm8gZnVydGhlciBoYXJtIGlzCisJICogZG9uZS4pCiAJICovCi0Jc3RydWN0UHRyID0gU2htZW1B bGxvY1JhdyhyZXF1ZXN0LT5vcHRpb25zLT5zaXplLAorCXJlcXVlc3RlZF9zaXplID0gU0hNRU1f UkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3QpOworCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXco cmVxdWVzdGVkX3NpemUsCiAJCQkJCQkJICByZXF1ZXN0LT5vcHRpb25zLT5hbGlnbm1lbnQsCiAJ CQkJCQkJICAmYWxsb2NhdGVkX3NpemUpOwogCWlmIChzdHJ1Y3RQdHIgPT0gTlVMTCkKQEAgLTUz NSwxMyArNjA0LDIyIEBAIEluaXRTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0 KQogCQloYXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX1JFTU9WRSwgTlVMTCk7CiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKLQkJ CQkgZXJybXNnKCJub3QgZW5vdWdoIHNoYXJlZCBtZW1vcnkgZm9yIGRhdGEgc3RydWN0dXJlIgor CQkJCSBlcnJtc2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBzcGFjZSBmb3IgZGF0YSBzdHJ1 Y3R1cmUiCiAJCQkJCQkiIFwiJXNcIiAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAotCQkJCQkJbmFt ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSkpKTsKKwkJCQkJCW5hbWUsIHJlcXVlc3RlZF9zaXpl KSkpOwogCX0KIAlpbmRleF9lbnRyeS0+c2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemU7CiAJ aW5kZXhfZW50cnktPmFsbG9jYXRlZF9zaXplID0gYWxsb2NhdGVkX3NpemU7CiAJaW5kZXhfZW50 cnktPmxvY2F0aW9uID0gc3RydWN0UHRyOworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJ aW5kZXhfZW50cnktPnJlc2VydmVkX3NwYWNlID0gYWxsb2NhdGVkX3NpemU7CisJaW5kZXhfZW50 cnktPm1heGltdW1fc2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZTsKKwlpZiAo cmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCkKKwl7CisJCS8qIEFkanVzdCBhbGxv Y2F0ZWQgc2l6ZSBvZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuICovCisJCWluZGV4X2VudHJ5LT5h bGxvY2F0ZWRfc2l6ZSA9IEVzdGltYXRlQWxsb2NhdGVkU2l6ZShpbmRleF9lbnRyeSk7CisJfQor I2VuZGlmCiAKIAkvKiBJbml0aWFsaXplIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBh cmVhIGl0IGlzICovCiAJc3dpdGNoIChyZXF1ZXN0LT5raW5kKQpAQCAtNTg2LDcgKzY2NCw3IEBA IEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QsIGJvb2wgbWlzc2lu Z19vaykKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIENoZWNrIHRoYXQgdGhlIHNpemUgaW4g dGhlIGluZGV4IG1hdGNoZXMgdGhlIHJlcXVlc3QuICovCisJLyogQ2hlY2sgdGhhdCB0aGUgc2l6 ZXMgaW4gdGhlIGluZGV4IG1hdGNoIHRoZSByZXF1ZXN0LiAqLwogCWlmIChpbmRleF9lbnRyeS0+ c2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25zLT5zaXplICYmCiAJCXJlcXVlc3QtPm9wdGlvbnMtPnNp emUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAl7CkBAIC01OTYsNiArNjc0LDE4IEBA IEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QsIGJvb2wgbWlzc2lu Z19vaykKIAkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRpb25zLT5z aXplKSkpOwogCX0KIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJaWYgKGluZGV4X2Vu dHJ5LT5tYXhpbXVtX3NpemUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplICYmCisJ CXJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9T SVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0 cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0aCIgXAorCQkJCQkJIiBkaWZmZXJlbnQgbWF4aW11 bV9zaXplOiBleGlzdGluZyAlenUsIHJlcXVlc3RlZCAlenUiLAorCQkJCQkJbmFtZSwgaW5kZXhf ZW50cnktPm1heGltdW1fc2l6ZSwKKwkJCQkJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6 ZSkpKTsKKwl9CisjZW5kaWYKKwogCS8qCiAJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBw b2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCiAJICogYXR0YWNoIGRlcGVu ZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgpAQCAtNjE3LDYgKzcwNywxMTUg QEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNz aW5nX29rKQogCXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0K Ky8qCisgKiBFc3RpbWF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEgcmVzaXph YmxlIHN0cnVjdHVyZS4KKyAqCisgKiAuLi4gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0 aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBpbiBwYWdlcy4KKyAqCisgKiBUaGUgbWVtb3J5IHBhZ2Vz IGNvdmVyZWQgYnkgdGhlIGN1cnJlbnQgc2l6ZSBvZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUgYXJl CisgKiBmdWxseSBhbGxvY2F0ZWQgd2hlbiB0aGUgY3VycmVudGx5IGFsbG9jYXRlZCBwYXJ0IG9m IHRoZSBzdHJ1Y3R1cmUgaXMgd3JpdHRlbgorICogdG8uIFRoZSBtZW1vcnkgcGFnZSB3aGVyZSB0 aGUgbWF4aW1hbCBzdHJ1Y3R1cmUgZW5kcyBhbHNvIGhvc3RzIHRoZSBuZXh0CisgKiBzdHJ1Y3R1 cmUsIHVubGVzcyB0aGUgbWF4aW1hbCBzdHJ1Y3R1cmUgZW5kcyBvbiBhIHBhZ2UgYm91bmRhcnku IEhlbmNlIHRoYXQKKyAqIHBhZ2UgaXMgYWxsb2NhdGVkIHdoZW4gdGhlIG5leHQgc3RydWN0dXJl IGlzIHdyaXR0ZW4gdG8uIFRoZSBtZW1vcnkgcGFnZXMKKyAqIGJldHdlZW4gdGhlIHBhZ2Ugd2hl cmUgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGVuZHMgYW5kIHRoZSBwYWdlIHdoZXJlIHRoZSBuZXh0 CisgKiBzdHJ1Y3R1cmUgc3RhcnRzIHJlbWFpbiB1bmFsbG9jYXRlZC4gVGh1cyB0aGUgbWVtb3J5 IGFsbG9jYXRlZCBmb3IgYQorICogcmVzaXphYmxlIHN0cnVjdHVyZSBjYW4gYmUgZXN0aW1hdGVk IGFzIHRoZSB0b3RhbCBhZGRyZXNzIHNwYWNlIHJlc2VydmVkIGZvcgorICogdGhlIHN0cnVjdHVy ZSBtaW51cyB0aGUgdW5hbGxvY2F0ZWQgbWVtb3J5IHBhZ2VzIGJldHdlZW4gdGhlIGN1cnJlbnQg ZW5kIGFuZAorICogdGhlIG5leHQgc3RydWN0dXJlLgorICovCitzdGF0aWMgU2l6ZQorRXN0aW1h dGVBbGxvY2F0ZWRTaXplKFNobWVtSW5kZXhFbnQgKmVudHJ5KQoreworCVNpemUJCXBhZ2Vfc2l6 ZSA9IEdldE9TUGFnZVNpemUoKTsKKwljaGFyCSAgICphbGlnbl9lbmQgPSAoY2hhciAqKSBUWVBF QUxJR04ocGFnZV9zaXplLCAoY2hhciAqKSBlbnRyeS0+bG9jYXRpb24gKyBlbnRyeS0+c2l6ZSk7 CisJY2hhcgkgICAqZmxvb3JfbWF4X2VuZCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dOKHBhZ2Vf c2l6ZSwgKGNoYXIgKikgZW50cnktPmxvY2F0aW9uICsgZW50cnktPm1heGltdW1fc2l6ZSk7CisK KwlBc3NlcnQoZW50cnktPm1heGltdW1fc2l6ZSA+PSBlbnRyeS0+c2l6ZSk7CisJQXNzZXJ0KGVu dHJ5LT5yZXNlcnZlZF9zcGFjZSA+PSBlbnRyeS0+bWF4aW11bV9zaXplKTsKKworCWlmIChhbGln bl9lbmQgPCBmbG9vcl9tYXhfZW5kKQorCQlyZXR1cm4gZW50cnktPnJlc2VydmVkX3NwYWNlIC0g KGZsb29yX21heF9lbmQgLSBhbGlnbl9lbmQpOworCisJcmV0dXJuIGVudHJ5LT5yZXNlcnZlZF9z cGFjZTsKK30KKworLyoKKyAqIFNobWVtUmVzaXplU3RydWN0KCkgLS0tIHJlc2l6ZSBhIHJlc2l6 YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZS4KKyAqCisgKiBJZiB0aGUgc3RydWN0dXJlIGlz IGJlaW5nIHNocnVuaywgdGhlIG1lbW9yeSBwYWdlcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVk CisgKiBhcmUgZnJlZWQuIElmIHRoZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgZXhwYW5kZWQsIHRoZSBt ZW1vcnkgcGFnZXMgdGhhdCBhcmUKKyAqIG5lZWRlZCBmb3IgdGhlIG5ldyBzaXplIGFyZSBhbGxv Y2F0ZWQuIFNlZSBFc3RpbWF0ZUFsbG9jYXRlZFNpemUoKSBmb3IKKyAqIGV4cGxhbmF0aW9uIG9m IHdoaWNoIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgZm9yIGEgcmVzaXphYmxlIHN0cnVjdHVyZS4KKyAq Lwordm9pZAorU2htZW1SZXNpemVTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBuZXdfc2l6 ZSkKK3sKKwlTaG1lbUluZGV4RW50ICpyZXN1bHQ7CisJYm9vbAkJZm91bmQ7CisJU2l6ZQkJcGFn ZV9zaXplID0gR2V0T1NQYWdlU2l6ZSgpOworCWNoYXIJICAgKm5ld19lbmQ7CisKKwlBc3NlcnQo bmV3X3NpemUgPiAwKTsKKworCS8qCisJICogUmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0 dXJlcyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBtbWFwJ2VkCisJICogbWVtb3J5LgorCSAqLwor CUFzc2VydChzaGFyZWRfbWVtb3J5X3R5cGUgPT0gU0hNRU1fVFlQRV9NTUFQKTsKKworCS8qIGxv b2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4ICovCisJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4 TG9jaywgTFdfRVhDTFVTSVZFKTsKKwlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKSBoYXNoX3Nl YXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJzaG1lbSBzdHJ1Y3QgXCIlc1wiIGlzIG5v dCBpbml0aWFsaXplZCIsIG5hbWUpKSk7CisKKwlBc3NlcnQocmVzdWx0KTsKKworCWlmIChyZXN1 bHQtPm1heGltdW1fc2l6ZSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInNo YXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBub3QgcmVzaXphYmxlIiwgbmFtZSkpKTsKKwor CWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8IG5ld19zaXplKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCisJCQkJIGVycm1z Zygibm90IGVub3VnaCBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIGZvciByZXNpemluZyBzdHJ1 Y3R1cmUgXCIlc1wiIiBcCisJCQkJCQkiKHJlcXVpcmVkICV6dSBieXRlcywgcmVzZXJ2ZWQgJXp1 IGJ5dGVzKSIsCisJCQkJCQluYW1lLCBuZXdfc2l6ZSwgcmVzdWx0LT5tYXhpbXVtX3NpemUpKSk7 CisKKwkvKgorCSAqIFdoZW4gc2hyaW5raW5nIHRoZSBtZW1vcnkgZnJvbSB0aGUgcGFnZSBhbGln bmVkIG5ldyBlbmQgdG8gdGhlIHN0YXJ0IG9mCisJICogdGhlIHBhZ2UgY29udGFpbmluZyBlbmQg b2YgdGhlIHJlc2VydmVkIHNwYWNlIGlzIG5vdCByZXF1aXJlZC4gV2hlcmVhcworCSAqIHdoZW4g ZXhwYW5kaW5nIHRoZSBtZW1vcnkgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UgY29udGFpbmlu ZyB0aGUKKwkgKiBzdGFydCBvZiB0aGUgc3RydWN0dXJlIHRvIHRoZSBwYWdlIGFsaWduZWQgbmV3 IGVuZCBpcyByZXF1aXJlZC4KKwkgKi8KKwluZXdfZW5kID0gKGNoYXIgKikgVFlQRUFMSUdOKHBh Z2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiArIG5ld19zaXplKTsKKwlpZiAobmV3 X3NpemUgPCByZXN1bHQtPnNpemUpCisJeworCQljaGFyCSAgICptYXhfZW5kID0gKGNoYXIgKikg VFlQRUFMSUdOX0RPV04ocGFnZV9zaXplLCAoY2hhciAqKSByZXN1bHQtPmxvY2F0aW9uICsgcmVz dWx0LT5tYXhpbXVtX3NpemUpOworCisJCWlmIChtYXhfZW5kID4gbmV3X2VuZCkKKwkJCVBHU2hh cmVkTWVtb3J5RW5zdXJlRnJlZWQobmV3X2VuZCwgbWF4X2VuZCAtIG5ld19lbmQpOworCX0KKwll bHNlIGlmIChuZXdfc2l6ZSA+IHJlc3VsdC0+c2l6ZSkKKwl7CisJCWNoYXIJICAgKnN0cnVjdF9z dGFydCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0 LT5sb2NhdGlvbik7CisKKwkJaWYgKG5ld19lbmQgPiBzdHJ1Y3Rfc3RhcnQpCisJCQlQR1NoYXJl ZE1lbW9yeUVuc3VyZUFsbG9jYXRlZChzdHJ1Y3Rfc3RhcnQsIG5ld19lbmQgLSBzdHJ1Y3Rfc3Rh cnQpOworCX0KKworCS8qIFVwZGF0ZSBzaG1lbSBpbmRleCBlbnRyeS4gKi8KKwlyZXN1bHQtPnNp emUgPSBuZXdfc2l6ZTsKKwlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gRXN0aW1hdGVBbGxvY2F0 ZWRTaXplKHJlc3VsdCk7CisKKwlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKK30KKyNl bmRpZgkJCQkJCQkvKiBIQVZFX1JFU0laQUJMRV9TSE1FTSAqLworCiAvKgogICoJSW5pdFNobWVt QWxsb2NhdG9yKCkgLS0tIHNldCB1cCBiYXNpYyBwb2ludGVycyB0byBzaGFyZWQgbWVtb3J5Lgog ICoKQEAgLTcyMyw2ICs5MjIsMTAgQEAgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIg KnNlZ2hkcikKIAkJQXNzZXJ0KCFmb3VuZCk7CiAJCXJlc3VsdC0+c2l6ZSA9IFNobWVtQWxsb2Nh dG9yLT5pbmRleF9zaXplOwogCQlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gU2htZW1BbGxvY2F0 b3ItPmluZGV4X3NpemU7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkJcmVzdWx0LT5t YXhpbXVtX3NpemUgPSAwOworCQlyZXN1bHQtPnJlc2VydmVkX3NwYWNlID0gcmVzdWx0LT5hbGxv Y2F0ZWRfc2l6ZTsKKyNlbmRpZgogCQlyZXN1bHQtPmxvY2F0aW9uID0gU2htZW1BbGxvY2F0b3It PmluZGV4OwogCX0KIH0KQEAgLTEwNjQsNyArMTI2Nyw3IEBAIG11bF9zaXplKFNpemUgczEsIFNp emUgczIpCiBEYXR1bQogcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDQKKyNkZWZpbmUgUEdfR0VUX1NI TUVNX1NJWkVTX0NPTFMgNgogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZv ICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7CiAJU2htZW1J bmRleEVudCAqZW50OwpAQCAtMTA4Niw3ICsxMjg5LDIzIEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0 aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQl2YWx1ZXNbMV0gPSBJbnQ2NEdldERhdHVtKChjaGFy ICopIGVudC0+bG9jYXRpb24gLSAoY2hhciAqKSBTaG1lbVNlZ0hkcik7CiAJCXZhbHVlc1syXSA9 IEludDY0R2V0RGF0dW0oZW50LT5zaXplKTsKIAkJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bShl bnQtPmFsbG9jYXRlZF9zaXplKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCQl2YWx1 ZXNbNF0gPSBJbnQ2NEdldERhdHVtKGVudC0+bWF4aW11bV9zaXplKTsKKwkJdmFsdWVzWzVdID0g SW50NjRHZXREYXR1bShlbnQtPnJlc2VydmVkX3NwYWNlKTsKKworCQkvKgorCQkgKiBLZWVwIHRy YWNrIG9mIHRoZSB0b3RhbCByZXNlcnZlZCBzcGFjZSBmb3IgbmFtZWQgc2htZW0gYXJlYXMsIHRv IGJlCisJCSAqIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBh bGxvY2F0ZWQgZm9yCisJCSAqIGFub255bW91cyBhcmVhcyBhbmQgdGhlIGFtb3VudCBvZiBmcmVl IHNoYXJlZCBtZW1vcnkgYXQgdGhlIGVuZCBvZgorCQkgKiB0aGUgc2VnbWVudC4KKwkJICovCisJ CW5hbWVkX2FsbG9jYXRlZCArPSBlbnQtPnJlc2VydmVkX3NwYWNlOworI2Vsc2UKKwkJdmFsdWVz WzRdID0gSW50NjRHZXREYXR1bSgwKTsKKwkJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1bShlbnQt PmFsbG9jYXRlZF9zaXplKTsKKwogCQluYW1lZF9hbGxvY2F0ZWQgKz0gZW50LT5hbGxvY2F0ZWRf c2l6ZTsKKyNlbmRpZgogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0 LCByc2luZm8tPnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpAQCAtMTA5Nyw2ICsx MzE2LDggQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbnVs bHNbMV0gPSB0cnVlOwogCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0oU2htZW1BbGxvY2F0b3It PmZyZWVfb2Zmc2V0IC0gbmFtZWRfYWxsb2NhdGVkKTsKIAl2YWx1ZXNbM10gPSB2YWx1ZXNbMl07 CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSgwKTsKKwl2YWx1ZXNbNV0gPSB2YWx1ZXNbMl07 CiAJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVz YywgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBvdXRwdXQgYXMtb2YteWV0IHVudXNlZCBzaGFyZWQg bWVtb3J5ICovCkBAIC0xMTA1LDYgKzEzMjYsOCBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMo UEdfRlVOQ1RJT05fQVJHUykKIAludWxsc1sxXSA9IGZhbHNlOwogCXZhbHVlc1syXSA9IEludDY0 R2V0RGF0dW0oU2htZW1TZWdIZHItPnRvdGFsc2l6ZSAtIFNobWVtQWxsb2NhdG9yLT5mcmVlX29m ZnNldCk7CiAJdmFsdWVzWzNdID0gdmFsdWVzWzJdOworCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0 dW0oMCk7CisJdmFsdWVzWzVdID0gdmFsdWVzWzJdOwogCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJz aW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOwogCiAJTFdM b2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7CkBAIC0xMjkyLDIzICsxNTE1LDkgQEAgcGdfZ2V0 X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05fQVJHUykKIFNpemUKIHBnX2dldF9z aG1lbV9wYWdlc2l6ZSh2b2lkKQogewotCVNpemUJCW9zX3BhZ2Vfc2l6ZTsKLSNpZmRlZiBXSU4z MgotCVNZU1RFTV9JTkZPIHN5c2luZm87Ci0KLQlHZXRTeXN0ZW1JbmZvKCZzeXNpbmZvKTsKLQlv c19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNpemU7Ci0jZWxzZQotCW9zX3BhZ2Vfc2l6ZSA9 IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSNlbmRpZgotCiAJQXNzZXJ0KElzVW5kZXJQb3N0bWFz dGVyKTsKLQlBc3NlcnQoaHVnZV9wYWdlc19zdGF0dXMgIT0gSFVHRV9QQUdFU19VTktOT1dOKTsK LQotCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9PSBIVUdFX1BBR0VTX09OKQotCQlHZXRIdWdlUGFn ZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7CiAKLQlyZXR1cm4gb3NfcGFnZV9zaXplOworCXJl dHVybiBHZXRPU1BhZ2VTaXplKCk7CiB9CiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IGEzMTVjNGFiOGFiLi5iNGQ5OGExZjYxMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTEyMTEsNiArMTIxMSwx MyBAQAogICBtYXggPT4gJzEwMDAuMCcsCiB9LAogCit7IG5hbWUgPT4gJ2hhdmVfcmVzaXphYmxl X3NobWVtJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19JTlRFUk5BTCcsIGdyb3Vw ID0+ICdQUkVTRVRfT1BUSU9OUycsCisgIHNob3J0X2Rlc2MgPT4gJ1Nob3dzIHdoZXRoZXIgdGhl IHJ1bm5pbmcgc2VydmVyIHN1cHBvcnRzIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5LicsCisgIGZs YWdzID0+ICdHVUNfTk9UX0lOX1NBTVBMRSB8IEdVQ19ESVNBTExPV19JTl9GSUxFJywKKyAgdmFy aWFibGUgPT4gJ2hhdmVfcmVzaXphYmxlX3NobWVtX2VuYWJsZWQnLAorICBib290X3ZhbCA9PiAn SEFWRV9SRVNJWkFCTEVfU0hNRU1fRU5BQkxFRCcsCit9LAorCiB7IG5hbWUgPT4gJ2hiYV9maWxl JywgdHlwZSA9PiAnc3RyaW5nJywgY29udGV4dCA9PiAnUEdDX1BPU1RNQVNURVInLCBncm91cCA9 PiAnRklMRV9MT0NBVElPTlMnLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBzZXJ2ZXJcJ3Mg ImhiYSIgY29uZmlndXJhdGlvbiBmaWxlLicsCiAgIGZsYWdzID0+ICdHVUNfU1VQRVJVU0VSX09O TFknLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBkOWNhMTNiYWZmOS4uNmJi MDhkZDEwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC02NTMsNiArNjUz LDEzIEBAIHN0YXRpYyBib29sIGFzc2VydF9lbmFibGVkID0gREVGQVVMVF9BU1NFUlRfRU5BQkxF RDsKICNlbmRpZgogc3RhdGljIGJvb2wgZXhlY19iYWNrZW5kX2VuYWJsZWQgPSBFWEVDX0JBQ0tF TkRfRU5BQkxFRDsKIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisjZGVmaW5lIEhBVkVf UkVTSVpBQkxFX1NITUVNX0VOQUJMRUQgdHJ1ZQorI2Vsc2UKKyNkZWZpbmUgSEFWRV9SRVNJWkFC TEVfU0hNRU1fRU5BQkxFRCBmYWxzZQorI2VuZGlmCitzdGF0aWMgYm9vbCBoYXZlX3Jlc2l6YWJs ZV9zaG1lbV9lbmFibGVkID0gSEFWRV9SRVNJWkFCTEVfU0hNRU1fRU5BQkxFRDsKKwogc3RhdGlj IGNoYXIgKnJlY292ZXJ5X3RhcmdldF90aW1lbGluZV9zdHJpbmc7CiBzdGF0aWMgY2hhciAqcmVj b3ZlcnlfdGFyZ2V0X3N0cmluZzsKIHN0YXRpYyBjaGFyICpyZWNvdmVyeV90YXJnZXRfeGlkX3N0 cmluZzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGJkMTc3YWViZmNiLi5lNTc1ZDcwYjU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NjY0LDggKzg2NjQsOCBAQAogeyBvaWQg PT4gJzUwNTInLCBkZXNjciA9PiAnYWxsb2NhdGlvbnMgZnJvbSB0aGUgbWFpbiBzaGFyZWQgbWVt b3J5IHNlZ21lbnQnLAogICBwcm9uYW1lID0+ICdwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLCBw cm9yb3dzID0+ICc1MCcsIHByb3JldHNldCA9PiAndCcsCiAgIHByb3ZvbGF0aWxlID0+ICd2Jywg cHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5 cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50OH0nLCBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG99 JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLG9mZixzaXplLGFsbG9jYXRlZF9zaXplfScsCisg IHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDh9JywgcHJv YXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne25hbWUsb2Zm LHNpemUsYWxsb2NhdGVkX3NpemUsbWF4aW11bV9zaXplLHJlc2VydmVkX3NwYWNlfScsCiAgIHBy b3NyYyA9PiAncGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zJywKICAgcHJvYWNsID0+ICd7UE9TVEdS RVM9WCxwZ19yZWFkX2FsbF9zdGF0cz1YfScgfSwKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCA5ZjZkNTEy MzQ3ZS4uOGYyYTU5ZWMzYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu CisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC04NSw2ICs4NSwxNCBAQAogICAg ZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9ERUNMX0ZfRlVMTEZTWU5DCiAKKy8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgTUFEVl9QT1BVTEFURV9XUklURScsIGFu ZCB0byAwCisgICBpZiB5b3UgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX01BRFZfUE9QVUxB VEVfV1JJVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9m IGBNQURWX1JFTU9WRScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFW RV9ERUNMX01BRFZfUkVNT1ZFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNs YXJhdGlvbiBvZiBgbWVtc2V0X3MnLCBhbmQgdG8gMCBpZiB5b3UKICAgIGRvbid0LiAqLwogI3Vu ZGVmIEhBVkVfREVDTF9NRU1TRVRfUwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmln X21hbnVhbC5oIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCmluZGV4IDUyMWI0OWI4 ODg4Li5iMDlkNmM5MTMyNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVh bC5oCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaApAQCAtMTMxLDYgKzEzMSwx NSBAQAogI2RlZmluZSBFWEVDX0JBQ0tFTkQKICNlbmRpZgogCisvKgorICogSEFWRV9SRVNJWkFC TEVfU0hNRU0gaW5kaWNhdGVzIHdoZXRoZXIgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0 dXJlcyBhcmUKKyAqIHN1cHBvcnRlZC4gVGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIExpbnV4 LXNwZWNpZmljIG1hZHZpc2UgY29uc3RhbnRzCisgKiAoTUFEVl9SRU1PVkUgYW5kIE1BRFZfUE9Q VUxBVEVfV1JJVEUpLgorICovCisjaWYgSEFWRV9ERUNMX01BRFZfUkVNT1ZFICYmIEhBVkVfREVD TF9NQURWX1BPUFVMQVRFX1dSSVRFICYmICFkZWZpbmVkKEVYRUNfQkFDS0VORCkKKyNkZWZpbmUg SEFWRV9SRVNJWkFCTEVfU0hNRU0KKyNlbmRpZgorCiAvKgogICogVVNFX1BPU0lYX0ZBRFZJU0Ug Y29udHJvbHMgd2hldGhlciBQb3N0Z3JlcyB3aWxsIGF0dGVtcHQgdG8gdXNlIHRoZQogICogcG9z aXhfZmFkdmlzZSgpIGtlcm5lbCBjYWxsLiAgVXN1YWxseSB0aGUgYXV0b21hdGljIGNvbmZpZ3Vy ZSB0ZXN0cyBhcmUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaAppbmRleCAxMGM3YjA2NTg2MS4uM2Q1YWNl YmE1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmgKQEAgLTg5LDYgKzg5LDExIEBAIGV4dGVybiBQ R1NobWVtSGVhZGVyICpQR1NoYXJlZE1lbW9yeUNyZWF0ZShTaXplIHNpemUsCiAJCQkJCQkJCQkJ ICAgUEdTaG1lbUhlYWRlciAqKnNoaW0pOwogZXh0ZXJuIGJvb2wgUEdTaGFyZWRNZW1vcnlJc0lu VXNlKHVuc2lnbmVkIGxvbmcgaWQxLCB1bnNpZ25lZCBsb25nIGlkMik7CiBleHRlcm4gdm9pZCBQ R1NoYXJlZE1lbW9yeURldGFjaCh2b2lkKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQor ZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlFbnN1cmVGcmVlZCh2b2lkICphZGRyLCBTaXplIHNp emUpOworZXh0ZXJuIHZvaWQgUEdTaGFyZWRNZW1vcnlFbnN1cmVBbGxvY2F0ZWQodm9pZCAqYWRk ciwgU2l6ZSBzaXplKTsKKyNlbmRpZgogZXh0ZXJuIHZvaWQgR2V0SHVnZVBhZ2VTaXplKFNpemUg Kmh1Z2VwYWdlc2l6ZSwgaW50ICptbWFwX2ZsYWdzKTsKK2V4dGVybiBTaXplIEdldE9TUGFnZVNp emUodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19TSE1FTV9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgK aW5kZXggOTEyMThkYjZkNmUuLjEyMmJmNzk0M2NhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCkBAIC01Nyw2 ICs1NywxOCBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVjdE9wdHMKIAkgKi8KIAlzaXplX3QJ CWFsaWdubWVudDsKIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisKKwkvKgorCSAqIE1h eGltdW0gc2l6ZSB0aGlzIHN0cnVjdHVyZSBjYW4gZ3JvdyB1cHRvIGluIGZ1dHVyZS4gVGhlIG1l bW9yeSBpcyBub3QKKwkgKiBhbGxvY2F0ZWQgcmlnaHQgYXdheSBidXQgdGhlIGNvcnJlc3BvbmRp bmcgYWRkcmVzcyBzcGFjZSBpcyByZXNlcnZlZCBzbworCSAqIHRoYXQgbWVtb3J5IGNhbiBiZSBt YXBwZWQgdG8gaXQgd2hlbiB0aGUgc3RydWN0dXJlIGdyb3dzLiBUeXBpY2FsbHkKKwkgKiBzaG91 bGQgYmUgdXNlZCBmb3IgbGFyZ2UgcmVzaXphYmxlIHN0cnVjdHVyZXMgd2hpY2ggbmVlZCBzZXZl cmFsIHBhZ2VzCisJICogd29ydGggb2YgY29udGlndW91cyBtZW1vcnkuCisJICovCisJc3NpemVf dAkJbWF4aW11bV9zaXplOworI2VuZGlmCisKIAkvKgogCSAqIFdoZW4gdGhlIHNobWVtIGFyZWEg aXMgaW5pdGlhbGl6ZWQgb3IgYXR0YWNoZWQgdG8sIHBvaW50ZXIgdG8gaXQgaXMKIAkgKiBzdG9y ZWQgaW4gKnB0ci4gIEl0IHVzdWFsbHkgcG9pbnRzIHRvIGEgZ2xvYmFsIHZhcmlhYmxlLCB1c2Vk IHRvIGFjY2VzcwpAQCAtMTY2LDYgKzE3OCw5IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtQ2FsbGJh Y2tzCiAKIGV4dGVybiB2b2lkIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoY29uc3QgU2htZW1DYWxs YmFja3MgKmNhbGxiYWNrcyk7CiBleHRlcm4gYm9vbCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZv aWQgKmFkZHIpOworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCitleHRlcm4gdm9pZCBTaG1l bVJlc2l6ZVN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19zaXplKTsKKyNlbmRpZgog CiAvKgogICogVGhlc2UgbWFjcm9zIHByb3ZpZGUgc3ludGFjdGljIHN1Z2FyIGZvciBjYWxsaW5n IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9N YWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggZjFiMDRjOTk5NjkuLjJh MWU3NDZiZjBjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcgQEAgU1VCRElSUyA9IFwKIAkJ ICBsaWJwcV9waXBlbGluZSBcCiAJCSAgb2F1dGhfdmFsaWRhdG9yIFwKIAkJICBwbHNhbXBsZSBc CisJCSAgcmVzaXphYmxlX3NobWVtIFwKIAkJICBzcGdpc3RfbmFtZV9vcHMgXAogCQkgIHRlc3Rf YWlvIFwKIAkJICB0ZXN0X2JpbmFyeWhlYXAgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggZmM5OTU1 MmQ5YWIuLmNkOTRlMWZlYTE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1 aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTEzLDYgKzEzLDcgQEAg c3ViZGlyKCdsaWJwcV9waXBlbGluZScpCiBzdWJkaXIoJ25idHJlZScpCiBzdWJkaXIoJ29hdXRo X3ZhbGlkYXRvcicpCiBzdWJkaXIoJ3Bsc2FtcGxlJykKK3N1YmRpcigncmVzaXphYmxlX3NobWVt JykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3NwaHJhc2VfY2Fs bGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NmJm MTdiZWY0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjUgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJyZXNpemFibGVfc2htZW0gLSB0ZXN0 IG1vZHVsZSBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkiCisKK01PRFVMRVMgPSByZXNpemFi bGVfc2htZW0KKworRVhURU5TSU9OID0gcmVzaXphYmxlX3NobWVtCitEQVRBID0gcmVzaXphYmxl X3NobWVtLS0xLjAuc3FsCisKK1RBUF9URVNUUyA9IDEKKworIyBUaGlzIHRlc3QgcmVxdWlyZXMg bGlicmFyeSB0byBiZSBsb2FkZWQgYXQgdGhlIHNlcnZlciBzdGFydCwgc28gZGlzYWJsZQorIyBp bnN0YWxsY2hlY2sKK05PX0lOU1RBTExDSEVDSyA9IDEKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NP TkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitp bmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxl X3NobWVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29u dHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVt L21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTNi YmJjOTVjMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3No bWVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzYgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy9yZXNp emFibGVfc2htZW0vbWVzb24uYnVpbGQKKworcmVzaXphYmxlX3NobWVtX3NvdXJjZXMgPSBmaWxl cygKKyAgJ3Jlc2l6YWJsZV9zaG1lbS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRv d3MnCisgIHJlc2l6YWJsZV9zaG1lbV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4z MnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncmVzaXphYmxlX3NobWVtJywK KyAgICAnLS1GSUxFREVTQycsICdyZXNpemFibGVfc2htZW0gLSB0ZXN0IG1vZHVsZSBmb3IgcmVz aXphYmxlIHNoYXJlZCBtZW1vcnknLF0pCitlbmRpZgorCityZXNpemFibGVfc2htZW0gPSBzaGFy ZWRfbW9kdWxlKCdyZXNpemFibGVfc2htZW0nLAorICByZXNpemFibGVfc2htZW1fc291cmNlcywK KyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0gcmVz aXphYmxlX3NobWVtCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAncmVzaXphYmxl X3NobWVtLmNvbnRyb2wnLAorICAncmVzaXphYmxlX3NobWVtLS0xLjAuc3FsJywKKykKKwordGVz dHMgKz0geworICAnbmFtZSc6ICdyZXNpemFibGVfc2htZW0nLAorICAnc2QnOiBtZXNvbi5jdXJy ZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAg J3RhcCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8wMDFfcmVzaXphYmxlX3NobWVtLnBs JywKKyAgICBdLAorICAgICMgVGhpcyB0ZXN0IHJlcXVpcmVzIGxpYnJhcnkgdG8gYmUgbG9hZGVk IGF0IHRoZSBzZXJ2ZXIgc3RhcnQsIHNvIGRpc2FibGUKKyAgICAjIGluc3RhbGxjaGVjaworICAg ICdydW5uaW5nY2hlY2snOiBmYWxzZSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbCBiL3NyYy90ZXN0 L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzFiY2I2MTE3YjYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0t LTEuMC5zcWwKQEAgLTAsMCArMSwzNyBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlw dCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitc ZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gcmVzaXphYmxlX3NobWVtIiB0byBsb2FkIHRoaXMg ZmlsZS4gXHF1aXQKKworLS0gRnVuY3Rpb24gdG8gcmVzaXplIHRoZSB0ZXN0IHN0cnVjdHVyZSBp biB0aGUgc2hhcmVkIG1lbW9yeQorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV9yZXNp emUobmV3X2VudHJpZXMgaW50ZWdlcikKK1JFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFN RScKK0xBTkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGFs bCBlbnRyaWVzIGluIHRoZSB0ZXN0IHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5CistLSBXcml0 aW5nIGFsbCB0aGUgZW50cmllcyBtYWtlcyBzdXJlIHRoYXQgdGhlIG1lbW9yeSBpcyBhY3R1YWxs eSBhbGxvY2F0ZWQgYW5kCistLSBtYXBwZWQgdG8gdGhlIHByb2Nlc3MsIHNvIHRoYXQgd2UgY2Fu IGxhdGVyIG1lYXN1cmUgdGhlIG1lbW9yeSB1c2FnZS4KK0NSRUFURSBGVU5DVElPTiByZXNpemFi bGVfc2htZW1fd3JpdGUoZW50cnlfdmFsdWUgaW50ZWdlcikKK1JFVFVSTlMgdm9pZAorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlvbiB0byB2ZXJp ZnkgdGhhdCBzcGVjaWZpZWQgbnVtYmVyIG9mIGluaXRpYWwgZW50cmllcyBoYXZlIGV4cGVjdGVk IHZhbHVlLgorLS0gUmVhZGluZyBhbGwgdGhlIGVudHJpZXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBt ZW1vcnkgaXMgYWN0dWFsbHkgbWFwcGVkIHRvIHRoZQorLS0gcHJvY2Vzcywgc28gdGhhdCB3ZSBj YW4gbGF0ZXIgbWVhc3VyZSB0aGUgbWVtb3J5IHVzYWdlLgorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6 YWJsZV9zaG1lbV9yZWFkKGVudHJ5X2NvdW50IGludGVnZXIsIGVudHJ5X3ZhbHVlIGludGVnZXIp CitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklD VDsKKworLS0gRnVuY3Rpb24gdG8gcmVwb3J0IG1lbW9yeSB1c2FnZSBzdGF0aXN0aWNzIG9mIHRo ZSBjYWxsaW5nIGJhY2tlbmQKK0NSRUFURSBGVU5DVElPTiByZXNpemFibGVfc2htZW1fdXNhZ2Uo T1VUIHJzc19hbm9uIGJpZ2ludCwgT1VUIHJzc19maWxlIGJpZ2ludCwgT1VUIHJzc19zaG1lbSBi aWdpbnQsIE9VVCB2bV9zaXplIGJpZ2ludCkKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFH RSBDIFNUUklDVDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IHRoZSBzaGFyZWQgbWVtb3J5IHBhZ2Ug c2l6ZQorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV9wYWdlc2l6ZSgpCitSRVRVUk5T IGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5j IGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk3MGVhNzVjMGRlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3No bWVtLmMKQEAgLTAsMCArMSwzMzIgQEAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiByZXNp emFibGVfc2htZW0uYworICoJCVRlc3QgbW9kdWxlIGZvciBQb3N0Z3JlU1FMJ3MgcmVzaXphYmxl IHNoYXJlZCBtZW1vcnkgZnVuY3Rpb25hbGl0eQorICoKKyAqIFRoaXMgbW9kdWxlIGRlbW9uc3Ry YXRlcyBhbmQgdGVzdHMgdGhlIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IEFQSQorICogcHJvdmlk ZWQgYnkgc2htZW0uYy9zaG1lbS5oLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKKyNp bmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NwaW4u aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgor I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgi CisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4K KworUEdfTU9EVUxFX01BR0lDOworCisvKiBEZWZhdWx0IHZhbHVlcyBmb3IgdGhlIEdVQ3MgY29u dHJvbGxpbmcgc3RydWN0dXJlIHNpemUgKi8KKyNkZWZpbmUgVEVTVF9JTklUSUFMX0VOVFJJRVNf REVGQVVMVAkJKDI1ICogMTAyNCAqIDEwMjQpCS8qIH4xMDBNQiAqLworI2RlZmluZSBURVNUX01B WF9FTlRSSUVTX0RFRkFVTFQJCQkoMTAwICogMTAyNCAqIDEwMjQpIC8qIH40MDBNQiAqLworCisj ZGVmaW5lIFRFU1RfRU5UUllfU0laRQkJCXNpemVvZihpbnQzMikJLyogU2l6ZSBvZiBlYWNoIGVu dHJ5ICovCisKKy8qCisgKiBSZXNpemFibGUgdGVzdCBkYXRhIHN0cnVjdHVyZSBzdG9yZWQgaW4g c2hhcmVkIG1lbW9yeS4KKyAqCisgKiBUaGUgdGVzdCBwZXJmb3JtcyByZXNpemluZywgcmVhZHMg b3Igd3JpdGVzLCBvbmx5IG9uZSBhdCBhIHRpbWUgYW5kIG5ldmVyCisgKiBjb25jdXJyZW50bHku IEhlbmNlLCB0aGVyZSBpcyBubyBuZWVkIGZvciBsb2NrcyBpbiB0aGUgdGVzdCBzdHJ1Y3R1cmUu CisgKi8KK3R5cGVkZWYgc3RydWN0IFRlc3RSZXNpemFibGVTaG1lbVN0cnVjdAoreworCS8qIE1l dGFkYXRhICovCisJaW50MzIJCW51bV9lbnRyaWVzOwkvKiBOdW1iZXIgb2YgZW50cmllcyB0aGF0 IGNhbiBmaXQgKi8KKworCS8qIERhdGEgYXJlYSAtIHZhcmlhYmxlIHNpemUgKi8KKwlpbnQzMgkJ ZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3Q7 CisKK3N0YXRpYyBUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QgKnJlc2l6YWJsZV9zaG1lbSA9IE5V TEw7CisKKy8qIEdVQyB2YXJpYWJsZXMgY29udHJvbGxpbmcgdGhlIHNpemUgb2YgdGhlIHRlc3Qg c3RydWN0dXJlICovCitzdGF0aWMgaW50CXRlc3RfaW5pdGlhbF9lbnRyaWVzOworc3RhdGljIGlu dAl0ZXN0X21heF9lbnRyaWVzOworCisvKiBXaGV0aGVyIHRvIHVzZSBTSE1FTV9BVFRBQ0hfVU5L Tk9XTl9TSVpFIHdoZW4gYXR0YWNoaW5nIHRvIHRoZSBzaGFyZWQgbWVtb3J5ICovCitzdGF0aWMg Ym9vbCB1c2VfdW5rbm93bl9zaXplID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHJlc2l6YWJsZV9z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCByZXNpemFibGVfc2htZW1fc2ht ZW1faW5pdCh2b2lkICphcmcpOworCitzdGF0aWMgU2htZW1DYWxsYmFja3Mgc2htZW1fY2FsbGJh Y2tzID0geworCS5yZXF1ZXN0X2ZuID0gcmVzaXphYmxlX3NobWVtX3JlcXVlc3QsCisJLmluaXRf Zm4gPSByZXNpemFibGVfc2htZW1fc2htZW1faW5pdCwKK307CisKKy8qIFNRTC1jYWxsYWJsZSBm dW5jdGlvbnMgKi8KK1BHX0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVtX3Jlc2l6ZSk7 CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV93cml0ZSk7CitQR19GVU5DVElP Tl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1lbV9yZWFkKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocmVz aXphYmxlX3NobWVtX3VzYWdlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVt X3BhZ2VzaXplKTsKKworLyoKKyAqIE1vZHVsZSBsb2FkIGNhbGxiYWNrCisgKi8KK3ZvaWQKK19Q R19pbml0KHZvaWQpCit7CisJaW50CQkJZ3VjX2NvbnRleHQ7CisKKwkvKgorCSAqIFVzZSBQR0Nf UE9TVE1BU1RFUiB3aGVuIGxvYWRlZCBhdCBzdGFydHVwIHNvIHRoZSB2YWx1ZXMgYXJlIGZpeGVk IG9uY2UKKwkgKiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGlzIGNyZWF0ZWQuICBXaGVuIGxv YWRlZCBhZnRlciBzdGFydHVwCisJICogUEdDX1BPU1RNQVNURVIgaXMgbm90IGFsbG93ZWQsIHNv IHdlIHVzZSBQR0NfU0lHSFVQIGluc3RlYWQuICBBbHRob3VnaAorCSAqIHdlIGRvIG5vdCBpbnRl bmQgdG8gY2hhbmdlIHRoZXNlIHZhbHVlcyBhdCBjb25maWcgcmVsb2FkLCBQR0NfU0lHSFVQIGlz CisJICogdGhlIGxlYXN0IHBlcm1pc3NpdmUgY29udGV4dCB0aGF0IGFsbG93cyBkZWZpbmluZyB0 aGUgR1VDIGFmdGVyIHN0YXJ0dXAKKwkgKiBhbmQgc3RpbGwgcHJldmVudHMgaXQgZnJvbSBiZWlu ZyBjaGFuZ2VkIHZpYSBTRVQuCisJICovCisJaWYgKHByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGli cmFyaWVzX2luX3Byb2dyZXNzKQorCQlndWNfY29udGV4dCA9IFBHQ19QT1NUTUFTVEVSOworCWVs c2UKKwl7CisJCWd1Y19jb250ZXh0ID0gUEdDX1NJR0hVUDsKKwkJc2htZW1fY2FsbGJhY2tzLmZs YWdzID0gU0hNRU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVA7CisJfQorCisJRGVmaW5l Q3VzdG9tSW50VmFyaWFibGUoInJlc2l6YWJsZV9zaG1lbS5pbml0aWFsX2VudHJpZXMiLAorCQkJ CQkJCSJJbml0aWFsIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0ZXN0IHN0cnVjdHVyZS4iLAor CQkJCQkJCU5VTEwsCisJCQkJCQkJJnRlc3RfaW5pdGlhbF9lbnRyaWVzLAorCQkJCQkJCVRFU1Rf SU5JVElBTF9FTlRSSUVTX0RFRkFVTFQsCisJCQkJCQkJMSwKKwkJCQkJCQlJTlRfTUFYLAorCQkJ CQkJCWd1Y19jb250ZXh0LAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CisK KwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgicmVzaXphYmxlX3NobWVtLm1heF9lbnRyaWVzIiwK KwkJCQkJCQkiTWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGVzdCBzdHJ1Y3R1cmUu IiwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCSZ0ZXN0X21heF9lbnRyaWVzLAorCQkJCQkJCVRFU1Rf TUFYX0VOVFJJRVNfREVGQVVMVCwKKwkJCQkJCQkxLAorCQkJCQkJCUlOVF9NQVgsCisJCQkJCQkJ Z3VjX2NvbnRleHQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLCBOVUxMLCBOVUxMKTsKKworCS8q CisJICogV2hlbiBsb2FkZWQgYWZ0ZXIgc3RhcnR1cCBieSBhIGJhY2tlbmQgdGhhdCBpcyBub3Qg Y3JlYXRpbmcgdGhlCisJICogZXh0ZW5zaW9uLCB0aGUgc2hhcmVkIG1lbW9yeSBtaWdodCBoYXZl IGJlZW4gcmVzaXplZCB0byBhIHNpemUgb3RoZXIKKwkgKiB0aGFuIHRoZSBpbml0aWFsIHNpemUu IFVzZSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIHRvIGF0dGFjaCB3aXRob3V0CisJICoga25v d2luZyB0aGUgZXhhY3Qgc2l6ZS4KKwkgKi8KKwlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzX2luX3Byb2dyZXNzICYmICFjcmVhdGluZ19leHRlbnNpb24pCisJCXVzZV91bmtu b3duX3NpemUgPSB0cnVlOworCisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmc2htZW1fY2FsbGJh Y2tzKTsKK30KKworLyoKKyAqIFJlcXVlc3Qgc2hhcmVkIG1lbW9yeSByZXNvdXJjZXMKKyAqLwor c3RhdGljIHZvaWQKK3Jlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKK3sKKwlTaXpl CQlpbml0aWFsX3NpemUgPSBhZGRfc2l6ZShvZmZzZXRvZihUZXN0UmVzaXphYmxlU2htZW1TdHJ1 Y3QsIGRhdGEpLAorCQkJCQkJCQkJCW11bF9zaXplKHRlc3RfaW5pdGlhbF9lbnRyaWVzLCBURVNU X0VOVFJZX1NJWkUpKTsKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCVNpemUJCW1heF9z aXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSwK KwkJCQkJCQkJCW11bF9zaXplKHRlc3RfbWF4X2VudHJpZXMsIFRFU1RfRU5UUllfU0laRSkpOwor CisJLyogQSBwcmVwcm9jZXNzb3IgbWFjcm8gdG8gY29uZGl0aW9uYWxseSBpbmNsdWRlIHRoZSBt YXhpbXVtX3NpemUgZmllbGQuICovCisjZGVmaW5lIE1BWElNVU1fU0laRV9BUkcJCS5tYXhpbXVt X3NpemUgPSBtYXhfc2l6ZSwKKyNlbHNlCisjZGVmaW5lIE1BWElNVU1fU0laRV9BUkcKKyNlbmRp ZgorCisJLyogUmVnaXN0ZXIgb3VyIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSAq LworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJyZXNpemFibGVfc2htZW0iLAorCQkJCQkg ICAuc2l6ZSA9IHVzZV91bmtub3duX3NpemUgPyBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIDog aW5pdGlhbF9zaXplLAorCQkJCQkgICBNQVhJTVVNX1NJWkVfQVJHCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJnJlc2l6YWJsZV9zaG1lbSwKKwkJKTsKK30KKworLyoKKyAqIEluaXRpYWxpemUg c2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUKKyAqLworc3RhdGljIHZvaWQKK3Jlc2l6YWJsZV9zaG1l bV9zaG1lbV9pbml0KHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIFNoYXJlZCBtZW1vcnkgc3RydWN0 dXJlIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBhbGxvY2F0ZWQuIEluaXRpYWxpemUKKwkgKiBp dC4KKwkgKi8KKwlBc3NlcnQocmVzaXphYmxlX3NobWVtICE9IE5VTEwpOworCisJcmVzaXphYmxl X3NobWVtLT5udW1fZW50cmllcyA9IHRlc3RfaW5pdGlhbF9lbnRyaWVzOworCW1lbXNldChyZXNp emFibGVfc2htZW0tPmRhdGEsIDAsIG11bF9zaXplKHRlc3RfaW5pdGlhbF9lbnRyaWVzLCBURVNU X0VOVFJZX1NJWkUpKTsKK30KKworLyoKKyAqIFJlc2l6ZSB0aGUgc2hhcmVkIG1lbW9yeSBzdHJ1 Y3R1cmUgdG8gYWNjb21tb2RhdGUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YKKyAqIGVudHJpZXMu CisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1fcmVzaXplKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwlpbnQzMgkJbmV3X2VudHJpZXMgPSBQR19H RVRBUkdfSU5UMzIoMCk7CisJU2l6ZQkJbmV3X3NpemU7CisKKwlpZiAoIXJlc2l6YWJsZV9zaG1l bSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZXNpemFibGVfc2htZW0gaXMgbm90 IGluaXRpYWxpemVkIikpKTsKKworCW5ld19zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJl c2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSwKKwkJCQkJCW11bF9zaXplKG5ld19lbnRyaWVzLCBU RVNUX0VOVFJZX1NJWkUpKTsKKwlTaG1lbVJlc2l6ZVN0cnVjdCgicmVzaXphYmxlX3NobWVtIiwg bmV3X3NpemUpOworCXJlc2l6YWJsZV9zaG1lbS0+bnVtX2VudHJpZXMgPSBuZXdfZW50cmllczsK KworCVBHX1JFVFVSTl9WT0lEKCk7CisjZWxzZQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGUg c2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworI2Vu ZGlmCit9CisKKy8qCisgKiBXcml0ZSB0aGUgZ2l2ZW4gaW50ZWdlciB2YWx1ZSB0byBhbGwgZW50 cmllcyBpbiB0aGUgZGF0YSBhcnJheS4KKyAqLworRGF0dW0KK3Jlc2l6YWJsZV9zaG1lbV93cml0 ZShQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQllbnRyeV92YWx1ZSA9IFBHX0dFVEFSR19J TlQzMigwKTsKKwlpbnQzMgkJaTsKKworCWlmICghcmVzaXphYmxlX3NobWVtKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQi KSkpOworCisJLyogV3JpdGUgdGhlIHZhbHVlIHRvIGFsbCBjdXJyZW50IGVudHJpZXMgKi8KKwlm b3IgKGkgPSAwOyBpIDwgcmVzaXphYmxlX3NobWVtLT5udW1fZW50cmllczsgaSsrKQorCQlyZXNp emFibGVfc2htZW0tPmRhdGFbaV0gPSBlbnRyeV92YWx1ZTsKKworCVBHX1JFVFVSTl9WT0lEKCk7 Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIHRoZSBmaXJzdCAnZW50cnlfY291bnQnIGVudHJp ZXMgYWxsIGhhdmUgdGhlIGV4cGVjdGVkICdlbnRyeV92YWx1ZScuCisgKiBSZXR1cm5zIHRydWUg aWYgYWxsIG1hdGNoLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2ht ZW1fcmVhZChQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQllbnRyeV9jb3VudCA9IFBHX0dF VEFSR19JTlQzMigwKTsKKwlpbnQzMgkJZW50cnlfdmFsdWUgPSBQR19HRVRBUkdfSU5UMzIoMSk7 CisJaW50MzIJCWk7CisKKwlpZiAocmVzaXphYmxlX3NobWVtID09IE5VTEwpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygicmVzaXphYmxlX3NobWVtIGlzIG5vdCBpbml0aWFsaXplZCIp KSk7CisKKwlpZiAoZW50cnlfY291bnQgPCAwIHx8IGVudHJ5X2NvdW50ID4gcmVzaXphYmxlX3No bWVtLT5udW1fZW50cmllcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJlbnRyeV9jb3VudCAlZCBp cyBvdXQgb2YgcmFuZ2UgKDAuLiVkKSIsIGVudHJ5X2NvdW50LCByZXNpemFibGVfc2htZW0tPm51 bV9lbnRyaWVzKSkpOworCisJZm9yIChpID0gMDsgaSA8IGVudHJ5X2NvdW50OyBpKyspCisJewor CQlpZiAocmVzaXphYmxlX3NobWVtLT5kYXRhW2ldICE9IGVudHJ5X3ZhbHVlKQorCQkJUEdfUkVU VVJOX0JPT0woZmFsc2UpOworCX0KKworCVBHX1JFVFVSTl9CT09MKHRydWUpOworfQorCisvKgor ICogUmVwb3J0IG11bHRpcGxlIG1lbW9yeSB1c2FnZSBzdGF0aXN0aWNzIG9mIHRoZSBjYWxsaW5n IGJhY2tlbmQgcHJvY2VzcworICogYXMgcmVwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KKyAqIFJldHVy bnMgUnNzQW5vbiwgUnNzRmlsZSwgUnNzU2htZW0sIFZtU2l6ZSBmcm9tIC9wcm9jL3NlbGYvc3Rh dHVzIGFzIGEgcmVjb3JkLgorICoKKyAqIFRoZSBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlc2Ug dmFsdWVzIHdpbGwgYmUgYXZhaWxhYmxlIGluCisgKiAvcHJvYy9zZWxmL3N0YXR1cywgYW55IHN5 c3RlbSB3aGljaCBhbHNvIHN1cHBvcnQgbWFkdmlzZSB3aXRoIE1BRFZfUkVNT1ZFIGFuZAorICog TUFEVl9QT1BVTEFURV9XUklURS4KKyAqLworRGF0dW0KK3Jlc2l6YWJsZV9zaG1lbV91c2FnZShQ R19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJRklMRQkg ICAqZjsKKwljaGFyCQlsaW5lWzI1Nl07CisJaW50NjQJCXJzc19hbm9uX2tiID0gLTE7CisJaW50 NjQJCXJzc19maWxlX2tiID0gLTE7CisJaW50NjQJCXJzc19zaG1lbV9rYiA9IC0xOworCWludDY0 CQl2bV9zaXplX2tiID0gLTE7CisJaW50CQkJZm91bmQgPSAwOworCVR1cGxlRGVzYwl0dXBkZXNj OworCURhdHVtCQl2YWx1ZXNbNF07CisJYm9vbAkJbnVsbHNbNF07CisJSGVhcFR1cGxlCXR1cGxl OworCisJLyogT3BlbiAvcHJvYy9zZWxmL3N0YXR1cyB0byByZWFkIG1lbW9yeSBpbmZvcm1hdGlv biAqLworCWYgPSBmb3BlbigiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiciIpOworCWlmIChmID09IE5V TEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJ CQkJIGVycm1zZygiY291bGQgbm90IG9wZW4gL3Byb2Mvc2VsZi9zdGF0dXM6ICVtIikpKTsKKwor CS8qIExvb2sgZm9yIHRoZSBtZW1vcnkgdXNhZ2UgbGluZXMgKi8KKwl3aGlsZSAoZmdldHMobGlu ZSwgc2l6ZW9mKGxpbmUpLCBmKSAhPSBOVUxMICYmIGZvdW5kIDwgNCkKKwl7CisJCWlmIChyc3Nf YW5vbl9rYiA9PSAtMSAmJiBzc2NhbmYobGluZSwgIlJzc0Fub246ICVsZCBrQiIsICZyc3NfYW5v bl9rYikgPT0gMSkKKwkJCWZvdW5kKys7CisJCWVsc2UgaWYgKHJzc19maWxlX2tiID09IC0xICYm IHNzY2FuZihsaW5lLCAiUnNzRmlsZTogJWxkIGtCIiwgJnJzc19maWxlX2tiKSA9PSAxKQorCQkJ Zm91bmQrKzsKKwkJZWxzZSBpZiAocnNzX3NobWVtX2tiID09IC0xICYmIHNzY2FuZihsaW5lLCAi UnNzU2htZW06ICVsZCBrQiIsICZyc3Nfc2htZW1fa2IpID09IDEpCisJCQlmb3VuZCsrOworCQll bHNlIGlmICh2bV9zaXplX2tiID09IC0xICYmIHNzY2FuZihsaW5lLCAiVm1TaXplOiAlbGQga0Ii LCAmdm1fc2l6ZV9rYikgPT0gMSkKKwkJCWZvdW5kKys7CisJfQorCisJZmNsb3NlKGYpOworCisJ LyogQnVpbGQgdHVwbGUgZGVzY3JpcHRvciBmb3Igb3VyIHJlc3VsdCB0eXBlICovCisJaWYgKGdl dF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NP TVBPU0lURSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiZnVuY3Rpb24gcmV0dXJuaW5nIHJlY29yZCBj YWxsZWQgaW4gY29udGV4dCAiCisJCQkJCQkidGhhdCBjYW5ub3QgYWNjZXB0IGEgcmVjb3JkIikp KTsKKworCS8qIEJ1aWxkIHRoZSByZXN1bHQgdHVwbGUgKi8KKwl2YWx1ZXNbMF0gPSBJbnQ2NEdl dERhdHVtKHJzc19hbm9uX2tiID49IDAgPyByc3NfYW5vbl9rYiAqIDEwMjQgOiAwKTsKKwl2YWx1 ZXNbMV0gPSBJbnQ2NEdldERhdHVtKHJzc19maWxlX2tiID49IDAgPyByc3NfZmlsZV9rYiAqIDEw MjQgOiAwKTsKKwl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKHJzc19zaG1lbV9rYiA+PSAwID8g cnNzX3NobWVtX2tiICogMTAyNCA6IDApOworCXZhbHVlc1szXSA9IEludDY0R2V0RGF0dW0odm1f c2l6ZV9rYiA+PSAwID8gdm1fc2l6ZV9rYiAqIDEwMjQgOiAwKTsKKworCW51bGxzWzBdID0gbnVs bHNbMV0gPSBudWxsc1syXSA9IG51bGxzWzNdID0gZmFsc2U7CisKKwl0dXBsZSA9IGhlYXBfZm9y bV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1 cGxlR2V0RGF0dW0odHVwbGUpKTsKKyNlbHNlCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6YWJsZSBz aGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKSk7CisjZW5k aWYKK30KKworLyoKKyAqIHJlc2l6YWJsZV9zaG1lbV9wYWdlc2l6ZSgpIC0gR2V0IHRoZSBzaGFy ZWQgbWVtb3J5IHBhZ2Ugc2l6ZQorICovCitEYXR1bQorcmVzaXphYmxlX3NobWVtX3BhZ2VzaXpl KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUEdfUkVUVVJOX0lOVDMyKHBnX2dldF9zaG1lbV9wYWdl c2l6ZSgpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVt L3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2ht ZW0vcmVzaXphYmxlX3NobWVtLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjgwMzEzMDNmZTBlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNvbnRyb2wKQEAgLTAsMCArMSw0IEBA CisjIHJlc2l6YWJsZV9zaG1lbSBleHRlbnNpb24gdGVzdCBtb2R1bGUKK2NvbW1lbnQgPSAndGVz dCBtb2R1bGUgZm9yIHRlc3RpbmcgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIGZ1 bmN0aW9uYWxpdHknCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0g JyRsaWJkaXIvcmVzaXphYmxlX3NobWVtJwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9y ZXNpemFibGVfc2htZW0vdC8wMDFfcmVzaXphYmxlX3NobWVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxl cy9yZXNpemFibGVfc2htZW0vdC8wMDFfcmVzaXphYmxlX3NobWVtLnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDQ1YjFlY2NkYwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5w bApAQCAtMCwwICsxLDIzOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUtMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBUZXN0IHJlc2l6YWJs ZSBzaGFyZWQgbWVtb3J5IGZ1bmN0aW9uYWxpdHksIGJvdGggd2hlbiBsb2FkZWQgYXQgc3RhcnR1 cCB2aWEKKyMgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGFuZCB3aGVuIGxvYWRlZCBhZnRlciBz dGFydHVwIChsYXRlIGFsbG9jYXRpb24pLgorCisjIFZlcmlmeSB0aGF0IFJzc1NobWVtIGRvZXMg bm90IGV4Y2VlZCB0aGUgdG90YWwgYWxsb2NhdGVkIHNoYXJlZCBtZW1vcnkuCisjIEFsbG9jYXRl ZCBzaGFyZWQgbWVtb3J5IHNob3VsZCBiZSBtb3N0bHkgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8g dGhlCisjIHJlc2l6YWJsZV9zaG1lbSBzdHJ1Y3R1cmUuIEFueSBsYXJnZSBpbmNyZWFzZSBpbiBl eHBlY3RlZCBSc3NTaG1lbSBzaG91bGQKKyMgcmVmbGVjdCB0aGUgdW5leHBlY3RlZCBpbmNyZWFz ZSBpbiBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSByZXNpemFibGVfc2htZW0KKyMgc3RydWN0dXJl Lgorc3ViIGNoZWNrX3NobWVtX3VzYWdlCit7CisJbXkgKCRzZXNzaW9uLCAkbGFiZWwsICRub2Rl KSA9IEBfOworCisJbXkgJHJzc19zaG1lbSA9ICRzZXNzaW9uLT5xdWVyeV9zYWZlKCdTRUxFQ1Qg cnNzX3NobWVtIEZST00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCk7JywKKwkJCQkJCQkJCQkgdmVy Ym9zZSA9PiAwKTsKKwlteSAkdG90YWxfYWxsb2MgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCQkJCQkJCQkgICAiU0VMRUNUIHN1bShhbGxvY2F0ZWRfc2l6ZSkgRlJPTSBwZ19zaG1l bV9hbGxvY2F0aW9uczsiKTsKKworCW5vdGUgIiRsYWJlbDogUnNzU2htZW09JHJzc19zaG1lbSwg c3VtKGFsbG9jYXRlZF9zaXplKT0kdG90YWxfYWxsb2MiOworCW9rKCRyc3Nfc2htZW0gPD0gJHRv dGFsX2FsbG9jLCAiJGxhYmVsOiBSc3NTaG1lbSBkb2VzIG5vdCBleGNlZWQgdG90YWwgYWxsb2Nh dGVkIHNpemUiKTsKK30KKworIyBUZXN0IGEgcmVzaXplIG9wZXJhdGlvbjogcmVzaXplLCB2ZXJp Znkgb2xkIGRhdGEsIHdyaXRlIG5ldyBkYXRhLCB2ZXJpZnkKKyMgbmV3IGRhdGEsIGFuZCBjaGVj ayBzaG1lbSB1c2FnZS4gIFJldHVybnMgdXBkYXRlZCAoJG51bV9lbnRyaWVzLCAkdmFsdWUpLgor c3ViIHRlc3RfcmVzaXplCit7CisJbXkgKCRub2RlLCAkcHJlZml4LCAkb2xkX251bV9lbnRyaWVz LCAkb2xkX3ZhbHVlLCAkbmV3X251bV9lbnRyaWVzLCAkbmV3X3ZhbHVlLCAkbGFiZWwpID0gQF87 CisKKwkkbGFiZWwgPSAiJHByZWZpeDogJGxhYmVsIjsKKworCW15ICRzZXNzaW9uMSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJbXkgJHNlc3Npb24yID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKworCSRzZXNzaW9uMS0+cXVlcnlfc2FmZSgiU0VM RUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoJG5ld19udW1fZW50cmllcyk7IiwKKwkJCQkJCSAg dmVyYm9zZSA9PiAwKTsKKworCSMgT2xkIGRhdGEgc2hvdWxkIHN0aWxsIGJlIGludGFjdCBpbiB0 aGUgKHBvc3NpYmx5IHNtYWxsZXIpIGFyZWEKKwlteSAkcmVhZGFibGVfZW50cmllcyA9ICgkbmV3 X251bV9lbnRyaWVzIDwgJG9sZF9udW1fZW50cmllcykgPyAkbmV3X251bV9lbnRyaWVzIDogJG9s ZF9udW1fZW50cmllczsKKwlpcygkc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFi bGVfc2htZW1fcmVhZCgkcmVhZGFibGVfZW50cmllcywgJG9sZF92YWx1ZSk7IiwKKwkJCQkJCQkg dmVyYm9zZSA9PiAwKSwKKwkgICAndCcsICJvbGQgZGF0YSByZWFkYWJsZSBhZnRlciAkbGFiZWwi KTsKKworCSRzZXNzaW9uMi0+cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0 ZSgkbmV3X3ZhbHVlKTsiLAorCQkJCQkJICB2ZXJib3NlID0+IDApOworCWlzKCRzZXNzaW9uMS0+ cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZWFkKCRuZXdfbnVtX2VudHJpZXMs ICRuZXdfdmFsdWUpOyIsCisJCQkJCQkJIHZlcmJvc2UgPT4gMCksCisJICAgJ3QnLCAibmV3IGRh dGEgcmVhZGFibGUgYWZ0ZXIgJGxhYmVsIik7CisKKwljaGVja19zaG1lbV91c2FnZSgkc2Vzc2lv bjEsICIkbGFiZWwgKHNlc3Npb24gMSkiLCAkbm9kZSk7CisJY2hlY2tfc2htZW1fdXNhZ2UoJHNl c3Npb24yLCAiJGxhYmVsIChzZXNzaW9uIDIpIiwgJG5vZGUpOworCisJJHNlc3Npb24xLT5xdWl0 OworCSRzZXNzaW9uMi0+cXVpdDsKKworCXJldHVybiAoJG5ld19udW1fZW50cmllcywgJG5ld192 YWx1ZSk7Cit9CisKKyMgUnVuIHRoZSBmdWxsIHN1aXRlIG9mIHJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHRlc3RzIG9uIHRoZSBnaXZlbiBub2RlLgorc3ViIHJ1bl9yZXNpemFibGVfdGVzdHMKK3sK KwlteSAoJG5vZGUsICRpbml0aWFsX2VudHJpZXMsICRtYXhfZW50cmllcywgJHByZWZpeCkgPSBA XzsKKworCW15ICRoYXZlX3Jlc2l6YWJsZV9zaG1lbSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ1NIT1cgaGF2ZV9yZXNpemFibGVfc2htZW07JykgZXEgJ29uJzsKKworCW15ICRudW1f ZW50cmllcyA9ICRpbml0aWFsX2VudHJpZXM7CisKKwkjIEJhc2ljIHJlYWQvd3JpdGUgc2hvdWxk IHdvcmsgb24gYWxsIHBsYXRmb3JtcworCW15ICR2YWx1ZSA9IDEwMDsKKwkkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3dyaXRlKCR2YWx1ZSk7Iik7 CisJaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1l bV9yZWFkKCRudW1fZW50cmllcywgJHZhbHVlKTsiKSwKKwkgICAndCcsICIkcHJlZml4OiBkYXRh IHJlYWQgYWZ0ZXIgd3JpdGUgc3VjY2Vzc2Z1bCIpOworCisJaWYgKCRoYXZlX3Jlc2l6YWJsZV9z aG1lbSkKKwl7CisJCSMgSW5pdGlhbCBzdHJ1Y3R1cmUgc3RhdGUKKwkJbXkgJHNlc3Npb24xID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwkJbXkgJHNlc3Npb24yID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKworCQkkdmFsdWUgPSAxMDA7CisJCSMg V3JpdGUgYW5kIHJlYWQgdGhlIGluaXRpYWwgc2V0IG9mIGVudHJpZXMuCisJCSRzZXNzaW9uMS0+ cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSgkdmFsdWUpOyIsIHZlcmJv c2UgPT4gMCk7CisJCWlzKCRzZXNzaW9uMi0+cXVlcnlfc2FmZSgiU0VMRUNUIHJlc2l6YWJsZV9z aG1lbV9yZWFkKCRudW1fZW50cmllcywgJHZhbHVlKTsiLAorCQkJCQkJCQkgdmVyYm9zZSA9PiAw KSwKKwkJICAgJ3QnLCAiJHByZWZpeDogZGF0YSByZWFkIGFmdGVyIHdyaXRlIHN1Y2Nlc3NmdWwi KTsKKwkJY2hlY2tfc2htZW1fdXNhZ2UoJHNlc3Npb24xLCAiJHByZWZpeDogaW5pdGlhbCB3cml0 ZSAoc2Vzc2lvbiAxKSIsICRub2RlKTsKKwkJY2hlY2tfc2htZW1fdXNhZ2UoJHNlc3Npb24yLCAi JHByZWZpeDogaW5pdGlhbCB3cml0ZSAoc2Vzc2lvbiAyKSIsICRub2RlKTsKKwkJJHNlc3Npb24x LT5xdWl0OworCQkkc2Vzc2lvbjItPnF1aXQ7CisKKwkJIyBWZXJpZnkgbm8gb3RoZXIgc3RydWN0 dXJlIGlzIHJlc2l6YWJsZQorCQlpcygkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19zaG1lbV9hbGxvY2F0aW9ucyBXSEVSRSBuYW1lIDw+ICdyZXNp emFibGVfc2htZW0nIEFORCBtYXhpbXVtX3NpemUgPD4gMDsiKSwKKwkJCQkJCQknMCcsICIkcHJl Zml4OiBubyBvdGhlciByZXNpemFibGUgc3RydWN0dXJlcyIpOworCisJCSMgUmVzaXplIHRvIG1h eGltdW0KKwkJKCRudW1fZW50cmllcywgJHZhbHVlKSA9IHRlc3RfcmVzaXplKCRub2RlLCAkcHJl Zml4LCAkbnVtX2VudHJpZXMsICR2YWx1ZSwKKwkJCQkJCQkJCQkJICRtYXhfZW50cmllcywgNTAw LCAncmVzaXplIHRvIG1heGltdW0nKTsKKworCQkjIFNocmluayB0byA3NSUgb2YgbWF4CisJCW15 ICRzaHJpbmtfZW50cmllcyA9IGludCgkbWF4X2VudHJpZXMgKiAzIC8gNCk7CisJCSgkbnVtX2Vu dHJpZXMsICR2YWx1ZSkgPSB0ZXN0X3Jlc2l6ZSgkbm9kZSwgJHByZWZpeCwgJG51bV9lbnRyaWVz LCAkdmFsdWUsCisJCQkJCQkJCQkJCSAkc2hyaW5rX2VudHJpZXMsIDk5OSwgJ3Nocmlua2luZycp OworCisJCSMgUmVzaXplIHRvIHRoZSBzYW1lIHNpemUgKG5vLW9wKQorCQkoJG51bV9lbnRyaWVz LCAkdmFsdWUpID0gdGVzdF9yZXNpemUoJG5vZGUsICRwcmVmaXgsICRudW1fZW50cmllcywgJHZh bHVlLAorCQkJCQkJCQkJCQkgJG51bV9lbnRyaWVzLCAxOTk5LCAnbm8tb3AgcmVzaXplJyk7CisK KwkJIyBUZXN0IHJlc2l6ZSBmYWlsdXJlIChhdHRlbXB0IHRvIHJlc2l6ZSBiZXlvbmQgbWF4IC0g c2hvdWxkIGZhaWwpCisJCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisJCQkkbm9kZS0+ cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoIiAuICgkbWF4 X2VudHJpZXMgKiAyKSAuICIpOyIpOworCQlvaygkcmV0ICE9IDAgfHwgJHN0ZGVyciA9fiAvRVJS T1IvLCAiJHByZWZpeDogUmVzaXplIGJleW9uZCBtYXhpbXVtIGZhaWxzIik7CisJfQorCWVsc2UK Kwl7CisJCSMgT24gdW5zdXBwb3J0ZWQgcGxhdGZvcm1zLCByZXNpemluZyBzaG91bGQgZmFpbCB3 aXRoIGEgY2xlYXIgZXJyb3IKKwkJbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0KKwkJCSRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcmVzaXphYmxlX3NobWVtX3Jlc2l6ZSgkbnVt X2VudHJpZXMpOyIpOworCQlvaygkcmV0ICE9IDAsICIkcHJlZml4OiByZXNpemUgZmFpbHMgb24g dW5zdXBwb3J0ZWQgcGxhdGZvcm0iKTsKKwkJbGlrZSgkc3RkZXJyLCBxci9ub3Qgc3VwcG9ydGVk LywgIiRwcmVmaXg6IHJlc2l6ZSBlcnJvciBtZW50aW9ucyBub3Qgc3VwcG9ydGVkIik7CisJfQor fQorCisjIyMgU2V0IHVwIGEgdGVzdCBub2RlLgorIworI0NvbmZpZ3VyZSBtaW5pbWFsIHNoYXJl ZCBtZW1vcnkgc28gdGhhdCB0aGUgcmVzaXphYmxlX3NobWVtIHN0cnVjdHVyZSBkb21pbmF0ZXMK KyNhbmQgYW55IHVuZXhwZWN0ZWQgaW5jcmVhc2UgaXMgZWFzeSB0byBkZXRlY3QuCisjCisjIEFs c28gZGlzYWJsZSBodWdlIHBhZ2VzIHNvIHRoYXQgUnNzU2htZW0gYW5kIGFsbG9jYXRlZF9zaXpl IGFyZSBjb21wYXJhYmxlLgorIyBUaGUgbGF0dGVyIGlzIGFscmVhZHkgYWxpZ25lZCB0byB0aGUg ZGVmYXVsdCBwYWdlIHNpemUuCisjIyMKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdyZXNpemFibGVfc2htZW0nKTsKKyRub2RlLT5pbml0OworCiskbm9kZS0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdodWdlX3BhZ2VzID0gb2ZmJyk7Ciskbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdzaGFyZWRfYnVmZmVycyA9IDEyOGtCJyk7 Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfY29ubmVjdGlvbnMg PSA1Jyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfd29ya2Vy X3Byb2Nlc3NlcyA9IDAnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg J21heF93YWxfc2VuZGVycyA9IDAnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAwJyk7Ciskbm9kZS0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uID0gMTAnKTsK KyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVkX2xvY2tzX3Bl cl90cmFuc2FjdGlvbiA9IDEwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICd3YWxfYnVmZmVycyA9IDMya0InKTsKKworIyMjCisjIFRlc3QgMTogU3RhcnR1cCBhbGxv Y2F0aW9uIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMKKyMjIworbXkgJHN0YXJ0dXBfaW5p dGlhbCA9IDI1ICogMTAyNCAqIDEwMjQ7CitteSAkc3RhcnR1cF9tYXggPSAxMDAgKiAxMDI0ICog MTAyNDsKKworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzID0gcmVzaXphYmxlX3NobWVtJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJyZXNpemFibGVfc2htZW0uaW5pdGlhbF9lbnRyaWVzID0gJHN0 YXJ0dXBfaW5pdGlhbCIpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi cmVzaXphYmxlX3NobWVtLm1heF9lbnRyaWVzID0gJHN0YXJ0dXBfbWF4Iik7Ciskbm9kZS0+c3Rh cnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIHJlc2l6 YWJsZV9zaG1lbTsnKTsKK3J1bl9yZXNpemFibGVfdGVzdHMoJG5vZGUsICRzdGFydHVwX2luaXRp YWwsICRzdGFydHVwX21heCwgJ3N0YXJ0dXAnKTsKKworbXkgJGhhdmVfcmVzaXphYmxlX3NobWVt ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0hPVyBoYXZlX3Jlc2l6YWJsZV9zaG1l bTsnKSBlcSAnb24nOworCisjIyMKKyMgVGVzdCAyOiBMYXRlIGFsbG9jYXRpb24gKGxvYWRlZCBh ZnRlciBzdGFydHVwLCBub3QgaW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKS4KKyMgVXNlIG11 Y2ggc21hbGxlciBzaXplcyBzaW5jZSBvbmx5IH4xMDBLQiBvZiBzaGFyZWQgbWVtb3J5IGlzIGF2 YWlsYWJsZSBmb3IKKyMgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYWZ0ZXIgc3RhcnR1cC4KKyMjIwor bXkgJGxhdGVfaW5pdGlhbCA9IDUgKiAxMDI0OworbXkgJGxhdGVfbWF4ID0gMTIgKiAxMDI0Owor Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFNZU1RFTSBSRVNFVCBz aGFyZWRfcHJlbG9hZF9saWJyYXJpZXM7CisJQUxURVIgU1lTVEVNIFNFVCByZXNpemFibGVfc2ht ZW0uaW5pdGlhbF9lbnRyaWVzID0gJGxhdGVfaW5pdGlhbDsKKwlBTFRFUiBTWVNURU0gU0VUIHJl c2l6YWJsZV9zaG1lbS5tYXhfZW50cmllcyA9ICRsYXRlX21heDsKK30pOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnRFJPUCBFWFRFTlNJT04gcmVzaXphYmxlX3NobWVtOycpOworJG5v ZGUtPnJlc3RhcnQ7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRF TlNJT04gcmVzaXphYmxlX3NobWVtOycpOworcnVuX3Jlc2l6YWJsZV90ZXN0cygkbm9kZSwgJGxh dGVfaW5pdGlhbCwgJGxhdGVfbWF4LCAnbGF0ZScpOworCisjIyMKKyMgVGVzdCBzeXN2IHNoYXJl ZCBtZW1vcnkgZG9lcyBub3Qgc3VwcG9ydCByZXNpemFibGUgc2htZW0uICBPbmx5IHJlbGV2YW50 IG9uCisjIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgcmVzaXphYmxlIHNobWVtIChIQVZFX1JFU0la QUJMRV9TSE1FTSksIHNpbmNlIHRoZQorIyBtb2R1bGUgb25seSBzZXRzIG1heGltdW1fc2l6ZSBp biB0aGF0IGNhc2UuCisjIyMKK2lmICgkaGF2ZV9yZXNpemFibGVfc2htZW0pCit7CisJIyMjCisJ IyBUZXN0IDM6IFZlcmlmeSB0aGF0IENSRUFURSBFWFRFTlNJT04gZmFpbHMgd2l0aCBzeXN2IHNo YXJlZCBtZW1vcnkKKwkjIHdoZW4gbG9hZGVkIGFmdGVyIHN0YXJ0dXAgKG5vdCBpbiBzaGFyZWRf cHJlbG9hZF9saWJyYXJpZXMpLgorCSMjIworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsKKworCSMgUmVtb3ZlIHNldHRpbmdz IHRoYXQgd291bGQgY2F1c2UgdGhlIGxpYnJhcnkgdG8gYXV0by1sb2FkIGF0IHN0YXJ0dXA6CisJ IyBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgYW5kIG1vZHVsZS1wcmVmaXhlZCBHVUNzLiAgQUxU RVIgU1lTVEVNIFJFU0VUCisJIyBvbmx5IGFmZmVjdHMgcG9zdGdyZXNxbC5hdXRvLmNvbmYsIHNv IHdlIG11c3QgdXNlIGFkanVzdF9jb25mIHRvIHJlbW92ZQorCSMgZnJvbSBwb3N0Z3Jlc3FsLmNv bmYuCisJJG5vZGUtPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX3ByZWxv YWRfbGlicmFyaWVzJywgdW5kZWYpOworCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ3Jlc2l6YWJsZV9zaG1lbS5pbml0aWFsX2VudHJpZXMnLCB1bmRlZik7CisJJG5vZGUt PmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAncmVzaXphYmxlX3NobWVtLm1heF9lbnRy aWVzJywgdW5kZWYpOworCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5hdXRvLmNvbmYn LCAnc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzJywgdW5kZWYpOworCSRub2RlLT5hZGp1c3RfY29u ZigncG9zdGdyZXNxbC5hdXRvLmNvbmYnLCAncmVzaXphYmxlX3NobWVtLmluaXRpYWxfZW50cmll cycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5jb25mJywg J3Jlc2l6YWJsZV9zaG1lbS5tYXhfZW50cmllcycsIHVuZGVmKTsKKwkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCQlBTFRFUiBTWVNURU0gU0VUIHNoYXJlZF9tZW1vcnlfdHlwZSA9 ICdzeXN2JzsKKwl9KTsKKworCSRub2RlLT5yZXN0YXJ0OworCisJbXkgKCRyZXQsICRzdGRvdXQs ICRzdGRlcnIpID0KKwkJJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04g cmVzaXphYmxlX3NobWVtOycpOworCW9rKCRyZXQgIT0gMCwgJ0NSRUFURSBFWFRFTlNJT04gZmFp bHMgd2l0aCByZXNpemFibGUgc2htZW0gb24gc3lzdicpOworCWxpa2UoJHN0ZGVyciwgcXIvcmVz aXphYmxlIHNoYXJlZCBtZW1vcnkgcmVxdWlyZXMgc2hhcmVkX21lbW9yeV90eXBlID0gbW1hcC8s CisJCSdDUkVBVEUgRVhURU5TSU9OIGVycm9yIG1lbnRpb25zIHNoYXJlZF9tZW1vcnlfdHlwZSA9 IG1tYXAgcmVxdWlyZW1lbnQnKTsKKworCSMjIworCSMgVGVzdCA0OiBWZXJpZnkgdGhhdCByZXNp emFibGUgc3RydWN0dXJlcyBhcmUgYWxzbyByZWplY3RlZCB3aXRoIHN5c3YKKwkjIHNoYXJlZCBt ZW1vcnkgd2hlbiBsb2FkZWQgYXQgc3RhcnR1cCB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVz LgorCSMjIworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFNZU1RF TSBTRVQgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0gJ3Jlc2l6YWJsZV9zaG1lbSc7CisJCUFM VEVSIFNZU1RFTSBTRVQgcmVzaXphYmxlX3NobWVtLmluaXRpYWxfZW50cmllcyA9ICRzdGFydHVw X2luaXRpYWw7CisJCUFMVEVSIFNZU1RFTSBTRVQgcmVzaXphYmxlX3NobWVtLm1heF9lbnRyaWVz ID0gJHN0YXJ0dXBfbWF4OworCX0pOworCSRub2RlLT5zdG9wOworCisJb2soISRub2RlLT5zdGFy dChmYWlsX29rID0+IDEpLAorCQknc2VydmVyIGZhaWxzIHRvIHN0YXJ0IHdpdGggcmVzaXphYmxl IHNobWVtIG9uIHN5c3YnKTsKKworCW15ICRsb2cgPSBzbHVycF9maWxlKCRub2RlLT5sb2dmaWxl KTsKKwlsaWtlKCRsb2csIHFyL3Jlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHJlcXVpcmVzIHNoYXJl ZF9tZW1vcnlfdHlwZSA9IG1tYXAvLAorCQknbG9nIG1lbnRpb25zIHNoYXJlZF9tZW1vcnlfdHlw ZSA9IG1tYXAgcmVxdWlyZW1lbnQnKTsKK30KKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCmlu ZGV4IGMxNTRmNTc2ODJhLi5jODliMTQwODcxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwKQEAgLTQ1LDUgKzQ1LDI4 IEBAIGVsc2UKICAgIG9rKCRhdHRhY2hfY291bnQxID09IDAgJiYgJGF0dGFjaF9jb3VudDIgPT0g MCwgImF0dGFjaCBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4gbG9hZGVkIHZpYSBzaGFyZWRf cHJlbG9hZF9saWJyYXJpZXMiKTsKIH0KIAorIyMjCisjIFRlc3QgdGhhdCBhIGZpeGVkLXNpemUg c2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgY2Fubm90IGJlIHJlc2l6ZWQuCisjIE9ubHkgcmVsZXZh bnQgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCByZXNpemFibGUgc2htZW0uCisjIyMKK215ICRo YXZlX3Jlc2l6YWJsZV9zaG1lbSA9CisgICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NI T1cgaGF2ZV9yZXNpemFibGVfc2htZW07JykgZXEgJ29uJzsKKworaWYgKCRoYXZlX3Jlc2l6YWJs ZV9zaG1lbSkKK3sKKyAgICMgVHJ5IGV4cGFuZGluZyB0aGUgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUK KyAgIG15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisgICAgICRub2RlLT5wc3FsKCJwb3N0 Z3JlcyIsICJTRUxFQ1QgdGVzdF9zaG1lbV9yZXNpemVfZml4ZWQoMTAwMCk7Iik7CisgICBpc250 KCRyZXQsIDAsICJleHBhbmRpbmcgYSBmaXhlZC1zaXplIHN0cnVjdHVyZSBmYWlscyIpOworICAg bGlrZSgkc3RkZXJyLCBxci9pcyBub3QgcmVzaXphYmxlLywgImV4cGFuZCBlcnJvciBtZXNzYWdl IG1lbnRpb25zIG5vdCByZXNpemFibGUiKTsKKworICAgIyBUcnkgc2hyaW5raW5nIHRoZSBmaXhl ZC1zaXplIHN0cnVjdHVyZQorICAgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0KKyAgICAgJG5v ZGUtPnBzcWwoInBvc3RncmVzIiwgIlNFTEVDVCB0ZXN0X3NobWVtX3Jlc2l6ZV9maXhlZCgxKTsi KTsKKyAgIGlzbnQoJHJldCwgMCwgInNocmlua2luZyBhIGZpeGVkLXNpemUgc3RydWN0dXJlIGZh aWxzIik7CisgICBsaWtlKCRzdGRlcnIsIHFyL2lzIG5vdCByZXNpemFibGUvLCAic2hyaW5rIGVy cm9yIG1lc3NhZ2UgbWVudGlvbnMgbm90IHJlc2l6YWJsZSIpOworfQorCiAkbm9kZS0+c3RvcDsK KwogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht ZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0 X3NobWVtLS0xLjAuc3FsCmluZGV4IDJkMDFmZDkyNTZjLi5lMTY5ZDBkNzczMyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwKQEAgLTcsMyAr Nyw3IEBACiBDUkVBVEUgRlVOQ1RJT04gZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCkKIFJF VFVSTlMgcGdfY2F0YWxvZy5pbnQ0IFNUUklDVAogQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VB R0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfc2htZW1fcmVzaXplX2ZpeGVkKHBnX2NhdGFs b2cuaW50NCkKK1JFVFVSTlMgcGdfY2F0YWxvZy52b2lkIFNUUklDVAorQVMgJ01PRFVMRV9QQVRI TkFNRScgTEFOR1VBR0UgQzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5j CmluZGV4IDliZDQwMTJiNDM1Li5mYzJmZDY3ODg3ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vdGVzdF9zaG1lbS5jCkBAIC05OSwzICs5OSwyMyBAQCBnZXRfdGVzdF9zaG1lbV9hdHRh Y2hfY291bnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90 IHlldCBpbml0aWFsaXplZCIpOwogCVBHX1JFVFVSTl9JTlQzMihUZXN0U2htZW0tPmF0dGFjaF9j b3VudCk7CiB9CisKKy8qCisgKiBBdHRlbXB0IHRvIHJlc2l6ZSB0aGUgZml4ZWQtc2l6ZSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZS4gIFRoaXMgc2hvdWxkCisgKiBmYWlsIGJlY2F1c2UgdGhlIHN0 cnVjdHVyZSB3YXMgbm90IGFsbG9jYXRlZCB3aXRoIGEgbWF4aW11bV9zaXplLgorICovCitQR19G VU5DVElPTl9JTkZPX1YxKHRlc3Rfc2htZW1fcmVzaXplX2ZpeGVkKTsKK0RhdHVtCit0ZXN0X3No bWVtX3Jlc2l6ZV9maXhlZChQR19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIEhBVkVfUkVTSVpB QkxFX1NITUVNCisJaW50MzIJCW5ld19zaXplID0gUEdfR0VUQVJHX0lOVDMyKDApOworCisJU2ht ZW1SZXNpemVTdHJ1Y3QoInRlc3Rfc2htZW0gYXJlYSIsIG5ld19zaXplKTsKKwlQR19SRVRVUk5f Vk9JRCgpOworI2Vsc2UKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkg aXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpKTsKKyNlbmRpZgorfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA4MWE3M2M0MjZkMi4uMmJiYmY0OGM5NmEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNzcwLDggKzE3NzAsMTAgQEAgcGdf c2hhZG93fCBTRUxFQ1QgcGdfYXV0aGlkLnJvbG5hbWUgQVMgdXNlbmFtZSwKIHBnX3NobWVtX2Fs bG9jYXRpb25zfCBTRUxFQ1QgbmFtZSwKICAgICBvZmYsCiAgICAgc2l6ZSwKLSAgICBhbGxvY2F0 ZWRfc2l6ZQotICAgRlJPTSBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoKSBwZ19nZXRfc2htZW1f YWxsb2NhdGlvbnMobmFtZSwgb2ZmLCBzaXplLCBhbGxvY2F0ZWRfc2l6ZSk7CisgICAgYWxsb2Nh dGVkX3NpemUsCisgICAgbWF4aW11bV9zaXplLAorICAgIHJlc2VydmVkX3NwYWNlCisgICBGUk9N IHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1l LCBvZmYsIHNpemUsIGFsbG9jYXRlZF9zaXplLCBtYXhpbXVtX3NpemUsIHJlc2VydmVkX3NwYWNl KTsKIHBnX3NobWVtX2FsbG9jYXRpb25zX251bWF8IFNFTEVDVCBuYW1lLAogICAgIG51bWFfbm9k ZSwKICAgICBzaXplCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDNjMzUwOTczNjFkLi44 MWJmMTJjYmMxYSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMxNDYsNiArMzE0Niw3 IEBAIFRlc3REU01SZWdpc3RyeUhhc2hFbnRyeQogVGVzdERTTVJlZ2lzdHJ5U3RydWN0CiBUZXN0 RGVjb2RpbmdEYXRhCiBUZXN0RGVjb2RpbmdUeG5EYXRhCitUZXN0UmVzaXphYmxlU2htZW1TdHJ1 Y3QKIFRlc3RTaG1lbURhdGEKIFRlc3RTcGVjCiBUZXN0VmFsdWVUeXBlCi0tIAoyLjM0LjEKCg== --000000000000961c1c064eb4bda8--