From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40133.protonmail.ch (mail-40133.protonmail.ch [185.70.40.133]) by sourceware.org (Postfix) with ESMTPS id D05FD3858D35 for ; Tue, 26 Sep 2023 01:57:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D05FD3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1695693426; x=1695952626; bh=awP5t7kNqaWgMiZxD/rVgPBbf2YOgJXN48H+qUI7tRk=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=TdZjURTp83KJvh6PJ2Lvz9ZKBCe0OqCM//dbVwyxNYtsuIEK6bO9IgH6U/aweWrCH DIOdd4HVabBi76jmB98t/2+qQoASCBuIIB/p9XJzu2rMzVhrzRRtc8HTdnodTYp87a giMrcBen8nzSyd9ZubTyiSOiMLJazNCuaytXBS/TagoCLe+lytEpTAf5yLLnLIaw0Z XGWUuC1wm6VexYVEOi5jsBOpg5RbQ1GbLQ7SZfTq1q6XOHUy+Ia/KPDO5gO+VuEVZ7 uc5B3J7aHlXyNKBXFJtUQOLpMYwxjQMC2Q0UkMtBbO3W4B3WUzXuZIYkRXv6C0x5Xz oPUIJs//JVl+g== Date: Tue, 26 Sep 2023 01:56:55 +0000 To: Jason Merrill From: waffl3x Cc: Jakub Jelinek , "gcc-patches@gcc.gnu.org" Subject: [PATCH v3 1/2] c++: Initial support for P0847R7 (Deducing This) [PR102609] Message-ID: In-Reply-To: <2024d9f2-7560-eb9e-e9d9-de8769a06a8b@redhat.com> References: <3ec4cf47-ccd8-fc55-c4fc-d97402552b92@redhat.com> <9evl-z9cAecBNAGVh82igdeO_HCFYbASO5fS0ngotJBqdpab09FTYaMiAjlZUliISedO0mV66BldzWQtylI4Dax0yC2gdKWuM55xDaG6RQM=@protonmail.com> <09e57c81-5231-16e8-6e57-18c37663c325@redhat.com> <2024d9f2-7560-eb9e-e9d9-de8769a06a8b@redhat.com> Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_s6h15KsDFm7hplXlThxqyPcwmGdshSI2qEcgGAbWKz8" X-Spam-Status: No, score=-9.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 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_s6h15KsDFm7hplXlThxqyPcwmGdshSI2qEcgGAbWKz8 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > Yes, but I'll warn you that grokdeclarator has resisted refactoring for > a long time... That will certainly be what I work on after this is squared off then, I've been up and down grokdeclarator so I'm confident I'll be able to do it. As for the patch, I sure took my sweet time with it, but here it is. I hope to work on the diagnostics patch tomorrow, but as you've probably figured out it's best not to take my word on timeframes :^). On the plus side, I took my time to figure out how to best to pass down information about whether a param is an xobj param. My initial impression on what you were suggesting was to push another node on the front of the list, but I stared at it for a few hours and didn't think it would work out. However, eventually I realized that the purpose member if free for xobj params as it is illegal for them to have default arguments. So I ended up passing it over the TREE_LIST after all, maybe this is what you meant in the first place anyway too. I am pretty confident that this version is all good, with only a few possible issues. An update on my copyright assignment, I sent an e-mail and haven't gotten a response yet. From what I saw, I am confident that it's my preferred option going forward though. Hopefully they get back to me soon. Also, just a quick update on my copyright assignment, I have sent an e-mail to the FSF and haven't gotten a response yet. From what I was reading, I am confident that it's my preferred option going forward though. Hopefully they get back to me soon. Bootstrapped and regtested on x86_64-pc-linux-gnu. --b1_s6h15KsDFm7hplXlThxqyPcwmGdshSI2qEcgGAbWKz8 Content-Type: text/x-patch; name=0001-c-Initial-support-for-C-23-P0847R7-Deducing-This-PR1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-c-Initial-support-for-C-23-P0847R7-Deducing-This-PR1.patch RnJvbSBiYmZiY2M3MmU4YzA4Njg1NTkyODQzNTJjNzE3MzEzOTRjOTg0NDFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBNb24sIDI1IFNlcCAyMDIzIDE2OjU5OjEwIC0wNjAwClN1YmplY3Q6IFtQQVRDSF0gYysrOiBJ bml0aWFsIHN1cHBvcnQgZm9yIEMrKzIzIFAwODQ3UjcgKERlZHVjaW5nIFRoaXMpCiBbUFIxMDI2 MDldCgpUaGlzIHBhdGNoIGltcGxlbWVudHMgaW5pdGlhbCBzdXBwb3J0IGZvciBQMDg0N1I3LCB3 aXRob3V0IGFkZGl0aW9ucyB0bwpkaWFnbm9zdGljcy4gIEFsbW9zdCBldmVyeXRoaW5nIHNob3Vs ZCB3b3JrIGNvcnJlY3RseSwgYmFycmluZyBhIGZldwpsaW1pdGF0aW9ucyB3aGljaCBhcmUgbGlz dGVkIGJlbG93LiAgSSBhdHRlbXB0ZWQgdG8gbWluaW1pemUgY2hhbmdlcyB0byB0aGUKZXhpc3Rp bmcgY29kZSwgdHJlYXRpbmcgZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMgYXMgc3Rh dGljIGZ1bmN0aW9ucywKd2hpbGUgZmxhZ2dpbmcgdGhlbSB0byBnaXZlIHRoZW0gZXh0cmEgcG93 ZXJzIHNlZW1lZCB0byBiZSB0aGUgYmVzdCB3YXkgb2YKYWNoaWV2aW5nIHRoaXMuICBGb3IgdGhp cyBwYXRjaCwgdGhlIGZsYWcgaXMgb25seSB1dGlsaXplZCBpbiBjYWxsLmNjIGZvcgpyZXNvbHZp bmcgb3ZlcmxvYWRzIGFuZCBtYWtpbmcgdGhlIGFjdHVhbCBmdW5jdGlvbiBjYWxsLgoKSW50ZXJu YWxseSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gYW5k IGFuIGltcGxpY2l0Cm9iamVjdCBtZW1iZXIgZnVuY3Rpb24gYXBwZWFycyB0byBiZSB3aGV0aGVy IHRoZSB0eXBlIG5vZGUgb2YgdGhlIGRlY2wgaXMgYQpGVU5DVElPTl9UWVBFIG9yIGEgTUVUSE9E X1RZUEUuICBTbyB0byBnZXQgdGhlIGRlc2lyZWQgYmVoYXZpb3IsIGl0IHNlZW1zIHRvIGJlCnN1 ZmZpY2llbnQgdG8gc2ltcGx5IHByZXZlbnQgY29udmVyc2lvbiBmcm9tIEZVTkNfVFlQRSB0byBN RVRIT0RfVFlQRSBpbgpncm9rZGVjbGFyYXRvciB3aGVuIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMg YW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlci4gIFRvCmFjaGlldmUgdGhpcywgZXhwbGljaXQg b2JqZWN0IHBhcmFtZXRlcnMgYXJlIGZsYWdnZWQgYXMgc3VjaCB0aHJvdWdoIGVhY2ggdGhlClRS RUVfTElTVCdzIHB1cnBvc2UgbWVtYmVyIGluIGRlY2xhcmF0b3ItPnUuZnVuY3Rpb24ucGFyYW1l dGVycy4gIFR5cGljYWxseSB0aGUKcHVycG9zZSBtZW1iZXIgaXMgdXNlZCBmb3IgZGVmYXVsdCBh cmd1bWVudHMsICBhcyB0aG9zZSBhcmUgbm90IGFsbG93ZWQgZm9yCmV4cGxpY2l0IG9iamVjdCBw YXJhbWV0ZXJzLCB3ZSBhcmUgYWJsZSB0byByZXB1cnBvc2UgcHVycG9zZSBmb3Igb3VyIHB1cnBv c2VzLgpUaGUgdmFsdWUgdXNlZCBhcyBhIGZsYWcgaXMgdGhlICJ0aGlzX2lkZW50aWZpZXIiIGds b2JhbCB0cmVlLCBhcyBpdCBzZWVtZWQgdG8KYmUgdGhlIG1vc3QgZml0dGluZyBvZiB0aGUgY3Vy cmVudCBnbG9iYWwgdHJlZXMuICBFdmVuIHRob3VnaCBpdCBpcyBvYnZpb3VzbHkKaWxsZWdhbCBm b3IgYW55IHBhcmFtZXRlciBleGNlcHQgdGhlIGZpcnN0IHRvIGJlIGFuIGV4cGxpY2l0IG9iamVj dCBwYXJhbWV0ZXIsCmVhY2ggcGFyYW1ldGVyIHBhcnNlZCBhcyBhbiBleHBsaWNpdCBvYmplY3Qg cGFyYW1ldGVyIHdpbGwgYmUgZmxhZ2dlZCBpbiB0aGlzCm1hbm5lci4gIFRoaXMgd2lsbCBiZSB1 c2VkIGZvciBkaWFnbm9zdGljcyBpbiB0aGUgZm9sbG93aW5nIHBhdGNoLiAgV2hlbiBhbgpleHBs aWNpdCBvYmplY3QgcGFyYW1ldGVyIGlzIGVuY291bnRlcmVkIGluIGdyb2tkZWNsYXJhdG9yLCB0 aGUgcHVycG9zZSBtZW1iZXIKaXMgbnVsbGVkIGJlZm9yZSB0aGUgbGlzdCBpcyBwYXNzZWQgZWxz ZXdoZXJlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aAphbnkgY29kZSB0aGF0IGFzc3Vt ZXMgdGhhdCBhIG5vbi1udWxsIHB1cnBvc2UgbWVtYmVyIGluZGljYXRlcyBhIGRlZmF1bHQKYXJn dW1lbnQuICBUaGlzIHBhdGNoIG9ubHkgY2hlY2tzIGZvciBhbmQgbnVsbHMgdGhlIGZpcnN0IHBh cmFtZXRlciBob3dldmVyLgoKQXMgZm9yIHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCBsaW1pdGF0 aW9ucywgbGFtYmRhcyBkbyBub3Qgd29yayBjb3JyZWN0bHkgeWV0LApidXQgSSBzdXNwZWN0IHRo YXQgYSBmZXcgdHdlYWtzIGFyZSBhbGwgaXQgd2lsbCB0YWtlIHRvIGhhdmUgdGhlbSBmdWxseQpm dW5jdGlvbmFsLiAgVXNlciBkZWZpbmVkIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBub3QgY2Fs bGVkIHdoZW4gYW4gZXhwbGljaXQKb2JqZWN0IG1lbWJlciBmdW5jdGlvbiB3aXRoIGFuIGV4cGxp Y2l0IG9iamVjdCBwYXJhbWV0ZXIgb2YgYW4gdW5yZWxhdGVkIHR5cGUKaXMgY2FsbGVkLiAgVGhl IGZvbGxvd2luZyBjYXNlIGRvZXMgbm90IGJlaGF2ZSBjb3JyZWN0bHkgYmVjYXVzZSBvZiB0aGlz LgoKc3RydWN0IFMgewogIG9wZXJhdG9yIHNpemVfdCgpIHsKICAgIHJldHVybiA0MjsKICB9CiAg c2l6ZV90IGYodGhpcyBzaXplX3QgbikgewogICAgcmV0dXJuIG47CiAgfQp9OwoKaW50IG1haW4o KQp7CiAgUyBze307CiAgc2l6ZV90IGEgPSBzLmYoKTsKfQoKQ3VycmVudGx5LCBpdCBhcHBlYXJz IHRoYXQgdGhlIG9iamVjdCBhcmd1bWVudCBpcyBzaW1wbHkgcmVpbnRlcnByZXRlZCBhcwphIHNp emVfdCBpbnN0ZWFkIG9mIHByb3Blcmx5IGNhbGxpbmcgdGhlIHVzZXIgZGVmaW5lZCBjb252ZXJz aW9uIGZ1bmN0aW9uLgpUaGUgdmFsaWRpdHkgb2Ygc3VjaCBhIGNvbnZlcnNpb24gaXMgc3RpbGwg Y29uc2lkZXJlZCBob3dldmVyLCBpZiB0aGVyZSBpcyBubwp3YXkgdG8gY29udmVydCBTIHRvIGEg c2l6ZV90IGFuIGFwcHJvcHJpYXRlIGNvbXBpbGUgZXJyb3Igd2lsbCBiZSBlbWl0dGVkLgpJIGhh dmUgYW4gaWRlYSBvZiB3aGF0IGNoYW5nZXMgbmVlZCB0byBiZSBtYWRlIHRvIGZpeCB0aGlzLCBi dXQgSSBkaWQgbm90CnBlcnN1ZSB0aGlzIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBw YXRjaC4KVGhpcyBidWcgY2FuIGJlIG9ic2VydmVkIGluIHRoZSBleHBsaWNpdC1vYmplY3QtcGFy YW00LkMgdGVzdCBjYXNlLCB3aGlsZQpleHBsaWNpdC1vYmplY3QtcGFyYW0zLkMgZGVtb25zdHJh dGVzIHRoZSBub24gZnVuY3Rpb25pbmcgbGFtYmRhcy4KCglQUiBjKysvMTAyNjA5CgpnY2MvY3Av Q2hhbmdlTG9nOgoJUFIgYysrLzEwMjYwOQoJSW5pdGlhbCBzdXBwb3J0IGZvciBDKysyMyBQMDg0 N1I3IC0gRGVkdWNpbmcgdGhpcy4KCSogY2FsbC5jYyAoYWRkX2NhbmRpZGF0ZXMpOiBDaGVjayBp ZiBmbiBpcyBhbiB4b2JqIG1lbWJlciBmdW5jdGlvbi4KCShidWlsZF9vdmVyX2NhbGwpOiBEaXR0 by4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsX2ZuOjp4b2JqX2Z1bmMpOiBOZXcgZGF0 YSBtZW1iZXIuCgkoREVDTF9GVU5DX1hPQkpfRkxBRyk6IERlZmluZS4KCShERUNMX0lTX1hPQkpf TUVNQkVSX0ZVTkMpOiBEZWZpbmUuCgkoZW51bSBjcF9kZWNsX3NwZWMpOiBBZGQgZHNfdGhpcy4K CSogZGVjbC5jYyAoZ3Jva2RlY2xhcmF0b3IpOiBDbGVhciAidGhpc19pZGVudGlmaWVyIiBmcm9t IGRlY2xhcmF0b3IncwoJZmlyc3QgcGFyYW1ldGVyJ3MgcHVycG9zZSBtZW1iZXIuICBTZXQgeG9i al9mdW5jIGZsYWcgb24geG9iaiBtZW1iZXIKCWZ1bmN0aW9uJ3MgZGVjbCwgc2V0IGl0J3MgdHlw ZSBub2RlIHRvIEZVTkNUSU9OX1RZUEUsIG5vdCBNRVRIT0RfVFlQRS4KCSogcGFyc2VyLmNjIChj cF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxKTogSGFuZGxlIHRoaXMgc3BlY2lmaWVyLgoJKGNw X3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBTZXQgZGVmYXVsdCBhcmd1bWVudCB0bwoJ InRoaXNfaWRlbnRpZmllciIgZm9yIHhvYmogcGFyYW1ldGVycy4KCShzZXRfYW5kX2NoZWNrX2Rl Y2xfc3BlY19sb2MpOiBBZGQgInRoaXMiLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CglQUiBj KysvMTAyNjA5CglJbml0aWFsIHN1cHBvcnQgZm9yIEMrKzIzIFAwODQ3UjcgLSBEZWR1Y2luZyB0 aGlzLgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMS5DOiBOZXcgdGVzdC4K CSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTIuQzogTmV3IHRlc3QuCgkqIGcr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0zLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtNC5DOiBOZXcgdGVzdC4KClNpZ25lZC1vZmYtYnk6 IHdhZmZsM3ggPHdhZmZsM3hAcHJvdG9ubWFpbC5jb20+Ci0tLQogZ2NjL2NwL2NhbGwuY2MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBnY2MvY3AvY3AtdHJlZS5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKystCiBnY2MvY3AvZGVjbC5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrKwogZ2NjL2NwL3BhcnNlci5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsrLQogLi4uL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmplY3QtcGFyYW0xLkMgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKwogLi4u L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW0yLkMgICAgIHwgIDI4ICsrKysrCiAu Li4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTMuQyAgICAgfCAgMTUgKysrCiAu Li4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTQuQyAgICAgfCAgMzMgKysrKysK IDggZmlsZXMgY2hhbmdlZCwgMjQ5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0 LXBhcmFtMS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqZWN0LXBhcmFtMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMy5DCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtNC5DCgpk aWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuY2MgYi9nY2MvY3AvY2FsbC5jYwppbmRleCA4NTI3NGI4 MWQ3ZS4uZDg2MWY1ZTdkNTQgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmNjCisrKyBiL2djYy9j cC9jYWxsLmNjCkBAIC02NTU1LDcgKzY1NTUsOCBAQCBhZGRfY2FuZGlkYXRlcyAodHJlZSBmbnMs IHRyZWUgZmlyc3RfYXJnLCBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICphcmdzLAogICAgICAgdHJl ZSBmbl9maXJzdF9hcmcgPSBOVUxMX1RSRUU7CiAgICAgICBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ ICpmbl9hcmdzID0gYXJnczsKIAotICAgICAgaWYgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5D VElPTl9QIChmbikpCisgICAgICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1Ag KGZuKQorCSAgfHwgREVDTF9JU19YT0JKX01FTUJFUl9GVU5DIChmbikpCiAJewogCSAgLyogRmln dXJlIG91dCB3aGVyZSB0aGUgb2JqZWN0IGFyZyBjb21lcyBmcm9tLiAgSWYgdGhpcwogCSAgICAg ZnVuY3Rpb24gaXMgYSBub24tc3RhdGljIG1lbWJlciBhbmQgd2UgZGlkbid0IGdldCBhbgpAQCAt OTk3NSw3ICs5OTc2LDggQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5kaWRhdGUgKmNh bmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJfQogICAgIH0KICAgLyog QnlwYXNzIGFjY2VzcyBjb250cm9sIGZvciAndGhpcycgcGFyYW1ldGVyLiAgKi8KLSAgZWxzZSBp ZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGZuKSkgPT0gTUVUSE9EX1RZUEUpCisgIGVsc2UgaWYg KFRSRUVfQ09ERSAoVFJFRV9UWVBFIChmbikpID09IE1FVEhPRF9UWVBFCisJICAgfHwgREVDTF9J U19YT0JKX01FTUJFUl9GVU5DIChmbikpCiAgICAgewogICAgICAgdHJlZSBhcmcgPSBidWlsZF90 aGlzIChmaXJzdF9hcmcgIT0gTlVMTF9UUkVFCiAJCQkgICAgID8gZmlyc3RfYXJnCmRpZmYgLS1n aXQgYS9nY2MvY3AvY3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRleCA4ZmVlNDc1NDYw NC4uMmJlZjVhNDkwOWMgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2Nw L2NwLXRyZWUuaApAQCAtMjkzMiw4ICsyOTMyLDkgQEAgc3RydWN0IEdUWSgoKSkgbGFuZ19kZWNs X2ZuIHsKICAgdW5zaWduZWQgbWF5YmVfZGVsZXRlZCA6IDE7CiAgIHVuc2lnbmVkIGNvcm91dGlu ZV9wIDogMTsKICAgdW5zaWduZWQgaW1wbGljaXRfY29uc3RleHByIDogMTsKKyAgdW5zaWduZWQg eG9ial9mdW5jIDogMTsKIAotICB1bnNpZ25lZCBzcGFyZSA6IDk7CisgIHVuc2lnbmVkIHNwYXJl IDogODsKIAogICAvKiAzMi1iaXRzIHBhZGRpbmcgb24gNjQtYml0IGhvc3QuICAqLwogCkBAIC00 Mzk0LDYgKzQzOTUsMTUgQEAgZ2V0X3ZlY19pbml0X2V4cHIgKHRyZWUgdCkKICNkZWZpbmUgREVD TF9ERUZBVUxURURfRk4oREVDTCkgXAogICAoTEFOR19ERUNMX0ZOX0NIRUNLIChERUNMKS0+ZGVm YXVsdGVkX3ApCiAKKy8qIFNpbXBsZSBtZW1iZXIgYWNjZXNzLCBvbmx5IHZhbGlkIGZvciBGVU5D VElPTl9ERUNMIG5vZGVzLiAgKi8KKyNkZWZpbmUgREVDTF9GVU5DX1hPQkpfRkxBRyhOT0RFKQlc CisgIChMQU5HX0RFQ0xfRk5fQ0hFQ0sgKE5PREUpLT54b2JqX2Z1bmMpCisvKiBOb256ZXJvIGlm IE5PREUgaXMgYSBGVU5DVElPTl9ERUNMIHRoYXQgaXMgYW4geG9iaiBtZW1iZXIgZnVuY3Rpb24s CisgICBzYWZlbHkgZXZhbHVhdGVzIHRvIGZhbHNlIGZvciBhbGwgbm9uIEZVTkNUSU9OX0RFQ0wg ZGVjbHMuICAqLworI2RlZmluZSBERUNMX0lTX1hPQkpfTUVNQkVSX0ZVTkMoTk9ERSkJCQlcCisg IChUUkVFX0NPREUgKFNUUklQX1RFTVBMQVRFIChOT0RFKSkgPT0gRlVOQ1RJT05fREVDTAlcCisg ICAmJiBERUNMX0ZVTkNfWE9CSl9GTEFHIChOT0RFKSA9PSAxKQorCiAvKiBOb256ZXJvIGlmIERF Q0wgaXMgZXhwbGljaXRseSBkZWZhdWx0ZWQgaW4gdGhlIGNsYXNzIGJvZHkuICAqLwogI2RlZmlu ZSBERUNMX0RFRkFVTFRFRF9JTl9DTEFTU19QKERFQ0wpCQkJCQlcCiAgIChERUNMX0RFRkFVTFRF RF9GTiAoREVDTCkgJiYgREVDTF9JTklUSUFMSVpFRF9JTl9DTEFTU19QIChERUNMKSkKQEAgLTYy MjMsMTEgKzYyMzMsMTMgQEAgZW51bSBjcF9zdG9yYWdlX2NsYXNzIHsKIAogLyogQW4gaW5kaXZp ZHVhbCBkZWNsLXNwZWNpZmllci4gIFRoaXMgaXMgdXNlZCB0byBpbmRleCB0aGUgYXJyYXkgb2YK ICAgIGxvY2F0aW9ucyBmb3IgdGhlIGRlY2xzcGVjcyBpbiBzdHJ1Y3QgY3BfZGVjbF9zcGVjaWZp ZXJfc2VxCi0gICBiZWxvdy4gICovCisgICBiZWxvdy4KKyAgIEEgc3Vic2V0IG9mIHRoZXNlIGVu dW1zIGFsc28gY29ycmVzcG9uZHMgdG8gZWxlbWVudHMgb2YKKyAgIGNwX3BhcnNlcl9zZXRfZGVj bF9zcGVjX3R5cGU6ZGVjbF9zcGVjX25hbWVzIGluIHBhcnNlci5jYy4gICovCiAKIGVudW0gY3Bf ZGVjbF9zcGVjIHsKICAgZHNfZmlyc3QsCi0gIGRzX3NpZ25lZCA9IGRzX2ZpcnN0LAorICBkc19z aWduZWQgPSBkc19maXJzdCwgLyogSW5kZXggb2YgZmlyc3QgZWxlbWVudCBvZiBkZWNsX3NwZWNf bmFtZXMuICAqLwogICBkc191bnNpZ25lZCwKICAgZHNfc2hvcnQsCiAgIGRzX2xvbmcsCkBAIC02 MjQ0LDYgKzYyNTYsNyBAQCBlbnVtIGNwX2RlY2xfc3BlYyB7CiAgIGRzX2NvbXBsZXgsCiAgIGRz X2NvbnN0aW5pdCwKICAgZHNfY29uc3RldmFsLAorICBkc190aGlzLCAvKiBJbmRleCBvZiBsYXN0 IGVsZW1lbnQgb2YgZGVjbF9zcGVjX25hbWVzLiAgKi8KICAgZHNfdGhyZWFkLAogICBkc190eXBl X3NwZWMsCiAgIGRzX3JlZGVmaW5lZF9idWlsdGluX3R5cGVfc3BlYywKZGlmZiAtLWdpdCBhL2dj Yy9jcC9kZWNsLmNjIGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggMzBkODliYmE5ZTguLjQyN2ZkMTJk M2Q4IDEwMDY0NAotLS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3AvZGVjbC5jYwpAQCAt MTI5MjYsNiArMTI5MjYsOCBAQCBncm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAq ZGVjbGFyYXRvciwKICAgaWYgKGF0dHJsaXN0KQogICAgIGRpYWdub3NlX21pc2FwcGxpZWRfY29u dHJhY3RzICgqYXR0cmxpc3QpOwogCisgIC8qIFNraXAgb3ZlciBidWlsZF9tZW1mbl90eXBlIHdo ZW4gYSBGVU5DVElPTl9ERUNMIGlzIGFuIHhvYmogbWVtZm4uICAqLworICBib29sIGlzX3hvYmpf bWVtYmVyX2Z1bmN0aW9uID0gZmFsc2U7CiAgIC8qIERldGVybWluZSB0aGUgdHlwZSBvZiB0aGUg ZW50aXR5IGRlY2xhcmVkIGJ5IHJlY3VycmluZyBvbiB0aGUKICAgICAgZGVjbGFyYXRvci4gICov CiAgIGZvciAoOyBkZWNsYXJhdG9yOyBkZWNsYXJhdG9yID0gZGVjbGFyYXRvci0+ZGVjbGFyYXRv cikKQEAgLTEzMDIxLDYgKzEzMDIzLDE5IEBAIGdyb2tkZWNsYXJhdG9yIChjb25zdCBjcF9kZWNs YXJhdG9yICpkZWNsYXJhdG9yLAogCiAJY2FzZSBjZGtfZnVuY3Rpb246CiAJICB7CisJICAgIGF1 dG8gZ2V0X3hvYmpfcGFybSA9IFtdKHRyZWUgcGFybV9saXN0KQorCSAgICAgIHsKKwkJaWYgKCFw YXJtX2xpc3QpCisJCSAgcmV0dXJuIE5VTExfVFJFRTsKKwkJaWYgKFRSRUVfVkFMVUUgKHBhcm1f bGlzdCkgPT0gdm9pZF90eXBlX25vZGUpCisJCSAgcmV0dXJuIE5VTExfVFJFRTsKKwkJaWYgKFRS RUVfUFVSUE9TRSAocGFybV9saXN0KSAhPSB0aGlzX2lkZW50aWZpZXIpCisJCSAgcmV0dXJuIE5V TExfVFJFRTsKKwkJLyogTm9uLW51bGwgJ3B1cnBvc2UnIHVzdWFsbHkgbWVhbnMgdGhlIHBhcmFt IGhhcyBhIGRlZmF1bHQKKwkJICAgYXJndW1lbnQsIHdlIGRvbid0IHdhbnQgdG8gdmlvbGF0ZSB0 aGlzIGFzc3VtcHRpb24uICAqLworCQlUUkVFX1BVUlBPU0UgKHBhcm1fbGlzdCkgPSBOVUxMX1RS RUU7CisJCXJldHVybiBUUkVFX1ZBTFVFIChwYXJtX2xpc3QpOworCSAgICAgIH07CiAJICAgIHRy ZWUgYXJnX3R5cGVzOwogCSAgICBpbnQgZnVuY2RlY2xfcDsKIApAQCAtMTMwNDEsNiArMTMwNTYs MTAgQEAgZ3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAJ ICAgIGlmIChyYWlzZXMgPT0gZXJyb3JfbWFya19ub2RlKQogCSAgICAgIHJhaXNlcyA9IE5VTExf VFJFRTsKIAorCSAgICB0cmVlIHhvYmpfcGFybQorCSAgICAgID0gZ2V0X3hvYmpfcGFybSAoZGVj bGFyYXRvci0+dS5mdW5jdGlvbi5wYXJhbWV0ZXJzKTsKKwkgICAgaXNfeG9ial9tZW1iZXJfZnVu Y3Rpb24gPSB4b2JqX3Bhcm07CisKIAkgICAgaWYgKHJlcXMpCiAJICAgICAgZXJyb3JfYXQgKGxv Y2F0aW9uX29mIChyZXFzKSwgInJlcXVpcmVzLWNsYXVzZSBvbiByZXR1cm4gdHlwZSIpOwogCSAg ICByZXFzID0gZGVjbGFyYXRvci0+dS5mdW5jdGlvbi5yZXF1aXJlc19jbGF1c2U7CkBAIC0xNDEw NSw2ICsxNDEyNCw4IEBAIGdyb2tkZWNsYXJhdG9yIChjb25zdCBjcF9kZWNsYXJhdG9yICpkZWNs YXJhdG9yLAogICAgIH0KIAogICBpZiAoY3R5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBGVU5D VElPTl9UWVBFICYmIHN0YXRpY3AgPCAyCisgICAgICAvKiBEb24ndCBjb252ZXJ0IHhvYmogbWVt YmVyIGZ1bmN0aW9ucyB0byBNRVRIT0RfVFlQRS4gICovCisgICAgICAmJiAhaXNfeG9ial9tZW1i ZXJfZnVuY3Rpb24KICAgICAgICYmICEodW5xdWFsaWZpZWRfaWQKIAkgICAmJiBpZGVudGlmaWVy X3AgKHVucXVhbGlmaWVkX2lkKQogCSAgICYmIElERU5USUZJRVJfTkVXREVMX09QX1AgKHVucXVh bGlmaWVkX2lkKSkpCkBAIC0xNDMzMyw2ICsxNDM1NCw3IEBAIGdyb2tkZWNsYXJhdG9yIChjb25z dCBjcF9kZWNsYXJhdG9yICpkZWNsYXJhdG9yLAogICAgICAgICAgICAgZGVjbCA9IHNldF92aXJ0 X3NwZWNpZmllcnMgKGRlY2wsIHZpcnRfc3BlY2lmaWVycyk7CiAJICAgIGlmIChkZWNsID09IE5V TExfVFJFRSkKIAkgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOworCSAgICBERUNMX0ZVTkNf WE9CSl9GTEFHIChkZWNsKSA9IGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uOwogI2lmIDAKIAkgICAg LyogVGhpcyBjbG9iYmVycyB0aGUgYXR0cnMgc3RvcmVkIGluIGBkZWNsJyBmcm9tIGBhdHRybGlz dCcuICAqLwogCSAgICAvKiBUaGUgZGVjbCBhbmQgc2V0dGluZyBvZiBkZWNsX2F0dHIgaXMgYWxz byB0dXJuZWQgb2ZmLiAgKi8KQEAgLTE0NjY1LDYgKzE0Njg3LDcgQEAgZ3Jva2RlY2xhcmF0b3Ig KGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAJCQkgICBpZF9sb2MpOwogCWlmIChk ZWNsID09IE5VTExfVFJFRSkKIAkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJREVDTF9GVU5D X1hPQkpfRkxBRyAoZGVjbCkgPSBpc194b2JqX21lbWJlcl9mdW5jdGlvbjsKIAogCWlmIChleHBs aWNpdHAgPT0gMikKIAkgIERFQ0xfTk9OQ09OVkVSVElOR19QIChkZWNsKSA9IDE7CmRpZmYgLS1n aXQgYS9nY2MvY3AvcGFyc2VyLmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCBiMGNkMWI0NjNj OC4uMGYzZmY1Yzc5NmQgMTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysrIGIvZ2NjL2Nw L3BhcnNlci5jYwpAQCAtMTU4NDMsNiArMTU4NDMsMTYgQEAgY3BfcGFyc2VyX2RlY2xfc3BlY2lm aWVyX3NlcSAoY3BfcGFyc2VyKiBwYXJzZXIsCiAJICAgIGRlY2xfc3BlY3MtPmxvY2F0aW9uc1tk c19hdHRyaWJ1dGVdID0gdG9rZW4tPmxvY2F0aW9uOwogCSAgY29udGludWU7CiAJfQorICAgICAg LyogU3BlY2lhbCBjYXNlIGZvciAidGhpcyIgc3BlY2lmaWVyLCBpbmRpY2F0aW5nIGEgcGFybSBp cyBhbiB4b2JqIHBhcm0uCisJIFRoZSAidGhpcyIgc3BlY2lmaWVyIG11c3QgYmUgdGhlIGZpcnN0 IHNwZWNpZmllciBpbiB0aGUgZGVjbGFyYXRpb24sCisJIGFmdGVyIGFueSBhdHRyaWJ1dGVzLiAg Ki8KKyAgICAgIGlmICh0b2tlbi0+a2V5d29yZCA9PSBSSURfVEhJUykKKwl7CisJICBjcF9sZXhl cl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkgIHNldF9hbmRfY2hlY2tfZGVjbF9z cGVjX2xvYyAoZGVjbF9zcGVjcywgZHNfdGhpcywgdG9rZW4pOworCSAgY29udGludWU7CisJfQor CiAgICAgICAvKiBBc3N1bWUgd2Ugd2lsbCBmaW5kIGEgZGVjbC1zcGVjaWZpZXIga2V5d29yZC4g ICovCiAgICAgICBmb3VuZF9kZWNsX3NwZWMgPSB0cnVlOwogICAgICAgLyogSWYgdGhlIG5leHQg dG9rZW4gaXMgYW4gYXBwcm9wcmlhdGUga2V5d29yZCwgd2UgY2FuIHNpbXBseQpAQCAtMjUyMzks NiArMjUyNDksMTAgQEAgY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJhdGlvbiAoY3BfcGFyc2Vy ICpwYXJzZXIsCiAKICAgaWYgKGRlZmF1bHRfYXJndW1lbnQpCiAgICAgU1RSSVBfQU5ZX0xPQ0FU SU9OX1dSQVBQRVIgKGRlZmF1bHRfYXJndW1lbnQpOworICAvKiBYb2JqIHBhcmFtZXRlcnMgY2Fu IG5vdCBoYXZlIGRlZmF1bHQgYXJndW1lbnRzLCB0aHVzCisgICAgIHdlIGNhbiByZXVzZSB0aGUg ZGVmYXVsdCBhcmd1bWVudCBmaWVsZCB0byBmbGFnIHRoZSBwYXJhbSBhcyBzdWNoLiAgKi8KKyAg aWYgKGRlY2xfc3BlY19zZXFfaGFzX3NwZWNfcCAoJmRlY2xfc3BlY2lmaWVycywgZHNfdGhpcykp CisgICAgZGVmYXVsdF9hcmd1bWVudCA9IHRoaXNfaWRlbnRpZmllcjsKIAogICAvKiBHZW5lcmF0 ZSBhIGxvY2F0aW9uIGZvciB0aGUgcGFyYW1ldGVyLCByYW5naW5nIGZyb20gdGhlIHN0YXJ0IG9m IHRoZQogICAgICBpbml0aWFsIHRva2VuIHRvIHRoZSBlbmQgb2YgdGhlIGZpbmFsIHRva2VuICh1 c2luZyBpbnB1dF9sb2NhdGlvbiBmb3IKQEAgLTMzNTg3LDcgKzMzNjAxLDggQEAgc2V0X2FuZF9j aGVja19kZWNsX3NwZWNfbG9jIChjcF9kZWNsX3NwZWNpZmllcl9zZXEgKmRlY2xfc3BlY3MsCiAJ ICAgICJjb25zdGV4cHIiLAogCSAgICAiX19jb21wbGV4IiwKIAkgICAgImNvbnN0aW5pdCIsCi0J ICAgICJjb25zdGV2YWwiCisJICAgICJjb25zdGV2YWwiLAorCSAgICAidGhpcyIKIAkgIH07CiAJ ICBnY2NfcmljaF9sb2NhdGlvbiByaWNobG9jIChsb2NhdGlvbik7CiAJICByaWNobG9jLmFkZF9m aXhpdF9yZW1vdmUgKCk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmplY3QtcGFyYW0xLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmplY3QtcGFyYW0xLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjEzNDE4MmM3NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMS5DCkBAIC0wLDAgKzEsMTE0IEBACisvLyBQMDg0 N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGJhc2ljIHVz ZSBjYXNlcyBhbmQgY2FsbGluZworCisvLyBub24tdHJhaWxpbmcgcmV0dXJuCisvLyBkZWZpbml0 aW9ucworc3RydWN0IFMwIHsKKyAgdm9pZCBmMCh0aGlzIFMwKSB7fQorICB2b2lkIGYxKHRoaXMg UzAmKSB7fQorICB2b2lkIGYyKHRoaXMgUzAmJikge30KKyAgdm9pZCBmMyh0aGlzIFMwIGNvbnN0 Jikge30KKyAgdm9pZCBmNCh0aGlzIFMwIGNvbnN0JiYpIHt9CisgIHRlbXBsYXRlPHR5cGVuYW1l IFNlbGY+CisgIHZvaWQgZDAodGhpcyBTZWxmJiYpIHt9CisgIHZvaWQgZDEodGhpcyBhdXRvJiYp IHt9Cit9OworLy8gZGVjbGFyYXRpb25zCitzdHJ1Y3QgUzEgeworICB2b2lkIGYwKHRoaXMgUzEp OworICB2b2lkIGYxKHRoaXMgUzEmKTsKKyAgdm9pZCBmMih0aGlzIFMxJiYpOworICB2b2lkIGYz KHRoaXMgUzEgY29uc3QmKTsKKyAgdm9pZCBmNCh0aGlzIFMxIGNvbnN0JiYpOworICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPgorICB2b2lkIGQwKHRoaXMgU2VsZiYmKTsKKyAgdm9pZCBkMSh0aGlz IGF1dG8mJik7Cit9OworLy8gb3V0IG9mIGxpbmUgZGVmaW5pdGlvbnMKK3ZvaWQgUzE6OmYwKHRo aXMgUzEpIHt9Cit2b2lkIFMxOjpmMSh0aGlzIFMxJikge30KK3ZvaWQgUzE6OmYyKHRoaXMgUzEm Jikge30KK3ZvaWQgUzE6OmYzKHRoaXMgUzEgY29uc3QmKSB7fQordm9pZCBTMTo6ZjQodGhpcyBT MSBjb25zdCYmKSB7fQordGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KK3ZvaWQgUzE6OmQwKHRoaXMg U2VsZiYmKSB7fQordm9pZCBTMTo6ZDEodGhpcyBhdXRvJiYpIHt9CisKKy8vIHRyYWlsaW5nIHJl dHVybgorLy8gZGVmaW5pdGlvbnMKK3N0cnVjdCBTMiB7CisgIGF1dG8gZjAodGhpcyBTMikgLT4g dm9pZCB7fQorICBhdXRvIGYxKHRoaXMgUzImKSAtPiB2b2lkIHt9CisgIGF1dG8gZjIodGhpcyBT MiYmKSAtPiB2b2lkIHt9CisgIGF1dG8gZjModGhpcyBTMiBjb25zdCYpIC0+IHZvaWQge30KKyAg YXV0byBmNCh0aGlzIFMyIGNvbnN0JiYpIC0+IHZvaWQge30KKyAgdGVtcGxhdGU8dHlwZW5hbWUg U2VsZj4KKyAgYXV0byBkMCh0aGlzIFNlbGYmJikgLT4gdm9pZCB7fQorCisgIGF1dG8gZDEodGhp cyBhdXRvJiYpIC0+IHZvaWQge30KK307CisvLyBkZWNsYXJhdGlvbnMKK3N0cnVjdCBTMyB7Cisg IGF1dG8gZjAodGhpcyBTMykgLT4gdm9pZDsKKyAgYXV0byBmMSh0aGlzIFMzJikgLT4gdm9pZDsK KyAgYXV0byBmMih0aGlzIFMzJiYpIC0+IHZvaWQ7CisgIGF1dG8gZjModGhpcyBTMyBjb25zdCYp IC0+IHZvaWQ7CisgIGF1dG8gZjQodGhpcyBTMyBjb25zdCYmKSAtPiB2b2lkOworICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPgorICBhdXRvIGQwKHRoaXMgU2VsZiYmKSAtPiB2b2lkOworICBhdXRv IGQxKHRoaXMgYXV0byYmKSAtPiB2b2lkOworfTsKKy8vIG91dCBvZiBsaW5lIGRlZmluaXRpb25z CithdXRvIFMzOjpmMCh0aGlzIFMzKSAtPiB2b2lkIHt9CithdXRvIFMzOjpmMSh0aGlzIFMzJikg LT4gdm9pZCB7fQorYXV0byBTMzo6ZjIodGhpcyBTMyYmKSAtPiB2b2lkIHt9CithdXRvIFMzOjpm Myh0aGlzIFMzIGNvbnN0JikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZjQodGhpcyBTMyBjb25zdCYm KSAtPiB2b2lkIHt9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorYXV0byBTMzo6ZDAodGhpcyBT ZWxmJiYpIC0+IHZvaWQge30KK2F1dG8gUzM6OmQxKHRoaXMgYXV0byYmKSAtPiB2b2lkIHt9CisK K3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9uKCkKK3sK KyAgVCBvYmp7fTsKKyAgLy8gYnkgdmFsdWUgc2hvdWxkIHRha2UgYW55IHF1YWxpZmljYXRpb24g KGYwKQorICBUe30uZjAoKTsKKyAgb2JqLmYwKCk7CisgIHN0YXRpY19jYXN0PFQmJj4ob2JqKS5m MCgpOyAKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+KG9iaikuZjAoKTsKKyAgc3RhdGljX2Nhc3Q8 VCBjb25zdCYmPihvYmopLmYwKCk7CisgIC8vIHNwZWNpZmljIHF1YWxpZmljYXRpb24gKGYxIC0g ZjQpCisgIFR7fS5mMigpOworICBUe30uZjMoKTsKKyAgVHt9LmY0KCk7CisgIG9iai5mMSgpOwor ICBvYmouZjMoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmopLmYyKCk7CisgIHN0YXRpY19jYXN0 PFQmJj4ob2JqKS5mMygpOworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZjQoKTsKKyAgc3RhdGlj X2Nhc3Q8VCBjb25zdCY+KG9iaikuZjMoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCYmPihvYmop LmY0KCk7CisgIC8vIGRlZHVjZWQgc2hvdWxkIChvYnZpb3VzbHkpIHRha2UgYW55IHF1YWxpZmlj YXRpb24gKGQwLCBkMSkKKyAgVHt9LmQwKCk7CisgIG9iai5kMCgpOworICBzdGF0aWNfY2FzdDxU JiY+KG9iaikuZDAoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+KG9iaikuZDAoKTsKKyAgc3Rh dGljX2Nhc3Q8VCBjb25zdCYmPihvYmopLmQwKCk7CisgIFR7fS5kMSgpOworICBvYmouZDEoKTsK KyAgc3RhdGljX2Nhc3Q8VCYmPihvYmopLmQxKCk7CisgIHN0YXRpY19jYXN0PFQgY29uc3QmPihv YmopLmQxKCk7CisgIHN0YXRpY19jYXN0PFQgY29uc3QmJj4ob2JqKS5kMSgpOworfQorCit2b2lk IHBlcmZvcm1fY2FsbHMoKQoreworICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMD4oKTsKKyAg Y2FsbF93aXRoX3F1YWxpZmljYXRpb248UzE+KCk7CisgIGNhbGxfd2l0aF9xdWFsaWZpY2F0aW9u PFMyPigpOworICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMz4oKTsKK30KKwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMi5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMi5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMzE2NGMyNTM3YwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJh bTIuQwpAQCAtMCwwICsxLDI4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdl dCBjKysyMyB9IH0KKworLy8gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBwb2ludGVy IHR5cGUgZGVkdWN0aW9uLAorLy8gY29udmVyc2lvbiB0byBmdW5jdGlvbiBwb2ludGVyLCBhbmQK Ky8vIGNhbGxpbmcgdGhyb3VnaCBwb2ludGVyIHRvIGZ1bmN0aW9uCisKK3N0cnVjdCBTIHsKKyAg aW50IF9uOworICBpbnQgZih0aGlzIFMmIHNlbGYpIHsgcmV0dXJuIHNlbGYuX247IH0KK307CisK K3VzaW5nIGZfdHlwZSA9IGludCgqKShTJik7CisKK3N0YXRpY19hc3NlcnQgKF9faXNfc2FtZSAo Zl90eXBlLCBkZWNsdHlwZSAoJlM6OmYpKSk7CisKK2ludCBtYWluKCkKK3sKKyAgYXV0byBmcDAg PSAmUzo6ZjsKKyAgZl90eXBlIGZwMSA9ICZTOjpmOworICBzdGF0aWNfYXNzZXJ0IChfX2lzX3Nh bWUgKGRlY2x0eXBlIChmcDApLCBkZWNsdHlwZSAoZnAxKSkpOworICBTIHN7NDJ9OworICBpZiAo ZnAwIChzKSAhPSA0MikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChmcDEgKHMpICE9 IDQyKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMy5DIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtMy5DCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYTkyZTRjZDQ0MAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iamVjdC1wYXJhbTMuQwpAQCAtMCww ICsxLDE1IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMg fSB9CisKKy8vIHJlY3Vyc2l2ZSBsYW1iZGFzCisKKy8vIHsgZGctZXhjZXNzLWVycm9ycyAiZGVk dWNpbmcgdGhpcyB3aXRoIGxhbWJkYXMgbm90IGltcGxlbWVudGVkIHlldCIgeyB4ZmFpbCAqLSot KiB9IH0KKworaW50IG1haW4oKQoreworICBhdXRvIGNsMCA9IFtdKHRoaXMgYXV0byYmIHNlbGYs IGludCBuKXsgcmV0dXJuIG4gPyBzZWxmKG4gLSAxKSA6IDQyIH07CisgIGF1dG8gY2wxID0gW10o dGhpcyBhdXRvIHNlbGYsIGludCBuKXsgcmV0dXJuIG4gPyBzZWxmKG4gLSAxKSA6IDQyfTsKKyAg aW50IGEgPSBjbDAoNSk7CisgIGludCBiID0gY2wxKDUpOworfQorCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW00LkMgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmplY3QtcGFyYW00LkMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc0NmY2ZDk5Yjk0Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqZWN0LXBhcmFtNC5DCkBA IC0wLDAgKzEsMzMgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGMrKzIz IH0gfQorCisvLyB0ZXN0IGltcGxpY2l0IGNvbnZlcnNpb24gb2YgdGhlIG9iamVjdCBhcmd1bWVu dAorLy8gdG8gdGhlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIKKworLy8gd2UgY29tcGFyZSAm cyB0byByZXQgYmVjYXVzZSBlYXJseSBvbiwgdGhlCisvLyBvYmplY3QgcGFyYW1ldGVyIHdvdWxk IG5vdCBjb252ZXJ0LCBpdCB3b3VsZCBqdXN0IGdldAorLy8gcmVpbnRlcnByZXRlZCBhcyB0aGUg dHlwZSBvZiB0aGUgZXhwbGljaXQgb2JqZWN0IHBhcmFtCisKKy8vIHsgZGcteGZhaWwtcnVuLWlm ICJ1c2VyIGRlZmluZWQgY29udmVyc2lvbnMgZnJvbSBhbiBpbXBsaWNpdCBvYmplY3QgYXJndW1l bnQgdG8gYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBhcmUgbm90IHN1cHBvcnRlZCB5ZXQi IHsgKi0qLSogfSB9CisKK3VzaW5nIHVpbnRwdHJfdCA9IF9fVUlOVFBUUl9UWVBFX187CisKK3N0 cnVjdCBTIHsKKyAgICBvcGVyYXRvciB1aW50cHRyX3QoKSBjb25zdCB7CisJcmV0dXJuIDQyOwor ICAgIH0KKyAgICB1aW50cHRyX3QgZih0aGlzIHVpbnRwdHJfdCBuKSB7CisgICAgICAgIHJldHVy biBuOworICAgIH0KK307CisKK2ludCBtYWluKCkgCit7CisgIFMgc3t9OworICB1aW50cHRyX3Qg cmV0ID0gcy5mKCk7CisgIGlmIChyZXQgPT0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZz KSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChyZXQgIT0gNDIpCisgICAgX19idWls dGluX2Fib3J0ICgpOworfQorCi0tIAoyLjQyLjAKCg== --b1_s6h15KsDFm7hplXlThxqyPcwmGdshSI2qEcgGAbWKz8--