From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch [185.70.43.16]) by sourceware.org (Postfix) with ESMTPS id 4E5263858D20 for ; Sun, 7 Jan 2024 00:00:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4E5263858D20 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4E5263858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=185.70.43.16 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704585652; cv=none; b=dbWfTjiOjafqIJAuCbHel3TDdyMGihLbgpAbgDeK6V5bPJNE6naeLgW8xvRHrl9FHZWeBj+ZuevrEMBC5fvZwrU4H/X/HwWfOZYtNhjtKMuRu7cJJzwY7IaHyyEUzIkBOLW0vFdBFLK9lZHVnEWJgoUHcIfGLS8A1awSCGcg/+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704585652; c=relaxed/simple; bh=5LYi2F/6oW+NFFN5960NeJFqgcd2aBtUune09l6K1Vc=; h=DKIM-Signature:Date:To:From:Subject:Message-ID:MIME-Version; b=ILI1vjDEMXxeKB7EYGIISNkMUuFPfMgEK+y/oXKVAZ8B+oQNWazg9mHGcD2uW78DhVlszOF0lSIyLMHdgtoVXSnkMJb8RVNWQx14k2JVSuhgLAuguvw8mR1ValbaFmuzumWkiSzpvCpLkBPSqKrE8oXhr57U9O4D8HgcuX8qVqY= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1704585635; x=1704844835; bh=5LYi2F/6oW+NFFN5960NeJFqgcd2aBtUune09l6K1Vc=; h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=pyAPMxdT8hdlyQSTznEgdOtL/A/n+zfmjM0ztZUCuv++FuSzyPRZ0y6yCf9j2qnVP hKCopKZyNsYhvHMVeH+nJS5lFvUwXKF4Kog4MuBbJ534AxerAZqrEriBe5JHgjMvzF J+0dJE2KTxLQ0rrsGQfrVEyGIuY630ts/GZSkueQNLIFiXpmEWcagTuoUQhhW9tROj rOm0NLA/cms6tcHLxbJz0NKSYJ647U1iE9xt5+IcxMYYgP5tXD68gjC2qRvy0yrsv4 nXOEDLPMz4URoEJv0G5VylgDGGoFRJkH0N/WLEAQCS2f5Tsj1JDN725XYA1vCqAnEA K8/1Li8dEyLug== Date: Sun, 07 Jan 2024 00:00:10 +0000 To: waffl3x From: waffl3x Cc: Jason Merrill , "gcc-patches@gcc.gnu.org" Subject: [PATCH v8 1/4] c++: P0847R7 (deducing this) - prerequisite changes. [PR102609] Message-ID: Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_VygsHXzWZDneOOQxqK6o8NSrhhnPXNiUAMR0sS8eTCc" X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --b1_VygsHXzWZDneOOQxqK6o8NSrhhnPXNiUAMR0sS8eTCc Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Bootstrapped and tested on x86_64-linux with no regressions. I'm considering this finished, I have CWG2586 working but I have not included it in this version of the patch. I was not happy with the amount of work I had done on it. I will try to get it finished before we get cut off, and I'm pretty sure I can. I just don't want to risk missing the boat for the whole patch just for that. There aren't too many changes from v7, it's mostly just cleaned up. There are a few though, so do take a look, if there's anything severe I can rush to fix it if necessary. That's all, hopefully all is good, fingers crossed. Alex --b1_VygsHXzWZDneOOQxqK6o8NSrhhnPXNiUAMR0sS8eTCc Content-Type: text/x-patch; name=0001-C-23-P0847R7-deducing-this-prerequisite-changes.-PR1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-C-23-P0847R7-deducing-this-prerequisite-changes.-PR1.patch RnJvbSBjZDEyMjA1M2RmYWQ3NDFhN2Q5MGFkY2Q0NTkyOWFmNzY4Y2U2NDNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBTdW4sIDMxIERlYyAyMDIzIDAzOjE2OjM2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzRdIEMr KzIzIFAwODQ3UjcgKGRlZHVjaW5nIHRoaXMpIC0gcHJlcmVxdWlzaXRlIGNoYW5nZXMuCiBbUFIx MDI2MDldCgpBZGRzIHRoZSB4b2JqX2ZsYWcgbWVtYmVyIHRvIGxhbmdfZGVjbF9mbiBhbmQgYSBj b3JyZXNwb25kaW5nIG1lbWJlciBhY2Nlc3MKbWFjcm8gYW5kIHByZWRpY2F0ZSB0byBzdXBwb3J0 IHRoZSBhZGRpdGlvbiBvZiBleHBsaWNpdCBvYmplY3QgbWVtYmVyCmZ1bmN0aW9ucy4gQWRkaXRp b25hbGx5LCBzaW5jZSBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9ucyBhcmUgYWxzbwpu b24tc3RhdGljIG1lbWJlciBmdW5jdGlvbnMsIHdlIG5lZWQgdG8gY2hhbmdlIHVzZXMgb2YKREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgdG8gY2xhcmlmeSB3aGV0aGVyIHRoZXkgaW50 ZW5kIHRvIGluY2x1ZGUgb3IKZXhjbHVkZSB0aGVtLgoKTWFueSBvZiB0aGVzZSBhbHRlcmF0aW9u cyBhcmUgYXV0aG9yZWQgYnkgSmFzb24gTWVycmlsLgoKCVBSIGMrKy8xMDI2MDkKCmdjYy9jcC9D aGFuZ2VMb2c6CgoJUFIgYysrLzEwMjYwOQoJQysrMjMgUDA4NDdSNyAoZGVkdWNpbmcgdGhpcykg LSBwcmVyZXF1aXNpdGUgY2hhbmdlcy4gW1BSMTAyNjA5XQoJKiBjcC10cmVlLmggKHN0cnVjdCBs YW5nX2RlY2xfZm4pOiBOZXcgZGF0YSBtZW1iZXIuCgkoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZV TkNUSU9OX1ApOiBQb2lzb24uCgkoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QKTogRGVmaW5l LgoJKERFQ0xfRlVOQ1RJT05fWE9CSl9GTEFHKTogRGVmaW5lLgoJKERFQ0xfWE9CSl9NRU1CRVJf RlVOQ1RJT05fUCk6IERlZmluZS4KCShERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCk6IERl ZmluZS4KCShERUNMX0ZVTkNUSU9OX01FTUJFUl9QKTogRG9uJ3QgdXNlIERFQ0xfTk9OU1RBVElD X01FTUJFUl9GVU5DVElPTl9QLgoJKERFQ0xfQ09OU1RfTUVNRlVOQ19QKTogTGlrZXdpc2UuCgko REVDTF9WT0xBVElMRV9NRU1GVU5DX1ApOiBMaWtld2lzZS4KCShERUNMX05PTlNUQVRJQ19NRU1C RVJfUCk6IExpa2V3aXNlLgogICAgICAgICogbW9kdWxlLmNjICh0cmVlc19vdXQ6OmxhbmdfZGVj bF9ib29scyk6IEhhbmRsZSB4b2JqX2ZsYWcuCiAgICAgICAgKHRyZWVzX2luOjpsYW5nX2RlY2xf Ym9vbHMpOiBIYW5kbGUgeG9ial9mbGFnLgoJKiBjYWxsLmNjIChidWlsZF90aGlzX2NvbnZlcnNp b24pOgoJKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOgoJKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVf cmVhbCk6CgkoYWRkX2NhbmRpZGF0ZXMpOgoJKG1heWJlX3dhcm5fY2xhc3NfbWVtYWNjZXNzKToK CShjYW5kX3Bhcm1zX21hdGNoKToKCShqb3VzdCk6CgkoZG9fd2Fybl9kYW5nbGluZ19yZWZlcmVu Y2UpOiBEb24ndCB1c2UgaXQuCgkqIGNsYXNzLmNjIChmaW5hbGl6ZV9saXRlcmFsX3R5cGVfcHJv cGVydHkpOgoJKGZpbmlzaF9zdHJ1Y3QpOgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVk X2Z1bmN0aW9uKToKCSogY29uc3RleHByLmNjIChpc192YWxpZF9jb25zdGV4cHJfZm4pOgoJKGN4 eF9iaW5kX3BhcmFtZXRlcnNfaW5fY2FsbCk6CgkqIGNvbnRyYWN0cy5jYyAoYnVpbGRfY29udHJh Y3RfY29uZGl0aW9uX2Z1bmN0aW9uKToKCSogY3Atb2JqY3AtY29tbW9uLmNjIChjcF9kZWNsX2R3 YXJmX2F0dHJpYnV0ZSk6CgkqIGN4eC1wcmV0dHktcHJpbnQuY2MgKGN4eF9wcmV0dHlfcHJpbnRl cjo6cG9zdGZpeF9leHByZXNzaW9uKToKCShjeHhfcHJldHR5X3ByaW50ZXI6OmRlY2xhcmF0aW9u X3NwZWNpZmllcnMpOgoJKGN4eF9wcmV0dHlfcHJpbnRlcjo6ZGlyZWN0X2RlY2xhcmF0b3IpOgoJ KiBkZWNsLmNjIChjcF9maW5pc2hfZGVjbCk6CgkoZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0 aWVzKToKCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOgoJKHJlY29yZF9rZXlfbWV0aG9kX2Rl ZmluZWQpOgoJKiBkZWNsMi5jYyAoY3BfaGFuZGxlX2RlcHJlY2F0ZWRfb3JfdW5hdmFpbGFibGUp OgoJKiBpbml0LmNjIChmaW5kX3VuaW5pdF9maWVsZHNfcik6CgkoYnVpbGRfb2Zmc2V0X3JlZik6 CgkqIGxhbWJkYS5jYyAobGFtYmRhX2V4cHJfdGhpc19jYXB0dXJlKToKCShtYXliZV9nZW5lcmlj X3RoaXNfY2FwdHVyZSk6Cgkobm9ubGFtYmRhX21ldGhvZF9iYXNldHlwZSk6CgkqIG1hbmdsZS5j YyAod3JpdGVfbmVzdGVkX25hbWUpOgoJKiBtZXRob2QuY2MgKGVhcmx5X2NoZWNrX2RlZmF1bHRl ZF9jb21wYXJpc29uKToKCShza2lwX2FydGlmaWNpYWxfcGFybXNfZm9yKToKCShudW1fYXJ0aWZp Y2lhbF9wYXJtc19mb3IpOgoJKiBtb2R1bGUuY2MgKHRyZWVzX291dDo6bGFuZ19kZWNsX2Jvb2xz KToKCSh0cmVlc19pbjo6bGFuZ19kZWNsX2Jvb2xzKToKCSogcHQuY2MgKGlzX3NwZWNpYWxpemF0 aW9uX29mX2ZyaWVuZCk6CgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKToKCShjb3B5X2RlZmF1 bHRfYXJnc190b19leHBsaWNpdF9zcGVjKToKCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlv bik6CgkodHN1YnN0X2NvbnRyYWN0X2F0dHJpYnV0ZSk6CgkoY2hlY2tfbm9uX2RlZHVjaWJsZV9j b252ZXJzaW9ucyk6CgkobW9yZV9zcGVjaWFsaXplZF9mbik6CgkobWF5YmVfaW5zdGFudGlhdGVf bm9leGNlcHQpOgoJKHJlZ2lzdGVyX3BhcmFtZXRlcl9zcGVjaWFsaXphdGlvbnMpOgoJKHZhbHVl X2RlcGVuZGVudF9leHByZXNzaW9uX3ApOgoJKiBzZWFyY2guY2MgKHNoYXJlZF9tZW1iZXJfcCk6 CgkobG9va3VwX21lbWJlcik6CgkoZmllbGRfYWNjZXNzX3ApOgoJKiBzZW1hbnRpY3MuY2MgKGZp bmlzaF9vbXBfZGVjbGFyZV9zaW1kX21ldGhvZHMpOgoJKiB0cmVlLmNjIChsdmFsdWVfa2luZCk6 CgkqIHR5cGVjay5jYyAoaW52YWxpZF9ub25zdGF0aWNfbWVtZm5fcCk6IERvbid0IHVzZQoJREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AuCgpsaWJjYzEvQ2hhbmdlTG9nOgoKCVBSIGMr Ky8xMDI2MDkKCUMrKzIzIFAwODQ3UjcgKGRlZHVjaW5nIHRoaXMpIC0gcHJlcmVxdWlzaXRlIGNo YW5nZXMuIFtQUjEwMjYwOV0KCSogbGliY3AxcGx1Z2luLmNjIChwbHVnaW5fcHJhZ21hX3B1c2hf dXNlcl9leHByZXNzaW9uKTogRG9uJ3QgdXNlCglERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJ T05fUC4KClNpZ25lZC1vZmYtYnk6IFdhZmZsM3ggPHdhZmZsM3hAcHJvdG9ubWFpbC5jb20+Ci0t LQogZ2NjL2NwL2NhbGwuY2MgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tLS0t LS0tCiBnY2MvY3AvY2xhc3MuY2MgICAgICAgICAgICB8ICA2ICsrKy0tLQogZ2NjL2NwL2NvbnN0 ZXhwci5jYyAgICAgICAgfCAgNCArKy0tCiBnY2MvY3AvY29udHJhY3RzLmNjICAgICAgICB8ICA2 ICsrKy0tLQogZ2NjL2NwL2NwLW9iamNwLWNvbW1vbi5jYyAgfCAgNCArKy0tCiBnY2MvY3AvY3At dHJlZS5oICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIGdjYy9jcC9jeHgtcHJldHR5LXByaW50LmNjIHwgIDYgKysrLS0tCiBnY2MvY3AvZGVjbC5j YyAgICAgICAgICAgICB8ICA4ICsrKystLS0tCiBnY2MvY3AvZGVjbDIuY2MgICAgICAgICAgICB8 ICAyICstCiBnY2MvY3AvaW5pdC5jYyAgICAgICAgICAgICB8ICA0ICsrLS0KIGdjYy9jcC9sYW1i ZGEuY2MgICAgICAgICAgIHwgIDkgKysrKystLS0tCiBnY2MvY3AvbWFuZ2xlLmNjICAgICAgICAg ICB8ICA0ICsrLS0KIGdjYy9jcC9tZXRob2QuY2MgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGdj Yy9jcC9tb2R1bGUuY2MgICAgICAgICAgIHwgIDYgKysrKy0tCiBnY2MvY3AvcHQuY2MgICAgICAg ICAgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBnY2Mv Y3Avc2VhcmNoLmNjICAgICAgICAgICB8ICA1ICsrKy0tCiBnY2MvY3Avc2VtYW50aWNzLmNjICAg ICAgICB8ICAyICstCiBnY2MvY3AvdHJlZS5jYyAgICAgICAgICAgICB8ICAyICstCiBnY2MvY3Av dHlwZWNrLmNjICAgICAgICAgICB8ICAyICstCiBsaWJjYzEvbGliY3AxcGx1Z2luLmNjICAgICB8 ICAyICstCiAyMCBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuY2MgYi9nY2MvY3AvY2FsbC5jYwppbmRleCA2 YWM4N2EyOThiMi4uNDZmMmNjZGZjNDggMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmNjCisrKyBi L2djYy9jcC9jYWxsLmNjCkBAIC0yMzA5LDcgKzIzMDksNyBAQCBidWlsZF90aGlzX2NvbnZlcnNp b24gKHRyZWUgZm4sIHRyZWUgY3R5cGUsCiAJCSAgICAgICB0cmVlJiBwYXJtdHlwZSwgdHJlZSYg YXJndHlwZSwgdHJlZSYgYXJnLAogCQkgICAgICAgaW50IGZsYWdzLCB0c3Vic3RfZmxhZ3NfdCBj b21wbGFpbikKIHsKLSAgZ2NjX2Fzc2VydCAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9O X1AgKGZuKQorICBnY2NfYXNzZXJ0IChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQog CSAgICAgICYmICFERUNMX0NPTlNUUlVDVE9SX1AgKGZuKSk7CiAKICAgLyogVGhlIHR5cGUgb2Yg dGhlIGltcGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgKCd0aGlzJykgZm9yCkBAIC0yNTIyLDcgKzI1 MjIsNyBAQCBhZGRfZnVuY3Rpb25fY2FuZGlkYXRlIChzdHJ1Y3Qgel9jYW5kaWRhdGUgKipjYW5k aWRhdGVzLAogCXsKIAkgIHRyZWUgcGFybXR5cGUgPSBUUkVFX1ZBTFVFIChwYXJtbm9kZSk7CiAJ ICBpZiAoaSA9PSAwCi0JICAgICAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1Ag KGZuKQorCSAgICAgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCiAJICAgICAg JiYgIURFQ0xfQ09OU1RSVUNUT1JfUCAoZm4pKQogCSAgICB0ID0gYnVpbGRfdGhpc19jb252ZXJz aW9uIChmbiwgY3R5cGUsIHBhcm10eXBlLCBhcmd0eXBlLCBhcmcsCiAJCQkJICAgICAgIGZsYWdz LCBjb21wbGFpbik7CkBAIC0zNDc5LDcgKzM0NzksNyBAQCBhZGRfdGVtcGxhdGVfY2FuZGlkYXRl X3JlYWwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqKmNhbmRpZGF0ZXMsIHRyZWUgdG1wbCwKIAogICAv KiBXZSBkb24ndCBkbyBkZWR1Y3Rpb24gb24gdGhlIGluLWNoYXJnZSBwYXJhbWV0ZXIsIHRoZSBW VFQKICAgICAgcGFyYW1ldGVyIG9yICd0aGlzJy4gICovCi0gIGlmIChERUNMX05PTlNUQVRJQ19N RU1CRVJfRlVOQ1RJT05fUCAodG1wbCkpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9O X1AgKHRtcGwpKQogICAgIHsKICAgICAgIGlmIChmaXJzdF9hcmdfd2l0aG91dF9pbl9jaHJnICE9 IE5VTExfVFJFRSkKIAlmaXJzdF9hcmdfd2l0aG91dF9pbl9jaHJnID0gTlVMTF9UUkVFOwpAQCAt MzU4OSw3ICszNTg5LDcgQEAgYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsIChzdHJ1Y3Qgel9j YW5kaWRhdGUgKipjYW5kaWRhdGVzLCB0cmVlIHRtcGwsCiAgICAgICBjb252cyA9IGFsbG9jX2Nv bnZlcnNpb25zIChuYXJncyk7CiAKICAgICAgIGlmIChzaG9ydGN1dF9iYWRfY29udnMKLQkgICYm IERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QICh0bXBsKQorCSAgJiYgREVDTF9JT0JK X01FTUJFUl9GVU5DVElPTl9QICh0bXBsKQogCSAgJiYgIURFQ0xfQ09OU1RSVUNUT1JfUCAodG1w bCkpCiAJewogCSAgLyogQ2hlY2sgdGhlICd0aGlzJyBjb252ZXJzaW9uIGJlZm9yZSBwcm9jZWVk aW5nIHdpdGggZGVkdWN0aW9uLgpAQCAtNjYxNyw3ICs2NjE3LDcgQEAgYWRkX2NhbmRpZGF0ZXMg KHRyZWUgZm5zLCB0cmVlIGZpcnN0X2FyZywgY29uc3QgdmVjPHRyZWUsIHZhX2djPiAqYXJncywK ICAgICAgIHRyZWUgZm5fZmlyc3RfYXJnID0gTlVMTF9UUkVFOwogICAgICAgY29uc3QgdmVjPHRy ZWUsIHZhX2djPiAqZm5fYXJncyA9IGFyZ3M7CiAKLSAgICAgIGlmIChERUNMX05PTlNUQVRJQ19N RU1CRVJfRlVOQ1RJT05fUCAoZm4pKQorICAgICAgaWYgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5D VElPTl9QIChmbikpCiAJewogCSAgLyogRmlndXJlIG91dCB3aGVyZSB0aGUgb2JqZWN0IGFyZyBj b21lcyBmcm9tLiAgSWYgdGhpcwogCSAgICAgZnVuY3Rpb24gaXMgYSBub24tc3RhdGljIG1lbWJl ciBhbmQgd2UgZGlkbid0IGdldCBhbgpAQCAtMTA3ODQsNyArMTA3ODQsOCBAQCBtYXliZV93YXJu X2NsYXNzX21lbWFjY2VzcyAobG9jYXRpb25fdCBsb2MsIHRyZWUgZm5kZWNsLAogICAgICB0eXBl LiAgSWYgc28sIGFuZCBpZiB0aGUgY2xhc3MgaGFzIG5vIG5vbi10cml2aWFsIGJhc2VzIG9yIG1l bWJlcnMsCiAgICAgIGJlIG1vcmUgcGVybWlzc2l2ZS4gICovCiAgIGlmIChjdXJyZW50X2Z1bmN0 aW9uX2RlY2wKLSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChjdXJy ZW50X2Z1bmN0aW9uX2RlY2wpCisgICAgICAmJiBERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05f UCAoY3VycmVudF9mdW5jdGlvbl9kZWNsKQorICAgICAgLyogPz8/IGlzX29iamVjdF9wYXJhbWV0 ZXI/ICAqLwogICAgICAgJiYgaXNfdGhpc19wYXJhbWV0ZXIgKHRyZWVfc3RyaXBfbm9wX2NvbnZl cnNpb25zIChkZXN0KSkpCiAgICAgewogICAgICAgdHJlZSBjdHggPSBERUNMX0NPTlRFWFQgKGN1 cnJlbnRfZnVuY3Rpb25fZGVjbCk7CkBAIC0xMjY4NCw4ICsxMjY4NSw4IEBAIGNhbmRfcGFybXNf bWF0Y2ggKHpfY2FuZGlkYXRlICpjMSwgel9jYW5kaWRhdGUgKmMyKQogICB0cmVlIHBhcm1zMiA9 IFRZUEVfQVJHX1RZUEVTIChUUkVFX1RZUEUgKGZuMikpOwogICBpZiAoREVDTF9GVU5DVElPTl9N RU1CRVJfUCAoZm4xKQogICAgICAgJiYgREVDTF9GVU5DVElPTl9NRU1CRVJfUCAoZm4yKQotICAg ICAgJiYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbjEpCi0JICAhPSBERUNM X05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm4yKSkpCisgICAgICAmJiAoREVDTF9TVEFU SUNfRlVOQ1RJT05fUCAoZm4xKQorCSAgIT0gREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4yKSkp CiAgICAgewogICAgICAgLyogSWdub3JlICd0aGlzJyB3aGVuIGNvbXBhcmluZyB0aGUgcGFyYW1l dGVycyBvZiBhIHN0YXRpYyBtZW1iZXIKIAkgZnVuY3Rpb24gd2l0aCB0aG9zZSBvZiBhIG5vbi1z dGF0aWMgb25lLiAgKi8KQEAgLTEyODcwLDcgKzEyODcxLDcgQEAgam91c3QgKHN0cnVjdCB6X2Nh bmRpZGF0ZSAqY2FuZDEsIHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZDIsIGJvb2wgd2FybiwKIAkJ CSAgcHJpbnRfel9jYW5kaWRhdGUgKGlucHV0X2xvY2F0aW9uLAogCQkJCQkgICAgIE5fKCJjYW5k aWRhdGUgMjoiKSwgbCk7CiAJCQkgIGlmICh3LT5mbiA9PSBsLT5mbgotCQkJICAgICAgJiYgREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKHctPmZuKQorCQkJICAgICAgJiYgREVDTF9J T0JKX01FTUJFUl9GVU5DVElPTl9QICh3LT5mbikKIAkJCSAgICAgICYmICh0eXBlX21lbWZuX3F1 YWxzIChUUkVFX1RZUEUgKHctPmZuKSkKIAkJCQkgICYgVFlQRV9RVUFMX0NPTlNUKSA9PSAwKQog CQkJICAgIHsKQEAgLTE0MDE5LDcgKzE0MDIwLDcgQEAgZG9fd2Fybl9kYW5nbGluZ19yZWZlcmVu Y2UgKHRyZWUgZXhwciwgYm9vbCBhcmdfcCkKIAkgICAgICAgYmVjYXVzZSBSIHJlZmVycyB0byBv bmUgb2YgdGhlIGludCBlbGVtZW50cyBvZiBWLCBub3QgdG8KIAkgICAgICAgYSB0ZW1wb3Jhcnkg b2JqZWN0LiAgTWVtYmVyIG9wZXJhdG9yKiBtYXkgcmV0dXJuIGEgcmVmZXJlbmNlCiAJICAgICAg IGJ1dCBwcm9iYWJseSBub3QgdG8gb25lIG9mIGl0cyBhcmd1bWVudHMuICAqLwotCSAgICB8fCAo REVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkKKwkgICAgfHwgKERFQ0xf T0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpCiAJCSYmIERFQ0xfT1ZFUkxPQURFRF9P UEVSQVRPUl9QIChmbmRlY2wpCiAJCSYmIERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9JUyAoZm5k ZWNsLCBJTkRJUkVDVF9SRUYpKSkKIAkgIHJldHVybiBOVUxMX1RSRUU7CkBAIC0xNDA0NSw3ICsx NDA0Niw3IEBAIGRvX3dhcm5fZGFuZ2xpbmdfcmVmZXJlbmNlICh0cmVlIGV4cHIsIGJvb2wgYXJn X3ApCiAJICAgIHRyZWUgYXJnID0gQ0FMTF9FWFBSX0FSRyAoZXhwciwgaSk7CiAJICAgIC8qIENo ZWNrIHRoYXQgdGhpcyBhcmd1bWVudCBpbml0aWFsaXplcyBhIHJlZmVyZW5jZSwgZXhjZXB0IGZv cgogCSAgICAgICB0aGUgYXJndW1lbnQgaW5pdGlhbGl6aW5nIHRoZSBvYmplY3Qgb2YgYSBtZW1i ZXIgZnVuY3Rpb24uICAqLwotCSAgICBpZiAoIURFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElP Tl9QIChmbmRlY2wpCisJICAgIGlmICghREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbmRl Y2wpCiAJCSYmICFUWVBFX1JFRl9QIChUUkVFX1RZUEUgKGFyZykpKQogCSAgICAgIGNvbnRpbnVl OwogCSAgICBTVFJJUF9OT1BTIChhcmcpOwpAQCAtMTQwNjUsNyArMTQwNjYsNyBAQCBkb193YXJu X2RhbmdsaW5nX3JlZmVyZW5jZSAodHJlZSBleHByLCBib29sIGFyZ19wKQogCSAgICAgICBjb25z dCBTJiBzID0gUygpLnNlbGYoKTsKIAkgICAgIHdoZXJlICdzJyBkYW5nbGVzLiAgSWYgd2UndmUg Z290dGVuIGhlcmUsIHRoZSBvYmplY3QgdGhpcyBmdW5jdGlvbgogCSAgICAgaXMgaW52b2tlZCBv biBpcyBub3QgYSB0ZW1wb3JhcnkuICAqLwotCSAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVS X0ZVTkNUSU9OX1AgKGZuZGVjbCkpCisJICAgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJ T05fUCAoZm5kZWNsKSkKIAkgICAgICBicmVhazsKIAkgIH0KIAlyZXR1cm4gTlVMTF9UUkVFOwpk aWZmIC0tZ2l0IGEvZ2NjL2NwL2NsYXNzLmNjIGIvZ2NjL2NwL2NsYXNzLmNjCmluZGV4IDE5NTRl MGE1ZWQzLi42OTJiMjM4ZGQ3ZSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NsYXNzLmNjCisrKyBiL2dj Yy9jcC9jbGFzcy5jYwpAQCAtNTk2OCw3ICs1OTY4LDcgQEAgZmluYWxpemVfbGl0ZXJhbF90eXBl X3Byb3BlcnR5ICh0cmVlIHQpCiAgICAgZm9yIChmbiA9IFRZUEVfRklFTERTICh0KTsgZm47IGZu ID0gREVDTF9DSEFJTiAoZm4pKQogICAgICAgaWYgKFRSRUVfQ09ERSAoZm4pID09IEZVTkNUSU9O X0RFQ0wKIAkgICYmIERFQ0xfREVDTEFSRURfQ09OU1RFWFBSX1AgKGZuKQotCSAgJiYgREVDTF9O T05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQorCSAgJiYgREVDTF9JT0JKX01FTUJFUl9G VU5DVElPTl9QIChmbikKIAkgICYmICFERUNMX0NPTlNUUlVDVE9SX1AgKGZuKSkKIAl7CiAJICBE RUNMX0RFQ0xBUkVEX0NPTlNURVhQUl9QIChmbikgPSBmYWxzZTsKQEAgLTc5MzIsNyArNzkzMiw3 IEBAIGZpbmlzaF9zdHJ1Y3QgKHRyZWUgdCwgdHJlZSBhdHRyaWJ1dGVzKQogICBpZiAoZmxhZ19v cGVubXApCiAgICAgZm9yICh0cmVlIGRlY2wgPSBUWVBFX0ZJRUxEUyAodCk7IGRlY2w7IGRlY2wg PSBERUNMX0NIQUlOIChkZWNsKSkKICAgICAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IEZVTkNU SU9OX0RFQ0wKLQkgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkK KwkgICYmIERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKIAlpZiAodHJlZSBh dHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHZhcmlhbnQgYmFzZSIsCiAJCQkJ CSAgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkpCiAJICBvbXBfZGVjbGFyZV92YXJpYW50X2ZpbmFs aXplIChkZWNsLCBhdHRyKTsKQEAgLTg3MjcsNyArODcyNyw3IEBAIHJlc29sdmVfYWRkcmVzc19v Zl9vdmVybG9hZGVkX2Z1bmN0aW9uICh0cmVlIHRhcmdldF90eXBlLAogICAvKiBHb29kLCBleGFj dGx5IG9uZSBtYXRjaC4gIE5vdywgY29udmVydCBpdCB0byB0aGUgY29ycmVjdCB0eXBlLiAgKi8K ICAgZm4gPSBUUkVFX1BVUlBPU0UgKG1hdGNoZXMpOwogCi0gIGlmIChERUNMX05PTlNUQVRJQ19N RU1CRVJfRlVOQ1RJT05fUCAoZm4pCisgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05f UCAoZm4pCiAgICAgICAmJiAhKGNvbXBsYWluICYgdGZfcHRybWVtX29rKSAmJiAhZmxhZ19tc19l eHRlbnNpb25zKQogICAgIHsKICAgICAgIHN0YXRpYyBpbnQgZXhwbGFpbmVkOwpkaWZmIC0tZ2l0 IGEvZ2NjL2NwL2NvbnN0ZXhwci5jYyBiL2djYy9jcC9jb25zdGV4cHIuY2MKaW5kZXggZWZmNDNh NDIzNTMuLmIxMjQ3M2M0NGFmIDEwMDY0NAotLS0gYS9nY2MvY3AvY29uc3RleHByLmNjCisrKyBi L2djYy9jcC9jb25zdGV4cHIuY2MKQEAgLTI5MSw3ICsyOTEsNyBAQCBpc192YWxpZF9jb25zdGV4 cHJfZm4gKHRyZWUgZnVuLCBib29sIGNvbXBsYWluKQogCiAgICAgICAvKiBDKysxNCBEUiAxNjg0 IHJlbW92ZWQgdGhpcyByZXN0cmljdGlvbi4gICovCiAgICAgICBpZiAoY3h4X2RpYWxlY3QgPCBj eHgxNAotCSAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZ1bikKKwkgICYm IERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZnVuKQogCSAgJiYgIUNMQVNTVFlQRV9MSVRF UkFMX1AgKERFQ0xfQ09OVEVYVCAoZnVuKSkpCiAJewogCSAgcmV0ID0gZmFsc2U7CkBAIC0xODg2 LDcgKzE4ODYsNyBAQCBjeHhfYmluZF9wYXJhbWV0ZXJzX2luX2NhbGwgKGNvbnN0IGNvbnN0ZXhw cl9jdHggKmN0eCwgdHJlZSB0LCB0cmVlIGZ1biwKIAkJCQkJICBub25fY29uc3RhbnRfcCwgb3Zl cmZsb3dfcCk7CiAgICAgICAvKiBDaGVjayB3ZSBhcmVuJ3QgZGVyZWZlcmVuY2luZyBhIG51bGwg cG9pbnRlciB3aGVuIGNhbGxpbmcgYSBub24tc3RhdGljCiAJIG1lbWJlciBmdW5jdGlvbiwgd2hp Y2ggaXMgdW5kZWZpbmVkIGJlaGF2aW91ci4gICovCi0gICAgICBpZiAoaSA9PSAwICYmIERFQ0xf Tk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmdW4pCisgICAgICBpZiAoaSA9PSAwICYmIERF Q0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChmdW4pCiAJICAmJiBpbnRlZ2VyX3plcm9wIChh cmcpCiAJICAvKiBCdXQgaWdub3JlIGNhbGxzIGZyb20gd2l0aGluIGNvbXBpbGVyLWdlbmVyYXRl ZCBjb2RlLCB0byBoYW5kbGUKIAkgICAgIGNhc2VzIGxpa2UgbGFtYmRhIGZ1bmN0aW9uIHBvaW50 ZXIgY29udmVyc2lvbiBvcGVyYXRvciB0aHVua3MKZGlmZiAtLWdpdCBhL2djYy9jcC9jb250cmFj dHMuY2MgYi9nY2MvY3AvY29udHJhY3RzLmNjCmluZGV4IDAzNWNhNDgyN2U3Li5jNTA1YjY3ZDMz OSAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NvbnRyYWN0cy5jYworKysgYi9nY2MvY3AvY29udHJhY3Rz LmNjCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBidWlsZF9jb250cmFjdF9jb25kaXRpb25fZnVuY3Rp b24gKHRyZWUgZm5kZWNsLCBib29sIHByZSkKIHsKICAgaWYgKFRSRUVfVFlQRSAoZm5kZWNsKSA9 PSBlcnJvcl9tYXJrX25vZGUpCiAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLSAgaWYgKERF Q0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpCisgIGlmIChERUNMX0lPQkpf TUVNQkVSX0ZVTkNUSU9OX1AgKGZuZGVjbCkKICAgICAgICYmICFUWVBFX01FVEhPRF9CQVNFVFlQ RSAoVFJFRV9UWVBFIChmbmRlY2wpKSkKICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCkBA IC0xNDIxLDcgKzE0MjEsNyBAQCBidWlsZF9jb250cmFjdF9jb25kaXRpb25fZnVuY3Rpb24gKHRy ZWUgZm5kZWNsLCBib29sIHByZSkKICAgICAgIGFyZ190eXBlICYmIGFyZ190eXBlICE9IHZvaWRf bGlzdF9ub2RlOwogICAgICAgYXJnX3R5cGUgPSBUUkVFX0NIQUlOIChhcmdfdHlwZSkpCiAgICAg ewotICAgICAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpCisg ICAgICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbmRlY2wpCiAJICAmJiBUWVBF X0FSR19UWVBFUyAoVFJFRV9UWVBFIChmbikpID09IGFyZ190eXBlKQogICAgICAgewogCWNsYXNz X3R5cGUgPSBUUkVFX1RZUEUgKFRSRUVfVkFMVUUgKGFyZ190eXBlKSk7CkBAIC0xNDUxLDcgKzE0 NTEsNyBAQCBidWlsZF9jb250cmFjdF9jb25kaXRpb25fZnVuY3Rpb24gKHRyZWUgZm5kZWNsLCBi b29sIHByZSkKICAgICB9CiAKICAgVFJFRV9UWVBFIChmbikgPSBidWlsZF9mdW5jdGlvbl90eXBl ICh2YWx1ZV90eXBlLCBhcmdfdHlwZXMpOwotICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZV TkNUSU9OX1AgKGZuZGVjbCkpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZu ZGVjbCkpCiAgICAgVFJFRV9UWVBFIChmbikgPSBidWlsZF9tZXRob2RfdHlwZSAoY2xhc3NfdHlw ZSwgVFJFRV9UWVBFIChmbikpOwogCiAgIERFQ0xfTkFNRSAoZm4pID0gY29weV9ub2RlIChERUNM X05BTUUgKGZuKSk7CmRpZmYgLS1naXQgYS9nY2MvY3AvY3Atb2JqY3AtY29tbW9uLmNjIGIvZ2Nj L2NwL2NwLW9iamNwLWNvbW1vbi5jYwppbmRleCBlZTg4ZGY1NzY3Yi4uMzk3MGM0Y2RkZDUgMTAw NjQ0Ci0tLSBhL2djYy9jcC9jcC1vYmpjcC1jb21tb24uY2MKKysrIGIvZ2NjL2NwL2NwLW9iamNw LWNvbW1vbi5jYwpAQCAtMzQ5LDcgKzM0OSw3IEBAIGNwX2RlY2xfZHdhcmZfYXR0cmlidXRlIChj b25zdF90cmVlIGRlY2wsIGludCBhdHRyKQogCiAgICAgY2FzZSBEV19BVF9yZWZlcmVuY2U6CiAg ICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMCi0JICAmJiBERUNMX05P TlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKKwkgICYmIERFQ0xfSU9CSl9NRU1CRVJf RlVOQ1RJT05fUCAoZGVjbCkKIAkgICYmIEZVTkNUSU9OX1JFRl9RVUFMSUZJRUQgKFRSRUVfVFlQ RSAoZGVjbCkpCiAJICAmJiAhRlVOQ1RJT05fUlZBTFVFX1FVQUxJRklFRCAoVFJFRV9UWVBFIChk ZWNsKSkpCiAJcmV0dXJuIDE7CkBAIC0zNTcsNyArMzU3LDcgQEAgY3BfZGVjbF9kd2FyZl9hdHRy aWJ1dGUgKGNvbnN0X3RyZWUgZGVjbCwgaW50IGF0dHIpCiAKICAgICBjYXNlIERXX0FUX3J2YWx1 ZV9yZWZlcmVuY2U6CiAgICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNM Ci0JICAmJiBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKKwkgICYmIERF Q0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKIAkgICYmIEZVTkNUSU9OX1JFRl9RVUFM SUZJRUQgKFRSRUVfVFlQRSAoZGVjbCkpCiAJICAmJiBGVU5DVElPTl9SVkFMVUVfUVVBTElGSUVE IChUUkVFX1RZUEUgKGRlY2wpKSkKIAlyZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10 cmVlLmggYi9nY2MvY3AvY3AtdHJlZS5oCmluZGV4IDE5Nzk1NzJjMzY1Li40MWQ0ODBmOGU2ZSAx MDA2NDQKLS0tIGEvZ2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC0y OTYyLDggKzI5NjIsOSBAQCBzdHJ1Y3QgR1RZKCgpKSBsYW5nX2RlY2xfZm4gewogICB1bnNpZ25l ZCBjb3JvdXRpbmVfcCA6IDE7CiAgIHVuc2lnbmVkIGltcGxpY2l0X2NvbnN0ZXhwciA6IDE7CiAg IHVuc2lnbmVkIGVzY2FsYXRlZF9wIDogMTsKKyAgdW5zaWduZWQgeG9ial9mdW5jIDogMTsKIAot ICB1bnNpZ25lZCBzcGFyZSA6IDg7CisgIHVuc2lnbmVkIHNwYXJlIDogNzsKIAogICAvKiAzMi1i aXRzIHBhZGRpbmcgb24gNjQtYml0IGhvc3QuICAqLwogCkBAIC0zMzYxLDMzICszMzYyLDU1IEBA IHN0cnVjdCBHVFkoKCkpIGxhbmdfZGVjbCB7CiAjZGVmaW5lIERFQ0xfU1RBVElDX0ZVTkNUSU9O X1AoTk9ERSkgXAogICAoTEFOR19ERUNMX0ZOX0NIRUNLIChOT0RFKS0+c3RhdGljX2Z1bmN0aW9u KQogCi0vKiBOb256ZXJvIGZvciBGVU5DVElPTl9ERUNMIG1lYW5zIHRoYXQgdGhpcyBkZWNsIGlz IGEgbm9uLXN0YXRpYworLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBtZWFucyB0aGF0IHRo aXMgZGVjbCBpcyBhIG5vbi1zdGF0aWMgbWVtYmVyCisgICBmdW5jdGlvbi4gIEMrKzIzIGV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIGFyZSBhbHNvIGNvbnNpZGVyZWQKKyAgIG5vbi1z dGF0aWMsIGJ1dCBtb3N0IGZvcm1lciB1c2VzIG9mIHRoaXMgbWFjcm8gbWVhbnQgaW1wbGljaXQg b2JqZWN0IG1lbWJlcgorICAgZnVuY3Rpb24uICBJbnN0ZWFkIG9mIHRoaXMgbWFjcm8sIHVzZSBE RUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1Agb3IKKyAgIERFQ0xfT0JKRUNUX01FTUJFUl9GVU5D VElPTl9QLiAgKi8KKyNkZWZpbmUgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AoTk9E RSkgZGlkX3lvdV9tZWFuX29iamVjdF9vcl9pb2JqCisKKy8qIE5vbnplcm8gZm9yIEZVTkNUSU9O X0RFQ0wgbWVhbnMgdGhhdCB0aGlzIGRlY2wgaXMgYW4gaW1wbGljaXQgb2JqZWN0CiAgICBtZW1i ZXIgZnVuY3Rpb24uICAqLwotI2RlZmluZSBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05f UChOT0RFKSBcCisjZGVmaW5lIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUChOT0RFKSBcCiAg IChUUkVFX0NPREUgKFRSRUVfVFlQRSAoTk9ERSkpID09IE1FVEhPRF9UWVBFKQogCisvKiBTaW1w bGUgbWVtYmVyIGFjY2Vzcywgb25seSB2YWxpZCBmb3IgRlVOQ1RJT05fREVDTCBub2Rlcy4gICov CisjZGVmaW5lIERFQ0xfRlVOQ1RJT05fWE9CSl9GTEFHKE5PREUpCVwKKyAgKExBTkdfREVDTF9G Tl9DSEVDSyAoTk9ERSktPnhvYmpfZnVuYykKKworLyogTm9uemVybyBpZiBOT0RFIGlzIGFuIHhv YmogbWVtYmVyIGZ1bmN0aW9uLAorICAgc2FmZWx5IGV2YWx1YXRlcyB0byBmYWxzZSBmb3IgYWxs IG5vbiBGVU5DVElPTl9ERUNMIG5vZGVzLiAgKi8KKyNkZWZpbmUgREVDTF9YT0JKX01FTUJFUl9G VU5DVElPTl9QKE5PREUpCQlcCisgIChUUkVFX0NPREUgKFNUUklQX1RFTVBMQVRFIChOT0RFKSkg PT0gRlVOQ1RJT05fREVDTAlcCisgICAmJiBERUNMX0ZVTkNUSU9OX1hPQkpfRkxBRyAoTk9ERSkg PT0gMSkKKworLyogTm9uemVybyBpZiBOT0RFIGlzIGEgbWVtYmVyIGZ1bmN0aW9uIHdpdGggYW4g b2JqZWN0IGFyZ3VtZW50LAorICAgaW4gb3RoZXIgd29yZHMsIGEgbm9uLXN0YXRpYyBtZW1iZXIg ZnVuY3Rpb24uICAqLworI2RlZmluZSBERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUChOT0RF KSBcCisgIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKE5PREUpIHx8IERFQ0xfWE9CSl9N RU1CRVJfRlVOQ1RJT05fUCAoTk9ERSkpCisKIC8qIE5vbnplcm8gZm9yIEZVTkNUSU9OX0RFQ0wg bWVhbnMgdGhhdCB0aGlzIGRlY2wgaXMgYSBtZW1iZXIgZnVuY3Rpb24KICAgIChzdGF0aWMgb3Ig bm9uLXN0YXRpYykuICAqLwogI2RlZmluZSBERUNMX0ZVTkNUSU9OX01FTUJFUl9QKE5PREUpIFwK LSAgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChOT0RFKSB8fCBERUNMX1NUQVRJ Q19GVU5DVElPTl9QIChOT0RFKSkKKyAgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9QIChO T0RFKSB8fCBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChOT0RFKSkgXAogCiAvKiBOb256ZXJvIGZv ciBGVU5DVElPTl9ERUNMIG1lYW5zIHRoYXQgdGhpcyBtZW1iZXIgZnVuY3Rpb24KICAgIGhhcyBg dGhpcycgYXMgY29uc3QgWCAqY29uc3QuICAqLwogI2RlZmluZSBERUNMX0NPTlNUX01FTUZVTkNf UChOT0RFKQkJCQkJIFwKLSAgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChOT0RF KQkJCQkgXAorICAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChOT0RFKQkJCQkgXAogICAg JiYgQ1BfVFlQRV9DT05TVF9QIChUUkVFX1RZUEUgKFRSRUVfVkFMVUUJCQkJIFwKIAkJCQkgIChU WVBFX0FSR19UWVBFUyAoVFJFRV9UWVBFIChOT0RFKSkpKSkpCiAKIC8qIE5vbnplcm8gZm9yIEZV TkNUSU9OX0RFQ0wgbWVhbnMgdGhhdCB0aGlzIG1lbWJlciBmdW5jdGlvbgogICAgaGFzIGB0aGlz JyBhcyB2b2xhdGlsZSBYICpjb25zdC4gICovCiAjZGVmaW5lIERFQ0xfVk9MQVRJTEVfTUVNRlVO Q19QKE5PREUpCQkJCQkgXAotICAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKE5P REUpCQkJCSBcCisgIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKE5PREUpCQkJCSBcCiAg ICAmJiBDUF9UWVBFX1ZPTEFUSUxFX1AgKFRSRUVfVFlQRSAoVFJFRV9WQUxVRQkJCQkgXAogCQkJ CSAgKFRZUEVfQVJHX1RZUEVTIChUUkVFX1RZUEUgKE5PREUpKSkpKSkKIAogLyogTm9uemVybyBm b3IgYSBERUNMIG1lYW5zIHRoYXQgdGhpcyBtZW1iZXIgaXMgYSBub24tc3RhdGljIG1lbWJlci4g ICovCiAjZGVmaW5lIERFQ0xfTk9OU1RBVElDX01FTUJFUl9QKE5PREUpCQlcCi0gIChERUNMX05P TlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoTk9ERSkJXAorICAoREVDTF9PQkpFQ1RfTUVNQkVS X0ZVTkNUSU9OX1AgKE5PREUpCVwKICAgIHx8IFRSRUVfQ09ERSAoTk9ERSkgPT0gRklFTERfREVD TCkKIAogLyogTm9uemVybyBmb3IgYSBGSUVMRF9ERUNMIG1lYW5zIHRoYXQgdGhpcyBtZW1iZXIg b2JqZWN0IHR5cGUKZGlmZiAtLWdpdCBhL2djYy9jcC9jeHgtcHJldHR5LXByaW50LmNjIGIvZ2Nj L2NwL2N4eC1wcmV0dHktcHJpbnQuY2MKaW5kZXggNmE4MjM1OGYzNzAuLjUzYzA3MjJkMmYzIDEw MDY0NAotLS0gYS9nY2MvY3AvY3h4LXByZXR0eS1wcmludC5jYworKysgYi9nY2MvY3AvY3h4LXBy ZXR0eS1wcmludC5jYwpAQCAtNTUzLDcgKzU1Myw3IEBAIGN4eF9wcmV0dHlfcHJpbnRlcjo6cG9z dGZpeF9leHByZXNzaW9uICh0cmVlIHQpCiAJICAgaW5zdGFudGlhdGlvbiB0aW1lLiAgKi8KIAlp ZiAoVFJFRV9DT0RFIChmdW4pICE9IEZVTkNUSU9OX0RFQ0wpCiAJICA7Ci0JZWxzZSBpZiAoREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZ1bikpCisJZWxzZSBpZiAoREVDTF9PQkpF Q1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGZ1bikpCiAJICB7CiAJICAgIHRyZWUgb2JqZWN0ID0gKGNv ZGUgPT0gQUdHUl9JTklUX0VYUFIKIAkJCSAgID8gKEFHR1JfSU5JVF9WSUFfQ1RPUl9QICh0KQpA QCAtMTM0Miw3ICsxMzQyLDcgQEAgY3h4X3ByZXR0eV9wcmludGVyOjpkZWNsYXJhdGlvbl9zcGVj aWZpZXJzICh0cmVlIHQpCiAJIGRvIG5vdCBoYXZlIGEgdHlwZS1zcGVjaWZpZXIgaW4gdGhlaXIg cmV0dXJuIHR5cGVzLiAgKi8KICAgICAgIGlmIChERUNMX0NPTlNUUlVDVE9SX1AgKHQpIHx8IERF Q0xfQ09OVl9GTl9QICh0KSkKIAlmdW5jdGlvbl9zcGVjaWZpZXIgKHQpOwotICAgICAgZWxzZSBp ZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKHQpKQorICAgICAgZWxzZSBpZiAo REVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QICh0KSkKIAlkZWNsYXJhdGlvbl9zcGVjaWZpZXJz IChUUkVFX1RZUEUgKFRSRUVfVFlQRSAodCkpKTsKICAgICAgIGVsc2UKICAgICAgICAgY19wcmV0 dHlfcHJpbnRlcjo6ZGVjbGFyYXRpb25fc3BlY2lmaWVycyAodCk7CkBAIC0xNzAwLDcgKzE3MDAs NyBAQCBjeHhfcHJldHR5X3ByaW50ZXI6OmRpcmVjdF9kZWNsYXJhdG9yICh0cmVlIHQpCiAgICAg ICBleHByZXNzaW9uICh0KTsKICAgICAgIHBwX2N4eF9wYXJhbWV0ZXJfZGVjbGFyYXRpb25fY2xh dXNlICh0aGlzLCB0KTsKIAotICAgICAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElP Tl9QICh0KSkKKyAgICAgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKHQpKQogCXsK IAkgIHBhZGRpbmcgPSBwcF9iZWZvcmU7CiAJICBwcF9jeHhfY3ZfcXVhbGlmaWVyX3NlcSAodGhp cywgcHBfY3h4X2ltcGxpY2l0X3BhcmFtZXRlcl90eXBlICh0KSk7CmRpZmYgLS1naXQgYS9nY2Mv Y3AvZGVjbC5jYyBiL2djYy9jcC9kZWNsLmNjCmluZGV4IDI3ZjE3ODA4OTM0Li5iNWIyM2I4NmI2 MiAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wuY2MKKysrIGIvZ2NjL2NwL2RlY2wuY2MKQEAgLTg1 MjYsNyArODUyNiw3IEBAIGNwX2ZpbmlzaF9kZWNsICh0cmVlIGRlY2wsIHRyZWUgaW5pdCwgYm9v bCBpbml0X2NvbnN0X2V4cHJfcCwKICAgICAgICYmIFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJ T05fREVDTAogICAgICAgLyogI3ByYWdtYSBvbXAgZGVjbGFyZSB2YXJpYW50IG9uIG1ldGhvZHMg aGFuZGxlZCBpbiBmaW5pc2hfc3RydWN0CiAJIGluc3RlYWQuICAqLwotICAgICAgJiYgKCFERUNM X05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKKyAgICAgICYmICghREVDTF9PQkpF Q1RfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpCiAJICB8fCBDT01QTEVURV9UWVBFX1AgKERFQ0xf Q09OVEVYVCAoZGVjbCkpKSkKICAgICBpZiAodHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAo Im9tcCBkZWNsYXJlIHZhcmlhbnQgYmFzZSIsCiAJCQkJICAgICAgREVDTF9BVFRSSUJVVEVTIChk ZWNsKSkpCkBAIC0xNTUxNiw3ICsxNTUxNiw3IEBAIGdyb2tfc3BlY2lhbF9tZW1iZXJfcHJvcGVy dGllcyAodHJlZSBkZWNsKQogICB0cmVlIGNsYXNzX3R5cGU7CiAKICAgaWYgKFRSRUVfQ09ERSAo ZGVjbCkgPT0gVVNJTkdfREVDTAotICAgICAgfHwgIURFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5D VElPTl9QIChkZWNsKSkKKyAgICAgIHx8ICFERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAo ZGVjbCkpCiAgICAgcmV0dXJuOwogCiAgIGNsYXNzX3R5cGUgPSBERUNMX0NPTlRFWFQgKGRlY2wp OwpAQCAtMTc3MDYsNyArMTc3MDYsNyBAQCBzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24gKHRyZWUg ZGVjbDEsIHRyZWUgYXR0cnMsIGludCBmbGFncykKICAgLyogU3RhcnQgdGhlIHN0YXRlbWVudC10 cmVlLCBzdGFydCB0aGUgdHJlZSBub3cuICAqLwogICBERUNMX1NBVkVEX1RSRUUgKGRlY2wxKSA9 IHB1c2hfc3RtdF9saXN0ICgpOwogCi0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJ T05fUCAoZGVjbDEpKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChkZWNsMSkp CiAgICAgewogICAgICAgLyogV2Uga25vdyB0aGF0IHRoaXMgd2FzIHNldCB1cCBieSBgZ3Jva2Ns YXNzZm4nLiAgV2UgZG8gbm90CiAJIHdhaXQgdW50aWwgYHN0b3JlX3Bhcm1fZGVjbHMnLCBzaW5j ZSBldmlsIHBhcnNlIGVycm9ycyBtYXkKQEAgLTE4MTc1LDcgKzE4MTc1LDcgQEAgb3V0ZXJfY3Vy bHlfYnJhY2VfYmxvY2sgKHRyZWUgZm5kZWNsKQogc3RhdGljIHZvaWQKIHJlY29yZF9rZXlfbWV0 aG9kX2RlZmluZWQgKHRyZWUgZm5kZWNsKQogewotICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVS X0ZVTkNUSU9OX1AgKGZuZGVjbCkKKyAgaWYgKERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElPTl9Q IChmbmRlY2wpCiAgICAgICAmJiBERUNMX1ZJUlRVQUxfUCAoZm5kZWNsKQogICAgICAgJiYgIXBy b2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCkKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvY3AvZGVjbDIu Y2MgYi9nY2MvY3AvZGVjbDIuY2MKaW5kZXggMDg1MGQzZjViY2UuLmM4ZWRkZjRjYzI2IDEwMDY0 NAotLS0gYS9nY2MvY3AvZGVjbDIuY2MKKysrIGIvZ2NjL2NwL2RlY2wyLmNjCkBAIC01NjI1LDcg KzU2MjUsNyBAQCBjcF9oYW5kbGVfZGVwcmVjYXRlZF9vcl91bmF2YWlsYWJsZSAodHJlZSBkZWNs LCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKICAgaWYgKGN4eF9kaWFsZWN0ID49IGN4eDExCiAg ICAgICAmJiBERUNMX1AgKGRlY2wpCiAgICAgICAmJiBERUNMX0FSVElGSUNJQUwgKGRlY2wpCi0g ICAgICAmJiBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKKyAgICAgICYm IERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkKICAgICAgICYmIGNvcHlfZm5fcCAo ZGVjbCkpCiAgICAgewogICAgICAgLyogRG9uJ3Qgd2FybiBpZiB0aGUgZmxhZyB3YXMgZGlzYWJs ZWQgYXJvdW5kIHRoZSBjbGFzcyBkZWZpbml0aW9uCmRpZmYgLS1naXQgYS9nY2MvY3AvaW5pdC5j YyBiL2djYy9jcC9pbml0LmNjCmluZGV4IDY0NDRmMGE4NTE4Li5mYjVmNDA0ODA1YiAxMDA2NDQK LS0tIGEvZ2NjL2NwL2luaXQuY2MKKysrIGIvZ2NjL2NwL2luaXQuY2MKQEAgLTg2Niw3ICs4NjYs NyBAQCBmaW5kX3VuaW5pdF9maWVsZHNfciAodHJlZSAqdHAsIGludCAqd2Fsa19zdWJ0cmVlcywg dm9pZCAqZGF0YSkKICAgZWxzZSBpZiAoY29kZSA9PSBDQUxMX0VYUFIpCiAgICAgewogICAgICAg dHJlZSBmbiA9IGdldF9jYWxsZWVfZm5kZWNsIChpbml0KTsKLSAgICAgIGlmIChmbiAmJiBERUNM X05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm4pKQorICAgICAgaWYgKGZuICYmIERFQ0xf SU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZm4pKQogCXsKIAkgIHRyZWUgb3AgPSBDQUxMX0VYUFJf QVJHIChpbml0LCAwKTsKIAkgIGlmIChUUkVFX0NPREUgKG9wKSA9PSBBRERSX0VYUFIpCkBAIC0y NDc3LDcgKzI0NzcsNyBAQCBidWlsZF9vZmZzZXRfcmVmICh0cmVlIHR5cGUsIHRyZWUgbWVtYmVy LCBib29sIGFkZHJlc3NfcCwKIAogCSAgIC0tIGluIGEgbWVtLWluaXRpYWxpemVyIGZvciBhIGNv bnN0cnVjdG9yIGZvciB0aGF0IGNsYXNzIG9yIGZvcgogCSAgIGEgY2xhc3MgZGVyaXZlZCBmcm9t IHRoYXQgY2xhc3MgKF9jbGFzcy5iYXNlLmluaXRfKS4gICovCi0gICAgICBpZiAoREVDTF9OT05T VEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKG1lbWJlcikpCisgICAgICBpZiAoREVDTF9PQkpFQ1Rf TUVNQkVSX0ZVTkNUSU9OX1AgKG1lbWJlcikpCiAJewogCSAgLyogQnVpbGQgYSByZXByZXNlbnRh dGlvbiBvZiB0aGUgcXVhbGlmaWVkIG5hbWUgc3VpdGFibGUKIAkgICAgIGZvciB1c2UgYXMgdGhl IG9wZXJhbmQgdG8gIiYiIC0tIGV2ZW4gdGhvdWdoIHRoZSAiJiIgaXMKZGlmZiAtLWdpdCBhL2dj Yy9jcC9sYW1iZGEuY2MgYi9nY2MvY3AvbGFtYmRhLmNjCmluZGV4IDU5OTBhNmRlNzM2Li5mYzZh MDcwOGI2NiAxMDA2NDQKLS0tIGEvZ2NjL2NwL2xhbWJkYS5jYworKysgYi9nY2MvY3AvbGFtYmRh LmNjCkBAIC04MzQsOCArODM0LDkgQEAgbGFtYmRhX2V4cHJfdGhpc19jYXB0dXJlICh0cmVlIGxh bWJkYSwgaW50IGFkZF9jYXB0dXJlX3ApCiAKIAkgIGlmICghTEFNQkRBX0ZVTkNUSU9OX1AgKGNv bnRhaW5pbmdfZnVuY3Rpb24pKQogCSAgICB7Ci0JICAgICAgLyogV2UgZm91bmQgYSBub24tbGFt YmRhIGZ1bmN0aW9uLiAgKi8KLQkgICAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNU SU9OX1AgKGNvbnRhaW5pbmdfZnVuY3Rpb24pKQorCSAgICAgIC8qIFdlIGZvdW5kIGEgbm9uLWxh bWJkYSBmdW5jdGlvbi4KKwkJIFRoZXJlIGlzIG5vIHRoaXMgcG9pbnRlciBpbiB4b2JqIG1lbWJl ciBmdW5jdGlvbnMuICAqLworCSAgICAgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1Ag KGNvbnRhaW5pbmdfZnVuY3Rpb24pKQogCQkvKiBGaXJzdCBwYXJhbWV0ZXIgaXMgJ3RoaXMnLiAg Ki8KIAkJaW5pdCA9IERFQ0xfQVJHVU1FTlRTIChjb250YWluaW5nX2Z1bmN0aW9uKTsKIAkgICAg ICBicmVhazsKQEAgLTk2OSw3ICs5NzAsNyBAQCBtYXliZV9nZW5lcmljX3RoaXNfY2FwdHVyZSAo dHJlZSBvYmplY3QsIHRyZWUgZm5zKQogCWZvciAobGtwX2l0ZXJhdG9yIGl0ZXIgKGZucyk7IGl0 ZXI7ICsraXRlcikKIAkgIGlmICgoKCFpZF9leHByICYmIFRSRUVfQ09ERSAoKml0ZXIpICE9IFVT SU5HX0RFQ0wpCiAJICAgICAgIHx8IFRSRUVfQ09ERSAoKml0ZXIpID09IFRFTVBMQVRFX0RFQ0wp Ci0JICAgICAgJiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKCppdGVyKSkKKwkg ICAgICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKCppdGVyKSkKIAkgICAgewogCSAg ICAgIC8qIEZvdW5kIGEgbm9uLXN0YXRpYyBtZW1iZXIuICBDYXB0dXJlIHRoaXMuICAqLwogCSAg ICAgIGxhbWJkYV9leHByX3RoaXNfY2FwdHVyZSAobGFtLCAvKm1heWJlKi8tMSk7CkBAIC0xMDEy LDcgKzEwMTMsNyBAQCBub25sYW1iZGFfbWV0aG9kX2Jhc2V0eXBlICh2b2lkKQogCiAgICAgICB0 cmVlIGZuID0gVFlQRV9DT05URVhUICh0eXBlKTsKICAgICAgIGlmICghZm4gfHwgVFJFRV9DT0RF IChmbikgIT0gRlVOQ1RJT05fREVDTAotCSAgfHwgIURFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5D VElPTl9QIChmbikpCisJICB8fCAhREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmbikpCiAJ LyogTm8gZW5jbG9zaW5nIG5vbi1sYW1iZGEgbWV0aG9kLiAgKi8KIAlyZXR1cm4gTlVMTF9UUkVF OwogICAgICAgaWYgKCFMQU1CREFfRlVOQ1RJT05fUCAoZm4pKQpkaWZmIC0tZ2l0IGEvZ2NjL2Nw L21hbmdsZS5jYyBiL2djYy9jcC9tYW5nbGUuY2MKaW5kZXggMzY1ZDQ3MGY0NmUuLjk5ZmFiYmYz NTg3IDEwMDY0NAotLS0gYS9nY2MvY3AvbWFuZ2xlLmNjCisrKyBiL2djYy9jcC9tYW5nbGUuY2MK QEAgLTEyMzEsOSArMTIzMSw5IEBAIHdyaXRlX25lc3RlZF9uYW1lIChjb25zdCB0cmVlIGRlY2wp CiAKICAgd3JpdGVfY2hhciAoJ04nKTsKIAotICAvKiBXcml0ZSBDVi1xdWFsaWZpZXJzLCBpZiB0 aGlzIGlzIGEgbWVtYmVyIGZ1bmN0aW9uLiAgKi8KKyAgLyogV3JpdGUgQ1YtcXVhbGlmaWVycywg aWYgdGhpcyBpcyBhbiBpb2JqIG1lbWJlciBmdW5jdGlvbi4gICovCiAgIGlmIChUUkVFX0NPREUg KGRlY2wpID09IEZVTkNUSU9OX0RFQ0wKLSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9G VU5DVElPTl9QIChkZWNsKSkKKyAgICAgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAo ZGVjbCkpCiAgICAgewogICAgICAgaWYgKERFQ0xfVk9MQVRJTEVfTUVNRlVOQ19QIChkZWNsKSkK IAl3cml0ZV9jaGFyICgnVicpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL21ldGhvZC5jYyBiL2djYy9j cC9tZXRob2QuY2MKaW5kZXggZjY0NTA2NjA3N2YuLmQ2YWQ1YWE0MWQ2IDEwMDY0NAotLS0gYS9n Y2MvY3AvbWV0aG9kLmNjCisrKyBiL2djYy9jcC9tZXRob2QuY2MKQEAgLTExODcsNyArMTE4Nyw3 IEBAIGVhcmx5X2NoZWNrX2RlZmF1bHRlZF9jb21wYXJpc29uICh0cmVlIGZuKQogCW9rID0gZmFs c2U7CiAgICAgfQogCi0gIGJvb2wgbWVtID0gREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9O X1AgKGZuKTsKKyAgYm9vbCBtZW0gPSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKTsK ICAgaWYgKG1lbSAmJiB0eXBlX21lbWZuX3F1YWxzIChUUkVFX1RZUEUgKGZuKSkgIT0gVFlQRV9R VUFMX0NPTlNUKQogICAgIHsKICAgICAgIGVycm9yX2F0IChsb2MsICJkZWZhdWx0ZWQgJXFEIG11 c3QgYmUgJTxjb25zdCU+IiwgZm4pOwpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgZWFybHlfY2hlY2tf ZGVmYXVsdGVkX2NvbXBhcmlzb24gKHRyZWUgZm4pCiAKICAgaWYgKHNhd19iYWQgfHwgKHNhd19i eXZhbCAmJiBzYXdfYnlyZWYpKQogICAgIHsKLSAgICAgIGlmIChERUNMX05PTlNUQVRJQ19NRU1C RVJfRlVOQ1RJT05fUCAoZm4pKQorICAgICAgaWYgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05f UCAoZm4pKQogCWVycm9yX2F0IChsb2MsICJkZWZhdWx0ZWQgbWVtYmVyICVxRCBtdXN0IGhhdmUg cGFyYW1ldGVyIHR5cGUgIgogCQkgICIlPGNvbnN0ICVUJiU+IiwgZm4sIGN0eCk7CiAgICAgICBl bHNlIGlmIChzYXdfYmFkKQpAQCAtMzYwNiw3ICszNjA2LDcgQEAgbGF6aWx5X2RlY2xhcmVfZm4g KHNwZWNpYWxfZnVuY3Rpb25fa2luZCBzZmssIHRyZWUgdHlwZSkKIHRyZWUKIHNraXBfYXJ0aWZp Y2lhbF9wYXJtc19mb3IgKGNvbnN0X3RyZWUgZm4sIHRyZWUgbGlzdCkKIHsKLSAgaWYgKERFQ0xf Tk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisgIGlmIChERUNMX0lPQkpfTUVNQkVS X0ZVTkNUSU9OX1AgKGZuKSkKICAgICBsaXN0ID0gVFJFRV9DSEFJTiAobGlzdCk7CiAgIGVsc2UK ICAgICByZXR1cm4gbGlzdDsKQEAgLTM2MjYsNyArMzYyNiw3IEBAIG51bV9hcnRpZmljaWFsX3Bh cm1zX2ZvciAoY29uc3RfdHJlZSBmbikKIHsKICAgaW50IGNvdW50ID0gMDsKIAotICBpZiAoREVD TF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkKKyAgaWYgKERFQ0xfSU9CSl9NRU1C RVJfRlVOQ1RJT05fUCAoZm4pKQogICAgIGNvdW50Kys7CiAgIGVsc2UKICAgICByZXR1cm4gMDsK ZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IDBi ZDQ2NDE0ZGE5Li4yZDBjMGEzZWFhYiAxMDA2NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysg Yi9nY2MvY3AvbW9kdWxlLmNjCkBAIC01NjgzLDggKzU2ODMsOSBAQCB0cmVlc19vdXQ6Omxhbmdf ZGVjbF9ib29scyAodHJlZSB0KQogICAgICAgV0IgKGxhbmctPnUuZm4uaGFzX2RlcGVuZGVudF9l eHBsaWNpdF9zcGVjX3ApOwogICAgICAgV0IgKGxhbmctPnUuZm4uaW1tZWRpYXRlX2ZuX3ApOwog ICAgICAgV0IgKGxhbmctPnUuZm4ubWF5YmVfZGVsZXRlZCk7Ci0gICAgICBXQiAobGFuZy0+dS5m bi5lc2NhbGF0ZWRfcCk7CiAgICAgICAvKiBXZSBkbyBub3Qgc3RyZWFtIGxhbmctPnUuZm4uaW1w bGljaXRfY29uc3RleHByLiAgKi8KKyAgICAgIFdCIChsYW5nLT51LmZuLmVzY2FsYXRlZF9wKTsK KyAgICAgIFdCIChsYW5nLT51LmZuLnhvYmpfZnVuYyk7CiAgICAgICBnb3RvIGxkc19taW47CiAK ICAgICBjYXNlIGxkc19kZWNvbXA6ICAvKiBsYW5nX2RlY2xfZGVjb21wLiAgKi8KQEAgLTU3NTMs OCArNTc1NCw5IEBAIHRyZWVzX2luOjpsYW5nX2RlY2xfYm9vbHMgKHRyZWUgdCkKICAgICAgIFJC IChsYW5nLT51LmZuLmhhc19kZXBlbmRlbnRfZXhwbGljaXRfc3BlY19wKTsKICAgICAgIFJCIChs YW5nLT51LmZuLmltbWVkaWF0ZV9mbl9wKTsKICAgICAgIFJCIChsYW5nLT51LmZuLm1heWJlX2Rl bGV0ZWQpOwotICAgICAgUkIgKGxhbmctPnUuZm4uZXNjYWxhdGVkX3ApOwogICAgICAgLyogV2Ug ZG8gbm90IHN0cmVhbSBsYW5nLT51LmZuLmltcGxpY2l0X2NvbnN0ZXhwci4gICovCisgICAgICBS QiAobGFuZy0+dS5mbi5lc2NhbGF0ZWRfcCk7CisgICAgICBSQiAobGFuZy0+dS5mbi54b2JqX2Z1 bmMpOwogICAgICAgZ290byBsZHNfbWluOwogCiAgICAgY2FzZSBsZHNfZGVjb21wOiAgLyogbGFu Z19kZWNsX2RlY29tcC4gICovCmRpZmYgLS1naXQgYS9nY2MvY3AvcHQuY2MgYi9nY2MvY3AvcHQu Y2MKaW5kZXggMjgxNzY1N2E4YmIuLjcyZWIxMjRkMTE2IDEwMDY0NAotLS0gYS9nY2MvY3AvcHQu Y2MKKysrIGIvZ2NjL2NwL3B0LmNjCkBAIC0xNDQ2LDkgKzE0NDYsOSBAQCBpc19zcGVjaWFsaXph dGlvbl9vZl9mcmllbmQgKHRyZWUgZGVjbCwgdHJlZSBmcmllbmRfZGVjbCkKIAkgICAgIGB0aGlz JyBwYXJhbWV0ZXIuICAqLwogCSAgZnJpZW5kX2FyZ3NfdHlwZSA9IFRZUEVfQVJHX1RZUEVTIChm cmllbmRfdHlwZSk7CiAJICBkZWNsX2FyZ3NfdHlwZSA9IFRZUEVfQVJHX1RZUEVTIChkZWNsX3R5 cGUpOwotCSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmcmllbmRfZGVj bCkpCisJICBpZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChmcmllbmRfZGVjbCkpCiAJ ICAgIGZyaWVuZF9hcmdzX3R5cGUgPSBUUkVFX0NIQUlOIChmcmllbmRfYXJnc190eXBlKTsKLQkg IGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCisJICBpZiAoREVD TF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKIAkgICAgZGVjbF9hcmdzX3R5cGUgPSBU UkVFX0NIQUlOIChkZWNsX2FyZ3NfdHlwZSk7CiAKIAkgIHJldHVybiBjb21wcGFybXMgKGRlY2xf YXJnc190eXBlLCBmcmllbmRfYXJnc190eXBlKTsKQEAgLTIyMzYsNyArMjIzNiw3IEBAIGRldGVy bWluZV9zcGVjaWFsaXphdGlvbiAodHJlZSB0ZW1wbGF0ZV9pZCwKIAkgICAgIHRoYXQgdGhlIGNv bnN0IHF1YWxpZmljYXRpb24gaXMgdGhlIHNhbWUuICBTaW5jZQogCSAgICAgZ2V0X2JpbmRpbmdz IGRvZXMgbm90IHRyeSB0byBtZXJnZSB0aGUgInRoaXMiIHBhcmFtZXRlciwKIAkgICAgIHdlIG11 c3QgZG8gdGhlIGNvbXBhcmlzb24gZXhwbGljaXRseS4gICovCi0JICBpZiAoREVDTF9OT05TVEFU SUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKSkKKwkgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNU SU9OX1AgKGZuKSkKIAkgICAgewogCSAgICAgIGlmICghc2FtZV90eXBlX3AgKFRSRUVfVkFMVUUg KGZuX2FyZ190eXBlcyksCiAJCQkJVFJFRV9WQUxVRSAoZGVjbF9hcmdfdHlwZXMpKSkKQEAgLTIz NTksMTQgKzIzNTksMTQgQEAgZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uICh0cmVlIHRlbXBsYXRl X2lkLAogCSAgLyogQWRqdXN0IHRoZSB0eXBlIG9mIERFQ0wgaW4gY2FzZSBGTiBpcyBhIHN0YXRp YyBtZW1iZXIuICAqLwogCSAgZGVjbF9hcmdfdHlwZXMgPSBUWVBFX0FSR19UWVBFUyAoVFJFRV9U WVBFIChkZWNsKSk7CiAJICBpZiAoREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4pCi0JICAgICAg JiYgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorCSAgICAgICYmIERF Q0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCiAJICAgIGRlY2xfYXJnX3R5cGVzID0g VFJFRV9DSEFJTiAoZGVjbF9hcmdfdHlwZXMpOwogCiAJICBpZiAoIWNvbXBwYXJtcyAoVFlQRV9B UkdfVFlQRVMgKFRSRUVfVFlQRSAoZm4pKSwKIAkJCSBkZWNsX2FyZ190eXBlcykpCiAgICAgICAg ICAgICBjb250aW51ZTsKIAotCSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9Q IChmbikKKwkgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQogCSAgICAgICYm ICh0eXBlX21lbWZuX3JxdWFsIChUUkVFX1RZUEUgKGRlY2wpKQogCQkgICE9IHR5cGVfbWVtZm5f cnF1YWwgKFRSRUVfVFlQRSAoZm4pKSkpCiAJICAgIGNvbnRpbnVlOwpAQCAtMjU1Miw3ICsyNTUy LDcgQEAgY29weV9kZWZhdWx0X2FyZ3NfdG9fZXhwbGljaXRfc3BlYyAodHJlZSBkZWNsKQogICBv bGRfdHlwZSA9IFRSRUVfVFlQRSAoZGVjbCk7CiAgIHNwZWNfdHlwZXMgPSBUWVBFX0FSR19UWVBF UyAob2xkX3R5cGUpOwogCi0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAo ZGVjbCkpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQogICAgIHsK ICAgICAgIC8qIFJlbW92ZSB0aGUgdGhpcyBwb2ludGVyLCBidXQgcmVtZW1iZXIgdGhlIG9iamVj dCdzIHR5cGUgZm9yCiAJIENWIHF1YWxzLiAgKi8KQEAgLTMxMzcsNyArMzEzNyw3IEBAIGNoZWNr X2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uICh0cmVlIGRlY2xhcmF0b3IsCiAJICAgICBtYWtlIERF Q0wgYSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIGFzIHdlbGwuICAqLwogCSAgaWYgKERFQ0xfRlVO Q1RJT05fVEVNUExBVEVfUCAodG1wbCkKIAkgICAgICAmJiBERUNMX1NUQVRJQ19GVU5DVElPTl9Q ICh0bXBsKQotCSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNs KSkKKwkgICAgICAmJiBERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQogCSAgICBy ZXZlcnRfc3RhdGljX21lbWJlcl9mbiAoZGVjbCk7CiAKIAkgIC8qIElmIHRoaXMgaXMgYSBzcGVj aWFsaXphdGlvbiBvZiBhIG1lbWJlciB0ZW1wbGF0ZSBvZiBhCkBAIC0xMTgxNCw3ICsxMTgxNCw3 IEBAIHRzdWJzdF9jb250cmFjdF9hdHRyaWJ1dGUgKHRyZWUgZGVjbCwgdHJlZSB0LCB0cmVlIGFy Z3MsCiAgIC8qIEZvciBtZW1iZXIgZnVuY3Rpb25zLCBtYWtlIHRoaXMgYXZhaWxhYmxlIGZvciBz ZW1hbnRpYyBhbmFseXNpcy4gICovCiAgIHRyZWUgc2F2ZV9jY3AgPSBjdXJyZW50X2NsYXNzX3B0 cjsKICAgdHJlZSBzYXZlX2NjciA9IGN1cnJlbnRfY2xhc3NfcmVmOwotICBpZiAoREVDTF9OT05T VEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpKQorICBpZiAoREVDTF9JT0JKX01FTUJFUl9G VU5DVElPTl9QIChkZWNsKSkKICAgICB7CiAgICAgICB0cmVlIGFyZ190eXBlcyA9IFRZUEVfQVJH X1RZUEVTIChUUkVFX1RZUEUgKGRlY2wpKTsKICAgICAgIHRyZWUgdGhpc190eXBlID0gVFJFRV9U WVBFIChUUkVFX1ZBTFVFIChhcmdfdHlwZXMpKTsKQEAgLTIyMDg3LDcgKzIyMDg3LDcgQEAgY2hl Y2tfbm9uX2RlZHVjaWJsZV9jb252ZXJzaW9ucyAodHJlZSBwYXJtcywgY29uc3QgdHJlZSAqYXJn cywgdW5zaWduZWQgbmFyZ3MsCiB7CiAgIC8qIE5vbi1jb25zdHJ1Y3RvciBtZXRob2RzIG5lZWQg dG8gbGVhdmUgYSBjb252ZXJzaW9uIGZvciAndGhpcycsIHdoaWNoCiAgICAgIGlzbid0IGluY2x1 ZGVkIGluIG5hcmdzIGhlcmUuICAqLwotICB1bnNpZ25lZCBvZmZzZXQgPSAoREVDTF9OT05TVEFU SUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQorICB1bnNpZ25lZCBvZmZzZXQgPSAoREVDTF9JT0JK X01FTUJFUl9GVU5DVElPTl9QIChmbikKIAkJICAgICAmJiAhREVDTF9DT05TVFJVQ1RPUl9QIChm bikpOwogCiAgIGZvciAodW5zaWduZWQgaWEgPSAwOwpAQCAtMjUzMTQsMTYgKzI1MzE0LDE2IEBA IG1vcmVfc3BlY2lhbGl6ZWRfZm4gKHRyZWUgcGF0MSwgdHJlZSBwYXQyLCBpbnQgbGVuKQogCSBJ IHRoaW5rIHRoaW5rIHRoZSBvbGQgRysrIGJlaGF2aW9yIG9mIGp1c3Qgc2tpcHBpbmcgdGhlIG9i amVjdAogCSBwYXJhbWV0ZXIgd2hlbiBjb21wYXJpbmcgdG8gYSBzdGF0aWMgbWVtYmVyIGZ1bmN0 aW9uIHdhcyBiZXR0ZXIsIHNvCiAJIGxldCdzIHN0aWNrIHdpdGggdGhhdCBmb3Igbm93LiAgVGhp cyBpcyBDV0cyODM0LiAgLS1qYXNvbiAyMDIzLTEyICovCi0gICAgICBpZiAoREVDTF9OT05TVEFU SUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wxKSkgLyogRklYTUUgb3IgZXhwbGljaXQgKi8KKyAg ICAgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbDEpKQogCXsKIAkgIGxl bi0tOyAvKiBMRU4gaXMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBhcmd1bWVudHMgZm9yIERF Q0wxICovCiAJICBhcmdzMSA9IFRSRUVfQ0hBSU4gKGFyZ3MxKTsKIAl9Ci0gICAgICBlbHNlIGlm IChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbDIpKSAvKiBGSVhNRSBvciBl eHBsaWNpdCAqLworICAgICAgZWxzZSBpZiAoREVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNUSU9OX1Ag KGRlY2wyKSkKIAlhcmdzMiA9IFRSRUVfQ0hBSU4gKGFyZ3MyKTsKICAgICB9Ci0gIGVsc2UgaWYg KERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsMSkgLyogRklYTUUgaW1wbGlj aXQgb25seSAqLwotCSAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNs MikpCisgIGVsc2UgaWYgKERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbDEpCisJICAg JiYgREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChkZWNsMikpCiAgICAgewogICAgICAgLyog Tm90ZSBEUjI0NDUgYWxzbyAoSU1PIHdyb25nbHkpIHJlbW92ZWQgdGhlICJvbmx5IG9uZSIgYWJv dmUsIHdoaWNoCiAJIHdvdWxkIGJyZWFrIGUuZy4gIGNwcDF5L2xhbWJkYS1nZW5lcmljLXZhcmlh ZGljNS5DLiAgKi8KQEAgLTI1MzMxLDEyICsyNTMzMSwxMiBAQCBtb3JlX3NwZWNpYWxpemVkX2Zu ICh0cmVlIHBhdDEsIHRyZWUgcGF0MiwgaW50IGxlbikKICAgICAgIGFyZ3MxID0gVFJFRV9DSEFJ TiAoYXJnczEpOwogICAgICAgYXJnczIgPSBUUkVFX0NIQUlOIChhcmdzMik7CiAgICAgfQotICBl bHNlIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbDEpIC8qIEZJWE1F IGltcGxpY2l0IG9ubHkgKi8KLQkgICB8fCBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05f UCAoZGVjbDIpKQorICBlbHNlIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wx KQorCSAgIHx8IERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbDIpKQogICAgIHsKICAg ICAgIC8qIFRoZSBvdGhlciBpcyBhIG5vbi1tZW1iZXIgb3IgZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbjsKIAkgcmV3cml0ZSB0aGUgaW1wbGljaXQgb2JqZWN0IHBhcmFtZXRlciB0byBh IHJlZmVyZW5jZS4gICovCi0gICAgICB0cmVlIG5zID0gREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZV TkNUSU9OX1AgKGRlY2wyKSA/IGRlY2wyIDogZGVjbDE7CisgICAgICB0cmVlIG5zID0gREVDTF9J T0JKX01FTUJFUl9GVU5DVElPTl9QIChkZWNsMikgPyBkZWNsMiA6IGRlY2wxOwogICAgICAgdHJl ZSAmbnNhcmdzID0gbnMgPT0gZGVjbDIgPyBhcmdzMiA6IGFyZ3MxOwogICAgICAgdHJlZSBvYnR5 cGUgPSBUUkVFX1RZUEUgKFRSRUVfVkFMVUUgKG5zYXJncykpOwogCkBAIC0yNjY2OSw3ICsyNjY2 OSw3IEBAIG1heWJlX2luc3RhbnRpYXRlX25vZXhjZXB0ICh0cmVlIGZuLCB0c3Vic3RfZmxhZ3Nf dCBjb21wbGFpbikKIAkgIHB1c2hfZGVmZXJyaW5nX2FjY2Vzc19jaGVja3MgKGRrX25vX2RlZmVy cmVkKTsKIAkgIGlucHV0X2xvY2F0aW9uID0gREVDTF9TT1VSQ0VfTE9DQVRJT04gKGZuKTsKIAot CSAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikKKwkgIGlmIChERUNM X0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQogCSAgICAgICYmICFERUNMX0xPQ0FMX0RFQ0xf UCAoZm4pKQogCSAgICB7CiAJICAgICAgLyogSWYgbmVlZGVkLCBzZXQgY3VycmVudF9jbGFzc19w dHIgZm9yIHRoZSBiZW5lZml0IG9mCkBAIC0yNjczMiw3ICsyNjczMiw3IEBAIHJlZ2lzdGVyX3Bh cmFtZXRlcl9zcGVjaWFsaXphdGlvbnMgKHRyZWUgcGF0dGVybiwgdHJlZSBpbnN0KQogewogICB0 cmVlIHRtcGxfcGFybSA9IERFQ0xfQVJHVU1FTlRTIChwYXR0ZXJuKTsKICAgdHJlZSBzcGVjX3Bh cm0gPSBERUNMX0FSR1VNRU5UUyAoaW5zdCk7Ci0gIGlmIChERUNMX05PTlNUQVRJQ19NRU1CRVJf RlVOQ1RJT05fUCAoaW5zdCkpCisgIGlmIChERUNMX0lPQkpfTUVNQkVSX0ZVTkNUSU9OX1AgKGlu c3QpKQogICAgIHsKICAgICAgIHJlZ2lzdGVyX2xvY2FsX3NwZWNpYWxpemF0aW9uIChzcGVjX3Bh cm0sIHRtcGxfcGFybSk7CiAgICAgICBzcGVjX3Bhcm0gPSBza2lwX2FydGlmaWNpYWxfcGFybXNf Zm9yIChpbnN0LCBzcGVjX3Bhcm0pOwpAQCAtMjgwNzUsNyArMjgwNzUsNyBAQCB2YWx1ZV9kZXBl bmRlbnRfZXhwcmVzc2lvbl9wICh0cmVlIGV4cHJlc3Npb24pCiAJICAgICAgIGNhdXNlIHRoZSBj YWxsIHRvIGJlIGNvbnNpZGVyZWQgdmFsdWUtZGVwZW5kZW50LiAgV2UgYWxzbwogCSAgICAgICBs b29rIHRocm91Z2ggaXQgaW4gcG90ZW50aWFsX2NvbnN0YW50X2V4cHJlc3Npb24uICAqLwogCSAg ICBpZiAoaSA9PSAwICYmIGZuICYmIERFQ0xfREVDTEFSRURfQ09OU1RFWFBSX1AgKGZuKQotCQkm JiBERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05fUCAoZm4pCisJCSYmIERFQ0xfSU9CSl9N RU1CRVJfRlVOQ1RJT05fUCAoZm4pCiAJCSYmIFRSRUVfQ09ERSAob3ApID09IEFERFJfRVhQUikK IAkgICAgICBvcCA9IFRSRUVfT1BFUkFORCAob3AsIDApOwogCSAgICBpZiAodmFsdWVfZGVwZW5k ZW50X2V4cHJlc3Npb25fcCAob3ApKQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlYXJjaC5jYyBiL2dj Yy9jcC9zZWFyY2guY2MKaW5kZXggYWM3OWI2MjViNmUuLjM0NzNkNjZiODhjIDEwMDY0NAotLS0g YS9nY2MvY3Avc2VhcmNoLmNjCisrKyBiL2djYy9jcC9zZWFyY2guY2MKQEAgLTEwMDgsNyArMTAw OCw3IEBAIHNoYXJlZF9tZW1iZXJfcCAodHJlZSB0KQogCSAgICAvKiBDb25zZXJ2YXRpdmVseSBh c3N1bWUgYSBkZXBlbmRlbnQgdXNpbmctZGVjbGFyYXRpb24KIAkgICAgICAgbWlnaHQgcmVzb2x2 ZSB0byBhIG5vbi1zdGF0aWMgbWVtYmVyLiAgKi8KIAkgICAgcmV0dXJuIGZhbHNlOwotCSAgaWYg KERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChkZWNsKSkKKwkgIGlmIChERUNMX09C SkVDVF9NRU1CRVJfRlVOQ1RJT05fUCAoZGVjbCkpCiAJICAgIHJldHVybiBmYWxzZTsKIAl9CiAg ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNjQsNyArMTI2NCw3IEBAIGxvb2t1cF9tZW1iZXIgKHRy ZWUgeGJhc2V0eXBlLCB0cmVlIG5hbWUsIGludCBwcm90ZWN0LCBib29sIHdhbnRfdHlwZSwKICAg ICAgIGRlY2wgPSBzdHJpcF91c2luZ19kZWNsIChkZWNsKTsKICAgICAgIC8qIEEgZGVwZW5kZW50 IFVTSU5HX0RFQ0wgd2lsbCBiZSBjaGVja2VkIGFmdGVyIHRzdWJzdGluZy4gICovCiAgICAgICBp ZiAoVFJFRV9DT0RFIChkZWNsKSAhPSBVU0lOR19ERUNMCi0JICAmJiAhREVDTF9OT05TVEFUSUNf TUVNQkVSX0ZVTkNUSU9OX1AgKGRlY2wpCisJICAmJiAhREVDTF9JT0JKX01FTUJFUl9GVU5DVElP Tl9QIChkZWNsKQogCSAgJiYgIXBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrIChiYXNldHlw ZV9wYXRoLCBkZWNsLCBkZWNsLAogCQkJCQkgICAgIGNvbXBsYWluLCBhZmkpKQogCXJldHVybiBl cnJvcl9tYXJrX25vZGU7CkBAIC0xNzM3LDYgKzE3MzcsNyBAQCBmaWVsZF9hY2Nlc3NfcCAodHJl ZSBjb21wb25lbnRfcmVmLCB0cmVlIGZpZWxkX2RlY2wsIHRyZWUgZmllbGRfdHlwZSkKICAgICBy ZXR1cm4gZmFsc2U7CiAKICAgdHJlZSBwdHIgPSBTVFJJUF9OT1BTIChUUkVFX09QRVJBTkQgKGlu ZGlyZWN0X3JlZiwgMCkpOworICAvKiA/Pz8gaXNfb2JqZWN0X3BhcmFtZXRlcj8gICovCiAgIGlm ICghaXNfdGhpc19wYXJhbWV0ZXIgKHB0cikpCiAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1n aXQgYS9nY2MvY3Avc2VtYW50aWNzLmNjIGIvZ2NjL2NwL3NlbWFudGljcy5jYwppbmRleCA2NDgz OWIxYWM4Ny4uM2JjNDI2ZmExMzAgMTAwNjQ0Ci0tLSBhL2djYy9jcC9zZW1hbnRpY3MuY2MKKysr IGIvZ2NjL2NwL3NlbWFudGljcy5jYwpAQCAtNjY0NSw3ICs2NjQ1LDcgQEAgZmluaXNoX29tcF9k ZWNsYXJlX3NpbWRfbWV0aG9kcyAodHJlZSB0KQogICBmb3IgKHRyZWUgeCA9IFRZUEVfRklFTERT ICh0KTsgeDsgeCA9IERFQ0xfQ0hBSU4gKHgpKQogICAgIHsKICAgICAgIGlmIChUUkVFX0NPREUg KHgpID09IFVTSU5HX0RFQ0wKLQkgIHx8ICFERUNMX05PTlNUQVRJQ19NRU1CRVJfRlVOQ1RJT05f UCAoeCkpCisJICB8fCAhREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QICh4KSkKIAljb250aW51 ZTsKICAgICAgIHRyZWUgb2RzID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHNpbWQi LCBERUNMX0FUVFJJQlVURVMgKHgpKTsKICAgICAgIGlmICghb2RzIHx8ICFUUkVFX1ZBTFVFIChv ZHMpKQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3RyZWUuY2MgYi9nY2MvY3AvdHJlZS5jYwppbmRleCBk MTdiOWIzNDg5MS4uODA1OTZlM2Q5NzYgMTAwNjQ0Ci0tLSBhL2djYy9jcC90cmVlLmNjCisrKyBi L2djYy9jcC90cmVlLmNjCkBAIC0yOTgsNyArMjk4LDcgQEAgbHZhbHVlX2tpbmQgKGNvbnN0X3Ry ZWUgcmVmKQogICAgIGNhc2UgRlVOQ1RJT05fREVDTDoKICAgICAgIC8qIEFsbCBmdW5jdGlvbnMg KGV4Y2VwdCBub24tc3RhdGljLW1lbWJlciBmdW5jdGlvbnMpIGFyZQogCSBsdmFsdWVzLiAgKi8K LSAgICAgIHJldHVybiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKHJlZikKKyAg ICAgIHJldHVybiAoREVDTF9JT0JKX01FTUJFUl9GVU5DVElPTl9QIChyZWYpCiAJICAgICAgPyBj bGtfbm9uZSA6IGNsa19vcmRpbmFyeSk7CiAKICAgICBjYXNlIEJBU0VMSU5LOgpkaWZmIC0tZ2l0 IGEvZ2NjL2NwL3R5cGVjay5jYyBiL2djYy9jcC90eXBlY2suY2MKaW5kZXggYTZlMmY0ZWU3ZGEu LjJhYmY5ZjNiOTA1IDEwMDY0NAotLS0gYS9nY2MvY3AvdHlwZWNrLmNjCisrKyBiL2djYy9jcC90 eXBlY2suY2MKQEAgLTIzNTIsNyArMjM1Miw3IEBAIGludmFsaWRfbm9uc3RhdGljX21lbWZuX3Ag KGxvY2F0aW9uX3QgbG9jLCB0cmVlIGV4cHIsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluKQogICBp ZiAoaXNfb3ZlcmxvYWRlZF9mbiAoZXhwcikgJiYgIXJlYWxseV9vdmVybG9hZGVkX2ZuIChleHBy KSkKICAgICBleHByID0gZ2V0X2ZpcnN0X2ZuIChleHByKTsKICAgaWYgKFRSRUVfVFlQRSAoZXhw cikKLSAgICAgICYmIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChleHByKSkKKyAg ICAgICYmIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ1RJT05fUCAoZXhwcikpCiAgICAgewogICAgICAg aWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCiAJewpkaWZmIC0tZ2l0IGEvbGliY2MxL2xpYmNwMXBs dWdpbi5jYyBiL2xpYmNjMS9saWJjcDFwbHVnaW4uY2MKaW5kZXggM2M4ZTllOGI0MzYuLjEwOGQ1 Nzg2MTY3IDEwMDY0NAotLS0gYS9saWJjYzEvbGliY3AxcGx1Z2luLmNjCisrKyBiL2xpYmNjMS9s aWJjcDFwbHVnaW4uY2MKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwbHVnaW5fcHJhZ21hX3B1c2hfdXNl cl9leHByZXNzaW9uIChjcHBfcmVhZGVyICopCiAJfQogICAgIH0KIAotICBpZiAodW5jaGFuZ2Vk X2NmdW4gfHwgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGNoYW5nZWRfZnVuY19k ZWNsKSkKKyAgaWYgKHVuY2hhbmdlZF9jZnVuIHx8IERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DVElP Tl9QIChjaGFuZ2VkX2Z1bmNfZGVjbCkpCiAgICAgewogICAgICAgLyogQ2hlY2sgd2hldGhlciB0 aGUgb3JhY2xlIHN1cHBsaWVzIHVzIHdpdGggYSAidGhpcyIsIGFuZCBpZgogCSBzbywgYXJyYW5n ZSBmb3IgZGF0YSBtZW1iZXJzIGFuZCB0aGlzIGl0c2VsZiB0byBiZQotLSAKMi40My4wCgo= --b1_VygsHXzWZDneOOQxqK6o8NSrhhnPXNiUAMR0sS8eTCc--