Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v8oQQ-004M6Y-Pf for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Oct 2025 23:27:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v8oQP-003OI3-PY for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Oct 2025 23:27:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v8oQO-003OHp-Pf for pgsql-hackers@lists.postgresql.org; Tue, 14 Oct 2025 23:27:24 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v8oQB-001nM3-20 for pgsql-hackers@lists.postgresql.org; Tue, 14 Oct 2025 23:27:22 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-6399706fd3cso8782467a12.2 for ; Tue, 14 Oct 2025 16:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760484430; x=1761089230; 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=aAQ4NyXO4jerNlLLRRcjz2PkEpdc8L2NyN9o6uRUVuo=; b=X4oTTs7CKM1OJ2bHdNqqWYXAzxe/URvF4YF672he6W8/D1xbzLxA2w7fZa9xBQZw7A 0eDGl62MFEpPREr79lVxRfTFOkMFBosJJ3Z+JymQGl/Mjyd/9i8ZhJ9PhHo4DmSmQP35 4QaS7tgkYSE+DGEjwrqQAo8foyG4mI/9t2Pflqf+4Bcsem01YFUVVUgF7rDk+xi3na2G Zs2BHbGQKipYwS6IxzwwfGIcsfaLGTRCMj4o5olrZjlSp3NMUyMDyUC9QluJHlKnjixk G6vN9XPEJAjbv5hhRzTW3S6g/DgrHFeHrLFED269e3W68/eELdBOchGO8qNRADy6h+tS WOpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760484430; x=1761089230; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aAQ4NyXO4jerNlLLRRcjz2PkEpdc8L2NyN9o6uRUVuo=; b=ooh1ZhZ7tr+SJDCGPqJk/h7N1lR16IaIw+j2CdNSAlcCBmWMWwsjP4Pc4z1h1fy3y7 DhhsWrlW1Fw8iUgZ5yJLp67hmxusrGZhcbnln9c/k3o8GnhWwRBEI/BLLgailAMcLIg2 tpQmoLNqHxlLYmiwlEV5BmB2+qGQMa8sJNOSFfj0ceg6niHHHzJEBava+Is1VUVxIuES CYDT61f5c9pmTnQ9UmOm0K/kInXZPXhpgadwoMnLplBIevN5tdShA8F7wcG96xhcSD0k Bqlg8Ov3SFeDB/AWBz/ywp7dk7U+vkiPzvhkx1WkJ8QLLWg6HJpYnLTPHt//C/6G4EvM VY6Q== X-Forwarded-Encrypted: i=1; AJvYcCWEnMSIRhwIgN3SHVktKooUIUR7ktLlWilcruLbtIIHGeQennj/BanuJtOdRxUA0PgCnQSQpm6Jj9YUoQnX@lists.postgresql.org X-Gm-Message-State: AOJu0YxwNDmxAUhjxxZIVjSaeQByJmBSLok8Qtylv9JilB0iUggPi5sk iRST/xHsi1h81DQHJM7Xyvw61v7ZCGlyO8zSqJyP6WldAX7yslszvs2H49bSDECPNEbh6PUwMhj ik4cMxKzPYijE4OWMIspmgSxwE3rV/7E= X-Gm-Gg: ASbGncuh+ns0Q+wMWZM+Az+WiiTcva0Tn59C3TOEv0FR7z/xT1f9I8MYq/mv5DYQ90k lvOM+TmynhaXHR1kzGUeuFWoveb+XnC7cIwgIW9hZSqpHFBlWtHDS9ga7zgp+EsuhhB5kmiJq+s BTs+NGsajW45lyZslGpC/XN7pEYUy3g58TbsFoHKGgcUzzK+zlVIwdWRm7i3uLruBUnHBXeE1Jm e04VBWmPtyIUdN5G2ekgIFdqS1b0VBwmyWtwmYNaT5Oxajrzonn2zh8KUfMdL5FRReebQ== X-Google-Smtp-Source: AGHT+IEZO5wTuG4JMCtVct671JPUxkOLGIYGxP+CwZs2Cv56uj8EUh5GpwPubLqNSqwnUD4e8yMPteULCb0dgvrnGxc= X-Received: by 2002:a05:6402:51d0:b0:634:a852:5104 with SMTP id 4fb4d7f45d1cf-639d5c43eb0mr24720493a12.24.1760484429809; Tue, 14 Oct 2025 16:27:09 -0700 (PDT) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> From: Melanie Plageman Date: Tue, 14 Oct 2025 19:26:57 -0400 X-Gm-Features: AS18NWD9kNq8ixhK_TSVpAJWjXUQwlIvMMcdf3yfRs7k3i0Kdv9xYfzWHN981Ko Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andres Freund Cc: Robert Haas , Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000012d76f064126b9cf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000012d76f064126b9cf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks so much for the review! I've addressed all your feedback except what is commented on inline below. I've gone ahead and committed the preliminary patches that you thought were ready to commit. Attached v18 is what remains. 0001 - 0003: refactoring 0004 - 0006: finish eliminating XLOG_HEAP2_VISIBLE 0007 - 0009: refactoring 0010: Set VM on-access 0011: Set prune xid on insert 0012: Some refactoring for discussion For 0001, I got feedback heap_page_prune_and_freeze() has too many arguments, so I tried to address that. I'm interested to know if folks like this more. 0011 still needs a bit of investigation to understand fully if anything else in the index-killtuples test needs to be changed to make sure we have the same coverage. 0012 is sort of WIP. I got feedback heap_page_prune_and_freeze() was too long and should be split up into helpers. I want to know if this split makes sense. I can pull it down the patch stack if so. Only 0001 and 0012 are optional amongst the refactoring patches. The others are required to make on-access VM-setting possible or viable. On Thu, Oct 9, 2025 at 2:18=E2=80=AFPM Andres Freund w= rote: > > > @@ -71,12 +84,12 @@ heap_xlog_prune_freeze(XLogReaderState *record) > > } > > - action =3D XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, > > - = (xlrec.flags & XLHP_CLEANUP_LOCK) !=3D 0, > > - = &buffer); > > - if (action =3D=3D BLK_NEEDS_REDO) > > + if (XLogReadBufferForRedoExtended(record, 0, RBM_NORMAL, > > + = (xlrec.flags & XLHP_CLEANUP_LOCK) !=3D 0, > > + = &buffer) =3D=3D BLK_NEEDS_REDO) > > { > > Page page =3D BufferGetPage(buffer); > > OffsetNumber *redirected; > > Why move it around this way? Because there will be an action for the visibility map XLogReadBufferForRedoExtended(). I could have renamed it heap_action, but it is being used only in one place, so I preferred to just cut it to avoid any confusion. > > Advance the page LSN > > + * only if the record could include an FPI, since recover= y skips > > + * records <=3D the stamped LSN. Otherwise it might skip = an earlier FPI > > + * needed to repair a torn page. > > + */ > > This is confusing, should probably just reference the stuff we did in the > !recovery case. I fixed this and addressed all your feedback related to this before committ= ing. > > + if (do_prune || nplans > 0 || > > + ((vmflags & VISIBILITYMAP_VALID_BITS) && XLogHint= BitIsNeeded())) > > + PageSetLSN(page, lsn); > > + > > /* > > * Note: we don't worry about updating the page's prunabi= lity hints. > > * At worst this will cause an extra prune cycle to occur= soon. > > */ > > Not your fault, but that seems odd? Why aren't we just doing the right th= ing? The comment dates back to 6f10eb2. I imagine no one ever bothered to fuss with extracting the XID. You could change heap_page_prune_execute() to return the right value -- though that's a bit ugly since it is used in normal operation as well as recovery. > I wonder if the VM specific redo portion should be in a common helper? Mi= ght > not be enough code to worry though... I think it might be more code as a helper at this point. > > @@ -2860,6 +2867,29 @@ lazy_vacuum_heap_page(LVRelState *vacrel, BlockN= umber blkno, Buffer buffer, > > VACUUM_ERRCB_PHA= SE_VACUUM_HEAP, blkno, > > InvalidOffsetNum= ber); > > > > + /* > > + * Before marking dead items unused, check whether the page will = become > > + * all-visible once that change is applied. > > So the function is named _would_ but here you say will :) I thought about it more and still feel that this function name should contain "would". From vacuum's perspective it is "will" -- because it knows it will remove those dead items, but from the function's perspective it is hypothetical. I changed the comment though. > > + if (heap_page_would_be_all_visible(vacrel, buffer, > > + = deadoffsets, num_offsets, > > + = &all_frozen, &visibility_cutoff_xid)) > > + { > > + vmflags |=3D VISIBILITYMAP_ALL_VISIBLE; > > + if (all_frozen) > > + { > > + vmflags |=3D VISIBILITYMAP_ALL_FROZEN; > > + Assert(!TransactionIdIsValid(visibility_cutoff_xi= d)); > > + } > > + > > + /* Take the lock on the vmbuffer before entering a critic= al section */ > > + LockBuffer(vmbuffer, BUFFER_LOCK_EXCLUSIVE); > > It sure would be nice if we had documented the lock order between the hea= p > page and the corresponding VM page anywhere. This is just doing what we = did > before, so it's not this patch's fault, but I did get worried about it fo= r a > moment. Well, the comment above the visibilitymap_set* functions says what expectations they have for the heap page being locked. > > +static bool > > +heap_page_would_be_all_visible(LVRelState *vacrel, Buffer buf, > > + OffsetNumber *= deadoffsets, > > + int ndeadoffse= ts, > > + bool *all_froz= en, > > + TransactionId = *visibility_cutoff_xid) > > +{ > > Page page =3D BufferGetPage(buf); > Hm, what about an assert checking that matched_dead_count =3D=3D ndeadoff= sets at > the end? I was going to put an Assert(ndeadoffsets <=3D matched_dead_count), but then I started wondering if there is a way we could end up with fewer dead items than we collected during phase I. I had thought about if we dropped an index and then did on-access pruning -- but we don't allow setting LP_DEAD items LP_UNUSED in on-access pruning. So, maybe this is safe... I can do a follow-on commit to add the assert. But I'm just not 100% sure I've thought of all the cases where we might end up with fewer dead items. > > During vacuum's first and third phases, we examine tuples' visibility > > to determine if we can set the page all-visible in the visibility map. > > > > Previously, this check compared tuple xmins against a single XID chosen= at > > the start of vacuum (OldestXmin). We now use GlobalVisState, which also > > enables future work to set the VM during on-access pruning, since ordin= ary > > queries have access to GlobalVisState but not OldestXmin. > > > > This also benefits vacuum directly: GlobalVisState may advance > > during a vacuum, allowing more pages to become considered all-visible. > > In the rare case that it moves backward, VACUUM falls back to OldestXmi= n > > to ensure we don=E2=80=99t attempt to freeze a dead tuple that wasn=E2= =80=99t yet > > prunable according to the GlobalVisState. > > It could, but it currently won't advance in vacuum, right? I thought it was possible for it to advance when calling heap_prune_satisfies_vacuum() -> GlobalVisTestIsRemovableXid()->...GlobalVisUpdate(). This case isn't going to be common, but some things can cause us to update it. We have talked about explicitly updating GlobalVisState more often during vacuums of large tables. But I was under the impression that it was at least possible for it to advance during vacuum now. - Melanie --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Disposition: attachment; filename="v18-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6uvl00 RnJvbSBkMzg1NjE1NDk1MzA1YmU0ZDQyYWVlZTA0MjJkZmVlZjhkMjZmM2E5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDExOjEwOjI1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDEvMTJdIFJlZmFjdG9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgcGFy YW1ldGVycwogaW50byBhIHN0cnVjdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBoYWQgYWNjdW11bGF0ZWQgYW4gdW53aWVsZHkg bnVtYmVyIG9mIGlucHV0CnBhcmFtZXRlcnMsIGFuZCB1cGNvbWluZyB3b3JrIHRvIGhhbmRsZSBW TSB1cGRhdGVzIGluIHRoaXMgZnVuY3Rpb24gd2lsbAphZGQgZXZlbiBtb3JlLgoKSW50cm9kdWNl IGEgbmV3IFBydW5lRnJlZXplUGFyYW1zIHN0cnVjdCB0byBncm91cCB0aGUgZnVuY3Rpb27igJlz IGlucHV0CnBhcmFtZXRlcnMsIGltcHJvdmluZyByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmls aXR5LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS95bjR6cDM1a2tkc2p4NndmNDd6 Y2ZteGdleHh0NGgyb2c0N3B2bncyeDVpZnlyczNxYyU0MDd1dzZqeXl4dXlmNwotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDE2ICsrKyst LQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgNjIgKysrKysrKysrKysr KysrKy0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAxICsKIDQg ZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMjMxYmVhNjc5YzYuLjQ1MGIyZWI2NDk0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjU4LDE1ICsyNTgsMjMgQEAgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJaWYg KFBhZ2VJc0Z1bGwocGFnZSkgfHwgUGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSkgPCBtaW5mcmVl KQogCQl7CiAJCQlPZmZzZXROdW1iZXIgZHVtbXlfb2ZmX2xvYzsKKwkJCVBydW5lRnJlZXplUGFy YW1zIHBhcmFtczsKIAkJCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CiAKKwkJCXBhcmFtcy5y ZWxhdGlvbiA9IHJlbGF0aW9uOworCQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKKwkJCXBhcmFt cy5yZWFzb24gPSBQUlVORV9PTl9BQ0NFU1M7CisJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7 CisJCQlwYXJhbXMuY3V0b2ZmcyA9IE5VTEw7CisKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNz IG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKIAkJCSAq IG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0 ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJy ZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCi0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShyZWxhdGlvbiwgYnVmZmVyLCB2aXN0ZXN0LCAwLAotCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1 bHQsIFBSVU5FX09OX0FDQ0VTUywgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOworCQkJcGFy YW1zLm9wdGlvbnMgPSAwOworCisJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFyYW1z LCAmcHJlc3VsdCwgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkvKgogCQkJICog UmVwb3J0IHRoZSBudW1iZXIgb2YgdHVwbGVzIHJlY2xhaW1lZCB0byBwZ3N0YXRzLiAgVGhpcyBp cwpAQCAtNDE5LDYwICs0MjcsNDMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVk dWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgogICogYXJyYXkgZm9sbG93 aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAgKgotICogSWYgdGhlIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBzZXQsIHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzIGlmIGl0J3MKLSAq IHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwg b3IgaWYgaXQncwotICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVt IHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQotICogJ2N1dG9mZnMnLCAncHJlc3VsdCcs ICduZXdfcmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cwotICog YXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlv biBpcyBzZXQsIHdlIGFsc28KLSAqIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3Vs dC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRpY2F0ZSBpZgotICogdGhlIFZNIGJpdHMgY2Fu IGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKLSAqIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eSBjYWxsZXJzCi0gKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KLSAq Ci0gKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERF QUQgb3IgUkVDRU5UTFlfREVBRAotICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0p LgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJv bCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBv ZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBvbiB3aGF0IGVhY2gKKyAqIHBhcmFtZXRlciBk b2VzLgogICoKLSAqIG9wdGlvbnM6Ci0gKiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhh dCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZwotICogICBwcnVuaW5nLgot ICoKLSAqICAgRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVz LCBhbmQgd2lsbCByZXR1cm4KLSAqICAgJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdz IHRvIHRoZSBjYWxsZXIuCi0gKgotICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXplIGN1dG9m ZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCi0gKiBvZiB2YWN1dW1p bmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlz IHNldC4KLSAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBp ZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBUVVBM RV9ERUFELgorICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFy YW1zLCB3ZSB3aWxsIGZyZWV6ZSB0dXBsZXMgaWYKKyAqIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIg dG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBvciBpZiBpdCdzCisgKiBjb25z aWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8g c28gbm93LiAgVGhlCisgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJv emVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnCisgKiBhcmd1bWVudHMgYXJlIHJlcXVpcmVk IHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcworICogcGFz c2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zy b3plbiBvbiBleGl0LAorICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNldC4g IFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgorICogdGhlIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seQorICog Y2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBw cmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNo IGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBk ZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgaXQuICBSZXF1aXJl ZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVhc29uIGluZGljYXRlcyB3aHkgdGhlIHBy dW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVkZWQgaW4gdGhlIFdBTAotICogcmVjb3Jk IGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBvc2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBu byBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUgb2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVk IGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAgKiBjYWxsYmFjay4KICAqCiAgKiBuZXdf cmVsZnJvemVuX3hpZCBhbmQgbmV3X3JlbG1pbl9teGlkIG11c3QgcHJvdmlkZWQgYnkgdGhlIGNh bGxlciBpZiB0aGUKLSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuICBPbiBlbnRy eSwgdGhleSBjb250YWluIHRoZSBvbGRlc3QgWElEIGFuZAotICogbXVsdGktWElEIHNlZW4gb24g dGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkIHdpdGggb2xkZXN0Ci0g KiB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vz c2luZyB0aGUgd2hvbGUKLSAqIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMg YXMgdGhlIG5ldyByZWxmcm96ZW54aWQvcmVsbWlubXhpZAotICogZm9yIHRoZSByZWxhdGlvbi4K KyAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLiAgT24gZW50cnks IHRoZXkgY29udGFpbiB0aGUKKyAqIG9sZGVzdCBYSUQgYW5kIG11bHRpLVhJRCBzZWVuIG9uIHRo ZSByZWxhdGlvbiBzbyBmYXIuICBUaGV5IHdpbGwgYmUgdXBkYXRlZAorICogd2l0aCBvbGRlc3Qg dmFsdWVzIHByZXNlbnQgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3Np bmcgdGhlCisgKiB3aG9sZSByZWxhdGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFz IHRoZSBuZXcKKyAqIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkIGZvciB0aGUgcmVsYXRpb24uCiAg Ki8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAotCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJCQkg ICBpbnQgb3B0aW9ucywKLQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAor aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgUHJ1bmVSZWFzb24g cmVhc29uLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3Jl bG1pbl9teGlkKQogeworCUJ1ZmZlcgkJYnVmZmVyID0gcGFyYW1zLT5idWZmZXI7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVm ZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtLApAQCAtNDg2 LDEwICs0NzcsMTEgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9m cGk7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0ZSAqLwotCXByc3RhdGUudmlzdGVz dCA9IHZpc3Rlc3Q7Ci0JcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9IDA7Ci0JcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6 ZSA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmN1 dG9mZnMgPSBjdXRvZmZzOworCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKKwlw cnN0YXRlLm1hcmtfdW51c2VkX25vdyA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAo cGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRl LmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0 byBzY2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTU4 Myw3ICs1NzUsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdl KTsKLQl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCXR1cC50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKIAogCS8qCiAJ ICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFuZCBxdWV1ZSB0aGVtIHVwIGZvciBw cm9jZXNzaW5nIGFzIEhPVApAQCAtNzg2LDcgKzc3OCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERlY2lkZSBpZiB3 ZSB3YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUK IAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgogCSAqLwotCWRvX2ZyZWV6ZSA9IGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCWRvX2ZyZWV6ZSA9IGhlYXBfcGFn ZV93aWxsX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGRpZF90 dXBsZV9oaW50X2ZwaSwKIAkJCQkJCQkJCSAgZG9fcHJ1bmUsCiAJCQkJCQkJCQkgIGRvX2hpbnRf cHJ1bmUsCkBAIC04MzgsNyArODMwLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExP R19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKIAkJICovCi0JCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1z LT5yZWxhdGlvbikpCiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6 b24gZm9yIHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQpAQCAtODc2LDExICs4NjgsMTEg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCiAJCQllbHNlCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3Jl bW92ZWQ7CiAKLQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwK KwkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAog CQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLAkvKiB2bWJ1ZmZlciAqLwogCQkJCQkJCQkJICAwLAkv KiB2bWZsYWdzICovCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwg cmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJz dGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVj dGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHBy c3RhdGUubmRlYWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNzFmYmQ2 OGM4ZWEuLjdkYjdjNTYzMTFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC0xOTY0LDEwICsxOTY0LDE2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiB7CiAJUmVsYXRpb24JcmVsID0gdmFjcmVsLT5yZWw7CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJl c3VsdDsKLQlpbnQJCQlwcnVuZV9vcHRpb25zID0gMDsKKwlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJh bXM7CiAKIAlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKKwlw YXJhbXMucmVsYXRpb24gPSByZWw7CisJcGFyYW1zLmJ1ZmZlciA9IGJ1ZjsKKwlwYXJhbXMucmVh c29uID0gUFJVTkVfVkFDVVVNX1NDQU47CisJcGFyYW1zLmN1dG9mZnMgPSAmdmFjcmVsLT5jdXRv ZmZzOworCXBhcmFtcy52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0OworCiAJLyoKIAkgKiBQcnVu ZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24g dGhpcyBwYWdlLgogCSAqCkBAIC0xOTgzLDEyICsxOTg5LDEyIEBAIGxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1p bmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0J cHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcGFyYW1zLm9wdGlvbnMg PSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCi0J CXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKKwkJcGFy YW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29w dGlvbnMsCi0JCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VV TV9TQ0FOLAorCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCZwYXJhbXMsCisJCQkJCQkJICAg JnByZXN1bHQsCiAJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwt Pk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVsbWluTXhpZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAppbmRleCA4Y2JmZjZhYjBlYi4uNzRhNWMyNDAwMmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIy MSw2ICsyMjEsNTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSGVhcFBhZ2VGcmVlemUKIAogfSBIZWFwUGFn ZUZyZWV6ZTsKIAorCisvKiAncmVhc29uJyBjb2RlcyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoKSAqLwordHlwZWRlZiBlbnVtCit7CisJUFJVTkVfT05fQUNDRVNTLAkJCS8qIG9uLWFj Y2VzcyBwcnVuaW5nICovCisJUFJVTkVfVkFDVVVNX1NDQU4sCQkJLyogVkFDVVVNIDFzdCBoZWFw IHBhc3MgKi8KKwlQUlVORV9WQUNVVU1fQ0xFQU5VUCwJCS8qIFZBQ1VVTSAybmQgaGVhcCBwYXNz ICovCit9IFBydW5lUmVhc29uOworCisvKgorICogSW5wdXQgcGFyYW1ldGVycyB0byBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisgKi8KK3R5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFy YW1zCit7CisJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZl ciB0byBiZSBwcnVuZWQgKi8KKwlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1 bmVkICovCisKKwkvKgorCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQg aXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKKwkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBm b3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KKwkgKi8KKwlQcnVuZVJlYXNvbiBy ZWFzb247CisKKwkvKgorCSAqIENvbnRhaW5zIGZsYWcgYml0czoKKwkgKgorCSAqIE1BUktfVU5V U0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1 cmluZworCSAqIHBydW5pbmcuCisJICoKKwkgKiBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2ls bCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgorCSAqICdhbGxfdmlzaWJsZScs ICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVyLgorCSAqLworCWludAkJCW9wdGlvbnM7 CisKKwkvKgorCSAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxl cyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECisJICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmll c192YWN1dW0pLgorCSAqLworCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0OworCisJLyoKKwkgKiBj dXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVN IGF0IHRoZQorCSAqIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWly ZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUKKwkgKiBvcHRpb24gaXMgc2V0LiBjdXRvZmZzLT5PbGRl c3RYbWluIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUgaWYgZGVhZAorCSAqIHR1cGxlcyBhcmUg SEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQuCisJICovCisJc3RydWN0 IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7Cit9IFBydW5lRnJlZXplUGFyYW1zOworCiAvKgogICog UGVyLXBhZ2Ugc3RhdGUgcmV0dXJuZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKQog ICovCkBAIC0yNjQsMTMgKzMxMyw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0 CiAJT2Zmc2V0TnVtYmVyIGRlYWRvZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIH0gUHJ1 bmVGcmVlemVSZXN1bHQ7CiAKLS8qICdyZWFzb24nIGNvZGVzIGZvciBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZSgpICovCi10eXBlZGVmIGVudW0KLXsKLQlQUlVORV9PTl9BQ0NFU1MsCQkJLyog b24tYWNjZXNzIHBydW5pbmcgKi8KLQlQUlVORV9WQUNVVU1fU0NBTiwJCQkvKiBWQUNVVU0gMXN0 IGhlYXAgcGFzcyAqLwotCVBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAkJLyogVkFDVVVNIDJuZCBoZWFw IHBhc3MgKi8KLX0gUHJ1bmVSZWFzb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlmdW5j dGlvbiBwcm90b3R5cGVzIGZvciBoZWFwIGFjY2VzcyBtZXRob2QKQEAgLTM2NywxMiArNDA5LDgg QEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7Ci1leHRlcm4gdm9p ZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKLQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJCQkJCQkJICAg aW50IG9wdGlvbnMsCi0JCQkJCQkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcywK K2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKLQkJCQkJ CQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2Zm X2xvYywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJ CQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCk7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDUyOTBiOTFlODNlLi5iMjIxYjM2OTliZiAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTIzNDIsNiArMjM0Miw3IEBAIFByb2plY3Rpb25QYXRoCiBQcm9tcHRJbnRl cnJ1cHRDb250ZXh0CiBQcm90b2NvbFZlcnNpb24KIFByc1N0b3JhZ2UKK1BydW5lRnJlZXplUGFy YW1zCiBQcnVuZUZyZWV6ZVJlc3VsdAogUHJ1bmVSZWFzb24KIFBydW5lU3RhdGUKLS0gCjIuNDMu MAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Disposition: attachment; filename="v18-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6v1t21 RnJvbSA0YzNmMTEzZmJkNjJiNTUzOTQ5Yjk1Y2IzNTIzNDc3NjcyNzhlN2RjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE0OjU1OjQwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDIvMTJdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIGluCiBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZQoKUHJldmlvdXNseSwgd2UgcmVsaWVkIG9uIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGJlaW5nIHVzZWQgdG9nZXRoZXIKdG8gZW5zdXJlIHRoYXQgYWxsX2Zyb3plbiB3 YXMgY29ycmVjdCwgYnV0IGl0IGlzIGJldHRlciB0byBrZWVwIGJvdGgKZmllbGRzIHVwZGF0ZWQu CgpGdXR1cmUgY2hhbmdlcyB3aWxsIHNlcGFyYXRlIHRoZWlyIHVzYWdlLCBzbyB3ZSBzaG91bGQg bm90IGRlcGVuZCBvbgphbGxfdmlzaWJsZSBmb3IgdGhlIHZhbGlkaXR5IG9mIGFsbF9mcm96ZW4u Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMjIgKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDkg KysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNDUwYjJlYjY0OTQuLmRh YTcxOWZjMmExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTQzLDEwICsx NDMsNiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9y IG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbgogCSAqIHZhbHVlcyByZXR1cm5l ZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYXQK IAkgKiB0aGUgZW5kLgotCSAqCi0JICogYWxsX2Zyb3plbiBzaG91bGQgb25seSBiZSBjb25zaWRl cmVkIHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIGFsc28gc2V0OwotCSAqIHdlIGRvbid0IGJvdGhl ciB0byBjbGVhciB0aGUgYWxsX2Zyb3plbiBmbGFnIGV2ZXJ5IHRpbWUgd2UgY2xlYXIgdGhlCi0J ICogYWxsX3Zpc2libGUgZmxhZy4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlh bGxfZnJvemVuOwpAQCAtMzYxLDggKzM1NywxMCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0 dW5pc3RpYyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CiAJCSAqIGhvd2V2ZXIs IGZvciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgogCQkgKi8KLQkJaWYg KHByc3RhdGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+ bmZyb3plbiA+IDApCisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96 ZW4gPiAwKQogCQl7CisJCQlBc3NlcnQocHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCiAJCQkvKgog CQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJl YWR5IGVtaXR0ZWQKIAkJCSAqIGFuIEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KQEAgLTc4NCw2 ICs3ODIsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCQkJCQkJCQkJICBkb19oaW50X3BydW5lLAogCQkJCQkJCQkJICAmcHJzdGF0ZSk7 CiAKKwlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsK KwogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAq LwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCkBAIC04NTMsNyArODUzLDcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCSAqLwogCQkJ aWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0 YXRlLmFsbF9mcm96ZW4pCisJCQkJaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKIAkJCQkJZnJ6X2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAkJCQllbHNl CiAJCQkJewpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2Vk X2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAog CQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRlZChodHVwKSkKIAkJCQl7Ci0JCQkJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAg LTE0NDAsNyArMTQ0MCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwo UGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJQXNzZXJ0KHBy c3RhdGUtPmN1dG9mZnMpOwogCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHBy c3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pKQogCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxsX3Zp c2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxf ZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtMTQ1Myw3ICsxNDUzLDcg QEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAogCQljYXNlIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50bHlfZGVhZF90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgd2lsbCBzb29uIGJl Y29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvCkBAIC0xNDcyLDcgKzE0NzIsNyBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICogYXNzdW1wdGlvbiBpcyBhIGJpdCBzaGFr eSwgYnV0IGl0IGlzIHdoYXQgYWNxdWlyZV9zYW1wbGVfcm93cygpCiAJCQkgKiBkb2VzLCBzbyBi ZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAK IAkJCS8qCiAJCQkgKiBJZiB3ZSB3YW50ZWQgdG8gb3B0aW1pemUgZm9yIGFib3J0cywgd2UgbWln aHQgY29uc2lkZXIgbWFya2luZwpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgaGVhcF9wcnVuZV9yZWNv cmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9m ZnNldE51bWIKIAkJCSAqIHdpbGwgY29tbWl0IGFuZCB1cGRhdGUgdGhlIGNvdW50ZXJzIGFmdGVy IHdlIHJlcG9ydC4KIAkJCSAqLwogCQkJcHJzdGF0ZS0+bGl2ZV90dXBsZXMrKzsKLQkJCXByc3Rh dGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3Rh dGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgbWF5IHNv b24gYmVjb21lIERFQUQuICBVcGRhdGUgdGhlIGhpbnQgZmllbGQgc28gdGhhdApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDdkYjdjNTYzMTFiLi41OGRlNjA1Y2EwOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjAyMCw3ICsyMDIwLDYgQEAgbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCiAJICovCiAjaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwotCS8qIE5vdGUgdGhhdCBhbGxfZnJvemVuIHZhbHVlIGRvZXMg bm90IG1hdHRlciB3aGVuICFhbGxfdmlzaWJsZSAqLwogCWlmIChwcmVzdWx0LmFsbF92aXNpYmxl KQogCXsKIAkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CkBAIC0yMDc0LDYgKzIwNzMsNyBA QCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSpoYXNfbHBkZWFkX2l0ZW1z ID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zp c2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOworCUFzc2VydCghcHJlc3VsdC5hbGxfZnJv emVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwogCiAJLyoKIAkgKiBIYW5kbGUgc2V0dGluZyB2 aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCkBA IC0yMTc5LDExICsyMTc5LDEwIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAKIAkvKgogCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5v dCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0 aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotCSAqIHRydWUs IHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KKwkgKiBp dCBhcyBhbGwtZnJvemVuLgogCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuICYm ICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKKwllbHNlIGlm IChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJvemVuICYmCisJ CQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKQogCXsKIAkJ dWludDgJCW9sZF92bWJpdHM7CiAKLS0gCjIuNDMuMAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v18-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6v6pi2 RnJvbSAxODEzNjhkMDgwZjZhNzMzMDRjNGYyNDg3MzljYTA4Zjg1YTczN2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDMvMTJdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zLiBUaGlzIGFs bG93cyBvcHBvcnR1bmlzdGljCmZyZWV6aW5nIGlmIHRoZSBwYWdlIHdvdWxkIG90aGVyd2lzZSBi ZSBmdWxseSBmcm96ZW4sIHNpbmNlIHRob3NlIGRlYWQKaXRlbXMgYXJlIGxhdGVyIHJlbW92ZWQg aW4gdmFjdXVt4oCZcyB0aGlyZCBwaGFzZS4KClRvIG1vdmUgdGhlIFZNIHVwZGF0ZSBpbnRvIHRo ZSBzYW1lIFdBTCByZWNvcmQgdGhhdApwcnVuZXMgYW5kIGZyZWV6ZXMgdHVwbGVzLCB3ZSBtdXN0 IGtub3cgd2hldGhlciB0aGUgcGFnZSB3aWxsCmJlIG1hcmtlZCBhbGwtdmlzaWJsZS9hbGwtZnJv emVuIGJlZm9yZSBlbWl0dGluZyBXQUwuCgpUaGUgb25seSBiYXJyaWVyIHRvIHVwZGF0aW5nIHRo ZXNlIGZsYWdzIGltbWVkaWF0ZWx5IGFmdGVyIGRlY2lkaW5nCndoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIGlzIHRoYXQgd2UgcHJldmlvdXNseSB1c2VkCmFsbF9mcm96ZW4gdG8g Y29tcHV0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIGZyZWV6aW5nCnR1cGxl cy4gQnkgZGV0ZXJtaW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLCB3ZSBjYW4gdXBkYXRlIHRoZSBm bGFncwppbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIGZyZWV6ZSBkZWNpc2lvbi4KClRoaXMg aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBWTSBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1f U0NBTgpyZWNvcmQgZW1pdHRlZCBieSBwcnVuaW5nIGFuZCBmcmVlemluZy4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDExNyArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBkYWE3MTlmYzJhMS4uZWY4ODYx MDIyZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMzgsMTEgKzEzOCwx MSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZy b3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBO T1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRl bXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFn ZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0 dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1z IGF0Ci0JICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBp bml0aWFsbHkgZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgorCSAqIFRoYXQncyBjb252ZW5p ZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCisJICog ZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJs ZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBh ZGp1c3RlZCB0byBpbmNsdWRlCisJICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUg d2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9p ZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAogc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJ CQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRf cHJ1bmUsCi0JCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CisJCQkJCQkJCSAgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCAqZnJ6X2NvbmZsaWN0X2hvcml6b24pOwogCiAK IC8qCkBAIC0zMDgsNyArMzA4LDkgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlcikKICAqIHBlcmZvcm1zIHNldmVyYWwgcHJlLWZyZWV6ZSBjaGVj a3MuCiAgKgogICogVGhlIHZhbHVlcyBvZiBkb19wcnVuZSwgZG9faGludF9wcnVuZSwgYW5kIGRp ZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCi0gKiBkZXRlcm1pbmVkIGJlZm9yZSBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uCisgKiBkZXRlcm1pbmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u ICpmcnpfY29uZmxpY3RfaG9yaXpvbiBpcyBzZXQgdG8KKyAqIHRoZSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uIHdlIGZvciB0aGUgV0FMIHJlY29yZCBzaG91bGQgd2UgZGVjaWRlIHRvCisgKiBm cmVlemUgdHVwbGVzLgogICoKICAqIHByc3RhdGUgaXMgYm90aCBhbiBpbnB1dCBhbmQgb3V0cHV0 IHBhcmFtZXRlci4KICAqCkBAIC0zMjAsNyArMzIyLDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkgIGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLAogCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCiAJCQkJCSAgYm9vbCBkb19oaW50X3By dW5lLAotCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpCisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwKKwkJCQkJICBUcmFuc2FjdGlvbklkICpmcnpfY29uZmxpY3RfaG9yaXpvbikKIHsKIAli b29sCQlkb19mcmVlemUgPSBmYWxzZTsKIApAQCAtMzkwLDYgKzM5MywyMiBAQCBoZWFwX3BhZ2Vf d2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGNyaXRp Y2FsIHNlY3Rpb24uCiAJCSAqLwogCQloZWFwX3ByZV9mcmVlemVfY2hlY2tzKGJ1ZmZlciwgcHJz dGF0ZS0+ZnJvemVuLCBwcnN0YXRlLT5uZnJvemVuKTsKKworCQkvKgorCQkgKiBDYWxjdWxhdGUg d2hhdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzaG91bGQgYmUgZm9yIGEgcmVjb3Jk CisJCSAqIGZyZWV6aW5nIHR1cGxlcy4gV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZf eGlkIGFzIG91ciBjdXRvZmYKKwkJICogZm9yIGNvbmZsaWN0cyB3aGVuIHRoZSB3aG9sZSBwYWdl IGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVuCisJCSAqIGluIHRoZSBWTSBvbmNlIHdl J3JlIGRvbmUgd2l0aCBpdC4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhCisJCSAqIGNvbnNlcnZh dGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCSAqLworCQlp ZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSpmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3Rh dGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwkJZWxzZQorCQl7CisJCQkvKiBBdm9pZHMgZmFs c2UgY29uZmxpY3RzIHdoZW4gaG90X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCisJCQkqZnJ6 X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJVHJh bnNhY3Rpb25JZFJldHJlYXQoKmZyel9jb25mbGljdF9ob3Jpem9uKTsKKwkJfQogCX0KIAllbHNl IGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKIAl7CkBAIC00MzQsMTAgKzQ1MywxMSBAQCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiBj b25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8g ZG8gc28gbm93LiAgVGhlCiAgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVs ZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnCiAgKiBhcmd1bWVudHMgYXJlIHJlcXVp cmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcwotICog cGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxs X2Zyb3plbiBvbiBleGl0LAotICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNl dC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgotICogdGhlIEhFQVBfUFJVTkVf RlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seQot ICogY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KKyAqIHBh c3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9m cm96ZW4gYWZ0ZXIKKyAqIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9ydW5pc3Rp Y2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUKKyAqIFZNIGJpdHMgY2FuIGJlIHNldC4g IFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKKyAqIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxs ZXJzCisgKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBw cmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNo IGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBk ZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC00NzMsNiArNDkzLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAli b29sCQlkb19oaW50X3BydW5lOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJ ZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25m bGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKiBDb3B5IHBhcmFtZXRl cnMgdG8gcHJzdGF0ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKQEAg LTU0MiwxMCArNTYzLDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNp YmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQogCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFy ZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCiAJICogd2ls bCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUg dXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0 LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0 ZW1zLiAgV2UgZml4IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3 ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAq IGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogb3Bwb3J0dW5pc3RpY2Fs bHkgZnJlZXppbmcuICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQorCSAq IGNsZWFyIGFsbF92aXNpYmxlIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXggdGhh dCBhZnRlcgorCSAqIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLCBiZWZvcmUgd2UgcmV0dXJu IHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLAorCSAqIHNvIHRoYXQgdGhlIGNhbGxlciBkb2Vzbid0 IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRf ZnJlZXplKQogCXsKQEAgLTc4MCw3ICs4MDEsMjQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgZGlkX3R1cGxlX2hpbnRf ZnBpLAogCQkJCQkJCQkJICBkb19wcnVuZSwKIAkJCQkJCQkJCSAgZG9faGludF9wcnVuZSwKLQkJ CQkJCQkJCSAgJnByc3RhdGUpOworCQkJCQkJCQkJICAmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgJmZy el9jb25mbGljdF9ob3Jpem9uKTsKKworCS8qCisJICogV2hpbGUgc2Nhbm5pbmcgdGhlIGxpbmUg cG9pbnRlcnMsIHdlIGRpZCBub3QgY2xlYXIKKwkgKiBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIHdo ZW4gZW5jb3VudGVyaW5nIExQX0RFQUQgaXRlbXMgYmVjYXVzZSB3ZQorCSAqIHdhbnRlZCB0aGUg ZGVjaXNpb24gd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHRvIGJlIHVuYWZmZWN0 ZWQKKwkgKiBieSB0aGUgc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhl c2UgTFBfREVBRCBpdGVtcyBhcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VO VVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2 YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAq IHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNV VU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IHdlIGZpbmlzaGVkIGRldGVybWluaW5nIHdo ZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSwKKwkgKiB1cGRhdGUgYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIHRydWUgc3RhdGUKKwkgKiBv ZiB0aGUgcGFnZSBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBhbmQgVk0gYml0cy4KKwkgKi8K KwlpZiAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPiAwKQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0g cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3pl biB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKIApAQCAtODQyLDI3ICs4ODAsOCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogb24g dGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMK IAkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgogCQkJICovCi0JCQlUcmFu c2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ CQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKIAotCQkJLyoKLQkJCSAqIFdlIGNhbiB1c2Ug dGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmIGZvcgotCQkJICogY29uZmxp Y3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96ZW4K LQkJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gIE90aGVyd2lzZSB3ZSBn ZW5lcmF0ZSBhCi0JCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJv bSBPbGRlc3RYbWluLgotCQkJICovCi0JCQlpZiAoZG9fZnJlZXplKQotCQkJewotCQkJCWlmIChw cnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52 aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogQXZvaWRzIGZh bHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJCQlm cnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCQkJ VHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJCX0KLQkJCX0K LQogCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9uLCBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCiAJCQkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0 X2hvcml6b247CiAJCQllbHNlCkBAIC04ODgsMzAgKzkwNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9 IHByc3RhdGUubmZyb3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90 dXBsZXM7CiAJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5 X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBf REVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hv aWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRo ZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0 ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBo ZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGlu ZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2Vz IGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNl dCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUg cGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUg cGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4KLQkgKi8KLQlpZiAocHJzdGF0ZS5hbGxf dmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQotCXsKLQkJcHJlc3VsdC0+YWxs X3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0g cHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJs ZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JfQotCisJcHJlc3Vs dC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOworCXByZXN1bHQtPmFsbF9mcm96 ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0 dXA7CiAKIAkvKgotLSAKMi40My4wCgo= --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0004-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v18-0004-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6va803 RnJvbSA2ZGI0ZGY4ODgxNTg4MTAxMjVjMjVmYTAwYTA1ZmUzMTM0MmE5YzBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxOCAwNC8xMl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgIDM3ICsrLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICB8IDQzNCArKysrKysrKysrKysrKysr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDIwNyAr LS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgfCAgNDMg KystCiA0IGZpbGVzIGNoYW5nZWQsIDQyMSBpbnNlcnRpb25zKCspLCAzMDAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggMjMwZDk4ODg3OTMuLjQx MmFjM2VkZjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTEwNCw2 ICsxMDQsOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpkYXRhcHRyID0gWExv Z1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9fcHJ1bmU7 CisJCWJvb2wJCXNldF9sc24gPSBmYWxzZTsKKwkJYm9vbAkJbWFya19idWZmZXJfZGlydHkgPSBm YWxzZTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRhcHRy LCB4bHJlYy5mbGFncywKIAkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNl dHMsCkBAIC0xNTcsMTcgKzE1OSwzNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBUaGVyZSBzaG91bGQgYmUgbm8gbW9yZSBkYXRhICovCiAJ CUFzc2VydCgoY2hhciAqKSBmcnpfb2Zmc2V0cyA9PSBkYXRhcHRyICsgZGF0YWxlbik7CiAKLQkJ aWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0JCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKGRvX3BydW5l IHx8IG5wbGFucyA+IDApCisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHNldF9sc24gPSB0cnVlOwog CiAJCS8qCi0JCSAqIFNlZSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKCkgZm9yIGNvbW1lbnRh cnkgb24gd2hlbiB3ZSBzZXQgdGhlCi0JCSAqIGhlYXAgcGFnZSBMU04uCisJCSAqIFRoZSBjcml0 aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5k CisJCSAqIHVwIHdpdGggd2l0aCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNldCBhbmQgdGhlIHBh Z2UtbGV2ZWwKKwkJICogUERfQUxMX1ZJU0lCTEUgYml0IGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRv IG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCQkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0 byBjbGVhciB0aGUgdmlzaWJpbGl0eSBtYXAgYml0LgorCQkgKgorCQkgKiB2bWZsYWdzIG1heSBi ZSBub256ZXJvIHdpdGggUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgKGUuZy4gd2hlbgorCQkg KiBtYXJraW5nIGFuIGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbikuIElmIG9ubHkgdGhlIFZN IGlzIHVwZGF0ZWQsCisJCSAqIHRoZSBoZWFwIHBhZ2UgbmVlZCBub3QgYmUgZGlydGllZC4KIAkJ ICovCi0JCWlmIChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8Ci0JCQkoKHZtZmxhZ3MgJiBWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCWlmICgo dm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUo cGFnZSkpCisJCXsKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJbWFya19idWZmZXJf ZGlydHkgPSB0cnVlOworCisJCQkvKgorCQkJICogU2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUoKSBmb3IgY29tbWVudGFyeSBvbiB3aGVuIHdlIHNldAorCQkJICogdGhlIGhlYXAgcGFnZSBM U04uCisJCQkgKi8KKwkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQkJc2V0X2xzbiA9 IHRydWU7CisJCX0KKworCQlpZiAobWFya19idWZmZXJfZGlydHkpCisJCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKKworCQlpZiAoc2V0X2xzbikKIAkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsK IAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBlZjg4NjEwMjJmMS4u YjM4YjYyNzc5YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3ICsx OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vz cy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUgImFj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFw LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2Vy dC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0eXBl ZGVmIHN0cnVjdAogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVt cHQgZnJlZXppbmcgdHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hldGhl ciBvciBub3QgdG8gYXR0ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0X3Vw ZGF0ZV92bTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTMzLDE2 ICsxMzUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3pl biBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRzIGlu IHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1bmlu Zy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRo ZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0IGlz IG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlzCi0J ICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9m IGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBjb25m bGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5nIGFs bCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRoZSBs aXZlCisJICogdHVwbGVzIG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAqIE5P VEU6IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRlIExQ X0RFQUQgaXRlbXMuCiAJICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKCkgdG8gdXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUg dGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFs dWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkgKiBM UF9ERUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNh bGx5IGZyZWV6ZS4KKwkgKiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVl emUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4g dmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVkIHRv IGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qg dG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2li bGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE3MywxMCArMTc2LDIxIEBAIHN0YXRpYyB2b2lk IGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0 YXRlLCBPZmZzZXROCiAKIHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBh Z2UpOwogCitzdGF0aWMgVHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rp b25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6 b24sCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29s IGJsa19hbHJlYWR5X2F2LAorCQkJCQkJCQkJICBib29sIHNldF9ibGtfYWxsX2Zyb3plbik7CiBz dGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCQkJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZG9faGludF9wcnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlLCBU cmFuc2FjdGlvbklkICpmcnpfY29uZmxpY3RfaG9yaXpvbik7Ci0KK3N0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCSAgIEJsb2NrTnVt YmVyIGhlYXBfYmxrLAorCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCisJCQkJCQkJCSAgIEJ1 ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkJCSAg IGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAor CQkJCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKTsKIAogLyoKICAqIE9wdGlvbmFsbHkgcHJ1 bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGluIHRoZSBzcGVjaWZpZWQgcGFnZS4KQEAgLTI2 Miw2ICsyNzYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogCQkJcGFyYW1zLnJlYXNvbiA9IFBSVU5FX09OX0FDQ0VTUzsKIAkJCXBhcmFt cy52aXN0ZXN0ID0gdmlzdGVzdDsKIAkJCXBhcmFtcy5jdXRvZmZzID0gTlVMTDsKKwkJCXBhcmFt cy52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJCQlwYXJhbXMuYmxrX2tub3duX2F2ID0gZmFs c2U7CiAKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNzIG1hcmtfdW51c2VkX25vdyBhcyBmYWxz ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKQEAgLTQzNCwxMCArNDUwLDEwOCBAQCBoZWFwX3Bh Z2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJcmV0dXJu IGRvX2ZyZWV6ZTsKIH0KIAorLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0cyBmb3IgaGVhcF9ibGssIHVzaW5nCisgKiBpbmZvcm1hdGlvbiBmcm9tIFBy dW5lU3RhdGUgYW5kIGJsa19rbm93bl9hdi4gU29tZSBjYWxsZXJzIG1heSBhbHJlYWR5CisgKiBo YXZlIGV4YW1pbmVkIHRoaXMgcGFnZeKAmXMgVk0gYml0cyAoZS5nLiwgVkFDVVVNIGluIHRoZSBw cmV2aW91cworICogaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCkgYW5kIGNhbiBwYXNz IHRoYXQgYWxvbmcuCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJpdHMg c2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCB0aGUgZGVzaXJlZAorICogZmxhZ3MgaW4gKnZtZmxh Z3MuIEFsc28gaW5kaWNhdGVzIHZpYSBkb19zZXRfcGRfdmlzIHdoZXRoZXIgUERfQUxMX1ZJU0lC TEUKKyAqIHNob3VsZCBiZSBzZXQgb24gdGhlIGhlYXAgcGFnZS4KKyAqLworc3RhdGljIGJvb2wK K2hlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCSAgIEJsb2Nr TnVtYmVyIGhlYXBfYmxrLAorCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCisJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKKwkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCSAgIGNvbnN0IFBy dW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAorCQkJCQkgICBib29s ICpkb19zZXRfcGRfdmlzKQoreworCVBhZ2UJCWhlYXBfcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVh cF9idWYpOworCWJvb2wJCWRvX3NldF92bSA9IGZhbHNlOworCisJKmRvX3NldF9wZF92aXMgPSBm YWxzZTsKKworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlBc3NlcnQo IXByc3RhdGUtPmFsbF92aXNpYmxlICYmICFwcnN0YXRlLT5hbGxfZnJvemVuKTsKKwkJQXNzZXJ0 KCp2bWZsYWdzID09IDApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKHByc3RhdGUtPmFs bF92aXNpYmxlICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJCSpkb19zZXRfcGRf dmlzID0gdHJ1ZTsKKworCWlmICgocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgIWJsa19rbm93bl9h dikgfHwKKwkJKHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24s IGhlYXBfYmxrLCAmdm1idWZmZXIpKSkKKwl7CisJCSp2bWZsYWdzID0gVklTSUJJTElUWU1BUF9B TExfVklTSUJMRTsKKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCQkqdm1mbGFncyB8PSBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisKKwkJZG9fc2V0X3ZtID0gdHJ1ZTsKKwl9CisKKwkv KgorCSAqIE5vdyBoYW5kbGUgdHdvIHBvdGVudGlhbCBjb3JydXB0aW9uIGNhc2VzOgorCSAqCisJ ICogVGhlc2UgZG8gbm90IG5lZWQgdG8gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQg YXJlIG5vdAorCSAqIFdBTC1sb2dnZWQuCisJICoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwg dGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBh Z2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZh Y3V1bSB0aGUgYml0CisJICogZ290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdAorCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9j ayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWVsc2Ug aWYgKGJsa19rbm93bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCQkg dmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAh PSAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9D T1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBi dXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIs CisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOwor CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJ CQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCX0KKworCS8qCisJICogSXQncyBwb3Nz aWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25n IGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2 ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhl IHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0 T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFu ZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAor CSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRo ZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5 ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3Jy ZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBw YWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBp ZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFn ZSkpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NP UlJVUFRFRCksCisJCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMg bWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFn ZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWYp OworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJ CQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9CisKKwlyZXR1cm4gZG9fc2V0X3Zt OworfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRp YWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBhZ2UuCisgKiBzcGVjaWZp ZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBk YXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1 ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKICAqIGRvbid0IHVw ZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJlaGFsZi4gIENh bGxlciBtaWdodApAQCAtNDUyLDEyICs1NjYsMTMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogaXQncyByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKICAqICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxm cm96ZW5feGlkJyBhbmQgJ25ld19yZWxtaW5fbXhpZCcKLSAqIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQgd2hlbiBmcmVlemluZy4gIFdoZW4gSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzCi0gKiBw YXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5hbGxf ZnJvemVuIGFmdGVyCi0gKiBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnVuaXN0 aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlCi0gKiBWTSBiaXRzIGNhbiBiZSBzZXQu ICBUaGV5IGFyZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZS RUVaRSBvcHRpb24gaXMgbm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2Fs bGVycwotICogdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiBhcmd1 bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BS VU5FX1VQREFURV9WSVMgaXMgc2V0IGluIHBhcmFtcyBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVz IG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRo ZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAqIGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2UuIFdl IHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xkX3ZtYml0cyBhbmQKKyAqIHByZXN1bHQtPm5l d192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhlIFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBkYXRp bmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVzZSBpbiBib29ra2VlcGluZy4KICAqCiAgKiBw cmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNo IGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBk ZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC00ODIsNiArNTk3LDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIg PSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsK IAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nr bm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwogCU9mZnNldE51bWJlciBvZmZudW0s CkBAIC00OTEsMTUgKzYwNywyMiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsK IAlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwlib29sCQlkb19zZXRf cGRfdmlzOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9 IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKIAlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9u ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CisJdWludDgJCW9s ZF92bWJpdHMgPSAwOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0 YXRlLnZpc3Rlc3QgPSBwYXJhbXMtPnZpc3Rlc3Q7CiAJcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cg PQogCQkocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVykg IT0gMDsKIAlwcnN0YXRlLmF0dGVtcHRfZnJlZXplID0gKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS5hdHRlbXB0X3VwZGF0ZV92bSA9CisJ CShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUykgIT0gMDsKIAlw cnN0YXRlLmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAKIAkvKgpAQCAtNTQ2LDUwICs2Njks NTQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVhZG9mZnNldHM7CiAKIAkvKgot CSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtl ZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5k IGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVlemluZyB0byBoZWxwIHRoZSBj YWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBUcmFjayB3aGV0aGVyIHRoZSBwYWdlIGNvdWxkIGJlIG1h cmtlZCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbi4KKwkgKiBUaGlzIGluZm9ybWF0aW9u IGlzIHVzZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIGZvciB1cGRhdGluZworCSAq IHRoZSB2aXNpYmlsaXR5IG1hcCAoVk0pIGlmIHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLgorCSAq CisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90aGVy IGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGluZyBp cyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQgYWxz byBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZzogd2Ugb25seSBjb25zaWRlciBmcmVlemluZyBp ZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3VsZCBi ZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZvciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3aWxs IHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBub3Qg c2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUgcGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlzaWJs ZS4KKwkgKgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHBhc3NlZCB3aXRo b3V0IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJICogcHJzdGF0ZS5hbGxfZnJvemVuIG11c3Qg YmUgaW5pdGlhbGl6ZWQgdG8gZmFsc2UsIHNpbmNlIHdlIHdpbGwgbm90IGNhbGwKKwkgKiBoZWFw X3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgZm9yIGVhY2ggdHVwbGUuCiAJICoKLQkgKiBDdXJyZW50 bHksIG9ubHkgVkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9u bHkgZG8KLQkgKiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJl bnRseSwgdGhhdCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQg Y291bGQgYmUgYSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhl IFZNIGJpdHMgd2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkg KiBzZXR0aW5nIHRoZSBWTSBiaXRzLgorCSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1v dmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtIHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVu aXN0aWMgZnJlZXppbmcuIFRoZXJlZm9yZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJ ICogd2hlbiB3ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdCBh bGxfdmlzaWJsZSBhZnRlcgorCSAqIGRlY2lkaW5nIHdoZXRoZXIgdG8gZnJlZXplLCBidXQgYmVm b3JlIHVwZGF0aW5nIHRoZSBWTSwgdG8gYXZvaWQKKwkgKiBzZXR0aW5nIHRoZSBWTSBiaXQgaW5j b3JyZWN0bHkuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hl dGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxl JyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0 aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlz dGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJl ZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQg YXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVw bGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdo aWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBu b3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVj YXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxfdmlzaWJs ZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYWZ0ZXIKLQkgKiBzY2Fu bmluZyB0aGUgbGluZSBwb2ludGVycywgYmVmb3JlIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhl IGNhbGxlciwKLQkgKiBzbyB0aGF0IHRoZSBjYWxsZXIgZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBp bmNvcnJlY3RseS4KKwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSBy ZXF1ZXN0ZWQsIHdlIHNraXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2Fz ZSwgaW5pdGlhbGl6aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1 bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29y ay4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxs X3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNl IGlmIChwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS5hbGxfdmlzaWJs ZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewot CQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3Jr IHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9u b3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJcHJzdGF0 ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0eSBjdXRv ZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkgKiBwYWdl LiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25mbGljdCBo b3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0uICBJZiwg YXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBpcyBhbGwt ZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5pbmcgdHJh bnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUgcGFnZSBh cwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5zIEludmFs aWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkgKiBvbGRlciB0aGFuIE9sZGVz dFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKKwkg KiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291 bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5t YWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVz ZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCisJICogd2hlbiB1 cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdl LgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKQEAgLTgyMSw2ICs5NDgsMzQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3Rh dGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwg cHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChw cnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRv IHNldCB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYW5kIHRoZSBWTSBiaXRzCisJ ICogYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gYW5kIHRoZSBhbGxfdmlzaWJsZS9h bGxfZnJvemVuIGZsYWdzLgorCSAqCisJICogV2hpbGUgaXQgaXMgdmFsaWQgZm9yIFBEX0FMTF9W SVNJQkxFIHRvIGJlIHNldCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCisJICogVk0gYml0IGlzIGNs ZWFyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBB Y2NvcmRpbmdseSwgd2UgYWxzbyBhbGxvdyB1cGRhdGluZyBvbmx5IHRoZSBWTSB3aGVuIFBEX0FM TF9WSVNJQkxFIGhhcworCSAqIGFscmVhZHkgYmVlbiBzZXQuIFNldHRpbmcgb25seSB0aGUgVk0g aXMgbW9zdCBjb21tb24gd2hlbiBzZXR0aW5nIGFuCisJICogYWxyZWFkeSBhbGwtdmlzaWJsZSBw YWdlIGFsbC1mcm96ZW4uCisJICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3Zp cyhwYXJhbXMtPnJlbGF0aW9uLAorCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZl ciwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICAmcHJzdGF0ZSwgJm5ld192bWJp dHMsICZkb19zZXRfcGRfdmlzKTsKKworCS8qIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYg UERfQUxMX1ZJU0lCTEUgaXMgc2V0IG9yIHdpbGwgYmUgKi8KKwlBc3NlcnQoIWRvX3NldF92bSB8 fCBkb19zZXRfcGRfdmlzIHx8IFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOworCisJY29uZmxpY3Rf eGlkID0gZ2V0X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sCisJ CQkJCQkJCQlwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgZnJ6X2NvbmZsaWN0X2hvcml6b24s CisJCQkJCQkJCQlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgcGFyYW1zLT5ibGtfa25v d25fYXYsCisJCQkJCQkJCQkoZG9fc2V0X3ZtICYmIChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKSkpOworCisJLyogTG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBj cml0aWNhbCBzZWN0aW9uICovCisJaWYgKGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZl ciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWlu ZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAt ODQyLDE0ICs5OTcsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0 byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICog dGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBm cmVlemUgb3IgcHJ1bmUgdGhlIHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3 aWxsIG1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9B TExfVklTSUJMRSBpcyBmdWxseSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJ CSAqIGZvciB0aGUgVk0gdG8gYmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4K IAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUg JiYgIWRvX3BydW5lICYmICFkb19zZXRfcGRfdmlzKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChi dWZmZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRv X3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxh bm5lZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlm IChkb19wcnVuZSkKQEAgLTg2MywzNSArMTAyMSw0MyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVh cF9mcmVlemVfcHJlcGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUu bmZyb3plbik7CiAKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChkb19zZXRfcGRf dmlzKQorCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CiAKLQkJLyoKLQkJICogRW1pdCBhIFdB TCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAotCQkgKi8KLQkJ aWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCisJCWlmIChkb19wcnVuZSB8 fCBkb19mcmVlemUgfHwgZG9fc2V0X3BkX3ZpcykKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIp OworCisJCWlmIChkb19zZXRfdm0pCiAJCXsKLQkJCS8qCi0JCQkgKiBUaGUgc25hcHNob3RDb25m bGljdEhvcml6b24gZm9yIHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQotCQkJICogbW9z dCBjb25zZXJ2YXRpdmUgb2YgYWxsIHRoZSBob3Jpem9ucyBjYWxjdWxhdGVkIGZvciBhbnkgb2Yg dGhlCi0JCQkgKiBwb3NzaWJsZSBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBw cnVuZSB0dXBsZXMsIGFueQotCQkJICogdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5IG9sZGVy IHRoYW4gdGhlIHlvdW5nZXN0IHhtYXggb2YgdGhlCi0JCQkgKiBtb3N0IHJlY2VudGx5IHJlbW92 ZWQgdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxsCi0JCQkgKiBjb25mbGljdC4gIElm IHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucwotCQkJICog b24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRo aXMKLQkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgotCQkJICovCi0JCQlU cmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKwkJCUFzc2VydChQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpKTsKIAotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9u LCBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gZnJ6X2Nv bmZsaWN0X2hvcml6b247Ci0JCQllbHNlCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQ7CisJCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRz KGJsb2Nrbm8sCisJCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJ CQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCWlmIChvbGRfdm1iaXRzID09 IG5ld192bWJpdHMpCisJCQl7CisJCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tf VU5MT0NLKTsKKwkJCQkvKiBVbnNldCBzbyB3ZSBkb24ndCBlbWl0IFdBTCBzaW5jZSBubyBjaGFu Z2Ugb2NjdXJyZWQgKi8KKwkJCQlkb19zZXRfdm0gPSBmYWxzZTsKKwkJCX0KKwkJfQogCisJCS8q CisJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3 ZSBkaWQuIElmIHdlIHdlcmUKKwkJICogb25seSB1cGRhdGluZyB0aGUgVk0gYW5kIGl0IHR1cm5z IG91dCBpdCB3YXMgYWxyZWFkeSBzZXQsIHdlIHdpbGwKKwkJICogaGF2ZSB1bnNldCBkb19zZXRf dm0gZWFybGllci4gQXMgc3VjaCwgY2hlY2sgaXQgYWdhaW4gYmVmb3JlCisJCSAqIGVtaXR0aW5n IHRoZSByZWNvcmQuCisJCSAqLworCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSAmJgorCQkJKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pKQorCQl7CiAJ CQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJ CQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwJLyogdm1idWZmZXIgKi8KLQkJCQkJCQkJCSAgMCwJLyog dm1mbGFncyAqLworCQkJCQkJCQkJICBkb19zZXRfdm0gPyB2bWJ1ZmZlciA6IEludmFsaWRCdWZm ZXIsCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IG5ld192bWJpdHMgOiAwLAogCQkJCQkJCQkJICBj b25mbGljdF94aWQsCi0JCQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+cmVhc29uLAorCQkJCQkJCQkJ ICB0cnVlLCAvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3BkX3ZpcywKKwkJ CQkJCQkJCSAgcGFyYW1zLT5yZWFzb24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0 YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVk aXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLApAQCAt OTAxLDI4ICsxMDY3LDQ3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwlpZiAoZG9fc2V0X3Zt KQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJLyoKKwkg KiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VVTSBjYWxscworCSAq IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWluZSB3aGV0aGVyIGEg cGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUgbG9naWMgaGVyZSBp cyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQgZnJlZXppbmcsIHVz ZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkgKiByZW1haW4gY29u c2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpLgorCSAqLworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSkKKwl7CisJ CVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwor CisJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUu Y3V0b2Zmcyk7CisKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxh dGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJ CQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCBv ZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CisKKwkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3pl biA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKKworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYnVnX2N1dG9mZikgfHwKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcnN0YXRlLnZpc2liaWxp dHlfY3V0b2ZmX3hpZCk7CisJfQorI2VuZGlmCisKIAkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sg Zm9yIGNhbGxlciAqLwogCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKIAlw cmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKIAlwcmVzdWx0LT5uZnJvemVuID0g cHJzdGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1 cGxlczsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlf ZGVhZF90dXBsZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxl OwotCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+ aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7Ci0KLQkvKgotCSAqIEZvciBjYWxsZXJzIHBsYW5uaW5n IHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uCi0JICog Zm9yIHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93 ZXZlciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJl IG5vIGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIHNob3VsZCByZW1h aW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzCi0JICogdGhlIGNhc2UgdGhh dCB3ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZAot CSAqIGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgY2FsbGVyIGRvZXNu J3QgbmVlZCBpdC4KLQkgKi8KLQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJcHJlc3VsdC0+ dm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJcHJl c3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCXByZXN1bHQtPm5ld192bWJpdHMgPSBuZXdfdm1iaXRzOworCXByZXN1bHQtPm9sZF92bWJp dHMgPSBvbGRfdm1iaXRzOwogCiAJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRl YWRfaXRlbXM7CiAJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5 IGZpbGxlZCBpbiAqLwpAQCAtMTQxMyw2ICsxNTk4LDggQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51 bWIKIAkJCXsKIAkJCQlUcmFuc2FjdGlvbklkIHhtaW47CiAKKwkJCQlBc3NlcnQocHJzdGF0ZS0+ YXR0ZW1wdF91cGRhdGVfdm0pOworCiAJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0 dGVkKGh0dXApKQogCQkJCXsKIAkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5h bGxfZnJvemVuID0gZmFsc2U7CkBAIC0yMDU4LDYgKzIyNDUsNjQgQEAgaGVhcF9sb2dfZnJlZXpl X3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogCXJldHVybiBucGxh bnM7CiB9CiAKKy8qCisgKiBDYWxjdWxhdGUgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3 aG9sZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCisgKiByZWNvcmQuCisgKi8KK3N0YXRp YyBUcmFuc2FjdGlvbklkCitnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9f ZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3Jl bW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJIFRyYW5zYWN0 aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29sIGJsa19hbHJlYWR5X2F2LAorCQkJCSBi b29sIHNldF9ibGtfYWxsX2Zyb3plbikKK3sKKworCS8qCisJICogVGhlIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9zdAorCSAqIGNv bnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUg cG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0 dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRo ZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkgKiB0dXBsZSB0 aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxs IGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSB3aXRo IHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxs IGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwkvKgorCSAqIElmIHdlIGFyZSB1cGRhdGluZyB0 aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdCBhbHdheXMgdGhlCisJICogdmlz aWJpbGl0eSBjdXRvZmYgWElELgorCSAqCisJICogU2VwYXJhdGVseSwgaWYgd2UgYXJlIGZyZWV6 aW5nIGFueSB0dXBsZXMsIGFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuCisJICogdXNlIHRoZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gaWYgdGhlIHBhZ2Ug d2lsbAorCSAqIGJlIGFsbC1mcm96ZW4uIFRoaXMgaXMgdHJ1ZSBldmVuIGlmIHRoZXJlIGFyZSBM UF9ERUFEIGxpbmUgcG9pbnRlcnMKKwkgKiBiZWNhdXNlIHdlIGlnbm9yZWQgdGhvc2Ugd2hlbiBt YWludGFpbmluZyB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLgorCSAqIFRoaXMgd2lsbCBoYXZl IGJlZW4gY2FsY3VsYXRlZCBlYXJsaWVyIGFzIHRoZSBmcnpfY29uZmxpY3RfaG9yaXpvbiB3aGVu CisJICogd2UgZGV0ZXJtaW5lZCB3ZSB3b3VsZCBmcmVlemUuCisJICovCisJaWYgKGRvX3NldF92 bSkKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWVsc2UgaWYgKGRv X2ZyZWV6ZSkKKwkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247CisKKwkvKgor CSAqIElmIHdlIGFyZSByZW1vdmluZyB0dXBsZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0aGFuIG91 ciBzbyBmYXIKKwkgKiBjYWxjdWxhdGVkIGNvbmZsaWN0X3hpZCwgd2UgbXVzdCB1c2UgdGhpcyBh cyBvdXIgaG9yaXpvbi4KKwkgKi8KKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MobGF0ZXN0X3hp ZF9yZW1vdmVkLCBjb25mbGljdF94aWQpKQorCQljb25mbGljdF94aWQgPSBsYXRlc3RfeGlkX3Jl bW92ZWQ7CisKKwkvKgorCSAqIFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jp em9uIGlmIHdlIGFyZSBub3QgcHJ1bmluZyBvcgorCSAqIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5k IGFyZSBzZXR0aW5nIGFuIGFscmVhZHkgYWxsLXZpc2libGUgcGFnZQorCSAqIGFsbC1mcm96ZW4g aW4gdGhlIFZNLiBJbiB0aGlzIGNhc2UsIGFsbCBvZiB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIG11 c3QKKwkgKiBhbHJlYWR5IGJlIHZpc2libGUgdG8gYWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZSBz dGFuZGJ5LgorCSAqLworCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQlkb19zZXRf dm0gJiYgYmxrX2FscmVhZHlfYXYgJiYgc2V0X2Jsa19hbGxfZnJvemVuKQorCQljb25mbGljdF94 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCXJldHVybiBjb25mbGljdF94aWQ7Cit9CisK IC8qCiAgKiBXcml0ZSBhbiBYTE9HX0hFQVAyX1BSVU5FKiBXQUwgcmVjb3JkCiAgKgpAQCAtMjA4 Miw2ICsyMzI3LDE1IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVw bGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJlYWR5IGhhdmUg YmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3RpbGwgYmUgcGlu bmVkIGFuZCBsb2NrZWQuCiAgKgorICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ug c2V0IFBEX0FMTF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKKyAqIHRoZSBwYWdlIExT TiB3aGVuIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlk IG5vdAorICogcHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KKyAqCisgKiBJbiBz b21lIGNhc2VzLCBzdWNoIGFzIHdoZW4gaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyBz ZXR0aW5nIGFuCisgKiBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4s IFBEX0FMTF9WSVNJQkxFIG1heSBhbHJlYWR5IGJlCisgKiBzZXQuIFNvLCBpdCBpcyBwb3NzaWJs ZSBmb3Igdm1mbGFncyB0byBiZSBub24temVybyBhbmQgc2V0X3BkX2FsbF92aXMgdG8gYmUKKyAq IGZhbHNlLgorICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2NyaWJibGVzIG9uIHRoZSAnZnJv emVuJyBhcnJheS4KICAqCiAgKiBOb3RlOiBUaGlzIGlzIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNl Y3Rpb24sIHNvIGNhcmVmdWwgd2hhdCB5b3UgZG8gaGVyZS4KQEAgLTIwOTEsNiArMjM0NSw3IEBA IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKIAkJCQkJCSAgVHJh bnNhY3Rpb25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAorCQkJ CQkJICBib29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCiAJ CQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zm c2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCkBAIC0yMTI3LDcgKzIzODIs NyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCSAqLwogCWlmICghZG9fcHJ1bmUgJiYKIAkJbmZyb3plbiA9PSAwICYmCi0JCSgh ZG9fc2V0X3ZtIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQkoIXNldF9wZF9hbGxfdmlz IHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCQlyZWdidWZfZmxhZ3NfaGVhcCB8PSBSRUdC VUZfTk9fSU1BR0U7CiAKIAkvKgpAQCAtMjI0NSw3ICsyNTAwLDggQEAgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBTZWUgY29t bWVudCBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiBhYm91dCByZWdidWZfZmxhZ3NfaGVhcCBm b3IKIAkgKiBkZXRhaWxzIG9uIHdoZW4gd2UgY2FuIGFkdmFuY2UgdGhlIHBhZ2UgTFNOLgogCSAq LwotCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fCAoZG9fc2V0X3ZtICYmIFhMb2dIaW50 Qml0SXNOZWVkZWQoKSkpCisJaWYgKGRvX3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8CisJCShzZXRf cGRfYWxsX3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCXsKIAkJQXNzZXJ0KEJ1ZmZl cklzRGlydHkoYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCBy ZWNwdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDU4ZGU2MDVjYTA5 Li45ODVhNjZiZGIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDY0 LDEzICs0NjQsNiBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9p dGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19j bGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H Ci1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBi b29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRp Zgogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJ CQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKQEAgLTE5NzMsNiArMTk2Niw4 IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJcGFyYW1zLnJlYXNvbiA9 IFBSVU5FX1ZBQ1VVTV9TQ0FOOwogCXBhcmFtcy5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmczsK IAlwYXJhbXMudmlzdGVzdCA9IHZhY3JlbC0+dmlzdGVzdDsKKwlwYXJhbXMudm1idWZmZXIgPSB2 bWJ1ZmZlcjsKKwlwYXJhbXMuYmxrX2tub3duX2F2ID0gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtOwogCiAJLyoKIAkgKiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBvdGVudGlh bGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhpcyBwYWdlLgpAQCAtMTk4OSw3ICsxOTg0LDcgQEAgbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiB0dXBsZXMuIFBydW5pbmcgd2ls bCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMKIAkgKiBhbGwtdmlz aWJsZS4KIAkgKi8KLQlwYXJhbXMub3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJ cGFyYW1zLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5F X1VQREFURV9WSVM7CiAJaWYgKHZhY3JlbC0+bmluZGV4ZXMgPT0gMCkKIAkJcGFyYW1zLm9wdGlv bnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIApAQCAtMjAxMiwzMyArMjAw Nyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCXZhY3JlbC0+bmV3 X2Zyb3plbl90dXBsZV9wYWdlcysrOwogCX0KIAotCS8qCi0JICogVkFDVVVNIHdpbGwgY2FsbCBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBkdXJpbmcgdGhlIHNlY29uZCBwYXNzIG92ZXIKLQkg KiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZm9yIHRo ZSBwYWdlIC0tIHRoaXMKLQkgKiBpcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIGxvZ2lj IGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0aGF0Ci0JICogd2UndmUgZmluaXNoZWQgcHJ1bmlu ZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGluIHRvdGFsCi0JICogYWdyZWVt ZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0aW9uLgot CSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlpZiAocHJlc3VsdC5hbGxfdmlzaWJs ZSkKLQl7Ci0JCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwotCQlib29sCQlkZWJ1Z19hbGxf ZnJvemVuOwotCi0JCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAwKTsKLQotCQlpZiAo IWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAotCQkJCQkJCQkJICB2 YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4sCi0JCQkJCQkJCQkg ICZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpCi0JCQlBc3NlcnQoZmFsc2UpOwotCi0J CUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7Ci0KLQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8Ci0JCQkgICBkZWJ1Z19j dXRvZmYgPT0gcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKTsKLQl9Ci0jZW5kaWYKLQogCS8q CiAJICogTm93IHNhdmUgZGV0YWlscyBvZiB0aGUgTFBfREVBRCBpdGVtcyBmcm9tIHRoZSBwYWdl IGluIHZhY3JlbAogCSAqLwpAQCAtMjA3MiwxNjggKzIwNDAsMjYgQEAgbGF6eV9zY2FuX3BydW5l KExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9ERUFEIGl0ZW1zPyAqLwog CSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKLQlBc3Nl cnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwotCUFzc2Vy dCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwotCiAJLyoKLQkg KiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBj YWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMK KwkgKiBGb3IgdGhlIHB1cnBvc2VzIG9mIGxvZ2dpbmcsIGNvdW50IHdoZXRoZXIgb3Igbm90IHRo ZSBwYWdlIHdhcyBuZXdseQorCSAqIHNldCBhbGwtdmlzaWJsZSBhbmQsIHBvdGVudGlhbGx5LCBh bGwtZnJvemVuLgogCSAqLwotCWlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHBy ZXN1bHQuYWxsX3Zpc2libGUpCisJaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFKSA9PSAwICYmCisJCShwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0JCXVp bnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJaWYgKHByZXN1bHQu YWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0 LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTjsKLQkJfQotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhh dCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBOQjogSWYgdGhlIGhlYXAg cGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkgKiBk b24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMg YXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAg cGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBf c2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0aGlzIHNp dHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0JCSAqIGNy YXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2li aWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxp ZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9o b3Jpem9uLAotCQkJCQkJCQkJICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdh c24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJ ICogVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgo b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZh Y3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4p Ci0JCQl7Ci0JCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkq dm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zy b3plbikKKwkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOworCQlpZiAoKHByZXN1bHQu bmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJewotCQkJdmFj cmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlcysrOwogCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAkJfQogCX0KLQotCS8q Ci0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxk IG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2 ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVh cF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0J ICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3Jy dXB0LgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiAhUGFn ZUlzQWxsVmlzaWJsZShwYWdlKSAmJgotCQkJIHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNy ZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikgIT0gMCkKKwllbHNlIGlmICgocHJlc3VsdC5vbGRf dm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCisJCQkgKHByZXN1bHQu bmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAl7Ci0JCWVyZXBv cnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkg ZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFw IGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5y ZWxuYW1lLCBibGtubykpKTsKLQotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBi bGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0K LQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdl dE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28g aXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBu b3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUg aXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVz IGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwot CSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5u ZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0 IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZp c2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9W SVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBM UF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dl dmVyLgotCSAqLwotCWVsc2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9E RUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFn ZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFs bFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlz IGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBh bGwtZnJvemVuLgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAm JiBwcmVzdWx0LmFsbF9mcm96ZW4gJiYKLQkJCSAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwg Ymxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQotCQkvKgotCQkg KiBBdm9pZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhcyBhIHByb3h5 IGZvciB0aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBz aW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBldmVuIHdoZW4gYWxsX3Zp c2libGUgaXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JCXsK LQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0J CX0KLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5kIGFsbC12aXNpYmxl KSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklk IGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u IHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8KLQkJICogd2FzIGxv Z2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkgKi8KLQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAot CQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgSW52 YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF IHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkJLyoKLQkJICog VGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uIEhv d2V2ZXIsCi0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQgaXQgd2FzIG1vZGlmaWVk IHNvbWV0aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmluZyBwcnVuaW5nLiBDaGVj ayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRvCi0JCSAqIGVuc3VyZSB0 aGUgdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUu Ci0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9 PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQl2YWNyZWwt PnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1 ZTsKLQkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBwYWdlIHdh cyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBzbyB3ZSBkb24ndCBu ZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwotCQllbHNlCi0JCXsK LQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0g dHJ1ZTsKLQkJfQorCQlBc3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJ KnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsK QEAgLTI5NTUsNiArMjc4MSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2 YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgIHZtZmxh Z3MsCiAJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVh bnVwIGxvY2sgcmVxdWlyZWQgKi8KKwkJCQkJCQkJICAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUykgIT0gMCwKIAkJCQkJCQkJICBQUlVORV9WQUNVVU1fQ0xFQU5VUCwKIAkJCQkJ CQkJICBOVUxMLCAwLAkvKiBmcm96ZW4gKi8KIAkJCQkJCQkJICBOVUxMLCAwLAkvKiByZWRpcmVj dGVkICovCkBAIC0zNjQyLDcgKzM0NjksNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICogdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVu dGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUgaXMgbm8KICAqIHJlYXNvbiBub3QgdG8gdXNlIGl0 IG91dHNpZGUgb2YgYXNzZXJ0cy4KICAqLwotc3RhdGljIGJvb2wKK2Jvb2wKIGhlYXBfcGFnZV9p c19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK aW5kZXggNzRhNWMyNDAwMmIuLmNiNzBmOGVjNTYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00Miw2 ICs0Miw3IEBACiAvKiAib3B0aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZSAqLwogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8 PCAwKQogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCisjZGVmaW5l IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTCQkJKDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3Qg QnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xv YmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBAIC0yMzgsNiArMjM5LDE2IEBAIHR5cGVkZWYg c3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlv biBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkv KiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkvKgorCSAqCisJICogdm1idWZmZXIgaXMgdGhl IGJ1ZmZlciB0aGF0IG11c3QgYWxyZWFkeSBjb250YWluIGNvbnRhaW4gdGhlIHJlcXVpcmVkCisJ ICogYmxvY2sgb2YgdGhlIHZpc2liaWxpdHkgbWFwIGlmIHdlIGFyZSB0byB1cGRhdGUgaXQuIGJs a19rbm93bl9hdiBpcyB0aGUKKwkgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9j ayBhcyBvZiB0aGUgbGFzdCBjYWxsIHRvCisJICogZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2Nr KCkuCisJICovCisJQnVmZmVyCQl2bWJ1ZmZlcjsKKwlib29sCQlibGtfa25vd25fYXY7CisKIAkv KgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBz ZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5n IGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1MCw4ICsyNjEsOSBAQCB0eXBlZGVmIHN0cnVj dCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBk ZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZwogCSAqIHBydW5pbmcuCiAJICoK LQkgKiBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFu ZCB3aWxsIHJldHVybgotCSAqICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0 aGUgY2FsbGVyLgorCSAqIEZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXpl IHR1cGxlcworCSAqCisJICogVVBEQVRFX1ZJUyBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0 aGUgcGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCiAJICovCiAJaW50CQkJb3B0aW9uczsKIApAQCAt Mjg0LDE5ICsyOTYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJ CQlyZWNlbnRseV9kZWFkX3R1cGxlczsKIAogCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9m cm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0JICogYml0 cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBhZnRlciBw cnVuaW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBh cyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAq IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5k IGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBv ZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmls aXR5IG1hcCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgor CSAqIG5ld192bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkg b2YgdmFjdXVtaW5nLgogCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BS VU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LgorCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUg SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgb3B0aW9uIGlzIHNldCBhbmQKKwkgKiB3ZSBoYXZl IGF0dGVtcHRlZCB0byB1cGRhdGUgdGhlIFZNLgogCSAqLwotCWJvb2wJCWFsbF92aXNpYmxlOwot CWJvb2wJCWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwor CXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOwogCiAJLyoKIAkgKiBXaGV0 aGVyIG9yIG5vdCB0aGUgcGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlz IHNldCB0bwpAQCAtNDIzLDYgKzQzMSw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIEJ1 ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKIAkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQsCiAJCQkJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAorCQkJCQkJCQkJICBi b29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCiAJCQkJ CQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCQkJCSAg T2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQsCkBAIC00MzMsNiArNDQy LDE0IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IGJzdHJhdGVneSk7CiAKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCitleHRlcm4g Ym9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAor CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSBib29sICphbGxf ZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwK KwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKKyNlbmRpZgorCiAvKiBp biBoZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgKi8KIGV4dGVybiBib29sIEhlYXBUdXBsZVNhdGlz Zmllc1Zpc2liaWxpdHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ CQkJCSBCdWZmZXIgYnVmZmVyKTsKLS0gCjIuNDMuMAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v18-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vg1i4 RnJvbSAzOTMxNzNkYjNkYjI1ODM4ZGQ2MzhhZDMzNGViMzFlZDA5Y2I0ZjFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDUvMTJdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCA5ODVhNjZiZGIyZS4uMTRhOGUzNDJlNTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzgsOSArMTg3OCwxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODk3LDEzICsxOTAwLDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExf VklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkg Ki8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwK KwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQs IC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAq LworCQkJCQkJCQkJCSAgdHJ1ZSwgLyogc2V0X3BkX2FsbF92aXMgKi8KKwkJCQkJCQkJCQkgIFBS VU5FX1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEws IDApOworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVu IHBhZ2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 CiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0006-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v18-0006-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vkba5 RnJvbSAxOWMzYjMxNTBkMzg2NTQ1YzMwOWE3MmZlMjFiY2M3ZGIxMWRiY2I4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDYvMTJdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTExICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2Vy dGlvbnMoKyksIDM3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL2J1Zm1hc2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j CmluZGV4IGJiMjYwY2ZmYTY4Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKQEAgLTU2LDggKzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2Up CiAKIAkvKgogCSAqIER1cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQg cGFzdCBvdXIgWExPRyByZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBh bGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkg KiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5l X2FuZF9mcmVlemUoKQorCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxs VmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNTY4Njk2MzMz YzIuLmY4ODE1MzBhMmE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUyNCwxMSAr MjUyNCwxMSBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJs ZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQog CQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3Zt Yml0cyhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAot CQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2 aXNpYmlsaXR5bWFwX3NldChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9y KTsKIAkJfQogCiAJCS8qCkBAIC04Nzk3LDUwICs4Nzk3LDYgQEAgYm90dG9tdXBfc29ydF9hbmRf c2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3Jh YmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBv cGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNp YmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkg YmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhv cml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBt YXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNv dmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJl IGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBo ZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNp ZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2gg Y2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBM U04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxl IHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChC dWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVm ZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZ TUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVy RGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigw LCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9n SGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVn aXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNl cnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwot fQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlv bi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBh bmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpp bmRleCA0MTJhYzNlZGYyNS4uNWVhZmRmZjZjMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJ bml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxr bm8sIHZtYnVmZmVyLCB2bWZsYWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJs a25vLCB2bWJ1ZmZlciwgdm1mbGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0Rp cnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjY0LDE0MiAr MjY0LDYgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNl KTsKIH0KIAotLyoKLSAqIFJlcGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0g KiBUaGUgY3JpdGljYWwgaW50ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0 IG5ldmVyIGVuZCB1cCB3aXRoCi0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCwgYW5kIHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQg aXMgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBw YWdlIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBi aXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKLXsKLQlYTG9nUmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hl YXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJl Y29yZCk7Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZm ZXI7Ci0JUGFnZQkJcGFnZTsKLQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJl ciBibGtubzsKLQlYTG9nUmVkb0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFn cyAmIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0J WExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwot Ci0JLyoKLQkgKiBJZiB0aGVyZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5u aW5nIHRoYXQgaGF2ZSBhbiB4bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBw YWdlIGlzbid0IGFsbC12aXNpYmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0 bHkgZGVjaWRlIHRoYXQgYW4gaW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4K LQkgKgotCSAqIE5COiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJz b2Z0IiBjb25mbGljdCBoZXJlIHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0 aGF0IGlzIGluIGZsaWdodCB0byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhh biBraWxsaW5nIHRoZSB0cmFuc2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFu ZGJ5KQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlN QVBfWExPR19DQVRBTE9HX1JFTCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBS ZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBo YXMgZHJvcHBlZCBvcgotCSAqIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3Qg bmVlZCB0byB1cGRhdGUgdGhlIHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JS ZWRvKHJlY29yZCwgMSwgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykK LQl7Ci0JCS8qCi0JCSAqIFdlIGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdo ZW4gc2V0dGluZyB0aGUgdmlzaWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1z IG9yIHdhbF9oaW50X2JpdHMgaXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0 KS4gVGhpcyBleHBvc2VzIHVzIHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICog d2UncmUgbm90IGluc3BlY3RpbmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdh eSwgd2UKLQkJICogZG9uJ3QgY2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7Ci0KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0 SXNOZWVkZWQoKSkKLQkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKLQl9Ci0JZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0J CS8qCi0JCSAqIElmIGhlYXAgYmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3Jl ZCBpdCBhbmQgdGhlcmUncwotCQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5 IGhhcHBlbiB3aXRoIGNoZWNrc3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQot CQkgKi8KLQl9Ci0KLQlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3Bh Y2UgPSBQYWdlR2V0RnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FM LWxvZ2dlZCBhbmQgb25seSB1cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBi ZWNvbWVzIHN0YWxlIGluIHN0YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90 ZWQKLQkJICogYW5kIHJ1bnMgVkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVh bCBmcmVlIHNwYWNlCi0JCSAqIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNp YmxlIChvciBhbGwtZnJvemVuLCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkg d2hpY2ggaXMgdHJvdWJsZXNvbWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFn YXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJz OwotCQkgKiBsYXRlciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmlu ZCBvdXQgdGhhdCB0aGV5Ci0JCSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcg c3RhbGxzIHdoZW4gdGhlcmUgYXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICog Rm9yZXN0YWxsIHRob3NlIHByb2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBw YWdlIHRoYXQKLQkJICogaXMgYmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJ ICoKLQkJICogRG8gdGhpcyByZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFw cGxpZWQsIHNpbmNlIHRoZQotCQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5 LgotCQkgKi8KLQkJaWYgKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykK LQkJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsK LQl9Ci0KLQkvKgotCSAqIEV2ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBk dWUgdG8gdGhlIExTTiBpbnRlcmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBz byBhbnkKLQkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xl YXJlZC4KLQkgKi8KLQlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAw LCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxL X05FRURTX1JFRE8pCi0JewotCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KTsKLQkJUmVsYXRpb24JcmVsbjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXpl IHRoZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1w YWdlKSkKLQkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklT SUJJTElUWU1BUF9YTE9HXyogKi8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTOwotCi0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVu ZGVkIGxvY2tlZCB0aGUgYnVmZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBo YW5kbGUgbG9ja2luZyBpdHNlbGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOwotCi0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9j YXRvcik7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIs IGxzbiwgdm1idWZmZXIsCi0JCQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg dm1iaXRzKTsKLQotCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNo ZUVudHJ5KHJlbG4pOwotCX0KLQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5m b2JpdHMiIGZpZWxkIGZyb20gYW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGlu IHRoZQogICogZ2l2ZW4gaW5mb21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNo ZWQgYnkgdGhlIHJlY29yZC4KQEAgLTc3OCw4ICs2NDIsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBo b3dldmVyLCBubyBjb25jdXJyZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRh dGluZyB0aGUgVk0gd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVu b3VnaC4gVGhpcwotCSAqIHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxf aGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAq IHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSog cmVjb3JkcyAoc2VlCisJICogaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJ aWYgKCh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9n UmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBm YWxzZSwKQEAgLTc5MSwxMSArNjU1LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8s Ci0JCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3Ip OworCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCisJCQkJCQkgIHJsb2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1 ZmZlcikpOwogCQlQYWdlU2V0TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNzYsOSArMTI0MCw2IEBA IGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9Q UlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNp YmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoK IAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBiMzhiNjI3NzlhYi4uZDQwMDY4MDMzMzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMDMxLDkgKzEwMzEsOSBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQl7CiAJCQlB c3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192 bWJpdHMsCi0JCQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KGJsb2Nrbm8sCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJCQkJICAgcGFyYW1zLT5yZWxhdGlvbi0+cmRfbG9j YXRvcik7CiAJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQogCQkJewogCQkJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CkBAIC0yMzA4LDE0ICsyMzA4LDE4 IEBAIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wg ZG9fc2V0X3ZtLAogICoKICAqIFRoaXMgaXMgdXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFn ZSBtYWludGVuYW5jZSBvcGVyYXRpb25zOgogICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNV VU0ncyAxc3QgcGFzcyBvciBvbiBhY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1 bmluZywgaW4gdmFjdXVtIHBoYXNlIEkgb3Igb24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICog ICByZWRpcmVjdGVkLCBzb21lIG1hcmtlZCBkZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRo ZXIuCiAgKgotICogLSBGcmVlemluZzogSXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAq IC0gRnJlZXppbmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAn ZnJvemVuJwogICoKLSAqIC0gVmFjdXVtLCAybmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFk eSBMUF9ERUFEIGFyZSBtYXJrZWQgYXMgdW51c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFj dXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBt YXJrZWQgYXMgdW51c2VkLgogICoKLSAqIFRoZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0 aGF0IHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6 IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJr ZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKgorICogVGhlc2UgY2hhbmdl cyBhbGwgaGFwcGVuIHRvZ2V0aGVyLCBzbyB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3Ig dGhlbQogICogYWxsLgogICoKICAqIElmIHJlcGxheWluZyB0aGUgcmVjb3JkIHJlcXVpcmVzIGEg Y2xlYW51cCBsb2NrLCBwYXNzIGNsZWFudXBfbG9jayA9IHRydWUuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggMTRhOGUzNDJlNTEuLmQxNGY2OWNjYjBhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTAwLDExICsxOTAwLDExIEBAIGxhenlfc2Nh bl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJl ciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0J CQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkJIHZhY3JlbC0+ cmVsLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHZhY3JlbC0+cmVsLT5yZF9sb2Nh dG9yKTsKIAogCQkJLyoKIAkJCSAqIEVtaXQgV0FMIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxF IG9uIHRoZSBoZWFwIHBhZ2UgYW5kCkBAIC0yNzg2LDkgKzI3ODYsOSBAQCBsYXp5X3ZhY3V1bV9o ZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAkJICogc2V0IFBEX0FMTF9WSVNJQkxFLgogCQkgKi8KIAkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZt YnVmZmVyLCB2bWZsYWdzLAotCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQl2 aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MsCisJCQkJ CQkgIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CmluZGV4IDJmNWU2MWUyMzkyLi5hNzViNWJiNmIxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xl YXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAq CQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBp cyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4g YSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3Nl dAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBf Y291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDggKzIxOSw2IEBAIHZp c2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAly ZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYp ID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMp IG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9m IHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAot ICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBM U04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5n LCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04g dG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVw ZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9u IHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3Ig SG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBw YWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJh bnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlz IGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBz ZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICog dGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFz cyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2Un cmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRo ZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11 c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMg ZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmln aHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFueSBJL08uCi0gKgotICogUmV0 dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdz LgotICovCi11aW50OAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZm ZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQot ewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsK LQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJ CW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0J dWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElU WU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkg ZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0K LQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpOwotCUFz c2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVm KSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2Ug cGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndy b25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0 KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9k ZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQgd2Ug aGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1C dWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQot CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENv bnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VD VElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFy a0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7 Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCgh SW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYs IHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hl Y2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVk IHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkg KiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4g SW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0 ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3JkIGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3Vs ZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJ CQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJCXsKLQkJCQkJUGFnZQkJ aGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwotCi0JCQkJCVBhZ2VTZXRMU04oaGVh cFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIp OwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0KLQotCUxvY2tCdWZmZXIodm1CdWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKLX0KIAogLyoKICAqIFNldCBW TSAodmlzaWJpbGl0eSBtYXApIGZsYWdzIGluIHRoZSBWTSBibG9jayBpbiB2bUJ1Zi4KQEAgLTM0 NCw5ICsyNDEsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBk ZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJpdHMo QmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAot CQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1hcF9zZXQo QmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJ CQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJlciBtYXBC bG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRlID0g SEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVh cGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQotCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNpYmxl ICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJCQkJ CSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQogCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFwX211 bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAtNDYx LDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19IRUFQ Ml9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQIjsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lCTEUi OwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9ICJN VUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCBjYzAzZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2RlY29k ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ Y2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERBVEVE OgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXgg NDIyMmJkYWIwNzguLmM2MTk2NDNlMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBA IC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChU cmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdldCBwYXNz ZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25mbGljdCku CiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1hcHBsaWVk IFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdo ZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0IG1hcmtz IGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJdCdzCi0J ICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgg ZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVh c29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9y IHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAqIHJlcGxh eSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFzaCBvciBy ZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJICogZnJv emVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZp c2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBn ZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1dGlvbiBv ZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25mbGljdCB3 aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBw bGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgog CSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhvcml6b24p KQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUzYzljLi5l OWU3N2JkNjc4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYwLDYgQEAK ICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFD VVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAKICNkZWZp bmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAyX0xPQ0tf VVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAtMjk0LDcg KzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUgU2l6ZU9m SGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2 KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBpZiB0aGUg dGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1hcGRlZnMu aAorICogVklTSUJMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwgaXMgYWxzbyBkZWZpbmVkIGFzICgx IDw8IDIpLiB4bF9oZWFwX3BydW5lCisgKiByZWNvcmRzIHNob3VsZCB1c2UgWExIUF9JU19DQVRB TE9HX1JFTCwgbm90IFZJU0lCSUxJWVRNQVBfWExPR19DQVRBTE9HX1JFTCAtLQorICogZXZlbiBp ZiB0aGV5IG9ubHkgY29udGFpbiB1cGRhdGVzIHRvIHRoZSBWTS4KKyAqLwogI2RlZmluZQkJWExI UF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCiAKIC8qCkBAIC00NDMsMjAgKzQ0OCw2IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBs YWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0v KgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIK LSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1 aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlz aWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQot CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0OTEs NiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5m byk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywK IAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBjNmZhMzdiZTk2OC4uMDViYTY3ODZiNDcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmlu ZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxv Y2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg aGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIg dm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVp bnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tO dW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJ CQkJCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHVpbnQ4IHZp c2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJICAgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkgICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRv cik7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmls aXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9j a051bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9w cmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHlt YXBkZWZzLmgKaW5kZXggNWFkNWMwMjA4NzcuLmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT CTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxh Z3MgYml0cyAqLwotLyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxv Z2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFi bGUgaXMgYSB1c2VyIGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFs Ci0gKiBiaXQgaW50byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBh Ym92ZS4KLSAqCi0gKiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0df Q0FUQUxPR19SRUwJMHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwko VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM KQogCiAjZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCBiMjIxYjM2OTliZi4uM2VmNGMwNmM4NWQgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC00Mjc3LDcgKzQyNzcsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFw X3Jld3JpdGVfbWFwcGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hl YXBfdmlzaWJsZQogeGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZh bGlkYXRpb25zCi0tIAoyLjQzLjAKCg== --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0007-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v18-0007-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vnml6 RnJvbSBiZDJkNmE1ZWUxOTcwNmE0ZTdkNTFlMWRmMzQ3OTIzNGZlMjhlM2ZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDcvMTJdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmggICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBp bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsx NDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwg U25hcHNob3Qgc25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVh ZF9hZnRlcikpOwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3Qt PnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNu YXBzaG90LT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwog CX0KIAllbHNlCkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVh cFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBEZWxldGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9s ZCBlbm91Z2guICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0 LAotCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVy biBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhl YWRlckdldFJhd1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggZDQwMDY4MDMzMzAuLjQwZDBhZTZmY2RlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtMjM1LDcgKzIzNSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZp c1Rlc3RGb3IocmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQo dmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNzMwLDkgKzczMCw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog RGV0ZXJtaW5pbmcgSFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9y IGNvcnJlY3RuZXNzLAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1Yg dHdpY2UgY291bGQgcmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBs ZSwgUkVDRU5UTFlfREVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2Vk IGl0ZW0gY2F1c2VzIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUg dGhlCi0JICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dSRVNTIGNhbiBjaGFuZ2UgdG8gREVB RCBpZiB0aGUgaW5zZXJ0aW5nCi0JICogdHJhbnNhY3Rpb24gYWJvcnRzLgorCSAqIGNoZWNrZWQg aXRlbSBjYXVzZXMgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRlIHRoZSBob3Jp em9uLAorCSAqIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYgdGhl IGluc2VydGluZyB0cmFuc2FjdGlvbgorCSAqIGFib3J0cy4KIAkgKgogCSAqIEl0J3MgYWxzbyBn b29kIGZvciBwZXJmb3JtYW5jZS4gTW9zdCBjb21tb25seSB0dXBsZXMgd2l0aGluIGEgcGFnZSBh cmUKIAkgKiBzdG9yZWQgYXQgZGVjcmVhc2luZyBvZmZzZXRzICh3aGlsZSB0aGUgaXRlbXMgYXJl IHN0b3JlZCBhdCBpbmNyZWFzaW5nCkBAIC0xMTU3LDExICsxMTU3LDExIEBAIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZm ZXIgYnVmZmVyKQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29u c2lkZXJlZCBkZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxW aXNTdGF0ZS4gT24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1 dG9mZnMuIEFuZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9s ZGVyCi0JICogdGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBj b3VsZCBmaW5kIHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVl biB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRl c3RYbWluLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVh ZCBpZgorCSAqIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBi ZWdpbm5pbmcgb2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJ aWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVy KSkKIAkJcmV0dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE2MTgsNyAr MTYxOCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93 IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJ ICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEKKwkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgaW5z dGVhZCwgaWYgYQogCQkJCSAqIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUg Vk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDhmOGExYWQ3Nzk2Li40OTZjY2E2OTQxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAg dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVh cHJlbCwgQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNU X1JFRElSRUNUICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkg R2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVw c3RhdGUgPSBTUEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rp b24gPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUu LjIzNWMzYjU4NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE4MSw4 ICs0MTgxLDcgQEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xv YmFsVmlzU3RhdGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9s ZGVyIHRoYW4gbWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8K QEAgLTQyMTYsMTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChH bG9iYWxWaXNTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgog ICogSXQgaXMgY3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9t IGEgc291cmNlIHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcu IGZyb20gYSB0YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAg Ki8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZDsKIApAQCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlk ID0gRnVsbFhpZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0J cmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJl dHVybiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoK ICAqIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAq IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgor ICogR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAg Ki8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEdsb2JhbFZpc0No ZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQp CiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVs bFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3 cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlz aWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNr UmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcg KzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5z YWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1 cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgK aW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAs OCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90 KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBl eHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4 dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRW aXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVG dWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMu MAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v18-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vsrv7 RnJvbSBhMmM4NjQ4MzUxMjExZGVjMDFhMTA3YzgwMzI1YTY0YTYxOGVjYWZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDgvMTJdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAg ICB8IDM3ICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICAgICAgICB8IDE3ICsrKysrLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDU3IGluc2Vy dGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODks MzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJlczsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2Ft ZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUg dG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFE IE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBv c2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBjYWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRl ZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVlLgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxl U2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVh ZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJl cyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9h ZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlz WGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExF X0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2Fm dGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1 cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1pbGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNDBkMGFlNmZjZGUuLjZmYzczN2VlZDY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNzEyLDExICs3MTIsMTIgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCkBAIC05MTIsNiArOTEzLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CiAJCXByc3RhdGUu bnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIGlz IG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlz aWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQlUcmFuc2FjdGlvbklk SXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCisJCSFHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91 bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFn ZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CkBAIC0xMDg0LDEwICsx MDk1LDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3NlcnQocHJzdGF0ZS5scGRl YWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJCWlmICghaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJICBwcnN0YXRlLnZpc3Rl c3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJICAmZGVidWdfY3V0 b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjE1LDE5ICsxNjI1LDYgQEAg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHBy c3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBk YXRlICdhbGxfdmlzaWJsZScgd2hlbiBmcmVlemluZyBpcyByZXF1ZXN0ZWQuIFdlCi0JCQkJICog Y291bGQgdXNlIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIGluc3RlYWQsIGlmIGEKLQkJCQkg KiBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8K LQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJl Y2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJ YnJlYWs7Ci0JCQkJfQotCiAJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJ CQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRv ZmZfeGlkKSAmJgogCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDE0ZjY5Y2NiMGEuLjkyYWQwOTZkOTM1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKIHN0YXRpYyBib29sIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0J CQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIEdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNl dHMsCiAJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICph bGxfZnJvemVuLApAQCAtMjc0MCw3ICsyNzQwLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExW UmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICog ZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZh Y3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAog CQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9m cm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZu dW0pKQpAQCAtMzQ5NSwxNCArMzQ5NSwxMyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJ CQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJ CQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJp bGl0eV9jdXRvZmZfeGlkLApAQCAtMzUyMyw3ICszNTIyLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg cGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNl dHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0 ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2li aWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKgpAQCAtMzU0Miw3ICszNTQxLDcg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq Lwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29s ICphbGxfZnJvemVuLApAQCAtMzYxNiw3ICszNjE1LDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNo ZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlv bkNvdW50ID09IDApOwotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUs IE9sZGVzdFhtaW4sIGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xv YmFsVmlzKCZ0dXBsZSwgdmlzdGVzdCwgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVfTElW RToKIAkJCQl7CkBAIC0zNjM1LDcgKzM2MzQsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNl ZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRl ckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMo eG1pbiwgT2xkZXN0WG1pbikpCisJCQkJCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZp c3Rlc3QsIHhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJ KmFsbF9mcm96ZW4gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBjYjcwZjhlYzU2Mi4uMDAy MTNmYWQ4NTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI3Niw4ICsyNzYsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCS8qCiAJICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJl ZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUKIAkgKiBiZWdpbm5pbmcg b2YgdmFjdXVtaW5nIHRoZSByZWxhdGlvbi4gIFJlcXVpcmVkIGlmIEhFQVBfUFJVTkVfRlJFRVpF Ci0JICogb3B0aW9uIGlzIHNldC4gY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQgdG8g ZGV0ZXJtaW5lIGlmIGRlYWQKLQkgKiB0dXBsZXMgYXJlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFE IG9yIEhFQVBUVVBMRV9ERUFELgorCSAqIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJc3RydWN0IFZh Y3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9IFBydW5lRnJlZXplUGFyYW1zOwpAQCAtNDQ0LDcgKzQ0 Myw3IEBAIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAKICNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiBleHRlcm4gYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xk ZXN0WG1pbiwKKwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSBi b29sICphbGxfZnJvemVuLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKQEAgLTQ1 Nyw2ICs0NTYsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZShI ZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJCQkJCQkgIEJ1ZmZlciBidWZm ZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFwVHVw bGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCQlCdWZmZXIgYnVm ZmVyKTsKK2V4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9iYWxW aXMoSGVhcFR1cGxlIGh0dXAsCisJCQkJCQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0 LCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4gdm9pZCBIZWFwVHVwbGVTZXRI aW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBidWZmZXIsCi0tIAoyLjQzLjAK Cg== --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0009-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v18-0009-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vvt08 RnJvbSA1MWVhOGM4MjY2ZGEwOTQ3YzQ2OTUxMjc5ZDEzZmM4ODM0ZjBjYTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMDkvMTJdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxMCArKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKaW5kZXggNmZjNzM3ZWVkNjkuLjI5NzljYjc0NjUxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTQ4Myw4ICsxNDgzLDExIEBAIGhlYXBfcHJ1bmVfcmVj b3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8q CiAJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRl ciBkdXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHBy ZWNsdWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAqIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91 bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1w dCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlp ZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQg Zm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVt cysrXSA9IG9mZm51bTsKQEAgLTE3MzksOCArMTc0MiwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51 bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5zZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIs IGF0IHRoZSBlbmQgb2YKIAkgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3 aWxsIGFsbG93IHVzIHRvIGF0dGVtcHQgdG8gZnJlZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1 bmluZy4gIEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZp c2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwg dGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsCisJICog dGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxlIG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUt PmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9m cm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAq LwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51 bTsKLS0gCjIuNDMuMAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0010-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v18-0010-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6vyoi9 RnJvbSBmYzM2MThkMDk0MGY2Njk4YTAwOWVjMmRkYzc4ODZkOTc1Mzc0Y2M2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMTAvMTJdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICAgICAgIHwgNzMgKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYyAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAzOSArKysrKysrKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgICAgIHwgMTggKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8IDI0ICsrKystLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgICAgIHwgMTEgKysrCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAyNCArKysrKy0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi90LzAzNV9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICstCiAxNiBmaWxlcyBjaGFuZ2Vk LCAyODQgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCBmODgxNTMwYTJhNS4uZDg1OTRiOWFhYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCkBAIC01NTUsNiArNTU1LDcgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2Nh bkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19jYnVmOwogCUJsb2NrTnVt YmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNuYXBzaG90OworCUJ1ZmZl cgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50CQkJbGluZXM7CiAJYm9v bAkJYWxsX3Zpc2libGU7CkBAIC01NjksNyArNTcwLDkgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2Fu KFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50 YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2Vf cHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNzY2FuLT5yc19m bGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAmc2Nhbi0+cnNfdm1idWZmZXI7 CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI0Niw2ICsxMjQ5LDcgQEAgaGVhcF9i ZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJ CQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJfQogCisJc2Nhbi0+cnNfdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJsZVNjYW5EZXNjKSBzY2FuOwogfQpA QCAtMTI4NCw2ICsxMjg4LDEyIEBAIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIFNj YW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4tPnJzX2NidWYgPSBJbnZhbGlkQnVm ZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwl7CisJ CVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCQlzY2FuLT5yc192bWJ1ZmZlciA9 IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19UWVBFX0JJVE1BUFNDQU4gd291bGQg YmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3QgaG9sZCBhbnkKIAkgKiBhZGRpdGlv bmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEzMTYsNiArMTMyNiw5IEBAIGhlYXBf ZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJz X2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2NidWYpOwogCisJaWYgKEJ1ZmZlcklz VmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVm ZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJlZWlu ZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCBiY2JhYzg0NGJiNi4uZjA1YjllNDk2OGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODUsNiArODUsNyBAQCBoZWFw YW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsKQogCiAJaHNjYW4tPnhzX2Jhc2UucmVs ID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNfdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAg LTk5LDYgKzEwMCwxMiBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxl RGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54 c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+ eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwor CQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZv aWQKQEAgLTEzOCw3ICsxNDUsOCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IElu ZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdl IHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBo c2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVs LCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNl LnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJCQkJCXNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID8g TlVMTCA6ICZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1sb2Nr IG9uIHRoZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjQ3MSw2 ICsyNDc5LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAog CVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIgb2Zmc2V0c1tUQk1fTUFY X1RVUExFU19QRVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsKKwlCdWZmZXIJICAgKnZt YnVmZmVyID0gTlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAmIFNPX1RZUEVfQklUTUFQ U0NBTik7CiAJQXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBAIC0yNTE3LDcgKzI1MjYs OSBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoKIAkg KiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBw b3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIp OworCWlmIChzY2FuLT5yc19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAm aHNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1 ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBvbiB0 aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCmluZGV4IDI5NzljYjc0NjUxLi42ZTg2M2ZmZDg1ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE4OCw3ICsxODgsOSBAQCBzdGF0aWMgYm9vbCBoZWFw X3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZmZXIg aGVhcF9idWYsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJICAgYm9vbCBi bGtfa25vd25fYXYsCi0JCQkJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICAgYm9vbCBkb19wcnVuZSwgYm9v bCBkb19mcmVlemUsCisJCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAg IHVpbnQ4ICp2bWZsYWdzLAogCQkJCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKTsKIApAQCAt MjAzLDkgKzIwNSwxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0 aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgogICoK ICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3QqIGhh dmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVyIGlzIG5vdCBOVUxMLCBpdCBpcyBv a2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgaWYKKyAqIHRoZSBwYWdl IGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBvZiBwaW5uaW5nIGFuZCwgaWYgbmVl ZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCiAgKi8K IHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0yNzEsMTIgKzI3NywyMSBAQCBoZWFw X3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1 bmVGcmVlemVQYXJhbXMgcGFyYW1zOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKIAor CQkJcGFyYW1zLm9wdGlvbnMgPSAwOworCQkJcGFyYW1zLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZl cjsKKworCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0 aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJcGFyYW1z Lm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUzsKKwkJCQlwYXJhbXMudm1idWZm ZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCXBhcmFtcy5yZWxhdGlvbiA9IHJlbGF0aW9uOwog CQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKIAkJCXBhcmFtcy5yZWFzb24gPSBQUlVORV9PTl9B Q0NFU1M7CiAJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7CiAJCQlwYXJhbXMuY3V0b2ZmcyA9 IE5VTEw7Ci0JCQlwYXJhbXMudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQkJcGFyYW1zLmJs a19rbm93bl9hdiA9IGZhbHNlOwogCiAJCQkvKgpAQCAtNDU2LDYgKzQ3MSw5IEBAIGhlYXBfcGFn ZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGhhdmUg ZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRzIChlLmcuLCBWQUNVVU0gaW4gdGhlIHByZXZp b3VzCiAgKiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhh dCBhbG9uZy4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVl emUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0 aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKICAqIFJl dHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25nIHdp dGggdGhlIGRlc2lyZWQKICAqIGZsYWdzIGluICp2bWZsYWdzLiBBbHNvIGluZGljYXRlcyB2aWEg ZG9fc2V0X3BkX3ZpcyB3aGV0aGVyIFBEX0FMTF9WSVNJQkxFCiAgKiBzaG91bGQgYmUgc2V0IG9u IHRoZSBoZWFwIHBhZ2UuCkBAIC00NjYsNyArNDg0LDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3Zp cyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkgICBjb25z dCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJ CSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkgICBQcnVuZVN0YXRlICpw cnN0YXRlLAogCQkJCQkgICB1aW50OCAqdm1mbGFncywKIAkJCQkJICAgYm9vbCAqZG9fc2V0X3Bk X3ZpcykKIHsKQEAgLTQ4Miw2ICs1MDIsMjMgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxh dGlvbiByZWxhdGlvbiwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qCisJICogSWYgdGhpcyBp cyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcsIGF2b2lk CisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkgZGlydHkg dGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5LCBpZiBk b2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGltYWdlIChG UEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkgKiBzaG91 bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQgd2hlbgor CSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBSVU5FX09O X0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRv X2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoaGVhcF9idWYpIHx8IFhMb2dDaGVja0J1ZmZl ck5lZWRzQmFja3VwKGhlYXBfYnVmKSkpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWlmIChw cnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQogCQkq ZG9fc2V0X3BkX3ZpcyA9IHRydWU7CiAKQEAgLTUwNSw2ICs1NDIsMTEgQEAgaGVhcF9wYWdlX3dp bGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVh ci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCBpbiB2YWN1dW0gdGhlIGJpdAogCSAqIGdv dCBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNv IHdlIG11c3QKIAkgKiByZWNoZWNrIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcg dGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKgorCSAqIFRoaXMgd2lsbCBuZXZlciB0cmlnZ2Vy IGZvciBvbi1hY2Nlc3MgcHJ1bmluZyBiZWNhdXNlIGl0IGNvdWxkbid0IGhhdmUKKwkgKiBkb25l IGEgcHJldmlvdXMgdmlzaWJpbGl0eSBtYXAgbG9va3VwIGFuZCB0aHVzIHdpbGwgYWx3YXlzIHBh c3MKKwkgKiBibGtfa25vd25fYXYgYXMgZmFsc2UuIEEgZnV0dXJlIHZhY3V1bSB3aWxsIGhhdmUg dG8gdGFrZSBjYXJlIG9mIGZpeGluZworCSAqIHRoZSBjb3JydXB0aW9uLgogCSAqLwogCWVsc2Ug aWYgKGJsa19rbm93bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCiAJCQkg dmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAh PSAwKQpAQCAtOTEzLDYgKzk1NSwxNCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0YXRlLm5kZWFkID4gMCB8fAogCQlwcnN0YXRl Lm51bnVzZWQgPiAwOwogCisJLyoKKwkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5n LCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCisJICogcGRfcHJ1bmVfeGlkIGZpZWxk IG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKKwkg KiBiaXQuCisJICovCisJZG9faGludF9wcnVuZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3By dW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKKwkJUGFnZUlzRnVsbChwYWdlKTsK KwogCS8qCiAJICogQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBw YWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4KIAkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUg dG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5vdCBiZQpAQCAtOTIzLDE0ICs5NzMsNiBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkhR2xv YmFsVmlzWGlkVmlzaWJsZVRvQWxsKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQpKQogCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVu ID0gZmFsc2U7CiAKLQkvKgotCSAqIEV2ZW4gaWYgd2UgZG9uJ3QgcHJ1bmUgYW55dGhpbmcsIGlm IHdlIGZvdW5kIGEgbmV3IHZhbHVlIGZvciB0aGUKLQkgKiBwZF9wcnVuZV94aWQgZmllbGQgb3Ig dGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgaGludAotCSAqIGJp dC4KLQkgKi8KLQlkb19oaW50X3BydW5lID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1bmVf eGlkICE9IHByc3RhdGUubmV3X3BydW5lX3hpZCB8fAotCQlQYWdlSXNGdWxsKHBhZ2UpOwotCiAJ LyoKIAkgKiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29y ZGluZyB0byB0aGUgZnJlZXplCiAJICogcGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KQEAgLTk3 NCw2ICsxMDE2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAkgKi8KIAlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBh cmFtcy0+cmVsYXRpb24sCiAJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHZtYnVmZmVyLCBw YXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIHBhcmFtcy0+cmVhc29uLCBkb19wcnVu ZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICAgJnByc3RhdGUsICZuZXdfdm1iaXRzLCAmZG9fc2V0 X3BkX3Zpcyk7CiAKIAkvKiBXZSBzaG91bGQgb25seSBzZXQgdGhlIFZNIGlmIFBEX0FMTF9WSVNJ QkxFIGlzIHNldCBvciB3aWxsIGJlICovCkBAIC0yMjUwLDcgKzIyOTMsNyBAQCBoZWFwX2xvZ19m cmVlemVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAKIC8qCiAg KiBDYWxjdWxhdGUgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9TQ0FOCi0gKiByZWNvcmQuCisgKiBvciBYTE9HX0hFQVAyX1BSVU5FX09O X0FDQ0VTUyByZWNvcmQuCiAgKi8KIHN0YXRpYyBUcmFuc2FjdGlvbklkCiBnZXRfY29uZmxpY3Rf eGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKQEAgLTIz MTksOCArMjM2Miw4IEBAIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19m cmVlemUsIGJvb2wgZG9fc2V0X3ZtLAogICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNl IElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQogICogICBtYXJrZWQgYXMg dW51c2VkLgogICoKLSAqIC0gVk0gdXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJ SUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAotICogICBhbGwtdmlzaWJsZSBhbmQgYWxs LWZyb3plbi4KKyAqIC0gVk0gdXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUkg YW5kIG9uLWFjY2VzcywgdGhlIGhlYXAgcGFnZQorICogICBtYXkgYmUgbWFya2VkIGFsbC12aXNp YmxlIGFuZCBhbGwtZnJvemVuLgogICoKICAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dl dGhlciwgc28gd2UgdXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDA0OTJkOTJkMjNiLi44ZDU4MmE4ZWFmZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBAIC0yODksNiArMjg5LDMyIEBAIGluZGV4 X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJcmV0dXJuIHNjYW47CiB9CiAKKy8q CisgKiBTaW1pbGFyIHRvIGluZGV4X2JlZ2luc2NhbigpLCBidXQgYWxsb3dzIHRoZSBjYWxsZXIg dG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAqIHF1ZXJ5IG1vZGlmaWVzIHRoZSB1bmRlcmx5aW5n IGJhc2UgcmVsYXRpb24uIFRoaXMgaXMgdXNlZCB3aGVuIHRoZSBjYWxsZXIKKyAqIHdhbnRzIHRv IGF0dGVtcHQgbWFya2luZyBwYWdlcyBpbiB0aGUgYmFzZSByZWxhdGlvbiBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUKKyAqIHZpc2liaWxpdHkgbWFwIGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZy4KKyAq LworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKKwkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAorCQkJCQkgIFNuYXBzaG90IHNu YXBzaG90LAorCQkJCQkgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJ CQkJICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7 CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVs YXRpb24sCisJCQkJCQkgICBpbmRleFJlbGF0aW9uLAorCQkJCQkJICAgc25hcHNob3QsCisJCQkJ CQkgICBpbnN0cnVtZW50LAorCQkJCQkJICAgbmtleXMsIG5vcmRlcmJ5cyk7CisKKwlzY2FuLT54 c19oZWFwZmV0Y2gtPm1vZGlmaWVzX2Jhc2VfcmVsID0gbW9kaWZpZXNfYmFzZV9yZWw7CisKKwly ZXR1cm4gc2NhbjsKK30KKwogLyoKICAqIGluZGV4X2JlZ2luc2Nhbl9iaXRtYXAgLSBzdGFydCBh IHNjYW4gb2YgYW4gaW5kZXggd2l0aCBhbWdldGJpdG1hcAogICoKQEAgLTYyMCw2ICs2NDYsMjYg QEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGlu ZGV4cmVsLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogUGFyYWxsZWwgdmVyc2lvbiBvZiBp bmRleF9iZWdpbnNjYW5fdm1zZXQoKQorICovCitJbmRleFNjYW5EZXNjCitpbmRleF9iZWdpbnNj YW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCisJ CQkJCQkJICAgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAorCQkJCQkJCSAg IGludCBua2V5cywgaW50IG5vcmRlcmJ5cywKKwkJCQkJCQkgICBQYXJhbGxlbEluZGV4U2NhbkRl c2MgcHNjYW4sCisJCQkJCQkJICAgYm9vbCBtb2RpZmllc19iYXNlX3JlbCkKK3sKKwlJbmRleFNj YW5EZXNjIHNjYW47CisKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKGhlYXByZWws IGluZGV4cmVsLAorCQkJCQkJCQkJaW5zdHJ1bWVudCwKKwkJCQkJCQkJCW5rZXlzLCBub3JkZXJi eXMsCisJCQkJCQkJCQlwc2Nhbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2RpZmllc19iYXNl X3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCXJldHVybiBzY2FuOworfQorCiAvKiAtLS0tLS0t LS0tLS0tLS0tCiAgKiBpbmRleF9nZXRuZXh0X3RpZCAtIGdldCB0aGUgbmV4dCBUSUQgZnJvbSBh IHNjYW4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA1ZTQxNDA0OTM3ZS4u M2UzYTBmNzJhNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtNDksNiArNDks MTAgQEAKIGNoYXIJICAgKmRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZCA9IERFRkFVTFRfVEFC TEVfQUNDRVNTX01FVEhPRDsKIGJvb2wJCXN5bmNocm9uaXplX3NlcXNjYW5zID0gdHJ1ZTsKIAor LyogSGVscGVyIGZvciB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoKSBhbmQgdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsX3Ztc2V0KCkgKi8KK3N0YXRpYyBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2lu c2Nhbl9wYXJhbGxlbF9jb21tb24oUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2Fu RGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQkgdWludDMyIGZsYWdzKTsKKwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKiBTbG90IGZ1bmN0aW9ucy4KQEAgLTE2MiwxMiArMTY2LDE0IEBAIHRh YmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNj YW5EZXNjIHBzY2FuLAogCX0KIH0KIAotVGFibGVTY2FuRGVzYwotdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCisv KgorICogQ29tbW9uIGhlbHBlciBmb3IgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRh YmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldCgpCisgKi8KK3N0YXRpYyBUYWJsZVNjYW5EZXNj Cit0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCXVpbnQzMiBmbGFncykKIHsKIAlTbmFw c2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKLQkJU09f QUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlBc3Nl cnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJkX2xvY2F0b3IsIHBzY2FuLT5waHNf bG9jYXRvcikpOwogCkBAIC0xODgsNiArMTk0LDMxIEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCQkJCQkJ CQkJCQlwc2NhbiwgZmxhZ3MpOwogfQogCitUYWJsZVNjYW5EZXNjCit0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikK K3sKKwl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwkJU09fQUxMT1dfU1RSQVQg fCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CisKKwlyZXR1cm4gdGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsX2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKworLyoK KyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgdGFibGVfYmVnaW5zY2FuX3Ztc2V0KCkKKyAqLworVGFi bGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIHJlbGF0 aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJICAgYm9vbCBtb2RpZmll c19yZWwpCit7CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9X X1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJaWYgKCFtb2Rp Zmllc19yZWwpCisJCWZsYWdzIHw9IFNPX0FMTE9XX1ZNX1NFVDsKKworCXJldHVybiB0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKHJlbGF0aW9uLCBwc2NhbiwgZmxhZ3MpOworfQorCiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEluZGV4IHNjYW4gcmVsYXRlZCBmdW5jdGlvbnMu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA4MzFjNTVjZTc4Ny4uMTViZTMxOGZkNDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtOTE2LDYgKzkxNiwxMCBAQCBJbml0UGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8q IElmIGl0IGhhcyBhIHJvd21hcmssIHRoZSByZWxhdGlvbiBpcyBtb2RpZmllZCAqLworCQkJZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlm aWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkJcmMtPnJ0aSk7CisKIAkJCS8qIENoZWNrIHRoYXQg cmVsYXRpb24gaXMgYSBsZWdhbCB0YXJnZXQgZm9yIG1hcmtpbmcgKi8KIAkJCWlmIChyZWxhdGlv bikKIAkJCQlDaGVja1ZhbGlkUm93TWFya1JlbChyZWxhdGlvbiwgcmMtPm1hcmtUeXBlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZmRjNjVjMmI0MmIuLjI4YTA2ZGNkMjQ0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODkzLDYgKzg5Myw4IEBAIEV4ZWNJbml0UmVzdWx0 UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9ucyA9IChSZXN1bHRSZWxJbmZvICoqKQogCQkJcGFs bG9jMChlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemUgKiBzaXplb2YoUmVzdWx0UmVsSW5mbyAq KSk7CiAJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVzdWx0UmVsSW5m bzsKKwllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVzdGF0ZS0+ ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJcnRpKTsKIAogCS8qCiAJICogU2F2aW5n IGluIHRoZSBsaXN0IGFsbG93cyB0byBhdm9pZCBuZWVkbGVzc2x5IHRyYXZlcnNpbmcgdGhlIHdo b2xlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGJmMjRm M2Q3ZmUwLi5hZjZkYjlmNzkxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKQEAgLTEwNSwxMSArMTA1LDE2IEBAIEJpdG1hcFRhYmxlU2NhblNldHVwKEJpdG1h cEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKCFub2RlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MpCiAJeworCQlib29sCQltb2RpZmllc19yZWwgPQorCQkJYm1zX2lzX21lbWJlcigoKFNj YW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgbm9kZS0+c3MucHMu c3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjID0KIAkJCXRhYmxlX2JlZ2luc2Nhbl9ibShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24s CiAJCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCSAgIDAs Ci0JCQkJCQkJICAgTlVMTCk7CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBtb2RpZmllc19y ZWwpOwogCX0KIAogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYy0+c3QucnNfdGJtaXRlcmF0 b3IgPSB0Ym1pdGVyYXRvcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA3 ZmNhYTM3ZmU2Mi4uYzJmZmJkM2IwOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2Fu LmMKQEAgLTEwMiwxNiArMTAyLDIyIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkK IAogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKKworCQlib29sCQltb2RpZmllc19iYXNlX3Jl bCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJl bGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoKIAkJICog V2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQgd2FzIHBsYW5u ZWQgdG8gYmUgcGFyYWxsZWwuCiAJCSAqLwotCQlzY2FuZGVzYyA9IGluZGV4X2JlZ2luc2Nhbihu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19SZWxhdGlv bkRlc2MsCi0JCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQlzY2FuZGVzYyA9IGluZGV4X2Jl Z2luc2Nhbl92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCQkJIG5v ZGUtPmlzc19SZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJ CQkJCQkJCQkJICZub2RlLT5pc3NfSW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgbm9kZS0+aXNzX051 bVNjYW5LZXlzLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJ CQkJIG1vZGlmaWVzX2Jhc2VfcmVsKTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVz YzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggOTQwNDdkMjk0MzAuLmZkNjky NzVjMTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTY1LDEzICs2NSwxOCBA QCBTZXFOZXh0KFNlcVNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQog CXsKKwkJYm9vbAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5v ZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzKTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBw YXJhbGxlbCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0 IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSB0YWJsZV9i ZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBlc3RhdGUt PmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJc2NhbmRlc2MgPSB0YWJsZV9i ZWdpbnNjYW5fdm1zZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBl c3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAwLCBOVUxMLCBtb2RpZmllc19yZWwpOwor CiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY2 LDYgKzM3MSw3IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUs CiAJCQkJCQkgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0g bm9kZS0+c3MucHMuc3RhdGU7CisJYm9vbAkJbW9kaWZpZXNfcmVsOwogCVBhcmFsbGVsVGFibGVT Y2FuRGVzYyBwc2NhbjsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5v ZGUtPnBzY2FuX2xlbik7CkBAIC0zNzMsOCArMzc5LDExIEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6 ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0 YXRlLT5lc19zbmFwc2hvdCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5w cy5wbGFuLT5wbGFuX25vZGVfaWQsIHBzY2FuKTsKKwltb2RpZmllc19yZWwgPSBibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJCQkgZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9 Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24s IHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiwgcHNjYW4sCisJCQkJCQkJCQkgICBtb2RpZmllc19yZWwpOwogfQogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkBAIC00MDQsOCArNDEzLDEzIEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZVdvcmtl cihTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4 dCkKIHsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CisJYm9vbAkJbW9kaWZpZXNfcmVs ID0KKwkJYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKIAogCXBz Y2FuID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9u b2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOwor CQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLAorCQkJCQkJCQkJICAgcHNjYW4sCisJCQkJCQkJCQkgICBtb2RpZmllc19yZWwpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2VuYW0uaAppbmRleCA5MjAwYTIyYmQ5Zi4uYWEyMTEyYzhlMDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5o CkBAIC0xNzgsNiArMTc4LDExIEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkgU25hcHNob3Qgc25hcHNob3QsCiAJ CQkJCQkJCQkgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAogCQkJCQkJCQkJ IGludCBua2V5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fdm1zZXQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJ CQkJCQkJICAgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAorCQkJCQkJCQkJ CSAgIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywgYm9vbCBtb2RpZmllc19oZWFwX3JlbCk7CiBl eHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRl eFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCkBAIC0yMDQsNiArMjA5LDEyIEBAIGV4 dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFw cmVsLAogCQkJCQkJCQkJCQkgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwK IAkJCQkJCQkJCQkJICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsCiAJCQkJCQkJCQkJCSAgUGFy YWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuKTsKKworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhf YmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4 cmVsLAorCQkJCQkJCQkJCQkJCUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwK KwkJCQkJCQkJCQkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsCisJCQkJCQkJCQkJCQkJUGFy YWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9kaWZpZXNfcmVs KTsKIGV4dGVybiBJdGVtUG9pbnRlciBpbmRleF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNj YW4sCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24pOwogZXh0ZXJuIGJvb2wgaW5k ZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNjIHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAppbmRleCAwMDIxM2ZhZDg1Mi4uMzQyNTYwZTEwMzQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEK IAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3Jr ZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAg c2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNj ZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3Jy ZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1i dWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1v ZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJl bnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkv KiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE3LDggKzEyNCwxOCBA QCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVE YXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8K IAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYg YW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQg YSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4g c2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3 ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKwor CS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWlu ZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJy ZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZl ci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAK IC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC00MTUs NyArNDMyLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVz KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7 CiAKIC8qIGluIGhlYXAvcHJ1bmVoZWFwLmMgKi8KLWV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVu ZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpOworZXh0ZXJuIHZvaWQgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJ CQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVS ZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4uZjQ5NmUwYjQ5MzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNj YW4uaApAQCAtMTIxLDYgKzEyMSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEJsb2NrVGFi bGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcjsKIHR5cGVkZWYg c3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIHsKIAlSZWxhdGlvbglyZWw7CisKKwkvKgorCSAq IFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBiZSBwZXJmb3JtZWQgaWYgdGhlIHF1ZXJ5IGRv ZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5aW5nIHJlbGF0aW9uLiBUcmFjayB0aGF0IGhl cmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWw7CiB9IEluZGV4RmV0Y2hUYWJsZURh dGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApp bmRleCBlMTZiZjAyNTY5Mi4uZjI1MGQ0ZTdhZWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjMs NiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIgc25h cHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkvKiB3 aGV0aGVyIG9yIG5vdCBzY2FuIHNob3VsZCBhdHRlbXB0IHRvIHNldCB0aGUgVk0gKi8KKwlTT19B TExPV19WTV9TRVQgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtODgyLDYg Kzg4NCwyNSBAQCB0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCwKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5r ZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KIAorLyoKKyAqIFNpbWlsYXIgdG8gdGFibGVfYmVn aW5zY2FuKCksIGJ1dCBhbGxvd3MgdGhlIGNhbGxlciB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQor ICogcXVlcnkgbW9kaWZpZXMgdGhlIHJlbGF0aW9uLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2Fs bGVyIHdhbnRzIHRvIGF0dGVtcHQKKyAqIG1hcmtpbmcgcGFnZXMgaW4gdGhlIHJlbGF0aW9uIGFz IGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBkdXJpbmcKKyAqIG9uLWFjY2VzcyBw cnVuaW5nLgorICovCitzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKK3RhYmxlX2JlZ2luc2Nh bl92bXNldChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkgIGludCBua2V5 cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQz MgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9X X1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFn cyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKK30KKwogLyoKICAq IExpa2UgdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBmb3Igc2Nhbm5pbmcgY2F0YWxvZy4gSXQnbGwg YXV0b21hdGljYWxseSB1c2UgYQogICogc25hcHNob3QgYXBwcm9wcmlhdGUgZm9yIHNjYW5uaW5n IGNhdGFsb2cgcmVsYXRpb25zLgpAQCAtOTE5LDEwICs5NDAsMTMgQEAgdGFibGVfYmVnaW5zY2Fu X3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAgKi8KIHN0YXRpYyBpbmxp bmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX2JtKFJlbGF0aW9uIHJlbCwgU25hcHNo b3Qgc25hcHNob3QsCi0JCQkJICAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5KQorCQkJCSAg IGludCBua2V5cywgU2NhbktleURhdGEgKmtleSwgYm9vbCBtb2RpZmllc19yZWwpCiB7CiAJdWlu dDMyCQlmbGFncyA9IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCisJ aWYgKCFtb2RpZmllc19yZWwpCisJCWZsYWdzIHw9IFNPX0FMTE9XX1ZNX1NFVDsKKwogCXJldHVy biByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwK IAkJCQkJCQkJCSAgIE5VTEwsIGZsYWdzKTsKIH0KQEAgLTExMzAsNiArMTE1NCwxMCBAQCBleHRl cm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiBleHRl cm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRp b24sCiAJCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKTsKIAorZXh0ZXJu IFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIHJl bGF0aW9uLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJ CQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CisKIC8qCiAgKiBSZXN0YXJ0IGEgcGFyYWxsZWwg c2Nhbi4gIENhbGwgdGhpcyBpbiB0aGUgbGVhZGVyIHByb2Nlc3MuICBDYWxsZXIgaXMKICAqIHJl c3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGF0IGFsbCB3b3JrZXJzIGhhdmUgZmluaXNoZWQg dGhlIHNjYW4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYTM2NjUzYzM3ZjkuLjljNTRmYTA2ZTRh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBAQCB0eXBlZGVmIHN0cnVj dCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8KIAljb25zdCBj aGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCisJ LyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUgcXVlcnkgZWl0 aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJHRSBvciBTRUxFQ1QgRk9S IFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3JlbGlkczsKKwogCUp1bmtG aWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICov CiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMsIHRoZSBjb21tYW5kIElE IHRvIG1hcmsgdGhlbSB3aXRoICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAz NV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9z dGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKaW5kZXggYzljMTgyODkyY2YuLmY1YzBjNjViMjYw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCkBAIC0yOTYsNiArMjk2LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2ljYWwnCiBtYXhf cmVwbGljYXRpb25fc2xvdHMgPSA0CiBtYXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRvdmFjdXVtID0g b2ZmCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCiB9KTsKICRub2RlX3ByaW1hcnktPmR1bXBf aW5mbzsKICRub2RlX3ByaW1hcnktPnN0YXJ0OwpAQCAtNzQ1LDcgKzc0Niw3IEBAIGNoZWNrX3Bn X3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRi eS0+bG9nZmlsZTsKIAogcmVhY3RpdmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9mb3JfeG1p bnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLAotCSdub19jb25mbGljdF8nLCAwLCAxKTsKKwknbm9f Y29uZmxpY3RfJywgMSwgMCk7CiAKICMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBjb25mbGlj dAogd2FpdF91bnRpbF92YWN1dW1fY2FuX3JlbW92ZSgKLS0gCjIuNDMuMAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="UTF-8"; name="v18-0011-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v18-0011-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6w1td10 RnJvbSBhYzQzMzg1MTBmZTMyNDQ2Mzc1ODAxZmZkNzhiMzgzNjdhODdhNTZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTggMTEvMTJdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBkODU5NGI5YWFjMS4uYTNlMmM0YzIwY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNjMsMTUgKzIxNjQsMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE4MSw3ICsy MTg2LDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTQ1LDggKzI1NDksMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDVlYWZkZmY2YzJlLi4yMTk3MjM0N2RlYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NjMsNiArNDYzLDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTYxMiw5ICs2MTgsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0 dXBsZXMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMu b3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dApAQCAtNTQsNyArNTQsNyBAQCBz dGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAg cmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5o ZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlv X2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFw X2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAg ICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhl YXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9N IHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScp OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhl YXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMg RlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJl OiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3Jl YWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFt ZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RlcCBmbHVzaDog U0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VM RUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3Nl cyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nlcwog LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgog KDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2Vz ID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9f YWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKLS0gCjIuNDMu MAoK --00000000000012d76f064126b9cf Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0012-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v18-0012-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgr6w51q11 RnJvbSAxNjNlMDljYjgxZWViMWFmMzFjZDliM2E2NDg4OTY4NDU1ODdjZTNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTg6NDU6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxOCAxMi8xMl0gU3BsaXQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgaW50byBoZWxw ZXJzCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMzE2ICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygr KSwgMTQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg NmU4NjNmZmQ4NWUuLmQyMWE2NmY2YTc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtNTkwLDgyICs1OTAsMjAgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiBy ZWxhdGlvbiwKIAlyZXR1cm4gZG9fc2V0X3ZtOwogfQogCi0vKgotICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICog c3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5n ZWQsIHVwZGF0ZSBpdCBpbgotICogdGhlIFZNLgotICoKLSAqIENhbGxlciBtdXN0IGhhdmUgcGlu IGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCi0gKiBk b24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhh bGYuICBDYWxsZXIgbWlnaHQKLSAqIGFsc28gbmVlZCB0byBhY2NvdW50IGZvciBhIHJlZHVjdGlv biBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKLSAqIGFycmF5IGZvbGxvd2luZyBh cnJheSB0cnVuY2F0aW9uIGJ5IHVzLgotICoKLSAqIHBhcmFtcyBjb250YWlucyB0aGUgaW5wdXQg cGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5pbmcKLSAqIGJlaGF2 aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMgZm9yIG1vcmUgb24g d2hhdCBlYWNoCi0gKiBwYXJhbWV0ZXIgZG9lcy4KLSAqCi0gKiBJZiB0aGUgSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMsIHdlIHdpbGwgZnJlZXplIHR1cGxlcyBpZgot ICogaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1p bm14aWQsIG9yIGlmIGl0J3MKLSAqIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxs IHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUKLSAqICdwYXJhbXMuY3V0b2Zm cycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQgJ25ld19yZWxtaW5fbXhpZCcK LSAqIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KLSAqCi0gKiBJZiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0aGUgdmlzaWJpbGl0 eSBzdGF0dXMgb2YKLSAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUg Vk0gYXQgdGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAotICogZnJlZXppbmcgdGhlIGhlYXAg cGFnZS4gV2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRzIGFuZAotICogcHJl c3VsdC0+bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVmb3JlIGFuZCBhZnRl ciB1cGRhdGluZyBpdAotICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJvb2trZWVwaW5nLgot ICoKLSAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxl cnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgotICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZz ZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KLSAqIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyBpdC4g IFJlcXVpcmVkCi0gKiBieSBhbGwgY2FsbGVycy4KLSAqCi0gKiBvZmZfbG9jIGlzIHRoZSBvZmZz ZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJyb3IKLSAqIGNh bGxiYWNrLgotICoKLSAqIG5ld19yZWxmcm96ZW5feGlkIGFuZCBuZXdfcmVsbWluX214aWQgbXVz dCBwcm92aWRlZCBieSB0aGUgY2FsbGVyIGlmIHRoZQotICogSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBjb250YWluIHRoZQotICogb2xk ZXN0IFhJRCBhbmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkg d2lsbCBiZSB1cGRhdGVkCi0gKiB3aXRoIG9sZGVzdCB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFn ZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUKLSAqIHdob2xlIHJlbGF0aW9u LCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldwotICogcmVsZnJvemVueGlk L3JlbG1pbm14aWQgZm9yIHRoZSByZWxhdGlvbi4KLSAqLwotdm9pZAotaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKLQkJCQkJCSAgIFBydW5lRnJl ZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAotCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCi0JCQkJCQkgICBNdWx0aVhh Y3RJZCAqbmV3X3JlbG1pbl9teGlkKQorc3RhdGljIHZvaWQKK3BydW5lX2ZyZWV6ZV9zZXR1cChQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCSAgIFRy YW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAorCQkJCSAgIE11bHRpWGFjdElkICpuZXdf cmVsbWluX214aWQsCisJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQpCiB7Ci0JQnVm ZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKLQlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1z LT52bWJ1ZmZlcjsKLQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwotCUJsb2Nr TnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOwotCU9mZnNldE51 bWJlciBvZmZudW0sCi0JCQkJbWF4b2ZmOwotCVBydW5lU3RhdGUJcHJzdGF0ZTsKLQlIZWFwVHVw bGVEYXRhIHR1cDsKLQlib29sCQlkb19mcmVlemU7Ci0JYm9vbAkJZG9fcHJ1bmU7Ci0JYm9vbAkJ ZG9faGludF9wcnVuZTsKLQlib29sCQlkb19zZXRfdm07Ci0JYm9vbAkJZG9fc2V0X3BkX3ZpczsK LQlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7Ci0JaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVz YWdlLndhbF9mcGk7Ci0JVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwotCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwotCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKLQogCS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0JcHJzdGF0ZS52aXN0 ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OwotCXByc3RhdGUubWFya191bnVzZWRfbm93ID0KKwlwcnN0 YXRlLT52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUtPm1hcmtfdW51c2VkX25v dyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9X KSAhPSAwOwotCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVB UF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtID0K KwlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtID0KIAkJKHBh cmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTKSAhPSAwOwotCXByc3Rh dGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKKwlwcnN0YXRlLT5jdXRvZmZzID0gcGFyYW1z LT5jdXRvZmZzOwogCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUgcGFnZSBh bmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCkBAIC02NzgsMzcgKzYxNiwzNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAq IHBydW5hYmxlLCB3ZSB3aWxsIHNhdmUgdGhlIGxvd2VzdCByZWxldmFudCBYSUQgaW4gbmV3X3By dW5lX3hpZC4gQWxzbwogCSAqIGluaXRpYWxpemUgdGhlIHJlc3Qgb2Ygb3VyIHdvcmtpbmcgc3Rh dGUuCiAJICovCi0JcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 Ci0JcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQlw cnN0YXRlLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5uZGVhZCA9IHByc3RhdGUubnVudXNlZCA9IHBy c3RhdGUubmZyb3plbiA9IDA7Ci0JcHJzdGF0ZS5ucm9vdF9pdGVtcyA9IDA7Ci0JcHJzdGF0ZS5u aGVhcG9ubHlfaXRlbXMgPSAwOworCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0 ZS0+bnVudXNlZCA9IHByc3RhdGUtPm5mcm96ZW4gPSAwOworCXByc3RhdGUtPm5yb290X2l0ZW1z ID0gMDsKKwlwcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMgPSAwOwogCiAJLyogaW5pdGlhbGl6ZSBw YWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KLQlwcnN0YXRlLnBhZ2VmcnouZnJlZXplX3Jl cXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCisJcHJzdGF0ZS0+ cGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZyb3plbl94aWQgJiYgbmV3X3JlbG1pbl9teGlk KTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSAqbmV3X3JlbGZy b3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSAq bmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhp ZCA9ICpuZXdfcmVsbWluX214aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxt aW5NeGlkID0gKm5ld19yZWxtaW5fbXhpZDsKKwkJcHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdl UmVsZnJvemVuWGlkID0gKm5ld19yZWxmcm96ZW5feGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5v RnJlZXplUGFnZVJlbGZyb3plblhpZCA9ICpuZXdfcmVsZnJvemVuX3hpZDsKKwkJcHJzdGF0ZS0+ cGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7CisJCXByc3Rh dGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7CiAJ fQogCWVsc2UKIAl7CiAJCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCA9PSBOVUxMICYmIG5ld19y ZWxtaW5fbXhpZCA9PSBOVUxMKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5N eGlkID0gSW52YWxpZE11bHRpWGFjdElkOwotCQlwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdl UmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6 ZVBhZ2VSZWxmcm96ZW5YaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlw cnN0YXRlLT5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFjdElk OworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQgPSBJbnZhbGlkTXVs dGlYYWN0SWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZy b3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCX0KIAotCXByc3RhdGUubmRlbGV0ZWQg PSAwOwotCXByc3RhdGUubGl2ZV90dXBsZXMgPSAwOwotCXByc3RhdGUucmVjZW50bHlfZGVhZF90 dXBsZXMgPSAwOwotCXByc3RhdGUuaGFzdHVwID0gZmFsc2U7Ci0JcHJzdGF0ZS5scGRlYWRfaXRl bXMgPSAwOwotCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5kZWFkb2Zmc2V0czsKKwlw cnN0YXRlLT5uZGVsZXRlZCA9IDA7CisJcHJzdGF0ZS0+bGl2ZV90dXBsZXMgPSAwOworCXByc3Rh dGUtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gMDsKKwlwcnN0YXRlLT5oYXN0dXAgPSBmYWxzZTsK KwlwcnN0YXRlLT5scGRlYWRfaXRlbXMgPSAwOworCXByc3RhdGUtPmRlYWRvZmZzZXRzID0gcHJl c3VsdC0+ZGVhZG9mZnNldHM7CiAKIAkvKgogCSAqIFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291 bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuLgpAQCAtNzM2LDIwICs2 NzQsMjAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zp c2libGUgdG8gZmFsc2UgYWxsb3dzCiAJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwotCWlmIChwcnN0YXRl LmF0dGVtcHRfZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCXBy c3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwor CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0 cnVlOwogCX0KLQllbHNlIGlmIChwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3ZtKQorCWVsc2UgaWYg KHByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9 IHRydWU7Ci0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfdmlz aWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAJZWxzZQog CXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4g PSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxs X2Zyb3plbiA9IGZhbHNlOwogCX0KIAogCS8qCkBAIC03NjEsMTAgKzY5OSwxNCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqIHVzZWQg dG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdoZW4gdXBkYXRpbmcg dGhlIFZNCiAJICogYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgog CSAqLwotCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Cit9CiAKLQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpOwotCXR1cC50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKK3N0YXRpYyB2 b2lkCitwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLCBCbG9ja051bWJlciBi bG9ja25vLCBCdWZmZXIgYnVmZmVyLCBQYWdlIHBhZ2UsCisJCQkJICBPZmZzZXROdW1iZXIgbWF4 b2ZmLCBPZmZzZXROdW1iZXIgKm9mZl9sb2MsIEhlYXBUdXBsZSB0dXApCit7CisJT2Zmc2V0TnVt YmVyIG9mZm51bTsKIAogCS8qCiAJICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFu ZCBxdWV1ZSB0aGVtIHVwIGZvciBwcm9jZXNzaW5nIGFzIEhPVApAQCAtNzk5LDEzICs3NDEsMTMg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkJICovCiAJCSpvZmZfbG9jID0gb2ZmbnVtOwogCi0JCXByc3RhdGUucHJvY2Vzc2VkW29mZm51 bV0gPSBmYWxzZTsKLQkJcHJzdGF0ZS5odHN2W29mZm51bV0gPSAtMTsKKwkJcHJzdGF0ZS0+cHJv Y2Vzc2VkW29mZm51bV0gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+aHRzdltvZmZudW1dID0gLTE7CiAK IAkJLyogTm90aGluZyB0byBkbyBpZiBzbG90IGRvZXNuJ3QgY29udGFpbiBhIHR1cGxlICovCiAJ CWlmICghSXRlbUlkSXNVc2VkKGl0ZW1pZCkpCiAJCXsKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF91bnVzZWQocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKHBhZ2UsIHByc3RhdGUsIG9mZm51bSk7CiAJCQlj b250aW51ZTsKIAkJfQogCkBAIC04MTUsMTcgKzc1NywxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogSWYgdGhlIGNhbGxlciBz ZXQgbWFya191bnVzZWRfbm93IHRydWUsIHdlIGNhbiBzZXQgZGVhZCBsaW5lCiAJCQkgKiBwb2lu dGVycyBMUF9VTlVTRUQgbm93LgogCQkJICovCi0JCQlpZiAodW5saWtlbHkocHJzdGF0ZS5tYXJr X3VudXNlZF9ub3cpKQotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZCgmcHJzdGF0ZSwgb2Zm bnVtLCBmYWxzZSk7CisJCQlpZiAodW5saWtlbHkocHJzdGF0ZS0+bWFya191bnVzZWRfbm93KSkK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVtLCBmYWxzZSk7CiAJ CQllbHNlCi0JCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQocGFnZSwgJnBy c3RhdGUsIG9mZm51bSk7CisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQo cGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKEl0ZW1J ZElzUmVkaXJlY3RlZChpdGVtaWQpKQogCQl7CiAJCQkvKiBUaGlzIGlzIHRoZSBzdGFydCBvZiBh IEhPVCBjaGFpbiAqLwotCQkJcHJzdGF0ZS5yb290X2l0ZW1zW3Byc3RhdGUubnJvb3RfaXRlbXMr K10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5yb290X2l0ZW1zW3Byc3RhdGUtPm5yb290X2l0ZW1z KytdID0gb2ZmbnVtOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtODM1LDI1ICs3NzcsMTkgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ ICogR2V0IHRoZSB0dXBsZSdzIHZpc2liaWxpdHkgc3RhdHVzIGFuZCBxdWV1ZSBpdCB1cCBmb3Ig cHJvY2Vzc2luZy4KIAkJICovCiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bShwYWdlLCBpdGVtaWQpOwotCQl0dXAudF9kYXRhID0gaHR1cDsKLQkJdHVwLnRfbGVuID0gSXRl bUlkR2V0TGVuZ3RoKGl0ZW1pZCk7Ci0JCUl0ZW1Qb2ludGVyU2V0KCZ0dXAudF9zZWxmLCBibG9j a25vLCBvZmZudW0pOworCQl0dXAtPnRfZGF0YSA9IGh0dXA7CisJCXR1cC0+dF9sZW4gPSBJdGVt SWRHZXRMZW5ndGgoaXRlbWlkKTsKKwkJSXRlbVBvaW50ZXJTZXQoJnR1cC0+dF9zZWxmLCBibG9j a25vLCBvZmZudW0pOwogCi0JCXByc3RhdGUuaHRzdltvZmZudW1dID0gaGVhcF9wcnVuZV9zYXRp c2ZpZXNfdmFjdXVtKCZwcnN0YXRlLCAmdHVwLAotCQkJCQkJCQkJCQkJCQkgICBidWZmZXIpOwor CQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0ocHJz dGF0ZSwgdHVwLAorCQkJCQkJCQkJCQkJCQkJYnVmZmVyKTsKIAogCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkoaHR1cCkpCi0JCQlwcnN0YXRlLnJvb3RfaXRlbXNbcHJzdGF0ZS5ucm9v dF9pdGVtcysrXSA9IG9mZm51bTsKKwkJCXByc3RhdGUtPnJvb3RfaXRlbXNbcHJzdGF0ZS0+bnJv b3RfaXRlbXMrK10gPSBvZmZudW07CiAJCWVsc2UKLQkJCXByc3RhdGUuaGVhcG9ubHlfaXRlbXNb cHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5oZWFwb25s eV9pdGVtc1twcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CiAJfQogCi0JLyoK LQkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIG1heSBoYXZlIGNhdXNlZAotCSAqIGFuIEZQSSB0byBiZSBlbWl0dGVkLgotCSAqLwotCWRp ZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2FnZS53YWxfZnBpOwotCiAJ LyoKIAkgKiBQcm9jZXNzIEhPVCBjaGFpbnMuCiAJICoKQEAgLTg2NSwzMCArODAxLDMwIEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog dGhlIHBhZ2UgaW5zdGVhZCBvZiB1c2luZyB0aGUgcm9vdF9pdGVtcyBhcnJheSwgYWxzbyBkaWQg aXQgaW4KIAkgKiBhc2NlbmRpbmcgb2Zmc2V0IG51bWJlciBvcmRlci4pCiAJICovCi0JZm9yIChp bnQgaSA9IHByc3RhdGUubnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKKwlmb3IgKGludCBp ID0gcHJzdGF0ZS0+bnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKIAl7Ci0JCW9mZm51bSA9 IHByc3RhdGUucm9vdF9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+cm9vdF9pdGVtc1tp XTsKIAogCQkvKiBJZ25vcmUgaXRlbXMgYWxyZWFkeSBwcm9jZXNzZWQgYXMgcGFydCBvZiBhbiBl YXJsaWVyIGNoYWluICovCi0JCWlmIChwcnN0YXRlLnByb2Nlc3NlZFtvZmZudW1dKQorCQlpZiAo cHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQljb250aW51ZTsKIAogCQkvKiBzZWUgcHJl Y2VkaW5nIGxvb3AgKi8KIAkJKm9mZl9sb2MgPSBvZmZudW07CiAKIAkJLyogUHJvY2VzcyB0aGlz IGl0ZW0gb3IgY2hhaW4gb2YgaXRlbXMgKi8KLQkJaGVhcF9wcnVuZV9jaGFpbihwYWdlLCBibG9j a25vLCBtYXhvZmYsIG9mZm51bSwgJnByc3RhdGUpOworCQloZWFwX3BydW5lX2NoYWluKHBhZ2Us IGJsb2Nrbm8sIG1heG9mZiwgb2ZmbnVtLCBwcnN0YXRlKTsKIAl9CiAKIAkvKgogCSAqIFByb2Nl c3MgYW55IGhlYXAtb25seSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IHByb2Nlc3NlZCBh cyBwYXJ0IG9mCiAJICogYSBIT1QgY2hhaW4uCiAJICovCi0JZm9yIChpbnQgaSA9IHByc3RhdGUu bmhlYXBvbmx5X2l0ZW1zIC0gMTsgaSA+PSAwOyBpLS0pCisJZm9yIChpbnQgaSA9IHByc3RhdGUt Pm5oZWFwb25seV9pdGVtcyAtIDE7IGkgPj0gMDsgaS0tKQogCXsKLQkJb2ZmbnVtID0gcHJzdGF0 ZS5oZWFwb25seV9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+aGVhcG9ubHlfaXRlbXNb aV07CiAKLQkJaWYgKHByc3RhdGUucHJvY2Vzc2VkW29mZm51bV0pCisJCWlmIChwcnN0YXRlLT5w cm9jZXNzZWRbb2ZmbnVtXSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIHNlZSBwcmVjZWRpbmcgbG9v cCAqLwpAQCAtOTA3LDcgKzg0Myw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqIHJldHVybiB0cnVlIGZvciBhbiBYTUlOX0lOVkFM SUQgdHVwbGUsIHNvIHRoaXMgY29kZSB3aWxsIHdvcmsgZXZlbgogCQkgKiB3aGVuIHRoZXJlIHdl cmUgc2VxdWVudGlhbCB1cGRhdGVzIHdpdGhpbiB0aGUgYWJvcnRlZCB0cmFuc2FjdGlvbi4pCiAJ CSAqLwotCQlpZiAocHJzdGF0ZS5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCisJCWlm IChwcnN0YXRlLT5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCiAJCXsKIAkJCUl0ZW1J ZAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVh ZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwpA QCAtOTE1LDggKzg1MSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCQlpZiAobGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0 ZWQoaHR1cCkpKQogCQkJewogCQkJCUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6 b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkgICZwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCk7Ci0J CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKCZwcnN0YXRlLCBvZmZudW0sIHRydWUpOworCQkJ CQkJCQkJCQkJCSAgJnByc3RhdGUtPmxhdGVzdF94aWRfcmVtb3ZlZCk7CisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1ZSk7CiAJCQl9CiAJCQllbHNlCiAJ CQl7CkBAIC05MzMsNyArODY5LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCX0KIAkJfQogCQllbHNlCi0JCQloZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKHBhZ2UsICZwcnN0YXRlLCBvZmZudW0pOworCQkJaGVh cF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0YXRlLCBvZmZudW0p OwogCX0KIAogCS8qIFdlIHNob3VsZCBub3cgaGF2ZSBwcm9jZXNzZWQgZXZlcnkgdHVwbGUgZXhh Y3RseSBvbmNlICAqLwpAQCAtOTQ0LDEyICs4ODAsMTEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJewogCQkqb2ZmX2xvYyA9IG9mZm51 bTsKIAotCQlBc3NlcnQocHJzdGF0ZS5wcm9jZXNzZWRbb2ZmbnVtXSk7CisJCUFzc2VydChwcnN0 YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSk7CiAJfQogI2VuZGlmCiAKKwkvKgorCSAqIEFmdGVyIHBy b2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4 bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFn ZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS0+YWxsX3Zp c2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUtPnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0 LCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qIENsZWFyIHRoZSBvZmZzZXQg aW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAkq b2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7Cit9CisKKy8qCisgKiBQcnVuZSBhbmQgcmVw YWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCisg KiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hh bmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCisgKgorICogQ2FsbGVyIG11c3QgaGF2ZSBw aW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKKyAq IGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJl aGFsZi4gIENhbGxlciBtaWdodAorICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVkdWN0 aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgorICogYXJyYXkgZm9sbG93aW5n IGFycmF5IHRydW5jYXRpb24gYnkgdXMuCisgKgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1 dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJvbCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVo YXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBv biB3aGF0IGVhY2gKKyAqIHBhcmFtZXRlciBkb2VzLgorICoKKyAqIElmIHRoZSBIRUFQX1BSVU5F X0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcywgd2Ugd2lsbCBmcmVlemUgdHVwbGVzIGlm CisgKiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVs bWlubXhpZCwgb3IgaWYgaXQncworICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJh bGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQorICogJ3BhcmFtcy5jdXRv ZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlk JworICogYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLgorICoKKyAqIElmIEhF QVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHNldCBpbiBwYXJhbXMgYW5kIHRoZSB2aXNpYmls aXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRo ZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisgKiBmcmVlemluZyB0aGUgaGVh cCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92bWJpdHMgYW5kCisgKiBw cmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFm dGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2UgaW4gYm9va2tlZXBpbmcu CisgKgorICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2Fs bGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCisgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9m ZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgorICogaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0 LiAgUmVxdWlyZWQKKyAqIGJ5IGFsbCBjYWxsZXJzLgorICoKKyAqIG9mZl9sb2MgaXMgdGhlIG9m ZnNldCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBpbiBlcnJvcgorICog Y2FsbGJhY2suCisgKgorICogbmV3X3JlbGZyb3plbl94aWQgYW5kIG5ld19yZWxtaW5fbXhpZCBt dXN0IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCisgKiBIRUFQX1BSVU5FX0ZSRUVaRSBv cHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRhaW4gdGhlCisgKiBv bGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24gc28gZmFyLiAgVGhl eSB3aWxsIGJlIHVwZGF0ZWQKKyAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVzZW50IG9uIHRoZSBw YWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQorICogd2hvbGUgcmVsYXRp b24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3CisgKiByZWxmcm96ZW54 aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgorICovCit2b2lkCitoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAorCQkJCQkJICAgUHJ1bmVG cmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCisJ CQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdfcmVsZnJvemVuX3hpZCwKKwkJCQkJCSAgIE11bHRp WGFjdElkICpuZXdfcmVsbWluX214aWQpCit7CisJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1 ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKKwlQYWdlCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJH ZXRCbG9ja051bWJlcihidWZmZXIpOworCU9mZnNldE51bWJlciBtYXhvZmY7CisJUHJ1bmVTdGF0 ZQlwcnN0YXRlOworCUhlYXBUdXBsZURhdGEgdHVwOworCWJvb2wJCWRvX2ZyZWV6ZTsKKwlib29s CQlkb19wcnVuZTsKKwlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwli b29sCQlkb19zZXRfcGRfdmlzOworCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKKwlpbnQ2NAkJ ZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25m bGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNhY3Rpb25JZCBjb25m bGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7 CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCisJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51 bWJlcihwYWdlKTsKKwl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocGFyYW1zLT5y ZWxhdGlvbik7CisKKwkvKiBJbml0aWFsaXplIG5lZWRlZCBzdGF0ZSBpbiBwcnN0YXRlICovCisJ cHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywgJnByc3RhdGUsIG5ld19yZWxmcm96ZW5feGlkLCBu ZXdfcmVsbWluX214aWQsIHByZXN1bHQpOworCisJLyoKKwkgKiBFeGFtaW5lIGFsbCBsaW5lIHBv aW50ZXJzIGFuZCB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIHRvIGRldGVybWluZQorCSAq IHdoaWNoIGxpbmUgcG9pbnRlcnMgc2hvdWxkIGNoYW5nZSBzdGF0ZSBhbmQgd2hpY2ggdHVwbGVz IG1heSBiZSBmcm96ZW4uCisJICogUHJlcGFyZSBxdWV1ZSBvZiBzdGF0ZSBjaGFuZ2VzIHRvIGxh dGVyIGJlIGV4ZWN1dGVkIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLworCXBydW5l X2ZyZWV6ZV9wbGFuKCZwcnN0YXRlLCBibG9ja25vLCBidWZmZXIsIHBhZ2UsIG1heG9mZiwgb2Zm X2xvYywgJnR1cCk7CisKKwkvKgorCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgaGVhcF9w cnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2VkCisJICogYW4gRlBJIHRvIGJl IGVtaXR0ZWQuCisJICovCisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dh bFVzYWdlLndhbF9mcGk7CiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8 CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CkBAIC05NjMsMTYgKzk5Nyw2IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJZG9faGludF9wcnVu ZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVu ZV94aWQgfHwKIAkJUGFnZUlzRnVsbChwYWdlKTsKIAotCS8qCi0JICogQWZ0ZXIgcHJvY2Vzc2lu ZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4KLQkg KiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5v dCBiZQotCSAqIGFsbC12aXNpYmxlLgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYm Ci0JCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkg JiYKLQkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOwotCiAJLyoKIAkgKiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBh aGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplCiAJICogcGxhbnMgd2Ug cHJlcGFyZWQsIG9yIG5vdC4KLS0gCjIuNDMuMAoK --00000000000012d76f064126b9cf--