Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v5tsq-00DfK2-Ia for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Oct 2025 22:40:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v5tsm-00BdEg-Ax for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Oct 2025 22:40:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v5tsl-00BdEL-KY for pgsql-hackers@lists.postgresql.org; Mon, 06 Oct 2025 22:40:40 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v5tsg-000ksm-0d for pgsql-hackers@lists.postgresql.org; Mon, 06 Oct 2025 22:40:39 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-62fc0b7bf62so8437650a12.2 for ; Mon, 06 Oct 2025 15:40:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759790433; x=1760395233; darn=lists.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=ShrKVuLiGbLJroriAk9ZsjKFyazY/UG+br89PVv/OTE=; b=QpkwHiaSNYafkT/l6MVt57So4hv6Y/Zg+MC+n3d7Me7MGAtbRCuF5vDxkG9S6ZSnrj mgDHXqIwSCBeBUdX/5GGFonUITbO3m2i5mOn7POV+lv+lGdRNWygXuoRQvMJ8TaDZGxI uui0va9S9/gSXRNa1+8W4C4NT6DobcSb8mF1tzyGWvR92a5pVsplJ6nb3XnTVqudqzAz wOuf9MXBCZjKdOKTTDslaGP2OFNeynLE4+J7tDHZh+3dXoV2qdijMKwHHV7E6r5VqKLu iEg837dEFhONEby2+G/ENfrF4nFqE+fMU/x4RWuw3SUere5CBOAxvX+XpC4/peCKGhOh eXuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759790433; x=1760395233; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ShrKVuLiGbLJroriAk9ZsjKFyazY/UG+br89PVv/OTE=; b=V/+qeGMjDBfF8tI0P24f4CEURpVsQSQgjfJiKGgQbHF2/aj63lcwdNYFF+H2jx6CnH YLme9skBPGLAwqZ6MteOxpCl832oIJoqIOgPEAEE/tCyk8eQgGEoLs9jqc4C44BgfY9V sH628scDxmFwYHnrikbS8QaLxwWr4gE2oAM6P8Iii/2onby6Wof8k6OLhIJKkoN0RELW vSlQZaxpaGmkBXtRIR3DZZjkQpLmJCt/EmC/IH2rvys/kar0RG4ZtA/yjYYzPnn2D/j0 CSLjE+kN0sYcUA/F5XlzNfHLfGISCEpO+1q6VpkPlzd9vHheWJYY0Ng0AaM05XK9NIzI SHzw== X-Forwarded-Encrypted: i=1; AJvYcCV3ry4lZiaa1MVGqNMokQRaSPtVPXeXfJ1VsnmAV2Lo5+rPivhmRlAz3crxTd6U503ArqHFRGwcFqjeLat5@lists.postgresql.org X-Gm-Message-State: AOJu0YzDNjAyIxZSM34OHJWhMkibRz5H7UFltcH0Ydd8xKh3LUTGJu36 Gp9hNlLPo7XjufubKqVtDIKoJfL+y1bwylaskMvsyj+9ZCo0Ik+/XtI3NKIZ9RkQvOAh2Rp2Dqy 4zPb6xn9g+30D/TspBLM8yccUEczCgsQ= X-Gm-Gg: ASbGnctP7PoxwDKAdsU0mqGNi9gEFurNZ7x1Ly4ZQrzvkyIPUFzOzOwSI4IspPpnCNB 8yl54qF/qbLY1gyKgJOIYH7oPT1C9mB1hQtQK1JpYQzif7/uFAGis4J7wpm+Pr0Xxgc2TzmRCBz Z0NS16vppo9UNSMsxU+X/2oS6ChAQITxS0Ov//PNQGQv26CFv2etEtyZ9S/4kZevvJtaVPUQ5Y5 WdUUuWbbKOq2VSf3Ckv+Z8QAfvolGGNc3uzg4VJib+wj/aQMf1Wkv9c7tPp0J2bXox5SlmELVg= X-Google-Smtp-Source: AGHT+IGQww1su4ZuQngJwBhU3mF9q0JFTsGwlJaWET+oNwTLpJ0qqEv1G+8MNDp9zmldX5mYdIRdMrRN4guAV3Um2yo= X-Received: by 2002:a05:6402:4399:b0:634:4d7a:4d94 with SMTP id 4fb4d7f45d1cf-63939c2d2ffmr14156750a12.34.1759790432094; Mon, 06 Oct 2025 15:40:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Melanie Plageman Date: Mon, 6 Oct 2025 18:40:20 -0400 X-Gm-Features: AS18NWDtpwD0e3KDQMkkY93UnWiYeBwDr1exMSbV_0xcgOxyTrAPxJoACko3duw Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Robert Haas Cc: Andres Freund , Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000095d7180640852371" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000095d7180640852371 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Sep 24, 2025 at 4:13=E2=80=AFPM Robert Haas = wrote: > > I find this patch set quite hard to follow. 0001 altogether removes > the use of XLOG_HEAP2_VISIBLE in cases where we use > XLOG_HEAP2_MULTI_INSERT, but then 0007 (the next non-refactoring > patch) begins half-removing the dependency on XLOG_HEAP2_VISIBLE, > assisted by 0009 and 0010, and then later you come back and remove the > other half of the dependency. I know it was I who proposed (off-list) > first making the XLOG_HEAP2_VISIBLE record only deal with the VM page > and not the heap buffer, but I'm not sure that idea quite worked out > in terms of making this easier to follow. At the least, it seems weird > that COPY FREEZE is an exception that gets handled in a different way > than all the other cases, fully removing the dependency in one step. > It would also be nice if each time you repost this, or maybe in a > README that you post along beside the actual patches, you'd include > some kind of roadmap to help the reader understand the internal > structure of the patch set, like 1 does this, 2-9 get us to here, > 10-whatever get us to this next place. In attached v16, I=E2=80=99ve reverted to removing XLOG_HEAP2_VISIBLE entirely, rather than first removing each caller's heap page from the VM WAL chain. I reordered changes and squashed several refactoring patches to improve patch-by-patch readability. This should make the set read differently from earlier versions that removed XLOG_HEAP2_VISIBLE and had more step-by-step mechanical refactoring. I think if we plan to go all the way with removing XLOG_HEAP2_VISIBLE, having intermediate patches that just set PD_ALL_VISIBLE when making other heap pages are more confusing than helpful. Also, I think having separate flags for setting PD_ALL_VISIBLE in the WAL record over-complicated the code. 0001: remove XLOG_HEAP2_VISIBLE from COPY FREEZE 0002 - 0005: various refactoring in advance of removing XLOG_HEAP2_VISIBLE in pruning 0006: Pruning and freezing by vacuum sets the VM and emits a single WAL record with those changes 0007: Reaping (phase III) by vacuum sets the VM and sets line pointers unused in a single WAL record 0008 - 0009: XLOG_HEAP2_VISIBLE is eliminated 0010 - 0012: preparation for setting VM on-access 0013: set VM on-access 0014: set pd_prune_xid on insert > I find myself fearful of the way that 0007 propagates the existing > hacks around setting the VM bit into a new place: > > + /* > + * We always emit a WAL record when setting > PD_ALL_VISIBLE, but we are > + * careful not to emit a full page image unless > + * checksums/wal_log_hints are enabled. We only set > the heap page LSN > + * if full page images were an option when emitting > WAL. Otherwise, > + * subsequent modifications of the page may > incorrectly skip emitting > + * a full page image. > + */ > + if (do_prune || nplans > 0 || > + (xlrec.flags & XLHP_SET_PD_ALL_VIS && > XLogHintBitIsNeeded())) > + PageSetLSN(page, lsn); > > I suppose it's not the worst thing to duplicate this logic, because > you're later going to remove the original copy. But, it took me >10 > minutes to find the text in src/backend/access/transam/README, in the > second half of the "Writing Hints" section, that explains the overall > principle here, and since the patch set doesn't seem to touch that > text, maybe you weren't even aware it was there. I don't think that src/backend/access/transam/README must change with my patch. It is still true that if the only change we are making to the heap page is setting PD_ALL_VISIBLE and checksums/wal_log_hints are disabled, we explicitly avoid an FPI and thus can't stamp the page LSN. > And, it's a little > weird to have a single WAL record that is either a hint or not a hint > depending on a complex set of conditions. PD_ALL_VISIBLE is different from tuple hints and other page hints because setting the VM is always WAL logged and when we replay that, it will always set PD_ALL_VISIBLE, so PD_ALL_VISIBLE is effectively always WAL-logged. The other hints aren't wal-logged unless checksums are enabled and we need an FPI. So PD_ALL_VISIBLE is different from other page hints in multiple ways. We can't make it more like those hints because of needing to preserve the invariant that the VM is never set when the page is clear. The only thing we could do is forbid omitting the FPI even when checksums are not enabled. > Anyway, I kind of wonder if it's time to back out the hack that I > installed here many years ago. At the time, I thought that it would be > bad if a VACUUM swept over the visibility map setting VM bits and as a > result emitted an FPI for every page in the entire heap ... but > everyone who is running with checksums has accepted that cost already, > and with those being the default, that's probably going to be most > people. I agree that PD_ALL_VISIBLE persistence is complicated, but we have other special cases that complicate the code for a performance benefit. I guess the question is if we are saying people shouldn't run without checksums in production. If that's true, then it's fine to remove this optimization. Otherwise, I'm not so sure. I think cloud providers generally have checksums enabled, but I don't know what is common on-prem. > It would be even more compelling if we were going to freeze, > prune, and set all-visible on access, because then presumably the case > where we touch a page and ONLY set the VM bit would be rare, so the > cost of doing that wouldn't matter much, but I guess the patch doesn't > go that far -- we can freeze or set all-visible on access but not > prune, without which the scenario I was worrying about at the time is > still fairly plausible, I think, if checksums are turned off. With the whole set applied, we can prune and set the VM on access but not freeze. I have a patch to do that, but it introduced noticeable CPU overhead to prepare the freeze plans. I'd have to spend much more time studying it to avoid regressing workloads where we don't end up freezing but prepare the freeze plans during SELECT queries. - Melanie --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0005-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Disposition: attachment; filename="v16-0005-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojd94 RnJvbSAyODA5NDhkM2YxZjE4YjhhNmM0NzNkNmI1NjAyM2IwYzc5NWYwZWZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDMgT2N0IDIwMjUgMTU6NTc6MDIgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxNiAwNS8xNF0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIGEgZmV3IHBhcmFtZXRlcnMgZnJvbQp0aGUgTFZSZWxTdGF0 ZSwgc28ganVzdCBwYXNzIHRob3NlIGluIGV4cGxpY2l0bHkuCgpBdXRob3I6IE1lbGFuaWUgUGxh Z2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJv YmVydG1oYWFzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0 L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCA0NCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmggICAgICAgICAgfCAgNiArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMo KyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRl eCA4ZWVmNDM2ZGQxMC4uYWVkMWY4ZTExMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKQEAgLTQ2Myw4ICs0NjMsNiBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJl bFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgogCQkJCQkJ ICAgaW50IG51bV9vZmZzZXRzKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxT dGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRl ICp2YWNyZWwpOwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmls aXR5X2N1dG9mZl94aWQsIGJvb2wgKmFsbF9mcm96ZW4pOwogc3RhdGljIHZvaWQgdXBkYXRlX3Jl bHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1 dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1f ZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0yMDE0LDggKzIwMTIsOSBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJCUFzc2VydChwcmVzdWx0LmxwZGVh ZF9pdGVtcyA9PSAwKTsKIAotCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWws IGJ1ZiwKLQkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJmRlYnVnX2FsbF9mcm96ZW4pKQorCQlp ZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJ ICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJCQkJ CQkgICZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpCiAJCQlBc3NlcnQoZmFsc2UpOwog CiAJCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CkBAIC0y OTE3LDggKzI5MTYsMTAgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3Jl bCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZW1pdHRlZC4KIAkgKi8K IAlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwotCWlmIChoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUodmFjcmVsLCBidWZmZXIsICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJ CSAmYWxsX2Zyb3plbikpCisJaWYgKGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJl bCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJICZhbGxfZnJv emVuLAorCQkJCQkJCQkgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJICZ2YWNyZWwt Pm9mZm51bSkpCiAJewogCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF OwogCkBAIC0zNjA4LDE1ICszNjA5LDIwIEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRl ICp2YWNyZWwpCiAgKiB4bWluIGFtb25nc3QgdGhlIHZpc2libGUgdHVwbGVzLiAgU2V0ICphbGxf ZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUKICAqIG9uIHRoaXMgcGFnZSBpcyBmcm96ZW4u CiAgKgotICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBvZiBsYXp5X3NjYW5fcHJ1 bmUoKS4gIElmIHlvdSBjaGFuZ2UKLSAqIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2 ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgotICogYXNzZXJ0aW9uIGNhbGxz IHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlIHRvIGF2 b2lkCi0gKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCisgKiAqbG9nZ2luZ19v ZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXROdW1iZXIgb2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVp bmcKKyAqIHByb2Nlc3NlZCBmb3IgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVtLgorICoK KyAqIFRoaXMgaXMgc2ltaWxhciBsb2dpYyB0byB0aGF0IGluIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoKSBJZgorICogeW91IGNoYW5nZSBhbnl0aGluZyBoZXJlLCBtYWtl IHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlCisgKiB0aGF0IGFuIGFz c2VydGlvbiBjYWxscyB1cyB0byB2ZXJpZnkgdGhhdCBldmVyeWJvZHkgc3RpbGwgYWdyZWVzLiAg QmUgc3VyZQorICogdG8gYXZvaWQgaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZmZWN0cyBoZXJlLgog ICovCi1zdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQnVmZmVyIGJ1ZiwKK2Jvb2wKK2hlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4pCisJCQkJCQkgT2Zmc2V0TnVtYmVy ICpsb2dnaW5nX29mZm51bSkKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwog CUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwpAQCAtMzYz OSw3ICszNjQ1LDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3Jl bCwgQnVmZmVyIGJ1ZiwKIAkJICogU2V0IHRoZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2Fu IGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkKIAkJICogZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGls ZSBwcm9jZXNzaW5nIHRoaXMgdHVwbGUuCiAJCSAqLwotCQl2YWNyZWwtPm9mZm51bSA9IG9mZm51 bTsKKwkJKmxvZ2dpbmdfb2ZmbnVtID0gb2ZmbnVtOwogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZm51bSk7CiAKIAkJLyogVW51c2VkIG9yIHJlZGlyZWN0IGxpbmUgcG9pbnRlcnMg YXJlIG9mIG5vIGludGVyZXN0ICovCkBAIC0zNjYzLDEwICszNjY5LDkgQEAgaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAogCQl0dXBsZS50 X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCQl0 dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwotCQl0dXBsZS50X3RhYmxlT2lk ID0gUmVsYXRpb25HZXRSZWxpZCh2YWNyZWwtPnJlbCk7CisJCXR1cGxlLnRfdGFibGVPaWQgPSBS ZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW0oJnR1cGxlLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgYnVmKSkK KwkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBi dWYpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKQEAgLTM2ODUsOCArMzY5 MCw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCSAqIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CiAJCQkJ CSAqLwogCQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwot CQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLAotCQkJCQkJCQkJCQkgICB2YWNy ZWwtPmN1dG9mZnMuT2xkZXN0WG1pbikpCisJCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVz KHhtaW4sIE9sZGVzdFhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwog CQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKQEAgLTM3MjEsNyArMzcyNSw3IEBAIGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJfQkJCQkJ CQkvKiBzY2FuIGFsb25nIHBhZ2UgKi8KIAogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3JtYXRp b24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KLQl2YWNyZWwtPm9m Zm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJKmxvZ2dpbmdfb2ZmbnVtID0gSW52YWxpZE9m ZnNldE51bWJlcjsKIAogCXJldHVybiBhbGxfdmlzaWJsZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCBiYzcxZmVmNjY0My4uZWE2N2ZiODNmYmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzMiw2ICs0 MzIsMTIgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxh dGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNz U3RyYXRlZ3kgYnN0cmF0ZWd5KTsKIAorZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9s ZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICps b2dnaW5nX29mZm51bSk7CisKIC8qIGluIGhlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyAqLwogZXh0 ZXJuIGJvb2wgSGVhcFR1cGxlU2F0aXNmaWVzVmlzaWJpbGl0eShIZWFwVHVwbGUgaHR1cCwgU25h cHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkJIEJ1ZmZlciBidWZmZXIpOwotLSAKMi40My4wCgo= --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0004-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v16-0004-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojd73 RnJvbSBhNTc3MmUwZWVjNjVkZjFjZjA2NDA1NWIxYmE3N2E1MTg2MWY3ZmU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE1IFNlcCAyMDI1IDE2OjI1OjQ0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDQvMTRdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIHdoZW4gZGVhZCBpdGVtcyBhcmUgcHJlc2VudC4gVGhpcyBhbGxv d3Mgb3Bwb3J0dW5pc3RpYwpmcmVlemluZyBpZiB0aGUgcGFnZSB3b3VsZCBvdGhlcndpc2UgYmUg ZnVsbHkgZnJvemVuLCBzaW5jZSB0aG9zZSBkZWFkCml0ZW1zIGFyZSBsYXRlciByZW1vdmVkIGlu IHZhY3V1beKAmXMgdGhpcmQgcGhhc2UuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJl IGF0dGVtcHRlZCwgdGhlcmXigJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFn cyBwcm9tcHRseSBhdm9pZHMgZXh0cmEgYm9va2tlZXBpbmcgaW4KaGVhcF9wcnVuZV91bmNoYW5n ZWRfbHBfbm9ybWFsKCkuIEF0IHByZXNlbnQgdGhpcyBoYXMgbm8gcnVudGltZSBlZmZlY3QKYmVj YXVzZSBhbGwgY2FsbGVycyB0aGF0IGNvbnNpZGVyIHNldHRpbmcgdGhlIFZNIGFsc28gYXR0ZW1w dCBmcmVlemluZywKYnV0IGZ1dHVyZSBjYWxsZXJzIChlLmcuIG9uLWFjY2VzcyBwcnVuaW5nKSBt YXkgd2FudCB0byBzZXQgdGhlIFZNCndpdGhvdXQgcHJlcGFyaW5nIGZyZWV6ZSBwbGFucy4KCldl IGFsc28gdXNlZCB0byBkZWZlciBjbGVhcmluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBhZnRlcgpjb21wdXRpbmcgdGhlIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4gQnkgZGV0ZXJt aW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLAp3ZSBjYW4gdXBkYXRlIHRoZXNlIGZsYWdzIGltbWVk aWF0ZWx5IGFmdGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8Kb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl LiBUaGlzIGlzIG5lY2Vzc2FyeSBpZiB3ZSB3YW50IHRvIHNldCB0aGUgVk0gaW4KdGhlIHNhbWUg V0FMIHJlY29yZCB0aGF0IHBydW5lcyBhbmQgZnJlZXplcyB0dXBsZXMgb24gdGhlIHBhZ2UuCgpX aGlsZSB3ZSBhcmUgYXQgaXQsIHVuc2V0IGFsbF9mcm96ZW4gd2hlbmV2ZXIgd2UgdW5zZXQgYWxs X3Zpc2libGUuClByZXZpb3VzbHkgd2UgY291bGQgb25seSB1c2UgYWxsX2Zyb3plbiBpbiBjb21i aW5hdGlvbiB3aXRoIGFsbF92aXNpYmxlCmFzIGFsbF9mcm96ZW4gd2FzIG5vdCB1bnNldCB3aGVu IG5vdCBhbGwtdmlzaWJsZSB0dXBsZXMgd2VyZSBlbmNvdW50ZXJlZC4KSXQgaXMgYmVzdCB0byBr ZWVwIHRoZW0gYm90aCB1cC10by1kYXRlIHRvIGF2b2lkIG1pc3Rha2VzIHdoZW4gdXNpbmcKYWxs X2Zyb3plbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAxNDUg KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgfCAgIDkgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBmODE5YWI1 N2Q1NS4uYzIzYTZhMjFhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0x MzcsMTUgKzEzNywxMiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZh bGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUu CiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRl IExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZy ZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkg KiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBM UF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVuZC4KLQkgKgotCSAqIGFsbF9mcm96ZW4gc2hvdWxk IG9ubHkgYmUgY29uc2lkZXJlZCB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyBhbHNvIHNldDsKLQkg KiB3ZSBkb24ndCBib3RoZXIgdG8gY2xlYXIgdGhlIGFsbF9mcm96ZW4gZmxhZyBldmVyeSB0aW1l IHdlIGNsZWFyIHRoZQotCSAqIGFsbF92aXNpYmxlIGZsYWcuCisJICogTk9URTogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVtcy4K KwkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwg dG8gdXNlIHRoZW0gdG8KKwkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Ig bm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9mcm96ZW4gdmFsdWVzIHJldHVybmVk IHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKKwkgKiBMUF9ERUFEIGl0ZW1z IGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnR1bmlzdGljYWxseQor CSAqIGZyZWV6ZS4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlhbGxfZnJvemVu OwpAQCAtMzA4LDcgKzMwNSw5IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAgKiBwcmUtZnJlZXplIGNoZWNrcy4KICAqCiAgKiBkb19wcnVu ZSwgZG9faGludF9mdWxsX29yX3BydW5hYmxlLCBhbmQgZGlkX3R1cGxlX2hpbnRfZnBpIG11c3Qg YWxsIGhhdmUKLSAqIGJlZW4gZGVjaWRlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor ICogYmVlbiBkZWNpZGVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICpmcnpfY29uZmxp Y3RfaG9yaXpvbiBpcyBzZXQgdG8KKyAqIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdl IGZvciB0aGUgV0FMIHJlY29yZCBzaG91bGQgd2UgZGVjaWRlIHRvIGZyZWV6ZQorICogdHVwbGVz LgogICoKICAqIHByc3RhdGUgaXMgYW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRlci4KICAqCkBAIC0z MjAsNyArMzE5LDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAogCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLAogCQkJCQkgIGJv b2wgZG9fcHJ1bmUsCiAJCQkJCSAgYm9vbCBkb19oaW50X3BydW5lLAotCQkJCQkgIFBydW5lU3Rh dGUgKnByc3RhdGUpCisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJICBUcmFuc2Fj dGlvbklkICpmcnpfY29uZmxpY3RfaG9yaXpvbikKIHsKIAlib29sCQlkb19mcmVlemUgPSBmYWxz ZTsKIApAQCAtMzU3LDggKzM1NywxMCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5pc3Rp YyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CiAJCSAqIGhvd2V2ZXIsIGZvciBu b3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgogCQkgKi8KLQkJaWYgKHByc3Rh dGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3pl biA+IDApCisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPiAw KQogCQl7CisJCQlBc3NlcnQocHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCiAJCQkvKgogCQkJICog RnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5IGVt aXR0ZWQKIAkJCSAqIGFuIEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KQEAgLTM4OCw2ICszOTAs MjIgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCQkgKiBjcml0aWNhbCBzZWN0aW9uLgogCQkgKi8KIAkJaGVhcF9wcmVfZnJlZXplX2No ZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+bmZyb3plbik7CisKKwkJLyoK KwkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc2hvdWxk IGJlIGZvciBhIHJlY29yZAorCQkgKiBmcmVlemluZyB0dXBsZXMuIFdlIGNhbiB1c2UgdGhlIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCisJCSAqIGZvciBjb25mbGljdHMgd2hl biB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgorCQkgKiBp biB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuICBPdGhlcndpc2Ugd2UgZ2VuZXJhdGUg YQorCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJvbSBPbGRlc3RY bWluLgorCQkgKi8KKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCQkqZnJ6X2NvbmZsaWN0 X2hvcml6b24gPSBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJCWVsc2UKKwkJewor CQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGlu IHVzZSAqLworCQkJKmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xk ZXN0WG1pbjsKKwkJCVRyYW5zYWN0aW9uSWRSZXRyZWF0KCpmcnpfY29uZmxpY3RfaG9yaXpvbik7 CisJCX0KIAl9CiAJZWxzZSBpZiAocHJzdGF0ZS0+bmZyb3plbiA+IDApCiAJewpAQCAtNDMyLDEw ICs0NTAsMTEgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVt IHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQogICogJ3BhcmFtcy5jdXRvZmZzJywgJ3By ZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlkJwogICogYXJn dW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVa RSBvcHRpb24gaXMKLSAqIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUg YW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwKLSAqIHRvIGluZGljYXRlIGlmIHRoZSBW TSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4KLSAq IHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0 aGUgbW9tZW50IG9ubHkKLSAqIGNhbGxlcnMgdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5m b3JtYXRpb24uCisgKiBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlIGFu ZCBwcmVzdWx0LT5hbGxfZnJvemVuIGFmdGVyCisgKiBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5v dCB0byBvcHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlCisgKiBWTSBi aXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCisg KiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycworICogdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3Jt YXRpb24uCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQg YnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBsZXMgcmVtb3ZlZCBhbmQg dGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgpAQCAt NDcxLDYgKzQ5MCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJYm9vbAkJZG9faGludF9wcnVuZTsKIAlib29sCQlkaWRfdHVwbGVfaGlu dF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJVHJhbnNh Y3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJ LyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSBwYXJh bXMtPnZpc3Rlc3Q7CkBAIC01NDAsMTAgKzU2MCwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIGFyZSB0dXBsZXMgcHJlc2VudCB0 aGF0IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSBvciBpZiB0aGVyZSBhcmUKIAkgKiBkZWFk IHR1cGxlcyB3aGljaCBhcmUgbm90IHlldCByZW1vdmFibGUuICBIb3dldmVyLCBkZWFkIHR1cGxl cyB3aGljaAogCSAqIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bWluZyBzaG91 bGQgbm90IHByZWNsdWRlIHVzIGZyb20KLQkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZy4g IEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8gbm90IGNsZWFyCi0JICogYWxsX3Zpc2libGUgd2hlbiB3 ZSBzZWUgTFBfREVBRCBpdGVtcy4gIFdlIGZpeCB0aGF0IGF0IHRoZSBlbmQgb2YgdGhlCi0JICog ZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLCBzbyB0aGF0 IHRoZSBjYWxsZXIKLQkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgorCSAq IG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3Qg aW1tZWRpYXRlbHkKKwkgKiBjbGVhciBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0 ZW1zLiAgV2UgZml4IHRoYXQgYWZ0ZXIKKwkgKiBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycywg YmVmb3JlIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlciwKKwkgKiBzbyB0aGF0IHRo ZSBjYWxsZXIgZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KIAkgKi8KIAlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CkBAIC03NzgsOCArNzk4LDI2IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkg IGRpZF90dXBsZV9oaW50X2ZwaSwKIAkJCQkJCQkJCSAgZG9fcHJ1bmUsCiAJCQkJCQkJCQkgIGRv X2hpbnRfcHJ1bmUsCi0JCQkJCQkJCQkgICZwcnN0YXRlKTsKKwkJCQkJCQkJCSAgJnByc3RhdGUs CisJCQkJCQkJCQkgICZmcnpfY29uZmxpY3RfaG9yaXpvbik7CiAKKwkvKgorCSAqIFdoaWxlIHNj YW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLCB3ZSBkaWQgbm90IGNsZWFyCisJICogYWxsX3Zpc2li bGUvYWxsX2Zyb3plbiB3aGVuIGVuY291bnRlcmluZyBMUF9ERUFEIGl0ZW1zIGJlY2F1c2Ugd2UK KwkgKiB3YW50ZWQgdGhlIGRlY2lzaW9uIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFn ZSB0byBiZSB1bmFmZmVjdGVkCisJICogYnkgdGhlIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBf REVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgYXJlCisJICogZWZmZWN0aXZlbHkgYXNz dW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkg KiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBh c3MpIGVuZHMgdXAKKwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMg dGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCB3ZSBmaW5pc2hl ZCBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UsCisJICogdXBk YXRlIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHNvIHRoYXQgdGhleSByZWZsZWN0IHRoZSB0 cnVlIHN0YXRlCisJICogb2YgdGhlIHBhZ2UgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgYW5k IFZNIGJpdHMuCisJICovCisJaWYgKHByc3RhdGUubHBkZWFkX2l0ZW1zID4gMCkKKwkJcHJzdGF0 ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCisJQXNzZXJ0KCFw cnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CiAJLyogQW55IGVycm9y IHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9T RUNUSU9OKCk7CiAKQEAgLTgzOCwyNyArODc2LDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCSAqIG9uIHRoZSBzdGFuZGJ5IHdpdGgg eGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0dXBsZSB0aGlzCiAJCQkgKiByZWNvcmQgd2ls bCBmcmVlemUgd2lsbCBjb25mbGljdC4KIAkJCSAqLwotCQkJVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCQkJVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQ7CiAKLQkJCS8qCi0JCQkgKiBXZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1 dG9mZl94aWQgYXMgb3VyIGN1dG9mZiBmb3IKLQkJCSAqIGNvbmZsaWN0cyB3aGVuIHRoZSB3aG9s ZSBwYWdlIGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVuCi0JCQkgKiBpbiB0aGUgVk0g b25jZSB3ZSdyZSBkb25lIHdpdGggaXQuICBPdGhlcndpc2Ugd2UgZ2VuZXJhdGUgYQotCQkJICog Y29uc2VydmF0aXZlIGN1dG9mZiBieSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0WG1pbi4KLQkJ CSAqLwotCQkJaWYgKGRvX2ZyZWV6ZSkKLQkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJs ZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJz dGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogQXZv aWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwot CQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsK LQkJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJCX0K LQkJCX0KLQogCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9u LCBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCiAJCQkJY29uZmxpY3RfeGlkID0gZnJ6X2Nv bmZsaWN0X2hvcml6b247CiAJCQllbHNlCkBAIC04ODIsMzAgKzkwMSw4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZy b3plbiA9IHByc3RhdGUubmZyb3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUu bGl2ZV90dXBsZXM7CiAJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJl Y2VudGx5X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25v cmUgTFBfREVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0 aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVk IGJ5IHRoZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNl IExQX0RFQUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5V U0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZh Y3V1bSBoZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICog c2V0dGluZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VV TSBkb2VzIGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVk LCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBv biB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBv ZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4KLQkgKi8KLQlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQotCXsKLQkJcHJlc3Vs dC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVzdWx0LT5hbGxfZnJv emVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlwcmVzdWx0LT5hbGxf dmlzaWJsZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JfQotCisJ cHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOworCXByZXN1bHQtPmFs bF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0 ZS5oYXN0dXA7CiAKIAkvKgpAQCAtMTI4NSw4ICsxMjgyLDExIEBAIGhlYXBfcHJ1bmVfcmVjb3Jk X2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8qCiAJ ICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciBk dXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNs dWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAqIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRu J3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1wdCBm cmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlpZiAo IXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3Rh dGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9y IHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysr XSA9IG9mZm51bTsKQEAgLTE0MTIsNyArMTQxMiw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hh bmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1i CiAKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQoaHR1cCkpCiAJCQkJewot CQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQlwcnN0YXRlLT5hbGxfdmlz aWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJCQkJYnJlYWs7CiAJCQkJfQog CkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9y bWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJCUFzc2Vy dChwcnN0YXRlLT5jdXRvZmZzKTsKIAkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWlu LCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKIAkJCQl7Ci0JCQkJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTE0NDcsNyArMTQ0 Nyw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJY2FzZSBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRDoKIAkJCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVwbGVzKys7Ci0JCQlwcnN0YXRl LT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBUaGlzIHR1cGxlIHdpbGwgc29v biBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBzbwpAQCAtMTQ2Niw3ICsxNDY2 LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIGFzc3VtcHRpb24gaXMgYSBiaXQg c2hha3ksIGJ1dCBpdCBpcyB3aGF0IGFjcXVpcmVfc2FtcGxlX3Jvd3MoKQogCQkJICogZG9lcywg c28gYmUgY29uc2lzdGVudC4KIAkJCSAqLwotCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxz ZTsKKwkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNl OwogCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGltaXplIGZvciBhYm9ydHMsIHdl IG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIGhlYXBfcHJ1bmVf cmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRl LCBPZmZzZXROdW1iCiAJCQkgKiB3aWxsIGNvbW1pdCBhbmQgdXBkYXRlIHRoZSBjb3VudGVycyBh ZnRlciB3ZSByZXBvcnQuCiAJCQkgKi8KIAkJCXByc3RhdGUtPmxpdmVfdHVwbGVzKys7Ci0JCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBw cnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBUaGlzIHR1cGxlIG1h eSBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvIHRoYXQKQEAgLTE1 NTIsOCArMTU1MiwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwg ZG9uJ3QgdW5zZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIsIGF0IHRoZSBlbmQgb2YKIAkgKiBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIGF0dGVt cHQgdG8gZnJlZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxvbmcgYXMgd2Ug dW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdp bGwgYmUgY29ycmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3Qu IElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsCisJICogdGhvdWdoLCBqdXN0IHVuc2V0IGFs bC12aXNpYmxlIG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8q IFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZz ZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwppbmRleCA2MTI1ZjE1NzcwOS4uOGVlZjQzNmRkMTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTIwMDcsNyArMjAwNyw2IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0aW9uLgogCSAqLwogI2lmZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKLQkvKiBOb3RlIHRoYXQgYWxsX2Zyb3plbiB2YWx1ZSBkb2VzIG5vdCBtYXR0 ZXIgd2hlbiAhYWxsX3Zpc2libGUgKi8KIAlpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKIAl7CiAJ CVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwpAQCAtMjA2MCw2ICsyMDU5LDcgQEAgbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVz dWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCiAJQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8 ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKKwlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBw cmVzdWx0LmFsbF92aXNpYmxlKTsKIAogCS8qCiAJICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0 eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwpAQCAtMjE2NSwx MSArMjE2NSwxMCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJLyoK IAkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBpcyBhbGwtZnJvemVuIGJ1dCBub3QgbWFya2Vk IGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMgYWxsLWZyb3plbi4gIE5vdGUgdGhhdCBhbGxf ZnJvemVuIGlzIG9ubHkgdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMKLQkgKiB0cnVlLCBzbyB3ZSBt dXN0IGNoZWNrIGJvdGggYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4uCisJICogaXQgYXMgYWxs LWZyb3plbi4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYg cHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJIHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxM X0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCisJZWxzZSBpZiAoYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX2Zyb3plbiAmJgorCQkJICFWTV9B TExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKIAl7CiAJCXVpbnQ4CQlv bGRfdm1iaXRzOwogCi0tIAoyLjQzLjAKCg== --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0002-Assorted-trivial-heap_page_prune_and_freeze-clea.patch" Content-Disposition: attachment; filename="v16-0002-Assorted-trivial-heap_page_prune_and_freeze-clea.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojd01 RnJvbSAzM2EzNWQyM2FlODhkNjM0Y2IwMTAyNDI5NTA5OWU1ZDU0NjZiMWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE1IFNlcCAyMDI1IDEyOjA2OjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDIvMTRdIEFzc29ydGVkIHRyaXZpYWwgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUgY2xlYW51cAoKR3JvdXAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpbnB1dCBwYXJh bWV0ZXJzIGluIGEgc3RydWN0IGFuZApjbGVhbiB1cCB0aGVpciBkb2N1bWVudGF0aW9uLgoKUmVu YW1lIGEgbWVtYmVyIG9mIFBydW5lU3RhdGUgYW5kIGRpc2FtYmlndWF0ZSBzb21lIGxvY2FsCmhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdmFyaWFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDExNCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8ICAxNiArKy0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgNjIgKysrKysrKysrKysrLS0tCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2Vk LCAxMTUgaW5zZXJ0aW9ucygrKSwgNzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCBkOGVhMGM3OGY3Ny4uOWJhODliMWZjMjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC00Miw4ICs0Miw4IEBAIHR5cGVkZWYgc3RydWN0CiAJLyog d2hldGhlciBvciBub3QgZGVhZCBpdGVtcyBjYW4gYmUgc2V0IExQX1VOVVNFRCBkdXJpbmcgcHJ1 bmluZyAqLwogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQg ZnJlZXppbmcgdHVwbGVzICovCi0JYm9vbAkJZnJlZXplOwotCXN0cnVjdCBWYWN1dW1DdXRvZmZz ICpjdXRvZmZzOworCWJvb2wJCWF0dGVtcHRfZnJlZXplOworCWNvbnN0IHN0cnVjdCBWYWN1dW1D dXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAJICogRmllbGRzIGRlc2NyaWJpbmcgd2hhdCB0byBkbyB0 byB0aGUgcGFnZQpAQCAtMjUzLDE1ICsyNTMsMjMgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJaWYgKFBhZ2VJc0Z1bGwocGFnZSkgfHwg UGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSkgPCBtaW5mcmVlKQogCQl7CiAJCQlPZmZzZXROdW1i ZXIgZHVtbXlfb2ZmX2xvYzsKKwkJCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtczsKIAkJCVBydW5l RnJlZXplUmVzdWx0IHByZXN1bHQ7CiAKKwkJCXBhcmFtcy5yZWxhdGlvbiA9IHJlbGF0aW9uOwor CQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKKwkJCXBhcmFtcy5yZWFzb24gPSBQUlVORV9PTl9B Q0NFU1M7CisJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7CisJCQlwYXJhbXMuY3V0b2ZmcyA9 IE5VTEw7CisKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNzIG1hcmtfdW51c2VkX25vdyBhcyBm YWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFz IGluZGV4ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1 cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgog CQkJICovCi0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCB2 aXN0ZXN0LCAwLAotCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1bHQsIFBSVU5FX09OX0FDQ0VTUywg JmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOworCQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCisJ CQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFyYW1zLCAmcHJlc3VsdCwgJmR1bW15X29m Zl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkvKgogCQkJICogUmVwb3J0IHRoZSBudW1iZXIgb2Yg dHVwbGVzIHJlY2xhaW1lZCB0byBwZ3N0YXRzLiAgVGhpcyBpcwpAQCAtMzAzLDYwICszMTEsNDMg QEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikK ICAqIGFsc28gbmVlZCB0byBhY2NvdW50IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9m IHRoZSBsaW5lIHBvaW50ZXIKICAqIGFycmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5 IHVzLgogICoKLSAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSB3 aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCi0gKiByZXF1aXJlZCBpbiBvcmRlciB0byBh ZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKLSAqIGNvbnNpZGVy ZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBu b3cuICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFu ZCAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6 aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNvCi0gKiBz ZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwg dG8gaW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdh eXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMg bm90IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBhbHNv IGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCi0gKgotICogdmlzdGVzdCBpcyB1c2VkIHRv IGRpc3Rpbmd1aXNoIHdoZXRoZXIgdHVwbGVzIGFyZSBERUFEIG9yIFJFQ0VOVExZX0RFQUQKLSAq IChzZWUgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKS4KKyAqIHBhcmFtcyBjb250YWlucyB0 aGUgaW5wdXQgcGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5pbmcK KyAqIGJlaGF2aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMgZm9y IG1vcmUgb24gd2hhdCBlYWNoCisgKiBwYXJhbWV0ZXIgZG9lcy4KICAqCi0gKiBvcHRpb25zOgot ICogICBNQVJLX1VOVVNFRF9OT1cgaW5kaWNhdGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0 IExQX1VOVVNFRCBkdXJpbmcKLSAqICAgcHJ1bmluZy4KLSAqCi0gKiAgIEZSRUVaRSBpbmRpY2F0 ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kIHdpbGwgcmV0dXJuCi0gKiAg ICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVyLgotICoKLSAq IGN1dG9mZnMgY29udGFpbnMgdGhlIGZyZWV6ZSBjdXRvZmZzLCBlc3RhYmxpc2hlZCBieSBWQUNV VU0gYXQgdGhlIGJlZ2lubmluZwotICogb2YgdmFjdXVtaW5nIHRoZSByZWxhdGlvbi4gIFJlcXVp cmVkIGlmIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0gKiBjdXRvZmZzLT5PbGRl c3RYbWluIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUgaWYgZGVhZCB0dXBsZXMgYXJlCi0gKiBI RUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvciBIRUFQVFVQTEVfREVBRC4KKyAqIElmIHRoZSBIRUFQ X1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcywgd2Ugd2lsbCBmcmVlemUgdHVw bGVzIGlmCisgKiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlk IC8gcmVsbWlubXhpZCwgb3IgaWYgaXQncworICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9y IG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQorICogJ3BhcmFt cy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1p bl9teGlkJworICogYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbiBI RUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMKKyAqIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3Vs dC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwKKyAqIHRvIGlu ZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMgc2V0IHRv IGZhbHNlIHdoZW4KKyAqIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHBhc3Nl ZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkKKyAqIGNhbGxlcnMgdGhhdCBhbHNvIGZyZWV6 ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQg cGFyYW1ldGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0 dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBh ZnRlciBwcnVuaW5nLgogICogaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyByZXNwb25z aWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0LiAgUmVxdWlyZWQKICAqIGJ5IGFsbCBjYWxsZXJzLgog ICoKLSAqIHJlYXNvbiBpbmRpY2F0ZXMgd2h5IHRoZSBwcnVuaW5nIGlzIHBlcmZvcm1lZC4gIEl0 IGlzIGluY2x1ZGVkIGluIHRoZSBXQUwKLSAqIHJlY29yZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFs eXNpcyBwdXJwb3NlcywgYnV0IG90aGVyd2lzZSBoYXMgbm8gZWZmZWN0LgotICoKICAqIG9mZl9s b2MgaXMgdGhlIG9mZnNldCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBp biBlcnJvcgogICogY2FsbGJhY2suCiAgKgogICogbmV3X3JlbGZyb3plbl94aWQgYW5kIG5ld19y ZWxtaW5fbXhpZCBtdXN0IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCi0gKiBIRUFQX1BS VU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiAgT24gZW50cnksIHRoZXkgY29udGFpbiB0aGUgb2xk ZXN0IFhJRCBhbmQKLSAqIG11bHRpLVhJRCBzZWVuIG9uIHRoZSByZWxhdGlvbiBzbyBmYXIuICBU aGV5IHdpbGwgYmUgdXBkYXRlZCB3aXRoIG9sZGVzdAotICogdmFsdWVzIHByZXNlbnQgb24gdGhl IHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3NpbmcgdGhlIHdob2xlCi0gKiByZWxh dGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFzIHRoZSBuZXcgcmVsZnJvemVueGlk L3JlbG1pbm14aWQKLSAqIGZvciB0aGUgcmVsYXRpb24uCisgKiBIRUFQX1BSVU5FX0ZSRUVaRSBv cHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRhaW4gdGhlCisgKiBv bGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24gc28gZmFyLiAgVGhl eSB3aWxsIGJlIHVwZGF0ZWQKKyAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVzZW50IG9uIHRoZSBw YWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQorICogd2hvbGUgcmVsYXRp b24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3CisgKiByZWxmcm96ZW54 aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgogICovCiB2b2lkCi1oZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKLQkJCQkJCSAg IEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJCQkJICAgaW50IG9wdGlvbnMsCi0JCQkJCQkg ICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcywKK2hlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3Vs dCAqcHJlc3VsdCwKLQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5f eGlkLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKIHsKKwlCdWZmZXIJ CWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl cik7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bSwKQEAgLTM2NSwxNSArMzU2LDE2IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCUhl YXBUdXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKLQli b29sCQlkb19oaW50OwotCWJvb2wJCWhpbnRfYml0X2ZwaTsKKwlib29sCQlkb19oaW50X3BydW5l OworCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2Fs VXNhZ2Uud2FsX2ZwaTsKIAogCS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0JcHJz dGF0ZS52aXN0ZXN0ID0gdmlzdGVzdDsKLQlwcnN0YXRlLm1hcmtfdW51c2VkX25vdyA9IChvcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVykgIT0gMDsKLQlwcnN0YXRlLmZy ZWV6ZSA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRl LmN1dG9mZnMgPSBjdXRvZmZzOworCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsK KwlwcnN0YXRlLm1hcmtfdW51c2VkX25vdyA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BB R0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUg PSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0 YXRlLmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBp cyB0byBzY2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAg LTM5NCw3ICszODYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAogCS8qIGluaXRpYWxpemUgcGFnZSBmcmVlemluZyB3b3Jr aW5nIHN0YXRlICovCiAJcHJzdGF0ZS5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCA9IGZhbHNlOwot CWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJ CUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCAmJiBuZXdfcmVsbWluX214aWQpOwogCQlwcnN0YXRl LnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZCA9ICpuZXdfcmVsZnJvemVuX3hpZDsKQEAg LTQ0MSw3ICs0MzMsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhlIHZh bHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgogCSAqIGRvZXNuJ3Qgc2V0IHRo ZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJICovCi0JaWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChw cnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7 CiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9IHRydWU7CkBAIC00NjcsNyArNDU5LDcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAog CW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7Ci0JdHVwLnRfdGFibGVPaWQg PSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9u R2V0UmVsaWQocGFyYW1zLT5yZWxhdGlvbik7CiAKIAkvKgogCSAqIERldGVybWluZSBIVFNWIGZv ciBhbGwgdHVwbGVzLCBhbmQgcXVldWUgdGhlbSB1cCBmb3IgcHJvY2Vzc2luZyBhcyBIT1QKQEAg LTU1NSw3ICs1NDcsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGhlYXBf cHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgpIG1heSBoYXZlIGNhdXNlZAogCSAqIGFuIEZQSSB0byBi ZSBlbWl0dGVkLgogCSAqLwotCWhpbnRfYml0X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2Fn ZS53YWxfZnBpOworCWRpZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2Fn ZS53YWxfZnBpOwogCiAJLyoKIAkgKiBQcm9jZXNzIEhPVCBjaGFpbnMuCkBAIC02NjMsNyArNjU1 LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQg ZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKIAkgKiBiaXQuCiAJICovCi0JZG9faGludCA9 ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94 aWQgfHwKKwlkb19oaW50X3BydW5lID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1bmVfeGlk ICE9IHByc3RhdGUubmV3X3BydW5lX3hpZCB8fAogCQlQYWdlSXNGdWxsKHBhZ2UpOwogCiAJLyoK QEAgLTY3MSw3ICs2NjMsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90Lgog CSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJz dGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBhZ2VmcnouZnJlZXplX3Jl cXVpcmVkKQogCQl7CkBAIC03MDIsMTYgKzY5NCwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkgKiBGcmVlemluZyB3 b3VsZCBtYWtlIHRoZSBwYWdlIGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkKIAkJCQkgKiBlbWl0 dGVkIGFuIEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KIAkJCQkgKi8KLQkJCQlpZiAoUmVsYXRp b25OZWVkc1dBTChyZWxhdGlvbikpCisJCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5y ZWxhdGlvbikpCiAJCQkJewotCQkJCQlpZiAoaGludF9iaXRfZnBpKQorCQkJCQlpZiAoZGlkX3R1 cGxlX2hpbnRfZnBpKQogCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKIAkJCQkJZWxzZSBpZiAoZG9f cHJ1bmUpCiAJCQkJCXsKIAkJCQkJCWlmIChYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZm ZXIpKQogCQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7CiAJCQkJCX0KLQkJCQkJZWxzZSBpZiAoZG9f aGludCkKKwkJCQkJZWxzZSBpZiAoZG9faGludF9wcnVuZSkKIAkJCQkJewogCQkJCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIp KQogCQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7CkBAIC03NTMsNyArNzQ1LDcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJLyog QW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RB UlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQlpZiAoZG9faGludCkKKwlpZiAoZG9faGludF9wcnVuZSkK IAl7CiAJCS8qCiAJCSAqIFVwZGF0ZSB0aGUgcGFnZSdzIHBkX3BydW5lX3hpZCBmaWVsZCB0byBl aXRoZXIgemVybywgb3IgdGhlIGxvd2VzdApAQCAtNzk2LDcgKzc4OCw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkUqIHJlY29yZCBzaG93aW5nIHdoYXQgd2Ug ZGlkCiAJCSAqLwotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikpCisJCWlmIChSZWxh dGlvbk5lZWRzV0FMKHBhcmFtcy0+cmVsYXRpb24pKQogCQl7CiAJCQkvKgogCQkJICogVGhlIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUK QEAgLTgzNCw5ICs4MjYsOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCWVsc2UKIAkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAotCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShy ZWxhdGlvbiwgYnVmZmVyLAorCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJl bGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1 ZSwgcmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAg cHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRp cmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQs IHByc3RhdGUubmRlYWQsCkBAIC04OTQsNyArODg2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJcHJlc3VsdC0+bHBkZWFk X2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CiAJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZz ZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCi0JaWYgKHByc3RhdGUuZnJlZXpl KQorCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5mcm96 ZW4gPiAwKQogCQl7CkBAIC0xNDc2LDcgKzE0NjgsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNo YW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVt YgogCX0KIAogCS8qIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdp bGwgbm90IGJlIHJlbW92ZWQgKi8KLQlpZiAocHJzdGF0ZS0+ZnJlZXplKQorCWlmIChwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYWI2OTM4ZDFkYTEuLjYxMjVmMTU3NzA5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTUxLDEwICsxOTUxLDE2IEBA IGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiB7CiAJUmVsYXRpb24JcmVsID0g dmFjcmVsLT5yZWw7CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKLQlpbnQJCQlwcnVuZV9v cHRpb25zID0gMDsKKwlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJhbXM7CiAKIAlBc3NlcnQoQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKKwlwYXJhbXMucmVsYXRpb24gPSByZWw7 CisJcGFyYW1zLmJ1ZmZlciA9IGJ1ZjsKKwlwYXJhbXMucmVhc29uID0gUFJVTkVfVkFDVVVNX1ND QU47CisJcGFyYW1zLmN1dG9mZnMgPSAmdmFjcmVsLT5jdXRvZmZzOworCXBhcmFtcy52aXN0ZXN0 ID0gdmFjcmVsLT52aXN0ZXN0OworCiAJLyoKIAkgKiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFp bnMgYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhpcyBwYWdlLgogCSAqCkBAIC0x OTcwLDEyICsxOTc2LDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ ICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRo ZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9GUkVFWkU7CisJcGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJF RVpFOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCi0JCXBydW5lX29wdGlvbnMgfD0gSEVB UF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKKwkJcGFyYW1zLm9wdGlvbnMgfD0gSEVBUF9Q QUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCi0JCQkJCQkJICAgJnZh Y3JlbC0+Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VVTV9TQ0FOLAorCWhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKCZwYXJhbXMsCisJCQkJCQkJICAgJnByZXN1bHQsCiAJCQkJCQkJICAg JnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZh Y3JlbC0+TmV3UmVsbWluTXhpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNjBkMzRkYWQyNS4u YmM3MWZlZjY2NDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIyMSw2ICsyMjEsNTUgQEAgdHlwZWRl ZiBzdHJ1Y3QgSGVhcFBhZ2VGcmVlemUKIAogfSBIZWFwUGFnZUZyZWV6ZTsKIAorCisvKiAncmVh c29uJyBjb2RlcyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSAqLwordHlwZWRlZiBl bnVtCit7CisJUFJVTkVfT05fQUNDRVNTLAkJCS8qIG9uLWFjY2VzcyBwcnVuaW5nICovCisJUFJV TkVfVkFDVVVNX1NDQU4sCQkJLyogVkFDVVVNIDFzdCBoZWFwIHBhc3MgKi8KKwlQUlVORV9WQUNV VU1fQ0xFQU5VUCwJCS8qIFZBQ1VVTSAybmQgaGVhcCBwYXNzICovCit9IFBydW5lUmVhc29uOwor CisvKgorICogSW5wdXQgcGFyYW1ldGVycyB0byBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CisgKi8KK3R5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCit7CisJUmVsYXRpb24JcmVs YXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KKwlC dWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCisKKwkvKgorCSAqIFRo ZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBzZXQgdGhlIFdB TCByZWNvcmQKKwkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFs eXNpcyBwdXJwb3Nlcy4KKwkgKi8KKwlQcnVuZVJlYXNvbiByZWFzb247CisKKwkvKgorCSAqIENv bnRhaW5zIGZsYWcgYml0czoKKwkgKgorCSAqIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhh dCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZworCSAqIHBydW5pbmcuCisJ ICoKKwkgKiBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMs IGFuZCB3aWxsIHJldHVybgorCSAqICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0 byB0aGUgY2FsbGVyLgorCSAqLworCWludAkJCW9wdGlvbnM7CisKKwkvKgorCSAqIHZpc3Rlc3Qg aXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxlcyBhcmUgREVBRCBvciBSRUNFTlRM WV9ERUFECisJICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgorCSAqLworCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0OworCisJLyoKKwkgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBm cmVlemUgY3V0b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVNIGF0IHRoZQorCSAqIGJlZ2lubmlu ZyBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVF WkUKKwkgKiBvcHRpb24gaXMgc2V0LiBjdXRvZmZzLT5PbGRlc3RYbWluIGlzIGFsc28gdXNlZCB0 byBkZXRlcm1pbmUgaWYgZGVhZAorCSAqIHR1cGxlcyBhcmUgSEVBUFRVUExFX1JFQ0VOVExZX0RF QUQgb3IgSEVBUFRVUExFX0RFQUQuCisJICovCisJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9m ZnM7Cit9IFBydW5lRnJlZXplUGFyYW1zOworCiAvKgogICogUGVyLXBhZ2Ugc3RhdGUgcmV0dXJu ZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKQogICovCkBAIC0yNjQsMTMgKzMxMyw2 IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJT2Zmc2V0TnVtYmVyIGRlYWRv ZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIH0gUHJ1bmVGcmVlemVSZXN1bHQ7CiAKLS8q ICdyZWFzb24nIGNvZGVzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpICovCi10eXBl ZGVmIGVudW0KLXsKLQlQUlVORV9PTl9BQ0NFU1MsCQkJLyogb24tYWNjZXNzIHBydW5pbmcgKi8K LQlQUlVORV9WQUNVVU1fU0NBTiwJCQkvKiBWQUNVVU0gMXN0IGhlYXAgcGFzcyAqLwotCVBSVU5F X1ZBQ1VVTV9DTEVBTlVQLAkJLyogVkFDVVVNIDJuZCBoZWFwIHBhc3MgKi8KLX0gUHJ1bmVSZWFz b247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBo ZWFwIGFjY2VzcyBtZXRob2QKQEAgLTM2NywxMiArNDA5LDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9u SWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9w cnVuZWhlYXAuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7Ci1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIEds b2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJCQkJCQkJICAgaW50IG9wdGlvbnMsCi0JCQkJCQkJ CQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcywKK2V4dGVybiB2b2lkIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkg ICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKLQkJCQkJCQkJCSAgIFBydW5lUmVhc29uIHJl YXNvbiwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVsdGlYYWN0SWQg Km5ld19yZWxtaW5fbXhpZCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM3ZjI2ZjZj NmI3Li44YTYyNmQ2MzNkNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIzNDAsNiAr MjM0MCw3IEBAIFByb2plY3Rpb25QYXRoCiBQcm9tcHRJbnRlcnJ1cHRDb250ZXh0CiBQcm90b2Nv bFZlcnNpb24KIFByc1N0b3JhZ2UKK1BydW5lRnJlZXplUGFyYW1zCiBQcnVuZUZyZWV6ZVJlc3Vs dAogUHJ1bmVSZWFzb24KIFBydW5lU3RhdGUKLS0gCjIuNDMuMAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0003-Add-helper-for-freeze-determination-to-heap_page.patch" Content-Disposition: attachment; filename="v16-0003-Add-helper-for-freeze-determination-to-heap_page.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojd42 RnJvbSBmMjY5Y2RjZTUxYjEwZDBiNWNjYzBlMDQ3ZmYwOGIyNDdlNmFkZjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE2IFNlcCAyMDI1IDE0OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDMvMTRdIEFkZCBoZWxwZXIgZm9yIGZyZWV6ZSBkZXRlcm1pbmF0aW9uIHRvCiBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZQoKQWZ0ZXIgc2Nhbm5pbmcgdGhyb3VnaCB0aGUgbGlu ZSBwb2ludGVycyBvbiB0aGUgaGVhcCBwYWdlIGR1cmluZwp2YWN1dW0ncyBmaXJzdCBwaGFzZSwg d2UgdXNlIHNldmVyYWwgc3RhdHVzZXMgYW5kIGluZm9ybWF0aW9uIHdlCmNvbGxlY3RlZCB0byBk ZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2Ugd2lsbCB1c2UgdGhlIGZyZWV6ZSBwbGFucyB3ZQph c3NlbWJsZWQuCgpEbyB0aGlzIGluIGEgaGVscGVyIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxOTYgKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA3OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDliYTg5YjFm YzI4Li5mODE5YWI1N2Q1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTMw MSw2ICszMDEsMTE4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIpCiAJfQogfQogCisvKgorICogRGVjaWRlIGlmIHdlIHdhbnQgdG8gZ28gYWhl YWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZSBwbGFucworICogd2UgcHJl cGFyZWQgZm9yIHRoZSBnaXZlbiBoZWFwIGJ1ZmZlciBvciBub3QuIElmIHRoZSBjYWxsZXIgc3Bl Y2lmaWVkIHdlCisgKiBzaG91bGQgbm90IGZyZWV6ZSB0dXBsZXMsIGl0IGV4aXRzIGVhcmx5LiBP dGhlcndpc2UsIGl0IGRvZXMgYSBmZXcKKyAqIHByZS1mcmVlemUgY2hlY2tzLgorICoKKyAqIGRv X3BydW5lLCBkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUsIGFuZCBkaWRfdHVwbGVfaGludF9mcGkg bXVzdCBhbGwgaGF2ZQorICogYmVlbiBkZWNpZGVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rp b24uCisgKgorICogcHJzdGF0ZSBpcyBhbiBpbnB1dC9vdXRwdXQgcGFyYW1ldGVyLgorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdXNlIG91ciBmcmVlemUgcGxhbnMgYW5kIGZyZWV6 ZSB0dXBsZXMgb24gdGhlIHBhZ2UKKyAqIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRp YyBib29sCitoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJCSAgYm9vbCBkb19w cnVuZSwKKwkJCQkJICBib29sIGRvX2hpbnRfcHJ1bmUsCisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJz dGF0ZSkKK3sKKwlib29sCQlkb19mcmVlemUgPSBmYWxzZTsKKworCS8qCisJICogSWYgdGhlIGNh bGxlciBzcGVjaWZpZWQgd2Ugc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGZyZWV6ZSBhbnkgdHVwbGVz LAorCSAqIHZhbGlkYXRlIHRoYXQgZXZlcnl0aGluZyBpcyBpbiB0aGUgcmlnaHQgc3RhdGUgYW5k IGV4aXQuCisJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJCUFzc2Vy dCghcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID09IDApOworCQlBc3Nl cnQocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID09IDAgfHwgIXByc3RhdGUtPmFsbF92aXNpYmxlKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1 aXJlZCkKKwl7CisJCS8qCisJCSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUgaW5kaWNhdGVk IHRoYXQgYXQgbGVhc3Qgb25lIFhJRC9NWElEIGZyb20KKwkJICogYmVmb3JlIEZyZWV6ZUxpbWl0 L011bHRpWGFjdEN1dG9mZiBpcyBwcmVzZW50LiAgTXVzdCBmcmVlemUgdG8KKwkJICogYWR2YW5j ZSByZWxmcm96ZW54aWQvcmVsbWlubXhpZC4KKwkJICovCisJCWRvX2ZyZWV6ZSA9IHRydWU7CisJ fQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUgcGFn ZSBpZiB3ZSBhcmUgZ2VuZXJhdGluZyBhbiBGUEkKKwkJICogYW55d2F5IGFuZCBpZiBkb2luZyBz byBtZWFucyB0aGF0IHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLWZyb3plbgorCQkgKiBhZnRlcndh cmRzIChtaWdodCBub3QgaGFwcGVuIHVudGlsIFZBQ1VVTSdzIGZpbmFsIGhlYXAgcGFzcykuCisJ CSAqCisJCSAqIFhYWDogUHJldmlvdXNseSwgd2Uga25ldyBpZiBwcnVuaW5nIGVtaXR0ZWQgYW4g RlBJIGJ5IGNoZWNraW5nCisJCSAqIHBnV2FsVXNhZ2Uud2FsX2ZwaSBiZWZvcmUgYW5kIGFmdGVy IHBydW5pbmcuICBPbmNlIHRoZSBmcmVlemUgYW5kCisJCSAqIHBydW5lIHJlY29yZHMgd2VyZSBj b21iaW5lZCwgdGhpcyBoZXVyaXN0aWMgY291bGRuJ3QgYmUgdXNlZAorCQkgKiBhbnltb3JlLiAg VGhlIG9wcG9ydHVuaXN0aWMgZnJlZXplIGhldXJpc3RpYyBtdXN0IGJlIGltcHJvdmVkOworCQkg KiBob3dldmVyLCBmb3Igbm93LCB0cnkgdG8gYXBwcm94aW1hdGUgdGhlIG9sZCBsb2dpYy4KKwkJ ICovCisJCWlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLT5hbGxfZnJvemVuICYm IHByc3RhdGUtPm5mcm96ZW4gPiAwKQorCQl7CisJCQkvKgorCQkJICogRnJlZXppbmcgd291bGQg bWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5IGVtaXR0ZWQKKwkJCSAqIGFu IEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KKwkJCSAqLworCQkJaWYgKFJlbGF0aW9uTmVlZHNX QUwocmVsYXRpb24pKQorCQkJeworCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCisJCQkJCWRv X2ZyZWV6ZSA9IHRydWU7CisJCQkJZWxzZSBpZiAoZG9fcHJ1bmUpCisJCQkJeworCQkJCQlpZiAo WExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKKwkJCQkJCWRvX2ZyZWV6ZSA9IHRy dWU7CisJCQkJfQorCQkJCWVsc2UgaWYgKGRvX2hpbnRfcHJ1bmUpCisJCQkJeworCQkJCQlpZiAo WExvZ0hpbnRCaXRJc05lZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZl cikpCisJCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCWlm IChkb19mcmVlemUpCisJeworCQkvKgorCQkgKiBWYWxpZGF0ZSB0aGUgdHVwbGVzIHdlIHdpbGwg YmUgZnJlZXppbmcgYmVmb3JlIGVudGVyaW5nIHRoZQorCQkgKiBjcml0aWNhbCBzZWN0aW9uLgor CQkgKi8KKwkJaGVhcF9wcmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwg cHJzdGF0ZS0+bmZyb3plbik7CisJfQorCWVsc2UgaWYgKHByc3RhdGUtPm5mcm96ZW4gPiAwKQor CXsKKwkJLyoKKwkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVwbGVzIHRoYXQgd2VyZSBu b3QgYWxyZWFkeSBmcm96ZW4sIGFuZCB3ZQorCQkgKiBjaG9zZSBub3QgdG8gZnJlZXplIHRoZW0g bm93LiAgVGhlIHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgorCQkgKi8KKwkJQXNzZXJ0 KCFwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7CisKKwkJcHJzdGF0ZS0+YWxsX2Zy b3plbiA9IGZhbHNlOworCQlwcnN0YXRlLT5uZnJvemVuID0gMDsJLyogYXZvaWQgbWlzY291bnRz IGluIGluc3RydW1lbnRhdGlvbiAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBXZSBoYXZl IG5vIGZyZWV6ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWlnaHQgYWxyZWFkeSBiZQor CQkgKiBhbGwtZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBydW5pbmcpLCB0aG91Z2gu ICBTdWNoIHBhZ2VzCisJCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUgVk0gYnkg b3VyIGNhbGxlciwgZXZlbiB0aG91Z2ggbm9uZQorCQkgKiBvZiBpdHMgdHVwbGVzIHdlcmUgbmV3 bHkgZnJvemVuIGhlcmUuCisJCSAqLworCX0KKworCXJldHVybiBkb19mcmVlemU7Cit9CisKIAog LyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJl ZXplIHR1cGxlcyBvbiB0aGUKQEAgLTY2Miw4NSArNzc0LDExIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogRGVjaWRlIGlmIHdlIHdh bnQgdG8gZ28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZQogCSAq IHBsYW5zIHdlIHByZXBhcmVkLCBvciBub3QuCiAJICovCi0JZG9fZnJlZXplID0gZmFsc2U7Ci0J aWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCi0JewotCQlpZiAocHJzdGF0ZS5wYWdlZnJ6LmZy ZWV6ZV9yZXF1aXJlZCkKLQkJewotCQkJLyoKLQkJCSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVw bGUgaW5kaWNhdGVkIHRoYXQgYXQgbGVhc3Qgb25lIFhJRC9NWElECi0JCQkgKiBmcm9tIGJlZm9y ZSBGcmVlemVMaW1pdC9NdWx0aVhhY3RDdXRvZmYgaXMgcHJlc2VudC4gIE11c3QKLQkJCSAqIGZy ZWV6ZSB0byBhZHZhbmNlIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkLgotCQkJICovCi0JCQlkb19m cmVlemUgPSB0cnVlOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIE9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6ZSB0aGUgcGFnZSBpZiB3ZSBhcmUgZ2VuZXJhdGluZyBhbiBGUEkKLQkJCSAq IGFueXdheSBhbmQgaWYgZG9pbmcgc28gbWVhbnMgdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlCi0J CQkgKiBhbGwtZnJvemVuIGFmdGVyd2FyZHMgKG1pZ2h0IG5vdCBoYXBwZW4gdW50aWwgVkFDVVVN J3MgZmluYWwKLQkJCSAqIGhlYXAgcGFzcykuCi0JCQkgKgotCQkJICogWFhYOiBQcmV2aW91c2x5 LCB3ZSBrbmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tpbmcKLQkJCSAqIHBn V2FsVXNhZ2Uud2FsX2ZwaSBiZWZvcmUgYW5kIGFmdGVyIHBydW5pbmcuICBPbmNlIHRoZSBmcmVl emUKLQkJCSAqIGFuZCBwcnVuZSByZWNvcmRzIHdlcmUgY29tYmluZWQsIHRoaXMgaGV1cmlzdGlj IGNvdWxkbid0IGJlCi0JCQkgKiB1c2VkIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5pc3RpYyBmcmVl emUgaGV1cmlzdGljIG11c3QgYmUKLQkJCSAqIGltcHJvdmVkOyBob3dldmVyLCBmb3Igbm93LCB0 cnkgdG8gYXBwcm94aW1hdGUgdGhlIG9sZCBsb2dpYy4KLQkJCSAqLwotCQkJaWYgKHByc3RhdGUu YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS5hbGxfZnJvemVuICYmIHByc3RhdGUubmZyb3plbiA+IDAp Ci0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdlIGFsbC1m cm96ZW4uICBIYXZlIGFscmVhZHkKLQkJCQkgKiBlbWl0dGVkIGFuIEZQSSBvciB3aWxsIGRvIHNv IGFueXdheT8KLQkJCQkgKi8KLQkJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKLQkJCQl7Ci0JCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJCQlkb19mcmVl emUgPSB0cnVlOwotCQkJCQllbHNlIGlmIChkb19wcnVuZSkKLQkJCQkJewotCQkJCQkJaWYgKFhM b2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKLQkJCQkJfQotCQkJCQllbHNlIGlmIChkb19oaW50X3BydW5lKQotCQkJCQl7Ci0JCQkJCQlp ZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1 ZmZlcikpCi0JCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKLQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJ fQotCX0KLQotCWlmIChkb19mcmVlemUpCi0JewotCQkvKgotCQkgKiBWYWxpZGF0ZSB0aGUgdHVw bGVzIHdlIHdpbGwgYmUgZnJlZXppbmcgYmVmb3JlIGVudGVyaW5nIHRoZQotCQkgKiBjcml0aWNh bCBzZWN0aW9uLgotCQkgKi8KLQkJaGVhcF9wcmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3Rh dGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwotCX0KLQllbHNlIGlmIChwcnN0YXRlLm5mcm96 ZW4gPiAwKQotCXsKLQkJLyoKLQkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVwbGVzIHRo YXQgd2VyZSBub3QgYWxyZWFkeSBmcm96ZW4sIGFuZCB3ZQotCQkgKiBjaG9zZSBub3QgdG8gZnJl ZXplIHRoZW0gbm93LiAgVGhlIHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgotCQkgKi8K LQkJQXNzZXJ0KCFwcnN0YXRlLnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKTsKLQotCQlwcnN0YXRl LmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJcHJzdGF0ZS5uZnJvemVuID0gMDsJLyogYXZvaWQgbWlz Y291bnRzIGluIGluc3RydW1lbnRhdGlvbiAqLwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBX ZSBoYXZlIG5vIGZyZWV6ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWlnaHQgYWxyZWFk eSBiZQotCQkgKiBhbGwtZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBydW5pbmcpLCB0 aG91Z2guICBTdWNoIHBhZ2VzCi0JCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUg Vk0gYnkgb3VyIGNhbGxlciwgZXZlbiB0aG91Z2ggbm9uZQotCQkgKiBvZiBpdHMgdHVwbGVzIHdl cmUgbmV3bHkgZnJvemVuIGhlcmUuCi0JCSAqLwotCX0KKwlkb19mcmVlemUgPSBoZWFwX3BhZ2Vf d2lsbF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBkaWRfdHVw bGVfaGludF9mcGksCisJCQkJCQkJCQkgIGRvX3BydW5lLAorCQkJCQkJCQkJICBkb19oaW50X3By dW5lLAorCQkJCQkJCQkJICAmcHJzdGF0ZSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlp bmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKLS0g CjIuNDMuMAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0001-Eliminate-COPY-FREEZE-use-of-XLOG_HEAP2_VISIBLE.patch" Content-Disposition: attachment; filename="v16-0001-Eliminate-COPY-FREEZE-use-of-XLOG_HEAP2_VISIBLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojcp0 RnJvbSA0MzEyMzc2ZmZmOTg3YjMyZDQ1OTljY2Q3ODg5M2M4YzJmNzc3MGUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDEvMTRdIEVsaW1pbmF0ZSBDT1BZIEZSRUVaRSB1c2Ugb2YgWExPR19IRUFQMl9W SVNJQkxFCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgV0FMIFhMT0dfSEVBUDJfVklT SUJMRSByZWNvcmQgZm9yIHNldHRpbmcKYml0cyBpbiB0aGUgVk0sIHNwZWNpZnkgdGhlIGNoYW5n ZXMgdG8gbWFrZSB0byB0aGUgVk0gYmxvY2sgaW4gdGhlClhMT0dfSEVBUDJfTVVMVElfSU5TRVJU IHJlY29yZC4KClRoaXMgaGFsdmVzIHRoZSBudW1iZXIgb2YgV0FMIHJlY29yZHMgZW1pdHRlZCBi eSBDT1BZIEZSRUVaRS4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFu QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5k ZT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRfcW0yS00lMkJGd1EzY01P TXgxRGgzVk1ocDgtVjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICB8IDQ0ICsrKysrKysrKystLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICB8IDUyICsrKysrKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8IDY4ICsrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j ICB8ICA1ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgfCAgMyAr KwogNSBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBlZDBjMGMyZGM5Zi4uN2YzNTRjYWVjMzEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNDY2LDcgKzI0NjYsMTEgQEAgaGVhcF9tdWx0 aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBu dHVwbGVzLAogCQlzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgPSBQYWdlR2V0TWF4T2Zmc2V0TnVt YmVyKHBhZ2UpID09IDA7CiAKIAkJaWYgKHN0YXJ0aW5nX3dpdGhfZW1wdHlfcGFnZSAmJiAob3B0 aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCisJCXsKIAkJCWFsbF9mcm96ZW5fc2V0ID0gdHJ1 ZTsKKwkJCS8qIExvY2sgdGhlIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwg c2VjdGlvbiAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKKwkJfQogCiAJCS8qIE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMg YXJlIGxvZ2dlZCAqLwogCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTI1MDYsNyArMjUxMCw4 IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAq KnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJICogZ29pbmcgdG8gYWRkIGZ1cnRoZXIgZnJvemVuIHJv d3MgdG8gaXQuCiAJCSAqCiAJCSAqIElmIHdlJ3JlIG9ubHkgYWRkaW5nIGFscmVhZHkgZnJvemVu IHJvd3MgdG8gYSBwcmV2aW91c2x5IGVtcHR5Ci0JCSAqIHBhZ2UsIG1hcmsgaXQgYXMgYWxsLXZp c2libGUuCisJCSAqIHBhZ2UsIG1hcmsgaXQgYXMgYWxsLWZyb3plbiBhbmQgdXBkYXRlIHRoZSB2 aXNpYmlsaXR5IG1hcC4gV2UncmUKKwkJICogYWxyZWFkeSBob2xkaW5nIGEgcGluIG9uIHRoZSB2 bWJ1ZmZlci4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmICEob3B0aW9u cyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1MTcsNyArMjUyMiwxNCBAQCBoZWFw X211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywg aW50IG50dXBsZXMsCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp OwogCQl9CiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQorCQl7CiAJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9ja051 bWJlcihidWZmZXIpLAorCQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJ CQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworCQl9CiAKIAkJLyoK IAkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/IFNl ZSBoZWFwX2luc2VydCgpCkBAIC0yNTY1LDYgKzI1NzcsMTIgQEAgaGVhcF9tdWx0aV9pbnNlcnQo UmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAog CQkJeGxyZWMtPmZsYWdzID0gMDsKIAkJCWlmIChhbGxfdmlzaWJsZV9jbGVhcmVkKQogCQkJCXhs cmVjLT5mbGFncyA9IFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRDsKKworCQkJLyoKKwkJ CSAqIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgaW5jbHVkaW5nIGEgY29uZmxpY3QgeGlk IGluIHRoZQorCQkJICogV0FMIHJlY29yZCBhcyBIRUFQX0lOU0VSVF9GUk9aRU4gaW50ZW50aW9u YWxseSB2aW9sYXRlcworCQkJICogdmlzaWJpbGl0eSBydWxlcy4KKwkJCSAqLwogCQkJaWYgKGFs bF9mcm96ZW5fc2V0KQogCQkJCXhscmVjLT5mbGFncyA9IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9T RVQ7CiAKQEAgLTI2MjcsNyArMjY0NSwxMCBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiBy ZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAKIAkJCVhMb2dC ZWdpbkluc2VydCgpOwogCQkJWExvZ1JlZ2lzdGVyRGF0YSh4bHJlYywgdHVwbGVkYXRhIC0gc2Ny YXRjaC5kYXRhKTsKKwogCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NU QU5EQVJEIHwgYnVmZmxhZ3MpOworCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQorCQkJCVhMb2dSZWdp c3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CiAKIAkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwg dHVwbGVkYXRhLCB0b3RhbGRhdGFsZW4pOwogCkBAIC0yNjM3LDI2ICsyNjU4LDE3IEBAIGhlYXBf bXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBp bnQgbnR1cGxlcywKIAkJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIGluZm8pOwog CiAJCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJ CQl7CisJCQkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJCQlQYWdlU2V0TFNO KEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCByZWNwdHIpOworCQkJfQogCQl9CiAKIAkJRU5EX0NS SVRfU0VDVElPTigpOwogCi0JCS8qCi0JCSAqIElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9u IHRoZSBwYWdlLCB1cGRhdGUgdGhlIHZpc2liaWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkg aG9sZGluZyBwaW4gb24gdGhlIHZtYnVmZmVyLgotCQkgKi8KIAkJaWYgKGFsbF9mcm96ZW5fc2V0 KQotCQl7Ci0JCQkvKgotCQkJICogSXQncyBmaW5lIHRvIHVzZSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCBoZXJlIC0gdGhpcyBpcyBvbmx5IHVzZWQKLQkJCSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVO IGlzIHNwZWNpZmllZCwgd2hpY2ggaW50ZW50aW9uYWxseQotCQkJICogdmlvbGF0ZXMgdmlzaWJp bGl0eSBydWxlcy4KLQkJCSAqLwotCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIGJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVj UHRyLCB2bWJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0J CX0KKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQluZG9uZSArPSBudGhpc3BhZ2U7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBjZjg0MzI3NzkzOC4uYzJjN2U2YWIwODYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNTUxLDYgKzU1MSw3IEBA IGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaW50CQkJ aTsKIAlib29sCQlpc2luaXQgPSAoWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIFhMT0dfSEVBUF9J TklUX1BBR0UpICE9IDA7CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKIAkgKiBJbnNlcnRpb24gZG9lc24ndCBvdmVyd3Jp dGUgTVZDQyBkYXRhLCBzbyBubyBjb25mbGljdCBwcm9jZXNzaW5nIGlzCkBAIC01NzEsMTEgKzU3 MiwxMSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJewog CQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwotCQlC dWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCQl2aXNpYmlsaXR5bWFwX3Bpbihy ZWxuLCBibGtubywgJnZtYnVmZmVyKTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxuLCBibGtu bywgdm1idWZmZXIsIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJCVJlbGVhc2VCdWZmZXIo dm1idWZmZXIpOworCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJCUZyZWVGYWtlUmVsY2Fj aGVFbnRyeShyZWxuKTsKIAl9CiAKQEAgLTY2Miw2ICs2NjMsNTUgQEAgaGVhcF94bG9nX211bHRp X2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlpZiAoQnVmZmVySXNWYWxpZChidWZm ZXIpKQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAKKwlidWZmZXIgPSBJbnZhbGlk QnVmZmVyOworCisJLyoKKwkgKiBSZWFkIGFuZCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIChW TSkgYmxvY2suCisJICoKKwkgKiBXZSBtdXN0IGFsd2F5cyByZWRvIFZNIGNoYW5nZXMsIGV2ZW4g aWYgdGhlIGNvcnJlc3BvbmRpbmcgaGVhcCBwYWdlCisJICogdXBkYXRlIHdhcyBza2lwcGVkIGR1 ZSB0byB0aGUgTFNOIGludGVybG9jay4gRWFjaCBWTSBibG9jayBjb3ZlcnMKKwkgKiBtdWx0aXBs ZSBoZWFwIHBhZ2VzLCBzbyBsYXRlciBXQUwgcmVjb3JkcyBtYXkgdXBkYXRlIG90aGVyIGJpdHMg aW4gdGhlCisJICogc2FtZSBibG9jay4gSWYgdGhpcyByZWNvcmQgaW5jbHVkZXMgYSBmdWxsLXBh Z2UgaW1hZ2UgKEZQSSksIHN1YnNlcXVlbnQKKwkgKiBXQUwgcmVjb3JkcyBtYXkgZGVwZW5kIG9u IGl0IHRvIGd1YXJkIGFnYWluc3QgdG9ybiBwYWdlcy4KKwkgKgorCSAqIEhlYXAgcGFnZSBjaGFu Z2VzIGFyZSByZXBsYXllZCBmaXJzdCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50OgorCSAqIFBE X0FMTF9WSVNJQkxFIG11c3QgYmUgc2V0IG9uIHRoZSBoZWFwIHBhZ2UgaWYgdGhlIFZNIGJpdCBp cyBzZXQuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgcmVsZWFzZWQgdGhlIGhlYXAgcGFnZSBsb2Nr IGFib3ZlLiBVbmRlciBub3JtYWwgb3BlcmF0aW9uLAorCSAqIHRoaXMgd291bGQgYmUgdW5zYWZl IOKAlCBhIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIGNvdWxkIGNsZWFyCisJICogUERfQUxMX1ZJ U0lCTEUgd2hpbGUgdGhlIFZNIGJpdCByZW1haW5lZCBzZXQsIHZpb2xhdGluZyB0aGUgaW52YXJp YW50LgorCSAqCisJICogRHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJyZW50IHdy aXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKKwkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91dCBob2xk aW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcworCSAqIHNhbWUgYXBw cm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29yZHMgKHNl ZQorCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqLworCWlmICgoeGxyZWMtPmZsYWdzICYg WExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkgJiYKKwkJWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0 ZW5kZWQocmVjb3JkLCAxLCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCisJCQkJCQkJCQkgICZ2 bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCisJeworCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKHZtYnVmZmVyKTsKKwkJY2hhcgkgICAqcmVsbmFtZTsKKworCQkvKiBpbml0aWFsaXpl IHRoZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNOZXcodm1w YWdlKSkKKwkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKKworCQkvKiBXZSBkb24ndCBo YXZlIHJlbGF0aW9uIG5hbWUgZHVyaW5nIHJlY292ZXJ5LCBzbyB1c2UgcmVsZmlsZW5vZGUgKi8K KwkJcmVsbmFtZSA9IHBzcHJpbnRmKCIldSIsIHJsb2NhdG9yLnJlbE51bWJlcik7CisJCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCisJCQkJCQkJCSByZWxuYW1lKTsKKworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo dm1idWZmZXIpLCBsc24pOworCQlwZnJlZShyZWxuYW1lKTsKKwl9CisKKwlpZiAoQnVmZmVySXNW YWxpZCh2bWJ1ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCiAJLyoK IAkgKiBJZiB0aGUgcGFnZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1cGRhdGUgdGhl IEZTTSBhcyB3ZWxsLgogCSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBvZiAibG93IiBp cyBsZXNzIHRoYW4gMjAlLiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMKaW5kZXggNzMwNmMxNmYwNWMuLjczODEwNWViOTdlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw3ICsxNCw4IEBACiAgKgkJdmlz aWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJp bGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0 dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3Jy ZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0g c2V0IGEgYml0IGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxpdHltYXBf c2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKKyAq CQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UK ICAqCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2 aXNpYmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmls aXR5IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0zMjEsNiAr MzIyLDcxIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVh cEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAqIFNldCB2 aXNpYmlsaXR5IG1hcCAoVk0pIGZsYWdzIGluIHRoZSBibG9jayByZWZlcmVuY2VkIGJ5IHZtQnVm LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGNhbGxlcnMgdGhhdCBsb2cg Vk0gY2hhbmdlcyB0b2dldGhlcgorICogd2l0aCB0aGUgaGVhcCBwYWdlIG1vZGlmaWNhdGlvbnMg dGhhdCByZW5kZXJlZCB0aGUgcGFnZSBhbGwtdmlzaWJsZS4KKyAqIENhbGxlcnMgdGhhdCBsb2cg Vk0gY2hhbmdlcyBzZXBhcmF0ZWx5IHNob3VsZCB1c2UgdmlzaWJpbGl0eW1hcF9zZXQoKS4KKyAq CisgKiBDYWxsZXIgcmVzcG9uc2liaWxpdGllczoKKyAqIC0gdm1CdWYgbXVzdCBiZSBwaW5uZWQg YW5kIGV4Y2x1c2l2ZWx5IGxvY2tlZCwgYW5kIGl0IG11c3QgY292ZXIgdGhlCisgKiAgIFZNIGJp dHMgY29ycmVzcG9uZGluZyB0byBoZWFwQmxrLgorICogLSBJbiBub3JtYWwgb3BlcmF0aW9uIChu b3QgcmVjb3ZlcnkpLCB0aGlzIG11c3QgYmUgY2FsbGVkIGluc2lkZSBhCisgKiAgIGNyaXRpY2Fs IHNlY3Rpb24gdGhhdCBhbHNvIGFwcGxpZXMgdGhlIG5lY2Vzc2FyeSBoZWFwIHBhZ2UgY2hhbmdl cworICogICBhbmQsIGlmIGFwcGxpY2FibGUsIGVtaXRzIFdBTC4KKyAqIC0gVGhlIGNhbGxlciBp cyByZXNwb25zaWJsZSBmb3IgV0FMIGxvZ2dpbmcgdGhlIFZNIGJ1ZmZlciBjaGFuZ2VzIGFuZAor ICogICBmb3IgYW55IHJlcXVpcmVkIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGFzc29jaWF0ZWQgaGVh cCBwYWdlLiBUaGlzCisgKiAgIGluY2x1ZGVzIHByZXNlcnZpbmcgaW52YXJpYW50cyBzdWNoIGFz IGhvbGRpbmcgYSBwaW4gYW5kIGV4Y2x1c2l2ZQorICogICBsb2NrIG9uIHRoZSBidWZmZXIgY29u dGFpbmluZyBoZWFwQmxrLgorICoKKyAqIGhlYXBSZWxuYW1lIGlzIHVzZWQgb25seSBmb3IgZGVi dWdnaW5nLgorICovCit1aW50OAordmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVy IGhlYXBCbGssCisJCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkJCSBjb25z dCBjaGFyICpoZWFwUmVsbmFtZSkKK3sKKwlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtf VE9fTUFQQkxPQ0soaGVhcEJsayk7CisJdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBC WVRFKGhlYXBCbGspOworCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFw QmxrKTsKKwlQYWdlCQlwYWdlOworCXVpbnQ4CSAgICptYXA7CisJdWludDgJCXN0YXR1czsKKwor I2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlNQVAKKwllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAw eCUwMlggZm9yICVzICVkIiwKKwkJIGZsYWdzLCBoZWFwUmVsbmFtZSwgaGVhcEJsayk7CisjZW5k aWYKKworCS8qIENhbGwgaW4gc2FtZSBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIFdBTCBpcyBlbWl0 dGVkLiAqLworCUFzc2VydChJblJlY292ZXJ5IHx8IENyaXRTZWN0aW9uQ291bnQgPiAwKTsKKwor CS8qIEZsYWdzIHNob3VsZCBiZSB2YWxpZC4gQWxzbyBuZXZlciBjbGVhciBiaXRzIHdpdGggdGhp cyBmdW5jdGlvbiAqLworCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp ID09IGZsYWdzKTsKKworCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQg YWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLworCUFzc2VydChmbGFncyAhPSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4pOworCisJLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBW TSBwYWdlIHBpbm5lZCAqLworCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0 QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQorCQllbG9nKEVSUk9SLCAid3JvbmcgVk0g YnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOworCisJQXNzZXJ0KEJ1ZmZlcklz RXhjbHVzaXZlTG9ja2VkKHZtQnVmKSk7CisKKwlwYWdlID0gQnVmZmVyR2V0UGFnZSh2bUJ1Zik7 CisJbWFwID0gKHVpbnQ4ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKTsKKworCXN0YXR1cyA9ICht YXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKwlp ZiAoZmxhZ3MgIT0gc3RhdHVzKQorCXsKKwkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBP ZmZzZXQpOworCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOworCX0KKworCXJldHVybiBzdGF0dXM7 Cit9CisKIC8qCiAgKgl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJp dHMKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IDgyYjYyYzk1 ZGU1Li5iNDhkN2RjMWQyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMK QEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1feGxvZy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9ybWdyZGVzY191dGlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieWRlZnMuaCIKIAogLyoKQEAg LTM1NCw2ICszNTUsMTAgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAibnR1cGxlczogJWQsIGZsYWdz OiAweCUwMlgiLCB4bHJlYy0+bnR1cGxlcywKIAkJCQkJCSB4bHJlYy0+ZmxhZ3MpOwogCisJCWlm ICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKQorCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIsIHZtX2ZsYWdzOiAweCUwMlgiLAorCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFIHwgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwogCQlpZiAoWExvZ1Jl Y0hhc0Jsb2NrRGF0YShyZWNvcmQsIDApICYmICFpc2luaXQpCiAJCXsKIAkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiLCBvZmZzZXRzOiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw LmgKaW5kZXggYmUyMWM2ZGQxYTMuLjNkY2YzN2JhMDNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmgKQEAgLTM3LDYgKzM3LDkgQEAgZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0 KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCiAJCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkLAogCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKK2V4dGVybiB1aW50 OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkJ CSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkJCSAgY29uc3QgY2hhciAqaGVh cFJlbG5hbWUpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQg dmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJs ZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxp dHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-prune-f.patch" Content-Disposition: attachment; filename="v16-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-prune-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdc5 RnJvbSAwMTQxYzEwZDMwYmQ3ZWE2MjBkMTZkMjQyMDFiYTIyZTUzMzdhNGRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjUyOjA4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDYvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSB2YWN1dW0K IHBydW5lL2ZyZWV6ZQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVmFjdXVtIG5v IGxvbmdlciBlbWl0cyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIGVhY2ggcGFnZSBzZXQKYWxs LXZpc2libGUgb3IgYWxsLWZyb3plbiBkdXJpbmcgcGhhc2UgSS4gSW5zdGVhZCwgdmlzaWJpbGl0 eSBtYXAKdXBkYXRlcyBhcmUgbm93IGluY2x1ZGVkIGluIHRoZSBYTE9HX0hFQVAyX1BSVU5FX1ZB Q1VVTV9TQ0FOIHJlY29yZCB0aGF0CmlzIGFscmVhZHkgZW1pdHRlZCBmb3IgcHJ1bmluZyBhbmQg ZnJlZXppbmcuCgpQcmV2aW91c2x5LCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGRldGVy bWluZWQgd2hldGhlciBhIHBhZ2Ugd2FzCmFsbC12aXNpYmxlLCBidXQgdGhlIGNvcnJlc3BvbmRp bmcgVk0gYml0cyB3ZXJlIG9ubHkgc2V0IGxhdGVyIGluCmxhenlfc2Nhbl9wcnVuZSgpLiBOb3cg dGhlIFZNIGlzIHVwZGF0ZWQgaW1tZWRpYXRlbHkgaW4KaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoKSwgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgaGVhcAptb2RpZmljYXRpb25zLgoKVGhpcyBj aGFuZ2UgYXBwbGllcyBvbmx5IHRvIHZhY3V1beKAmXMgcHJ1bmUvZnJlZXplIHdvcmssIG5vdCB0 byBwcnVuaW5nCnBlcmZvcm1lZCBkdXJpbmcgbm9ybWFsIHBhZ2UgYWNjZXNzLgotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgMTU4ICsrKysrKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgfCA0NzQgKysrKysrKysrKysrKysrKysr KystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgfCAyMDIgKy0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIHwgIDExICst CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICB8ICAzNiArLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgfCAgMTcgKy0KIDYgZmlsZXMgY2hhbmdl ZCwgNTg0IGluc2VydGlvbnMoKyksIDMxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX3hsb2cuYwppbmRleCBjMmM3ZTZhYjA4Ni4uOTExNDE2YmJjNTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMzUsNyArMzUsOSBAQCBoZWFwX3hsb2df cHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCUJ1ZmZlcgkJYnVmZmVyOwog CVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRv QWN0aW9uIGFjdGlvbjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl1aW50 OAkJdm1mbGFncyA9IDA7CisJU2l6ZQkJZnJlZXNwYWNlID0gMDsKIAogCVhMb2dSZWNHZXRCbG9j a1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKIAltZW1jcHkoJnhscmVj LCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBydW5lKTsKQEAgLTUwLDExICs1MiwyMiBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCUFzc2VydCgoeGxy ZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgIT0gMCB8fAogCQkgICAoeGxyZWMuZmxhZ3Mg JiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykpID09IDApOwog CisJaWYgKHhscmVjLmZsYWdzICYgWExIUF9WTV9BTExfVklTSUJMRSkKKwl7CisJCXZtZmxhZ3Mg PSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlpZiAoeGxyZWMuZmxhZ3MgJiBYTEhQX1ZN X0FMTF9GUk9aRU4pCisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwl9 CisKIAkvKgotCSAqIFdlIGFyZSBhYm91dCB0byByZW1vdmUgYW5kL29yIGZyZWV6ZSB0dXBsZXMu ICBJbiBIb3QgU3RhbmRieSBtb2RlLAotCSAqIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBxdWVy aWVzIHJ1bm5pbmcgZm9yIHdoaWNoIHRoZSByZW1vdmVkIHR1cGxlcwotCSAqIGFyZSBzdGlsbCB2 aXNpYmxlIG9yIHdoaWNoIHN0aWxsIGNvbnNpZGVyIHRoZSBmcm96ZW4geGlkcyBhcyBydW5uaW5n LgotCSAqIFRoZSBjb25mbGljdCBob3Jpem9uIFhJRCBjb21lcyBhZnRlciB4bF9oZWFwX3BydW5l LgorCSAqIEFmdGVyIHhsX2hlYXBfcHJ1bmUgaXMgdGhlIG9wdGlvbmFsIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24uCisJICoKKwkgKiBJbiBIb3QgU3RhbmRieSBtb2RlLCB3ZSBtdXN0IGVuc3Vy ZSB0aGF0IHRoZXJlIGFyZSBubyBydW5uaW5nIHF1ZXJpZXMKKwkgKiB3aGljaCB3b3VsZCBjb25m bGljdCB3aXRoIHRoZSBjaGFuZ2VzIGluIHRoaXMgcmVjb3JkLiBUaGF0IG1lYW5zIHdlCisJICog Y2FuJ3QgcmVwbGF5IHRoaXMgcmVjb3JkIGlmIGl0IHJlbW92ZXMgdHVwbGVzIHRoYXQgYXJlIHN0 aWxsIHZpc2libGUgdG8KKwkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnksIGZyZWV6ZSB0 dXBsZXMgd2l0aCB4aWRzIHRoYXQgYXJlIHN0aWxsCisJICogY29uc2lkZXJlZCBydW5uaW5nIG9u IHRoZSBzdGFuZGJ5LCBvciBzZXQgYSBwYWdlIGFzIGFsbC12aXNpYmxlIGluIHRoZQorCSAqIFZN IGlmIGl0IGlzbid0IGFsbC12aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5k YnkuCiAJICovCiAJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04p ICE9IDApCiAJewpAQCAtNzEsMTIgKzg0LDEyIEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJfQogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1w YWdlIGltYWdlLCByZXN0b3JlIGl0IGFuZCB3ZSdyZSBkb25lLgorCSAqIElmIHdlIGhhdmUgYSBm dWxsLXBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2ssIHJlc3RvcmUgaXQgYW5kIHdlJ3JlCisJ ICogZG9uZSB3aXRoIHRoZSBoZWFwIGJsb2NrLgogCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVm ZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX05PUk1BTCwKLQkJCQkJCQkJCQkgICAo eGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgIT0gMCwKLQkJCQkJCQkJCQkgICAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQorCWlmIChYTG9nUmVhZEJ1ZmZl ckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsCisJCQkJCQkJCQkgICh4bHJl Yy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwLAorCQkJCQkJCQkJICAmYnVmZmVyKSA9 PSBCTEtfTkVFRFNfUkVETykKIAl7CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CiAJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZDsKQEAgLTkwLDYgKzEwMyw5IEBAIGhlYXBf eGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXhsaHBfZnJlZXpl X3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpk YXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKKwkJYm9v bAkJZG9fcHJ1bmU7CisJCWJvb2wJCW1hcmtfYnVmZmVyX2RpcnR5ID0gZmFsc2U7CisJCWJvb2wJ CXNldF9sc24gPSBmYWxzZTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2Zy ZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywKIAkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5z LCAmZnJ6X29mZnNldHMsCkBAIC05NywxMSArMTEzLDE2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkJCSAgICZuZGVhZCwgJm5vd2Rl YWQsCiAJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKIAorCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisKKwkJLyogRW5z dXJlIHRoZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8KKwkJQXNzZXJ0KGRvX3BydW5lIHx8IG5w bGFucyA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisKIAkJLyoK IAkJICogVXBkYXRlIGFsbCBsaW5lIHBvaW50ZXJzIHBlciB0aGUgcmVjb3JkLCBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24KIAkJICogaWYgbmVlZGVkLgogCQkgKi8KLQkJaWYgKG5yZWRpcmVjdGVk ID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDApCisJCWlmIChkb19wcnVuZSkKIAkJCWhl YXBfcGFnZV9wcnVuZV9leGVjdXRlKGJ1ZmZlciwKIAkJCQkJCQkJCSh4bHJlYy5mbGFncyAmIFhM SFBfQ0xFQU5VUF9MT0NLKSA9PSAwLAogCQkJCQkJCQkJcmVkaXJlY3RlZCwgbnJlZGlyZWN0ZWQs CkBAIC0xMzgsMzYgKzE1OSwxMjEgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAqLwogCQlB c3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMgPT0gZGF0YXB0ciArIGRhdGFsZW4pOwogCisJCWlm IChkb19wcnVuZSB8fCBucGxhbnMgPiAwKQorCQkJbWFya19idWZmZXJfZGlydHkgPSBzZXRfbHNu ID0gdHJ1ZTsKKworCQkvKgorCQkgKiBUaGUgY3JpdGljYWwgaW50ZWdyaXR5IHJlcXVpcmVtZW50 IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZAorCQkgKiB1cCB3aXRoIHdpdGggdGhlIHZp c2liaWxpdHkgbWFwIGJpdCBzZXQgYW5kIHRoZSBwYWdlLWxldmVsCisJCSAqIFBEX0FMTF9WSVNJ QkxFIGJpdCBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1ZW50IHBhZ2UK KwkJICogbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFw IGJpdC4KKwkJICoKKwkJICogSWYgdGhpcyByZWNvcmQgb25seSBzZXRzIHRoZSBWTSwgbm8gbmVl ZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLgorCQkgKi8KKwkJaWYgKCh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKKwkJeworCQkJ UGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHRydWU7CisK KwkJCS8qCisJCQkgKiBBbHdheXMgZW1pdCBhIFdBTCByZWNvcmQgd2hlbiBzZXR0aW5nIFBEX0FM TF9WSVNJQkxFIGJ1dCBvbmx5CisJCQkgKiBlbWl0IGFuIEZQSSBpZiBjaGVja3N1bXMvd2FsX2xv Z19oaW50cyBhcmUgZW5hYmxlZC4gQWR2YW5jZSB0aGUKKwkJCSAqIHBhZ2UgTFNOIG9ubHkgaWYg dGhlIHJlY29yZCBjb3VsZCBpbmNsdWRlIGFuIEZQSSwgc2luY2UKKwkJCSAqIHJlY292ZXJ5IHNr aXBzIHJlY29yZHMgPD0gdGhlIHN0YW1wZWQgTFNOLiBPdGhlcndpc2UgaXQgbWlnaHQKKwkJCSAq IHNraXAgYW4gZWFybGllciBGUEkgbmVlZGVkIHRvIHJlcGFpciBhIHRvcm4gcGFnZS4KKwkJCSAq LworCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJCQlzZXRfbHNuID0gdHJ1ZTsKKwkJ fQorCisJCWlmIChtYXJrX2J1ZmZlcl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIp OworCisJCWlmIChzZXRfbHNuKQorCQkJUGFnZVNldExTTihwYWdlLCBsc24pOworCiAJCS8qCiAJ CSAqIE5vdGU6IHdlIGRvbid0IHdvcnJ5IGFib3V0IHVwZGF0aW5nIHRoZSBwYWdlJ3MgcHJ1bmFi aWxpdHkgaGludHMuCiAJCSAqIEF0IHdvcnN0IHRoaXMgd2lsbCBjYXVzZSBhbiBleHRyYSBwcnVu ZSBjeWNsZSB0byBvY2N1ciBzb29uLgogCQkgKi8KLQotCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7 Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCX0KIAogCS8qCi0JICogSWYgd2UgcmVsZWFz ZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMsIHVwZGF0ZSB0aGUgZnJlZSBzcGFjZSBtYXAu CisJICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMgb3Igc2V0IFBE X0FMTF9WSVNJQkxFIG9yIHRoZQorCSAqIFZNLCB1cGRhdGUgdGhlIGZyZWVzcGFjZSBtYXAuCisJ ICoKKwkgKiBFdmVuIHdoZW4gbm8gYWN0dWFsIHNwYWNlIGlzIGZyZWVkIChlLmcuLCB3aGVuIG9u bHkgbWFya2luZyB0aGUgcGFnZQorCSAqIGFsbC12aXNpYmxlIG9yIGZyb3plbiksIHdlIHN0aWxs IHVwZGF0ZSB0aGUgRlNNLiBCZWNhdXNlIHRoZSBGU00gaXMKKwkgKiB1bmxvZ2dlZCBhbmQgbWFp bnRhaW5lZCBoZXVyaXN0aWNhbGx5LCBpdCBvZnRlbiBiZWNvbWVzIHN0YWxlIG9uCisJICogc3Rh bmRieXMuIElmIHN1Y2ggYSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVkIGFuZCBydW5zIFZBQ1VV TSwgaXQgd2lsbAorCSAqIHNraXAgcmVjYWxjdWxhdGluZyBmcmVlIHNwYWNlIGZvciBwYWdlcyB0 aGF0IHdlcmUgbWFya2VkIGFsbC12aXNpYmxlCisJICogKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGlu ZyBvbiB0aGUgbW9kZSkuIEZyZWVTcGFjZU1hcFZhY3V1bSBjYW4gdGhlbgorCSAqIHByb3BhZ2F0 ZSBvdmVybHkgb3B0aW1pc3RpYyBmcmVlIHNwYWNlIHZhbHVlcyB1cHdhcmQsIGNhdXNpbmcgZnV0 dXJlCisJICogaW5zZXJ0aW9ucyB0byBzZWxlY3QgcGFnZXMgdGhhdCB0dXJuIG91dCB0byBiZSB1 bnVzYWJsZS4gSW4gYnVsaywgdGhpcworCSAqIGNhbiBsZWFkIHRvIGxvbmcgc3RhbGxzLgorCSAq CisJICogVG8gcHJldmVudCB0aGlzLCBhbHdheXMgcmVmcmVzaCB0aGUgRlNN4oCZcyB2aWV3IHdo ZW4gYSBwYWdlIGJlY29tZXMKKwkgKiBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgorCSAqCisJ ICogRG8gdGhpcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYSBmdWxsLXBhZ2UgaW1hZ2UgaXMgbG9n Z2VkLCBzaW5jZSBGU00KKwkgKiBkYXRhIGlzIG5vdCBwYXJ0IG9mIHRoZSBwYWdlIGl0c2VsZi4K IAkgKgotCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWluZyBh cHBsaWVkLCBzaW5jZSB0aGUgRlNNCi0JICogZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5 LgogCSAqLwogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCiAJewotCQlpZiAoeGxyZWMuZmxh Z3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKLQkJCQkJCSAgIFhMSFBfSEFTX0RFQURfSVRF TVMgfAotCQkJCQkJICAgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykpCi0JCXsKLQkJCVNpemUJ CWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7 CisJCWlmICgoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKKwkJCQkJCQlY TEhQX0hBU19ERUFEX0lURU1TIHwKKwkJCQkJCQlYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TKSkg fHwKKwkJCSh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSkKKwkJCWZyZWVzcGFj ZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7CiAKLQkJCVVu bG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJLyoKKwkJICogV2Ugd2FudCB0byBhdm9pZCBo b2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFwIGJ1ZmZlciB3aGlsZQorCQkgKiBk b2luZyBJTyAoZWl0aGVyIG9mIHRoZSBGU00gb3IgdGhlIFZNKSwgc28gd2UnbGwgcmVsZWFzZSB0 aGUgbG9jaworCQkgKiBvbiB0aGUgaGVhcCBidWZmZXIgYmVmb3JlIGRvaW5nIGVpdGhlci4KKwkJ ICovCisJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CiAKLQkJCVhMb2dSZWNvcmRQ YWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFjZSk7CisJLyoKKwkgKiBO b3cgcmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4KKwkgKgorCSAqIFdlIG11c3QgcmVkbyBj aGFuZ2VzIHRvIHRoZSBWTSBldmVuIGlmIHRoZSBoZWFwIHBhZ2Ugd2FzIHNraXBwZWQgZHVlIHRv CisJICogTFNOIGludGVybG9jay4gU2VlIGNvbW1lbnQgaW4gaGVhcF94bG9nX211bHRpX2luc2Vy dCgpIGZvciBtb3JlIGRldGFpbHMKKwkgKiBvbiByZXBsYXlpbmcgY2hhbmdlcyB0byB0aGUgVk0u CisJICovCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAmJgorCQlY TG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsCisJCQkJCQkJCQkgIFJCTV9a RVJPX09OX0VSUk9SLAorCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9 PSBCTEtfTkVFRFNfUkVETykKKwl7CisJCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1i dWZmZXIpOworCQljaGFyCSAgICpyZWxuYW1lOworCQl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisK KwkJLyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLworCQlp ZiAoUGFnZUlzTmV3KHZtcGFnZSkpCisJCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CisK KwkJLyogV2UgZG9uJ3QgaGF2ZSByZWxhdGlvbiBuYW1lIGR1cmluZyByZWNvdmVyeSwgc28gdXNl IHJlbGZpbGVub2RlICovCisJCXJlbG5hbWUgPSBwc3ByaW50ZigiJXUiLCBybG9jYXRvci5yZWxO dW1iZXIpOworCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLCB2 bWJ1ZmZlciwgdm1mbGFncywgcmVsbmFtZSk7CisKKwkJLyogT25seSBzZXQgVk0gcGFnZSBMU04g aWYgd2UgbW9kaWZpZWQgdGhlIHBhZ2UgKi8KKwkJaWYgKG9sZF92bWJpdHMgIT0gdm1mbGFncykK KwkJeworCQkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJCVBhZ2VTZXRMU04o QnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CiAJCX0KLQkJZWxzZQotCQkJVW5sb2NrUmVs ZWFzZUJ1ZmZlcihidWZmZXIpOworCQlwZnJlZShyZWxuYW1lKTsKIAl9CisKKwlpZiAoQnVmZmVy SXNWYWxpZCh2bWJ1ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCisJ aWYgKGZyZWVzcGFjZSA+IDApCisJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRv ciwgYmxrbm8sIGZyZWVzcGFjZSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCmluZGV4IGMyM2E2YTIxYTdmLi5mMzg0ZDc0NDE2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRh aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy90 cmFuc2FtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvdmFjdXVtLmgiCkBAIC00Myw2ICs0NCw4IEBAIHR5cGVkZWYgc3RydWN0CiAJYm9v bAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0dXBs ZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKwkvKiB3aGV0aGVyIG9yIG5vdCB0byBhdHRl bXB0IHVwZGF0aW5nIHRoZSBWTSAqLworCWJvb2wJCWF0dGVtcHRfdXBkYXRlX3ZtOwogCWNvbnN0 IHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzIsMTcgKzEzNSwxNyBA QCB0eXBlZGVmIHN0cnVjdAogCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRl IGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgogCSAqIGJpdHMgaW4gdGhlIHZpc2li aWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRlciBwcnVuaW5nLgogCSAqCi0J ICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxl cyBvbiB0aGUgcGFnZS4KLQkgKiBUaGUgY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0 IGhvcml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzLiAgSXQgaXMgb25seSB2YWxp ZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgor CSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBs ZXMgb24gdGhlIHBhZ2UuIEl0CisJICogY2FuIGJlIHVzZWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6 b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBvciB3aGVuCisJICogZnJlZXppbmcgYWxsIHRoZSB0dXBs ZXMgb24gdGhlIHBhZ2UuIEl0IGlzIG9ubHkgdmFsaWQgd2hlbiBhbGwgdGhlIGxpdmUKKwkgKiB0 dXBsZXMgb24gdGhlIHBhZ2UgYXJlIGFsbC12aXNpYmxlLgogCSAqCiAJICogTk9URTogYWxsX3Zp c2libGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVt cy4KIAkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo KSwgdG8gdXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ug b3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFsdWVzIHJldHVy bmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkgKiBMUF9ERUFEIGl0 ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnR1bmlzdGljYWxs eQotCSAqIGZyZWV6ZS4KKwkgKiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBm cmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gdmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVk IHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBu b3QgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE3Myw2ICsxNzYsMTkgQEAgc3RhdGljIHZv aWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2Ug cGFnZSk7CiAKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19w cnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICBUcmFuc2Fj dGlvbklkIGxhdGVzdF94aWRfcmVtb3ZlZCwgVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9y aXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJv b2wgYmxrX2FscmVhZHlfYXYsCisJCQkJCQkJCQkgIGJvb2wgc2V0X2Jsa19hbGxfZnJvemVuKTsK Kworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwK KwkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCSAgIEJ1ZmZlciBoZWFw X2J1ZiwKKwkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgICBib29sIGJsa19r bm93bl9hdiwKKwkJCQkJCQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJ ICAgdWludDggKnZtZmxhZ3MsCisJCQkJCQkJCSAgIGJvb2wgKmRvX3NldF9wZF92aXMpOwogCiAv KgogICogT3B0aW9uYWxseSBwcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gaW4gdGhlIHNw ZWNpZmllZCBwYWdlLgpAQCAtMjU4LDYgKzI3NCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQlwYXJhbXMucmVhc29uID0gUFJVTkVf T05fQUNDRVNTOwogCQkJcGFyYW1zLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCQkJcGFyYW1zLmN1dG9m ZnMgPSBOVUxMOworCQkJcGFyYW1zLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwkJCXBhcmFt cy5ibGtfa25vd25fYXYgPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIEZvciBub3csIHBhc3MgbWFy a191bnVzZWRfbm93IGFzIGZhbHNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgpAQCAtNDMxLDEw ICs0NDksMTA4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwogfQogCisvKgorICogRGVjaWRlIHdoZXRo ZXIgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBiaXRzIGZvciBoZWFwX2JsaywgdXNpbmcKKyAq IGluZm9ybWF0aW9uIGZyb20gUHJ1bmVTdGF0ZSBhbmQgYmxrX2tub3duX2F2LiBTb21lIGNhbGxl cnMgbWF5IGFscmVhZHkKKyAqIGhhdmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRzIChl LmcuLCBWQUNVVU0gaW4gdGhlIHByZXZpb3VzCisgKiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhhdCBhbG9uZy4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYg b25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHRoZSBkZXNpcmVk CisgKiBmbGFncyBpbiAqdm1mbGFncy4gQWxzbyBpbmRpY2F0ZXMgdmlhIGRvX3NldF9wZF92aXMg d2hldGhlciBQRF9BTExfVklTSUJMRQorICogc2hvdWxkIGJlIHNldCBvbiB0aGUgaGVhcCBwYWdl LgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCSAgIEJ1ZmZlciBoZWFw X2J1ZiwKKwkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkgICBib29sIGJsa19rbm93bl9h diwKKwkJCQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJICAgdWludDggKnZt ZmxhZ3MsCisJCQkJCSAgIGJvb2wgKmRvX3NldF9wZF92aXMpCit7CisJUGFnZQkJaGVhcF9wYWdl ID0gQnVmZmVyR2V0UGFnZShoZWFwX2J1Zik7CisJYm9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7CisK KwkqZG9fc2V0X3BkX3ZpcyA9IGZhbHNlOworCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0 ZV92bSkKKwl7CisJCUFzc2VydCghcHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgIXByc3RhdGUtPmFs bF9mcm96ZW4pOworCQlBc3NlcnQoKnZtZmxhZ3MgPT0gMCk7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9w YWdlKSkKKwkJKmRvX3NldF9wZF92aXMgPSB0cnVlOworCisJaWYgKChwcnN0YXRlLT5hbGxfdmlz aWJsZSAmJiAhYmxrX2tub3duX2F2KSB8fAorCQkocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1f QUxMX0ZST1pFTihyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQorCXsKKwkJKnZtZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3pl bikKKwkJCSp2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKworCQlkb19zZXRf dm0gPSB0cnVlOworCX0KKworCS8qCisJICogTm93IGhhbmRsZSB0d28gcG90ZW50aWFsIGNvcnJ1 cHRpb24gY2FzZXM6CisJICoKKwkgKiBUaGVzZSBkbyBub3QgbmVlZCB0byBoYXBwZW4gaW4gYSBj cml0aWNhbCBzZWN0aW9uIGFuZCBhcmUgbm90CisJICogV0FMLWxvZ2dlZC4KKwkgKgorCSAqIEFz IG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBi ZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdz IHBvc3NpYmxlIHRoYXQgaW4gdmFjdXVtIHRoZSBiaXQKKwkgKiBnb3QgY2xlYXJlZCBhZnRlciBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0CisJICogcmVj aGVjayB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNv cnJ1cHQuCisJICovCisJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdlSXNBbGxWaXNpYmxl KGhlYXBfcGFnZSkgJiYKKwkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhl YXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1zZygicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0 aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVh cF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQor CisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNv IGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8g bm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxF IGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3Zl cyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMK KwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVu bmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBp dCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2 aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExf VklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUg TFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93 ZXZlci4KKwkgKi8KKwllbHNlIGlmIChwcnN0YXRlLT5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJ c0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5p bmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIl c1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBo ZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtC dWZmZXJEaXJ0eShoZWFwX2J1Zik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24sIGhl YXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCX0K KworCXJldHVybiBkb19zZXRfdm07Cit9CiAKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdt ZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZp ZWQgcGFnZS4KKyAqIHNwZWNpZmllZCBwYWdlLiBJZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3Rh dHVzIGhhcyBjaGFuZ2VkLCB1cGRhdGUgaXQgaW4KKyAqIHRoZSBWTS4KICAqCiAgKiBDYWxsZXIg bXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9jayBvbiB0aGUgcGFnZS4gIE5vdGUg dGhhdCB3ZQogICogZG9uJ3QgdXBkYXRlIHRoZSBGU00gaW5mb3JtYXRpb24gZm9yIHBhZ2Ugb24g Y2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0CkBAIC00NDksMTIgKzU2NSwxMyBAQCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiBp dCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhp ZCwgb3IgaWYgaXQncwogICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lz dGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQogICogJ3BhcmFtcy5jdXRvZmZzJywg J3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlkJwotICog YXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZS RUVaRSBvcHRpb24gaXMKLSAqIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2li bGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gYWZ0ZXIKLSAqIGRldGVybWluaW5nIHdoZXRoZXIg b3Igbm90IHRvIG9wcG9ydW5pc3RpY2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUKLSAq IFZNIGJpdHMgY2FuIGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0 aGUKLSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0 IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCi0gKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBp bmZvcm1hdGlvbi4KKyAqIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KKyAq CisgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0 aGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YKKyAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxs IHVwZGF0ZSB0aGUgVk0gYXQgdGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAorICogZnJlZXpp bmcgdGhlIGhlYXAgcGFnZS4gV2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRz IGFuZAorICogcHJlc3VsdC0+bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVm b3JlIGFuZCBhZnRlciB1cGRhdGluZyBpdAorICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJv b2trZWVwaW5nLgogICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVl ZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQg YW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4K QEAgLTQ3OSw2ICs1OTYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkK IHsKIAlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJdm1idWZmZXIg PSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7 CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CiAJ T2Zmc2V0TnVtYmVyIG9mZm51bSwKQEAgLTQ4OCwxNSArNjA2LDIyIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJYm9vbAkJZG9fZnJlZXpl OwogCWJvb2wJCWRvX3BydW5lOwogCWJvb2wJCWRvX2hpbnRfcHJ1bmU7CisJYm9vbAkJZG9fc2V0 X3ZtOworCWJvb2wJCWRvX3NldF9wZF92aXM7CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwog CWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOwogCVRyYW5zYWN0aW9uSWQg ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUcmFuc2FjdGlv bklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXVpbnQ4CQluZXdfdm1i aXRzID0gMDsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMg dG8gcHJzdGF0ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKIAlwcnN0 YXRlLm1hcmtfdW51c2VkX25vdyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJV TkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwogCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFy YW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRlLmF0 dGVtcHRfdXBkYXRlX3ZtID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9V UERBVEVfVklTKSAhPSAwOwogCXByc3RhdGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKIAog CS8qCkBAIC01NDMsNTAgKzY2OCw1NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5k ZWFkb2Zmc2V0czsKIAogCS8qCi0JICogQ2FsbGVyIG1heSB1cGRhdGUgdGhlIFZNIGFmdGVyIHdl J3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRoZXIgdGhlIHBhZ2Ugd2ls bCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVuaW5nIGFuZAotCSAqIGZy ZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAqIFRyYWNrIHdoZXRoZXIg dGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuLgor CSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyBh bmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFwIChWTSkgaWYgcmVxdWVzdGVk IGJ5IHRoZSBjYWxsZXIuCisJICoKKwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIHBlcmZvcm1z IGZyZWV6aW5nLCBidXQgb3RoZXIgY2FsbGVycyBtYXkgaW4gdGhlCisJICogZnV0dXJlLiBWaXNp YmlsaXR5IGJvb2trZWVwaW5nIGlzIHJlcXVpcmVkIG5vdCBqdXN0IGZvciBzZXR0aW5nIHRoZSBW TQorCSAqIGJpdHMsIGJ1dCBhbHNvIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nOiB3ZSBvbmx5 IGNvbnNpZGVyIGZyZWV6aW5nIGlmCisJICogdGhlIHBhZ2Ugd291bGQgYmVjb21lIGFsbC1mcm96 ZW4sIG9yIGlmIGl0IHdvdWxkIGJlIGFsbC1mcm96ZW4gZXhjZXB0CisJICogZm9yIGRlYWQgdHVw bGVzIHRoYXQgVkFDVVVNIHdpbGwgcmVtb3ZlLiBJZiBhdHRlbXB0X3VwZGF0ZV92bSBpcyBmYWxz ZSwKKwkgKiB3ZSB3aWxsIG5vdCBzZXQgdGhlIFZNIGJpdCBldmVuIGlmIHRoZSBwYWdlIGlzIGZv dW5kIHRvIGJlIGFsbC12aXNpYmxlLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBz ZXRzIHRoZSBWTSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJv b2trZWVwaW5nIGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVk IHRvCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJh dGUgZmxhZyBpZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQg YWxzbyBmcmVlemluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0g Yml0cy4KKwkgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBwYXNzZWQgd2l0aG91 dCBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCSAqIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0IGJl IGluaXRpYWxpemVkIHRvIGZhbHNlLCBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsCisJICogaGVhcF9w cmVwYXJlX2ZyZWV6ZV90dXBsZSgpIGZvciBlYWNoIHR1cGxlLgogCSAqCi0JICogSW4gYWRkaXRp b24gdG8gdGVsbGluZyB0aGUgY2FsbGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUgVk0gYml0LCB3 ZQotCSAqIGFsc28gdXNlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyBmb3Igb3VyIG93 biBkZWNpc2lvbi1tYWtpbmcuIElmCi0JICogdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lIGZy b3plbiwgd2UgY29uc2lkZXIgb3Bwb3J0dW5pc3RpY2FsbHkKLQkgKiBmcmVlemluZyB0dXBsZXMu ICBXZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZyZWV6ZSB0aGUgd2hvbGUgcGFnZSBpZiB0aGVyZQot CSAqIGFyZSB0dXBsZXMgcHJlc2VudCB0aGF0IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSBv ciBpZiB0aGVyZSBhcmUKLQkgKiBkZWFkIHR1cGxlcyB3aGljaCBhcmUgbm90IHlldCByZW1vdmFi bGUuICBIb3dldmVyLCBkZWFkIHR1cGxlcyB3aGljaAotCSAqIHdpbGwgYmUgcmVtb3ZlZCBieSB0 aGUgZW5kIG9mIHZhY3V1bWluZyBzaG91bGQgbm90IHByZWNsdWRlIHVzIGZyb20KLQkgKiBvcHBv cnR1bmlzdGljYWxseSBmcmVlemluZy4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8gbm90IGltbWVk aWF0ZWx5Ci0JICogY2xlYXIgYWxsX3Zpc2libGUgd2hlbiB3ZSBzZWUgTFBfREVBRCBpdGVtcy4g IFdlIGZpeCB0aGF0IGFmdGVyCi0JICogc2Nhbm5pbmcgdGhlIGxpbmUgcG9pbnRlcnMsIGJlZm9y ZSB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsCi0JICogc28gdGhhdCB0aGUgY2Fs bGVyIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogRGVhZCB0dXBsZXMg dGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW0gc2hvdWxkIG5vdAorCSAq IHByZXZlbnQgb3Bwb3J0dW5pc3RpYyBmcmVlemluZy4gVGhlcmVmb3JlLCB3ZSBkbyBub3QgY2xl YXIgYWxsX3Zpc2libGUKKwkgKiB3aGVuIHdlIGVuY291bnRlciBMUF9ERUFEIGl0ZW1zLiBJbnN0 ZWFkLCB3ZSBjb3JyZWN0IGFsbF92aXNpYmxlIGFmdGVyCisJICogZGVjaWRpbmcgd2hldGhlciB0 byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLCB0byBhdm9pZAorCSAqIHNldHRp bmcgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KKwkgKgorCSAqIElmIG5laXRoZXIgZnJlZXppbmcg bm9yIFZNIHVwZGF0ZXMgYXJlIHJlcXVlc3RlZCwgd2Ugc2tpcCB0aGUgZXh0cmEKKwkgKiBib29r a2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2Ug YWxsb3dzCisJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpIHRvIGJ5 cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXpl KQogCXsKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUuYWxsX2Zyb3pl biA9IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUuYXR0ZW1wdF91cGRhdGVfdm0pCisJewor CQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1ZTsKKwkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFs c2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIEluaXRpYWxpemluZyB0byBmYWxzZSBhbGxv d3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRoZW0gaW4KLQkJICogaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkgKi8KIAkJcHJzdGF0ZS5hbGxfdmlzaWJs ZSA9IGZhbHNlOwogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAq IFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVw bGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJbiB0aGUgY29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBz ZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gdGhlCi0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVw ZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0aGUgZW5kIG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5p bmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQg YW55Ci0JICogcnVubmluZyB0cmFuc2FjdGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUg dHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0JICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBo b3Jpem9uIHJlbWFpbnMgSW52YWxpZFRyYW5zYWN0aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkg Y3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcwor CSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5 IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29u IGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFs bCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWlu dGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24KKwkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICovCiAJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApAQCAtODE4LDYgKzk0NywzNSBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0YXRl LmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXBy c3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKwlBc3NlcnQoIXByc3Rh dGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCS8qCisJ ICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJp dCBhbmQgdGhlIFZNIGJpdHMKKwkgKiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSBh bmQgdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJICoKKwkgKiBXaGlsZSBpdCBp cyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlIGNvcnJlc3BvbmRp bmcKKwkgKiBWTSBiaXQgaXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBrZWVwIHRoZW0g aW4gc3luYy4KKwkgKgorCSAqIEFjY29yZGluZ2x5LCB3ZSBhbHNvIGFsbG93IHVwZGF0aW5nIG9u bHkgdGhlIFZNIHdoZW4gUERfQUxMX1ZJU0lCTEUgaGFzCisJICogYWxyZWFkeSBiZWVuIHNldC4g U2V0dGluZyBvbmx5IHRoZSBWTSBpcyBtb3N0IGNvbW1vbiB3aGVuIHNldHRpbmcgYW4KKwkgKiBh bHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbi4KKwkgKi8KKwlkb19zZXRfdm0gPSBo ZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkgICBibG9j a25vLCBidWZmZXIsIHZtYnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAg ICZwcnN0YXRlLCAmbmV3X3ZtYml0cywgJmRvX3NldF9wZF92aXMpOworCisJLyogV2Ugc2hvdWxk IG9ubHkgc2V0IHRoZSBWTSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLwor CUFzc2VydCghZG9fc2V0X3ZtIHx8IGRvX3NldF9wZF92aXMgfHwgUGFnZUlzQWxsVmlzaWJsZShw YWdlKSk7CisKKwljb25mbGljdF94aWQgPSBnZXRfY29uZmxpY3RfeGlkKGRvX3BydW5lLCBkb19m cmVlemUsIGRvX3NldF92bSwKKwkJCQkJCQkJCXByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkLCBm cnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZf eGlkLCBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCShkb19zZXRfdm0gJiYgKG5ld192 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pKSk7CisKKwkvKiBMb2NrIHZtYnVmZmVy IGJlZm9yZSBlbnRlcmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQor CQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJLyogQW55 IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7CiAKQEAgLTgzOCwxNCArOTk2LDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAkJLyoKIAkJICogSWYgdGhh dCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhlIHBhZ2UsIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dl ZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFn ZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAqIGhpbnQu ICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlIG9yIHNldAorCQkg KiBQRF9BTExfVklTSUJMRSwgd2Ugd2lsbCBtYXJrIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJ CSAqCisJCSAqIFNldHRpbmcgUERfQUxMX1ZJU0lCTEUgaXMgZnVsbHkgV0FMLWxvZ2dlZCBiZWNh dXNlIGl0IGlzIGZvcmJpZGRlbgorCQkgKiBmb3IgdGhlIFZNIHRvIGJlIHNldCBhbmQgUERfQUxM X1ZJU0lCTEUgdG8gYmUgY2xlYXIuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1 bmUpCisJCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSAmJiAhZG9fc2V0X3BkX3ZpcykKIAkJ CU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVyLCB0cnVlKTsKIAl9CiAKLQlpZiAoZG9fcHJ1bmUg fHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9fc2V0X3ZtKQog CXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRlbSBjaGFuZ2VzIGFuZCByZXBhaXIgcGFnZSBm cmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1bmUpCkBAIC04NTksNjQgKzEwMjAsOTEgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ aWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhidWZmZXIsIHBy c3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOworCQlpZiAoZG9fc2V0X3BkX3ZpcykKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwog Ci0JCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcg d2hhdCB3ZSBkaWQKLQkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHBhcmFtcy0+cmVsYXRp b24pKQorCQlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF9wZF92aXMpCisJCQlN YXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQlpZiAoZG9fc2V0X3ZtKQogCQl7Ci0JCQkvKgot CQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNo b3VsZCBiZSB0aGUKLQkJCSAqIG1vc3QgY29uc2VydmF0aXZlIG9mIGFsbCB0aGUgaG9yaXpvbnMg Y2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZQotCQkJICogcG9zc2libGUgbW9kaWZpY2F0aW9ucy4g IElmIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgdHVwbGVzLCBhbnkKLQkJCSAqIHRyYW5zYWN0aW9u cyBvbiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZQotCQkJ ICogbW9zdCByZWNlbnRseSByZW1vdmVkIHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgcHJ1bmUgd2ls bAotCQkJICogY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB0dXBsZXMsIGFu eSB0cmFuc2FjdGlvbnMKLQkJCSAqIG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFu IHRoZSB5b3VuZ2VzdCB0dXBsZSB0aGlzCi0JCQkgKiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBj b25mbGljdC4KLQkJCSAqLwotCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CisJCQlBc3Nl cnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAKLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93 cyhmcnpfY29uZmxpY3RfaG9yaXpvbiwgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJ CWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOwotCQkJZWxzZQotCQkJCWNvbmZs aWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkOworCQkJb2xkX3ZtYml0cyA9IHZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLAorCQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwg bmV3X3ZtYml0cywKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyYW1z LT5yZWxhdGlvbikpOworCQkJaWYgKG9sZF92bWJpdHMgPT0gbmV3X3ZtYml0cykKKwkJCXsKKwkJ CQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCS8qIFVuc2V0 IHNvIHdlIGRvbid0IGVtaXQgV0FMIHNpbmNlIG5vIGNoYW5nZSBvY2N1cnJlZCAqLworCQkJCWRv X3NldF92bSA9IGZhbHNlOworCQkJfQorCQl9CiAKKwkJLyoKKwkJICogRW1pdCBhIFdBTCBYTE9H X0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZCBJZiB3ZSB3ZXJlCisJCSAq IG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFuZCBpdCB0dXJucyBvdXQgaXQgd2FzIGFscmVhZHkgc2V0 LCB3ZSB3aWxsCisJCSAqIGhhdmUgdW5zZXQgZG9fc2V0X3ZtIGVhcmxpZXIuIEFzIHN1Y2gsIGNo ZWNrIGl0IGFnYWluIGJlZm9yZQorCQkgKiBlbWl0dGluZyB0aGUgcmVjb3JkLgorCQkgKi8KKwkJ aWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikgJiYKKwkJCShkb19wcnVuZSB8 fCBkb19mcmVlemUgfHwgZG9fc2V0X3ZtKSkKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo cGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBkb19zZXRfdm0gPyB2bWJ1ZmZl ciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IG5ld192bWJpdHMgOiAw LAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCi0JCQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+cmVh c29uLAorCQkJCQkJCQkJICB0cnVlLCAvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCSAgZG9f c2V0X3BkX3ZpcywKKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWFzb24sCiAJCQkJCQkJCQkgIHByc3Rh dGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUucmVkaXJlY3Rl ZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0 YXRlLm5kZWFkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5udW51c2Vk KTsKLQkJfQogCX0KIAogCUVORF9DUklUX1NFQ1RJT04oKTsKIAorCWlmIChkb19zZXRfdm0pCisJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkvKgorCSAqIER1 cmluZyBpdHMgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCisJICogaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwYWdl IGlzCisJICogYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uIFRoZSBsb2dpYyBoZXJlIGlzIHNp bWlsYXIuIEFmdGVyIGNvbXBsZXRpbmcKKwkgKiBwcnVuaW5nIGFuZCBmcmVlemluZywgdXNlIGFu IGFzc2VydGlvbiB0byB2ZXJpZnkgdGhhdCBvdXIgcmVzdWx0cworCSAqIHJlbWFpbiBjb25zaXN0 ZW50IHdpdGggaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkuCisJICovCisjaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlKQorCXsKKwkJVHJh bnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CisJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CisKKwkJ QXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJzdGF0ZS5jdXRv ZmZzKTsKKworCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9u LCBidWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJ CQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9s b2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsKKworCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09 IGRlYnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVi dWdfY3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0b2ZmID09IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkKTsKKwl9CisjZW5kaWYKKwogCS8qIENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3Ig Y2FsbGVyICovCiAJcHJlc3VsdC0+bmRlbGV0ZWQgPSBwcnN0YXRlLm5kZWxldGVkOwogCXByZXN1 bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFkOwogCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0 YXRlLm5mcm96ZW47CiAJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVz OwogCXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFk X3R1cGxlczsKLQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0J cHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3plbjsKIAlwcmVzdWx0LT5oYXN0 dXAgPSBwcnN0YXRlLmhhc3R1cDsKLQotCS8qCi0JICogRm9yIGNhbGxlcnMgcGxhbm5pbmcgdG8g dXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24KLQkgKiBmb3Ig dGhhdCByZWNvcmQgbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVy LCBpZiB0aGUKLQkgKiBwYWdlIGlzIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8g Y29uZmxpY3QgYW5kIHRoZQotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gc2hvdWxkIHJlbWFpbiBJ bnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMKLQkgKiB0aGUgY2FzZSB0aGF0IHdl IGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkCi0JICog aW5jbHVkZWQgdGhlIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHRoZSBjYWxsZXIgZG9lc24ndCBu ZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJvemVuKQotCQlwcmVzdWx0LT52bV9j b25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQlwcmVzdWx0 LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJ cHJlc3VsdC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9 IG9sZF92bWJpdHM7CiAKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9p dGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmls bGVkIGluICovCkBAIC0yMDU4LDYgKzIyNDYsNjQgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVh cFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogCXJldHVybiBucGxhbnM7CiB9CiAK Ky8qCisgKiBDYWxjdWxhdGUgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCisgKiByZWNvcmQuCisgKi8KK3N0YXRpYyBUcmFuc2Fj dGlvbklkCitnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBi b29sIGRvX3NldF92bSwKKwkJCQkgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsIFRy YW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJIFRyYW5zYWN0aW9uSWQgdmlz aWJpbGl0eV9jdXRvZmZfeGlkLCBib29sIGJsa19hbHJlYWR5X2F2LAorCQkJCSBib29sIHNldF9i bGtfYWxsX2Zyb3plbikKK3sKKworCS8qCisJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u IGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9zdAorCSAqIGNvbnNlcnZhdGl2 ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUgcG9zc2libGUK KwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFu eSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2Vz dCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkgKiB0dXBsZSB0aGlzIHJlY29y ZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZQor CSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xk ZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3 aWxsIGNvbmZsaWN0LgorCSAqLworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisKKwkvKgorCSAqIElmIHdlIGFyZSB1cGRhdGluZyB0aGUgVk0sIHRo ZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdCBhbHdheXMgdGhlCisJICogdmlzaWJpbGl0eSBj dXRvZmYgWElELgorCSAqCisJICogU2VwYXJhdGVseSwgaWYgd2UgYXJlIGZyZWV6aW5nIGFueSB0 dXBsZXMsIGFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuCisJICogdXNlIHRoZSB2aXNpYmlsaXR5 X2N1dG9mZl94aWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gaWYgdGhlIHBhZ2Ugd2lsbAorCSAq IGJlIGFsbC1mcm96ZW4uIFRoaXMgaXMgdHJ1ZSBldmVuIGlmIHRoZXJlIGFyZSBMUF9ERUFEIGxp bmUgcG9pbnRlcnMKKwkgKiBiZWNhdXNlIHdlIGlnbm9yZWQgdGhvc2Ugd2hlbiBtYWludGFpbmlu ZyB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLgorCSAqIFRoaXMgd2lsbCBoYXZlIGJlZW4gY2Fs Y3VsYXRlZCBlYXJsaWVyIGFzIHRoZSBmcnpfY29uZmxpY3RfaG9yaXpvbiB3aGVuCisJICogd2Ug ZGV0ZXJtaW5lZCB3ZSB3b3VsZCBmcmVlemUuCisJICovCisJaWYgKGRvX3NldF92bSkKKwkJY29u ZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWVsc2UgaWYgKGRvX2ZyZWV6ZSkK KwkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247CisKKwkvKgorCSAqIElmIHdl IGFyZSByZW1vdmluZyB0dXBsZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0aGFuIG91ciBzbyBmYXIK KwkgKiBjYWxjdWxhdGVkIGNvbmZsaWN0X3hpZCwgd2UgbXVzdCB1c2UgdGhpcyBhcyBvdXIgaG9y aXpvbi4KKwkgKi8KKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MobGF0ZXN0X3hpZF9yZW1vdmVk LCBjb25mbGljdF94aWQpKQorCQljb25mbGljdF94aWQgPSBsYXRlc3RfeGlkX3JlbW92ZWQ7CisK KwkvKgorCSAqIFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdl IGFyZSBub3QgcHJ1bmluZyBvcgorCSAqIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0 aW5nIGFuIGFscmVhZHkgYWxsLXZpc2libGUgcGFnZQorCSAqIGFsbC1mcm96ZW4gaW4gdGhlIFZN LiBJbiB0aGlzIGNhc2UsIGFsbCBvZiB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIG11c3QKKwkgKiBh bHJlYWR5IGJlIHZpc2libGUgdG8gYWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZSBzdGFuZGJ5Lgor CSAqLworCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQlkb19zZXRfdm0gJiYgYmxr X2FscmVhZHlfYXYgJiYgc2V0X2Jsa19hbGxfZnJvemVuKQorCQljb25mbGljdF94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKKworCXJldHVybiBjb25mbGljdF94aWQ7Cit9CisKIC8qCiAgKiBX cml0ZSBhbiBYTE9HX0hFQVAyX1BSVU5FKiBXQUwgcmVjb3JkCiAgKgpAQCAtMjA3OCwxNCArMjMy NCwyNCBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50 IG50dXBsZXMsCiAgKiByZXBsYXlpbmcgJ3VudXNlZCcgaXRlbXMgZGVwZW5kcyBvbiB3aGV0aGVy IHRoZXkgd2VyZSBhbGwgcHJldmlvdXNseSBtYXJrZWQKICAqIGFzIGRlYWQuCiAgKgorICogSWYg dGhlIFZNIGlzIGJlaW5nIHVwZGF0ZWQsIHZtZmxhZ3Mgd2lsbCBjb250YWluIHRoZSBiaXRzIHRv IHNldC4gSW4gdGhpcworICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVu IHVwZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCisgKiBzdGlsbCBiZSBwaW5uZWQg YW5kIGxvY2tlZC4KKyAqCisgKiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQg UERfQUxMX1ZJU0lCTEUgYW5kIHRodXMgc2hvdWxkIHVwZGF0ZQorICogdGhlIHBhZ2UgTFNOIHdo ZW4gY2hlY2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90 CisgKiBwcnVuZSBvciBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlLgorICoKICAqIE5vdGU6IFRo aXMgZnVuY3Rpb24gc2NyaWJibGVzIG9uIHRoZSAnZnJvemVuJyBhcnJheS4KICAqCiAgKiBOb3Rl OiBUaGlzIGlzIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIHNvIGNhcmVmdWwgd2hhdCB5 b3UgZG8gaGVyZS4KICAqLwogdm9pZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLCB1aW50 OCB2bWZsYWdzLAogCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCwKIAkJCQkJCSAg Ym9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkg IFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgSGVhcFR1cGxlRnJlZXplICpmcm96ZW4sIGlu dCBuZnJvemVuLAogCQkJCQkJICBPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQsIGludCBucmVkaXJl Y3RlZCwKQEAgLTIwOTUsNiArMjM1MSw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxfaGVhcF9wcnVuZSB4bHJlYzsKIAlY TG9nUmVjUHRyCXJlY3B0cjsKIAl1aW50OAkJaW5mbzsKKwl1aW50OAkJcmVnYnVmX2ZsYWdzOwog CiAJLyogVGhlIGZvbGxvd2luZyBsb2NhbCB2YXJpYWJsZXMgaG9sZCBkYXRhIHJlZ2lzdGVyZWQg aW4gdGhlIFdBTCByZWNvcmQ6ICovCiAJeGxocF9mcmVlemVfcGxhbiBwbGFuc1tNYXhIZWFwVHVw bGVzUGVyUGFnZV07CkBAIC0yMTAzLDggKzIzNjAsMjMgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bGhwX3BydW5lX2l0ZW1z IGRlYWRfaXRlbXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CiAJT2Zmc2V0TnVt YmVyIGZyel9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwlib29sCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CiAKIAl4bHJlYy5m bGFncyA9IDA7CisJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOworCisJQXNzZXJ0KCh2 bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKKworCS8qCisJ ICogV2UgY2FuIGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJlIG1h a2luZyB0byB0aGUgaGVhcAorCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBj aGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCisJICogTm90ZSB0aGF0IGlmIHdl IGV4cGxpY2l0bHkgc2tpcCBhbiBGUEksIHdlIG11c3Qgbm90IHNldCB0aGUgaGVhcCBwYWdlCisJ ICogTFNOIGxhdGVyLgorCSAqLworCWlmICghZG9fcHJ1bmUgJiYKKwkJbmZyb3plbiA9PSAwICYm CisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCXJlZ2J1 Zl9mbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkvKgogCSAqIFByZXBhcmUgZGF0YSBmb3Ig dGhlIGJ1ZmZlci4gIFRoZSBhcnJheXMgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUKQEAgLTIxMTIs NyArMjM4NCwxMSBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAogCSAqIHBhZ2UgaW1hZ2UsIHRoZSBhcnJheXMgY2FuIGJlIG9taXR0 ZWQuCiAJICovCiAJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1 ZmZlciwgUkVHQlVGX1NUQU5EQVJEKTsKKwlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBy ZWdidWZfZmxhZ3MpOworCisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp CisJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CisKIAlpZiAobmZyb3plbiA+ IDApCiAJewogCQlpbnQJCQlucGxhbnM7CkBAIC0yMTY5LDYgKzI0NDUsMTIgQEAgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBQ cmVwYXJlIHRoZSBtYWluIHhsX2hlYXBfcHJ1bmUgcmVjb3JkLiAgV2UgYWxyZWFkeSBzZXQgdGhl IFhMSFBfSEFTXyoKIAkgKiBmbGFnIGFib3ZlLgogCSAqLworCWlmICh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkKKwl7CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfVk1fQUxMX1ZJ U0lCTEU7CisJCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKQorCQkJeGxy ZWMuZmxhZ3MgfD0gWExIUF9WTV9BTExfRlJPWkVOOworCX0KIAlpZiAoUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbikpCiAJCXhscmVjLmZsYWdzIHw9IFhMSFBf SVNfQ0FUQUxPR19SRUw7CiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNvbmZsaWN0X3hpZCkp CkBAIC0yMjAxLDUgKzI0ODMsMjMgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl9CiAJcmVjcHRyID0gWExvZ0luc2VydChSTV9I RUFQMl9JRCwgaW5mbyk7CiAKLQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVj cHRyKTsKKwlpZiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwl7CisJCUFz c2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFn ZSh2bWJ1ZmZlciksIHJlY3B0cik7CisJfQorCisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIHBh Z2UgTFNOIGlmIHBydW5pbmcgb3IgZnJlZXppbmcuIElmIHdlIGFyZSBvbmx5CisJICogdXBkYXRp bmcgUERfQUxMX1ZJU0lCTEUsIHRob3VnaCwgd2UgY2FuIHNraXAgZG9pbmcgdGhpcyB1bmxlc3MK KwkgKiB3YWxfbG9nX2hpbnRzL2NoZWNrc3VtcyBhcmUgZW5hYmxlZC4gVG9ybiBwYWdlcyBhcmUg cG9zc2libGUgaWYgd2UKKwkgKiB1cGRhdGUgUERfQUxMX1ZJU0lCTEUgd2l0aG91dCBidW1waW5n IHRoZSBMU04sIGJ1dCB0aGlzIGlzIGRlZW1lZCBva2F5CisJICogZm9yIHBhZ2UgaGludCB1cGRh dGVzLgorCSAqLworCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fAorCQkoc2V0X3BkX2Fs bF92aXMgJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwl7CisJCUFzc2VydChCdWZmZXJJc0Rp cnR5KGJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRy KTsKKwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYWVkMWY4ZTEx MzkuLjM5NTI2YmY2MDhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0x OTU4LDYgKzE5NTgsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCXBh cmFtcy5yZWFzb24gPSBQUlVORV9WQUNVVU1fU0NBTjsKIAlwYXJhbXMuY3V0b2ZmcyA9ICZ2YWNy ZWwtPmN1dG9mZnM7CiAJcGFyYW1zLnZpc3Rlc3QgPSB2YWNyZWwtPnZpc3Rlc3Q7CisJcGFyYW1z LnZtYnVmZmVyID0gdm1idWZmZXI7CisJcGFyYW1zLmJsa19rbm93bl9hdiA9IGFsbF92aXNpYmxl X2FjY29yZGluZ190b192bTsKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRhdGUgY2hhaW5z IGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KQEAgLTE5NzQsNyAr MTk3Niw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVz LiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlz CiAJICogYWxsLXZpc2libGUuCiAJICovCi0JcGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJV TkVfRlJFRVpFOworCXBhcmFtcy5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSB8IEhF QVBfUEFHRV9QUlVORV9VUERBVEVfVklTOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCiAJ CXBhcmFtcy5vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1c7CiAKQEAg LTE5OTcsMzMgKzE5OTksNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAog CQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVfcGFnZXMrKzsKIAl9CiAKLQkvKgotCSAqIFZBQ1VV TSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQg cGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCi0JICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9u IG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cgdGhhdAotCSAqIHdlJ3ZlIGZp bmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3Rh bAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFu IGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JaWYgKHByZXN1 bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9v bAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlBc3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0g MCk7Ci0KLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwK LQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVu LAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0 KGZhbHNlKTsKLQotCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96 ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAot CQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbik7Ci0JfQot I2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRldGFpbHMgb2YgdGhlIExQX0RFQUQgaXRlbXMg ZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8KQEAgLTIwNTcsMTY4ICsyMDMyLDI2IEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVB RCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+ IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRl bXMpKTsKLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxl KTsKLQogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9u IGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9u ZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96 ZW4gdmFyaWFibGVzCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBjb3VudCB3aGV0 aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2libGUgYW5kLCBw b3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAoIWFsbF92aXNpYmxlX2FjY29yZGlu Z190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1i aXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCXVpbnQ4CQlvbGRf dm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0J CWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQkvKgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUg dGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUg dGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAo aWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNzLCBzZXQgYm90 aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoKLQkJICogTkI6 IElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2libGUgYnV0IHRoZSBWTSBiaXQgaXMgbm90IHNl dCwgd2UKLQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLiAgSG93ZXZlciwg aWYgY2hlY2tzdW1zIGFyZQotCQkgKiBlbmFibGVkLCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0 aGF0IHRoZSBoZWFwIHBhZ2UgaXMgZGlydGllZAotCQkgKiBiZWZvcmUgcGFzc2luZyBpdCB0byB2 aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0IG1heSBiZSBsb2dnZWQuCi0JCSAqIEdpdmVu IHRoYXQgdGhpcyBzaXR1YXRpb24gc2hvdWxkIG9ubHkgaGFwcGVuIGluIHJhcmUgY2FzZXMgYWZ0 ZXIgYQotCQkgKiBjcmFzaCwgaXQgaXMgbm90IHdvcnRoIG9wdGltaXppbmcuCi0JCSAqLwotCQlQ YWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCW9sZF92 bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJ CQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQu dm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSAgIGZsYWdzKTsKLQotCQkvKgotCQkgKiBJ ZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96 ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCi0J CSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAw KQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQlpZiAocHJlc3Vs dC5hbGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3Bh Z2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJfQotCQllbHNlIGlm ICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgotCQkJCSBw cmVzdWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJ aWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDAp CiAJCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJdmFjcmVsLT52bV9u ZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJ CX0KIAl9Ci0KLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBt YXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMg Y2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVh cmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11 c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0 aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdf dG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2aXNpYmlsaXR5bWFwX2dl dF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9IDApCi0JewotCQllcmVw b3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJ IGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1h cCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+ cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwg Ymxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQot Ci0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNv IGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8g bm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxF IGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3Zl cyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMK LQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVu bmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBp dCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2 aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExf VklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUg TFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93 ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlz QWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBf REVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBh Z2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQotCQlQYWdlQ2xlYXJB bGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJdmlzaWJpbGl0eW1h cF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlN QVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBp cyBhbGwtZnJvemVuIGJ1dCBub3QgbWFya2VkIGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMg YWxsLWZyb3plbi4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0g JiYgcHJlc3VsdC5hbGxfZnJvemVuICYmCi0JCQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWws IGJsa25vLCAmdm1idWZmZXIpKQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7 Ci0KLQkJLyoKLQkJICogQXZvaWQgcmVseWluZyBvbiBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JCSAqIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0 IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQgaGF2ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZl biB3aGVuIGFsbF92aXNpYmxlIGlzIHNldAotCQkgKi8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxl KHBhZ2UpKQotCQl7Ci0JCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJE aXJ0eShidWYpOwotCQl9Ci0KLQkJLyoKLQkJICogU2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFu ZCBhbGwtdmlzaWJsZSkgaW4gdGhlIFZNLgotCQkgKgotCQkgKiBXZSBjYW4gcGFzcyBJbnZhbGlk VHJhbnNhY3Rpb25JZCBhcyBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYQotCQkgKiBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURP Ci0JCSAqIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkJ ICovCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9o b3Jpem9uKSk7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwg Ymxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAg dm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1B UF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwot Ci0JCS8qCi0JCSAqIFRoZSBwYWdlIHdhcyBsaWtlbHkgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUg aW4gdGhlIFZNLiBIb3dldmVyLAotCQkgKiB0aGVyZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGl0 IHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVuCi0JCSAqIHNldHRpbmcgYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0aGUgdmlzaWJpbGl0eQotCQkgKiBkdXJpbmcg cHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBvbGRfdm1iaXRzIGFueXdheSB0bwot CQkgKiBlbnN1cmUgdGhlIHZpc2liaWxpdHkgbWFwIGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcg YXJlIGFjY3VyYXRlLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysr OwotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdl X2Zyb3plbiA9IHRydWU7Ci0JCX0KLQotCQkvKgotCQkgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhh dCB0aGUgcGFnZSB3YXMgbm90IHNldCBhbGwtZnJvemVuIGluIHRoZSBWTQotCQkgKiBhYm92ZSwg c28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZSB2YWx1ZSBvZiBvbGRfdm1iaXRzLgotCQkgKi8K LQkJZWxzZQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9w YWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KKwkJQXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJdmFjcmVsLT52bV9uZXdfZnJvemVu X3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJfQogCiAJcmV0dXJuIHByZXN1 bHQubmRlbGV0ZWQ7CkBAIC0yODkyLDggKzI3MjUsMTEgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdl KExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJ aWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVsLT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkgIEludmFsaWRUcmFuc2Fj dGlvbklkLAorCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCisJCQkJCQkJ CSAgMCwJLyogdm1mbGFncyAqLworCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBj b25mbGljdF94aWQgKi8KIAkJCQkJCQkJICBmYWxzZSwJLyogbm8gY2xlYW51cCBsb2NrIHJlcXVp cmVkICovCisJCQkJCQkJCSAgZmFsc2UsCS8qIHNldF9wZF9hbGxfdmlzICovCiAJCQkJCQkJCSAg UFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAgTlVMTCwgMCwJLyogZnJvemVuICovCiAJ CQkJCQkJCSAgTlVMTCwgMCwJLyogcmVkaXJlY3RlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYwppbmRleCBiNDhkN2RjMWQyNC4uMWNiNDRjYTMyZDMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0xMDMsNyArMTAzLDcgQEAgcGxhbl9lbGVt X2Rlc2MoU3RyaW5nSW5mbyBidWYsIHZvaWQgKnBsYW4sIHZvaWQgKmRhdGEpCiAgKiBjb2RlLCB0 aGUgbGF0dGVyIG9mIHdoaWNoIGlzIHVzZWQgaW4gZnJvbnRlbmQgKHBnX3dhbGR1bXApIGNvZGUu CiAgKi8KIHZvaWQKLWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIg KmN1cnNvciwgdWludDggZmxhZ3MsCitoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2Zy ZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCSAgIGludCAqbnBsYW5z LCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipm cnpfb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAq KnJlZGlyZWN0ZWQsCkBAIC0yODcsNiArMjg3LDE1IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBi dWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwg aXNDYXRhbG9nUmVsOiAlYyIsCiAJCQkJCQkgeGxyZWMtPmZsYWdzICYgWExIUF9JU19DQVRBTE9H X1JFTCA/ICdUJyA6ICdGJyk7CiAKKwkJaWYgKHhscmVjLT5mbGFncyAmIFhMSFBfVk1fQUxMX1ZJ U0lCTEUpCisJCXsKKwkJCXVpbnQ4CQl2bWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJM RTsKKworCQkJaWYgKHhscmVjLT5mbGFncyAmIFhMSFBfVk1fQUxMX0ZST1pFTikKKwkJCQl2bWZs YWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiLCB2bV9mbGFnczogMHglMDJYIiwgdm1mbGFncyk7CisJCX0KKwogCQlpZiAoWExvZ1JlY0hh c0Jsb2NrRGF0YShyZWNvcmQsIDApKQogCQl7CiAJCQlTaXplCQlkYXRhbGVuOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCmluZGV4IGVhNjdmYjgzZmJlLi4yZGUzOWJhMGNkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt NDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcgYml0cyBmb3IgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJ KDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQorI2Rl ZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUwkJCSgxIDw8IDIpCiAKIHR5cGVkZWYgc3Ry dWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHR5cGVkZWYgc3RydWN0 IEdsb2JhbFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwpAQCAtMjM4LDYgKzIzOSwxNiBAQCB0eXBl ZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCVJlbGF0aW9uCXJlbGF0aW9uOwkJLyogcmVs YXRpb24gY29udGFpbmluZyBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAJQnVmZmVyCQlidWZmZXI7 CQkJLyogYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCisJLyoKKwkgKgorCSAqIHZtYnVmZmVyIGlz IHRoZSBidWZmZXIgdGhhdCBtdXN0IGFscmVhZHkgY29udGFpbiBjb250YWluIHRoZSByZXF1aXJl ZAorCSAqIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcCBpZiB3ZSBhcmUgdG8gdXBkYXRlIGl0 LiBibGtfa25vd25fYXYgaXMgdGhlCisJICogdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAg YmxvY2sgYXMgb2YgdGhlIGxhc3QgY2FsbCB0bworCSAqIGZpbmRfbmV4dF91bnNraXBwYWJsZV9i bG9jaygpLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisJYm9vbAkJYmxrX2tub3duX2F2Owor CiAJLyoKIAkgKiBUaGUgcmVhc29uIHBydW5pbmcgd2FzIHBlcmZvcm1lZC4gIEl0IGlzIHVzZWQg dG8gc2V0IHRoZSBXQUwgcmVjb3JkCiAJICogb3Bjb2RlIHdoaWNoIGlzIHVzZWQgZm9yIGRlYnVn Z2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMuCkBAIC0yNTAsOCArMjYxLDkgQEAgdHlwZWRlZiBz dHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKiBNQVJLX1VOVVNFRF9OT1cgaW5kaWNhdGVzIHRo YXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0IExQX1VOVVNFRCBkdXJpbmcKIAkgKiBwcnVuaW5nLgog CSAqCi0JICogRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVz LCBhbmQgd2lsbCByZXR1cm4KLQkgKiAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3Mg dG8gdGhlIGNhbGxlci4KKwkgKiBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZy ZWV6ZSB0dXBsZXMKKwkgKgorCSAqIFVQREFURV9WSVMgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBz ZXQgdGhlIHBhZ2UncyBzdGF0dXMgaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlvbnM7CiAK QEAgLTI4NCwxOSArMjk2LDE1IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJ aW50CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgotCSAq IGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSwgYWZ0 ZXIgcHJ1bmluZy4KLQkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4 bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2Ug aXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQK LQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCks IGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiBvbGRfdm1iaXRzIGFyZSB0aGUgc3Rh dGUgb2YgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGJpdHMgaW4gdGhlCisJICogdmlz aWJpbGl0eSBtYXAgYmVmb3JlIHVwZGF0aW5nIGl0IGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWlu Zy4KKwkgKiBuZXdfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhvc2UgYml0cyBhZnRlciBwaGFz ZSBJIG9mIHZhY3V1bWluZy4KIAkgKgotCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVB UF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KKwkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYg dGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIG9wdGlvbiBpcyBzZXQgYW5kCisJICogd2Ug aGF2ZSBhdHRlbXB0ZWQgdG8gdXBkYXRlIHRoZSBWTS4KIAkgKi8KLQlib29sCQlhbGxfdmlzaWJs ZTsKLQlib29sCQlhbGxfZnJvemVuOwotCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpv bjsKKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3ZtYml0czsKIAogCS8qCiAJICog V2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhp cyBpcyBzZXQgdG8KQEAgLTQyMCw4ICs0MjgsMTAgQEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3By dW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJ CQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGludCBudW51c2VkKTsKIGV4dGVybiB2b2lkIGhl YXBfZ2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyICpyb290X29mZnNldHMp OwogZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZs YWdzLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAg Ym9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJ CQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAgSGVhcFR1cGxlRnJlZXplICpm cm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQs IGludCBucmVkaXJlY3RlZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZDRjMDYyNWI2 MzIuLjE2YzJiMmUzYzljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ5LDcgKzI0 OSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdXBkYXRlCiAgKiBNYWluIGRhdGEgc2VjdGlv bjoKICAqCiAgKgl4bF9oZWFwX3BydW5lCi0gKgkJdWludDgJCQkJZmxhZ3MKKyAqCQl1aW50MTYJ CQkJZmxhZ3MKICAqCVRyYW5zYWN0aW9uSWQJCQlzbmFwc2hvdF9jb25mbGljdF9ob3Jpem9uCiAg KgogICogQmxvY2sgMCBkYXRhIHNlY3Rpb246CkBAIC0yODQsNyArMjg0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQog ewotCXVpbnQ4CQlmbGFnczsKKwl1aW50MTYJCWZsYWdzOwogCiAJLyoKIAkgKiBJZiBYTEhQX0hB U19DT05GTElDVF9IT1JJWk9OIGlzIHNldCwgdGhlIGNvbmZsaWN0IGhvcml6b24gWElEIGZvbGxv d3MsCkBAIC0yOTIsNyArMjkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCSAq LwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2Yo eGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKKyNkZWZpbmUgU2l6ZU9mSGVh cFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2KSkK IAogLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgKi8KICNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQpA QCAtMzMwLDYgKzMzMCwxNSBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAjZGVmaW5l CQlYTEhQX0hBU19ERUFEX0lURU1TCSAgICAgICAgKDEgPDwgNikKICNkZWZpbmUJCVhMSFBfSEFT X05PV19VTlVTRURfSVRFTVMgICAoMSA8PCA3KQogCisvKgorICogVGhlIHhsX2hlYXBfcHJ1bmUg cmVjb3JkJ3MgZmxhZ3MgbWF5IGFsc28gY29udGFpbiB3aGljaCBWTSBiaXRzIHRvIHNldC4KKyAq IHhsX2hlYXBfcHJ1bmUgc2hvdWxkIGFsd2F5cyB1c2UgdGhlIFhMSFBfVk1fQUxMX1ZJU0lCTEUg YW5kCisgKiBYTEhQX1ZNX0FMTF9GUk9aRU4gZmxhZ3MgYW5kIHRyYW5zbGF0ZSB0aGVtIHRvIHRo ZWlyIHZpc2liaWxpdHltYXBkZWZzLmgKKyAqIGVxdWl2YWxlbnRzLCBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFIGFuZCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4uCisgKi8KKyNkZWZpbmUJCVhM SFBfVk1fQUxMX1ZJU0lCTEUJCQkoMSA8PCA4KQorI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVO CQkJKDEgPDwgOSkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhvdyB0byBm cmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwogICogKGFwcGVhcnMgaW4g eGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQpCkBAIC00OTcsNyAr NTA2LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBoZWFwX2J1ZmZlciwKIAkJCQkJCQkJICAgdWludDggdm1mbGFncyk7CiAKIC8qIGlu IGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5k IGNvZGUgKi8KLWV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJl ZXplKGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3MsCitleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVz ZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJ CQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJ CQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGlu dCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCi0tIAoyLjQzLjAKCg== --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v16-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojde6 RnJvbSA5NWQ5NGVlOTkxZWExNjNiNGI3ODYxYTE5M2IzYTFhMzQ5N2RlNzNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU0OjM4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDcvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSB2YWN1dW0g cGhhc2UgSUlJCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZCBmb3IgZWFjaCBwYWdlCnRoYXQgYmVjb21lcyBhbGwtdmlzaWJsZSBpbiB2YWN1 dW0ncyB0aGlyZCBwaGFzZSwgcmVjb3JkIHRoZQp2aXNpYmlsaXR5IG1hcCB1cGRhdGUgaW4gdGhl IGFscmVhZHkgZW1pdHRlZApYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQIHJlY29yZC4K ClZpc2liaWxpdHkgY2hlY2tzIGFyZSBub3cgcGVyZm9ybWVkIGJlZm9yZSBtYXJraW5nIGRlYWQg aXRlbXMgdW51c2VkLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGUgaGVhcCBwYWdlIGlzIGhlbGQg dW5kZXIgZXhjbHVzaXZlIGxvY2sgZm9yIHRoZQplbnRpcmUgb3BlcmF0aW9uLgoKVGhpcyByZWR1 Y2VzIHRoZSBudW1iZXIgb2YgV0FMIHJlY29yZHMgZ2VuZXJhdGVkIGJ5IFZBQ1VVTSBwaGFzZSBJ SUkgYnkKdXAgdG8gNTAlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2Vt YW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNj TU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgMTc0ICsrKysrKysrKysrKysrKysrKystLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzk1MjZiZjYwOGYuLmNmMWMy ZWZjOTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjMsNiArNDYz LDEzIEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxv Y2tOdW1iZXIgYmxrbm8sIE9mZnNldE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMp Owogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CitzdGF0aWMg Ym9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNl dHMsCisJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVy ICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4 ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVs U3RhdGUgKnZhY3JlbCwKQEAgLTI2ODUsOCArMjY5MiwxMCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAlPZmZzZXROdW1iZXIgdW51c2VkW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlpbnQJCQludW51 c2VkID0gMDsKIAlUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlUcmFuc2Fj dGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCWJvb2wJCWFsbF9m cm96ZW47CiAJTFZTYXZlZEVyckluZm8gc2F2ZWRfZXJyX2luZm87CisJdWludDgJCXZtZmxhZ3Mg PSAwOwogCiAJQXNzZXJ0KHZhY3JlbC0+ZG9faW5kZXhfdmFjdXVtaW5nKTsKIApAQCAtMjY5Nyw2 ICsyNzA2LDMxIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCSBWQUNVVU1fRVJSQ0JfUEhB U0VfVkFDVVVNX0hFQVAsIGJsa25vLAogCQkJCQkJCSBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAor CS8qCisJICogQmVmb3JlIG1hcmtpbmcgZGVhZCBpdGVtcyB1bnVzZWQsIGNoZWNrIHdoZXRoZXIg dGhlIHBhZ2Ugd2lsbCBiZWNvbWUKKwkgKiBhbGwtdmlzaWJsZSBvbmNlIHRoYXQgY2hhbmdlIGlz IGFwcGxpZWQuIFRoaXMgbGV0cyB1cyByZWFwIHRoZSB0dXBsZXMKKwkgKiBhbmQgbWFyayB0aGUg cGFnZSBhbGwtdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgY3JpdGljYWwgc2VjdGlvbiwKKwkgKiBl bmFibGluZyBib3RoIGNoYW5nZXMgdG8gYmUgZW1pdHRlZCBpbiBhIHNpbmdsZSBXQUwgcmVjb3Jk LiBTaW5jZSB0aGUKKwkgKiB2aXNpYmlsaXR5IGNoZWNrcyBtYXkgcGVyZm9ybSBJL08gYW5kIGFs bG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0IGJlCisJICogZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNh bCBzZWN0aW9uLgorCSAqLworCWlmIChoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUodmFj cmVsLT5yZWwsIGJ1ZmZlciwKKwkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWlu LAorCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAorCQkJCQkJCQkJICAgJmFs bF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgICAmdmFjcmVsLT5v ZmZudW0pKQorCXsKKwkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlp ZiAoYWxsX2Zyb3plbikKKwkJeworCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU47CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2ZmX3hp ZCkpOworCQl9CisKKwkJLyogVGFrZSB0aGUgbG9jayBvbiB0aGUgdm1idWZmZXIgYmVmb3JlIGVu dGVyaW5nIGEgY3JpdGljYWwgc2VjdGlvbiAqLworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpOworCX0KKwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudW1fb2Zmc2V0czsgaSsrKQpAQCAtMjcxNiw2ICsyNzUwLDIxIEBA IGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJs a25vLCBCdWZmZXIgYnVmZmVyLAogCS8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVy IGFycmF5IG5vdyAqLwogCVBhZ2VUcnVuY2F0ZUxpbmVQb2ludGVyQXJyYXkocGFnZSk7CiAKKwkv KgorCSAqIFRoZSBwYWdlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBoYWQgZGVhZCBsaW5lIHBvaW50 ZXJzLCBzbworCSAqIFBEX0FMTF9WSVNJQkxFIGNhbm5vdCBiZSBhbHJlYWR5IHNldC4gVGhlcmVm b3JlLCB3aGVuZXZlciB3ZSBzZXQgdGhlIFZNCisJICogYml0LCB3ZSBtdXN0IGFsc28gc2V0IFBE X0FMTF9WSVNJQkxFLiBUaGUgaGVhcCBwYWdlIGxvY2sgaXMgaGVsZCB3aGlsZQorCSAqIHVwZGF0 aW5nIHRoZSBWTSB0byBlbnN1cmUgY29uc2lzdGVuY3kuCisJICovCisJaWYgKCh2bWZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKQorCXsKKwkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7CisJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJIHZtYnVm ZmVyLCB2bWZsYWdzLAorCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVsLT5y ZWwpKTsKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCX0KKwogCS8q CiAJICogTWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdlIHdyaXRlIFdBTC4KIAkgKi8KQEAgLTI3 MjUsMTEgKzI3NzQsMTAgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3Jl bCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJaWYgKFJlbGF0aW9uTmVlZHNX QUwodmFjcmVsLT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNyZWwt PnJlbCwgYnVmZmVyLAotCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0J CQkJCQkJCSAgMCwJLyogdm1mbGFncyAqLwotCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklk LCAvKiBjb25mbGljdF94aWQgKi8KKwkJCQkJCQkJICB2bWJ1ZmZlciwgdm1mbGFncywKKwkJCQkJ CQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayBy ZXF1aXJlZCAqLwotCQkJCQkJCQkgIGZhbHNlLAkvKiBzZXRfcGRfYWxsX3ZpcyAqLworCQkJCQkJ CQkgICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwLAogCQkJCQkJCQkg IFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwog CQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0ZWQgKi8KQEAgLTI3MzcsNDEgKzI3ODUsMTIg QEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdW51c2VkLCBudW51c2VkKTsKIAl9CiAK LQkvKgotCSAqIEVuZCBjcml0aWNhbCBzZWN0aW9uLCBzbyB3ZSBzYWZlbHkgY2FuIGRvIHZpc2li aWxpdHkgdGVzdHMgKHdoaWNoCi0JICogcG9zc2libHkgbmVlZCB0byBwZXJmb3JtIElPIGFuZCBh bGxvY2F0ZSBtZW1vcnkhKS4gSWYgd2UgY3Jhc2ggbm93IHRoZQotCSAqIHBhZ2UgKGluY2x1ZGlu ZyB0aGUgY29ycmVzcG9uZGluZyB2bSBiaXQpIG1pZ2h0IG5vdCBiZSBtYXJrZWQgYWxsCi0JICog dmlzaWJsZSwgYnV0IHRoYXQncyBmaW5lLiBBIGxhdGVyIHZhY3V1bSB3aWxsIGZpeCB0aGF0Lgot CSAqLwogCUVORF9DUklUX1NFQ1RJT04oKTsKIAotCS8qCi0JICogTm93IHRoYXQgd2UgaGF2ZSBy ZW1vdmVkIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UsIG9uY2UgYWdhaW4KLQkgKiBj aGVjayBpZiB0aGUgcGFnZSBoYXMgYmVjb21lIGFsbC12aXNpYmxlLiAgVGhlIHBhZ2UgaXMgYWxy ZWFkeSBtYXJrZWQKLQkgKiBkaXJ0eSwgZXhjbHVzaXZlbHkgbG9ja2VkLCBhbmQsIGlmIG5lZWRl ZCwgYSBmdWxsIHBhZ2UgaW1hZ2UgaGFzIGJlZW4KLQkgKiBlbWl0dGVkLgotCSAqLwotCUFzc2Vy dCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JaWYgKGhlYXBfcGFnZV9pc19hbGxfdmlzaWJs ZSh2YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKLQkJCQkJ CQkJICZhbGxfZnJvemVuLAotCQkJCQkJCQkgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJ CQkJICZ2YWNyZWwtPm9mZm51bSkpCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgIT0gMCkKIAl7Ci0JCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEU7Ci0KLQkJaWYgKGFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQodmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlz aWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFs aWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZlciwgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAot CQkJCQkJICBmbGFncyk7Ci0KIAkJLyogQ291bnQgdGhlIG5ld2x5IHNldCBWTSBwYWdlIGZvciBs b2dnaW5nICovCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKIAkJaWYgKGFsbF9mcm96ZW4pCiAJCQl2 YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwpAQCAtMzQ0MCwxOCArMzQ1OSw4 IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiB9CiAKIC8qCi0gKiBD aGVjayBpZiBldmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpcyB2aXNpYmxlIHRvIGFsbCBj dXJyZW50IGFuZCBmdXR1cmUKLSAqIHRyYW5zYWN0aW9ucy4gQWxzbyByZXR1cm4gdGhlIHZpc2li aWxpdHlfY3V0b2ZmX3hpZCB3aGljaCBpcyB0aGUgaGlnaGVzdAotICogeG1pbiBhbW9uZ3N0IHRo ZSB2aXNpYmxlIHR1cGxlcy4gIFNldCAqYWxsX2Zyb3plbiB0byB0cnVlIGlmIGV2ZXJ5IHR1cGxl Ci0gKiBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgotICoKLSAqICpsb2dnaW5nX29mZm51bSB3aWxs IGhhdmUgdGhlIE9mZnNldE51bWJlciBvZiB0aGUgY3VycmVudCB0dXBsZSBiZWluZwotICogcHJv Y2Vzc2VkIGZvciB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCi0gKgotICogVGhpcyBp cyBzaW1pbGFyIGxvZ2ljIHRvIHRoYXQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIElmCi0gKiB5b3UgY2hhbmdlIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0 IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUKLSAqIHRoYXQgYW4gYXNzZXJ0aW9uIGNh bGxzIHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlCi0g KiB0byBhdm9pZCBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCisgKiBXcmFwcGVy IGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBm b3IKKyAqIGNhbGxlcnMgdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4KICAqLwog Ym9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK QEAgLTM0NjAsMTUgKzM0NjksNzQgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9m Zl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKIHsKKworCXJldHVy biBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsCisJCQkJCQkJCQkJICBP bGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIGFsbF9mcm96ZW4s CisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICBsb2dnaW5n X29mZm51bSk7Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBhZ2UgaW4gYnVm IGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKKyAqIHR1cGxlcyByZWZlcmVuY2Vk IGluIHRoZSBkZWFkb2Zmc2V0cyBhcnJheS4KKyAqCisgKiBUaGUgdmlzaWJpbGl0eSBjaGVja3Mg bWF5IHBlcmZvcm0gSU8gYW5kIGFsbG9jYXRlIG1lbW9yeSBzbyB0aGV5IG11c3Qgbm90CisgKiBi ZSBkb25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IHZh Y3V1bSB0byBkZXRlcm1pbmUKKyAqIGlmIHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgb25j ZSBpdCByZWFwcyBrbm93biBkZWFkIHR1cGxlcy4gVGhhdCB3YXkKKyAqIGl0IGNhbiBkbyBib3Ro IGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIGVtaXQgYSBzaW5nbGUgV0FMIHJlY29y ZC4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUgb3RoZXIg dGhhbiB0aGUgcHJvdmlkZWQKKyAqIGRlYWRvZmZzZXRzIGFuZCBmYWxzZSBvdGhlcndpc2UuCisg KgorICogT2xkZXN0WG1pbiBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICoKKyAq IE91dHB1dCBwYXJhbWV0ZXJzOgorICoKKyAqICAtICphbGxfZnJvemVuOiB0cnVlIGlmIGV2ZXJ5 IHR1cGxlIG9uIHRoZSBwYWdlIGlzIGZyb3plbgorICogIC0gKnZpc2liaWxpdHlfY3V0b2ZmX3hp ZDogbmV3ZXN0IHhtaW47IHZhbGlkIG9ubHkgaWYgcGFnZSBpcyBhbGwtdmlzaWJsZQorICogIC0g KmxvZ2dpbmdfb2ZmbnVtOiBPZmZzZXROdW1iZXIgb2YgY3VycmVudCB0dXBsZSBiZWluZyBwcm9j ZXNzZWQ7CisgKiAgICAgdXNlZCBieSB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCisg KgorICogQ2FsbGVycyBsb29raW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlzIGFscmVhZHkg YWxsLXZpc2libGUgY2FuIGNhbGwKKyAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpLgorICoK KyAqIFRoaXMgbG9naWMgaXMgY2xvc2VseSByZWxhdGVkIHRvIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoKS4KKyAqIElmIHlvdSBtb2RpZnkgdGhpcyBmdW5jdGlvbiwgZW5z dXJlIGNvbnNpc3RlbmN5IHdpdGggdGhhdCBjb2RlLiBBbgorICogYXNzZXJ0aW9uIGNyb3NzLWNo ZWNrcyB0aGF0IGJvdGggcmVtYWluIGluIGFncmVlbWVudC4gRG8gbm90IGludHJvZHVjZSBuZXcK KyAqIHNpZGUtZWZmZWN0cy4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJICAgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAorCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJ CQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKKwkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAor CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQorewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGJ1Zik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1Zik7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAkJCQltYXhvZmY7CiAJYm9vbAkJYWxsX3Zp c2libGUgPSB0cnVlOworCWludAkJCW1hdGNoZWRfZGVhZF9jb3VudCA9IDA7CiAKIAkqdmlzaWJp bGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJKmFsbF9mcm96ZW4gPSB0 cnVlOwogCisJQXNzZXJ0KG5kZWFkb2Zmc2V0cyA9PSAwIHx8IGRlYWRvZmZzZXRzKTsKKworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiBDb25maXJtIGlucHV0IGRlYWRvZmZzZXRzW10g aXMgc3RyaWN0bHkgc29ydGVkICovCisJaWYgKG5kZWFkb2Zmc2V0cyA+IDEpCisJeworCQlmb3Ig KGludCBpID0gMTsgaSA8IG5kZWFkb2Zmc2V0czsgaSsrKQorCQkJQXNzZXJ0KGRlYWRvZmZzZXRz W2kgLSAxXSA8IGRlYWRvZmZzZXRzW2ldKTsKKwl9CisjZW5kaWYKKwogCW1heG9mZiA9IFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CiAJZm9yIChvZmZudW0gPSBGaXJzdE9mZnNldE51bWJl cjsKIAkJIG9mZm51bSA8PSBtYXhvZmYgJiYgYWxsX3Zpc2libGU7CkBAIC0zNDk2LDkgKzM1NjQs MTUgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJICovCiAJCWlmIChJdGVtSWRJc0RlYWQoaXRlbWlkKSkKIAkJewotCQkJYWxsX3Zpc2libGUg PSBmYWxzZTsKLQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQlicmVhazsKKwkJCWlmICghZGVh ZG9mZnNldHMgfHwKKwkJCQltYXRjaGVkX2RlYWRfY291bnQgPj0gbmRlYWRvZmZzZXRzIHx8CisJ CQkJZGVhZG9mZnNldHNbbWF0Y2hlZF9kZWFkX2NvdW50XSAhPSBvZmZudW0pCisJCQl7CisJCQkJ KmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQkJ bWF0Y2hlZF9kZWFkX2NvdW50Kys7CisJCQljb250aW51ZTsKIAkJfQogCiAJCUFzc2VydChJdGVt SWRJc05vcm1hbChpdGVtaWQpKTsKLS0gCjIuNDMuMAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v16-0008-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdg7 RnJvbSAzZTc5ZTg0OTMwYmExMTBhMGRiZjRhYmU2YjNjODRmM2MwMjFjNzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDgvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCBjZjFjMmVmYzk5OS4uY2Y5ZGU0MGZmM2MgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzcsOSArMTg3NywxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODk2LDEzICsxODk5LDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZSh2YWNyZWwtPnJlbCkpOworCisJCQkvKgorCQkJICogRW1pdCBXQUwgZm9yIHNl dHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKKwkJCSAqIHNldHRpbmcg dGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJ CQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJ CSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCQkgIEludmFsaWRU cmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8KKwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBj bGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIHRydWUsIC8qIHNldF9wZF9hbGxfdmlzICovCisJ CQkJCQkJCQkJICBQUlVORV9WQUNVVU1fU0NBTiwJLyogcmVhc29uICovCisJCQkJCQkJCQkJICBO VUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwKTsKKwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCisJCQlMb2NrQnVm ZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCiAJCQkvKiBDb3VudCB0aGUgbmV3 bHkgYWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLwogCQkJdmFjcmVsLT52bV9uZXdfdmlz aWJsZV9wYWdlcysrOwogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsK LS0gCjIuNDMuMAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v16-0009-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdh8 RnJvbSBkMzI0NTFhY2U1M2Q5N2U4ZTExZGViMTJjODc2NTVjNmU5MzdlZTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMDkvMTRdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEwICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDE1ICstLQogc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICB8ICAgOSAtLQogc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgICAgICAgICB8ICAgMSAtCiAxMyBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNl cnRpb25zKCspLCAzNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9idWZtYXNrLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YwppbmRleCBiYjI2MGNmZmE2OC4uNWYwN2YxNzk0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v YnVmbWFzay5jCkBAIC01Niw4ICs1Niw4IEBAIG1hc2tfcGFnZV9oaW50X2JpdHMoUGFnZSBwYWdl KQogCiAJLyoKIAkgKiBEdXJpbmcgcmVwbGF5LCBpZiB0aGUgcGFnZSBMU04gaGFzIGFkdmFuY2Vk IHBhc3Qgb3VyIFhMT0cgcmVjb3JkJ3MgTFNOLAotCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2Ug YWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfdmlzaWJsZSgpIGZvcgotCSAqIGRldGFpbHMuCisJ ICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ19wcnVu ZV9hbmRfZnJlZXplKCkKKwkgKiBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCVBhZ2VDbGVhckFs bFZpc2libGUocGFnZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDdmMzU0Y2Fl YzMxLi4xNGEyOTk2YjllZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTI1MjQsMTEg KzI1MjQsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQllbHNlIGlmIChhbGxfZnJvemVuX3NldCkK IAkJewogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwK LQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs YXRpb24pKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKIAkJfQogCiAJCS8qCkBAIC04Nzk4LDUwICs4 Nzk4LDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0 YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9n SW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9j awotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZm ZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2su ICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQu Ci0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4 bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRp bmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hl Y2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRl IGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRp bWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3Ig dGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90Kgot ICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFw X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZm ZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZt ZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwot CXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0J QXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1m bGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQot CQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0Jl Z2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxl KTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBS RUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9 IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZs YWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklT SUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0 IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhh dmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5MTE0MTZiYmM1Ni4uNjlkMWYwYjg2MzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjU4LDcgKzI1OCw3IEBA IGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJLyog V2UgZG9uJ3QgaGF2ZSByZWxhdGlvbiBuYW1lIGR1cmluZyByZWNvdmVyeSwgc28gdXNlIHJlbGZp bGVub2RlICovCiAJCXJlbG5hbWUgPSBwc3ByaW50ZigiJXUiLCBybG9jYXRvci5yZWxOdW1iZXIp OwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLCB2bWJ1ZmZl ciwgdm1mbGFncywgcmVsbmFtZSk7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChi bGtubywgdm1idWZmZXIsIHZtZmxhZ3MsIHJlbG5hbWUpOwogCiAJCS8qIE9ubHkgc2V0IFZNIHBh Z2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCiAJCWlmIChvbGRfdm1iaXRzICE9IHZt ZmxhZ3MpCkBAIC0yNzYsMTQyICsyNzYsNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0 b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklT SUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQg aGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdo ZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAq IFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhl biBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIg dGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNp YmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3Jk LT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUg KikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQot CUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09 IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0 b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5k YnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9s ZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkK LQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2Fu IHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0 aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBh bnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRj aGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0Lgot CSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMt PmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9j YXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3Rz LiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGlu IHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkg KiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24g PSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9u ID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNO IG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBi aXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGlj aAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFy ZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFn ZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK LQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24p OwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0g QkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVw LCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0 byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9s b2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZl cikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShi dWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICog U2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxs eSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3Rh bmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tp cCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMg dGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBv biB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1h cFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVz IHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1 Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAg VGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAq IHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcg RlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJs ZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxs LXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5v dCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2Nh dG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRo ZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0 aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRo YXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVj a2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFy ZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJl ZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJ CSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1 ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRz OwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8K LQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJl Yy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1Jl YWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNp YmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZh a2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBi bGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJCQkJCSAgeGxyZWMtPnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIp OwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQotCWVsc2UgaWYgKEJ1ZmZlcklz VmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLX0KLQog LyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBhbiBYTG9nIHJlY29yZCwgc2V0 IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZvbWFzayBhbmQgaW5mb21hc2sy IGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpAQCAtNzg5LDggKzY1Myw4IEBA IGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICoKIAkg KiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJlbnQgd3JpdGVycyBleGlzdC4g VGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0IGhvbGRpbmcgdGhlIGhlYXAg cGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2FtZSBhcHByb2FjaCBpcyB0YWtl biB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3JkcyAoc2VlCi0JICogaGVhcF94 bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWlu ZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBoZWFwX3hsb2dfcHJ1bmVfYW5k X2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZS T1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwg UkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtODA1LDExICs2NjksMTEgQEAgaGVhcF94bG9n X211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQkvKiBXZSBkb24ndCBo YXZlIHJlbGF0aW9uIG5hbWUgZHVyaW5nIHJlY292ZXJ5LCBzbyB1c2UgcmVsZmlsZW5vZGUgKi8K IAkJcmVsbmFtZSA9IHBzcHJpbnRmKCIldSIsIHJsb2NhdG9yLnJlbE51bWJlcik7Ci0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCi0JCQkJCQkJCSByZWxuYW1lKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJ CQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJICByZWxuYW1lKTsKIAogCQlQ YWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOwogCQlwZnJlZShyZWxuYW1l KTsKQEAgLTEzOTAsOSArMTI1NCw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxv Z19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklT SUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBY TE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3Jk KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBmMzg0ZDc0 NDE2YS4uMTQyNzgxZDAwMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0x MDMwLDkgKzEwMzAsOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCQl7CiAJCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAK LQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJ CQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMsCi0JCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcmFtcy0+cmVsYXRpb24pKTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldChibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAor CQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmFtcy0+cmVsYXRpb24pKTsK IAkJCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCiAJCQl7CiAJCQkJTG9ja0J1ZmZlcih2 bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKQEAgLTIzMDksMTQgKzIzMDksMTggQEAgZ2V0 X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRf dm0sCiAgKgogICogVGhpcyBpcyB1c2VkIGZvciBzZXZlcmFsIGRpZmZlcmVudCBwYWdlIG1haW50 ZW5hbmNlIG9wZXJhdGlvbnM6CiAgKgotICogLSBQYWdlIHBydW5pbmcsIGluIFZBQ1VVTSdzIDFz dCBwYXNzIG9yIG9uIGFjY2VzczogU29tZSBpdGVtcyBhcmUKKyAqIC0gUGFnZSBwcnVuaW5nLCBp biB2YWN1dW0gcGhhc2UgSSBvciBvbi1hY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCiAgKiAgIHJlZGly ZWN0ZWQsIHNvbWUgbWFya2VkIGRlYWQsIGFuZCBzb21lIHJlbW92ZWQgYWx0b2dldGhlci4KICAq Ci0gKiAtIEZyZWV6aW5nOiBJdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4nLgorICogLSBGcmVl emluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJLCBpdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4n CiAgKgotICogLSBWYWN1dW0sIDJuZCBwYXNzOiBJdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RF QUQgYXJlIG1hcmtlZCBhcyB1bnVzZWQuCisgKiAtIFJlYXBpbmc6IER1cmluZyB2YWN1dW0gcGhh c2UgSUlJLCBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJlCisgKiAgIG1hcmtlZCBh cyB1bnVzZWQuCiAgKgotICogVGhleSBoYXZlIGVub3VnaCBjb21tb25hbGl0aWVzIHRoYXQgd2Ug dXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KKyAqIC0gVk0gdXBkYXRlczogQWZ0ZXIg dmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICog ICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqCisgKiBUaGVzZSBjaGFuZ2VzIGFsbCBo YXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCiAg KiBhbGwuCiAgKgogICogSWYgcmVwbGF5aW5nIHRoZSByZWNvcmQgcmVxdWlyZXMgYSBjbGVhbnVw IGxvY2ssIHBhc3MgY2xlYW51cF9sb2NrID0gdHJ1ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCBjZjlkZTQwZmYzYy4uYmVkNzdhZjIzYTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4OTksMTEgKzE4OTksMTEgQEAgbGF6eV9zY2FuX25ld19v cl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25v LAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRydWUpOwogCiAJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJ CSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodmFjcmVsLT5yZWwpKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJ CQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJ CQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHZhY3JlbC0+cmVsKSk7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0 dGluZyBQRF9BTExfVklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc4Myw5ICsyNzgz LDkgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKSAhPSAwKQogCXsKIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLCB2bWZsYWdzLAot CQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVsLT5yZWwpKTsKKwkJdmlzaWJp bGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAorCQkJCQkJICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh2YWNyZWwtPnJlbCkpOwogCQljb25mbGljdF94aWQgPSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmls aXR5bWFwLmMKaW5kZXggNzM4MTA1ZWI5N2UuLmRmYTYxMTNmMGE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJdmlzaWJpbGl0 eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBt YXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0dGluZyBh IGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3JyZWN0IG1h cCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0gc2V0IGJp dChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxp dHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCiAgKgkJ dmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAgKgkJdmlzaWJp bGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlzaWJpbGl0eSBt YXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIwLDEwNyArMjE5 LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZt YnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJl cih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAtIHNl dCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVjcHRyIGlzIHRo ZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2UncmUgaW4gcmVj b3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmluZy4gIFRoZSBW TSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsgaW4gbm9ybWFs IHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQgdGhlCi0gKiBw YWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExTTiBtYXkgKm5v dCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRoZSBsYXJnZXN0 IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsgaXQgaXMgbmVl ZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICog aWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIElu dmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgYWxsLXZp c2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVyIGlzIGV4cGVj dGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBjYWxs aW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91bGQg YWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFibGVk IGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUgaGVhcCBidWZm ZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAqCi0g KiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2Ug dG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGlu IHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAq Ci0gKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNldHRp bmcgZmxhZ3MuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciByZWNw dHIsIEJ1ZmZlciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCSAgdWludDgg ZmxhZ3MpCi17Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhl YXBCbGspOwotCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsK LQl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7Ci0JUGFnZQkJ cGFnZTsKLQl1aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0KLSNpZmRlZiBUUkFDRV9W SVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgZmxhZ3MgMHglMDJYIGZvciAlcyAl ZCIsCi0JCSBmbGFncywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7Ci0j ZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5IHx8IFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRy KSk7Ci0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdl KGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykg PT0gZmxhZ3MpOwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBh bHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhl YXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVm KSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVS Uk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0K LQlBc3NlcnQoIUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwgQnVmZmVySXNFeGNsdXNpdmVMb2Nr ZWQoaGVhcEJ1ZikpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdl IHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tO dW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVmZmVy IHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo dm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7Ci0JTG9ja0J1 ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKLQotCXN0YXR1cyA9IChtYXBbbWFw Qnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQlpZiAoZmxh Z3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0KLQkJbWFwW21hcEJ5 dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOwot Ci0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsKLQkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNw dHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZs YWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9y IHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBw YWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0 ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2FzZSwg dGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAqIFdB TCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwotCQkJ CSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9nSGlu dEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdldFBh Z2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9 Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9T RUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK LQlyZXR1cm4gc3RhdHVzOwotfQogCiAvKgogICogU2V0IHZpc2liaWxpdHkgbWFwIChWTSkgZmxh Z3MgaW4gdGhlIGJsb2NrIHJlZmVyZW5jZWQgYnkgdm1CdWYuCkBAIC0zNDMsOSArMjQxLDkgQEAg dmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgaGVhcEJ1ZiwKICAqIGhlYXBSZWxuYW1lIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5nLgog ICovCiB1aW50OAotdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGss Ci0JCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJCQkJCSBjb25zdCBjaGFyICpo ZWFwUmVsbmFtZSkKK3Zpc2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJ ICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCSAgY29uc3QgY2hhciAqaGVhcFJlbG5h bWUpCiB7CiAJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBC bGspOwogCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggMWNiNDRjYTMyZDMuLjkzNTA1 Y2I4YzU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzQ5LDEz ICszNDksNiBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJCX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJM RSkKLQl7Ci0JCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJl YzsKLQotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAl dSwgZmxhZ3M6IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LCB4bHJlYy0+ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElf SU5TRVJUKQogCXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVs dGlfaW5zZXJ0ICopIHJlYzsKQEAgLTQ2MCw5ICs0NTMsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50 OCBpbmZvKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9 ICJQUlVORV9WQUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJ U0lCTEU6Ci0JCQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJf TVVMVElfSU5TRVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggY2MwM2YwNzA2ZTkuLjJmZGQ0 YWY5MGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ1 NCw3ICs0NTQsNiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6 CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2Fz ZSBYTE9HX0hFQVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDQyMjJiZGFiMDc4Li5jNjE5NjQzZTEyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKIAkgKiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2Ug ZG8gbm90aGluZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4g cmVwbGF5aW5nIGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRi eSBjcmFzaCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lC TEUKLQkgKiByZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJl YWR5IGFsbC12aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3Jk cyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlv biBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkg KiB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFr ZSBwbGFjZSBiZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYp LgorCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNv cmQgdGhhdCBtYXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFy a2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1 aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0 aW9uIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBh IHJlY292ZXJ5CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0 aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBk ZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAppbmRleCAxNmMyYjJlM2M5Yy4uZTllNzdiZDY3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oCkBAIC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUND RVNTCQkweDEwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2Rl ZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19I RUFQMl9WSVNJQkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAK ICNkZWZpbmUgWExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAy X05FV19DSUQJCTB4NzAKQEAgLTI5NCw3ICsyOTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF9wcnVuZQogCiAjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVu ZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQxNikpCiAKLS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25m bGljdCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCisvKgorICogVG8gaGFu ZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnks IHdlIG11c3Qga25vdworICogaWYgdGhlIHRhYmxlIGlzIGEgY2F0YWxvZyB0YWJsZS4gTm90ZSB0 aGF0IGluIHZpc2liaWxpdHltYXBkZWZzLmgKKyAqIFZJU0lCTElUWU1BUF9YTE9HX0NBVEFMT0df UkVMIGlzIGFsc28gZGVmaW5lZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3Jk cyBzaG91bGQgdXNlIFhMSFBfSVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0df Q0FUQUxPR19SRUwgLS0KKyAqIGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0 aGUgVk0uCisgKi8KICNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAv KgpAQCAtNDQzLDIwICs0NDgsNiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAog I2RlZmluZSBNaW5TaXplT2ZIZWFwSW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBu bXNncykgKyBzaXplb2YoaW50KSkKIAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtu b3cgYWJvdXQgc2V0dGluZyBhIHZpc2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsg MDogdmlzaWJpbGl0eSBtYXAgYnVmZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0g Ki8KLXR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b247Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7 Ci0KLSNkZWZpbmUgU2l6ZU9mSGVhcFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwg ZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lk CiB7CiAJLyoKQEAgLTUwMCwxMSArNDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJp bmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIg KmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2lj YWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2df aGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkg ICBCdWZmZXIgdm1fYnVmZmVyLAotCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRl c2MuYywgc28gaXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAq LwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hh ciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxo cF9mcmVlemVfcGxhbiAqKnBsYW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXgg M2RjZjM3YmEwM2YuLjg1OWU1Nzk1NDU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgK QEAgLTE1LDcgKzE1LDYgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNp bmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgpAQCAtMzEsMTUgKzMwLDExIEBAIGV4dGVybiBib29s IHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAog ZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5 bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVp bnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwK LQkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZf eGlkLAotCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFw X3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVm LCB1aW50OCBmbGFncywKLQkJCQkJCQkJCSAgY29uc3QgY2hhciAqaGVhcFJlbG5hbWUpOworCitl eHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJ CQkgICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmhl YXBSZWxuYW1lKTsKKwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZv aWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlz aWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2li aWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVm aW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJ CQkJCSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3Rz IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25v dyBpZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4g YWRkaXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlv biB0byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3Qg YmUgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElU WU1BUF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZB TElEX0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19D QVRBTE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOGE2MjZkNjMzZDUuLjQ4ZWIzY2Y0NDY2IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDI3Miw3ICs0MjcyLDYgQEAgeGxfaGVhcF9wcnVu ZQogeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBk YXRlCi14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tl eQogeGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0010-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v16-0010-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdj9 RnJvbSAxZTQxMDhlMGM1YjAwN2ZlNTVmMTJjMjlmNGE0NzI0N2JhMDIzZWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMTAvMTRdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmggICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBp bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsx NDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwg U25hcHNob3Qgc25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVh ZF9hZnRlcikpOwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3Qt PnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNu YXBzaG90LT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwog CX0KIAllbHNlCkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVh cFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBEZWxldGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9s ZCBlbm91Z2guICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0 LAotCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVy biBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhl YWRlckdldFJhd1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggMTQyNzgxZDAwMDguLjc4ZTA0ZjFkMTdjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtMjMzLDcgKzIzMyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZp c1Rlc3RGb3IocmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQo dmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNzI5LDkgKzcyOSw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog RGV0ZXJtaW5pbmcgSFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9y IGNvcnJlY3RuZXNzLAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1Yg dHdpY2UgY291bGQgcmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBs ZSwgUkVDRU5UTFlfREVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2Vk IGl0ZW0gY2F1c2VzIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUg dGhlCi0JICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dSRVNTIGNhbiBjaGFuZ2UgdG8gREVB RCBpZiB0aGUgaW5zZXJ0aW5nCi0JICogdHJhbnNhY3Rpb24gYWJvcnRzLgorCSAqIGNoZWNrZWQg aXRlbSBjYXVzZXMgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRlIHRoZSBob3Jp em9uLAorCSAqIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYgdGhl IGluc2VydGluZyB0cmFuc2FjdGlvbgorCSAqIGFib3J0cy4KIAkgKgogCSAqIEl0J3MgYWxzbyBn b29kIGZvciBwZXJmb3JtYW5jZS4gTW9zdCBjb21tb25seSB0dXBsZXMgd2l0aGluIGEgcGFnZSBh cmUKIAkgKiBzdG9yZWQgYXQgZGVjcmVhc2luZyBvZmZzZXRzICh3aGlsZSB0aGUgaXRlbXMgYXJl IHN0b3JlZCBhdCBpbmNyZWFzaW5nCkBAIC0xMTU0LDExICsxMTU0LDExIEBAIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZm ZXIgYnVmZmVyKQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29u c2lkZXJlZCBkZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxW aXNTdGF0ZS4gT24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1 dG9mZnMuIEFuZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9s ZGVyCi0JICogdGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBj b3VsZCBmaW5kIHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVl biB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRl c3RYbWluLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVh ZCBpZgorCSAqIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBi ZWdpbm5pbmcgb2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJ aWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVy KSkKIAkJcmV0dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE2MTYsNyAr MTYxNiw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93 IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJ ICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEKKwkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgaW5z dGVhZCwgaWYgYQogCQkJCSAqIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUg Vk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDhmOGExYWQ3Nzk2Li40OTZjY2E2OTQxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAg dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVh cHJlbCwgQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNU X1JFRElSRUNUICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkg R2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVw c3RhdGUgPSBTUEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rp b24gPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUu LjIzNWMzYjU4NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE4MSw4 ICs0MTgxLDcgQEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xv YmFsVmlzU3RhdGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9s ZGVyIHRoYW4gbWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8K QEAgLTQyMTYsMTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChH bG9iYWxWaXNTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgog ICogSXQgaXMgY3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9t IGEgc291cmNlIHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcu IGZyb20gYSB0YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAg Ki8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZDsKIApAQCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlk ID0gRnVsbFhpZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0J cmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJl dHVybiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoK ICAqIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAq IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgor ICogR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAg Ki8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEdsb2JhbFZpc0No ZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQp CiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVs bFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3 cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlz aWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNr UmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcg KzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5z YWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1 cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgK aW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAs OCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90 KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBl eHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4 dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRW aXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVG dWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMu MAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v16-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdl10 RnJvbSBhMjhhZWY3MjI4NmY0NDZjNTM2MTQ2MjFlYmU3ZjhiNjVlZTRiNTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMTEvMTRdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IEdsb2JhbFZpc1N0YXRlIG1heSBhZHZhbmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcg bW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZCBhbGwtdmlzaWJsZS4KSW4gdGhlIHJhcmUg Y2FzZSB0aGF0IGl0IG1vdmVzIGJhY2t3YXJkLCBWQUNVVU0gZmFsbHMgYmFjayB0byBPbGRlc3RY bWluCnRvIGVuc3VyZSB3ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0 aGF0IHdhc27igJl0IHlldApwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRl LgoKQmVjYXVzZSBjb21wYXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0 YXRlIGlzIG1vcmUKZXhwZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElE LCB3ZSBkZWZlciB0aGlzIGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24g dGhlIHBhZ2UuIElmIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVy Zm9ybSB0aGUgR2xvYmFsVmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlz IHNhZmUgYmVjYXVzZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHht aW4gb24KdGhlIHBhZ2U7IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGly ZSBwYWdlIGlzIGFsbC12aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1p bmluZyBtb3JlIHR1cGxlIHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4g d2UgY291bGQgc29tZXRpbWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVh cmxpZXIuIEhvd2V2ZXIsIHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5v dApzaWduaWZpY2FudC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIHwgMjggKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgICAgICAgICB8IDM3ICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICB8IDE3ICsrKysrLS0tLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiA0IGZpbGVzIGNo YW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4YWJkYmViLi5lZGQ1Mjlk YzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBA IC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBo dHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJlczsKIH0KIAorLyoKKyAq IE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0sIGJ1dCB1c2VzIGEg R2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHR1cGxlIGlz IEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRC4gSXQgc2VydmVz IHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBjYWxsZXJzIHRoYXQgaGF2 ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVlLgorICovCitIVFNWX1Jl c3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBsZSBodHVwLCBH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKQoreworCVRy YW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCUhUU1ZfUmVz dWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oaHR1cCwg YnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwor CQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQkJ cmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogV29yayBo b3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1pbGFyIHJvdXRpbmVzLgog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNzhlMDRmMWQxN2MuLmU1YjE2 YmQyYjM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNzExLDExICs3MTEs MTIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAogCS8qCiAJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHht aW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBv biB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRo ZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQg dGhhdCBpcwotCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWlu ZWQuIEFzIGxvbmcgYXMgaXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBj YWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5n IHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICog b24gdGhlIHBhZ2Ugb2xkZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVk IGluIHRoZQorCSAqIEdsb2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10 by1kYXRlIGlmIHRoZSBwYWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBs ZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZp ZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4g YmUKKwkgKiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3 aGVuIHVwZGF0aW5nIHRoZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBv biB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCkBAIC05MTEsNiArOTEyLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAw IHx8CiAJCXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3Npbmcg YWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICog YW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3Qg YmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgor CQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYm CisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZp c2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFs bF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0 aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBm aWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50 CkBAIC0xMDgxLDEwICsxMDkyLDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3Nl cnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMp OwogCiAJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1 ZmZlciwKLQkJCQkJCQkJCSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJ ICBwcnN0YXRlLnZpc3Rlc3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJ CQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjEz LDE5ICsxNjIzLDYgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWlu ID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5v dyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJ CSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgd2hlbiBmcmVlemluZyBpcyByZXF1ZXN0 ZWQuIFdlCi0JCQkJICogY291bGQgdXNlIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIGluc3Rl YWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZN IGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFU cmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikp Ci0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4g PSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4g b24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+ dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1p bikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYmVkNzdhZjIzYTIuLjNh ZjhhMzU5ZTQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsNyAr NDY0LDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC bG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNf cmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51 cChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Qs CiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBp bnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0yNzM5 LDcgKzI3MzksNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC bG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBkb25lIG91dHNpZGUgdGhlIGNy aXRpY2FsIHNlY3Rpb24uCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJs ZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVz dFhtaW4sCisJCQkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsCiAJCQkJCQkJCQkgICBkZWFkb2Zm c2V0cywgbnVtX29mZnNldHMsCiAJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlf Y3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkpCkBAIC0zNDg4LDE0ICsz NDg4LDEzIEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKi8KIGJv b2wKIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0J CQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2 aXN0ZXN0LAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZu dW0pCiB7CiAKLQlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVm LAotCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKHJlbCwgYnVmLCB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJ CQkJCQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBA IC0zNTE0LDcgKzM1MTMsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxl IG90aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3 aXNlLgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4K KyAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCiAgKiBPdXRw dXQgcGFyYW1ldGVyczoKICAqCkBAIC0zNTMzLDcgKzM1MzIsNyBAQCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICovCiBzdGF0aWMgYm9vbAogaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3Rh dGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJ CQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0z NjA1LDcgKzM2MDQsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQp OwogCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCi0JCXN3aXRj aCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBsZSwgT2xkZXN0WG1pbiwgYnVmKSkKKwkJ c3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9iYWxWaXMoJnR1cGxlLCB2aXN0ZXN0 LCBidWYpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsKQEAgLTM2MjQsNyAr MzYyMyw3IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCSAqIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21taXR0ZWQ/CiAJ CQkJCSAqLwogCQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEp OwotCQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKKwkJ CQkJaWYgKCFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgeG1pbikpCiAJCQkJCXsK IAkJCQkJCWFsbF92aXNpYmxlID0gZmFsc2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCmluZGV4IDJkZTM5YmEwY2QxLi5kZjA2MzJhZWJjNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaApAQCAtMjc2LDggKzI3Niw3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1z CiAJLyoKIAkgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0b2ZmcywgZXN0YWJsaXNo ZWQgYnkgVkFDVVVNIGF0IHRoZQogCSAqIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0 aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUKLQkgKiBvcHRpb24gaXMgc2V0LiBj dXRvZmZzLT5PbGRlc3RYbWluIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUgaWYgZGVhZAotCSAq IHR1cGxlcyBhcmUgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQuCisJ ICogb3B0aW9uIGlzIHNldC4KIAkgKi8KIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsK IH0gUHJ1bmVGcmVlemVQYXJhbXM7CkBAIC00NDMsNyArNDQyLDcgQEAgZXh0ZXJuIHZvaWQgaGVh cF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgcGFy YW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogCiBleHRlcm4gYm9vbCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlz dGVzdCwKIAkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dp bmdfb2ZmbnVtKTsKQEAgLTQ1NSw2ICs0NTQsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBs ZVNhdGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJ CQkJCQkgIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJ CQkJCQkJCQlCdWZmZXIgYnVmZmVyKTsKK2V4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRp c2ZpZXNWYWN1dW1HbG9iYWxWaXMoSGVhcFR1cGxlIGh0dXAsCisJCQkJCQkJCQkJCQkJIEdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0LCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBI ZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVm ZmVyLAogCQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4g dm9pZCBIZWFwVHVwbGVTZXRIaW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBi dWZmZXIsCi0tIAoyLjQzLjAKCg== --00000000000095d7180640852371 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0012-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v16-0012-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdo11 RnJvbSA5ZWQwMGI4MjFiODkyNzZjODAzODJiYzgxMGU2YTMzNjhjYzM1NTIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMTIvMTRdIElubGluZSBUcmFuc2FjdGlvbklkRm9sbG93cy9QcmVjZWRlcygpCgpD YWxsaW5nIHRoZXNlIGZyb20gb24tYWNjZXNzIHBydW5pbmcgY29kZSBoYWQgbm90aWNlYWJsZSBv dmVyaGVhZCBpbiBhCnByb2ZpbGUuIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYSByZWFzb24g bm90IHRvIGlubGluZSB0aGVtLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5j IHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxpZFhM b2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBpZDEg bG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNh Y3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVyIElE IGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICogY29t cGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJpc29u LgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQx KSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQyKTsK LQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwotfQot Ci0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dpY2Fs bHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlp ZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBp ZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRGb2xs b3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklk Rm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJ CWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlv bklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChpbnQz MikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFuc2Fj dGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAqLwot Ym9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwgVHJh bnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJ c05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChp ZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlm ZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxhdGVz dCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgK aW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTI1 NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0gVHJh bnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0t LSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1RyYW5z YWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7 CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2FuIGp1 c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBkbyBh IG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkK KwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVx dWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRyYW5z YWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAoaWQx IDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRpZmYg PD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxvZ2lj YWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93 cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRpZmY7 CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlk MSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklk Rm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3RhdGlj IGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJhbnNh Y3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQorCQly ZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJcmV0 dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRlcm4g ZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBAIGV4 dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0aW9u SWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25JZCB4 aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFuc2Fj dGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRyYW5z YWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0aW9u SWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAq eGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25JZCBp ZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVjZWRl c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRlcm4g Ym9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25J ZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2Fj dGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgVHJh bnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGludCBu eGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBUcmFu c2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0014-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v16-0014-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdq13 RnJvbSBiZDgyMTU4ZjM4MzY3OThhNmVhOTE5NGU3MGUzM2I5Mzk4MGZiYmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMTQvMTRdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCA2MTgxZTM1NWFhZi4uMTcwNDI2OTcxNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNjMsMTUgKzIxNjQsMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE4MSw3ICsy MTg2LDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTQ1LDggKzI1NDksMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDY5ZDFmMGI4NjMzLi41MWY3OTYxMDc1ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NzUsNiArNDc1LDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTYyNCw5ICs2MzAsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0 dXBsZXMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMu b3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dApAQCAtNTQsNyArNTQsNyBAQCBz dGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAg cmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5o ZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlv X2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFw X2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAg ICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhl YXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9N IHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScp OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhl YXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMg RlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJl OiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3Jl YWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFt ZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RlcCBmbHVzaDog U0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VM RUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3Nl cyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nlcwog LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgog KDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2Vz ID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9f YWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKLS0gCjIuNDMu MAoK --00000000000095d7180640852371 Content-Type: text/x-patch; charset="UTF-8"; name="v16-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v16-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgfpojdp12 RnJvbSAxM2ZmOWZkODA3MWY5YjdhZWEwN2NjYTYwM2M1MWE5YTNjZDY1OWYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTYgMTMvMTRdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICAgICAgIHwgNzEgKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYyAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzOSArKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrLQogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICstCiAxNiBmaWxlcyBjaGFu Z2VkLCAyODIgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCAxNGEyOTk2YjllZS4uNjE4MWUzNTVhYWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC01NTUsNiArNTU1LDcgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxl U2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19jYnVmOwogCUJsb2Nr TnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNuYXBzaG90OworCUJ1 ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50CQkJbGluZXM7CiAJ Ym9vbAkJYWxsX3Zpc2libGU7CkBAIC01NjksNyArNTcwLDkgQEAgaGVhcF9wcmVwYXJlX3BhZ2Vz Y2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdt ZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3Bh Z2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNzY2FuLT5y c19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAmc2Nhbi0+cnNfdm1idWZm ZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsIHZt YnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI0Niw2ICsxMjQ5LDcgQEAgaGVh cF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ CQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJfQogCisJc2Nhbi0+cnNfdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJsZVNjYW5EZXNjKSBzY2FuOwog fQpAQCAtMTI4NCw2ICsxMjg4LDEyIEBAIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4s IFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4tPnJzX2NidWYgPSBJbnZhbGlk QnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwl7 CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCQlzY2FuLT5yc192bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19UWVBFX0JJVE1BUFNDQU4gd291 bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3QgaG9sZCBhbnkKIAkgKiBhZGRp dGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEzMTYsNiArMTMyNiw5IEBAIGhl YXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2NidWYpOwogCisJaWYgKEJ1ZmZl cklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3Zt YnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJl ZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBiY2JhYzg0NGJiNi4uZjA1YjllNDk2OGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODUsNiArODUsNyBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsKQogCiAJaHNjYW4tPnhzX2Jhc2Uu cmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNf dm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0K QEAgLTk5LDYgKzEwMCwxMiBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRh YmxlRGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2Fu LT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nh bi0+eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIp OworCQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGlj IHZvaWQKQEAgLTEzOCw3ICsxNDUsOCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0 IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlm IHdlIHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAh PSBoc2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2Uu cmVsLCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19i YXNlLnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJCQkJCXNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVs ID8gTlVMTCA6ICZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1s b2NrIG9uIHRoZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjQ3 MSw2ICsyNDc5LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2Fu LAogCVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIgb2Zmc2V0c1tUQk1f TUFYX1RVUExFU19QRVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsKKwlCdWZmZXIJICAg KnZtYnVmZmVyID0gTlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAmIFNPX1RZUEVfQklU TUFQU0NBTik7CiAJQXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBAIC0yNTE3LDcgKzI1 MjYsOSBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoK IAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBp ZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZm ZXIpOworCWlmIChzY2FuLT5yc19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIg PSAmaHNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQs IGJ1ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBv biB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IGU1YjE2YmQyYjM4Li5mYTNiMzhjZGFkYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE4Niw3ICsxODYsOSBAQCBzdGF0aWMgYm9vbCBo ZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZm ZXIgaGVhcF9idWYsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJICAgYm9v bCBibGtfa25vd25fYXYsCi0JCQkJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJ CQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICAgYm9vbCBkb19wcnVuZSwg Ym9vbCBkb19mcmVlemUsCisJCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJ CSAgIHVpbnQ4ICp2bWZsYWdzLAogCQkJCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKTsKIApA QCAtMjAxLDkgKzIwMywxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJl bGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgog ICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3Qq IGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVyIGlzIG5vdCBOVUxMLCBpdCBp cyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgaWYKKyAqIHRoZSBw YWdlIGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBvZiBwaW5uaW5nIGFuZCwgaWYg bmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCiAg Ki8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0yNjksMTIgKzI3NSwyMSBAQCBo ZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJ UHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsK IAorCQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCQkJcGFyYW1zLnZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKKworCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJl bGF0aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJcGFy YW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUzsKKwkJCQlwYXJhbXMudm1i dWZmZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCXBhcmFtcy5yZWxhdGlvbiA9IHJlbGF0aW9u OwogCQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKIAkJCXBhcmFtcy5yZWFzb24gPSBQUlVORV9P Tl9BQ0NFU1M7CiAJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7CiAJCQlwYXJhbXMuY3V0b2Zm cyA9IE5VTEw7Ci0JCQlwYXJhbXMudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQkJcGFyYW1z LmJsa19rbm93bl9hdiA9IGZhbHNlOwogCiAJCQkvKgpAQCAtNDU1LDYgKzQ3MCw5IEBAIGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGhh dmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRzIChlLmcuLCBWQUNVVU0gaW4gdGhlIHBy ZXZpb3VzCiAgKiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSBhbmQgY2FuIHBhc3Mg dGhhdCBhbG9uZy4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19m cmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBh cyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKICAq IFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25n IHdpdGggdGhlIGRlc2lyZWQKICAqIGZsYWdzIGluICp2bWZsYWdzLiBBbHNvIGluZGljYXRlcyB2 aWEgZG9fc2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FMTF9WSVNJQkxFCiAgKiBzaG91bGQgYmUgc2V0 IG9uIHRoZSBoZWFwIHBhZ2UuCkBAIC00NjUsNyArNDgzLDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0 X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkg ICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkgICBj b25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJ CQkJCSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkgICBQcnVuZVN0YXRl ICpwcnN0YXRlLAogCQkJCQkgICB1aW50OCAqdm1mbGFncywKIAkJCQkJICAgYm9vbCAqZG9fc2V0 X3BkX3ZpcykKIHsKQEAgLTQ4MSw2ICs1MDEsMjMgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhS ZWxhdGlvbiByZWxhdGlvbiwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qCisJICogSWYgdGhp cyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcsIGF2 b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkgZGly dHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5LCBp ZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGltYWdl IChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkgKiBz aG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQgd2hl bgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBSVU5F X09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYg IWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoaGVhcF9idWYpIHx8IFhMb2dDaGVja0J1 ZmZlck5lZWRzQmFja3VwKGhlYXBfYnVmKSkpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWlm IChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQog CQkqZG9fc2V0X3BkX3ZpcyA9IHRydWU7CiAKQEAgLTUwNCw2ICs1NDEsOSBAQCBoZWFwX3BhZ2Vf d2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNs ZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CiAJICog Z290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwg c28gd2UgbXVzdAogCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGlu ZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqCisJICogWFhYOiBUaGlzIHdpbGwgbmV2ZXIg dHJpZ2dlciBmb3Igb24tYWNjZXNzIHBydW5pbmcgYmVjYXVzZSBpdCBwYXNzZXMKKwkgKiBibGtf a25vd25fYXYgYXMgZmFsc2UuIFNob3VsZCB3ZSByZW1vdmUgdGhhdCBjb25kaXRpb24gaGVyZT8K IAkgKi8KIAllbHNlIGlmIChibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9w YWdlKSAmJgogCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGss ICZ2bWJ1ZmZlcikgIT0gMCkKQEAgLTkxMiw2ICs5NTIsMTQgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5uZGVhZCA+IDAg fHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsKIAorCS8qCisJICogRXZlbiBpZiB3ZSBkb24ndCBw cnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQorCSAqIHBkX3By dW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRl IHRoZSBoaW50CisJICogYml0LgorCSAqLworCWRvX2hpbnRfcHJ1bmUgPSAoKFBhZ2VIZWFkZXIp IHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CisJCVBhZ2VJ c0Z1bGwocGFnZSk7CisKIAkvKgogCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVtIGlz IG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKQEAgLTkyMiwxNCAr OTcwLDYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3Rh dGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3Rh dGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCi0JLyoKLQkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5l IGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVf eGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhl IGhpbnQKLQkgKiBiaXQuCi0JICovCi0JZG9faGludF9wcnVuZSA9ICgoUGFnZUhlYWRlcikgcGFn ZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKLQkJUGFnZUlzRnVs bChwYWdlKTsKLQogCS8qCiAJICogRGVjaWRlIGlmIHdlIHdhbnQgdG8gZ28gYWhlYWQgd2l0aCBm cmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZQogCSAqIHBsYW5zIHdlIHByZXBhcmVkLCBv ciBub3QuCkBAIC05NzMsNiArMTAxMyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICovCiAJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dp bGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0aW9uLAogCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVy LCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICBwYXJhbXMtPnJl YXNvbiwgZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwKIAkJCQkJCQkJCSAgICZwcnN0YXRlLCAmbmV3X3Zt Yml0cywgJmRvX3NldF9wZF92aXMpOwogCiAJLyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBWTSBp ZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLwpAQCAtMjI0NSw3ICsyMjg2LDcg QEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVw bGVzLAogCiAvKgogICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hv bGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgotICogcmVjb3JkLgorICogb3IgWExPR19I RUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgogICovCiBzdGF0aWMgVHJhbnNhY3Rpb25JZAog Z2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19z ZXRfdm0sCkBAIC0yMzE0LDggKzIzNTUsOCBAQCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKICAqIC0gUmVhcGluZzogRHVyaW5n IHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAq ICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBw aGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZp c2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFz ZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRoZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1h cmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFs bCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVt CiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4u OGQ1ODJhOGVhZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4 OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBz Y2FuOwogfQogCisvKgorICogU2ltaWxhciB0byBpbmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93 cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0 aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVy CisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtpbmcgcGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24g YXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2aXNpYmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNz IHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRlc2MKK2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxh dGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJ ICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVz X2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRlc2Mgc2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdp bnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJICAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNu YXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVudCwKKwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMp OworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jh c2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9CisKIC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0 bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGluZGV4IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02 MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVs LCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1cm4gc2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVs IHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYwor aW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9u IGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxs ZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwp Cit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJh bGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJCQkJCQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlu a2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJcHNjYW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+ bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmllc19iYXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30K KwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogaW5kZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5l eHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Rh YmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXgg NWU0MTQwNDkzN2UuLjNlM2EwZjcyYTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMK QEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAgICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Qg PSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRIT0Q7CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2Fu cyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3IgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5k IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVz YyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisK IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIg KzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBh cmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIAl9CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBoZWxwZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMg VGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxh Z3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VR U0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VN T0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9y LCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApAQCAtMTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZsYWdzKTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNP X0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0 dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9jb21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFn cyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2ZXJzaW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNl dCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChS ZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAg IGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4g fAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsK KworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwly ZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZs YWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0 ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggODMxYzU1Y2U3ODcuLjE1 YmUzMThmZDQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwog CQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZp ZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkv KiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVnYWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJ CQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxpZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5t YXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEw NmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBF eGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5m byAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJl c3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9 IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21l bWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkv KgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBhbGxvd3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2 ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5Zjc5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNj YW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJYm9vbAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19p c19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkg IG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9iZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwK IAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwpOworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJ ICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0 LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmMyZmZiZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYgKzEwMiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2Fu U3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9k aWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMu cGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOwor CiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFs bGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0 aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRl eF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2Rl LT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJ CQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1T Y2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRl c2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAor CQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVz X3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJ IG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlL ZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19iYXNlX3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5E ZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3 ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02 NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRl c2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVy KCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUt PmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUg c2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGlu ZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5k ZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJ CQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5k ZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9k aWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsK IAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2Nh blN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJ ICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQ YXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUo cGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwpAQCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAog CQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv Yywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVs ID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwK KwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNf cmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxMywxMyBAQCBFeGVjU2VxU2Nhbklu aXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2Vy Q29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJ CW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBs YW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3Jl bGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAgIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZp ZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYuLmFhMjExMmM4ZTA0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaApAQCAtMTc4LDYgKzE3OCwxMSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBp bmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2Nh bkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJ CQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNu YXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNf aGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChS ZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LApAQCAtMjA0LDYg KzIwOSwxMiBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwo UmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJ CQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNj YW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBS ZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJ CQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29s IG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRlbVBvaW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5k ZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIGV4 dGVybiBib29sIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZGYwNjMyYWViYzYuLjU5ZDhjZTlhZDQy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2ICs5NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIZWFw U2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKnJz X3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVlbnRpYWwgc2NhbnMgYW5k IGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUgcmVsYXRpb24gaXMgbm90CisJICogYmVpbmcgbW9k aWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFn ZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBibG9jayB0byB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlC dWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyogdGhlc2UgZmllbGRzIG9ubHkgdXNlZCBpbiBwYWdl LWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0bWFwIHNjYW5zICovCiAJdWludDMyCQlyc19jaW5k ZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5kZXggaW4gdmlzdHVwbGVzICovCiAJdWludDMyCQly c19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZpc2libGUgdHVwbGVzIG9uIHBhZ2UgKi8KQEAgLTEx Nyw4ICsxMjQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaEhlYXBEYXRhCiB7CiAJSW5k ZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkvKiBBTSBpbmRlcGVuZGVudCBwYXJ0IG9mIHRoZSBk ZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhzX2NidWY7CQkvKiBjdXJyZW50IGhlYXAgYnVmZmVy IGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5COiBpZiB4c19jYnVmIGlzIG5vdCBJbnZhbGlkQnVm ZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCisJLyoKKwkgKiBDdXJyZW50IGhl YXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4gTkI6IGlmIHhzX2NidWYgaXMgbm90CisJICogSW52 YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJ CXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBpbmRleCBzY2FucyB0aGF0IGRvIG5vdCBtb2RpZnkg dGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1bmluZyBtYXkgcmVh ZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncyBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvCisJ ICogdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c192bWJ1ZmZlcjsKIH0gSW5kZXhGZXRj aEhlYXBEYXRhOwogCiAvKiBSZXN1bHQgY29kZXMgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1 bSAqLwpAQCAtNDE1LDcgKzQzMiw4IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhf ZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhEZWxldGVP cCAqZGVsc3RhdGUpOwogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5jICovCi1leHRlcm4gdm9pZCBo ZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKK2V4 dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJCUJ1ZmZlciAqdm1idWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAg IFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpv ZmZfbG9jLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLmY0OTZlMGI0OTM5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTEyMSw2ICsxMjEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFy YWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKlBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3Jr ZXI7CiB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhCiB7CiAJUmVsYXRpb24JcmVs OworCisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlm IHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4g VHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRl eEZldGNoVGFibGVEYXRhOwogCiBzdHJ1Y3QgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmgKaW5kZXggZTE2YmYwMjU2OTIuLmYyNTBkNGU3YWVjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1 bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAx IDw8IDksCisJLyogd2hldGhlciBvciBub3Qgc2NhbiBzaG91bGQgYXR0ZW1wdCB0byBzZXQgdGhl IFZNICovCisJU09fQUxMT1dfVk1fU0VUID0gMSA8PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAog LyoKQEAgLTg4Miw2ICs4ODQsMjUgQEAgdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbCwgU25h cHNob3Qgc25hcHNob3QsCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWws IHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CiAKKy8qCisgKiBTaW1pbGFy IHRvIHRhYmxlX2JlZ2luc2NhbigpLCBidXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gaW5kaWNhdGUg d2hldGhlciB0aGUKKyAqIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbi4gVGhpcyBpcyB1c2Vk IHdoZW4gdGhlIGNhbGxlciB3YW50cyB0byBhdHRlbXB0CisgKiBtYXJraW5nIHBhZ2VzIGluIHRo ZSByZWxhdGlvbiBhcyBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgZHVyaW5nCisg KiBvbi1hY2Nlc3MgcHJ1bmluZy4KKyAqLworc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCit0 YWJsZV9iZWdpbnNjYW5fdm1zZXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJ CQkJICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0YSAqa2V5LCBib29sIG1vZGlmaWVzX3Jl bCkKK3sKKwl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwkJU09fQUxMT1dfU1RS QVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CisKKwlpZiAoIW1vZGlmaWVz X3JlbCkKKwkJZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCisJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7 Cit9CisKIC8qCiAgKiBMaWtlIHRhYmxlX2JlZ2luc2NhbigpLCBidXQgZm9yIHNjYW5uaW5nIGNh dGFsb2cuIEl0J2xsIGF1dG9tYXRpY2FsbHkgdXNlIGEKICAqIHNuYXBzaG90IGFwcHJvcHJpYXRl IGZvciBzY2FubmluZyBjYXRhbG9nIHJlbGF0aW9ucy4KQEAgLTkxOSwxMCArOTQwLDEzIEBAIHRh YmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICov CiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlv biByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEg KmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9kaWZpZXNf cmVsKQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX0JJVE1BUFNDQU4gfCBTT19BTExPV19Q QUdFTU9ERTsKIAorCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9T RVQ7CisKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3Qs IG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CiB9CkBAIC0xMTMwLDYgKzEx NTQsMTAgQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRp b24gcmVsLAogZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJl bGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nh bik7CiAKK2V4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNl dChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sCisJCQkJCQkJCQkJCQkJYm9vbCBtb2RpZmllc19yZWwpOworCiAvKgogICogUmVzdGFy dCBhIHBhcmFsbGVsIHNjYW4uICBDYWxsIHRoaXMgaW4gdGhlIGxlYWRlciBwcm9jZXNzLiAgQ2Fs bGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhhdCBhbGwgd29ya2VycyBo YXZlIGZpbmlzaGVkIHRoZSBzY2FuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGEzNjY1M2MzN2Y5 Li45YzU0ZmEwNmU0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY3Niw2ICs2NzYsMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygp ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVy eURlc2MgKi8KIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgbW9kaWZpZWQgYnkg dGhlIHF1ZXJ5IGVpdGhlciB0aHJvdWdoCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ug b3IgU0VMRUNUIEZPUiBVUERBVEUKKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmllZF9yZWxp ZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0 ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVwbGVzLCB0 aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCmluZGV4IGM5YzE4Mjg5MmNm Li5mNWMwYzY1YjI2MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRi eV9sb2dpY2FsX2RlY29kaW5nLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMjk2LDYgKzI5Niw3IEBAIHdhbF9sZXZlbCA9ICds b2dpY2FsJwogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAogbWF4X3dhbF9zZW5kZXJzID0gNAog YXV0b3ZhY3V1bSA9IG9mZgoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgogfSk7CiAkbm9kZV9w cmltYXJ5LT5kdW1wX2luZm87CiAkbm9kZV9wcmltYXJ5LT5zdGFydDsKQEAgLTc0NSw3ICs3NDYs NyBAQCBjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwKICRsb2dzdGFydCA9IC1z ICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAKIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5k X3dhaXRfZm9yX3htaW5zKCdzaGFyZWRfcm93X3JlbW92YWxfJywKLQknbm9fY29uZmxpY3RfJywg MCwgMSk7CisJJ25vX2NvbmZsaWN0XycsIDEsIDApOwogCiAjIFRoaXMgc2hvdWxkIG5vdCB0cmln Z2VyIGEgY29uZmxpY3QKIHdhaXRfdW50aWxfdmFjdXVtX2Nhbl9yZW1vdmUoCi0tIAoyLjQzLjAK Cg== --00000000000095d7180640852371--