Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vXkXI-004ASR-1c for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Dec 2025 18:21:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vXkXH-00FoXy-1U for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Dec 2025 18:21:36 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vXkXG-00FoXg-1R for pgsql-hackers@lists.postgresql.org; Mon, 22 Dec 2025 18:21:35 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vXkWy-0022vW-0r for pgsql-hackers@lists.postgresql.org; Mon, 22 Dec 2025 18:21:34 +0000 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-64baaa754c6so3775617a12.3 for ; Mon, 22 Dec 2025 10:21:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766427674; x=1767032474; 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=x4N5B+pswUS0V3LZDvRQ2WxP2OAe5opsSlCvAtfYme4=; b=DaHQsCq8YKiXQWLhVUSAJwy9ERGRCU4iW1Gu84evF4YoT1EAAVSZCS8f35+erydLD6 eIeM8to0LcJepj0MfgaJdnR9LYJY9RRHXYA0egMGU4eTEA4Md1rB35T88ZncVRK8IZdw DnoC0TP5AsfNScOtSptF7ttoWIShbkZKSfiuml0V3kP5kcwVYDEkgNTVJk5W8fgF2TuJ wyuMLTWvwvdow7rDnIp551RzcjVzEwQOmMWMrEB4H9ea9k0e9UW2qL/fsdv3fVFGm39l pacnC+SI49LHwbjlLhwjZvrbyZh7Edf5sDTu1ru25uPrrqdeEtqW1h3GA6JsVO3bD87S YJmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766427674; x=1767032474; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=x4N5B+pswUS0V3LZDvRQ2WxP2OAe5opsSlCvAtfYme4=; b=BrDUO9g1fjY6564m5GbDLDrYmIM4PzJxX1V1EgMu3pTtZZXMikMVRx9UAscfn4qStI LbycdLFJR2QbC9KzVR6zD8vqvmI8s6dPa561wTvCmiUEktTiQjTaZ31gssmFn45cszPb R4zEPJXYZQqV1GeQg/hVqa4IiXY01yG2t8i86CA4fBUYnhQZUn2SEG5XmikXkSpW69Lg Pu/Fgy+EsHC7LfGplrRqgD7YfDtM2Q5JN8pDDD0EJiLIlis/4zbE8ZmaQVzTATXORj/i EZxRkAvCYo0be0ux/t8kOgfEIEMudFD+voJGlsC/6DQQ/7r7RD+WOMTA4T0DbnYRjsR9 opGA== X-Forwarded-Encrypted: i=1; AJvYcCUmP+MLa6IW0ZdonotwR9sniUDNFqKAlF9i0kCHEE+rRkXcC0eNWG1QgC89o89q3u1ydqjJ89RcB/5jy0DG@lists.postgresql.org X-Gm-Message-State: AOJu0YxNg+6JakY255YmH5be4ZxMVJacE8nmsLVVAW41r/de6JTBcLA8 IQj6vZV9HaikAJlK6ZxfZSPIfV/2ILQHVsO/YWpf56RqkqzY46+IAZce2NxwHmhtabOiGxtpvaM c2nqlKAHo8mUfKAf3sF/r9cy8dLSVBkA= X-Gm-Gg: AY/fxX4+MLJilJeSVY8wTeYEiT+bj2PXUVJUYyazoNSHUJvfUu82upt6/hqElvnAwNL 5EA8ABpAn/JPhtrHLBLTzfbakM0j9BonPSM7I4PuR4mXYT0ooXh8VyoNA672WTBS/F9wVlKsvPM 0KxqT1wRkyWHXZmF0OYlgkeyjmNKOCHwvr+ZkaFAgSZIidmmSWDjh6WHDnoZSo20nTFQaX2mnTv oGpWaQTvZhfhNXnY2QeUZUgOiIOvET75/Atpe4DEaFbMODLxIPXL2ssiL6sjrB1/nwWgPqg X-Google-Smtp-Source: AGHT+IEPHvdBdAwuUsS3BJl6OBUmZRFptNYXYSNb3g6DP6zvPM9VFYi20G0hYQ5umavda/vAQe1hBmmx9X9SovzgLAo= X-Received: by 2002:a05:6402:42c4:b0:64b:404c:d99b with SMTP id 4fb4d7f45d1cf-64b8edc8a37mr11527749a12.25.1766427674073; Mon, 22 Dec 2025 10:21:14 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Mon, 22 Dec 2025 13:20:59 -0500 X-Gm-Features: AQt7F2qerW2Pkt4EBekpXZSatYuJzjZnXrMxJF_4VwRXWN-KMxaYFCKtIqJFROI Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Xuneng Zhou , Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas , Chao Li Content-Type: multipart/mixed; boundary="000000000000094d2a06468e7e25" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000094d2a06468e7e25 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Dec 20, 2025 at 7:32=E2=80=AFAM Kirill Reshke wrote: > > Hi! I checked v29-0009, about HeapTupleSatisfiesVacuumHorizon. Origins > of this code track down to fdf9e21196a6 which was committed as part of > [0], at which point > there was no HeapTupleSatisfiesVacuumHorizon function. I guess this is > the reason this optimization was not performed earlier. Thanks for taking a look into this! > I also think this patch is correct, because we do similar things for > HEAPTUPLE_DEAD & HEAPTUPLE_RECENTLY_DEAD, and > HeapTupleSatisfiesVacuumHorizon is just a proxy to > HeapTupleSatisfiesVacuumHorizon with only difference in DEAD VS > RECENTLY_DEAD handling. > > Similar change could be done at heapam_scan_analyze_next_tuple > > ... > case HEAPTUPLE_DEAD: > case HEAPTUPLE_RECENTLY_DEAD: > /* Count dead and recently-dead rows */ > *deadrows +=3D 1; > break; In v30 sent here [1], I did end up making this change in 0010. I just realized that I should have also changed table_scan_analyze_next_tuple() and removed the call to GetOldestRemovableTransactionId(). I've done that in attached v31. I'm not sure we should change the table AM API (by removing OldestXmin), though. I looked for table AMs implementing scan_analyze_next_tuple() to see if they use OldestXmin. I found two: OrioleDB [2] and Citus columnar [3], which both implement scan_analyze_next_tuple() and neither of them use OldestXmin. I couldn't easily find other table AMs implementing scan_analyze_next_tuple(). I don't have a strong sense of whether or not I should make this change. Changing it is churn to a public API and doesn't specifically enable us to do something. I could also just leave it unused by heapam's implementation. I haven't checked what, if any, other table AMs callbacks have parameters completely unused by their heap implementation. So, I'm on the fence about whether or not to make the change at all, and, if I do, whether or not to change the table AM callback. That is done in v31, though, so we can discuss. - Melanie [1] https://www.postgresql.org/message-id/CAAKRu_ZCjHoRPfQ8AbMrFY8TOMCPAvZ0= _m9SX7yg0edfTk45-g%40mail.gmail.com [2] https://github.com/orioledb/orioledb/blob/acff65984d106dabf708a179e2c66= 94297e08c02/src/tableam/handler.c#L978C68-L978C78 [3] https://github.com/citusdata/citus/blob/ee3812d267db3ab007efb6f5f432c82= c1f448695/src/backend/columnar/columnar_tableam.c#L1418 --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="UTF-8"; name="v31-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v31-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhb6d60 RnJvbSBlYzE3NTVhMzA1NTIyOWQ1YmVmOWNjOTYzZjhmNmI3ZWRiMmExY2QzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAwMS8xNl0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgYXNzZXJ0IG91dAph bnl3YXkuCgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBW TeKAnSBjYXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFu Y2hlcyBpbiBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0 aGUgaW50ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVz dCBhbHdheXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNo YWluLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hl biBubyBoZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1 cmVzIHRoYXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRk ZWQgdG8gdGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZm ZXIgZnJvbSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9O T19DSEFOR0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0 aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNyaW5h dGggUmVkZHkgU2FkaXBpcmFsbGEgPHNyaW5hdGgyMTMzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBYdW5l bmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcxN0U4QjA1JTQwZ21haWwuY29tCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWld4NWdDYmVDZjdQV0N2 OHA1JTNEJTNEYjdFRXdzMFZEMndrc0R4cFhDdkN5SHZRJTQwbWFpbC5nbWFpbC5jb20KLS0tCiAu Li4vcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCAgfCA0NCArKysrKysr KysrCiBjb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsICAgfCAyMCAr KysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgODcg KysrKy0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0 ZWQvcGdfdmlzaWJpbGl0eS5vdXQgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdf dmlzaWJpbGl0eS5vdXQKaW5kZXggMDlmYTU5MzNhMzUuLmUxMGYxNzA2MDE1IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKKysrIGIv Y29udHJpYi9wZ192aXNpYmlsaXR5L2V4cGVjdGVkL3BnX3Zpc2liaWxpdHkub3V0CkBAIC0xLDQg KzEsNSBAQAogQ1JFQVRFIEVYVEVOU0lPTiBwZ192aXNpYmlsaXR5OworQ1JFQVRFIEVYVEVOU0lP TiBwYWdlaW5zcGVjdDsKIC0tCiAtLSByZWNlbnRseS1kcm9wcGVkIHRhYmxlCiAtLQpAQCAtMjA0 LDYgKzIwNSw0OSBAQCBzZWxlY3QgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAoJ3Rlc3RfcGFy dGl0aW9uJyk7CiAgCiAoMSByb3cpCiAKKy0tIHRlc3QgdGhlIGNhc2Ugd2hlcmUgdmFjdXVtIHBo YXNlIEkgZG9lcyBub3QgbmVlZCB0byBtb2RpZnkgdGhlIGhlYXAgYnVmZmVyCistLSBhbmQgb25s eSBuZWVkcyB0byBzZXQgdGhlIFZNCitjcmVhdGUgdGFibGUgdGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwKGEgaW50KTsKK2luc2VydCBpbnRvIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCB2YWx1ZXMg KDEpOwordmFjdXVtIChmcmVlemUpIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KDEsMSkKKygxIHJvdykKKworLS0gdGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGly dGllZCBieSBmcmVlemluZyB0aGUgc29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRp bmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBp dAorc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAnKTsKKyBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMCwwKQorKDEgcm93KQorCistLSB0 aG91Z2ggdGhlIFZNIGlzIHRydW5jYXRlZCwgdGhlIGhlYXAgcGFnZS1sZXZlbCB2aXNpYmlsaXR5 IGhpbnQsCistLSBQRF9BTExfVklTSUJMRSBzaG91bGQgc3RpbGwgYmUgc2V0CitTRUxFQ1QgKGZs YWdzICYgeCcwMDA0Jzo6aW50KSA8PiAwCisgICAgICAgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jh d19wYWdlKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnLCAwKSk7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSB2YWN1dW0gc2V0cyB0aGUgVk0KK3ZhY3V1bSB0ZXN0 X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgn dGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7CisgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDEpCisoMSByb3cpCisKIC0tIHRlc3Qg Y29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChhIGludCwgYiBjaGFyKDE1MDAp KTsKIC0tIGxvYWQgYWxsIHJvd3MgdmlhIENPUFkgRlJFRVpFIGFuZCBlbnN1cmUgdGhhdCBhbGwg cGFnZXMgYXJlIHNldCBhbGwtdmlzaWJsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmls aXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdf dmlzaWJpbGl0eS5zcWwKaW5kZXggNWFmMDZlYzViNzYuLjU3YWY4YTBjNWI2IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsCisrKyBiL2NvbnRy aWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKQEAgLTEsNCArMSw1IEBACiBD UkVBVEUgRVhURU5TSU9OIHBnX3Zpc2liaWxpdHk7CitDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNw ZWN0OwogCiAtLQogLS0gcmVjZW50bHktZHJvcHBlZCB0YWJsZQpAQCAtOTQsNiArOTUsMjUgQEAg c2VsZWN0IGNvdW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3Rf cGFydGl0aW9uJyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0aXRp b24nKTsgLS0gaG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21h cCgndGVzdF9wYXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0gcGhh c2UgSSBkb2VzIG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBvbmx5 IG5lZWRzIHRvIHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hl YXAoYSBpbnQpOworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVlcyAo MSk7Cit2YWN1dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBn X3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworLS0g dGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUg c29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhh dCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRl X3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKK3NlbGVjdCBwZ192 aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHRo b3VnaCB0aGUgVk0gaXMgdHJ1bmNhdGVkLCB0aGUgaGVhcCBwYWdlLWxldmVsIHZpc2liaWxpdHkg aGludCwKKy0tIFBEX0FMTF9WSVNJQkxFIHNob3VsZCBzdGlsbCBiZSBzZXQKK1NFTEVDVCAoZmxh Z3MgJiB4JzAwMDQnOjppbnQpIDw+IDAKKyAgICAgICAgRlJPTSBwYWdlX2hlYWRlcihnZXRfcmF3 X3BhZ2UoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcsIDApKTsKKy0tIHZhY3V1bSBzZXRzIHRo ZSBWTQordmFjdXVtIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBwZ192aXNpYmls aXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKwogLS0gdGVzdCBj b3B5IGZyZWV6ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUwMCkp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzA3NzhhMTU2MzkuLmNl Y2JhMjE0NmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDkzLDE2 ICsyMDkzLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogb2Yg bGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2li bGUgYW5kCiAJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKIAkgKi8KLQlpZiAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlKQorCWlmICgocHJlc3VsdC5h bGxfdmlzaWJsZSAmJiAhYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtKSB8fAorCQkocHJlc3Vs dC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKQog CXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKIAkJ CWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCiAJCS8qCiAJCSAqIEl0 IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlz IHNldApAQCAtMjExMCwxNSArMjEwOCwyNSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq dmFjcmVsLAogCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNl dCBib3RoIGJpdHMgc28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkg KiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICog R2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNl cyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICog RXZlbiBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgd2UgZG9uJ3QgbmVlZCB0byB3 b3JyeSBhYm91dAorCQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlci4g TmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvCisJCSAqIHdoZXJlIFBEX0FMTF9WSVNJQkxFIGlzIHNl dCBidXQgdGhlIFZNIGlzIG5vdCBpcyBpZiB0aGUgVk0gd2FzCisJCSAqIHJlbW92ZWQgLS0gYW5k IHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZyBmb3IuIEFuZCBpZiB3ZSBhZGQgdGhlCisJCSAq IGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gKHdpdGhvdXQgcGFzc2luZyBSRUdCVUZfTk9f Q0hBTkdFUyksCisJCSAqIGl0IG11c3QgYmUgbWFya2VkIGRpcnR5LgogCQkgKi8KIAkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCisJCS8qCisJCSAq IElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFu c2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gc3VmZmljaWVudCB0bworCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3Ig UkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4u CisJCSAqLworCQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCiAJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJ CSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKQEAgLTIxOTAsNjUgKzIxOTgsNiBAQCBsYXp5X3NjYW5fcHJ1bmUo TFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJ fQogCi0JLyoKLQkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBpcyBhbGwtZnJvemVuIGJ1dCBu b3QgbWFya2VkIGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMgYWxsLWZyb3plbi4KLQkgKi8K LQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJv emVuICYmCi0JCQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIp KQotCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0KLQkJLyoKLQkJICogQXZvaWQgcmVseWluZyBv biBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JCSAqIHBh Z2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQgaGF2 ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZlbiB3aGVuIGFsbF92aXNpYmxlIGlzIHNldAotCQkg Ki8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQl7Ci0JCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl9Ci0KLQkJLyoKLQkJICog U2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFuZCBhbGwtdmlzaWJsZSkgaW4gdGhlIFZNLgotCQkg KgotCQkgKiBXZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIgY3V0b2ZmX3hp ZCwgc2luY2UgYQotCQkgKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1h a2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPCi0JCSAqIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCW9sZF92bWJpdHMgPSB2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFs aWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklk LAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JCS8qCi0JCSAqIFRoZSBwYWdlIHdhcyBsaWtl bHkgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgaW4gdGhlIFZNLiBIb3dldmVyLAotCQkgKiB0aGVy ZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGl0IHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVu Ci0JCSAqIHNldHRpbmcgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0 aGUgdmlzaWJpbGl0eQotCQkgKiBkdXJpbmcgcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1 ZSBvZiBvbGRfdm1iaXRzIGFueXdheSB0bwotCQkgKiBlbnN1cmUgdGhlIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKi8KLQkJaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9m cm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQotCQkvKgot CQkgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgcGFnZSB3YXMgbm90IHNldCBhbGwtZnJv emVuIGluIHRoZSBWTQotCQkgKiBhYm92ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZSB2 YWx1ZSBvZiBvbGRfdm1iaXRzLgotCQkgKi8KLQkJZWxzZQotCQl7Ci0JCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQl9Ci0K IAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v31-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbaat1 RnJvbSBmNTU2Nzg1MTAzNzkyOTljYTY2Y2Y3OGZiZjZlMDhlYzhlY2RhMGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMDIvMTZdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgY29uZmlybWluZyBpdCB3YXMgbm90IGFsbC12aXNpYmxlLiBOb3cg dGhhdCB0aGUgVk0gcGFnZSBpcwphbHJlYWR5IHBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1 bCBiZW5lZml0IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0Kc3RhdHVzLgoKUmVtb3ZpbmcgdGhp cyBjYWNoZWQgdmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVh cCgpCmFuZCBsYXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsg dGhhdCB3aWxsIHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdp bGwgbm90IGhhdmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlIHdoaWNoIHdvdWxkIG1ha2UgdGhl IGxvZ2ljIGhhcmRlciB0byByZWFzb24gYWJvdXQuIEVsaW1pbmF0aW5nCml0IGFsc28gZW5hYmxl cyB1cyB0byBkZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25n IHdpdGggcmVtb3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNr aW5nIHRoZQp2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBh bHNvIG1vdmVzIHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlz IHJlb3JkZXJpbmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUg Y2hlY2tzIGFyZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4g SXQgZG9lcywgaG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0 YW5kLiBUaGUgbmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0aGF0IGFm dGVyCmZpeGluZyBjb3JydXB0aW9uLCB0aGUgVk0gY291bGQgYmUgbmV3bHkgc2V0LCBpZiBwcnVu aW5nIGZvdW5kIHRoZSBwYWdlCmFsbC12aXNpYmxlLgoKTm93IHRoYXQgbm8gY2FsbGVycyBvZiB2 aXNpYmlsaXR5bWFwX3NldCgpIHVzZSBpdHMgcmV0dXJuIHZhbHVlLCBjaGFuZ2UKaXRzIChhbmQg dmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKCkpIHJldHVybiB0eXBlIHRvIHZvaWQuCgpBdXRob3I6 IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQ2hh byBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFh1bmVuZyBaaG91IDx4 dW5lbmd6aG91QGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS81Q0VB QTE2Mi02N0IxLTQ0REEtQjYwRC04QjY1NzE3RThCMDUlNDBnbWFpbC5jb20KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgfCAxODIgKysrKysrKysrKystLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCAgIDkgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggICAgICB8ICAxOCArLS0KIDMgZmls ZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgMTE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBjZWNiYTIxNDZlYS4uZDQ3ZWQ3ODE0YzggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI0OCwxMyArMjQ4LDYgQEAgdHlw ZWRlZiBlbnVtCiAgKi8KICNkZWZpbmUgRUFHRVJfU0NBTl9SRUdJT05fU0laRSA0MDk2CiAKLS8q Ci0gKiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBzZXRzIHRoZXNlIGZsYWdzIHRvIGNvbW11 bmljYXRlIGluZm9ybWF0aW9uCi0gKiBhYm91dCB0aGUgYmxvY2sgaXQgcmVhZCB0byB0aGUgY2Fs bGVyLgotICovCi0jZGVmaW5lIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQgKDEgPDwgMCkKLSNk ZWZpbmUgVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0gKDEgPDwgMSkKLQogdHlw ZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogewogCS8qIFRhcmdldCBoZWFwIHJlbGF0aW9uIGFuZCBp dHMgaW5kZXhlcyAqLwpAQCAtMzU4LDcgKzM1MSw2IEBAIHR5cGVkZWYgc3RydWN0IExWUmVsU3Rh dGUKIAkvKiBTdGF0ZSBtYWludGFpbmVkIGJ5IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpICov CiAJQmxvY2tOdW1iZXIgY3VycmVudF9ibG9jazsJLyogbGFzdCBibG9jayByZXR1cm5lZCAqLwog CUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2s7IC8qIG5leHQgdW5za2lwcGFibGUg YmxvY2sgKi8KLQlib29sCQluZXh0X3Vuc2tpcHBhYmxlX2FsbHZpczsJLyogaXRzIHZpc2liaWxp dHkgc3RhdHVzICovCiAJYm9vbAkJbmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkOyAvKiBp ZiBpdCB3YXMgZWFnZXJseSBzY2FubmVkICovCiAJQnVmZmVyCQluZXh0X3Vuc2tpcHBhYmxlX3Zt YnVmZmVyOwkvKiBidWZmZXIgY29udGFpbmluZyBpdHMgVk0gYml0ICovCiAKQEAgLTQzMiw3ICs0 MjQsNyBAQCBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZh Y3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1 ZmZlcik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKLQkJCQkJCQlC dWZmZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJ CUJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQlib29sICpoYXNfbHBkZWFkX2l0ZW1zLCBib29sICp2 bV9wYWdlX2Zyb3plbik7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbm9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICBCbG9ja051bWJlciBibGtubywgUGFnZSBw YWdlLApAQCAtMTI0OCw3ICsxMjQwLDYgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFj cmVsKQogCS8qIEluaXRpYWxpemUgZm9yIHRoZSBmaXJzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soKSBjYWxsICovCiAJdmFjcmVsLT5jdXJyZW50X2Jsb2NrID0gSW52YWxpZEJsb2NrTnVtYmVy OwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9ibG9jayA9IEludmFsaWRCbG9ja051bWJlcjsK LQl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYWxsdmlzID0gZmFsc2U7CiAJdmFjcmVsLT5uZXh0 X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsKIAl2YWNyZWwtPm5leHRfdW5za2lw cGFibGVfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBAIC0xMjY0LDEzICsxMjU1LDEzIEBA IGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJCQkJCQkJCQlNQUlOX0ZPUktO VU0sCiAJCQkJCQkJCQkJaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrLAogCQkJCQkJCQkJCXZhY3Jl bCwKLQkJCQkJCQkJCQlzaXplb2YodWludDgpKTsKKwkJCQkJCQkJCQlzaXplb2YoYm9vbCkpOwog CiAJd2hpbGUgKHRydWUpCiAJewogCQlCdWZmZXIJCWJ1ZjsKIAkJUGFnZQkJcGFnZTsKLQkJdWlu dDgJCWJsa19pbmZvID0gMDsKKwkJYm9vbAkJd2FzX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsKIAkJ aW50CQkJbmRlbGV0ZWQgPSAwOwogCQlib29sCQloYXNfbHBkZWFkX2l0ZW1zOwogCQl2b2lkCSAg ICpwZXJfYnVmZmVyX2RhdGEgPSBOVUxMOwpAQCAtMTMzOSwxMyArMTMzMCwxMyBAQCBsYXp5X3Nj YW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCWlmICghQnVmZmVySXNWYWxpZChidWYpKQog CQkJYnJlYWs7CiAKLQkJYmxrX2luZm8gPSAqKCh1aW50OCAqKSBwZXJfYnVmZmVyX2RhdGEpOwor CQl3YXNfZWFnZXJfc2Nhbm5lZCA9ICooKGJvb2wgKikgcGVyX2J1ZmZlcl9kYXRhKTsKIAkJQ2hl Y2tCdWZmZXJJc1Bpbm5lZE9uY2UoYnVmKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsK IAkJYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwogCiAJCXZhY3JlbC0+c2Nhbm5l ZF9wYWdlcysrOwotCQlpZiAoYmxrX2luZm8gJiBWQUNfQkxLX1dBU19FQUdFUl9TQ0FOTkVEKQor CQlpZiAod2FzX2VhZ2VyX3NjYW5uZWQpCiAJCQl2YWNyZWwtPmVhZ2VyX3NjYW5uZWRfcGFnZXMr KzsKIAogCQkvKiBSZXBvcnQgYXMgYmxvY2sgc2Nhbm5lZCwgdXBkYXRlIGVycm9yIHRyYWNlYmFj ayBpbmZvcm1hdGlvbiAqLwpAQCAtMTQxNiw3ICsxNDA3LDYgQEAgbGF6eV9zY2FuX2hlYXAoTFZS ZWxTdGF0ZSAqdmFjcmVsKQogCQlpZiAoZ290X2NsZWFudXBfbG9jaykKIAkJCW5kZWxldGVkID0g bGF6eV9zY2FuX3BydW5lKHZhY3JlbCwgYnVmLCBibGtubywgcGFnZSwKIAkJCQkJCQkJCSAgIHZt YnVmZmVyLAotCQkJCQkJCQkJICAgYmxrX2luZm8gJiBWQUNfQkxLX0FMTF9WSVNJQkxFX0FDQ09S RElOR19UT19WTSwKIAkJCQkJCQkJCSAgICZoYXNfbHBkZWFkX2l0ZW1zLCAmdm1fcGFnZV9mcm96 ZW4pOwogCiAJCS8qCkBAIC0xNDMzLDggKzE0MjMsNyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0 YXRlICp2YWNyZWwpCiAJCSAqIGV4Y2x1ZGUgcGFnZXMgc2tpcHBlZCBkdWUgdG8gY2xlYW51cCBs b2NrIGNvbnRlbnRpb24gZnJvbSBlYWdlcgogCQkgKiBmcmVlemUgYWxnb3JpdGhtIGNhcHMuCiAJ CSAqLwotCQlpZiAoZ290X2NsZWFudXBfbG9jayAmJgotCQkJKGJsa19pbmZvICYgVkFDX0JMS19X QVNfRUFHRVJfU0NBTk5FRCkpCisJCWlmIChnb3RfY2xlYW51cF9sb2NrICYmIHdhc19lYWdlcl9z Y2FubmVkKQogCQl7CiAJCQkvKiBBZ2dyZXNzaXZlIHZhY3V1bXMgZG8gbm90IGVhZ2VyIHNjYW4u ICovCiAJCQlBc3NlcnQoIXZhY3JlbC0+YWdncmVzc2l2ZSk7CkBAIC0xNjAxLDcgKzE1OTAsNiBA QCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVhbSAqc3RyZWFtLAogewogCUJsb2Nr TnVtYmVyIG5leHRfYmxvY2s7CiAJTFZSZWxTdGF0ZSAqdmFjcmVsID0gY2FsbGJhY2tfcHJpdmF0 ZV9kYXRhOwotCXVpbnQ4CQlibGtfaW5mbyA9IDA7CiAKIAkvKiByZWxpZXMgb24gSW52YWxpZEJs b2NrTnVtYmVyICsgMSBvdmVyZmxvd2luZyB0byAwIG9uIGZpcnN0IGNhbGwgKi8KIAluZXh0X2Js b2NrID0gdmFjcmVsLT5jdXJyZW50X2Jsb2NrICsgMTsKQEAgLTE2NjQsOCArMTY1Miw4IEBAIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpzdHJlYW0sCiAJCSAqIG90aGVyd2lz ZSB0aGV5IHdvdWxkJ3ZlIGJlZW4gdW5za2lwcGFibGUuCiAJCSAqLwogCQl2YWNyZWwtPmN1cnJl bnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlibGtfaW5mbyB8PSBWQUNfQkxLX0FMTF9WSVNJQkxF X0FDQ09SRElOR19UT19WTTsKLQkJKigodWludDggKikgcGVyX2J1ZmZlcl9kYXRhKSA9IGJsa19p bmZvOworCQkvKiBCbG9jayB3YXMgbm90IGVhZ2VyIHNjYW5uZWQgKi8KKwkJKigoYm9vbCAqKSBw ZXJfYnVmZmVyX2RhdGEpID0gZmFsc2U7CiAJCXJldHVybiB2YWNyZWwtPmN1cnJlbnRfYmxvY2s7 CiAJfQogCWVsc2UKQEAgLTE2NzcsMTEgKzE2NjUsNyBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soUmVhZFN0cmVhbSAqc3RyZWFtLAogCQlBc3NlcnQobmV4dF9ibG9jayA9PSB2YWNyZWwtPm5l eHRfdW5za2lwcGFibGVfYmxvY2spOwogCiAJCXZhY3JlbC0+Y3VycmVudF9ibG9jayA9IG5leHRf YmxvY2s7Ci0JCWlmICh2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYWxsdmlzKQotCQkJYmxrX2lu Zm8gfD0gVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk07Ci0JCWlmICh2YWNyZWwt Pm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCkKLQkJCWJsa19pbmZvIHw9IFZBQ19CTEtf V0FTX0VBR0VSX1NDQU5ORUQ7Ci0JCSooKHVpbnQ4ICopIHBlcl9idWZmZXJfZGF0YSkgPSBibGtf aW5mbzsKKwkJKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEpID0gdmFjcmVsLT5uZXh0X3Vuc2tp cHBhYmxlX2VhZ2VyX3NjYW5uZWQ7CiAJCXJldHVybiB2YWNyZWwtPmN1cnJlbnRfYmxvY2s7CiAJ fQogfQpAQCAtMTcwNiw3ICsxNjkwLDYgQEAgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExW UmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpCiAJQmxvY2tOdW1iZXIgbmV4dF91 bnNraXBwYWJsZV9ibG9jayA9IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9ibG9jayArIDE7CiAJ QnVmZmVyCQluZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBh YmxlX3ZtYnVmZmVyOwogCWJvb2wJCW5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCA9IGZh bHNlOwotCWJvb2wJCW5leHRfdW5za2lwcGFibGVfYWxsdmlzOwogCiAJKnNraXBzYWxsdmlzID0g ZmFsc2U7CiAKQEAgLTE3MTYsNyArMTY5OSw2IEBAIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQogCQkJCQkJCQkJCQkJCSAg IG5leHRfdW5za2lwcGFibGVfYmxvY2ssCiAJCQkJCQkJCQkJCQkJICAgJm5leHRfdW5za2lwcGFi bGVfdm1idWZmZXIpOwogCi0JCW5leHRfdW5za2lwcGFibGVfYWxsdmlzID0gKG1hcGJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwOwogCiAJCS8qCiAJCSAqIEF0IHRoZSBzdGFy dCBvZiBlYWNoIGVhZ2VyIHNjYW4gcmVnaW9uLCBub3JtYWwgdmFjdXVtcyB3aXRoIGVhZ2VyCkBA IC0xNzM1LDcgKzE3MTcsNyBAQCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0 ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcykKIAkJICogQSBibG9jayBpcyB1bnNraXBwYWJs ZSBpZiBpdCBpcyBub3QgYWxsIHZpc2libGUgYWNjb3JkaW5nIHRvIHRoZQogCQkgKiB2aXNpYmls aXR5IG1hcC4KIAkJICovCi0JCWlmICghbmV4dF91bnNraXBwYWJsZV9hbGx2aXMpCisJCWlmICgo bWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCiAJCXsKIAkJCUFzc2Vy dCgobWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCk7CiAJCQlicmVhazsK QEAgLTE3OTIsNyArMTc3NCw2IEBAIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0 YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQogCiAJLyogd3JpdGUgdGhlIGxvY2FsIHZh cmlhYmxlcyBiYWNrIHRvIHZhY3JlbCAqLwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9ibG9j ayA9IG5leHRfdW5za2lwcGFibGVfYmxvY2s7Ci0JdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpcyA9IG5leHRfdW5za2lwcGFibGVfYWxsdmlzOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJs ZV9lYWdlcl9zY2FubmVkID0gbmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkOwogCXZhY3Jl bC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlciA9IG5leHRfdW5za2lwcGFibGVfdm1idWZmZXI7 CiB9CkBAIC0xOTUzLDkgKzE5MzQsNyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIpCiAgKiBDYWxsZXIgbXVzdCBob2xkIHBpbiBhbmQgYnVmZmVyIGNsZWFu dXAgbG9jayBvbiB0aGUgYnVmZmVyLgogICoKICAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgY29u dGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5IGluZm9ybWF0aW9uCi0gKiBmb3Ig dGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gaXMgdGhl IHNhdmVkCi0gKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9jayBsb29rZWQgdXAg ZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlz IHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgorICogZm9yIHRoZSBoZWFwIGJsb2Nr LCBibGtuby4KICAqCiAgKiAqaGFzX2xwZGVhZF9pdGVtcyBpcyBzZXQgdG8gdHJ1ZSBvciBmYWxz ZSBkZXBlbmRpbmcgb24gd2hldGhlciwgdXBvbiByZXR1cm4KICAqIGZyb20gdGhpcyBmdW5jdGlv biwgYW55IExQX0RFQUQgaXRlbXMgYXJlIHN0aWxsIHByZXNlbnQgb24gdGhlIHBhZ2UuCkBAIC0x OTcyLDcgKzE5NTEsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJ CUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCVBhZ2UgcGFnZSwKIAkJCQlCdWZmZXIgdm1idWZmZXIs Ci0JCQkJYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCiAJCQkJYm9vbCAqaGFzX2xw ZGVhZF9pdGVtcywKIAkJCQlib29sICp2bV9wYWdlX2Zyb3plbikKIHsKQEAgLTE5ODYsNiArMTk2 NCw4IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCS52aXN0ZXN0ID0g dmFjcmVsLT52aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKKwl1 aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJdWludDgJCW5ld192bWJpdHMgPSAwOwogCiAJQXNzZXJ0 KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0yMDg4LDcwICsyMDY4 LDcgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1 bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwogCUFzc2VydCghcHJlc3Vs dC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwogCi0JLyoKLQkgKiBIYW5kbGUg c2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUg Vk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5k IGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKLQkgKi8KLQlp ZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSkg fHwKLQkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWwsIGJsa25vLCAm dm1idWZmZXIpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0J CQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0KLQkJLyoKLQkJICogSXQgc2hv dWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0 Ci0JCSAqIHdoaWxlIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNl IGlzIGFsbG93ZWQgKGlmCi0JCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJk bGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlCi0JCSAqIGdldCBiYWNrIGluIHN5bmMuCi0J CSAqCi0JCSAqIEV2ZW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHdlIGRvbid0 IG5lZWQgdG8gd29ycnkgYWJvdXQKLQkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVh cCBidWZmZXIuIE5lYXJseSB0aGUgb25seSBzY2VuYXJpbwotCQkgKiB3aGVyZSBQRF9BTExfVklT SUJMRSBpcyBzZXQgYnV0IHRoZSBWTSBpcyBub3QgaXMgaWYgdGhlIFZNIHdhcwotCQkgKiByZW1v dmVkIC0tIGFuZCB0aGF0IGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLiBBbmQgaWYgd2UgYWRk IHRoZQotCQkgKiBoZWFwIGJ1ZmZlciB0byB0aGUgV0FMIGNoYWluICh3aXRob3V0IHBhc3Npbmcg UkVHQlVGX05PX0NIQU5HRVMpLAotCQkgKiBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eS4KLQkJICov Ci0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQot CQkvKgotCQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJ bnZhbGlkVHJhbnNhY3Rpb25JZAotCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFw c2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJICogbWFrZSBldmVyeXRoaW5n IHNhZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCi0JCSAqIHdl cmUgZnJvemVuLgotCQkgKi8KLQkJQXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKLQkJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQot CQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYs Ci0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBw cmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBmbGFncyk7Ci0KLQkJLyoK LQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBh bGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0IGZvciBsb2dn aW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJM RSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJaWYg KHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0JCX0KLQkJ ZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYK LQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5f cGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQl9CisJb2xkX3ZtYml0 cyA9IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZl cik7CiAKIAkvKgogCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAg Yml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCkBAIC0yMTU5LDggKzIwNzYsOCBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCiAJICog d2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0 LgogCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiAhUGFnZUlz QWxsVmlzaWJsZShwYWdlKSAmJgotCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwt PnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikgIT0gMCkKKwlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFn ZSkgJiYKKwkJKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApCiAJ ewogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRF RCksCkBAIC0yMTY5LDYgKzIwODYsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCiAJCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZl ciwKIAkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQkvKiBWTSBiaXRzIGFyZSBu b3cgY2xlYXIgKi8KKwkJb2xkX3ZtYml0cyA9IDA7CiAJfQogCiAJLyoKQEAgLTIxOTYsNiArMjEx NSw3MSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQlNYXJrQnVmZmVy RGlydHkoYnVmKTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZt YnVmZmVyLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCS8qIFZNIGJpdHMg YXJlIG5vdyBjbGVhciAqLworCQlvbGRfdm1iaXRzID0gMDsKKwl9CisKKwlpZiAoIXByZXN1bHQu YWxsX3Zpc2libGUpCisJCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOworCisJLyogU2V0IHRoZSB2 aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KKwluZXdfdm1iaXRzID0g VklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKworCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCisJ CW5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCisJLyogTm90aGluZyB0 byBkbyAqLworCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCisJCXJldHVybiBwcmVzdWx0 Lm5kZWxldGVkOworCisJQXNzZXJ0KHByZXN1bHQuYWxsX3Zpc2libGUpOworCisJLyoKKwkgKiBJ dCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBp cyBzZXQgd2hpbGUKKwkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2 ZXJzZSBpcyBhbGxvd2VkIChpZiBjaGVja3N1bXMKKwkgKiBhcmUgbm90IGVuYWJsZWQpLiBSZWdh cmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UgZ2V0IGJhY2sgaW4KKwkgKiBzeW5jLgor CSAqCisJICogVGhlIGhlYXAgYnVmZmVyIG11c3QgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBhZGRp bmcgaXQgdG8gdGhlIFdBTCBjaGFpbgorCSAqIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0 IHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlCisJICogaGVhcCBidWZmZXIg aWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHRob3VnaC4gSXQgaXMgZXh0cmVtZWx5 CisJICogcmFyZSB0byBoYXZlIGEgY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBQRF9BTExfVklTSUJM RSBhbHJlYWR5IHNldCBhbmQKKwkgKiB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMgbm8g cG9pbnQgaW4gb3B0aW1pemluZyBpdC4KKwkgKi8KKwlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK KwlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKworCS8qCisJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcg c2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkgKiB0aGUg Y3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQg dG8gbWFrZQorCSAqIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhl IHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCisJICovCisJQXNzZXJ0KCFwcmVzdWx0LmFsbF9m cm96ZW4gfHwKKwkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3Rf aG9yaXpvbikpOworCisJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYs CisJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJICBuZXdfdm1iaXRzKTsKKworCS8qCisJICogSWYgdGhl IHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGlu IHRoZSBWTSwKKwkgKiBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCisJICovCisJ aWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKKwl7CisJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYgKHByZXN1bHQuYWxsX2Zyb3pl bikKKwkJeworCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKKwkJCSp2 bV9wYWdlX2Zyb3plbiA9IHRydWU7CisJCX0KKwl9CisJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSBwcmVzdWx0LmFsbF9mcm96ZW4p CisJeworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVu ID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCBkMTQ1ODhlOTJhZS4uY2RjYjQ3NWU1MDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTI0MCwxMCArMjQwLDgg QEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVm KQogICogWW91IG11c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBw YWdlIHRvIHRoaXMgZnVuY3Rpb24uCiAgKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRv IHBpbiB0aGUgcmlnaHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KICAqIGFueSBJL08u Ci0gKgotICogUmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBz ZXR0aW5nIGZsYWdzLgogICovCi11aW50OAordm9pZAogdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCQkgIFhMb2dS ZWNQdHIgcmVjcHRyLCBCdWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKIAkJ CQkgIHVpbnQ4IGZsYWdzKQpAQCAtMzIwLDcgKzMxOCw2IEBAIHZpc2liaWxpdHltYXBfc2V0KFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJfQogCiAJ TG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwog fQogCiAvKgpAQCAtMzQzLDcgKzM0MCw3IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAgKgogICogcmxvY2F0b3Ig aXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KLXVpbnQ4Cit2b2lkCiB2 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJCSBCdWZm ZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAogCQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yKQpAQCAtMzg2LDggKzM4Myw2IEBAIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051 bWJlciBoZWFwQmxrLAogCQltYXBbbWFwQnl0ZV0gfD0gKGZsYWdzIDw8IG1hcE9mZnNldCk7CiAJ CU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7CiAJfQotCi0JcmV0dXJuIHN0YXR1czsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGM2ZmEzN2JlOTY4Li43ODdjMTllNWZl ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0zMiwxNSArMzIsMTUgQEAgZXh0 ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssCiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBib29sIHZp c2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1Zik7Ci1l eHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCQkJCSAgIFhMb2dSZWNQdHIg cmVjcHRyLAotCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklk IGN1dG9mZl94aWQsCi0JCQkJCQkJICAgdWludDggZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4IHZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJCQkJICBCdWZm ZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAotCQkJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBy bG9jYXRvcik7CitleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCisJ CQkJCQkJICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKKwkJCQkJCQkgIFhM b2dSZWNQdHIgcmVjcHRyLAorCQkJCQkJCSAgQnVmZmVyIHZtQnVmLAorCQkJCQkJCSAgVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkLAorCQkJCQkJCSAgdWludDggZmxhZ3MpOworZXh0ZXJuIHZvaWQg dmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJCQkg QnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkJCSBjb25zdCBSZWxGaWxlTG9jYXRv ciBybG9jYXRvcik7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9p ZCB2aXNpYmlsaXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNp YmxlLCBCbG9ja051bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJp bGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKLS0gCjIuNDMuMAoK --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v31-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbg8d2 RnJvbSBkMTk2YmRlZWZhZTJiMTRjYTNiN2FiZjIyYjZkNmNmZmNhMTE2Y2Q0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAwMy8xNl0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIFRoZXJlCmlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIG90aGVy IHRoYW4gbW92aW5nIGl0IGludG8gYSBoZWxwZXIuCgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4u Y2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgMTMyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg1IGlu c2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCBkNDdlZDc4MTRjOC4uYzVmYzViNzFmOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQyMiw2ICs0MjIsMTEgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp Owogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJ CQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOworc3RhdGljIGJvb2wg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBf YnVmZmVyLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBfcGFn ZSwKKwkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIsCisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5Mjgs NiArMTkzMyw4MyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQg KmIpCiAJcmV0dXJuIHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihjb25z dCBPZmZzZXROdW1iZXIgKikgYik7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkg Y29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhIGhlYXAgcGFnZSBhbmQgaXRzCisgKiBjb3JyZXNwb25k aW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNldHRpbmcg dGhlCisgKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAgcGFnZSwgdGhlIGFz c29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQorICogbnVtYmVyIG9mIGRlYWQgaXRlbXMgcHJldmlv dXNseSBpZGVudGlmaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2hp bGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAorICogYnVmZmVyLCBhbmQg dGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRlciB0aGF0IHNhbWUg bG9jay4KKworICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQg c3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiByZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3Vn aCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5l ZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRo YXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25k aW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBjbGVhcmVk IGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2lkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJ CQkJICAgaW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJ CQkJCSAgIHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJ c0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwor CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBz aG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAg SG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRl ciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hl Y2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlz IGNvcnJ1cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJ KCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQorCXsKKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBl cnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAg Yml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklU Uyk7CisJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJ ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRlYWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChX QVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJt c2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJs ZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFn ZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xl YXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJ bGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemlu Zy4KICAqCkBAIC0yMDcwLDU0ICsyMTUyLDEwIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAKIAlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3Jl bC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5 LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkg KiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0 aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkg d2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZv cmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlz QWxsVmlzaWJsZShwYWdlKSAmJgotCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykgIT0gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZp c2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBh Z2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCisJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFn ZSwKKwkJCQkJCQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgIG9sZF92bWJpdHMpKQogCQlvbGRfdm1iaXRzID0gMDsKLQl9Ci0KLQkvKgotCSAqIEl0J3Mg cG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92 YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3 cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0 byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQu IFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2 ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFs bCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhh dCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlv bmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMg Y29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9u IGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVs c2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up KQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1h cmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2 YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+ cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK LQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCi0JCW9sZF92bWJpdHMgPSAwOwotCX0KIAog CWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0t IAoyLjQzLjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v31-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbk5z3 RnJvbSA1NjY3OTRlZWQ2Nzg2ODY4YTExNDdlNmEwNDM2ZDc0YzA2MDNjY2RmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAwNC8xNl0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzMTUgKysrKysr KysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgfCAxNTAgKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAg ICAgIHwgIDIwICsrCiAzIGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNlcnRpb25zKCspLCAxODYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAwN2FhMDhjZmUx NC4uMWMxNDQ2MDU4YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3 ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFj Y2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUg ImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0 eXBlZGVmIHN0cnVjdAogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0 dGVtcHQgZnJlZXppbmcgdHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hl dGhlciBvciBub3QgdG8gYXR0ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0 X3VwZGF0ZV92bTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQw LDE2ICsxNDIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1 bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0 IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlz Ci0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBj b25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5n IGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRo ZSBsaXZlCisJICogdHVwbGVzIG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAq IE5PVEU6IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRl IExQX0RFQUQgaXRlbXMuCiAJICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKCkgdG8gdXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVl emUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4g dmFsdWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkg KiBMUF9ERUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6ZS4KKwkgKiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBm cmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gdmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVk IHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBu b3QgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE5MSw2ICsxOTQsMTcgQEAgc3RhdGljIHZv aWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSk7CiBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGludF9w cnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKK3N0YXRpYyBib29sIGlkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsIGlu dCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJ CQkgICB1aW50OCB2bWJpdHMpOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBy dW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJ CSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIGludCBubHBkZWFkX2l0 ZW1zLAorCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJCQkJCQkgIHVpbnQ4ICpuZXdf dm1iaXRzKTsKIAogCiAvKgpAQCAtMjgwLDYgKzI5NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQlQcnVuZUZyZWV6ZVBhcmFtcyBw YXJhbXMgPSB7CiAJCQkJLnJlbGF0aW9uID0gcmVsYXRpb24sCiAJCQkJLmJ1ZmZlciA9IGJ1ZmZl ciwKKwkJCQkudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyLAogCQkJCS5yZWFzb24gPSBQUlVORV9P Tl9BQ0NFU1MsCiAJCQkJLm9wdGlvbnMgPSAwLAogCQkJCS52aXN0ZXN0ID0gdmlzdGVzdCwKQEAg LTM0MSw2ICszNTYsOCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkvKiBjdXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2lsbCBhdHRlbXB0IGZy ZWV6aW5nICovCiAJQXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSkgfHwgcGFyYW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChw YXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUt PmF0dGVtcHRfdXBkYXRlX3ZtID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVO RV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsK IAogCS8qCkBAIC0zOTYsNTEgKzQxMyw1NCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBWYWN1dW0gbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0 ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCi0JICogd2hldGhlciB0aGUgcGFn ZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGFmdGVyIHBydW5pbmcgYW5kCi0J ICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisJICogVHJhY2sgd2hl dGhlciB0aGUgcGFnZSBjb3VsZCBiZSBtYXJrZWQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96 ZW4uCisJICogVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6 aW5nIGFuZCBmb3IgdXBkYXRpbmcKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgKFZNKSBpZiByZXF1 ZXN0ZWQgYnkgdGhlIGNhbGxlci4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gc2V0 cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVmZm9ydCwgb25seSBkbwotCSAqIHRoZSBib29r a2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0LiAgQ3VycmVudGx5LCB0aGF0J3MgdGllZCB0 bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIGJ1dCBpdCBjb3VsZCBiZSBhIHNlcGFyYXRl IGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVwZGF0ZSB0aGUgVk0gYml0cyB3aXRob3V0IGFs c28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQgYWxzbwotCSAqIHNldHRpbmcgdGhlIFZNIGJp dHMuCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90 aGVyIGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGlu ZyBpcyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQg YWxzbyBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZzogd2Ugb25seSBjb25zaWRlciBmcmVlemlu ZyBpZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3Vs ZCBiZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZvciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3 aWxsIHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBu b3Qgc2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUgcGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlz aWJsZS4KIAkgKgotCSAqIEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVy IGl0IGNhbiBzZXQgdGhlIFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFu ZCAnYWxsX2Zyb3plbicgZm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3 aG9sZSBwYWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNh bGx5Ci0JICogZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUg dGhlIHdob2xlIHBhZ2UgaWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUg bm90IHZpc2libGUgdG8gZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMg d2hpY2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gK LQkgKiB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBw cmVjbHVkZSB1cyBmcm9tCi0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNl IG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQotCSAqIGNsZWFyIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXgKLQkgKiB0aGF0 IGFmdGVyIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLiBXZSBtdXN0IGNvcnJlY3QgYWxsX3Zp c2libGUgYW5kCi0JICogYWxsX2Zyb3plbiBiZWZvcmUgd2UgcmV0dXJuIHRoZW0gdG8gdGhlIGNh bGxlciwgc28gdGhhdCB0aGUgY2FsbGVyCi0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdHMgaW5j b3JyZWN0bHkuCisJICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgd2l0 aG91dCBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCSAqIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0 IGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLCBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsCisJICogaGVh cF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIGZvciBlYWNoIHR1cGxlLgorCSAqCisJICogRGVhZCB0 dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW0gc2hvdWxkIG5v dAorCSAqIHByZXZlbnQgb3Bwb3J0dW5pc3RpYyBmcmVlemluZy4gVGhlcmVmb3JlLCB3ZSBkbyBu b3QgY2xlYXIgYWxsX3Zpc2libGUKKwkgKiBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIGVuY291bnRl ciBMUF9ERUFEIGl0ZW1zLiBJbnN0ZWFkLCB3ZSBjb3JyZWN0CisJICogdGhlbSBhZnRlciBkZWNp ZGluZyB3aGV0aGVyIHRvIGZyZWV6ZSwgYnV0IGJlZm9yZSB1cGRhdGluZyB0aGUgVk0sIHRvCisJ ICogYXZvaWQgc2V0dGluZyB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KKwkgKgorCSAqIElmIG5l aXRoZXIgZnJlZXppbmcgbm9yIFZNIHVwZGF0ZXMgYXJlIHJlcXVlc3RlZCwgd2Ugc2tpcCB0aGUg ZXh0cmEKKwkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zp c2libGUgdG8gZmFsc2UgYWxsb3dzCisJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwogCWlmIChwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1ZTsKIAkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUtPmF0dGVt cHRfdXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSB0cnVlOworCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIEluaXRp YWxpemluZyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRoZW0g aW4KLQkJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkgKi8K IAkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9 IGZhbHNlOwogCX0KIAogCS8qCi0JICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUg bmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21t b24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkg KiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcgdGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2Yg ZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUg aXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRo ZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlz aWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4KKwkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBs aXZlLCBjb21taXR0ZWQgdHVwbGVzCisJICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBw YWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlCisJICogaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlz CisJICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMg bG9uZyBhcyBpdCBpcworCSAqIG1haW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0 ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbgorCSAqIHdoZW4gdXBkYXRpbmcgdGhlIFZN IGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0 YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KQEAg LTc3NSwxMCArNzk1LDE0OCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0KIAorLyoKKyAqIEhlbHBl ciB0byBjb3JyZWN0IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBp dHMKKyAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1 dCBiZWZvcmUgc2V0dGluZyB0aGUKKyAqIHZpc2liaWxpdHkgbWFwLiBJdCBleGFtaW5lcyB0aGUg aGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBWTSBwYWdlLCBhbmQgdGhlCisgKiBudW1iZXIgb2Yg ZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50aWZpZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFw CisgKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBkaXNjb3ZlcmVk IHVuZGVyIHRoYXQgc2FtZSBsb2NrLgorICoKKyAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCBy ZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jaworICogcmVmZXJlbmNlZCBi eSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZm ZXIsIGl0CisgKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkg bG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCisgKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhl IFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8K K3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1 ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkgICB1aW50OCB2bWJpdHMpCit7CisJQXNzZXJ0KHZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0cyk7 CisKKwlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpKTsKKworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmICghUGFnZUlzQWxsVmlzaWJs ZShoZWFwX3BhZ2UpICYmCisJCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAh PSAwKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUg YnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUi LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJ dmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0 J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkg KiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJs ZSB0byBldmVyeW9uZQorCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBz ZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywg YnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZh dGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBz bWFsbCwKKwkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMg dGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZl cnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcg aXMgY29ycmVjdC4KKwkgKgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1z IG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLwor CWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4g MCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09S UlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBt YXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFy QWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBt YXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVhcF9ibGsgdXNp bmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgorICogVGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFnZS1sZXZlbCB2 aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dldmVyLCBpZiBp dCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBWTSBpcworICog Y29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBiaXRzIGFuZCB2 aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNy aXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJp dHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBjdXJyZW50IHZh bHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJlZCBuZXcgdmFs dWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICoKKyAqIElmIHRoZSBWTSBz aG91bGQgbm90IGJlIHNldCwgaXQgcmV0dXJucyBmYWxzZS4gSWYgd2Ugd29uJ3QgY29uc2lkZXIK KyAqIHVwZGF0aW5nIHRoZSBWTSwgKm9sZF92bWJpdHMgd2lsbCBiZSAwLCByZWdhcmRsZXNzIG9m IHRoZSBjdXJyZW50IHZhbHVlIG9mCisgKiB0aGUgVk0gYml0cy4KKyAqLworc3RhdGljIGJvb2wK K2hlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIFJlbGF0 aW9uIHJlbGF0aW9uLAorCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9i dWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJICBp bnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJICB1aW50 OCAqbmV3X3ZtYml0cykKK3sKKwkqb2xkX3ZtYml0cyA9IDA7CisJKm5ld192bWJpdHMgPSAwOwor CisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwkJcmV0dXJuIGZhbHNlOworCisJ Km9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxr LAorCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcik7CisKKwkvKiBXZSBkbyB0aGlzIGV2ZW4gaWYgbm90 IGFsbC12aXNpYmxlICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxh dGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3BhZ2UsCisJCQkJCQkJCQkgICBubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgICpvbGRfdm1iaXRzKSkKKwkJKm9sZF92 bWJpdHMgPSAwOworCisJaWYgKCFwcnN0YXRlLT5hbGxfdmlzaWJsZSkKKwkJcmV0dXJuIGZhbHNl OworCisJKm5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJaWYgKHBy c3RhdGUtPmFsbF9mcm96ZW4pCisJCSpuZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTjsKKworCWlmICgqbmV3X3ZtYml0cyA9PSAqb2xkX3ZtYml0cykKKwl7CisJCSpuZXdfdm1i aXRzID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiAKIC8q CiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6 ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZpZWQgcGFnZS4KKyAqIHNwZWNpZmllZCBwYWdlLiBJ ZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRhdGUgaXQgaW4K KyAqIHRoZSBWTS4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFu dXAgbG9jayBvbiB0aGUgcGFnZS4gIE5vdGUgdGhhdCB3ZQogICogZG9uJ3QgdXBkYXRlIHRoZSBG U00gaW5mb3JtYXRpb24gZm9yIHBhZ2Ugb24gY2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0 CkBAIC03OTMsMTIgKzk1MSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiB0dXBsZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yCiAgKiBpZiBpdCdzIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbwogICogbm93LiAgVGhlICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxm cm96ZW5feGlkJyBhbmQKLSAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KLSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKLSAqIGFuZCBwcmVz dWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvCi0gKiBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBi ZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlv bi4KKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVl emluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHNldCBpbiBwYXJh bXMgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQs IHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisg KiBmcmVlemluZyB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9s ZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRo ZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1 c2UgaW4gYm9va2tlZXBpbmcuCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1l dGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBsZXMg cmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBw cnVuaW5nLgpAQCAtODIzLDEzICs5ODIsMTggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVs bWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJ CXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJ ZG9fcHJ1bmU7CiAJYm9vbAkJZG9faGludF9wcnVuZTsKKwlib29sCQlkb19zZXRfdm07CiAJYm9v bAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53 YWxfZnBpOworCXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOwogCiAJLyog SW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywKQEAgLTEw MTEsNiArMTE3NSw2NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0aGUgdmlzaWJp bGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXByc3RhdGUuYWxs X3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRvX3NldF92bSA9 IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWxh dGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAorCQkJCQkJCQkJ ICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5scGRlYWRf aXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3X3ZtYml0cyk7 CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQg dG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0g MCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkgaGlu dCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0KHByc3RhdGUu YWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0 aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0aGUgcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgorCQkgKiBj aGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0 aGF0IHdlCisJCSAqIGdldCBiYWNrIGluIHN5bmMuCisJCSAqCisJCSAqIFRoZSBoZWFwIGJ1ZmZl ciBtdXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwKKwkJICog Y2hhaW4gd2hlbiBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3Nh cmlseQorCQkgKiBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMg YWxyZWFkeSBzZXQsIHRob3VnaC4KKwkJICogSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBh IGNsZWFuIGhlYXAgYnVmZmVyIHdpdGgKKwkJICogUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQg YW5kIHRoZSBWTSBiaXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubworCQkgKiBwb2ludCBpbiBvcHRp bWl6aW5nIGl0LgorCQkgKi8KKwkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCU1hcmtCdWZm ZXJEaXJ0eShidWZmZXIpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBh bGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRv ZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0bwor CQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBh Z2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4uCisJCSAqLworCQlBc3NlcnQoIXByc3RhdGUu YWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24pKTsKKworCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9u LCBibG9ja25vLCBidWZmZXIsCisJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJICB2 bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgbmV3X3ZtYml0 cyk7CisJfQorCisJLyogU2F2ZSB0aGUgdm1iaXRzIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5v bGRfdm1iaXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0 czsKIH0KIAogCkBAIC0xNDg1LDYgKzE3MDgsOCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgog CQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAorCQkJCUFzc2VydChwcnN0YXRlLT5hdHRl bXB0X3VwZGF0ZV92bSk7CisKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQo aHR1cCkpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGM1ZmM1YjcxZjk0Li44YjQ4OTM0OTMxMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDIyLDExICs0MjIsNyBAQCBz dGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVs LCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5 KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgQmxvY2tOdW1iZXIg Ymxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1 ZmZlcik7Ci1zdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVh cF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAot CQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkJCQkgICB1aW50OCB2bWJpdHMp OworCiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsCkBAIC0xOTMzLDgzICsxOTI5LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhjb25z dCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3QgT2Zm c2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgotICog SGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYSBoZWFwIHBhZ2Ug YW5kIGl0cwotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5p bmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQotICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVz IHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKLSAqIG51bWJl ciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KLSAqCi0gKiBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhl IGhlYXAKLSAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2Nv dmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCi0KLSAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVz dCByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jawotICogcmVmZXJlbmNl ZCBieSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBi dWZmZXIsIGl0Ci0gKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZl bHkgbG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCi0gKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUg dGhlIFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KLSAqCi0gKiBSZXR1 cm5zIHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCi0g Ki8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGss IFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMpCi17Ci0JQXNzZXJ0KHZp c2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0 cyk7Ci0KLQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlzQWxsVmlz aWJsZShoZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSAhPSAwKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2li bGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2Ug JXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0K LQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAq IEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QK LQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlz aWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFk eSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJk cywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNl cnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3Nhcmls eSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVh bnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZs YWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0 ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAq LwotCWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1z ID4gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBp cyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNs ZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIp OwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJ CVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVy biBmYWxzZTsKLX0KLQogLyoKICAqCWxhenlfc2Nhbl9wcnVuZSgpIC0tIGxhenlfc2Nhbl9oZWFw KCkgcHJ1bmluZyBhbmQgZnJlZXppbmcuCiAgKgpAQCAtMjA0MSwxMyArMTk2MCwxMiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCVBydW5lRnJlZXplUGFyYW1zIHBhcmFt cyA9IHsKIAkJLnJlbGF0aW9uID0gcmVsLAogCQkuYnVmZmVyID0gYnVmLAorCQkudm1idWZmZXIg PSB2bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAotCQkub3B0aW9ucyA9 IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0sCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52 aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKLQl1aW50OAkJb2xk X3ZtYml0cyA9IDA7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0yMTQ3LDc1ICsyMDY1LDI1IEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVB RCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+ IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRl bXMpKTsKLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxl KTsKLQotCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWws IGJsa25vLCAmdm1idWZmZXIpOwotCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlv bih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFnZSwKLQkJCQkJCQkJCSAgIHByZXN1bHQubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIG9sZF92bWJpdHMpKQotCQlvbGRfdm1i aXRzID0gMDsKLQotCWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKLQkJcmV0dXJuIHByZXN1bHQu bmRlbGV0ZWQ7Ci0KLQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxp dHkgaGludCAqLwotCW5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0J aWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU47Ci0KLQkvKiBOb3RoaW5nIHRvIGRvICovCi0JaWYgKG9sZF92bWJpdHMgPT0gbmV3 X3ZtYml0cykKLQkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0KLQlBc3NlcnQocHJlc3VsdC5h bGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldCB3aGlsZQotCSAqIHRoZSBwYWdlLWxldmVs IGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3Vtcwot CSAqIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3 ZSBnZXQgYmFjayBpbgotCSAqIHN5bmMuCi0JICoKLQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBi ZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluCi0JICogd2hl biBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseSBkaXJ0 eWluZyB0aGUKLQkgKiBoZWFwIGJ1ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNl dCwgdGhvdWdoLiBJdCBpcyBleHRyZW1lbHkKLQkgKiByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFw IGJ1ZmZlciB3aXRoIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZAotCSAqIHRoZSBWTSBi aXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgotCSAqLwot CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCi0JLyoK LQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlk VHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNv bmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCi0JICogZXZlcnl0aGluZyBzYWZlIGZv ciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkg Ki8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAotCQkgICAhVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQl2aXNpYmlsaXR5bWFwX3Nl dCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJ CQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkgIG5ld192 bWJpdHMpOwogCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZp c2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZNLAogCSAqIGNvdW50IGl0IGFzIG5ld2x5 IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf cGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJaWYgKChwcmVzdWx0Lm5ld192 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVl OwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCWVsc2UgaWYgKChwcmVzdWx0 Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJl c3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsKKwkJ QXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAh PSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGY3ZTRhZTM4NDNjLi4wOTEzNzU5MjE5 YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcg Yml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJ KDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2Vy dFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBA IC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVs YXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVu ZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkv KgorCSAqIElmIHdlIHdpbGwgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB2 bWJ1ZmZlciBzaG91bGQKKwkgKiBjb250YWluIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQgYmUgcGlubmVkLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisKIAkv KgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBz ZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5n IGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1Miw2ICsyNTksOSBAQCB0eXBlZGVmIHN0cnVj dCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRp Y2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICogd2lsbCByZXR1 cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICoK KwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0 IHRoZSBwYWdlJ3Mgc3RhdHVzCisJICogaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlvbnM7 CiAKQEAgLTI5OSw2ICszMDksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQK IAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsK IAorCS8qCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBh bmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRh dGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUg dGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICoK KwkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0g b3B0aW9uIGlzIHNldC4KKwkgKi8KKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3Zt Yml0czsKKwogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5j YXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KIAkgKiAndHJ1ZScsIGV2ZW4gaWYgdGhlIHBh Z2UgY29udGFpbnMgTFBfREVBRCBpdGVtcy4gIFZBQ1VVTSB3aWxsIHJlbW92ZQotLSAKMi40My4w Cgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v31-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbnzv4 RnJvbSA5ZjUwNzI1MDBlMmEzYmMyZjJhODQ5MGYxY2ExMWJmNjBhODE1MTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAwNS8xNl0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0LgoK UmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgODYgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgNjggKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwg MjUgKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMWMxNDQ2MDU4YTcu LjdhZjZhZWEyZDBlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtOTMyLDYg KzkzMiwzMSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKworLyoKKyAqIFdy YXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdoaWNoIGNhbiBiZSB1 c2VkIGZvciBjYWxsZXJzCisgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBD dXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubworICogcmVhc29uIG5vdCB0byB1 c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dn aW5nX29mZm51bSkKK3sKKworCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUo cmVsLCBidWYsCisJCQkJCQkJCQkJICBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwK KwkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7Cit9CisjZW5kaWYKKworCiAKIC8qCiAg KiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0 dXBsZXMgb24gdGhlCkBAIC05ODUsNiArMTAxMCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFt cy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9j a051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKKwlUcmFuc2Fj dGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVu ZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAt MTE0MiwyMyArMTE2OCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKIAlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0LT5hbGxfZnJv emVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFz dHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUgdGhlIHZpc2li aWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJlY29yZCBtdXN0 IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZQotCSAqIHBh Z2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhl Ci0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlv bklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBmcm96ZSBhbGwg dGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRlZCB0aGUgY29u ZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQuCi0JICovCi0J aWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE3Niw2ICsxMTg3LDQ2 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhl IGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0aGUgbmV3ZXN0 IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAqIGNvbXBsZXRl bHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9o b3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5j bHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRo ZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0IFhJRCBhbHJl YWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3RhdGUuYWxsX2Zy b3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWVs c2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VV TSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWlu ZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUg bG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQg ZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkg KiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgp LgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19h bGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0gMCk7CisKKwkJ QXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIs CisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJCSZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKTsKKworCQlB c3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0 b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyogTm93IHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KIAlBc3NlcnQo IXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKIApA QCAtMTIyMiwxMiArMTI3MywxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3 YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96ZW4uCiAJCSAq LwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0KCFwcnN0YXRl LmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0X2hvcml6b24p KTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9ja25vLCBidWZm ZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2NvbmZsaWN0X2hv cml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IDhiNDg5MzQ5MzEyLi5mNTZhMDJhM2Q0NiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDU3LDIwICs0NTcsNiBAQCBzdGF0aWMgdm9pZCBkZWFk X2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXRO dW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwp Owogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAK LSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwog c3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3Jl bCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0y MDA2LDMyICsxOTkyLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJ dmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0g d2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBh c3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv ZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5p c2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwK LQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBh c3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0 LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJ CWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDAp OwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwK LQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4s Ci0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0KLQkJQXNzZXJ0 KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9 PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBO b3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFj cmVsCiAJICovCkBAIC0zNDg5LDI5ICszNDQ5LDYgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVs U3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhhdCBleHBlY3Qg bm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUg aXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KLSAqLwot c3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJIGJvb2wgKmFs bF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAot CQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1cm4gaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAgT2xkZXN0WG1p biwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVuLAotCQkJCQkJ CQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0p OwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBhZ2UgaW4gYnVm IGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1MzUsMTUgKzM0NzIsMTIg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq ICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVwbGUgYmVpbmcg cHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVt LgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBhbHJl YWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKS4K LSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMgZnVuY3Rpb24s IGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2VydGlvbiBjcm9z cy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBpbnRyb2R1Y2Ug bmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDA5MTM3NTkyMTljLi44OGU3OWM1OGExMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMg dGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5nIHBydW5pbmcu CiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg YWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zpc2libGUnLCAn YWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJF RVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLgogCSAqCiAJICog SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUg cGFnZSdzIHN0YXR1cwogCSAqIGluIHRoZSBWTS4KQEAgLTI5NCwyMSArMjkzLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlsaXZlX3R1cGxlczsKIAlpbnQJCQly ZWNlbnRseV9kZWFkX3R1cGxlczsKIAotCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0JICogYml0cyBp biB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBhZnRlciBwcnVu aW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBhcyB0 aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAqIGlz IG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5kIGFs bF9mcm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRo ZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LgotCSAqLwotCWJvb2wJCWFsbF92aXNp YmxlOwotCWJvb2wJCWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jp em9uOwotCiAJLyoKIAkgKiBvbGRfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhlIGFsbC12aXNp YmxlIGFuZCBhbGwtZnJvemVuIGJpdHMgaW4gdGhlCiAJICogdmlzaWJpbGl0eSBtYXAgYmVmb3Jl IHVwZGF0aW5nIGl0IGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZy4KQEAgLTQ1Myw2ICs0Mzcs MTMgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICovCiBleHRlcm4g dm9pZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBh cmFtcyBwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CitleHRlcm4gYm9v bCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBP ZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMs CisJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlv bklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICps b2dnaW5nX29mZm51bSk7CiAKIC8qIGluIGhlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyAqLwogZXh0 ZXJuIGJvb2wgSGVhcFR1cGxlU2F0aXNmaWVzVmlzaWJpbGl0eShIZWFwVHVwbGUgaHR1cCwgU25h cHNob3Qgc25hcHNob3QsCi0tIAoyLjQzLjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v31-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbrwh5 RnJvbSBlYjk0YTdkZjA0MGI2MjUwZDNlYTNlMGQxYTc5ZjI0YTNkYzRmZDZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAwNi8xNl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA3YWY2YWVhMmQwZS4uNDlkM2ViYjAwNjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDUsNiArMjA1LDExIEBAIHN0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgIGludCBubHBk ZWFkX2l0ZW1zLAogCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKTsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9v bCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1 aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQpOwogCiAKIC8qCkBAIC03OTUsNiArODAwLDY4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwog fQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUg WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9B Q0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hp ZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCisJCQkJIHVp bnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0X3hpZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJ CSBUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkKK3sKKwlUcmFuc2FjdGlvbklk IGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJlZXppbmcgYW55IHR1 cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlCisJICogYWxs LWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24gdGhl IHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZDQyBzbmFwc2hvdHMg b24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJgorCQkhZG9fZnJlZXplICYm CisJCWRvX3NldF92bSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUpICE9IDAgJiYKKwkJKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9 IDApCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogVGhlIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9z dAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFu eSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2ls bCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRl ciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkg KiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3Rh bmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCWNvbmZsaWN0X3hpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZN LCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQorCSAqIHZpc2liaWxp dHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBh bnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVzZSB0aGUgdmlzaWJp bGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwK KwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVB RCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRh aW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVu IGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6b24gd2hlbgorCSAq IHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChkb19zZXRfdm0pCisJ CWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNlIGlmIChkb19mcmVl emUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOworCisJLyoKKwkgKiBJ ZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28g ZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVt b3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVk OworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAqIEhlbHBlciB0byBjb3JyZWN0 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBpdHMKICAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1dCBiZWZvcmUgc2V0 dGluZyB0aGUKQEAgLTEwMTAsNyArMTA3Nyw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtMTAx OCw2ICsxMDg0LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlib29sCQlkb19zZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBp OwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0aW9u SWQgY29uZmxpY3RfeGlkOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCXVpbnQ4CQlvbGRfdm1iaXRz OwogCkBAIC0xMDgxLDYgKzExNDgsMzcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNl dCB0aGUgVk0gYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSBhbmQKKwkgKiB0 aGUgYWxsX3Zpc2libGUvYWxsX2Zyb3plbiBmbGFncy4KKwkgKi8KKwlkb19zZXRfdm0gPSBoZWFw X3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24s CisJCQkJCQkJCQkgIGJsb2Nrbm8sCisJCQkJCQkJCQkgIGJ1ZmZlciwKKwkJCQkJCQkJCSAgcGFn ZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1z LAorCQkJCQkJCQkJICAmb2xkX3ZtYml0cywKKwkJCQkJCQkJCSAgJm5ld192bWJpdHMpOworCisJ LyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBu b3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBpZiB3ZSBkbyBub3QgaW50ZW5kIHRvIHNl dCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3NldF92bSB8fCBuZXdfdm1iaXRzID09IDApOwor CisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBk b19zZXRfdm0sCisJCQkJCQkJCQlvbGRfdm1iaXRzLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJcHJz dGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJCQkJCQlwcnN0YXRlLmZyel9jb25mbGljdF9o b3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOworCisJLyog TG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNh bCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtMTEwMiwxNCArMTIwMCwxNyBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJCS8q CiAJCSAqIElmIHRoYXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlzIGEg bm9uLVdBTC1sb2dnZWQKLQkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3Ig cHJ1bmUgdGhlIHBhZ2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJlbG93 LgorCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFn ZSBvciBzZXQKKwkJICogUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyIGRp cnR5IGJlbG93LgorCQkgKgorCQkgKiBTZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGlzIGZ1bGx5IFdB TC1sb2dnZWQgYmVjYXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJICogZm9yIHRoZSBWTSB0byBiZSBz ZXQgYW5kIFBEX0FMTF9WSVNJQkxFIHRvIGJlIGNsZWFyLgogCQkgKi8KLQkJaWYgKCFkb19mcmVl emUgJiYgIWRvX3BydW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUgJiYgIWRvX3Nl dF92bSkKIAkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVyLCB0cnVlKTsKIAl9CiAKLQlpZiAo ZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9f c2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRlbSBjaGFuZ2VzIGFuZCByZXBh aXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1bmUpCkBAIC0xMTIzLDYgKzEy MjQsMjYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhi dWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCisJCS8qIFNldCB0aGUg dmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBoaW50ICovCisJCWlmIChkb19zZXRf dm0pCisJCXsKKwkJCS8qCisJCQkgKiBXaGlsZSBpdCBpcyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lC TEUgdG8gYmUgc2V0IHdoZW4gdGhlCisJCQkgKiBjb3JyZXNwb25kaW5nIFZNIGJpdCBpcyBjbGVh ciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbQorCQkJICogaW4gc3luYy4KKwkJCSAq CisJCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUKKwkJCSAqIFdBTCBjaGFpbiB3aGVuIHNldHRpbmcgdGhlIFZNLiBXZSBkb24n dCB3b3JyeSBhYm91dAorCQkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZm ZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB0aG91Z2guIEl0IGlz IGV4dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwCisJCQkgKiBidWZmZXIgd2l0aCBQ RF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCBhbmQgdGhlIFZNIGJpdHMgY2xlYXIsCisJCQkgKiBz byB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgorCQkJICovCisJCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2 bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCiAJCS8qCkBAIC0xMTMw LDI5ICsxMjUxLDEyIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3Ig dGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBv ZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3Np YmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55 Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdl c3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2ls bCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3 aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3Jk IHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29u ZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29u ZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0J CQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UK LQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJ CQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxh Z3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAor CQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxp Y3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1 ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJ CQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRl LnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93 ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNjIsNDMgKzEyNjYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJRU5EX0NSSVRfU0VD VElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KLQlwcmVz dWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0JcHJlc3VsdC0+bm5ld2xwZGVhZCA9 IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKLQlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7Ci0JcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0g cHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5 IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUp Ci0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVu X3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOwotCQkJKm5ld19y ZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQot CQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHVwZGF0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVj b3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBp ZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29u ZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJbnZh bGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1 c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVk IHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4u Ci0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBpdHMg c2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMjEzLDcgKzEyODIs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3pl bjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVy LAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTEyMjMsNjcgKzEy OTMsMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsK IAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAg IGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1dG9m ZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQkvKiBO b3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAqLwot CUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0g MCkpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAotCQkJ CQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJCQkJICBibG9ja25vLAotCQkJCQkJCQkJ ICBidWZmZXIsCi0JCQkJCQkJCQkgIHBhZ2UsCi0JCQkJCQkJCQkgIHZtYnVmZmVyLAotCQkJCQkJ CQkJICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCi0JCQkJ CQkJCQkgICZuZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxl ciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKKwlwcmVzdWx0LT5u bmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5u ZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKKwlw cmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBs ZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJlc3VsdC0+bmV3X3Zt Yml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7CiAK LQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8g c2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0gMCk7 CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CisJLyogdGhl IHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCi0J LyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQsIGlmIHJl bGV2YW50ICovCi0JaWYgKGRvX3NldF92bSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkK IAl7Ci0JCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQotCQkvKgotCQkgKiBJdCBzaG91 bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQK LQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2Ug aXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxl c3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkg KgotCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUgV0FMCi0JCSAqIGNoYWluIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0 IHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKLQkJICogZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVy IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB0aG91Z2guCi0JCSAqIEl0IGlzIGV4 dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwIGJ1ZmZlciB3aXRoCi0JCSAqIFBEX0FM TF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMg bm8KLQkJICogcG9pbnQgaW4gb3B0aW1pemluZyBpdC4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBJZiB0 aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rp b25JZAotCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJICogbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8g d2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCi0JCSAqIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJl bGF0aW9uLCBibG9ja25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJ CQkJICB2bWJ1ZmZlciwgdm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCSAgbmV3X3ZtYml0cyk7 CisJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlk ID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7CisJCQkqbmV3X3JlbG1p bl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CisJCWVs c2UKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXpl UGFnZVJlbGZyb3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2Vmcnou Tm9GcmVlemVQYWdlUmVsbWluTXhpZDsKKwkJfQogCX0KLQotCS8qIFNhdmUgdGhlIHZtYml0cyBm b3IgY2FsbGVyICovCi0JcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7Ci0JcHJlc3Vs dC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CiB9CiAKIAotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v31-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbw0d6 RnJvbSBiMzBiOTI3ODlmOWI2MmU2MDM0OGJkMTQ0MWYwMzAzMWUxYmY3MzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMDcvMTZdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggZjU2YTAyYTNkNDYuLmQyMmQyYTg2ZWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODY3LDkgKzE4NjcsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg4NiwxMyArMTg4OSwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v31-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhbz9d7 RnJvbSBmYjI2MDg4NDc4ZTMzMTQ0MGEyNzQ3MDMxYmEyNTllMmFkYzk4MDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMDgvMTZdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTA5ICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzcwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIyNjBjZmZhNjgu LjVmMDdmMTc5NDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA2ZGFmNGE4N2RlYy4uZmI3YTc1NDhhYTAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTM5LDExICsyNTM5LDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCXsKIAkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAot CQkJCQkJCQkJIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOLAorCQkJCQkJCSAgcmVsYXRpb24tPnJkX2xvY2F0b3IpOwogCQl9CiAKIAkJLyoKQEAg LTg4MTMsNTAgKzg4MTMsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQ ZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycg aXMgdGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIg aXMgdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5 IG1hcCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBh bmQgZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4g IFJFRE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAq Ci0gKiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFs c28gZ2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndp c2UsIHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05P X0lNQUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hv dWxkICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0 cgotbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVm ZmVyIHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwgdWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0 cglyZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9i dWZmZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMu ZmxhZ3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TDsKLQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9m SGVhcFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0K LQlmbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFw X2J1ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExP R19IRUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19Ci0KIC8qCiAgKiBQZXJmb3Jt IFhMb2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxy ZWFkeQogICogaGF2ZSBtb2RpZmllZCB0aGUgYnVmZmVyKHMpIGFuZCBtYXJrZWQgdGhlbSBkaXJ0 eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDE4MjNmZWZmMjk4Li40 N2QyNDc5NDE1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yMzYs NyArMjM2LDcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1os IDApOwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywgdm1idWZmZXIsIHZtZmxh Z3MsIHJsb2NhdG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKIAkJ UGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0yNDksMTQyICsyNDksNiBAQCBoZWFwX3hsb2df cHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdp dGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVw bGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRl Z3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgK LSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQg dGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQg d2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdv dWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZv aWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dS ZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9 ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwot CVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRv QWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9Y TE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJl IGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHht aW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2li bGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBp bmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1p Z2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUg dGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRv IHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5z YWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK LQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM LAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwg aWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICog dHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUg cGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1h cC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2Ug ZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNp YmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBp cyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMg dG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGlu ZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBj YXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFn ZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQll bHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBi bG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0J CSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tz dW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChC dWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3Bh Y2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVw ZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3Rh bmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBW QUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICog ZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4s IGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29t ZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGlj IGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2Vy dGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJ ICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBh cmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJv YmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBi ZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJl Z2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0J CSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxy ZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZl biBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVy bG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4g IEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBk b2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhh dCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChY TG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9S LCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0J CVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxu OwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2Fz IHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQo dm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAq LwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0K LQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZm ZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2Vs Zi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0K LQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmls aXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJ CQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVh c2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQot CWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBh biBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZv bWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpA QCAtNzYyLDggKzYyNiw4IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJICoKIAkgKiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJl bnQgd3JpdGVycyBleGlzdC4gVGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0 IGhvbGRpbmcgdGhlIGhlYXAgcGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2Ft ZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3Jk cyAoc2VlCi0JICogaGVhcF94bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0 YWtlbiB3aGVuIHJlcGxheWluZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBo ZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAm IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4 dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtNzc1LDExICs2 MzksMTEgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVy LAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCSBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBf c2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCSAgcmxv Y2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRM U04odm1wYWdlLCBsc24pOwpAQCAtMTM2MCw5ICsxMjI0LDYgQEAgaGVhcDJfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQ OgogCQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0JCWNhc2Ug WExPR19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsKLQkJCWJy ZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9nX211bHRp X2luc2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IDQ5ZDNlYmIwMDYzLi5iMDk5NDgzMDUxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTEyNDAsOCArMTI0MCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBzbyB0aGVyZSBpcyBubyBwb2ludCBp biBvcHRpbWl6aW5nIGl0LgogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywK LQkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCSAgcGFyYW1zLT5y ZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBkMjJkMmE4NmVkMC4uOTNmMGYz OWM1ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4ODksMTEgKzE4 ODksMTEgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRy dWUpOwogCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhibGtubywKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0J CQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQo Ymxrbm8sCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgdmFj cmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9yIHNldHRp bmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI3NzEsOSArMjc3MSw5 IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkgKiBzZXQgUERfQUxMX1ZJU0lCTEUuCiAJCSAqLwog CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJs a25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZl ciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCQljb25mbGlj dF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKaW5kZXggY2RjYjQ3NWU1MDEuLmQzMGZlZTNhNDg4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJ dmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Ig c2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBj b3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJ CXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBw YWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAg KgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIw LDEwNiArMjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRC bG9ja051bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFw X3NldCAtIHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVj cHRyIGlzIHRoZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2Un cmUgaW4gcmVjb3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmlu Zy4gIFRoZSBWTSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsg aW4gbm9ybWFsIHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQg dGhlCi0gKiBwYWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExT TiBtYXkgKm5vdCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsg aXQgaXMgbmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rp b25JZAotICogaWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUg c2V0IHRvIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVh ZHkgYWxsLXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVy IGlzIGV4cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJl Zm9yZSBjYWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxl ciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFy ZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUg aGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9y bi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3Qg bWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmly c3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55 IEkvTy4KLSAqLwotdm9pZAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBC dWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdz KQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxr KTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWlu dDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7 Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJ TElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAot CQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlm Ci0KLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCAhWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSk7Ci0J QXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGhlYXBC dWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxh Z3MpOwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNl dHRpbmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFn ZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBC dWZmZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAi d3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3Nl cnQoIUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwKLQkJICAgQnVmZmVySXNMb2NrZWRCeU1lSW5N b2RlKGhlYXBCdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwotCi0JLyogQ2hlY2sgdGhhdCB3 ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2 bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9n KEVSUk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwot Ci0JcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0 Q29udGVudHMocGFnZSk7Ci0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKLQotCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUzsKLQlpZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9T RUNUSU9OKCk7Ci0KLQkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlN YXJrQnVmZmVyRGlydHkodm1CdWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0J CXsKLQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQo IUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVm LCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNo ZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVl ZCB0byBwcm90ZWN0IHRoZSBoZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJ ICogSWYgbm90LCB0aGVuIHdlIG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04u IEluCi0JCQkJICogdGhpcyBjYXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0 dGVkIGZyb20gdGhlCi0JCQkJICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291 bGQgYmUgaW5jb3JyZWN0IHRvCi0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0J CQkJICovCi0JCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJ CWhlYXBQYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhl YXBQYWdlLCByZWNwdHIpOwotCQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRy KTsKLQkJfQotCi0JCUVORF9DUklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVm LCBCVUZGRVJfTE9DS19VTkxPQ0spOwotfQotCiAvKgogICogU2V0IFZNICh2aXNpYmlsaXR5IG1h cCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoKQEAgLTM0MSw5ICsyNDAsOSBA QCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcgbWVz c2FnZXMuCiAgKi8KIHZvaWQKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBo ZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkgY29uc3Qg UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBo ZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkgIGNvbnN0IFJl bEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJM S19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01B UEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4 IGNhMjZkMWYwZWQxLi4wODQ2MWZkZjU5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMKQEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9 PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhs X2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hv dENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9 PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4 bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NjEsOSArNDU0LDYgQEAg aGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VV TV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsK IAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4 IDVlMTVjYjE4MjVlLi5jMGNhYzdlYTFjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVB UDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46 CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hF QVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBmYzQ1ZDcyYzc5Yi4u MzY1NTM1OGVkNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NSwxMiArNDc1 LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlkVHJh bnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAqIFRo aXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29yZHMg YWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcg YW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVuIGEg cGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1aXRl IGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgotCSAq IChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJl Y292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9u IG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBkZWxl dGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdo ZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdlIHdo aWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQorCSAq IG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJp bmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlv biBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1ZmZp Y2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICogYmVm b3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVybjsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMTZjMmIyZTNjOWMuLmIyN2ZjZGZiMzQ1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZB Q1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkw eDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAy X01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAK ICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDMsMjAgKzQ0Miw2IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBs YWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0v KgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIK LSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1 aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlz aWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQot CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0ODUs NiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5m byk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywK IAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCA3ODdjMTllNWZlZi4uYTY1ODBlYTYxODgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmlu ZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxv Y2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9z ZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhl YXBCdWYsCi0JCQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgIEJ1ZmZlciB2bUJ1 ZiwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgIHVpbnQ4IGZs YWdzKTsKLWV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBo ZWFwQmxrLAotCQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkJCQkg Y29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1h cF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDgg ZmxhZ3MsCisJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CiBleHRlcm4g dWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2NvdW50 KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAqYWxs X2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5j YXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKaW5k ZXggNWFkNWMwMjA4NzcuLmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyogT1Ig b2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLwot LyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1c2Vy IGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQgaW50 byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAqCi0g KiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJpbGl0 eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwJ MHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5kaWYJ CQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCAwNDg0NWQ1ZTY4MC4uNjUwNTYyODEyMGMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC00MzMxLDcgKzQzMzEsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVfbWFw cGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJsZQog eGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCi0t IAoyLjQzLjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Disposition: attachment; filename="v31-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhc35n8 RnJvbSA2NjdiMmU3YzE5YzcwNjk0OTEyMjIzYmMzNWQ4ZjI4NmE0MzlkYWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjU3OjE2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMDkvMTZdIFNpbXBsaWZ5IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSB2 aXNpYmlsaXR5CiBjaGVjawoKaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgZG9lc24n dCBjYXJlIGFib3V0IHRoZSBkaXN0aW5jdGlvbgpiZXR3ZWVuIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEIGFuZCBIRUFQVFVQTEVfREVBRCB0dXBsZXMgLS0gYW55IHR1cGxlCnRoYXQgaXMgbm90IEhF QVBUVVBMRV9MSVZFIG1lYW5zIHRoZSBwYWdlIGlzIG5vdCBhbGwtdmlzaWJsZSBhbmQgY2F1c2Vz CnVzIHRvIHJldHVybiBmYWxzZS4KClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgpLCB3aGljaAppbmNsdWRlcyBhbiBleHRyYSBzdGVwIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGVhZCBhbmQgcmVjZW50bHkgZGVhZAp0dXBsZXMgdXNpbmcg T2xkZXN0WG1pbi4gUmVwbGFjZSBpdCB3aXRoIHRoZSBtb3JlIG1pbmltYWwKSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbigpLgoKVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2YgbWFr aW5nIGl0IGVhc2llciB0byByZXBsYWNlIHVzZXMgb2YKT2xkZXN0WG1pbiBpbiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSBpbiB0aGUgZnV0dXJlLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUxkU1NQanZoR1hpaFRfOWYtR0phYllVJTNEX1BqckZEVXhZYVVSdVRiZkx5UU02VEVy ZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIHwgOSArKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDkzZjBmMzlj NWYwLi5lODI3Y2EyMWM2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzUzNyw2ICszNTM3LDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAl7CiAJCUl0ZW1JZAkJaXRlbWlkOwogCQlIZWFwVHVwbGVEYXRh IHR1cGxlOworCQlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXI7CiAKIAkJLyoKIAkJICogU2V0IHRo ZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkK QEAgLTM1NzYsMTIgKzM1NzcsMTQgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8g SU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDAp OwotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4s IGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUs IGJ1ZiwgJmRlYWRfYWZ0ZXIpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsK IAkJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoZGVhZF9hZnRlcikpOworCiAJCQkJCS8qIENoZWNrIGNvbW1lbnRzIGluIGxhenlfc2Nh bl9wcnVuZS4gKi8KIAkJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxl LnRfZGF0YSkpCiAJCQkJCXsKQEAgLTM2MTQsOCArMzYxNywxMCBAQCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCX0KIAkJCQlicmVh azsKIAotCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQ6CisJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwkJ CQkvKiBGQUxMVEhST1VHSCAqLworCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVB UFRVUExFX0lOU0VSVF9JTl9QUk9HUkVTUzoKIAkJCWNhc2UgSEVBUFRVUExFX0RFTEVURV9JTl9Q Uk9HUkVTUzoKIAkJCQl7Ci0tIAoyLjQzLjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Disposition: attachment; filename="v31-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhc7pz9 RnJvbSAzNjViOTI4ZDA2MGY3MjQ4ZTIwOWE0ZTI2ZmY5MTRkYTQxMTc4NzMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIyIERlYyAyMDI1IDEwOjQ2OjQ1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMTAvMTZdIFJlbW92ZSB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZSB1bm5l ZWRlZAogcGFyYW1ldGVyIE9sZGVzdFhtaW4KCmhlYXBhbV9zY2FuX2FuYWx5emVfbmV4dF90dXBs ZSgpIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBkZWFkIGFuZApyZWNlbnRseSBkZWFkIHR1 cGxlcyB3aGVuIGNvdW50aW5nIHRoZW0sIHNvIGl0IGRvZXNuJ3QgbmVlZCBPbGRlc3RYbWluLgoK TG9va2luZyBhdCBvdGhlciB0YWJsZSBBTXMgaW1wbGVtZW50aW5nIHRhYmxlX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKCksCml0IGFwcGVhcnMgbW9zdCBkbyBub3QgdXNlIE9sZGVzdFhtaW4gZWl0 aGVyLgoKU3VnZ2VzdGVkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTGRTU1BqdmhHWGloVF85Zi1HSmFi WVUlM0RfUGpyRkRVeFlhVVJ1VGJmTHlRTTZURXJnJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgMTMgKysrKysrKysrLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICA2ICstLS0tLQogc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICB8ICA1ICsrLS0tCiAzIGZpbGVz IGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGRkNGZlNmJmNjJmLi44NzA3ZDFhYWI0 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMDI2LDcg KzEwMjYsNyBAQCBoZWFwYW1fc2Nhbl9hbmFseXplX25leHRfYmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLCBSZWFkU3RyZWFtICpzdHJlYW0pCiB9CiAKIHN0YXRpYyBib29sCi1oZWFwYW1fc2Nhbl9h bmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVz dFhtaW4sCitoZWFwYW1fc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2Fu LAogCQkJCQkJCSAgIGRvdWJsZSAqbGl2ZXJvd3MsIGRvdWJsZSAqZGVhZHJvd3MsCiAJCQkJCQkJ ICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiB7CkBAIC0xMDQ3LDYgKzEwNDcsNyBAQCBoZWFwYW1f c2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklk IE9sZGVzdFhtaW4sCiAJCUl0ZW1JZAkJaXRlbWlkOwogCQlIZWFwVHVwbGUJdGFyZ3R1cGxlID0g JmhzbG90LT5iYXNlLnR1cGRhdGE7CiAJCWJvb2wJCXNhbXBsZV9pdCA9IGZhbHNlOworCQlUcmFu c2FjdGlvbklkIGRlYWRfYWZ0ZXI7CiAKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZCh0YXJncGFn ZSwgaHNjYW4tPnJzX2NpbmRleCk7CiAKQEAgLTEwNjksMTYgKzEwNzAsMjAgQEAgaGVhcGFtX3Nj YW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAogCQl0YXJndHVwbGUtPnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VH ZXRJdGVtKHRhcmdwYWdlLCBpdGVtaWQpOwogCQl0YXJndHVwbGUtPnRfbGVuID0gSXRlbUlkR2V0 TGVuZ3RoKGl0ZW1pZCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0odGFy Z3R1cGxlLCBPbGRlc3RYbWluLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2J1ZikpCisJCXN3aXRj aCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbih0YXJndHVwbGUsCisJCQkJCQkJCQkJ CQloc2Nhbi0+cnNfY2J1ZiwKKwkJCQkJCQkJCQkJCSZkZWFkX2FmdGVyKSkKIAkJewogCQkJY2Fz ZSBIRUFQVFVQTEVfTElWRToKIAkJCQlzYW1wbGVfaXQgPSB0cnVlOwogCQkJCSpsaXZlcm93cyAr PSAxOwogCQkJCWJyZWFrOwogCi0JCQljYXNlIEhFQVBUVVBMRV9ERUFEOgogCQkJY2FzZSBIRUFQ VFVQTEVfUkVDRU5UTFlfREVBRDoKKwkJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVh ZF9hZnRlcikpOworCQkJCS8qIEZBTExUSFJPVUdIICovCisKKwkJCWNhc2UgSEVBUFRVUExFX0RF QUQ6CiAJCQkJLyogQ291bnQgZGVhZCBhbmQgcmVjZW50bHktZGVhZCByb3dzICovCiAJCQkJKmRl YWRyb3dzICs9IDE7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggNWUyYTdh ODIzNGUuLjE4NGJjM2RkM2IyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0xMjEzLDcgKzEy MTMsNiBAQCBhY3F1aXJlX3NhbXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwgaW50IGVsZXZlbCwK IAlkb3VibGUJCXJvd3N0b3NraXAgPSAtMTsJLyogLTEgbWVhbnMgbm90IHNldCB5ZXQgKi8KIAl1 aW50MzIJCXJhbmRzZWVkOwkJLyogU2VlZCBmb3IgYmxvY2sgc2FtcGxlcihzKSAqLwogCUJsb2Nr TnVtYmVyIHRvdGFsYmxvY2tzOwotCVRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbjsKIAlCbG9ja1Nh bXBsZXJEYXRhIGJzOwogCVJlc2Vydm9pclN0YXRlRGF0YSByc3RhdGU7CiAJVHVwbGVUYWJsZVNs b3QgKnNsb3Q7CkBAIC0xMjI2LDkgKzEyMjUsNiBAQCBhY3F1aXJlX3NhbXBsZV9yb3dzKFJlbGF0 aW9uIG9uZXJlbCwgaW50IGVsZXZlbCwKIAogCXRvdGFsYmxvY2tzID0gUmVsYXRpb25HZXROdW1i ZXJPZkJsb2NrcyhvbmVyZWwpOwogCi0JLyogTmVlZCBhIGN1dG9mZiB4bWluIGZvciBIZWFwVHVw bGVTYXRpc2ZpZXNWYWN1dW0gKi8KLQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZChvbmVyZWwpOwotCiAJLyogUHJlcGFyZSBmb3Igc2FtcGxpbmcgYmxvY2sg bnVtYmVycyAqLwogCXJhbmRzZWVkID0gcGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0 YXRlKTsKIAluYmxvY2tzID0gQmxvY2tTYW1wbGVyX0luaXQoJmJzLCB0b3RhbGJsb2NrcywgdGFy Z3Jvd3MsIHJhbmRzZWVkKTsKQEAgLTEyNjEsNyArMTI1Nyw3IEBAIGFjcXVpcmVfc2FtcGxlX3Jv d3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAogCXsKIAkJdmFjdXVtX2RlbGF5X3BvaW50 KHRydWUpOwogCi0JCXdoaWxlICh0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShzY2FuLCBP bGRlc3RYbWluLCAmbGl2ZXJvd3MsICZkZWFkcm93cywgc2xvdCkpCisJCXdoaWxlICh0YWJsZV9z Y2FuX2FuYWx5emVfbmV4dF90dXBsZShzY2FuLCAmbGl2ZXJvd3MsICZkZWFkcm93cywgc2xvdCkp CiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUgZmlyc3QgdGFyZ3Jvd3Mgc2FtcGxlIHJvd3MgYXJlIHNp bXBseSBjb3BpZWQgaW50byB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDJmYTc5MGI2YmY1Li5l ZTliMzJjNDYyMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC02ODMsNyArNjgzLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkgKiBjYWxsYmFjaykuCiAJICovCiAJYm9vbAkJKCpz Y2FuX2FuYWx5emVfbmV4dF90dXBsZSkgKFRhYmxlU2NhbkRlc2Mgc2NhbiwKLQkJCQkJCQkJCQkJ VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCQlkb3VibGUgKmxpdmVyb3dzLAog CQkJCQkJCQkJCQlkb3VibGUgKmRlYWRyb3dzLAogCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAq c2xvdCk7CkBAIC0xNzE0LDExICsxNzEzLDExIEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X2Js b2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwgUmVhZFN0cmVhbSAqc3RyZWFtKQogICogdHVwbGVzLgog ICovCiBzdGF0aWMgaW5saW5lIGJvb2wKLXRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRh YmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAordGFibGVfc2Nhbl9h bmFseXplX25leHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogCQkJCQkJCSAgZG91YmxlICps aXZlcm93cywgZG91YmxlICpkZWFkcm93cywKIAkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90 KQogewotCXJldHVybiBzY2FuLT5yc19yZC0+cmRfdGFibGVhbS0+c2Nhbl9hbmFseXplX25leHRf dHVwbGUoc2NhbiwgT2xkZXN0WG1pbiwKKwlyZXR1cm4gc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0t PnNjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKHNjYW4sCiAJCQkJCQkJCQkJCQkJCQlsaXZlcm93cywg ZGVhZHJvd3MsCiAJCQkJCQkJCQkJCQkJCQlzbG90KTsKIH0KLS0gCjIuNDMuMAoK --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="UTF-8"; name="v31-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v31-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhcbu810 RnJvbSBkYzdmMjhiMzVhMDdjNjM3ZDBiYWQ0NjE5NDgxNjc3MzIxNzA5OGIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMTEvMTZdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBJZiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2FzCm1haW50YWlu ZWQsIHdlIHBlcmZvcm0gdGhlIEdsb2JhbFZpc1N0YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFn ZS4KVGhpcyBpcyBzYWZlIGJlY2F1c2UgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhl IG5ld2VzdCB4bWluIG9uCnRoZSBwYWdlOyBpZiBpdCBpcyBnbG9iYWxseSB2aXNpYmxlLCB0aGVu IHRoZSBlbnRpcmUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KClRoaXMgYXBwcm9hY2ggbWF5IHJlc3Vs dCBpbiBleGFtaW5pbmcgbW9yZSB0dXBsZSB4bWlucyB0aGFuIGJlZm9yZSwKc2luY2Ugd2l0aCBP bGRlc3RYbWluIHdlIGNvdWxkIHNvbWV0aW1lcyBydWxlIG91dCB0aGUgcGFnZSBiZWluZwphbGwt dmlzaWJsZSBlYXJsaWVyLiBIb3dldmVyLCBwcm9maWxpbmcgc2hvd3MgdGhlIGFkZGl0aW9uYWwg Y29zdCBpcyBub3QKc2lnbmlmaWNhbnQuCgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5k cmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWls LmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwg MjIgKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg IHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgIHwgMzggKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggICAgICAgICAgICAgICAgIHwgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV92aXNpYmlsaXR5LmMKaW5kZXggYmY4OTljMmQyYzYuLjdkOWJkMjhkOGYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNTMsNiArMTA1 MywyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBlciBhcm91 bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1pbmluZyBs aXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBiZSBjb25z aWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUgdmlzaWJp bGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21taXQgc3Rh dHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxpZWQgdG8g bGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNraW5nCisg KiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBy dW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBs ZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBzbmFwc2hv dCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUgaWRlbnRp Y2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2VlIHRoZSBj b21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZvciBkZXRh aWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZv ciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBiMDk5NDgzMDUxYS4uYzUwNzIzMWQyYTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NjEsMTEgKzQ2MSwxMiBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIH0KQEAgLTEwMDgsMTQgKzEwMDksMTQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5l U3RhdGUgKnByc3RhdGUsCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJ CQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCiAJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJCQkg IGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0xMTAy LDYgKzExMDMsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+ cmVsYXRpb24pLAogCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOwogCisJLyoKKwkg KiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRo ZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3QgdGhlbSBtYXkgYmUgY29uc2lkZXJlZCBydW5uaW5n IGJ5IGFueSBzbmFwc2hvdCwgdGhlIHBhZ2UgY2Fubm90CisJICogYmUgYWxsLXZpc2libGUuCisJ ICovCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFs KHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0WGlkTWF5 YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQp KQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisK IAkvKgogCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oKSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5m b3JtYXRpb24gaW4gcHJ1bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI4MywxMCArMTI5 NCw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFk X2l0ZW1zID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CQlwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0 LAogCQkJCQkJCQkJCSZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYs IG9mZl9sb2MpKTsKIApAQCAtMTgwNywyOCArMTgxNywxNSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29t bWl0dGVkLiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMg aXQgYXMgY29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBh cyBjb21taXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICog dGhlcmUgaXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQot CQkJCSAqIHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxs LXZpc2libGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQg d2UgZG9uJ3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBz ZWVzIGl0IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBh bnkgc25hcHNob3QgdGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKKwkJCQkgKiBv biB0aGUgcGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCisJ CQkJICogcGFnZSBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHBy c3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBk YXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICog aXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCi0J CQkJICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhl IFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYg KCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1p bikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQogCQkJCS8qIFRy YWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dz KHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJCQkJVHJhbnNhY3Rp b25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4 IGU4MjdjYTIxYzY4Li43NDYzZDQ2ODkxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwpAQCAtMjcyNSw3ICsyNzI1LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZG9uZSBv dXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJ CQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4s ICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpA QCAtMzQ4Niw3ICszNDg2LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFu IHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0g KiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRl cnM6CiAgKgpAQCAtMzUwMiw3ICszNTAyLDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3Rh dGUgKnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJ CSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNTg1LDcgKzM1ODUsNyBAQCBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCQkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCQkJCS8qIENoZWNrIGNv bW1lbnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8KKwkJCQkJLyogQ2hlY2sgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCBjb21tZW50cyAqLwogCQkJCQlpZiAoIUhlYXBUdXBs ZUhlYWRlclhtaW5Db21taXR0ZWQodHVwbGUudF9kYXRhKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zp c2libGUgPSBmYWxzZTsKQEAgLTM1OTQsMTYgKzM1OTQsMTcgQEAgaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJfQogCiAJCQkJCS8q Ci0JCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IGlzIGl0IG9s ZCBlbm91Z2gKLQkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KKwkJ CQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25v dyBpZgorCQkJCQkgKiBpdCBpcyBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBj b21taXR0ZWQuCisJCQkJCSAqIERvbid0IGNoZWNrIHRoYXQgbm93LgorCQkJCQkgKgorCQkJCQkg KiBJZiB3ZSBzY2FuIGFsbCB0dXBsZXMgd2l0aG91dCBmaW5kaW5nIG9uZSB0aGF0IHByZXZlbnRz CisJCQkJCSAqIHRoZSBwYWdlIGZyb20gYmVpbmcgYWxsLXZpc2libGUsIHdlIHRoZW4gY2hlY2sg d2hldGhlcgorCQkJCQkgKiBhbnkgc25hcHNob3Qgc3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3Qg WElEIG9uIHRoZSBwYWdlCisJCQkJCSAqIHRvIGJlIHJ1bm5pbmcuIEluIHRoYXQgY2FzZSwgdGhl IHBhZ2UgaXMgbm90IGNvbnNpZGVyZWQKKwkJCQkJICogYWxsLXZpc2libGUuCiAJCQkJCSAqLwog CQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlp ZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKLQkJCQkJewotCQkJ CQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJ CQlicmVhazsKLQkJCQkJfQogCiAJCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICov CiAJCQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCAqdmlzaWJpbGl0eV9jdXRvZmZf eGlkKSAmJgpAQCAtMzYzNCw2ICszNjM1LDE5IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCX0KIAl9CQkJCQkJCS8qIHNjYW4gYWxv bmcgcGFnZSAqLwogCisJLyoKKwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBs ZXMgb24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nIHRoZW0gbWF5IHN0 aWxsIGJlIGNvbnNpZGVyZWQgcnVubmluZyBieSBhbnkgc25hcHNob3QsIHRoZSBwYWdlCisJICog Y2Fubm90IGJlIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChhbGxfdmlzaWJsZSAmJgorCQlUcmFu c2FjdGlvbklkSXNOb3JtYWwoKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlz VGVzdFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwl7 CisJCWFsbF92aXNpYmxlID0gZmFsc2U7CisJCSphbGxfZnJvemVuID0gZmFsc2U7CisJfQorCiAJ LyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRo ZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4OGU3OWM1OGExMC4uNTY1N2IxZGY0NmIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogZXh0ZXJuIHZvaWQg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIGJvb2wgaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCkBAIC00NTIsNiArNDUyLDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVT YXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJ CQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJ CQkJCQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RYaWRNYXli ZVJ1bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUg aHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRf YWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVy IHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="UTF-8"; name="v31-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v31-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhcog411 RnJvbSA4MzVjM2E1NjVkMjE0OGZjNmEwZDc5YzM3ZGU3MGI3YzU4NmVkYmZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMTIvMTZdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBjNTA3MjMxZDJhNC4uOGU1OWU3NjkyYzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjgyLDggKzE2ODIsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5NDMsOCAr MTk0OCwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBub3cuCiAJICovCisJaWYgKCFw cnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFs c2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhl IGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRl LT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v31-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhcuh112 RnJvbSBkYThkMmYyMjVkMGZjNDJiZGVjYWQ4N2Y1NWE3ZTg2NTE4YzA2OGNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAxMy8xNl0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hh b0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA0ICsr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIHwgMiArKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgfCA2ICsrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNzk3ZDhiMWNhMWMuLjlkZjdk ZjE3ZTk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJ fQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRpb24gbWF5IGJlIG1vZGlm aWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVz dGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsKKwogCQkJ LyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2luZyAqLwog CQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9uLCByYy0+ bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQyYi4uMjhh MDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkzLDggQEAg RXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3VsdFJlbElu Zm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNpemVvZihS ZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRpIC0gMV0g PSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkpOwogCiAJ LyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNzbHkgdHJh dmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMzk2ODQyOWY5OTEuLjEz YjQyYjVlNmQxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUg cXVlcnkgdGhyb3VnaCBhCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgdGFyZ2V0 ZWQgYnkgYSBTRUxFQ1QgRk9SIFVQREFURS4KKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmll ZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVu ayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVw bGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v31-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhcytw13 RnJvbSAzMGMxM2E3NjdmYjBkOTYwNDU5NWNkYTBmZTNmY2UyMzhhNTRkZjVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAxNC8xNl0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDggKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YyAgICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwg MTEgKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAg fCAyNiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMg ICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAg ICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAg NiArKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkg KysrKysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQ2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4y N2YwMWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYwor KysgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAg cGdyb3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJ bk1ldGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggNDVk MzA2MDM3YTQuLjVjNGJmNWYwYzZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcg KzI4NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBmYzZhZjdj NzUxYi4uYjI0NTdiOTZkY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1 OCw3ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRl ICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3Vy cmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJ CVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJ CQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRl eCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJh Y2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggODcwN2QxYWFiNGEuLmZjMjUxZTExZjhhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xv dF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hU YWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRl eEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRh KTsKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRf UkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcg Kzc1NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4g PSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgs IFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2Fu KE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4 X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIs NyArNzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0Vf U0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAs IFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQlo ZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCBiN2YxMGExYWVkMC4uMTVmOWNjMTE1ODIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw LCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lz c2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9u LAotCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlk eGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uYjU1MjNjZjJhYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNo IGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxl X2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4g c2NhbjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVs YXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGlu c3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJs ZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwpOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwsIDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IGQ3Njk1ZGMxMTA4Li43YmRiYzdlNWZhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBi dHNoYXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo YnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0 c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksIDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA3M2ViYzAxYTA4Zi4uYTAwYmRmZGY4MjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8 CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwog CiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nh bi0+cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVf c2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o cmVsKTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9 IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2Fu KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUz NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlx dWVfa2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3Rp ZDsKIAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9i ZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJ Ym9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCBkYWU5MTYzMGFjMy4uMTk1N2JiMGYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0x MTU2LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1h cCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOwor CXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwg TlVMTCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2YjFhMDBlZDQ3Ny4uMTMwYTY3MGQyNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCBBVFJld3JpdGVU YWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2lu ZyBhbGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzc2Niw3ICsx Mzc2Niw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkg Ki8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJ c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludCIsCkBAIC0yMjYyMyw3ICsyMjYyMyw3IEBAIE1lcmdlUGFydGl0aW9uc01v dmVSb3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0CiAKIAkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAog CQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBp dCBmb3IgZWFjaCB0dXBsZQpAQCAtMjMwODcsNyArMjMwODcsNyBAQCBTcGxpdFBhcnRpdGlvbk1v dmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCiAK IAkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRS ZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwppbmRleCBiZTZmZmQ2ZGRiMC4uMjkyMWY2OGMxYzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3Ry YWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0 aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgp KTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0 YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK IAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFsaWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQo T2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2NiaW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkv KiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3Jl YXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKaW5kZXggMGIzYTMxZjE3MDMuLjc0MjYyYTM0ODE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgxNiw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91 bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5Ogog CWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBp bmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRp cnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRzLCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRl eF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5n X3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA4NjBmNzlm OWNjMS4uNmU0OWVhNWM1ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlv biByZWwsIE9pZCBpZHhvaWQsCiAJc2tleV9hdHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9r ZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNlYXJjaHNsb3QpOwogCiAJLyogU3RhcnQgYW4gaW5kZXgg c2Nhbi4gKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws ICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIHJldHJ5OgogCWZvdW5kID0gZmFs c2U7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9u IHJlbCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAq LwogCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCAmc25hcCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAw LCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAK IHJldHJ5OgpAQCAtNjAxLDcgKzYwMSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9T ZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCwKIAkgKiBub3QgeWV0 IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUK IAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAq LwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCk7CisJ c2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCAwKTsKIAlz Y2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAl0YWJsZV9yZXNjYW4o c2NhbiwgTlVMTCk7CkBAIC02NjUsNyArNjY1LDcgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1cGxl SW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCSAqIG5vdCB5ZXQgY29tbWl0 dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHByaW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4 Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9kZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2Nh biA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlf YXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFwc2hv dEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDApOwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNr ZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlm ICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7 CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2Nh bnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykp CisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZs YWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJh dG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCA2YmVhNDJmMTI4Zi4uMmM4N2JhNWY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJ CQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IDcyYjEzNWU1ZGNmLi45MjY3NDQ0MWM2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK KwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRl ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNl cU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJewor CQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5v ZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkg KiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUg c2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBh cmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJ CQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAg QEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg bm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZ OworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJ CQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVs V29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOwor CXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2Rl LT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNf bW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlw c2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f bm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsK KwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKaW5kZXggMTZiMGFkYzE3MmMuLjkxYWNmMWVlMmQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNoZWNrX2Rl ZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVs dF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJl c2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGM3NjBi MTlkYjU1Li5lYzBkZWYwZDFlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAs NyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJl bCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJ CQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJ CQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwog CWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3Nj YW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYu LmQyOWQ5ZTkwNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJ bmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJ CQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggNTY1N2IxZGY0NmIuLmJhNjJhNGQ0Y2JhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0 Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBp biBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZl ciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoKKwkgKiBTb21lIG9wdGlt aXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2Rp ZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLwor CWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJl c3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCBlZTliMzJjNDYyMC4uMTVmYWQ2NmVkODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIg c25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkv KiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JF TF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcg KzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMg Zm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVw bGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVn aW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4 X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBS ZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4 IGZldGNoCkBAIC04NzMsOSArODc1LDkgQEAgZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9z bG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0 aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlp bnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlT T19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJl dHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtl eSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE4LDkgKzkyMCw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90 YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkg ICBOVUxMLCBmbGFncyk7CkBAIC0xMTI3LDcgKzExMjksOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xk IGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjMsOSArMTE2Niw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFi bGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGluZSBJbmRleEZldGNoVGFi bGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdzKQogewotCXJldHVybiBy ZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRf dGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQz LjAKCg== --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v31-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhd29t14 RnJvbSA4ZmY0NjIyNzg3MzZjN2ZhMWRlMDk2ZjQzZTgwNWE5MmM2OGE1YjA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMSAxNS8xNl0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysr LS0KIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICst CiA1IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmYjdhNzU0OGFhMC4uZDlkYzc5ZjRhOTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzAsNiArNTcwLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODQsNyArNTg1LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 MSw2ICsxMjY0LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTI5OSw2ICsxMzAzLDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzEsNiArMTM0MSw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBmYzI1MWUxMWY4YS4u Njk0NmRhOGM5ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2Ni dWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7 CiAJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwpAQCAtMTAwLDYgKzEwMSwxMiBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVs ZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1 ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsK KwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOSw3ICsxNDYs OCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBv biB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJ CWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7 CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2Ni dWYsCisJCQkJCQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4tPnhz X3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNv IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzcsNiArMjQ4NSw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUyMyw3ICsyNTMyLDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA4ZTU5ZTc2OTJjMS4uZjQxNGYwMjk2NGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yMDIsNiArMjAyLDggQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxf c2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCiAJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIFBydW5l UmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwK IAkJCQkJCQkJICBpbnQgbmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0 cywKIAkJCQkJCQkJICB1aW50OCAqbmV3X3ZtYml0cyk7CkBAIC0yMjMsOSArMjI1LDEzIEBAIHN0 YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsIGJvb2wgZG9fc2V0CiAgKiBpZiB0aGVyZSdzIG5vdCBhbnkgdXNlIGluIHBydW5p bmcuCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24gdGhlIGJ1ZmZlciwgYW5kIG11c3Qg Km5vdCogaGF2ZSBhIGxvY2sgb24gaXQuCisgKgorICogSWYgdm1idWZmZXIgaXMgbm90IE5VTEws IGl0IGlzIG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBpZgorICog dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIFdlIHdpbGwgdGFrZSBjYXJlIG9mIHBpbm5pbmcgYW5k LCBpZiBuZWVkZWQsCisgKiByZWFkaW5nIGluIHRoZSBwYWdlIG9mIHRoZSB2aXNpYmlsaXR5IG1h cC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hpZDsKQEAgLTMwNiw2ICszMTIsMTMg QEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikK IAkJCQkuY3V0b2ZmcyA9IE5VTEwsCiAJCQl9OwogCisJCQlpZiAodm1idWZmZXIpCisJCQl7CisJ CQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksIHZtYnVmZmVyKTsKKwkJCQlwYXJhbXMub3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNOworCQkJCXBhcmFtcy52bWJ1ZmZlciA9ICp2bWJ1ZmZlcjsKKwkJCX0KKwogCQkJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoJnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9j LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTk1MSw2ICs5NjQsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk2NCw2ICs5ODAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTc0LDYgKzk5MiwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNzEsNiArMTIwNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBiYTYyYTRkNGNiYS4uYjBlN2M3MTQ2 M2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhl YXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAq cnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBh bmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBt b2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBh Z2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2Np bmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJ CXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAt MTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJ bmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhl IGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZm ZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRC dWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQg aGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJ bnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZl cgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlm eSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSBy ZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8K KwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkg KiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBk b2VzIG5vdCBtb2RpZnkKQEAgLTQxOSw3ICs0MzYsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBo ZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0lu ZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lk IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4uYmRkOWYwYTYyY2QgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBs aWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZv OwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVj dmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygn c2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25m bGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3 YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25 Content-Type: text/x-patch; charset="UTF-8"; name="v31-0016-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v31-0016-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhhdrh515 RnJvbSBkN2FmNTc1ZWJhYzk4ODIxNjU0ZDdjYzU3MDkxZDEyNzNmMmIxZDg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzEgMTYvMTZdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmVjdGluZyB0aGUKcmVwb3J0ZWQgbnVtYmVyIG9mIGhpdHMgaW4gdGhlIGluZGV4LWtpbGx0dXBs ZXMgaXNvbGF0aW9uIHRlc3QuIEl0IGlzCnVuY2xlYXIgaWYgdGhpcyBpcyBhIGJ1ZyBpbiB0aGUg d2F5IGhpdHMgYXJlIHRyYWNrZWQsIGEgZmF1bHR5IHRlc3QKZXhwZWN0YXRpb24sIG9yIGlmIHNp bXBseSB1cGRhdGluZyB0aGUgdGVzdCdzIGV4cGVjdGVkIG91dHB1dCBpcwpzdWZmaWNpZW50IHJl bWVkaWF0aW9uLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgMjUg KysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YyAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIC4uLi9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tp bGx0dXBsZXMub3V0ICAgICB8ICA2ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlv bnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZDlk Yzc5ZjRhOTYuLmNjZWJjMWYyNDRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEx OSw2ICsyMTE5LDcgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0 dXAsIENvbW1hbmRJZCBjaWQsCiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNh Y3Rpb25JZCgpOwogCUhlYXBUdXBsZQloZWFwdHVwOwogCUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJ CXBhZ2U7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zp c2libGVfY2xlYXJlZCA9IGZhbHNlOwogCkBAIC0yMTc4LDE1ICsyMTc5LDE5IEBAIGhlYXBfaW5z ZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCX0K IAogCS8qCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFn ZSA/CisJICogU2V0IHBkX3BydW5lX3hpZCB0byB0cmlnZ2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKCkgb25jZSB0aGUgcGFnZQorCSAqIGlzIGZ1bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRo ZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KIAkgKgotCSAqIFRoZSBpbnNlcnRpbmcgdHJh bnNhY3Rpb24gbWF5IGV2ZW50dWFsbHkgYWJvcnQgdGh1cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAq IERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IgcHJ1bmluZy4gVGhvdWdoIHdlIGRvbid0IHdh bnQgdG8gb3B0aW1pemUKLQkgKiBmb3IgYWJvcnRzLCBpZiBubyBvdGhlciB0dXBsZSBpbiB0aGlz IHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUKLQkgKiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2 ZXIgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5n IHBkX3BydW5lX3hpZCBpcyBhbHNvIGhhbmR5IGlmIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24K KwkgKiBldmVudHVhbGx5IGFib3J0cyBtYWtpbmcgdGhpcyB0dXBsZSBERUFEIGFuZCBoZW5jZSBh dmFpbGFibGUgZm9yCisJICogcHJ1bmluZy4gSWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdl IGlzIFVQREFURWQvREVMRVRFZCwgdGhlIGFib3J0ZWQKKwkgKiB0dXBsZSB3b3VsZCBuZXZlciBv dGhlcndpc2UgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KIAkgKgot CSAqIElmIHlvdSBkbyBhZGQgUGFnZVNldFBydW5hYmxlIGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hs b2dfaW5zZXJ0IHRvby4KKwkgKiBEb24ndCBzZXQgaXQgaWYgd2UgYXJlIGluIGJvb3RzdHJhcCBt b2RlLCB0aG91Z2guCiAJICovCisJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAo VHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQp OwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKQEAgLTIxOTYsNyArMjIwMSw2IEBAIGhl YXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lk LAogCQl4bF9oZWFwX2luc2VydCB4bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhM b2dSZWNQdHIJcmVjcHRyOwotCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwog CQl1aW50OAkJaW5mbyA9IFhMT0dfSEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsK IApAQCAtMjU2MCw4ICsyNTY0LDEzIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0 aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0J CSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUg aGVhcF9pbnNlcnQoKQorCQkgKiBTZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBm b3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRo aXMgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRo ZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJv b3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlv bklkSXNOb3JtYWwoeGlkKSkKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1h cmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YwppbmRleCA0N2QyNDc5NDE1ZS4uYWIyZGI5MzFhYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3hsb2cuYwpAQCAtNDQ3LDYgKzQ0NywxMiBAQCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNl KHBhZ2UpOyAvKiBuZWVkZWQgdG8gdXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8qCisJCSAqIFNl dCB0aGUgcGFnZSBwcnVuYWJsZSB0byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdo aWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgorCQkgKi8K KwkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisKIAkJUGFn ZVNldExTTihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FM TF9WSVNJQkxFX0NMRUFSRUQpCkBAIC01OTYsOSArNjAyLDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2Up OwogCi0JCS8qIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBs ZXMgYXJlIHZpc2libGUgKi8KKwkJLyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBp bXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2UgYXJlIG5vdCBz ZXR0aW5nIHRoZSBwYWdlIGZyb3plbiwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVuYWJsZQorCQkg KiBoaW50IHNvIHRoYXQgd2UgdHJpZ2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBt YXkgc2V0IHRoZQorCQkgKiBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCiAJCWlm ICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQkJUGFnZVNldEFs bFZpc2libGUocGFnZSk7CisJCWVsc2UKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVj R2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCX0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgYi9z cmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CmluZGV4IGJlN2Rk ZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9l eHBlY3RlZC9raWxsdHVwbGVzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVj dGVkL2tpbGx0dXBsZXMub3V0CkBAIC01NCw3ICs1NCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBG Uk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFw X2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3 X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykK IAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxF Q1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcg QEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBz dGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50 ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0 YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdf aGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAg ICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNF VCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQg RlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVw bGUnKTsKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQg KyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vz c2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdr aWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQot ICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVh c3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxr c19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJl bG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwotLSAKMi40My4wCgo= --000000000000094d2a06468e7e25--